NativeUI Primitives

Accordion

Manage multiple collapsible sections with single or multiple expansion modes and full accessibility.


Preview

Interactive Demo

Installation

npm install @native-ui-org/primitives
pnpm add @native-ui-org/primitives
yarn add @native-ui-org/primitives
bun add @native-ui-org/primitives

Overview

Accordion is a compound component that groups multiple collapsible sections with automatic state management.

FeatureDescriptionPlatforms
AccordionRoot container managing group stateiOS, Android, Web
AccordionItemIndividual collapsible sectioniOS, Android, Web
TriggerButton to toggle section stateiOS, Android, Web
ContentAnimated content areaiOS, Android, Web

Setup & Usage Guide

Accordion provides coordinated state management for multiple collapsible sections.

1. Install and Import

Install from npm:

npm install @native-ui-org/primitives

Then import from the package:

import { 
  Accordion, 
  AccordionItem,
  AccordionTrigger, 
  AccordionContent 
} from "@native-ui-org/primitives";

2. Basic Usage (Single Mode)

Only one section can be open at a time:

<Accordion type="single" defaultValue="item-1">
  <AccordionItem value="item-1">
    <AccordionTrigger>
      <Text>Section 1</Text>
    </AccordionTrigger>
    <AccordionContent>
      <Text>Content for section 1</Text>
    </AccordionContent>
  </AccordionItem>
  
  <AccordionItem value="item-2">
    <AccordionTrigger>
      <Text>Section 2</Text>
    </AccordionTrigger>
    <AccordionContent>
      <Text>Content for section 2</Text>
    </AccordionContent>
  </AccordionItem>
</Accordion>

3. Multiple Expansion Mode

Allow multiple sections to be open simultaneously:

<Accordion type="multiple" defaultValue={["item-1", "item-3"]}>
  <AccordionItem value="item-1">
    <AccordionTrigger><Text>Section 1</Text></AccordionTrigger>
    <AccordionContent><Text>Content 1</Text></AccordionContent>
  </AccordionItem>
  
  <AccordionItem value="item-2">
    <AccordionTrigger><Text>Section 2</Text></AccordionTrigger>
    <AccordionContent><Text>Content 2</Text></AccordionContent>
  </AccordionItem>
  
  <AccordionItem value="item-3">
    <AccordionTrigger><Text>Section 3</Text></AccordionTrigger>
    <AccordionContent><Text>Content 3</Text></AccordionContent>
  </AccordionItem>
</Accordion>

4. Controlled State

Manage accordion state externally:

const [value, setValue] = useState("item-1");

<Accordion type="single" value={value} onValueChange={setValue}>
  <AccordionItem value="item-1">
    <AccordionTrigger><Text>FAQ 1</Text></AccordionTrigger>
    <AccordionContent><Text>Answer 1</Text></AccordionContent>
  </AccordionItem>
</Accordion>

API Reference

Accordion

Root container for accordion group.

PropTypeDefaultDescription
type"single" | "multiple"Required. Expansion mode
valuestring | string[]Controlled value(s)
defaultValuestring | string[]Initial value(s) (uncontrolled)
onValueChange(value: string | string[]) => voidCallback when value changes
collapsiblebooleantrueAllow closing all items (single mode only)
disabledbooleanfalseDisable all interactions

AccordionItem

Individual accordion section.

PropTypeDefaultDescription
valuestringRequired. Unique ID
disabledbooleanfalseDisable this item
asChildbooleanfalseUse Slot pattern

AccordionTrigger

Button to toggle item state.

PropTypeDefaultDescription
asChildbooleanfalseUse Slot pattern
...propsanyStandard Pressable props

AccordionContent

Container for accordion content.

PropTypeDefaultDescription
forceMountbooleanfalseKeep mounted when closed
asChildbooleanfalseUse Slot pattern

Platform Behavior

PlatformImplementationCharacteristics
iOS / AndroidReact Native Animated APINative 60fps animations
WebCSS transitions with JS controlHardware accelerated
All PlatformsConsistent APISame props, same behavior

Accessibility

Web:

  • role="region" on accordion items
  • aria-expanded on triggers
  • aria-controls links triggers to content
  • Keyboard navigation support

Mobile:

  • Proper accessibility roles
  • Screen reader support
  • Works with VoiceOver and TalkBack

Version History

VersionNotes
0.1.0Initial release — accordion with single/multiple modes and state management.

Summary: Accordion coordinates multiple collapsible sections with automatic state management. Use it for FAQs, settings panels, or any grouped expandable content. Choose single mode for exclusive expansion or multiple mode for independent sections.