Skip to content

Accordion

Multiple expandable sections using native HTML details and summary elements for semantic markup.

from htmforge.components import Accordion

Accordion(
    items=[("FAQ", "Answer text"), ("Info", "More details")],
    open_index=0
).to_html()

Props

Name Type Default Notes
items list[tuple[str, str]] required List of (title, content) tuples
open_index int \| None None Index of initially open item; None = all closed
item_cls str "" Extra CSS class on each details element

Rendered HTML

<div class="accordion"><details class="accordion-item" open><summary class="accordion-title">FAQ</summary><div class="accordion-content">Answer text</div></details><details class="accordion-item"><summary class="accordion-title">Info</summary><div class="accordion-content">More details</div></details></div>

Note: Uses semantic HTML <details> and <summary> elements. The open attribute controls initial state. Only one section opens at a time via browser default behavior.