Skip to content

Accordion ​

A collapsible content component for organizing information into expandable/collapsible panels. Perfect for FAQs, categories, or sections.

Installation ​

bash
npx @capsuleui/core add Accordion

Usage ​

Basic Accordion ​

html
<capsule-accordion>
  <capsule-accordion-panel>
    <capsule-accordion-trigger> Is it accessible? </capsule-accordion-trigger>
    <capsule-accordion-content>
      Yes. It adheres to the WAI-ARIA design pattern.
    </capsule-accordion-content>
  </capsule-accordion-panel>
</capsule-accordion>

Type: Single (default) ​

html
<capsule-accordion type="single">
  <capsule-accordion-panel open> ... </capsule-accordion-panel>
</capsule-accordion>

Type: Multiple ​

html
<capsule-accordion type="multiple">
  <capsule-accordion-panel>...</capsule-accordion-panel>
  <capsule-accordion-panel>...</capsule-accordion-panel>
</capsule-accordion>

Collapsible ​

When collapsible attribute is present, you can close all panels (including the first one).

html
<capsule-accordion collapsible>
  <capsule-accordion-panel open>...</capsule-accordion-panel>
</capsule-accordion>

Custom Trigger Content ​

The trigger slot accepts any content, including buttons, icons, or other interactive elements.

html
<capsule-accordion>
  <capsule-accordion-panel>
    <capsule-accordion-trigger exclude-self>
      <capsule-button size="sm">
        <svg>...</svg>
        <span>Settings</span>
      </capsule-button>
    </capsule-accordion-trigger>
    <capsule-accordion-content> ... </capsule-accordion-content>
  </capsule-accordion-panel>
</capsule-accordion>

Components ​

The Accordion component consists of several sub-components:

capsule-accordion ​

The main container for accordion panels.

capsule-accordion-panel ​

An individual accordion panel. Can have open attribute to set initial state.

html
<capsule-accordion-panel open> ... </capsule-accordion-panel>

capsule-accordion-trigger ​

The clickable header that toggles the panel.

AttributeTypeDefaultDescription
exclude-selfbooleanfalseDisables toggle when clicking the trigger element itself

When exclude-self is set, the trigger only responds to clicks on its children (e.g., buttons, icons), not on the empty space. This is useful when you have interactive elements inside the trigger.

html
<capsule-accordion-trigger exclude-self>
  <capsule-button>Edit</capsule-button>
</capsule-accordion-trigger>

capsule-accordion-content ​

The collapsible content area.

html
<capsule-accordion-content> Panel content here </capsule-accordion-content>

Attributes ​

AttributeTypeDefaultDescription
typestringsingleAccordion behavior (single or multiple)
collapsiblebooleanfalseAllow closing all panels, including the first

Type Values ​

  • single — Only one panel can be open at a time (default)
  • multiple — Multiple panels can be open simultaneously

Accessibility ​

  • ✅ ARIA roles (role="region", role="button")
  • ✅ Keyboard navigation support
  • ✅ Proper focus management
  • ✅ Semantic structure for screen readers

Released under the MIT License.