Skip to content
GitHub

Accordion

A vertically stacked set of interactive headings that each reveal a section of content.

Yes. It adheres to the WAI-ARIA design pattern.

import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/pxl/accordion";
export default function AccordionDemo() {
return (
<Accordion className="w-full max-w-md" defaultValue={["item-1"]}>
<AccordionItem value="item-1">
<AccordionTrigger>Is it accessible?</AccordionTrigger>
<AccordionContent>
Yes. It adheres to the WAI-ARIA design pattern.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2">
<AccordionTrigger>Is it styled?</AccordionTrigger>
<AccordionContent>
Yes. It comes with default styles that match the 8bit aesthetic.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-3">
<AccordionTrigger>Is it animated?</AccordionTrigger>
<AccordionContent>
Yes. Panels animate open and closed by default.
</AccordionContent>
</AccordionItem>
</Accordion>
);
}
pnpm dlx shadcn@latest add pxl-ui/registry/accordion
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/pxl/accordion"
<Accordion defaultValue={["item-1"]}>
<AccordionItem value="item-1">
<AccordionTrigger>Is it accessible?</AccordionTrigger>
<AccordionContent>
Yes. It adheres to the WAI-ARIA design pattern.
</AccordionContent>
</AccordionItem>
</Accordion>

Use the following composition to build an Accordion:

Accordion
├── AccordionItem
│ ├── AccordionTrigger
│ └── AccordionContent
└── AccordionItem
├── AccordionTrigger
└── AccordionContent

Use the multiple prop to allow multiple items to be open at the same time.

Yes. Pass the multiple prop to allow more than one item open at once.

Each item tracks its own open state independently.
import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/pxl/accordion";
export default function AccordionMultipleDemo() {
return (
<Accordion
className="w-full max-w-md"
defaultValue={["item-1", "item-2"]}
multiple
>
<AccordionItem value="item-1">
<AccordionTrigger>Can multiple items be open?</AccordionTrigger>
<AccordionContent>
Yes. Pass the multiple prop to allow more than one item open at once.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2">
<AccordionTrigger>Does state persist?</AccordionTrigger>
<AccordionContent>
Each item tracks its own open state independently.
</AccordionContent>
</AccordionItem>
</Accordion>
);
}

Use the disabled prop on AccordionItem to disable individual items.

import {
Accordion,
AccordionContent,
AccordionItem,
AccordionTrigger,
} from "@/components/ui/pxl/accordion"
export default function AccordionDisabled() {
return (
<Accordion className="w-full">
<AccordionItem value="item-1">
<AccordionTrigger>Can I access my account history?</AccordionTrigger>
<AccordionContent>
Yes, you can view your complete account history including all
transactions, plan changes, and support tickets in the Account History
section of your dashboard.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2" disabled>
<AccordionTrigger>Premium feature information</AccordionTrigger>
<AccordionContent>
This section contains information about premium features. Upgrade your
plan to access this content.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-3">
<AccordionTrigger>How do I update my email address?</AccordionTrigger>
<AccordionContent>
You can update your email address in your account settings.
You&apos;ll receive a verification email at your new address to
confirm the change.
</AccordionContent>
</AccordionItem>
</Accordion>
)
}

See the Base UI documentation for more information.