Accordion

Native <details> rows on hairlines. The name attribute keeps one item open at a time; no JavaScript.

What is Raster?
A monochrome, CSS-first design system.
Is it dependency-free?
Yes. Native elements do the work.
npx raster add accordion
<div class="rs-acc"><details class="rs-acc-item" name="faq" open><summary>What is Raster?<svg class="rs-acc-chevron" viewBox="0 0 16 16" width="16" height="16" fill="none"><path d="M4 6l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></summary><div class="rs-acc-body">A monochrome, CSS-first design system.</div></details><details class="rs-acc-item" name="faq"><summary>Is it dependency-free?<svg class="rs-acc-chevron" viewBox="0 0 16 16" width="16" height="16" fill="none"><path d="M4 6l4 4 4-4" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg></summary><div class="rs-acc-body">Yes. Native elements do the work.</div></details></div>
import { Accordion, AccordionItem } from "@/components/raster/accordion";

<Accordion exclusive>
  <AccordionItem title="What is Raster?" defaultOpen>
    A monochrome, CSS-first design system.
  </AccordionItem>
  <AccordionItem title="Is it dependency-free?">
    Yes. Native elements do the work.
  </AccordionItem>
</Accordion>
.rs-acc.rs-acc-item.rs-acc-chevron.rs-acc-body