Skip to content

Collapse

Collapsible content panels for FAQs, accordions, and expandable sections.

import { Collapse } from 'asterui'

Basic Collapse

Simple collapsible panels.

What is AsterUI?
AsterUI is a React component library built on DaisyUI and Tailwind CSS.
Run npm install asterui to get started.
Yes, AsterUI is open source and free to use.
import { Collapse } from 'asterui'

function App() {
  const items = [
    {
      key: '1',
      label: 'What is AsterUI?',
      children: 'AsterUI is a React component library built on DaisyUI and Tailwind CSS.',
    },
    {
      key: '2',
      label: 'How do I install it?',
      children: 'Run npm install asterui to get started.',
    },
    {
      key: '3',
      label: 'Is it free?',
      children: 'Yes, AsterUI is open source and free to use.',
    },
  ]
  
  return (
      <Collapse items={items} defaultActiveKey={['1']} />
    )
}

export default App

Accordion

Only one panel can be open at a time.

Section 1
Content for section 1. Click another section to close this one.
Content for section 2. Only one section can be open.
Content for section 3. This is accordion behavior.
import { Collapse } from 'asterui'

function App() {
  const items = [
    {
      key: '1',
      label: 'Section 1',
      children: 'Content for section 1. Click another section to close this one.',
    },
    {
      key: '2',
      label: 'Section 2',
      children: 'Content for section 2. Only one section can be open.',
    },
    {
      key: '3',
      label: 'Section 3',
      children: 'Content for section 3. This is accordion behavior.',
    },
  ]
  
  return (
      <Collapse items={items} accordion defaultActiveKey="1" />
    )
}

export default App

Borderless

Collapse without borders.

Content without borders for a cleaner look.
Great for FAQ sections or sidebars.
import { Collapse } from 'asterui'

function App() {
  const items = [
    {
      key: '1',
      label: 'Panel 1',
      children: 'Content without borders for a cleaner look.',
    },
    {
      key: '2',
      label: 'Panel 2',
      children: 'Great for FAQ sections or sidebars.',
    },
  ]
  
  return (
      <Collapse items={items} bordered={false} />
    )
}

export default App

Nested Content

Collapse with rich nested content.

Follow these steps to get started:

  1. Install the package
  2. Import components
  3. Start building
Learn about advanced patterns and customization options.
import { Collapse, Button, Space } from 'asterui'

function App() {
  const items = [
    {
      key: '1',
      label: 'Getting Started',
      children: (
        <Space direction="vertical" size="sm">
          <p>Follow these steps to get started:</p>
          <ol className="list-decimal list-inside">
            <li>Install the package</li>
            <li>Import components</li>
            <li>Start building</li>
          </ol>
          <Button color="primary" size="sm">Read Docs</Button>
        </Space>
      ),
    },
    {
      key: '2',
      label: 'Advanced Usage',
      children: 'Learn about advanced patterns and customization options.',
    },
  ]
  
  return (
      <Collapse items={items} />
    )
}

export default App

Ghost Mode

Transparent background for minimal appearance.

Ghost mode removes the background color.
Great for minimalist designs.
import { Collapse } from 'asterui'

function App() {
  const items = [
    {
      key: '1',
      label: 'Transparent Background',
      children: 'Ghost mode removes the background color.',
    },
    {
      key: '2',
      label: 'Clean Look',
      children: 'Great for minimalist designs.',
    },
  ]
  
  return (
      <Collapse items={items} ghost bordered={false} />
    )
}

export default App

Plus/Minus Icon

Use plus/minus icons instead of arrows.

This panel uses plus/minus icons instead of arrows.
Click the plus icon to expand.
import { Collapse } from 'asterui'

function App() {
  const items = [
    {
      key: '1',
      label: 'Plus/Minus Icon',
      children: 'This panel uses plus/minus icons instead of arrows.',
    },
    {
      key: '2',
      label: 'Another Panel',
      children: 'Click the plus icon to expand.',
    },
  ]
  
  return (
      <Collapse items={items} icon="plus" />
    )
}

export default App
PropertyDescriptionTypeDefault
itemsCollapse panel itemsCollapseItemType[]-
activeKeyControlled active panel keysstring | number | (string | number)[]-
defaultActiveKeyInitial active panel keysstring | number | (string | number)[]-
accordionOnly one panel open at a timebooleanfalse
borderedShow border around panelsbooleantrue
ghostTransparent background stylebooleanfalse
sizeSize variant'sm' | 'md' | 'lg''md'
iconIcon type for expand indicator'arrow' | 'plus' | 'none''arrow'
expandIconPlacementIcon placement'start' | 'end''start'
onChangeChange handler(activeKey: (string | number)[]) => void-
data-testidTest ID for the componentstring'collapse'
classNameAdditional CSS classesstring-
PropertyDescriptionTypeDefault
keyUnique identifier for the panelstring | number-
labelPanel header contentReact.ReactNode-
childrenPanel body contentReact.ReactNode-
extraExtra element in the header cornerReact.ReactNode-
showArrowWhether to show the expand iconbooleantrue
collapsibleCollapsible mode'header' | 'icon' | 'disabled'-
classNameCustom class name for this panelstring-
  • Panel headers are keyboard accessible with Enter and Space
  • Uses aria-expanded to indicate panel state
  • Uses aria-disabled for disabled panels
  • Panels expose data-state for testing and styling