{"version":3,"file":"index.mjs","names":["createContext","useContext","AccordionContext","value","onChange","useAccordion","context","Error","ReactNode","useMemo","useState","AccordionContext","Props","value","defaultValue","onChange","children","noop","Accordion","t0","$","_c","controlledValue","t1","undefined","isControlled","unControlledValue","setUnControlledValue","t2","value_0","context","t3","ComponentProps","useAccordion","clsx","Props","name","AccordionTrigger","t0","$","_c","children","rest","value","onChange","t1","t2","t3","t4","t5","t6","ComponentProps","useEffect","useRef","useAccordion","clsx","Props","name","AccordionContent","t0","$","_c","children","rest","value","wrapperRef","contentRef","isOpen","t1","t2","Symbol","for","updateHeight","current","style","setProperty","scrollHeight","observer","ResizeObserver","observe","disconnect","t3","t4","t5","t6"],"sources":["../../../src/components/accordion/useAccordion.tsx","../../../src/components/accordion/Accordion.tsx","../../../src/components/accordion/AccordionTrigger.tsx","../../../src/components/accordion/AccordionContent.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nexport const AccordionContext = createContext<{\n  value: string | null;\n  onChange: (value: string | null) => void;\n} | null>(null);\n\nexport const useAccordion = () => {\n  const context = useContext(AccordionContext);\n\n  if (context === null) {\n    throw new Error(\"useAccordion to be use inside Accordion component\");\n  }\n\n  return context;\n};\n","import { ReactNode, useMemo, useState } from \"react\";\nimport { AccordionContext } from \"./useAccordion\";\n\ninterface Props {\n  value?: string | null;\n  defaultValue?: string | null;\n  onChange?: (value: string | null) => void;\n  children: ReactNode;\n}\n\nconst noop = () => {};\n\nexport function Accordion({\n  value: controlledValue,\n  defaultValue,\n  onChange = noop,\n  children,\n}: Props) {\n  const isControlled = typeof controlledValue !== \"undefined\";\n  const [unControlledValue, setUnControlledValue] = useState<string | null>(defaultValue ?? null);\n\n  const value = (isControlled ? controlledValue : unControlledValue) ?? null;\n\n  const context = useMemo(\n    () => ({\n      value,\n      onChange(value: string | null) {\n        if (!isControlled) {\n          setUnControlledValue(value);\n        }\n        onChange(value);\n      },\n    }),\n    [value, onChange, isControlled],\n  );\n\n  return <AccordionContext.Provider value={context}>{children}</AccordionContext.Provider>;\n}\n","import { ComponentProps } from \"react\";\nimport { useAccordion } from \"./useAccordion\";\nimport clsx from \"clsx\";\n\ninterface Props extends ComponentProps<\"button\"> {\n  name: string;\n}\n\nexport function AccordionTrigger({ name, children, ...rest }: Props) {\n  const { value, onChange } = useAccordion();\n  return (\n    <button\n      type=\"button\"\n      onClick={() => onChange(name === value ? null : name)}\n      {...rest}\n      className=\"border-l-yellow-4 bg-gray-0 hover:border-l-yellow-4 relative -mt-px flex h-12 w-full cursor-pointer border border-l-4 border-gray-alpha-0 hover:z-1 hover:border-gray-alpha-2\"\n    >\n      <div className=\"flex-center h-12 w-12\">\n        <i className={clsx(\"fe-angle-up transition-transform\", name !== value && \"rotate-180\")}></i>\n      </div>\n      <div className=\"flex flex-1 items-center\">{children}</div>\n    </button>\n  );\n}\n","import { ComponentProps, useEffect, useRef } from \"react\";\nimport { useAccordion } from \"./useAccordion\";\nimport clsx from \"clsx\";\n\ninterface Props extends ComponentProps<\"div\"> {\n  name: string;\n}\n\nexport function AccordionContent({ name, children, ...rest }: Props) {\n  const { value } = useAccordion();\n  const wrapperRef = useRef<HTMLDivElement>(null!);\n  const contentRef = useRef<HTMLDivElement>(null!);\n\n  const isOpen = value === name;\n\n  useEffect(() => {\n    const updateHeight = () => {\n      wrapperRef.current.style.setProperty(\n        \"--accordion-content-height\",\n        `${contentRef.current.scrollHeight}px`,\n      );\n    };\n\n    updateHeight();\n\n    const observer = new ResizeObserver(updateHeight);\n    observer.observe(contentRef.current);\n\n    return () => observer.disconnect();\n  }, []);\n\n  return (\n    <div\n      ref={wrapperRef}\n      className={clsx(\n        \"overflow-hidden transition-[height] ease-in-out\",\n        isOpen ? \"h-(--accordion-content-height)\" : \"h-0\",\n      )}\n      {...rest}\n    >\n      <div className=\"p-2\" ref={contentRef}>\n        {children}\n      </div>\n    </div>\n  );\n}\n"],"mappings":"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"}