Navigation

Accordion

Collapsible content sections.

Available inreactangular

Preview

Live previewreal component

Install

TerminalBash
npx mcp-elements add accordion

Usage

accordion-example.tsxTSX
import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from '@mcp-elements/react'

const items = [
  { value: 'transport' },
  { value: 'auth' },
  { value: 'tools' },
]

export function Example() {
  return (
    <Accordion items={items} collapsible className="w-full max-w-md">
      {({ expandedValues, getTriggerProps, getContentProps }) => (
        <>
          {items.map((item) => (
            <AccordionItem key={item.value}>
              <AccordionTrigger
                {...getTriggerProps(item.value, expandedValues)}
                isExpanded={expandedValues.includes(item.value)}
              >
                {item.value}
              </AccordionTrigger>
              <AccordionContent {...getContentProps(item.value, expandedValues)}>
                Configuration details for {item.value}.
              </AccordionContent>
            </AccordionItem>
          ))}
        </>
      )}
    </Accordion>
  )
}

Props

PropTypeDefaultDescription
items *AccordionItemConfig[]Item configs, each with a unique `value` and optional `disabled` flag
type'single' | 'multiple''single'Whether one or multiple items can be expanded at once
collapsiblebooleanfalseIn single mode, allow collapsing the open item by clicking it again
children *(api: ReturnType<typeof useAccordion>) => React.ReactNodeRender prop receiving the accordion API (expandedValues, getTriggerProps, getContentProps, etc.)
classNamestringAdditional CSS classes for the wrapper