Skip to content
RefineUI

Accordion

Collapsible content panels for dense info.

Returns within 30 days. Refunds in 5–7 business days.

Overview

Machine-readable contract from Component Spec.

component: accordionexport: Accordionversion: 1recipe: accordiontokens.visual: accordionattributes: data-refineui=accordion

Anatomy

Partdata-refineui
rootaccordion
itemaccordion-item
triggeraccordion-trigger
panelaccordion-panel
contentaccordion-content

Variants

AxisValues
sizesm, md, lg
typesingle, multiple

States

ScopeCategoryValues
componentpseudofocus-visible
componentcomponentdata-state: open, closed
componentenvironmentforced-colors, dir, prefers-contrast
accordion-itemcomponentdata-state: open, closed
accordion-triggerpseudofocus-visible

Accessibility

SlotElementRoleRequired attributesRelationships
accordion-triggerbuttonbuttonaria-expanded: required=true, type: boolean; aria-controls: required=true, type: stringaria-controls → accordion-panel.id (required=true)
accordion-panelregionaria-labelledby: required=true, type: stringaria-labelledby → accordion-trigger.id (required=true)

Keyboard

KeyActionNative
ArrowDownnext-trigger
ArrowUpprevious-trigger
Homefirst-trigger
Endlast-trigger

Focus

SectionPropertyValue
visualrequiredtrue
visualselector:focus-visible
behaviorrovingfalse

Layout

PropertyValue
directionlogical
rtltrue

Variant

Select a recipe variant — preview and Recipe → Tokens update together.

Returns within 30 days. Refunds in 5–7 business days.

Recipe → Tokens

Slot bindings for variant="default" — declared in accordion.recipe.ts.

SlotVariantPropertyTraceSemanticLight → foundationDark → foundationRecipe class
itembackgroundaccordion.content.backgroundbackgroundPrimaryHoverneutral100neutral850bg-refineui-alias-background-primary-hover
triggerforegroundaccordion.trigger.foregroundforegroundPrimaryprimaryBlackneutralWhitetext-refineui-alias-foreground-primary
contentforegroundaccordion.content.foregroundforegroundPrimaryprimaryBlackneutralWhitetext-refineui-alias-foreground-secondary

Component token trace

All paths in token-trace-v2.json prefixed with accordion.

TraceSemanticLight foundationDark foundationLightDark
accordion.content.backgroundbackgroundPrimaryHoverneutral100neutral850#F5F5F5#222222
accordion.content.borderborderDefaultneutral300neutral650#DBDBDB#5B5B5B
accordion.content.foregroundforegroundPrimaryprimaryBlackneutralWhite#212121#FFFFFF
accordion.item.borderborderDefaultneutral300neutral650#DBDBDB#5B5B5B
accordion.trigger.backgroundbackgroundPrimaryneutralWhiteneutral900#FFFFFF#1A1A1A
accordion.trigger.borderborderDefaultneutral300neutral650#DBDBDB#5B5B5B
accordion.trigger.foregroundforegroundPrimaryprimaryBlackneutralWhite#212121#FFFFFF
npm install @refineui/react @refineui/tokens
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@refineui/react";
<Accordion type="single" collapsible>
<AccordionItem value="item-1">
<AccordionTrigger>What is RefineUI?</AccordionTrigger>
<AccordionContent>
RefineUI is a design system and component library.
</AccordionContent>
</AccordionItem>
<AccordionItem value="item-2">
<AccordionTrigger>How do I install it?</AccordionTrigger>
<AccordionContent>
Run: bun add @refineui/react @refineui/tokens
</AccordionContent>
</AccordionItem>
</Accordion>
<Accordion type="multiple" defaultValue={["item-1", "item-2"]}>
{/* Multiple panels can be open */}
</Accordion>
<Accordion size="lg" value={openItem} onValueChange={setOpenItem}>
{/* Controlled accordion */}
</Accordion>

Contract source: packages/react/spec/components/accordion.json — rendered by SpecRenderer above.