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/tokensRegistry
pnpm dlx @glinui/cli@latest add accordionUsage
Basic
TSX
1import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@glinui/ui"23export 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"23export 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"23export 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
| Key | Action |
|---|---|
| Enter / Space | Toggle the focused item open/closed. |
| Arrow Up | Move focus to the previous trigger. |
| Arrow Down | Move 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
heightAPI Reference
Accordion
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
type | "single" | "multiple" | - | single | Allow one or multiple open items. |
collapsible | boolean | - | false | Allow closing all items when type is single. |
defaultValue | string | string[] | - | - | Initially open item value(s). |
value | string | 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
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
value | string | - | - | Unique identifier for the item. |
variant | "default" | "glass" | "frosted" | "outline" | "ghost" | "separated" | No | default | Visual treatment. |
size | "sm" | "md" | "lg" | No | md | Density scale. |
disabled | boolean | - | false | Prevents interaction. |
contentSize | "sm" | "md" | "lg" | No | - | Padding size matching the trigger |
AccordionTrigger
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
variant | "default" | "glass" | "frosted" | "outline" | "ghost" | "separated" | No | default | Visual treatment. |
size | "sm" | "md" | "lg" | No | md | Density scale. |
contentSize | "sm" | "md" | "lg" | No | - | Padding size matching the trigger |
AccordionContent
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
variant | "default" | "glass" | "frosted" | "outline" | "ghost" | "separated" | No | default | Visual treatment. |
contentSize | "sm" | "md" | "lg" | No | md | Content 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/uiGenerated API Snapshot
Beta
Generated API Snapshot
BetaAuto-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
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
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
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
size | "sm" | "md" | "lg" | No | "md" | Variant option from accordionItemVariants. |
variant | "default" | "glass" | "frosted" | "outline" | "ghost" | "separated" | No | "default" | Variant option from accordionItemVariants. |
AccordionProps
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
variant | "default" | "glass" | "frosted" | "outline" | "ghost" | "separated" | No | "default" | - |
AccordionTriggerProps
| Prop | Type | Required | Default | Description |
|---|---|---|---|---|
size | "sm" | "md" | "lg" | No | "md" | Variant option from accordionTriggerVariants. |
variant | "default" | "glass" | "frosted" | "outline" | "ghost" | "separated" | No | "default" | Variant option from accordionTriggerVariants. |