{"version":3,"file":"DropdownItem.cjs","sources":["../../../src/components/Dropdown/DropdownItem.tsx"],"sourcesContent":["\"use client\";\n\nimport { useListItem, useMergeRefs } from \"@floating-ui/react\";\nimport { forwardRef, type ComponentProps, type ElementType, type FC, type RefCallback } from \"react\";\nimport type { PolymorphicComponentPropWithRef, PolymorphicRef } from \"../../helpers/generic-as-prop\";\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 { ThemingProps } from \"../../types\";\nimport { ButtonBase } from \"../Button/ButtonBase\";\nimport { useDropdownContext } from \"./DropdownContext\";\nimport { dropdownTheme } from \"./theme\";\n\nexport interface DropdownItemTheme {\n  container: string;\n  base: string;\n  icon: string;\n}\n\nexport type DropdownItemProps<T extends ElementType = \"button\"> = PolymorphicComponentPropWithRef<\n  T,\n  {\n    href?: string;\n    icon?: FC<ComponentProps<\"svg\">>;\n    onClick?: () => void;\n  }\n> &\n  ThemingProps<DropdownItemTheme>;\n\ntype DropdownItemType = (<C extends ElementType = \"button\">(props: DropdownItemProps<C>) => JSX.Element) & {\n  displayName?: string;\n};\n\nexport const DropdownItem = forwardRef(\n  <T extends ElementType = \"button\">(props: DropdownItemProps<T>, forwardedRef: PolymorphicRef<T>) => {\n    const {\n      theme: rootTheme,\n      clearTheme: rootClearTheme,\n      applyTheme: rootApplyTheme,\n      activeIndex,\n      dismissOnClick,\n      getItemProps,\n      handleSelect,\n    } = useDropdownContext();\n\n    const provider = useThemeProvider();\n    const theme = useResolveTheme(\n      [dropdownTheme.floating.item, provider.theme?.dropdown?.floating?.item, rootTheme?.floating?.item, props.theme],\n      [get(provider.clearTheme, \"dropdown.floating.item\"), get(rootClearTheme, \"floating.item\"), props.clearTheme],\n      [get(provider.applyTheme, \"dropdown.floating.item\"), get(rootApplyTheme, \"floating.item\"), props.applyTheme],\n    );\n\n    const {\n      children,\n      className,\n      icon: Icon,\n      onClick,\n      ...restProps\n    } = resolveProps(props, provider.props?.dropdownItem);\n\n    const { ref: listItemRef, index } = useListItem({ label: typeof children === \"string\" ? children : undefined });\n    const ref = useMergeRefs([forwardedRef, listItemRef]);\n    const isActive = activeIndex === index;\n\n    return (\n      <li role=\"menuitem\" className={theme.container}>\n        <ButtonBase\n          ref={ref as RefCallback<T>}\n          className={twMerge(theme.base, className)}\n          {...restProps}\n          {...getItemProps({\n            onClick: () => {\n              onClick?.();\n              dismissOnClick && handleSelect(null);\n            },\n          })}\n          tabIndex={isActive ? 0 : -1}\n        >\n          {Icon && <Icon className={theme.icon} />}\n          {children}\n        </ButtonBase>\n      </li>\n    );\n  },\n) as DropdownItemType;\n\nDropdownItem.displayName = \"DropdownItem\";\n"],"names":["forwardRef","useDropdownContext","provider","useThemeProvider","theme","useResolveTheme","dropdownTheme","get","resolveProps","useListItem","useMergeRefs","jsx","jsxs","ButtonBase","twMerge"],"mappings":";;;;;;;;;;;;;;AAaY,MAAC,YAAY,GAAGA,gBAAU;AACtC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK;AAC3B,IAAI,MAAM;AACV,MAAM,KAAK,EAAE,SAAS;AACtB,MAAM,UAAU,EAAE,cAAc;AAChC,MAAM,UAAU,EAAE,cAAc;AAChC,MAAM,WAAW;AACjB,MAAM,cAAc;AACpB,MAAM,YAAY;AAClB,MAAM;AACN,KAAK,GAAGC,kCAAkB,EAAE;AAC5B,IAAI,MAAMC,UAAQ,GAAGC,yBAAgB,EAAE;AACvC,IAAI,MAAMC,OAAK,GAAGC,4BAAe;AACjC,MAAM,CAACC,mBAAa,CAAC,QAAQ,CAAC,IAAI,EAAEJ,UAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC;AACrH,MAAM,CAACK,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC,EAAEK,OAAG,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC;AAClH,MAAM,CAACA,OAAG,CAACL,UAAQ,CAAC,UAAU,EAAE,wBAAwB,CAAC,EAAEK,OAAG,CAAC,cAAc,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,UAAU;AACjH,KAAK;AACL,IAAI,MAAM;AACV,MAAM,QAAQ;AACd,MAAM,SAAS;AACf,MAAM,IAAI,EAAE,IAAI;AAChB,MAAM,OAAO;AACb,MAAM,GAAG;AACT,KAAK,GAAGC,yBAAY,CAAC,KAAK,EAAEN,UAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;AACzD,IAAI,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,GAAGO,iBAAW,CAAC,EAAE,KAAK,EAAE,OAAO,QAAQ,KAAK,QAAQ,GAAG,QAAQ,GAAG,MAAM,EAAE,CAAC;AAChH,IAAI,MAAM,GAAG,GAAGC,kBAAY,CAAC,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACzD,IAAI,MAAM,QAAQ,GAAG,WAAW,KAAK,KAAK;AAC1C,IAAI,uBAAuBC,cAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAEP,OAAK,CAAC,SAAS,EAAE,QAAQ,kBAAkBQ,eAAI;AACnH,MAAMC,qBAAU;AAChB,MAAM;AACN,QAAQ,GAAG;AACX,QAAQ,SAAS,EAAEC,qBAAO,CAACV,OAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AACjD,QAAQ,GAAG,SAAS;AACpB,QAAQ,GAAG,YAAY,CAAC;AACxB,UAAU,OAAO,EAAE,MAAM;AACzB,YAAY,OAAO,IAAI;AACvB,YAAY,cAAc,IAAI,YAAY,CAAC,IAAI,CAAC;AAChD,UAAU;AACV,SAAS,CAAC;AACV,QAAQ,QAAQ,EAAE,QAAQ,GAAG,CAAC,GAAG,EAAE;AACnC,QAAQ,QAAQ,EAAE;AAClB,UAAU,IAAI,oBAAoBO,cAAG,CAAC,IAAI,EAAE,EAAE,SAAS,EAAEP,OAAK,CAAC,IAAI,EAAE,CAAC;AACtE,UAAU;AACV;AACA;AACA,KAAK,EAAE,CAAC;AACR,EAAE;AACF;AACA,YAAY,CAAC,WAAW,GAAG,cAAc;;;;"}