{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "accordion",
  "type": "registry:ui",
  "dependencies": [
    "@kobalte/core",
    "lucide-solid"
  ],
  "files": [
    {
      "path": "ui/accordion.tsx",
      "content": "import type { JSX, ValidComponent } from \"solid-js\"\nimport { splitProps } from \"solid-js\"\n\nimport * as AccordionPrimitive from \"@kobalte/core/accordion\"\nimport type { PolymorphicProps } from \"@kobalte/core/polymorphic\"\nimport { ChevronDown } from \"lucide-solid\"\n\nimport { cn } from \"@/lib/utils\"\n\ntype AccordionProps<T extends ValidComponent = \"div\"> = AccordionPrimitive.AccordionRootProps<T> & {\n  class?: string | undefined\n}\n\nconst Accordion = <T extends ValidComponent = \"div\">(\n  props: PolymorphicProps<T, AccordionProps<T>>\n) => {\n  const [local, others] = splitProps(props as AccordionProps, [\"class\"])\n  return (\n    <AccordionPrimitive.Root\n      class={cn(\"cn-accordion flex w-full flex-col\", local.class)}\n      data-slot=\"accordion\"\n      {...others}\n    />\n  )\n}\n\ntype AccordionItemProps<T extends ValidComponent = \"div\"> =\n  AccordionPrimitive.AccordionItemProps<T> & {\n    class?: string | undefined\n  }\n\nconst AccordionItem = <T extends ValidComponent = \"div\">(\n  props: PolymorphicProps<T, AccordionItemProps<T>>\n) => {\n  const [local, others] = splitProps(props as AccordionItemProps, [\"class\"])\n  return (\n    <AccordionPrimitive.Item\n      class={cn(\"cn-accordion-item\", local.class)}\n      data-slot=\"accordion-item\"\n      {...others}\n    />\n  )\n}\n\ntype AccordionTriggerProps<T extends ValidComponent = \"button\"> =\n  AccordionPrimitive.AccordionTriggerProps<T> & {\n    class?: string | undefined\n    children?: JSX.Element | undefined\n  }\n\nconst AccordionTrigger = <T extends ValidComponent = \"button\">(\n  props: PolymorphicProps<T, AccordionTriggerProps<T>>\n) => {\n  const [local, others] = splitProps(props as AccordionTriggerProps, [\"class\", \"children\"])\n  return (\n    <AccordionPrimitive.Header class=\"flex\" data-slot=\"accordion-header\">\n      <AccordionPrimitive.Trigger\n        class={cn(\n          \"cn-accordion-trigger group/accordion-trigger relative flex flex-1 items-start justify-between border border-transparent outline-none transition-all disabled:pointer-events-none disabled:opacity-50\",\n          local.class\n        )}\n        data-slot=\"accordion-trigger\"\n        {...others}\n      >\n        {local.children}\n        <ChevronDown\n          class=\"cn-accordion-trigger-icon pointer-events-none shrink-0 duration-300 group-aria-expanded/accordion-trigger:rotate-180\"\n          data-slot=\"accordion-trigger-icon\"\n        />\n      </AccordionPrimitive.Trigger>\n    </AccordionPrimitive.Header>\n  )\n}\n\ntype AccordionContentProps<T extends ValidComponent = \"div\"> =\n  AccordionPrimitive.AccordionContentProps<T> & {\n    class?: string | undefined\n    children?: JSX.Element | undefined\n  }\n\nconst AccordionContent = <T extends ValidComponent = \"div\">(\n  props: PolymorphicProps<T, AccordionContentProps<T>>\n) => {\n  const [local, others] = splitProps(props as AccordionContentProps, [\"class\", \"children\"])\n  return (\n    <AccordionPrimitive.Content\n      class=\"cn-accordion-content overflow-hidden\"\n      data-slot=\"accordion-content\"\n      {...others}\n    >\n      <div\n        class={cn(\n          \"cn-accordion-content-inner h-(--kb-collapsible-content-height) [&_a]:underline [&_a]:underline-offset-3 [&_a]:hover:text-foreground [&_p:not(:last-child)]:mb-4\",\n          local.class\n        )}\n        data-slot=\"accordion-content-inner\"\n      >\n        {local.children}\n      </div>\n    </AccordionPrimitive.Content>\n  )\n}\n\nexport { Accordion, AccordionItem, AccordionTrigger, AccordionContent }\n",
      "type": "registry:ui"
    }
  ]
}