Accordion
Accordion allows showing and hiding content in collapsible panels. Only one panel can be open at a time.
Import
import { Accordion, Row, Col, Heading, Text } from '@sigx/daisyui';
Sub-components are available as Accordion.Item and Accordion.Collapse.
Basic Usage
Use the items prop for a simple accordion:
Loading preview...
With Plus/Minus Icon
Loading preview...
Joined Accordion
Use the join prop to connect items visually:
Loading preview...
Using Details Element
Use the type="details" prop to use native HTML <details> elements. This makes the collapsed content searchable by the browser:
Loading preview...
Accordion.Collapse (Single Collapsible)
For a single collapsible panel, use Accordion.Collapse:
Loading preview...
Accordion.Item (Custom Content)
For custom content in each accordion item:
Loading preview...
Force Open/Close
Use forceOpen or forceClose to control the collapse state via CSS:
Loading preview...
FAQ Section Example
Loading preview...
Props
Accordion Props
| Prop | Type | Default | Description |
|---|---|---|---|
items | Array<{ id, title, content }> | - | Array of accordion items |
model:activeId | () => signal.property | - | Currently open item ID |
variant | 'arrow' | 'plus' | 'none' | 'none' | Icon style |
type | 'radio' | 'details' | 'radio' | Use radio inputs or details elements |
join | boolean | false | Connect items visually |
class | string | - | Additional CSS classes |
Accordion.Item Props
| Prop | Type | Default | Description |
|---|---|---|---|
title | string | - | Item title |
name | string | 'accordion' | Radio group name (for mutual exclusivity) |
open | boolean | false | Open state |
forceOpen | boolean | false | Force open via CSS (collapse-open) |
forceClose | boolean | false | Force close via CSS (collapse-close) |
variant | 'arrow' | 'plus' | 'none' | 'none' | Icon style |
type | 'radio' | 'details' | 'radio' | Use radio input or details element |
class | string | - | Additional CSS classes |
Accordion.Collapse Props
| Prop | Type | Default | Description |
|---|---|---|---|
model | () => signal.property | - | Open state binding |
title | string | - | Collapse title |
variant | 'arrow' | 'plus' | 'none' | 'none' | Icon style |
forceOpen | boolean | false | Force open via CSS (collapse-open) |
forceClose | boolean | false | Force close via CSS (collapse-close) |
class | string | - | Additional CSS classes |
Events
| Event | Type | Description |
|---|---|---|
onChange | (id: string) => void | Fired when active item changes |
onToggle | (open: boolean) => void | Fired when collapse toggles (Collapse only) |
CSS Classes
The component uses these DaisyUI classes:
| Class | Description |
|---|---|
collapse | Main component class |
collapse-title | Title part |
collapse-content | Content part |
collapse-arrow | Adds arrow icon |
collapse-plus | Adds plus/minus icon |
collapse-open | Force open state |
collapse-close | Force close state |