An unstyled, accessible accordion library for React apps and design systems.
- Unstyled React accordion components
- Headless usage via React hooks
- WAI-ARIA compliant
- Fully keyboard accessible
- Supports animations
- Works in controlled and uncontrolled modes
- Control to expand/collapse individual or all items
- Compatible with React 18+ concurrent rendering
- Supports server-side rendering (SSR)
- Lightweight and tree-shakable (~3kB)
- Fully typed API with TypeScript
with npm
npm install @szhsin/react-accordion
or with Yarn
yarn add @szhsin/react-accordion
import { Accordion, AccordionItem } from '@szhsin/react-accordion';
export default function Example() {
return (
<Accordion>
<AccordionItem header="What is Lorem Ipsum?">
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
do eiusmod tempor incididunt ut labore et dolore magna aliqua.
</AccordionItem>
<AccordionItem header="Where does it come from?">
Quisque eget luctus mi, vehicula mollis lorem. Proin fringilla
vel erat quis sodales. Nam ex enim, eleifend venenatis lectus
vitae, accumsan auctor mi.
</AccordionItem>
<AccordionItem header="Why do we use it?">
Suspendisse massa risus, pretium id interdum in, dictum sit
amet ante. Fusce vulputate purus sed tempus feugiat.
</AccordionItem>
</Accordion>
);
}
Edit on CodeSandbox
Visit more examples and docs
MIT Licensed.