Accessibility
Accordion from @prepared911/ui-core is built on Radix Accordion and follows the WAI-ARIA Disclosure pattern. The component wires the trigger-to-content relationship; your job is to supply descriptive trigger text, correct heading levels, and reasonable focus behavior when content loads dynamically.
AccordionTrigger is a button with aria-expanded reflecting open state; each AccordionContent is a role="region" labeled by its trigger via aria-labelledby and referenced from the trigger via aria-controls.Single vs. Multiple types are respected for assistive tech; only the currently open item responds as expanded.AccordionTrigger does not force a heading level. Wrap it in the level that fits the surrounding page outline (usually h3 inside an h2 section). See W3C WAI: Heading ranks.aria-expanded in sync with the actual state.button with aria-expanded and aria-controls.role="region" with aria-labelledby pointing at the trigger's id.Use semantic HTML inside AccordionContent (headings, lists). This makes the content structure navigable with screen-reader rotor commands.
Accordion expansion uses CSS transitions; respect system motion preferences by overriding transition durations when prefers-reduced-motion: reduce is set. Don't remove state change feedback entirely—fade faster, don't fade away.
AccordionTrigger; validate against each page's outline.collapsible={false} on a Single accordion forces at least one open section. Use only when the surface genuinely requires it, since it reduces operator control.