Accordion
A vertically stacked set of interactive headings that each reveal a section of content.
Default
Only one panel is open at a time. Setting collapsible allows the open panel to be closed again.
Hummingbird UI is a class-based design system. Components ship their looks as semantic CSS classes and use Radix UI primitives for behavior.
tsx
import {
Accordion,
AccordionItem,
AccordionHeader,
AccordionTrigger,
AccordionContent,
} from "@hummingbirdui/react";
export default function AccordionDefault() {
return (
<Accordion
type="single"
collapsible
defaultValue="item-1"
className="mx-auto max-w-2xl"
>
<AccordionItem value="item-1">
<AccordionHeader>
<AccordionTrigger>What is Hummingbird UI?</AccordionTrigger>
</AccordionHeader>
<AccordionContent>
Hummingbird UI is a class-based design system. Components ship their
looks as semantic CSS classes and use Radix UI primitives for
behavior.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2">
<AccordionHeader>
<AccordionTrigger>Is it accessible?</AccordionTrigger>
</AccordionHeader>
<AccordionContent>
Yes. The Accordion is built on Radix UI's headless primitive, so
keyboard navigation and ARIA wiring are handled for you.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-3">
<AccordionHeader>
<AccordionTrigger>Can multiple panels stay open?</AccordionTrigger>
</AccordionHeader>
<AccordionContent>
Use <code>type="multiple"</code> to let several items expand
at once, or <code>type="single"</code> with{" "}
<code>collapsible</code> to allow closing the open item.
</AccordionContent>
</AccordionItem>
</Accordion>
);
}Multiple
Use type="multiple" to let any number of panels stay open at once.
tsx
import {
Accordion,
AccordionItem,
AccordionHeader,
AccordionTrigger,
AccordionContent,
} from "@hummingbirdui/react";
export default function AccordionMultiple() {
return (
<Accordion type="multiple" className="mx-auto max-w-2xl">
<AccordionItem value="item-1">
<AccordionHeader>
<AccordionTrigger>What is Hummingbird UI?</AccordionTrigger>
</AccordionHeader>
<AccordionContent>
Hummingbird UI is a class-based design system. Components ship their
looks as semantic CSS classes and use Radix UI primitives for
behavior.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2">
<AccordionHeader>
<AccordionTrigger>Is it accessible?</AccordionTrigger>
</AccordionHeader>
<AccordionContent>
Yes. The Accordion is built on Radix UI's headless primitive, so
keyboard navigation and ARIA wiring are handled for you.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-3">
<AccordionHeader>
<AccordionTrigger>Can multiple panels stay open?</AccordionTrigger>
</AccordionHeader>
<AccordionContent>
Yes. With <code>type="multiple"</code> every panel toggles
independently, so any number of them can be open at the same time.
</AccordionContent>
</AccordionItem>
</Accordion>
);
}Disabled
Add disabled to an AccordionItem to prevent it from opening, or to the
Accordion root to disable every item.
Hummingbird UI is a class-based design system. Components ship their looks as semantic CSS classes and use Radix UI primitives for behavior.
tsx
import {
Accordion,
AccordionItem,
AccordionHeader,
AccordionTrigger,
AccordionContent,
} from "@hummingbirdui/react";
export default function AccordionDisabled() {
return (
<Accordion
type="single"
collapsible
defaultValue="item-1"
className="mx-auto max-w-2xl"
>
<AccordionItem value="item-1">
<AccordionHeader>
<AccordionTrigger>What is Hummingbird UI?</AccordionTrigger>
</AccordionHeader>
<AccordionContent>
Hummingbird UI is a class-based design system. Components ship their
looks as semantic CSS classes and use Radix UI primitives for
behavior.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2" disabled>
<AccordionHeader>
<AccordionTrigger>This item is disabled</AccordionTrigger>
</AccordionHeader>
<AccordionContent>
You won't be able to open this panel.
</AccordionContent>
</AccordionItem>
</Accordion>
);
}API Reference
For detailed usage guidelines, see the Radix UI documentation.
Styling
Hummingbird React accordion is styled entirely through Hummingbird's utility classes and CSS variables.
- See the full list of available accordion classes in the Class overview.
- Visit the CSS Variables documentation to explore all available variables.