Components
Navigation
Accordion

Accordion

Accordion is a higher-level helper around Accordion primitives. You can pass items for a data-driven setup or render custom children manually.

Installation

1. Install the Accordion primitive via shadcn:

npx shadcn@latest add accordion

2. Copy the wrapper source:

  • Source: packages/ui/src/common/overlays/accordion-wrapper.tsx
  • Place in your project: components/common/overlays/accordion-wrapper.tsx
  • Required components: components/ui/accordion.tsx, lib/utils.ts

3. Update import paths to match your project structure.


Usage

import { AccordionWrapper as Accordion } from "@hoag/ui/accordion-wrapper";
 
const faqItems = [
  {
    value: "item-1",
    trigger: "What is @hoag/ui?",
    content: "A component library built with shadcn conventions and Radix primitives.",
  },
  {
    value: "item-2",
    trigger: "Can I customize styles?",
    content: "Yes. Components are Tailwind-first and easy to extend.",
  },
];
 
export default function Demo() {
  return <Accordion type="single" collapsible items={faqItems} />;
}

Default

<Accordion type="single" collapsible items={faqItems} />

Multiple Open Items

<Accordion type="multiple" items={items} />

API Reference

Props

PropTypeDefaultDescription
itemsAccordionWrapperItem[]Data source for auto-rendered accordion items
type"single" | "multiple""single"Whether one or many items can be open
collapsiblebooleanfalseAllow closing opened item in single mode
itemClassNamestringGlobal class for each item
triggerClassNamestringGlobal class for each trigger
contentClassNamestringGlobal class for each content
childrenReactNodeCustom rendered accordion items

AccordionWrapperItem

FieldTypeDescription
valuestringUnique item value
triggerReactNodeTrigger content
contentReactNodeExpanded content
itemClassNamestringPer-item class override
triggerClassNamestringPer-trigger class override
contentClassNamestringPer-content class override

MIT 2026 © @hoag/ui