Accordion

Note: Accordion is not yet in Elevate Lookbook — this is a proposed implementation following Elevate patterns

Basic Accordion

Default accordion with multiple panels that can be opened simultaneously

<div class="elv-accordion" data-accordion>
  <div class="elv-accordion__item">
    <button class="elv-accordion__header" aria-expanded="false" aria-controls="panel-1">
      <span>What is G2's Review Verification process?</span>
      <svg class="elv-accordion__icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
        <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7" />
      </svg>
    </button>
    <div class="elv-accordion__content" id="panel-1" aria-hidden="true" role="region">
      <div class="elv-accordion__content-inner">
        <div class="elv-accordion__body">
          Content here...
        </div>
      </div>
    </div>
  </div>
</div>

Single-Open Mode

Only one panel can be open at a time — opening a new panel closes the previous one

<!-- Add data-single-open="true" attribute -->
<div class="elv-accordion" data-accordion data-single-open="true">
  <!-- accordion items... -->
</div>

Compact Variant

Reduced padding for tighter layouts

<div class="elv-accordion elv-accordion--compact" data-accordion>
  <!-- accordion items... -->
</div>

Borderless Variant

No outer border, only dividers between items

<div class="elv-accordion elv-accordion--borderless" data-accordion>
  <!-- accordion items... -->
</div>

With Default Open Panel

Start with one panel expanded by setting aria-expanded="true" and aria-hidden="false"

Welcome to G2! Start by exploring product categories, reading verified reviews, and building comparison lists. Use filters to find software that matches your company size and industry.
<!-- Set aria-expanded="true" and aria-hidden="false" on default open panel -->
<button class="elv-accordion__header" aria-expanded="true" aria-controls="panel-1">
  <span>Default Open Panel</span>
  <svg class="elv-accordion__icon">...</svg>
</button>
<div class="elv-accordion__content" id="panel-1" aria-hidden="false" role="region">
  <!-- content... -->
</div>

Usage Guidelines

Accessibility Notes

<!-- Full accessibility markup -->
<button class="elv-accordion__header"
        aria-expanded="false"
        aria-controls="unique-panel-id">
  <span>Descriptive header text</span>
  <svg class="elv-accordion__icon" aria-hidden="true">...</svg>
</button>
<div class="elv-accordion__content"
     id="unique-panel-id"
     aria-hidden="true"
     role="region">
  <!-- content -->
</div>

Design System Specs

Header Padding 16px (default), 12px (compact)
Content Padding 0 16px 16px 16px (when open)
Header Font 16px/24px/600 (default), 14px/20px/600 (compact)
Body Font 14px/20px/400
Border 1px solid #dfdfe2 (border-light)
Border Radius 12px (radius-md)
Background #ffffff (bg-neutral-0), hover: #f8f8f9 (bg-neutral-5)
Icon Size 20px × 20px
Icon Rotation 0deg (closed) → 180deg (open)
Transition Duration 250ms (content), 200ms (icon), 150ms (hover)
Focus Outline 2px solid border-focus, offset -2px