{"version":3,"file":"AccordionTitle.cjs","sources":["../../../src/components/Accordion/AccordionTitle.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ComponentProps, FC } from \"react\";\nimport { get } from \"../../helpers/get\";\nimport { resolveProps } from \"../../helpers/resolve-props\";\nimport { useResolveTheme } from \"../../helpers/resolve-theme\";\nimport { twMerge } from \"../../helpers/tailwind-merge\";\nimport { useThemeProvider } from \"../../theme/provider\";\nimport type { FlowbiteBoolean, FlowbiteHeadingLevel, ThemingProps } from \"../../types\";\nimport { useAccordionContext } from \"./AccordionPanelContext\";\nimport { accordionTheme } from \"./theme\";\n\nexport interface AccordionTitleTheme {\n  arrow: {\n    base: string;\n    open: FlowbiteBoolean;\n  };\n  base: string;\n  flush: FlowbiteBoolean;\n  heading: string;\n  open: FlowbiteBoolean;\n}\n\nexport interface AccordionTitleProps extends ComponentProps<\"button\">, ThemingProps<AccordionTitleTheme> {\n  arrowIcon?: FC<ComponentProps<\"svg\">>;\n  as?: FlowbiteHeadingLevel;\n}\n\nexport function AccordionTitle(props: AccordionTitleProps) {\n  const { arrowIcon: ArrowIcon, flush, isOpen, setOpen } = useAccordionContext();\n  const onClick = () => typeof setOpen !== \"undefined\" && setOpen();\n\n  const provider = useThemeProvider();\n  const theme = useResolveTheme(\n    [accordionTheme.title, provider.theme?.accordion?.title, props.theme],\n    [get(provider.clearTheme, \"accordion.title\"), props.clearTheme],\n    [get(provider.applyTheme, \"accordion.title\"), props.applyTheme],\n  );\n\n  const { as: Heading = \"h2\", children, className, ...restProps } = resolveProps(props, provider.props?.accordionTitle);\n\n  return (\n    <button\n      className={twMerge(theme.base, theme.flush[flush ? \"on\" : \"off\"], theme.open[isOpen ? \"on\" : \"off\"], className)}\n      onClick={onClick}\n      type=\"button\"\n      {...restProps}\n    >\n      <Heading className={theme.heading} data-testid=\"flowbite-accordion-heading\">\n        {children}\n      </Heading>\n      {ArrowIcon && (\n        <ArrowIcon\n          aria-hidden\n          className={twMerge(theme.arrow.base, theme.arrow.open[isOpen ? \"on\" : \"off\"])}\n          data-testid=\"flowbite-accordion-arrow\"\n        />\n      )}\n    </button>\n  );\n}\n\nAccordionTitle.displayName = \"AccordionTitle\";\n"],"names":["useAccordionContext","provider","useThemeProvider","theme","useResolveTheme","accordionTheme","get","resolveProps","jsxs","twMerge","jsx"],"mappings":";;;;;;;;;;;AAUO,SAAS,cAAc,CAAC,KAAK,EAAE;AACtC,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,GAAGA,yCAAmB,EAAE;AAChF,EAAE,MAAM,OAAO,GAAG,MAAM,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,EAAE;AACnE,EAAE,MAAMC,UAAQ,GAAGC,yBAAgB,EAAE;AACrC,EAAE,MAAMC,OAAK,GAAGC,4BAAe;AAC/B,IAAI,CAACC,oBAAc,CAAC,KAAK,EAAEJ,UAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC;AACzE,IAAI,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;AACnE,IAAI,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,KAAK,CAAC,UAAU;AAClE,GAAG;AACH,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,GAAG,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,GAAGM,yBAAY,CAAC,KAAK,EAAEN,UAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;AACvH,EAAE,uBAAuBO,eAAI;AAC7B,IAAI,QAAQ;AACZ,IAAI;AACJ,MAAM,SAAS,EAAEC,qBAAO,CAACN,OAAK,CAAC,IAAI,EAAEA,OAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,EAAEA,OAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,EAAE,SAAS,CAAC;AACrH,MAAM,OAAO;AACb,MAAM,IAAI,EAAE,QAAQ;AACpB,MAAM,GAAG,SAAS;AAClB,MAAM,QAAQ,EAAE;AAChB,wBAAwBO,cAAG,CAAC,OAAO,EAAE,EAAE,SAAS,EAAEP,OAAK,CAAC,OAAO,EAAE,aAAa,EAAE,4BAA4B,EAAE,QAAQ,EAAE,CAAC;AACzH,QAAQ,SAAS,oBAAoBO,cAAG;AACxC,UAAU,SAAS;AACnB,UAAU;AACV,YAAY,aAAa,EAAE,IAAI;AAC/B,YAAY,SAAS,EAAED,qBAAO,CAACN,OAAK,CAAC,KAAK,CAAC,IAAI,EAAEA,OAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC,CAAC;AACzF,YAAY,aAAa,EAAE;AAC3B;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,cAAc,CAAC,WAAW,GAAG,gBAAgB;;;;"}