Bridge UI

Accordion

Expandable sections for FAQs, settings groups, and stacked content.

Introduction

Accordion groups related content into expandable sections—FAQs, settings groups, and stacked detail panels. Compose with AccordionItem. By default only one item is open; set multiple to allow several at once.

Use the framework selector in the site header to switch between React and Vue.

Import

import { Accordion } from "@bridge-ui/vue/Components/Accordion";
import { AccordionItem } from "@bridge-ui/vue/Components/AccordionItem";
import { Accordion } from "@bridge-ui/react/Components/Accordion";
import { AccordionItem } from "@bridge-ui/react/Components/AccordionItem";

Basic usage

Control expansion with value / onChange (React) or v-model (Vue). Each AccordionItem needs a stable value and a title for the trigger.

Delivery in 2–5 business days.
Delivery in 2–5 business days.

Multiple open

Set multiple so more than one panel can stay expanded. The controlled value becomes an array of item values.

First
Second
First
Second

Variants

Set the structural layout with variant: default (flush dividers), outlined (boxed group), plain (quiet spacing, no borders), and separated (individual cards with gap).

plain

Delivery in 2–5 business days.

default

Delivery in 2–5 business days.

outlined

Delivery in 2–5 business days.

separated

Delivery in 2–5 business days.

plain

Delivery in 2–5 business days.

default

Delivery in 2–5 business days.

outlined

Delivery in 2–5 business days.

separated

Delivery in 2–5 business days.

Colors

Use the color prop for the expanded trigger and indicator accent. Available colors: primary, secondary, success, info, warning, error, and dark.

dark

Delivery in 2–5 business days.

info

Delivery in 2–5 business days.

error

Delivery in 2–5 business days.

primary

Delivery in 2–5 business days.

success

Delivery in 2–5 business days.

warning

Delivery in 2–5 business days.

secondary

Delivery in 2–5 business days.

dark

Delivery in 2–5 business days.

info

Delivery in 2–5 business days.

error

Delivery in 2–5 business days.

primary

Delivery in 2–5 business days.

success

Delivery in 2–5 business days.

warning

Delivery in 2–5 business days.

secondary

Delivery in 2–5 business days.

Sizes

Control density with size: sm, md (default), or lg.

lg

Delivery in 2–5 business days.

md

Delivery in 2–5 business days.

sm

Delivery in 2–5 business days.

lg

Delivery in 2–5 business days.

md

Delivery in 2–5 business days.

sm

Delivery in 2–5 business days.

Disabled item

Pass disabled on an AccordionItem to lock that section, or on Accordion to disable the whole group.

Visible content
Visible content

Custom title slot

Override the trigger label with a custom title. In React, use slots.title; in Vue, use the #title slot.

Delivery in 2–5 business days.
Delivery in 2–5 business days.

Card, Tabs, List

Accessibility

Each item uses a button trigger with aria-expanded and aria-controls pointing at a panel with role="region". Collapsed panels use aria-hidden. Arrow keys, Home, and End move focus between enabled triggers.

Anatomy

<div> <!-- Accordion root -->
  <div> <!-- AccordionItem root -->
    <button> <!-- trigger -->
      <span> <!-- title -->
      <!-- indicator (chevron or slots.indicator) -->
    </button>
    <div role="region"> <!-- panel -->
  </div>
</div>

Target parts with classes on Accordion (root) or AccordionItem (root, trigger, title, indicator, panel).

API

Accordion

Prop Type Default Description
v-model / modelValue string | string[] Expanded value(s).
@update:model-value (value: AccordionValue) => void Emitted when expansion changes.
@change (value: AccordionValue) => void Same payload as model updates.
Prop Type Default Description
value string | string[] Controlled expanded value(s).
defaultValue string | string[] Initial value when uncontrolled.
onChange (value: AccordionValue) => void Called when expansion changes.
Prop Type Default Description
multiple boolean false Allow more than one item expanded at once.
disabled boolean false Disable all items.
variant AccordionVariant "default" Structural layout: default, outlined, plain, or separated.
color AccordionColor "primary" Accent for the expanded trigger and indicator.
size AccordionSize "md" Density of triggers and panels.
classes AccordionClasses Classes for root.
customProps AccordionCustomProps Props forwarded to the root element. Root HTML attributes stay on the component top level.

AccordionItem

Prop Type Default Description
value string required Stable id for expanded state.
title ReactNode / Vue slot content Trigger label.
disabled boolean false Disable this item.
classes AccordionItemClasses Classes for root, trigger, title, indicator, panel.
customProps AccordionItemCustomProps Props forwarded to internal parts.
slots { title?, indicator? } Custom title or expand indicator (React). Vue: #title, #indicator.
children panel content Content shown when expanded.