Primitive / Moleculestable

Accordion

Expandable content sections with smooth disclosure behavior.

@glinui/uiComponent: accordion

Installation

Install from the package for shared ownership or from the registry for copy-paste control.

Package Manager

pnpm add @glinui/ui @glinui/tokens

Registry

pnpm dlx @glinui/cli@latest add accordion

Usage

Basic

TSX
1import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@glinui/ui"
2
3export function Demo() {
4 return (
5 <Accordion type="single" collapsible>
6 <AccordionItem value="item-1">
7 <AccordionTrigger>Is it accessible?</AccordionTrigger>
8 <AccordionContent>Yes. Built on Radix with full WAI-ARIA support.</AccordionContent>
9 </AccordionItem>
10 <AccordionItem value="item-2">
11 <AccordionTrigger>Is it styled?</AccordionTrigger>
12 <AccordionContent>Yes. Ships with glass, outline, and ghost variants.</AccordionContent>
13 </AccordionItem>
14 <AccordionItem value="item-3">
15 <AccordionTrigger>Is it animated?</AccordionTrigger>
16 <AccordionContent>Yes. Smooth transitions with reduced-motion fallback.</AccordionContent>
17 </AccordionItem>
18 </Accordion>
19 )
20}

Glass Variant

TSX
1import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@glinui/ui"
2
3export function Demo() {
4 return (
5 <Accordion type="single" collapsible>
6 <AccordionItem value="item-1" variant="glass">
7 <AccordionTrigger variant="glass">Glass accordion</AccordionTrigger>
8 <AccordionContent variant="glass">Frosted content surface.</AccordionContent>
9 </AccordionItem>
10 </Accordion>
11 )
12}

Separated

TSX
1import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@glinui/ui"
2
3export function Demo() {
4 return (
5 <Accordion type="single" collapsible>
6 <AccordionItem value="item-1" variant="separated">
7 <AccordionTrigger variant="separated">What is glinui?</AccordionTrigger>
8 <AccordionContent variant="separated">A glassmorphic component library built on Radix UI.</AccordionContent>
9 </AccordionItem>
10 <AccordionItem value="item-2" variant="separated">
11 <AccordionTrigger variant="separated">Is it customizable?</AccordionTrigger>
12 <AccordionContent variant="separated">Yes. Every token and variant is configurable.</AccordionContent>
13 </AccordionItem>
14 <AccordionItem value="item-3" variant="separated">
15 <AccordionTrigger variant="separated">Does it support dark mode?</AccordionTrigger>
16 <AccordionContent variant="separated">Yes. All components respect the color scheme automatically.</AccordionContent>
17 </AccordionItem>
18 </Accordion>
19 )
20}

Accessibility

  • Built on Radix Accordion with full WAI-ARIA.
  • Content regions are associated via `aria-controls`.

Keyboard Interactions

KeyAction
Enter / SpaceToggle the focused item open/closed.
Arrow UpMove focus to the previous trigger.
Arrow DownMove focus to the next trigger.

ARIA Attributes

  • `role="region"` on content
  • `aria-expanded` on trigger
  • `aria-controls` linking trigger to content

Reduced Motion

Open/close height transitions respect `prefers-reduced-motion`.

Affected properties

height

API Reference

Accordion

PropTypeRequiredDefaultDescription
type"single" | "multiple"-singleAllow one or multiple open items.
collapsibleboolean-falseAllow closing all items when type is single.
defaultValuestring | string[]--Initially open item value(s).
valuestring | string[]--Controlled open item value(s).
onValueChange(value: string | string[]) => void--Open state change handler.
contentSize"sm" | "md" | "lg"No-Padding size matching the trigger
size"sm" | "md" | "lg"No"md"Variant option from accordionContentVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost" | "separated"No"default"Variant option from accordionContentVariants.

AccordionItem

PropTypeRequiredDefaultDescription
valuestring--Unique identifier for the item.
variant"default" | "glass" | "frosted" | "outline" | "ghost" | "separated"NodefaultVisual treatment.
size"sm" | "md" | "lg"NomdDensity scale.
disabledboolean-falsePrevents interaction.
contentSize"sm" | "md" | "lg"No-Padding size matching the trigger

AccordionTrigger

PropTypeRequiredDefaultDescription
variant"default" | "glass" | "frosted" | "outline" | "ghost" | "separated"NodefaultVisual treatment.
size"sm" | "md" | "lg"NomdDensity scale.
contentSize"sm" | "md" | "lg"No-Padding size matching the trigger

AccordionContent

PropTypeRequiredDefaultDescription
variant"default" | "glass" | "frosted" | "outline" | "ghost" | "separated"NodefaultVisual treatment.
contentSize"sm" | "md" | "lg"NomdContent area density scale.
size"sm" | "md" | "lg"No"md"Variant option from accordionContentVariants.

Source

Import directly from the package or browse the source on GitHub. Click any file to view it.

Import

import { Accordion } from "@glinui/ui"

Source Files

Dependencies

@glinui/ui

Generated API Snapshot

Beta

Auto-extracted from TypeScript source in packages/ui/src/components/accordion.tsx. This section is in beta and may lag behind hand-curated docs. Regenerate with pnpm --filter @glinui/docs api:generate.

Generated: 2026-02-19T17:59:28.468Z · Full index: /docs/api-metadata

Primary Props Type

AccordionProps

AccordionContentProps

PropTypeRequiredDefaultDescription
contentSize"sm" | "md" | "lg"No-Padding size matching the trigger
size"sm" | "md" | "lg"No"md"Variant option from accordionContentVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost" | "separated"No"default"Variant option from accordionContentVariants.

AccordionItemProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from accordionItemVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost" | "separated"No"default"Variant option from accordionItemVariants.

AccordionProps

PropTypeRequiredDefaultDescription
variant"default" | "glass" | "frosted" | "outline" | "ghost" | "separated"No"default"-

AccordionTriggerProps

PropTypeRequiredDefaultDescription
size"sm" | "md" | "lg"No"md"Variant option from accordionTriggerVariants.
variant"default" | "glass" | "frosted" | "outline" | "ghost" | "separated"No"default"Variant option from accordionTriggerVariants.