# Accordion Menu

> A private-banking ledger menu: accordion sections styled as a bound folio — typewritten indexes, letterspaced heads, roman entry counts and dotted-leader amounts. Single-open behavior with a cross-blur unfold and flip chevron, full ARIA wiring, keyboard navigation, data-driven groups.

- Category: Dropdown Menu
- Frameworks: Vanilla, React + CSS, React + Tailwind
- Design system: Roastery
- Dark mode: yes
- Access: premium (Atheros AI Pass)
- Tags: accordion, navigation
- Page: https://builder.atheros.ai/components/accordion-menu
- Preview: https://d17nmjscumqk5d.cloudfront.net/builder/templates/tpl_builder_accordion_menu/preview-18a9be34d032.webp

## Features

- Stacked collapsible sections, each a disclosure button with `aria-expanded` and `aria-controls`
- Smooth unfold via a `grid-template-rows` reveal — no layout properties are transitioned, with direction-aware timing (0.3s open, brisk 0.25s collapse) and a soft cross-blur as entries appear
- Chevron flips vertically (`scaleY`) from a "v" to a "^" on open, passing through a flat line at the midpoint, with `vector-effect: non-scaling-stroke` keeping the stroke constant mid-flip
- Open section draws a gilt rule under its head, left to right, via `transform: scaleX`
- Typewritten folio index (`01 / 02 / 03`) per section head, gilt while its section is open
- Roman-numeral entry count (`IV`, `III`) per section, computed from the data at render
- Ledger rows: serif label, dotted leader, tabular Courier amount — debits set in accountant's parentheses
- Engraved double-rule card frame: hairline border plus an inset second hairline
- Single-open accordion mode driven by an `ACM_CONFIG` flag, multi-open when disabled
- Current page link tracked with `aria-current="page"`, its label gilt and its amount inked
- Springy press feedback on section heads via `transform: scale(0.97)`
- Full keyboard navigation: arrows move, Right opens or enters a section, Left closes or exits
- Data-driven sections and entries rendered from `ACM_GROUPS` in `js/data.js`
- Fully respects `prefers-reduced-motion`

## Accessibility

- **Disclosure buttons** — Each section head uses `aria-expanded` and `aria-controls` pointing at its panel
- **Panel semantics** — Panels use `role="region"` with `aria-labelledby` back to their head
- **Current page** — The active entry carries `aria-current="page"`
- **Hidden panels** — Closed panels are `visibility: hidden`, removing entries from the tab order
- **Decorative figures** — Folio indexes, roman counts, leaders and amounts are `aria-hidden` — labels carry the name
- **Keyboard support** — Arrows rove, Right opens/enters, Left exits/closes, Home/End jump
- **Focus indicators** — `:focus-visible` with `--ring` outline on all interactive elements
- **Reduced motion** — `prefers-reduced-motion: reduce` disables all animations

## Keyboard shortcuts

- `ArrowDown` — Move focus to the next visible head or entry
- `ArrowUp` — Move focus to the previous visible head or entry
- `ArrowRight` — Open a closed section, or move into its first entry
- `ArrowLeft` — From an entry, jump back to its head; on an open head, close it
- `Home` — Focus the first section head
- `End` — Focus the last visible item
- `Enter / Space` — Toggle the focused section head
- `Tab` — Move focus through heads and open entries natively

## Common questions

**Which frameworks is Accordion Menu available in?**

Accordion Menu ships as Vanilla, React + CSS and React + Tailwind — HTML, CSS, JS and React source you can copy, download or clone into Atheros AI Builder.

**Is the Accordion Menu dropdown menu component free?**

Accordion Menu is a premium component. Anyone can preview it; the source, downloads and AI customisation are included with Atheros AI Pass.

**Does Accordion Menu support dark mode?**

Yes. Accordion Menu ships light and dark themes, both drawn from the Roastery design system's tokens. Switch the preview to dark mode to compare them.

## Get the code

Preview Accordion Menu live, then sign in to copy or download the source, apply another design system, or ask the AI assistant to change it: https://builder.atheros.ai/components/accordion-menu

Every component on https://builder.atheros.ai is also reachable from Claude Code, Cursor and Codex through the Atheros MCP server (paid plans). Component index: https://builder.atheros.ai/llms-components.txt
