Skip to content
  • System
  • Light
  • Dark
  • High contrast

Collapsible

Collapsible vs Details. Use Details (native HTML) for simple disclosure patterns — FAQs, inline help, “show more” — where you don’t need animation or programmatic control. It’s zero-JS and browser-managed. Use Collapsible when you need: controlled state (open

  • onOpenChange), animated open/close via data-state, or trigger and content that aren’t co-located in the markup (e.g. a sidebar toggle button controlling a panel elsewhere). Accordion already uses Collapsible internally.

import { Collapsible } from '@eekodigital/raster';

<Collapsible.Root>
  <Collapsible.Trigger>Audit scope</Collapsible.Trigger>
  <Collapsible.Content>
    This audit covers financial controls…
  </Collapsible.Content>
</Collapsible.Root>
3 critical findings, 7 serious, 12 moderate. All critical findings require remediation within 30 days.
<Collapsible.Root defaultOpen>
  <Collapsible.Trigger>Findings summary</Collapsible.Trigger>
  <Collapsible.Content>…</Collapsible.Content>
</Collapsible.Root>

Pass open and onOpenChange to drive state from your component.

const [open, setOpen] = useState(false);
<Collapsible.Root open={open} onOpenChange={setOpen}>
<Collapsible.Trigger>Toggle</Collapsible.Trigger>
<Collapsible.Content>…</Collapsible.Content>
</Collapsible.Root>;
PropTypeDefaultDescription
openbooleanControlled open state.
defaultOpenbooleanfalseUncontrolled initial state.
onOpenChange(open: boolean) => voidCalled when state changes.
disabledbooleanfalsePrevents toggling.
classNamestringAdditional CSS classes.