Accordion
Organizes content into collapsible sections, allowing users to focus on one section at a time.
Structure
Usage
Single
Set the type
prop to "single"
to allow only one accordion item to be open at a time.
Multiple
Set the type
prop to "multiple"
to allow multiple accordion items to be open at the same time.
Disable Items
To disable an individual accordion item, set the disabled
prop to true
. This will prevent users from interacting with the item.
Controlled Value
You can programmatically control the active of the accordion item(s) using the value
prop.
Value Change Side Effects
onValueChange
You can use the onValueChange
prop to handle side effects when the value of the accordion changes.
$effect
You can use bind:value
with an $effect
block to handle side effects when the value of the accordion changes.
Reusable Wrappers
Entire Component
If you're going to be using the same accordion component multiple places throughout your app, you can create a reusable wrapper to reduce the amount of code you need to write each time.
Individual Item
API Reference
The root accordion component used to set and manage the state of the accordion.
Property | Type | Description |
---|---|---|
multiple | boolean | Whether or not multiple accordion items can be active at the same time. Default: false |
disabled | boolean | Whether or not the accordion is disabled. Default: false |
value | union | The active accordion item value. Default: —— undefined |
onValueChange | function | A callback function called when the active accordion item value changes. Default: —— undefined |
asChild | boolean | Whether to use render delegation with this component or not. Default: false |
el | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default: —— undefined |
Slot Property | Type | Description |
---|---|---|
builder | object | The builder attributes and actions to apply to the element if using the |
Data Attribute | Value | Description |
---|---|---|
data-orientation | enum | The orientation of the accordion. |
data-accordion-root |
| Present on the root element. |
An accordion item.
Property | Type | Description |
---|---|---|
value * Required | string | The value of the accordion item. Default: —— undefined |
disabled | boolean | Whether or not the accordion item is disabled. Default: false |
asChild | boolean | Whether to use render delegation with this component or not. Default: false |
el | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default: —— undefined |
Slot Property | Type | Description |
---|---|---|
builder | object | The builder attributes and actions to apply to the element if using the |
Data Attribute | Value | Description |
---|---|---|
data-state | enum | The state of the accordion item. |
data-disabled |
| Present when the accordion item is disabled. |
data-accordion-item | —— | Present on the item element. |
The accordion item header, which wraps the trigger and makes it more accessible.
Property | Type | Description |
---|---|---|
level | enum | The heading level to use for the header. This will be set as the Default: —— undefined |
asChild | boolean | Whether to use render delegation with this component or not. Default: false |
el | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default: —— undefined |
Slot Property | Type | Description |
---|---|---|
builder | object | The builder attributes and actions to apply to the element if using the |
Data Attribute | Value | Description |
---|---|---|
data-heading-level | enum | The heading level of the header. |
data-accordion-header | —— | Present on the header element. |
The accordion item trigger, which opens and closes the accordion item.
Property | Type | Description |
---|---|---|
asChild | boolean | Whether to use render delegation with this component or not. Default: false |
el | HTMLButtonElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default: —— undefined |
Slot Property | Type | Description |
---|---|---|
builder | object | The builder attributes and actions to apply to the element if using the |
Data Attribute | Value | Description |
---|---|---|
data-state | enum | The state of the accordion item. |
data-disabled | —— | Present when the accordion item is disabled. |
data-value | —— | The value of the accordion item. |
data-accordion-trigger | —— | Present on the trigger element. |
The accordion item content, which is displayed when the item is open.
Property | Type | Description |
---|---|---|
transition | function | A Svelte transition function to use when transitioning the content in and out. Default: —— undefined |
transitionConfig | TransitionConfig | The configuration to apply to the transition. Default: —— undefined |
inTransition | function | A Svelte transition function to use when transitioning the content in and out. Default: —— undefined |
inTransitionConfig | TransitionConfig | The configuration to apply to the transition. Default: —— undefined |
outTransition | function | A Svelte transition function to use when transitioning the content in and out. Default: —— undefined |
outTransitionConfig | TransitionConfig | The configuration to apply to the transition. Default: —— undefined |
asChild | boolean | Whether to use render delegation with this component or not. Default: false |
el | HTMLDivElement | The underlying DOM element being rendered. You can bind to this to programatically interact with the element. Default: —— undefined |
Slot Property | Type | Description |
---|---|---|
builder | object | The builder attributes and actions to apply to the element if using the |
Data Attribute | Value | Description |
---|---|---|
data-state | enum | The state of the accordion item. |
data-disabled | —— | Present when the accordion item is disabled. |
data-value | —— | The value of the accordion item. |
data-accordion-content | —— | Present on the content element. |