ProductBrand
Join us
Foundations
  • Introduction
  • Colors
  • Typography
  • Icons
  • Illustrations
  • Logos
  • Shadows
Components
  • Accordion
  • Alert Dialog
  • Avatar
  • Badge
  • Button
  • Calendar
  • Card
  • Chart
  • Checkbox
  • Collapsible
  • Combobox
  • Context Menu
  • Date Picker
  • Dialog
  • Drawer
  • Dropdown Menu
  • Fluid Avatar
  • Hover Scroll Text
  • Input
  • Kbd
  • Popover
  • Progress Bar
  • Radio Group
  • Scroll Area
  • Select
  • Selectors
  • Separator
  • Separator Dot
  • Shimmer Text
  • Skeleton
  • Slider
  • Switch
  • Tabs
  • Textarea
  • Toast
  • Tooltip
Compositions
  • Empty State
  • File Attachment
  • Floating Bar
  • Input Banner
  • Markdown Editor
  • Media Controls
  • Product Feature Banner
  • Panels
  • Sidebar
  • Reasoning Trace
  • Pagination
  • Data Table
  • Breadcrumb
  • Thread Outline
Inline
  • Overview
  • Stat Tile
  • Metric Row
  • Comparison Table
  • Chart Card
  • Trend Tile
  • Cite
  • Custom
  • Agent skill

Accordion

A vertically stacked set of collapsible sections. Triggers share group focus (arrow keys move between them) and, by default, only one section is open at a time.

Examples

Rogo is an AI analyst that automates research, modelling, and reporting workflows for financial services teams.

Controlled

Open: data-sources

Public filings, internal documents, market data providers, and custom connectors via MCP. Permissions are enforced per data source.

Overview

Accordion wraps Base UI Accordion. It comes with light default styling: a bordered container, divided rows, a chevron that rotates when its section is open. Pass multiple to allow more than one section open at a time.

Use Accordion when triggers are siblings the user would expect to navigate between with arrow keys (FAQ lists, settings groups, expandable nav). For a one-off toggle, use Collapsible.

tsx
import {
  Accordion,
  AccordionContent,
  AccordionItem,
  AccordionTrigger,
} from "@rogo-technologies/ui/accordion";

<Accordion defaultValue={["a"]}>
  <AccordionItem value="a">
    <AccordionTrigger>Section A</AccordionTrigger>
    <AccordionContent>…</AccordionContent>
  </AccordionItem>
</Accordion>;

Usage

Single

Only one section open at a time. Opening one closes the others.

tsx
<Accordion defaultValue={["intro"]}>
  <AccordionItem value="intro">
    <AccordionTrigger>Intro</AccordionTrigger>
    <AccordionContent>…</AccordionContent>
  </AccordionItem>
  <AccordionItem value="details">
    <AccordionTrigger>Details</AccordionTrigger>
    <AccordionContent>…</AccordionContent>
  </AccordionItem>
</Accordion>

Multiple

Any number of sections can be open at the same time.

tsx
<Accordion multiple defaultValue={["a", "c"]}>
  …
</Accordion>

Controlled

tsx
const [value, setValue] = useState<string[]>(["a"]);

<Accordion value={value} onValueChange={(next) => setValue(next as string[])}>
  …
</Accordion>;

API

Accordion

PropTypeDefaultDescription
valuestring[]-Controlled list of open item values.
defaultValuestring[]-Uncontrolled initial open items.
onValueChange(value: string[]) => void-Fired when the open set changes.
multiplebooleanfalseAllow multiple items open at once.
orientation"horizontal" | "vertical""vertical"Arrow-key navigation direction between triggers.
loopFocusbooleantrueLoop arrow-key focus past the first / last trigger.
disabledbooleanfalseDisables all items.
classNamestring-Additional CSS classes on the root.

AccordionItem

PropTypeDefaultDescription
valuestring-Identifier used in value / defaultValue.
disabledbooleanfalseDisables just this item.

AccordionTrigger

Renders a native <button>. Includes a default rotating chevron at the end. Replace it by passing your own icon as a child after the label.

AccordionContent

Renders a <div> with a height transition. Padding lives on an inner div so the animation doesn't clip. Apply your own className for typography or color overrides.

Guidelines

Do

  • Use Accordion when triggers are siblings users would expect to navigate between with arrow keys.
  • Use multiple for settings or filter panels where independent toggling makes sense.
  • Give each AccordionItem a stable value so controlled state and analytics stay consistent.

Don't

  • Don't use Accordion for a single, isolated toggle. Use Collapsible so you don't imply group navigation that doesn't exist.
  • Don't nest Accordions deeply, since arrow-key focus rings get confusing past one level.
  • Don't put padding directly on AccordionContent. The inner wrapper already handles it, and overriding can cause animation clip.
PreviousShadows
NextAlert Dialog
Made in NYC© 2026 Rogo Technologies Inc.

Design at Rogo

We’re redesigning an entire industry. Come design it with us.

See open roles

Design at Rogo

  • How we workThe mission of design at Rogo, and the open roles
  • About RogoThe company and the product