Accordion

The .quanta-accordion is used to create expandable/collapsible sections of content. It supports multiple visual styles and is responsive, theme-aware, and accessible out of the box.

Usage Example

<div class="quanta-accordion card">
  <div class="quanta-accordion-item">
    <button class="quanta-accordion-header" aria-expanded="false">
      Section 1
      <span class="icon">..svg..</span>
    </button>
    <div class="quanta-accordion-content" aria-hidden="true">
      <p>This is the content of section 1.</p>
    </div>
  </div>
</div>

Visual Variants

Use utility classes to switch between visual styles:

<div class="quanta-accordion block">...</div>
<div class="quanta-accordion quanta-accordion-outline">...</div>

JavaScript Setup

The accordion component requires JavaScript to toggle content visibility. The default setup listens for click events and toggles aria-expanded and aria-hidden states accordingly.

document.querySelectorAll('.quanta-accordion-header').forEach(header => {
  header.addEventListener('click', () => {
    const expanded = header.getAttribute('aria-expanded') === 'true';
    header.setAttribute('aria-expanded', !expanded);

    const content = header.nextElementSibling;
    content.setAttribute('aria-hidden', expanded);
  });
});

Accessibility

The component uses aria-expanded and aria-hidden for screen reader support.

<button aria-expanded="false">...</button>
<div aria-hidden="true">...</div>