Accordion
A vertically stacked set of interactive headings that each reveal an associated panel of content, built on the Base UI Accordion primitive.
Our flagship product combines cutting-edge technology with sleek design. Built from premium materials, it offers reliability and performance for everyday use.
Every unit is rigorously tested before shipping to ensure it meets our high quality standards.
Installation
Bash
Usage
Examples
Multiple open panels
In a card
Split items
API reference
Accordion
Extends the
Base UI Accordion
Root — all its props apply. value/defaultValue are arrays of the
open item values (defaultValue={["item-1"]}), not a single value.
| Prop | Type | Default |
|---|---|---|
value / defaultValue | string[] | — |
onValueChange | (value: string[]) => void | — |
multiple | boolean (renamed from openMultiple in 1.7) | false |
hiddenUntilFound | boolean — hidden="until-found" panels reveal via find-in-page | false |
disabled | boolean | false |
AccordionItem
Takes the item value (and disabled).
AccordionTrigger
A native <button> inside an <h3> heading (Accordion.Header) —
override the heading level via render on the primitive’s Header when
composing directly. The open state styles via data-panel-open
(presence) — not data-open, which lives on Item/Panel/Root. A disabled
trigger stays focusable with aria-disabled="true" — style it with
data-disabled:, not disabled:.
AccordionContent
Open/close animates via the animate-accordion-down /
animate-accordion-up utilities. Their keyframes ship in this
primitive’s registry item (the CLI merges them into your CSS); when
copying the source manually, add them yourself:
--accordion-panel-height is set by Base UI on the panel.