{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "accordion",
  "title": "Accordion",
  "author": "Ballmac <https://ui.ballmac.com>",
  "description": "Vertically stacked disclosure sections on Radix Accordion, single or multiple open, with hairline dividers, a rotating plus and height animation.",
  "dependencies": [
    "radix-ui",
    "lucide-react"
  ],
  "devDependencies": [
    "tw-animate-css"
  ],
  "registryDependencies": [
    "utils"
  ],
  "files": [
    {
      "path": "registry/ballmac/components/accordion.tsx",
      "content": "// Ballmac UI: Accordion. https://ui.ballmac.com/components/accordion\n// Based on shadcn/ui's Accordion (MIT, Copyright (c) 2023 shadcn), restyled with hairline dividers and a rotating plus.\n\"use client\"\n\nimport * as React from \"react\"\nimport { Accordion as AccordionPrimitive } from \"radix-ui\"\nimport { Plus } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype AccordionProps = React.ComponentProps<typeof AccordionPrimitive.Root>\n\nfunction Accordion({ className, ...props }: AccordionProps) {\n  return <AccordionPrimitive.Root data-slot=\"accordion\" className={cn(\"w-full border-y\", className)} {...props} />\n}\n\ntype AccordionItemProps = React.ComponentProps<typeof AccordionPrimitive.Item>\n\nfunction AccordionItem({ className, ...props }: AccordionItemProps) {\n  return <AccordionPrimitive.Item data-slot=\"accordion-item\" className={cn(\"border-b last:border-b-0\", className)} {...props} />\n}\n\ntype AccordionTriggerProps = React.ComponentProps<typeof AccordionPrimitive.Trigger>\n\nfunction AccordionTrigger({ className, children, ...props }: AccordionTriggerProps) {\n  return (\n    <AccordionPrimitive.Header className=\"flex\">\n      <AccordionPrimitive.Trigger\n        data-slot=\"accordion-trigger\"\n        className={cn(\n          \"group flex flex-1 items-center justify-between gap-4 rounded-md py-5 text-start text-base font-medium outline-none transition-colors hover:text-foreground/80 focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50\",\n          className\n        )}\n        {...props}\n      >\n        {children}\n        <Plus\n          aria-hidden=\"true\"\n          className=\"size-4 shrink-0 text-muted-foreground transition-transform duration-200 ease-[var(--bm-ease-out,ease-out)] group-data-[state=open]:rotate-45 motion-reduce:transition-none\"\n        />\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  )\n}\n\ntype AccordionContentProps = React.ComponentProps<typeof AccordionPrimitive.Content>\n\nfunction AccordionContent({ className, children, ...props }: AccordionContentProps) {\n  return (\n    <AccordionPrimitive.Content\n      data-slot=\"accordion-content\"\n      className=\"overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down motion-reduce:animate-none\"\n      {...props}\n    >\n      <div className={cn(\"pb-5 leading-relaxed text-muted-foreground\", className)}>{children}</div>\n    </AccordionPrimitive.Content>\n  )\n}\n\nexport {\n  Accordion,\n  AccordionItem,\n  AccordionTrigger,\n  AccordionContent,\n  type AccordionProps,\n  type AccordionItemProps,\n  type AccordionTriggerProps,\n  type AccordionContentProps,\n}\n",
      "type": "registry:ui",
      "target": "@components/ballmac/accordion.tsx"
    }
  ],
  "meta": {
    "schema": 1,
    "tier": "free",
    "tags": [
      "accordion",
      "disclosure",
      "faq",
      "collapsible",
      "radix"
    ],
    "version": "1.0.0",
    "updated": "2026-09-28",
    "ai": {
      "summary": "Show and hide sections of content one at a time (type=\"single\" collapsible) or several at once (type=\"multiple\").",
      "whenToUse": [
        "FAQ sections",
        "Settings or docs with optional detail",
        "Long content where readers scan headings first"
      ],
      "whenNotToUse": [
        "A single show/hide toggle (use reasoning-disclosure or a Radix Collapsible)",
        "Navigation between views (use tabs)"
      ],
      "composesWith": [
        "badge"
      ],
      "a11y": [
        {
          "keys": "Enter / Space",
          "action": "Toggles the focused section"
        },
        {
          "keys": "↓ / ↑",
          "action": "Moves focus between section headers"
        },
        {
          "keys": "Home / End",
          "action": "Moves focus to the first or last header"
        }
      ],
      "customization": [
        "type: single | multiple",
        "collapsible (single): allow closing the open section",
        "defaultValue / value for open sections"
      ]
    },
    "source": {
      "name": "shadcn/ui Accordion",
      "url": "https://github.com/shadcn-ui/ui",
      "license": "MIT",
      "copyright": "Copyright (c) 2023 shadcn",
      "modified": true
    },
    "examples": [
      "accordion-demo",
      "accordion-multiple"
    ],
    "url": "https://ui.ballmac.com/components/accordion"
  },
  "categories": [
    "primitives"
  ],
  "type": "registry:ui"
}