1. framework components
  2. accordion

Accordion

Divide content into collapsible sections.



Controlled

Use the open and onOpenChange props to control the state.

Content for item 1

Multiple

Allow multiple accordion items to stay open at once using the multiple prop.

Collapsible

Allow closing all items when one is open using the collapsible prop.

Indicator

Add a custom indicator to accordion triggers.

Orientation

Render the accordion vertically or horizontally using the orientation prop.

Dir

Set the text direction (ltr or rtl) using the dir prop.

Anatomy

Here’s an overview of how the Accordion component is structured in code:

tsx
import { Accordion } from '@skeletonlabs/skeleton-react';

export default function Anatomy() {
	return (
		<Accordion>
			<Accordion.Item>
				<Accordion.ItemTrigger />
				<Accordion.ItemIndicator />
				<Accordion.ItemContent />
			</Accordion.Item>
		</Accordion>
	);
}

API Reference

Root

Prop Default Type
ids Partial<{ root: string; item: (value: string) => string; itemContent: (value: string) => string; itemTrigger: (value: string) => string; }> | undefined

The ids of the elements in the accordion. Useful for composition.

multiple false boolean | undefined

Whether multiple accordion items can be expanded at the same time.

collapsible false boolean | undefined

Whether an accordion item can be closed after it has been expanded.

value string[] | undefined

The controlled value of the expanded accordion items.

defaultValue string[] | undefined

The initial value of the expanded accordion items. Use when you don't need to control the value of the accordion.

disabled boolean | undefined

Whether the accordion items are disabled

onValueChange ((details: ValueChangeDetails) => void) | undefined

The callback fired when the state of expanded/collapsed accordion items changes.

onFocusChange ((details: FocusChangeDetails) => void) | undefined

The callback fired when the focused accordion item changes.

orientation "vertical" "horizontal" | "vertical" | undefined

The orientation of the accordion items.

dir "ltr" "ltr" | "rtl" | undefined

The document's text/writing direction.

getRootNode (() => ShadowRoot | Node | Document) | undefined

A root node to correctly resolve document in custom environments. E.x.: Iframes, Electron.

element ((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

Provider

Prop Default Type
value AccordionApi<PropTypes>

element ((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

Context

Prop Default Type
children (accordion: AccordionApi<PropTypes>) => ReactNode

Item

Prop Default Type
value string

The value of the accordion item.

disabled boolean | undefined

Whether the accordion item is disabled.

children ReactNode

element ((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

ItemTrigger

Prop Default Type
children ReactNode

element ((attributes: HTMLAttributes<"button">) => Element) | undefined

Render the element yourself

ItemIndicator

Prop Default Type
children ReactNode

element ((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

ItemContent

Prop Default Type
children ReactNode

element ((attributes: HTMLAttributes<"div">) => Element) | undefined

Render the element yourself

View page on GitHub