Yes. It adheres to WAI-ARIA design patterns.
Yes you can.
---import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@bejamas/ui/components/accordion';---
<Accordion class="w-full max-w-[420px] self-start mt-10" collapsible> <AccordionItem value="accordion-item-1"> <AccordionTrigger> Is it accessible? </AccordionTrigger> <AccordionContent> Yes. It adheres to WAI-ARIA design patterns. </AccordionContent> </AccordionItem> <AccordionItem value="accordion-item-2"> <AccordionTrigger> Can I customize the icon? </AccordionTrigger> <AccordionContent> Yes you can. </AccordionContent> </AccordionItem></Accordion>Installation
Section titled “Installation”bunx bejamas add accordionnpx bejamas add accordionpnpm dlx bejamas add accordionyarn dlx bejamas add accordion---import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '@bejamas/ui/components/accordion';---
<Accordion class="w-full max-w-[420px] self-start"> <AccordionItem open> <AccordionTrigger> Is it accessible? </AccordionTrigger> <AccordionContent> Yes. It adheres to WAI-ARIA design patterns. </AccordionContent> </AccordionItem></Accordion>| Prop | Type | Default |
|---|---|---|
class | string | "" |
multiple | boolean | false |
defaultValue | string | "" |
collapsible | boolean | false |
Examples
Section titled “Examples”Multiple choice accordion
Section titled “Multiple choice accordion” Yes. It adheres to WAI-ARIA design patterns.
Yes you can.
Yes you can.
---import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@bejamas/ui/components/accordion';---
<Accordion class="w-full max-w-[420px] self-start" multiple> <AccordionItem value="accordion-item-1"> <AccordionTrigger> Is it accessible? </AccordionTrigger> <AccordionContent> Yes. It adheres to WAI-ARIA design patterns. </AccordionContent> </AccordionItem> <AccordionItem value="accordion-item-2"> <AccordionTrigger> Can I customize the icon? </AccordionTrigger> <AccordionContent> Yes you can. </AccordionContent> </AccordionItem> <AccordionItem value="accordion-item-3"> <AccordionTrigger> Can I customize the icon? </AccordionTrigger> <AccordionContent> Yes you can. </AccordionContent> </AccordionItem></Accordion>API Reference
Section titled “API Reference”Events
Section titled “Events”The accordion emits custom events that you can listen to:
| Event | Detail | Description |
|---|---|---|
accordion:change | { value: string[] } | Fired when expanded items change |
Content 1
<Accordion id="my-accordion" collapsible> <AccordionItem value="item-1"> <AccordionTrigger>Item 1</AccordionTrigger> <AccordionContent>Content 1</AccordionContent> </AccordionItem></Accordion> const accordion = document.getElementById('my-accordion');
accordion.addEventListener('accordion:change', (e) => { console.log('Expanded items:', e.detail.value); });Programmatic Control
Section titled “Programmatic Control”You can control the accordion programmatically by dispatching an accordion:set event:
const accordion = document.getElementById('my-accordion');
// Expand a single itemaccordion.dispatchEvent(new CustomEvent('accordion:set', { detail: { value: 'item-1' }}));
// Expand multiple items (when multiple prop is true)accordion.dispatchEvent(new CustomEvent('accordion:set', { detail: { value: ['item-1', 'item-2'] }}));Data Attributes
Section titled “Data Attributes”The accordion sets these data attributes that you can use for styling or querying state:
| Attribute | Element | Description |
|---|---|---|
data-state | accordion-item | Current state (open or closed) |