{"version":3,"file":"Accordion.cjs","sources":["../../../../src/components/Accordion/Accordion.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps, FC, ReactElement } from \"react\";\nimport { Children, cloneElement, useMemo, useState } from \"react\";\nimport { HiChevronDown } from \"react-icons/hi\";\nimport { twMerge } from \"tailwind-merge\";\nimport { mergeDeep } from \"../../helpers/merge-deep\";\nimport { getTheme } from \"../../theme-store\";\nimport type { DeepPartial } from \"../../types\";\nimport type { FlowbiteBoolean } from \"../Flowbite\";\nimport type { FlowbiteAccordionComponentTheme } from \"./AccordionContent\";\nimport { AccordionContent } from \"./AccordionContent\";\nimport type { AccordionPanelProps } from \"./AccordionPanel\";\nimport { AccordionPanel } from \"./AccordionPanel\";\nimport type { FlowbiteAccordionTitleTheme } from \"./AccordionTitle\";\nimport { AccordionTitle } from \"./AccordionTitle\";\n\nexport interface FlowbiteAccordionTheme {\n  root: FlowbiteAccordionRootTheme;\n  content: FlowbiteAccordionComponentTheme;\n  title: FlowbiteAccordionTitleTheme;\n}\n\nexport interface FlowbiteAccordionRootTheme {\n  base: string;\n  flush: FlowbiteBoolean;\n}\n\nexport interface AccordionProps extends ComponentProps<\"div\"> {\n  alwaysOpen?: boolean;\n  arrowIcon?: FC<ComponentProps<\"svg\">>;\n  children: ReactElement<AccordionPanelProps> | ReactElement<AccordionPanelProps>[];\n  flush?: boolean;\n  collapseAll?: boolean;\n  theme?: DeepPartial<FlowbiteAccordionTheme>;\n}\n\nconst AccordionComponent: FC<AccordionProps> = ({\n  alwaysOpen = false,\n  arrowIcon = HiChevronDown,\n  children,\n  flush = false,\n  collapseAll = false,\n  className,\n  theme: customTheme = {},\n  ...props\n}) => {\n  const [isOpen, setOpen] = useState(collapseAll ? -1 : 0);\n\n  const panels = useMemo(\n    () =>\n      Children.map(children, (child, i) =>\n        cloneElement(child, {\n          alwaysOpen,\n          arrowIcon,\n          flush,\n          isOpen: isOpen === i,\n          setOpen: () => setOpen(isOpen === i ? -1 : i),\n        }),\n      ),\n    [alwaysOpen, arrowIcon, children, flush, isOpen],\n  );\n\n  const theme = mergeDeep(getTheme().accordion.root, customTheme);\n\n  return (\n    <div\n      className={twMerge(theme.base, theme.flush[flush ? \"on\" : \"off\"], className)}\n      data-testid=\"flowbite-accordion\"\n      {...props}\n    >\n      {panels}\n    </div>\n  );\n};\n\nAccordionComponent.displayName = \"Accordion\";\nAccordionPanel.displayName = \"Accordion.Panel\";\nAccordionTitle.displayName = \"Accordion.Title\";\nAccordionContent.displayName = \"Accordion.Content\";\n\nexport const Accordion = Object.assign(AccordionComponent, {\n  Panel: AccordionPanel,\n  Title: AccordionTitle,\n  Content: AccordionContent,\n});\n"],"names":["HiChevronDown","useState","useMemo","Children","cloneElement","mergeDeep","getTheme","jsx","twMerge","AccordionPanel","AccordionTitle","AccordionContent"],"mappings":";;;;;;;;;;;;AAWA,MAAM,kBAAkB,GAAG,CAAC;AAC5B,EAAE,UAAU,GAAG,KAAK;AACpB,EAAE,SAAS,GAAGA,gBAAa;AAC3B,EAAE,QAAQ;AACV,EAAE,KAAK,GAAG,KAAK;AACf,EAAE,WAAW,GAAG,KAAK;AACrB,EAAE,SAAS;AACX,EAAE,KAAK,EAAE,WAAW,GAAG,EAAE;AACzB,EAAE,GAAG,KAAK;AACV,CAAC,KAAK;AACN,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAGC,cAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC3D,EAAE,MAAM,MAAM,GAAGC,aAAO;AACxB,IAAI,MAAMC,cAAQ,CAAC,GAAG;AACtB,MAAM,QAAQ;AACd,MAAM,CAAC,KAAK,EAAE,CAAC,KAAKC,kBAAY,CAAC,KAAK,EAAE;AACxC,QAAQ,UAAU;AAClB,QAAQ,SAAS;AACjB,QAAQ,KAAK;AACb,QAAQ,MAAM,EAAE,MAAM,KAAK,CAAC;AAC5B,QAAQ,OAAO,EAAE,MAAM,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AACrD,OAAO,CAAC;AACR,KAAK;AACL,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC;AACpD,GAAG,CAAC;AACJ,EAAE,MAAM,KAAK,GAAGC,mBAAS,CAACC,cAAQ,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAClE,EAAE,uBAAuBC,cAAG;AAC5B,IAAI,KAAK;AACT,IAAI;AACJ,MAAM,SAAS,EAAEC,qBAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,SAAS,CAAC;AAClF,MAAM,aAAa,EAAE,oBAAoB;AACzC,MAAM,GAAG,KAAK;AACd,MAAM,QAAQ,EAAE,MAAM;AACtB,KAAK;AACL,GAAG,CAAC;AACJ,CAAC,CAAC;AACF,kBAAkB,CAAC,WAAW,GAAG,WAAW,CAAC;AAC7CC,6BAAc,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAC/CC,6BAAc,CAAC,WAAW,GAAG,iBAAiB,CAAC;AAC/CC,iCAAgB,CAAC,WAAW,GAAG,mBAAmB,CAAC;AACvC,MAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE;AAC3D,EAAE,KAAK,EAAEF,6BAAc;AACvB,EAAE,KAAK,EAAEC,6BAAc;AACvB,EAAE,OAAO,EAAEC,iCAAgB;AAC3B,CAAC;;;;"}