{"version":3,"sources":["../src/components/Accordion/Accordion.context.ts","../src/components/Accordion/AccordionItem.tsx","../src/components/Accordion/AccordionTrigger.tsx","../src/components/Accordion/AccordionContent.tsx","../src/components/Accordion/Accordion.tsx"],"names":["createContext","useContext","jsx","cn","jsxs","ChevronDown","useState","useCallback","useMemo"],"mappings":"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","file":"chunk-N4VHOTMK.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\nimport type { AccordionContextValue } from \"./Accordion.types\";\n\nexport const AccordionContext = createContext<AccordionContextValue | null>(\n  null,\n);\n\nexport function useAccordion(): AccordionContextValue {\n  const ctx = useContext(AccordionContext);\n  if (!ctx) {\n    throw new Error(\n      \"Accordion compound components must be used within <Accordion>\",\n    );\n  }\n  return ctx;\n}\n\nexport const AccordionItemContext = createContext<string>(\"\");\n\nexport function useAccordionItem(): string {\n  return useContext(AccordionItemContext);\n}\n","import { cn } from \"../../utils/cn\";\nimport { AccordionItemContext } from \"./Accordion.context\";\nimport type { AccordionItemProps } from \"./Accordion.types\";\n\nexport function AccordionItem({\n  children,\n  value,\n  className,\n}: AccordionItemProps) {\n  return (\n    <AccordionItemContext.Provider value={value}>\n      <div\n        data-react-fancy-accordion-item=\"\"\n        className={cn(\n          \"border-b border-zinc-200 dark:border-zinc-700\",\n          className,\n        )}\n      >\n        {children}\n      </div>\n    </AccordionItemContext.Provider>\n  );\n}\n\nAccordionItem.displayName = \"AccordionItem\";\n","import { ChevronDown } from \"lucide-react\";\nimport { cn } from \"../../utils/cn\";\nimport { useAccordion, useAccordionItem } from \"./Accordion.context\";\nimport type { AccordionTriggerProps } from \"./Accordion.types\";\n\nexport function AccordionTrigger({\n  children,\n  className,\n}: AccordionTriggerProps) {\n  const { openItems, toggle } = useAccordion();\n  const value = useAccordionItem();\n  const isOpen = openItems.includes(value);\n\n  return (\n    <button\n      data-react-fancy-accordion-trigger=\"\"\n      type=\"button\"\n      onClick={() => toggle(value)}\n      aria-expanded={isOpen}\n      className={cn(\n        \"flex w-full items-center justify-between py-4 text-left text-sm font-medium transition-colors hover:text-zinc-600 dark:hover:text-zinc-300\",\n        className,\n      )}\n    >\n      {children}\n      <ChevronDown size={16} className={cn(\"shrink-0 transition-transform duration-200\", isOpen && \"rotate-180\")} />\n    </button>\n  );\n}\n\nAccordionTrigger.displayName = \"AccordionTrigger\";\n","import { cn } from \"../../utils/cn\";\nimport { useAccordion, useAccordionItem } from \"./Accordion.context\";\nimport type { AccordionContentProps } from \"./Accordion.types\";\n\nexport function AccordionContent({\n  children,\n  className,\n}: AccordionContentProps) {\n  const { openItems } = useAccordion();\n  const value = useAccordionItem();\n  const isOpen = openItems.includes(value);\n\n  return (\n    <div\n      data-react-fancy-accordion-content=\"\"\n      className={cn(\n        \"grid transition-all duration-200\",\n        isOpen ? \"grid-rows-[1fr]\" : \"grid-rows-[0fr]\",\n      )}\n    >\n      <div className=\"overflow-hidden\">\n        <div className={cn(\"pb-4 text-sm text-zinc-600 dark:text-zinc-400\", className)}>\n          {children}\n        </div>\n      </div>\n    </div>\n  );\n}\n\nAccordionContent.displayName = \"AccordionContent\";\n","import { useCallback, useMemo, useState } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport { AccordionContext } from \"./Accordion.context\";\nimport { AccordionItem } from \"./AccordionItem\";\nimport { AccordionTrigger } from \"./AccordionTrigger\";\nimport { AccordionContent } from \"./AccordionContent\";\nimport type { AccordionProps } from \"./Accordion.types\";\n\nfunction AccordionRoot({\n  children,\n  type = \"single\",\n  defaultOpen = [],\n  className,\n}: AccordionProps) {\n  const [openItems, setOpenItems] = useState<string[]>(defaultOpen);\n  const multiple = type === \"multiple\";\n\n  const toggle = useCallback(\n    (value: string) => {\n      setOpenItems((prev) => {\n        if (prev.includes(value)) {\n          return prev.filter((v) => v !== value);\n        }\n        return multiple ? [...prev, value] : [value];\n      });\n    },\n    [multiple],\n  );\n\n  const ctx = useMemo(\n    () => ({ openItems, toggle, multiple }),\n    [openItems, toggle, multiple],\n  );\n\n  return (\n    <AccordionContext.Provider value={ctx}>\n      <div data-react-fancy-accordion=\"\" className={cn(className)}>{children}</div>\n    </AccordionContext.Provider>\n  );\n}\n\nexport const Accordion = Object.assign(AccordionRoot, {\n  Item: AccordionItem,\n  Trigger: AccordionTrigger,\n  Content: AccordionContent,\n});\n"]}