nqui
Components

Accordion

Collapsible accordion for revealing content. Single or multiple open items.

Accordion

Collapsible accordion sections. Use for FAQs or grouped content. Based on Radix UI Accordion.

Installation

npm install @nqlib/nqui

Import

import {
  Accordion,
  AccordionItem,
  AccordionTrigger,
  AccordionContent,
} from '@nqlib/nqui';

Basic Usage

Copy this into your app — same pattern as the first example below.

import {
  Accordion,
  AccordionItem,
  AccordionTrigger,
  AccordionContent,
} from '@nqlib/nqui';

export default function Example() {
  return (
    <Accordion type="single" collapsible>
      <AccordionItem value="1">
        <AccordionTrigger>Is it accessible?</AccordionTrigger>
        <AccordionContent>Yes. It adheres to the WAI-ARIA design pattern.</AccordionContent>
      </AccordionItem>
      <AccordionItem value="2">
        <AccordionTrigger>Is it styled?</AccordionTrigger>
        <AccordionContent>Yes. It comes with default styles that match the other components.</AccordionContent>
      </AccordionItem>
      <AccordionItem value="3">
        <AccordionTrigger>Is it animated?</AccordionTrigger>
        <AccordionContent>Yes. It's animated by default, and you can customize it.</AccordionContent>
      </AccordionItem>
    </Accordion>
  );
}

Examples

Each example has a Preview and Code tab. The code is copy-paste ready for your app (import from '@nqlib/nqui', same usage as above).

Single (one open at a time)

type='single' collapsible — opening one closes the other. One item open max.

Reactexample.tsx
import {  Accordion,  AccordionItem,  AccordionTrigger,  AccordionContent,} from '@nqlib/nqui';export default function Example() {  return (    <Accordion type="single" collapsible>      <AccordionItem value="1">        <AccordionTrigger>Is it accessible?</AccordionTrigger>        <AccordionContent>Yes. It adheres to the WAI-ARIA design pattern.</AccordionContent>      </AccordionItem>      <AccordionItem value="2">        <AccordionTrigger>Is it styled?</AccordionTrigger>        <AccordionContent>Yes. It comes with default styles that match the other components.</AccordionContent>      </AccordionItem>      <AccordionItem value="3">        <AccordionTrigger>Is it animated?</AccordionTrigger>        <AccordionContent>Yes. It's animated by default, and you can customize it.</AccordionContent>      </AccordionItem>    </Accordion>  );}

Multiple (independent)

type='multiple' — each item opens and closes independently. No limit.

Reactexample.tsx
import {  Accordion,  AccordionItem,  AccordionTrigger,  AccordionContent,} from '@nqlib/nqui';export default function Example() {  return (    <Accordion type="multiple">      <AccordionItem value="1">        <AccordionTrigger>Is it accessible?</AccordionTrigger>        <AccordionContent>Yes. It adheres to the WAI-ARIA design pattern.</AccordionContent>      </AccordionItem>      <AccordionItem value="2">        <AccordionTrigger>Is it styled?</AccordionTrigger>        <AccordionContent>Yes. It comes with default styles that match the other components.</AccordionContent>      </AccordionItem>      <AccordionItem value="3">        <AccordionTrigger>Is it animated?</AccordionTrigger>        <AccordionContent>Yes. It's animated by default, and you can customize it.</AccordionContent>      </AccordionItem>    </Accordion>  );}

Props

Accordion

PropTypeDefaultDescription
type"single" | "multiple"-Single or multiple items open at once
collapsibleboolean-Allow closing the open item (type="single" only)
valuestring | string[]-Controlled value(s)
defaultValuestring | string[]-Uncontrolled default value(s)
onValueChange(value: string | string[]) => void-Callback when value changes
disabledbooleanfalseDisable the accordion
All standard div props--Accepts HTML div attributes

AccordionItem

PropTypeDefaultDescription
valuestring-Unique value for the item
disabledbooleanfalseDisable this item
All standard div props--Accepts HTML div attributes

AccordionTrigger

PropTypeDefaultDescription
asChildbooleanfalseMerge props into child
All standard button props--Accepts HTML button attributes

AccordionContent

PropTypeDefaultDescription
forceMountboolean-Force mount when closed
All standard div props--Accepts HTML div attributes

Next Steps