{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "collapsible",
  "title": "Collapsible",
  "description": "A single disclosure with aria-expanded, a connected content panel and the shared focus outline. Content is hidden while closed.",
  "dependencies": [
    "@base-ui/react@1.9.0",
    "lucide-react@1.33.0"
  ],
  "registryDependencies": [
    "@waimakers/utils",
    "@waimakers/theme"
  ],
  "files": [
    {
      "path": "src/components/ui/collapsible.tsx",
      "content": "import { Collapsible as CollapsiblePrimitive } from \"@base-ui/react/collapsible\";\nimport { ChevronDown } from \"lucide-react\";\nimport { createElement, isValidElement, type ReactNode } from \"react\";\nimport { cn, focusRing } from \"../../lib/utils\";\n\nfunction Collapsible({ ...props }: CollapsiblePrimitive.Root.Props) {\n  return <CollapsiblePrimitive.Root data-slot=\"collapsible\" {...props} />;\n}\n\nfunction CollapsibleTrigger({\n  className,\n  children,\n  render,\n  ...props\n}: CollapsiblePrimitive.Trigger.Props) {\n  const target = isValidElement<{ children?: ReactNode }>(render) ? render : undefined;\n  const content = (\n    <>\n      <ChevronDown\n        aria-hidden\n        className=\"pointer-events-none size-4 shrink-0 transition-transform duration-(--dur-fast,120ms) ease-brand group-aria-expanded:rotate-180 motion-reduce:transition-none\"\n      />\n      {target?.props.children ?? children}\n    </>\n  );\n  const triggerClass =\n    \"group inline-flex min-h-11 min-w-0 max-w-full items-center justify-start gap-2 rounded-sm border-0 bg-transparent px-1 py-2 text-left text-sm text-muted-foreground whitespace-normal transition-colors duration-(--dur-fast,120ms) ease-brand hover:text-foreground aria-expanded:bg-transparent disabled:cursor-not-allowed disabled:opacity-50 motion-reduce:transition-none [overflow-wrap:anywhere]\";\n  return (\n    <CollapsiblePrimitive.Trigger\n      data-slot=\"collapsible-trigger\"\n      className={\n        typeof className === \"function\"\n          ? (state) => cn(triggerClass, focusRing, className(state))\n          : cn(triggerClass, focusRing, className)\n      }\n      render={\n        target ? createElement(target.type, { ...target.props, key: target.key }, content) : render\n      }\n      {...props}\n    >\n      {content}\n    </CollapsiblePrimitive.Trigger>\n  );\n}\n\nfunction CollapsibleContent({ ...props }: CollapsiblePrimitive.Panel.Props) {\n  return <CollapsiblePrimitive.Panel data-slot=\"collapsible-content\" {...props} />;\n}\n\nexport { Collapsible, CollapsibleTrigger, CollapsibleContent };\n",
      "type": "registry:ui",
      "target": "components/ui/collapsible.tsx"
    }
  ],
  "type": "registry:ui"
}