{"version":3,"sources":["../../../src/components/option-menu/index.ts","../../../src/components/option-menu/components/divider/index.tsx","../../../src/components/button/button.tsx","../../../src/utils/tv.ts","../../../src/components/button/button.styles.ts","../../../src/hooks/use-theme.ts","../../../src/components/theme-provider/theme-provider.tsx","../../../src/components/icon/utils/get-icon-color.ts","../../../src/components/icon/utils/get-icon-size.ts","../../../src/components/icon/icon.tsx","../../../src/components/button/components/button-icon.tsx","../../../src/components/refresh/utils/get-refresh-color.ts","../../../src/components/refresh/refresh.tsx","../../../src/components/button/components/button-refresh.tsx","../../../src/components/button/utils/is-icon-only.ts","../../../src/components/option-menu/components/footer/index.tsx","../../../src/components/option-menu/option-menu.tsx","../../../src/components/option-menu/components/group/index.tsx","../../../src/components/option-menu/components/item/index.tsx","../../../src/components/option-menu/components/item/index.styles.ts","../../../src/components/option-menu/components/list/index.tsx","../../../src/components/option-menu/utils/is-item-element.ts"],"sourcesContent":["export { OptionMenu } from './option-menu'\nexport type { OptionMenuProps } from './option-menu.types'\n","export const Divider = () => {\n  return (\n    <div className=\"x-full flex py-onepulse\" data-testid=\"separator\">\n      <div\n        className=\"flex-1 border-border-neutral border-hairline\"\n        data-testid=\"divider-line\"\n      />\n    </div>\n  )\n}\n","import { forwardRef } from 'react'\n\nimport { type Scope, createContextScope } from '@radix-ui/react-context'\n\nimport type { ButtonProps } from './button.types'\n\nimport { buttonVariants } from './button.styles'\n\nimport { ButtonIcon } from './components/button-icon'\nimport { ButtonRefresh } from './components/button-refresh'\n\nimport { isIconOnly } from './utils/is-icon-only'\n\ntype ButtonContext = Pick<ButtonProps, 'variant' | 'size' | 'disabled'>\n\nconst DISPLAY_NAME = 'Button'\n\nconst ButtonRoot = forwardRef<HTMLButtonElement, ButtonProps>(\n  (props: ScopedProps<ButtonProps>, ref) => {\n    const {\n      children,\n      variant = 'brand-primary',\n      size = 'ml',\n      loading = false,\n      disabled = false,\n      full,\n      className,\n      __scopeButton,\n    } = props\n\n    const isDisabled = loading || disabled\n\n    return (\n      <ButtonProvider\n        scope={__scopeButton}\n        variant={variant}\n        size={size}\n        disabled={disabled}\n      >\n        <button\n          {...props}\n          ref={ref}\n          className={buttonVariants({\n            variant,\n            size,\n            disabled,\n            full,\n            className,\n            asIconOnly: isIconOnly(children),\n          })}\n          disabled={isDisabled}\n          aria-disabled={disabled}\n        >\n          {loading ? <ButtonRefresh /> : children}\n        </button>\n      </ButtonProvider>\n    )\n  }\n)\n\nButtonRoot.displayName = DISPLAY_NAME\n\n/*\n----------------------------------------------------------------\nScope Definition\n----------------------------------------------------------------\n*/\n\nexport type ScopedProps<P> = P & {\n  __scopeButton?: Scope\n}\n\nconst [createButtonContext] = createContextScope(DISPLAY_NAME)\n\nexport const [ButtonProvider, useButtonContext]: readonly [\n  ProviderType<ButtonContext>,\n  (consumerName: string, scope: Scope) => ButtonContext,\n] = createButtonContext<ButtonContext>(DISPLAY_NAME)\n\n/*\n----------------------------------------------------------------\nComposition Export\n----------------------------------------------------------------\n*/\n\nexport const Button = {\n  Root: ButtonRoot,\n  Icon: ButtonIcon,\n}\n","import { type VariantProps, createTV } from 'tailwind-variants'\n\nexport const tv = createTV({\n  twMergeConfig: {\n    extend: {\n      classGroups: {\n        'font-size': [\n          {\n            text: ['threepulse', 'threeandhalfpulse'],\n          },\n        ],\n        'border-width': [\n          {\n            border: ['quarterpulse', 'halfpulse'],\n          },\n        ],\n        '--tw-ring-inset': [\n          {\n            ring: ['none', 'quarterpulse', 'halfpulse'],\n          },\n        ],\n      },\n    },\n  },\n})\n\nexport type { VariantProps }\n","import { tv } from '~/utils/tv'\n\nexport const buttonVariants = tv({\n  base: `\n    tracking inline-flex items-center justify-center gap-twopulse rounded-pill\n    border-quarterpulse border-[transparent] font-bold font-rdmodern text-threeandhalfpulse truncate`,\n  variants: {\n    variant: {\n      'brand-primary': `bg-action-fill-brand-primary-enabled text-text-neutral-inverse\n        enabled:active:bg-action-fill-brand-primary-pressed enabled:hover:bg-action-fill-brand-primary-hovered`,\n      'neutral-secondary': `border-action-border-neutral-secondary-enabled bg-action-fill-neutral-secondary-enabled text-text-neutral\n        enabled:active:border-action-border-neutral-secondary-pressed enabled:active:bg-action-fill-neutral-secondary-pressed enabled:hover:bg-action-fill-neutral-secondary-hovered`,\n      'neutral-tertiary': `border-action-border-neutral-tertiary-enabled bg-action-fill-neutral-tertiary-enabled text-text-neutral\n        enabled:active:bg-action-fill-neutral-tertiary-pressed enabled:hover:bg-action-fill-neutral-tertiary-hovered`,\n    },\n    size: {\n      md: 'h-medium min-w-medium px-fourpulse text-threepulse leading-medium',\n      ml: 'h-mediumlarge min-w-mediumlarge px-fourpulse leading-small',\n      lg: 'h-large min-w-large px-fivepulse leading-small',\n      xl: 'h-extralarge min-w-extralarge px-sixpulse leading-small',\n    },\n    disabled: {\n      true: 'cursor-not-allowed text-text-neutral-disabled outline-none',\n      false:\n        'outline-action-border-focused outline-offset-4 focus-visible:outline-1',\n    },\n    full: {\n      true: 'w-full',\n    },\n    asIconOnly: {\n      true: 'aspect-square px-none',\n    },\n  },\n  compoundVariants: [\n    {\n      variant: 'brand-primary',\n      disabled: true,\n      class:\n        'border-action-border-brand-primary-disabled bg-action-fill-brand-primary-disabled',\n    },\n    {\n      variant: 'neutral-secondary',\n      disabled: true,\n      class:\n        'border-action-border-neutral-secondary-disabled bg-action-fill-neutral-secondary-disabled',\n    },\n    {\n      variant: 'neutral-tertiary',\n      disabled: true,\n      class:\n        'border-action-fill-neutral-tertiary-disabled bg-action-fill-neutral-tertiary-enabled',\n    },\n  ],\n\n  defaultVariants: {\n    variant: 'brand-primary',\n    size: 'ml',\n  },\n})\n","import {\n  DROGASIL_TOKENS,\n  GLOBALS_TOKENS,\n  PRIME_TOKENS,\n  RAIA_TOKENS,\n  RDSAUDESISTEMAS_TOKENS,\n  SUBSCRIPTION_TOKENS,\n} from '@raiadrogasil/pulso-design-tokens'\n\nimport { useContext } from 'react'\n\nimport { ThemeContext } from '~/components/theme-provider/theme-provider'\n\nexport function useTheme() {\n  const { currentTheme } = useContext(ThemeContext)\n\n  const themes = {\n    rdsaudesistemas: RDSAUDESISTEMAS_TOKENS,\n    drogasil: DROGASIL_TOKENS,\n    raia: RAIA_TOKENS,\n    subscription: SUBSCRIPTION_TOKENS,\n    prime: PRIME_TOKENS,\n  }\n\n  return {\n    ...themes[currentTheme],\n    ...GLOBALS_TOKENS,\n  }\n}\n","import { createContext, useEffect } from 'react'\n\nimport type { Themes } from '@raiadrogasil/pulso-design-tokens'\n\ntype TThemeContextData = {\n  currentTheme: Themes\n}\n\ninterface IThemeProviderProps {\n  children: React.ReactNode\n  theme: Themes\n}\n\nexport const ThemeContext = createContext({} as TThemeContextData)\n\nexport function ThemeProvider({ children, theme }: IThemeProviderProps) {\n  useEffect(() => {\n    if (theme && document) {\n      document?.documentElement?.classList?.add(theme)\n    }\n\n    return () => {\n      document?.documentElement?.classList?.remove(theme)\n    }\n  }, [theme])\n\n  return (\n    <ThemeContext.Provider\n      value={{\n        currentTheme: theme,\n      }}\n    >\n      {children}\n    </ThemeContext.Provider>\n  )\n}\n","import type { TIconColors } from '../icon.types'\n\nimport { useTheme } from '~/hooks/use-theme'\n\nexport function getColorIcon(color: keyof TIconColors) {\n  const theme = useTheme()\n  const allTokens = Object.keys(theme)\n\n  const colorTokens = allTokens.reduce((acc, tokenKey) => {\n    if (tokenKey.includes('color')) {\n      const colorToken = tokenKey as keyof TIconColors\n      acc[colorToken] = theme[colorToken]\n    }\n\n    return acc\n  }, {} as TIconColors)\n\n  return colorTokens[color]\n}\n","export const getIconSize = {\n  tiny: 'var(--sizing-tiny)',\n  'extra-small': 'var(--sizing-extrasmall)',\n  small: 'var(--sizing-small)',\n  medium: 'var(--sizing-medium)',\n}\n","import type { TIconProps } from './icon.types'\n\nimport { getColorIcon } from './utils/get-icon-color'\nimport { getIconSize } from './utils/get-icon-size'\n\nexport function Icon({\n  symbol = 'rdicon-default',\n  size = 'small',\n  color = 'colorActionFillBrandPrimaryEnabled',\n  ...props\n}: TIconProps) {\n  const symbolName = symbol.replace('rdicon', '').trim()\n\n  return (\n    <i\n      {...props}\n      title={symbolName}\n      className={symbol}\n      style={{\n        fontSize: getIconSize[size],\n        color: getColorIcon(color),\n      }}\n    />\n  )\n}\n\nexport type { TIconProps }\n","import { type ScopedProps, useButtonContext } from '../button'\nimport type { ButtonSizes, ButtonVariants } from '../button.types'\n\nimport { Icon, type TIconProps } from '~/components/icon'\n\ntype ButtonIconProps = Pick<TIconProps, 'symbol'>\n\nexport function ButtonIcon(props: ButtonIconProps) {\n  const { __scopeButton, ...rest } = props as ScopedProps<ButtonIconProps>\n\n  const { variant, size, disabled } = useButtonContext(\n    'ButtonIcon',\n    __scopeButton\n  )\n\n  const iconColorMapper: Record<ButtonVariants, TIconProps['color']> = {\n    'brand-primary': 'colorTextNeutralInverse',\n    'neutral-secondary': 'colorTextNeutralDefault',\n    'neutral-tertiary': 'colorTextNeutralDefault',\n  } as const\n\n  const iconSizeMapper: Record<ButtonSizes, TIconProps['size']> = {\n    md: 'extra-small',\n    ml: 'small',\n    lg: 'small',\n    xl: 'small',\n  } as const\n\n  return (\n    <Icon\n      {...rest}\n      color={disabled ? 'colorTextNeutralDisabled' : iconColorMapper[variant!]}\n      size={iconSizeMapper[size!]}\n    />\n  )\n}\n","import { useTheme } from '~/hooks/use-theme'\n\nimport type { TRefreshColor } from '../refresh.types'\n\nexport function getRefreshColor(color: TRefreshColor) {\n  const theme = useTheme()\n\n  const colors = {\n    brand: theme.colorActionFillBrandPrimaryEnabled,\n    neutral: theme.colorTextNeutralReadonly,\n    black: theme.colorTextNeutralDefault,\n    white: theme.colorTextNeutralInverse,\n  } as Record<TRefreshColor, string>\n\n  return colors[color]\n}\n","import type { TRefreshProps } from './refresh.types'\n\nimport { getRefreshColor } from './utils/get-refresh-color'\n\nexport function Refresh({ color = 'brand', srText }: TRefreshProps) {\n  return (\n    <div\n      role=\"status\"\n      className=\"grid size-eightpulse place-items-center\"\n      aria-label={srText}\n    >\n      <svg className=\"size-sixpulse animate-spin fill-none\" viewBox=\"0 0 24 24\">\n        <path\n          fillRule=\"evenodd\"\n          d=\"M0 12c0 6.627 5.373 12 12 12s12-5.373 12-12S18.627 0 12 0v2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12H0z\"\n          clipRule=\"evenodd\"\n          fill={getRefreshColor(color)}\n        />\n\n        <title>{srText}</title>\n      </svg>\n    </div>\n  )\n}\n\nexport type { TRefreshProps }\n","import { type ScopedProps, useButtonContext } from '../button'\n\nimport { Refresh, type TRefreshProps } from '~/components/refresh'\nimport type { ButtonVariants } from '../button.types'\n\ntype ButtonRefreshProps = Pick<TRefreshProps, 'srText'>\n\nexport function ButtonRefresh(props: ButtonRefreshProps) {\n  const { __scopeButton, ...rest } = props as ScopedProps<ButtonRefreshProps>\n\n  const { variant } = useButtonContext('ButtonRefresh', __scopeButton)\n\n  const refreshColorMapper = {\n    'brand-primary': 'white',\n    'neutral-secondary': 'neutral',\n    'neutral-tertiary': 'black',\n  } as Record<ButtonVariants, TRefreshProps['color']>\n\n  return <Refresh {...rest} color={refreshColorMapper[variant!]} />\n}\n","import React from 'react'\n\nimport { ButtonIcon } from '../components/button-icon'\n\nexport function isIconOnly(children: React.ReactNode) {\n  if (React.Children.count(children) === 1 && React.isValidElement(children)) {\n    return children.type === ButtonIcon\n  }\n\n  return false\n}\n","import { Button } from '../../../button'\n\ntype OptionMenuFooterProps = {\n  controls: {\n    type: 'cancel' | 'confirm'\n    label: string\n    handler(): void\n  }[]\n  testID?: string\n}\n\nexport const Footer = ({ controls, testID }: OptionMenuFooterProps) => {\n  return (\n    <div\n      data-testid={testID}\n      className=\"x-full flex items-center gap-threepulse border-border-neutral border-t-hairline bg-fill-neutral p-threepulse \"\n    >\n      {controls.slice(0, 2).map((control, idx) => {\n        const btnVariant =\n          control.type === 'confirm' ? 'brand-primary' : 'neutral-tertiary'\n\n        return (\n          <Button.Root\n            size=\"lg\"\n            key={String(idx)}\n            variant={btnVariant}\n            onClick={control.handler}\n          >\n            {control.label}\n          </Button.Root>\n        )\n      })}\n    </div>\n  )\n}\n","import { Divider } from './components/divider'\nimport { Footer } from './components/footer'\nimport type { OptionMenuProps } from './option-menu.types'\n\nimport { type Scope, createContextScope } from '@radix-ui/react-context'\nimport React from 'react'\nimport { Group } from './components/group'\nimport { Item } from './components/item'\nimport { List } from './components/list'\n\ntype OptionMenuContext = Pick<OptionMenuProps, 'type'>\n\nconst DISPLAY_NAME = 'OptionMenu'\n\nconst Root = (props: OptionMenuProps) => {\n  const {\n    type,\n    children,\n    customEmptyMessage = 'Não foi encontrado nenhum resultado.',\n    testID,\n    __scopeOptionMenu,\n  } = props as ScopedProps<OptionMenuProps>\n\n  const renderChildren = React.Children.map(children, child => {\n    if (\n      React.isValidElement(child) &&\n      (child.type === List || child.type === Footer)\n    ) {\n      return child\n    }\n  })\n\n  return (\n    <OptionMenuProvider\n      scope={__scopeOptionMenu}\n      type={type}\n      data-testid={testID}\n    >\n      <div className=\"rounded-form border-border-neutral border-quarterpulse bg-fill-neutral py-onepulse \">\n        {React.Children.count(children) > 0 ? (\n          <div className=\"flex-grow\">{renderChildren}</div>\n        ) : (\n          <div className=\"flex items-start justify-center\">\n            <p className=\"tracking px-onepulse py-twopulse font-regular text-rdmodern text-text-neutral text-threeandhalfpulse leading-small\">\n              {customEmptyMessage}\n            </p>\n          </div>\n        )}\n      </div>\n    </OptionMenuProvider>\n  )\n}\n\n/*\n----------------------------------------------------------------\nScope Definition\n----------------------------------------------------------------\n*/\n\nexport type ScopedProps<P> = P & {\n  __scopeOptionMenu?: Scope\n}\n\nconst [createOptionMenuContext] = createContextScope(DISPLAY_NAME)\n\nexport const [OptionMenuProvider, useOptionMenuContext]: readonly [\n  ProviderType<OptionMenuContext>,\n  (consumerName: string, scope: Scope) => OptionMenuContext,\n] = createOptionMenuContext<OptionMenuContext>(DISPLAY_NAME)\n\n/*\n----------------------------------------------------------------\nComposition Export\n----------------------------------------------------------------\n*/\n\nexport const OptionMenu = {\n  Root,\n  Footer,\n  Divider,\n  Item,\n  List,\n  Group,\n}\n","import type React from 'react'\nimport { Divider } from '../divider'\n\ntype GroupProps = {\n  children: React.ReactNode\n  title?: string\n}\n\nexport function Group({ children, title }: GroupProps) {\n  const hasTitle = !!title?.length\n\n  return (\n    <div className=\"flex flex-col\">\n      <Divider />\n      <div className=\"px-fivepulse py-twopulse\">\n        {hasTitle && (\n          <h2 className=\"font-bold text-rdmodern text-text-neutral-readonly text-threeandhalfpulse leading-small\">\n            {title}\n          </h2>\n        )}\n      </div>\n      {children}\n    </div>\n  )\n}\n","import type { IconName } from '@raiadrogasil/pulso-icons'\nimport { useCallback, useState } from 'react'\nimport { Icon } from '~/components/icon'\nimport {\n  optionMenuItemButtonVariants,\n  optionMenuItemContainerVariants,\n} from './index.styles'\n\nexport interface ContentProps {\n  prefixIcon?: IconName\n  label: string\n  description?: string\n  value: string\n}\n\nexport interface ItemProps {\n  type?: 'single' | 'multi'\n  content: ContentProps\n  checked?: boolean\n  disabled?: boolean\n  testID?: string\n  onPress?: () => void\n}\n\nexport function Item({\n  type = 'multi',\n  content,\n  checked,\n  disabled,\n  testID,\n  onPress,\n}: ItemProps) {\n  const [hasPressed, setHasPressed] = useState(false)\n\n  const hasPrefixIcon = !!content.prefixIcon\n  const hasDescription = !!content.description\n\n  const handlePressIn = useCallback(() => setHasPressed(true), [])\n  const handlePressOut = useCallback(() => setHasPressed(false), [])\n\n  const truncateLabel = (label?: string) => {\n    const isPrefixIconWidth = hasPrefixIcon ? 23 : 25\n    if (label && label.length > isPrefixIconWidth) {\n      return `${label.substr(0, isPrefixIconWidth)}...`\n    }\n    return label\n  }\n\n  return (\n    <button\n      onMouseDown={handlePressIn}\n      onMouseUp={handlePressOut}\n      onClick={onPress}\n      data-testid={testID}\n      disabled={disabled}\n      type=\"button\"\n      className={optionMenuItemButtonVariants()}\n    >\n      <div className={optionMenuItemContainerVariants({ type })}>\n        {type === 'multi' && (\n          <div className=\"flex items-center p-onepulse\">\n            <Icon\n              symbol={\n                checked\n                  ? 'rdicon-checkbox-checked'\n                  : 'rdicon-checkbox-unchecked'\n              }\n              color={\n                disabled\n                  ? 'colorTextNeutralDisabled'\n                  : checked\n                    ? 'colorActionFillBrandPrimaryEnabled'\n                    : 'colorTextNeutralDefault'\n              }\n              size=\"small\"\n            />\n          </div>\n        )}\n\n        {hasPrefixIcon && (\n          <Icon\n            symbol={content.prefixIcon}\n            color={\n              disabled ? 'colorTextNeutralDisabled' : 'colorTextNeutralDefault'\n            }\n            size=\"small\"\n          />\n        )}\n\n        <div className=\"flex flex-1 flex-col items-start gap-halfpulse p-onepulse \">\n          <p\n            className={`tracking font-rdmodern font-regular text-threeandhalfpulse leading-small ${\n              disabled ? 'text-text-neutral-disabled' : 'text-text-neutral'\n            }`}\n          >\n            {content.label}\n          </p>\n          {hasDescription && (\n            <p\n              className={`tracking font-rdmodern font-regular text-threepulse leading-small ${\n                disabled\n                  ? 'text-text-neutral-disabled'\n                  : 'text-text-neutral-placeholder'\n              }`}\n            >\n              {truncateLabel(content.description)}\n            </p>\n          )}\n        </div>\n\n        {type === 'single' && checked && (\n          <Icon\n            symbol=\"rdicon-checkmark\"\n            color=\"colorTextSuccessAlternative\"\n            size=\"small\"\n          />\n        )}\n      </div>\n    </button>\n  )\n}\n","import { tv } from '~/utils/tv'\n\nexport const optionMenuItemContainerVariants = tv({\n  base: 'flex items-center space-x-2',\n  variants: {\n    type: {\n      single: 'px-twopulse py-onepulse',\n      multi: 'px-twopulse py-onepulse',\n    },\n  },\n})\n\nexport const optionMenuItemWrapperVariants = tv({\n  base: 'gap-onepulse p-onepulse',\n})\n\nexport const optionMenuItemButtonVariants = tv({\n  base: [\n    'bg-action-fill-neutral-tertiary-enabled',\n    'border-border-neutral-tertiary-enabled',\n    'border-none',\n    'duration-100 ease-in',\n\n    'focus:border-x-halfpulse',\n    'focus:border-y-halfpulse',\n    'focus:border-action-border-focused',\n    'focus:rounded-pill',\n\n    'hover:bg-action-fill-neutral-tertiary-hovered',\n    'hover:border-action-border-neutral-tertiary-hovered',\n    'hover:rounded-pill',\n\n    'disabled:cursor-not-allowed',\n    'disabled:bg-action-fill-neutral-tertiary-disabled',\n    'disabled:border-action-border-neutral-tertiary-disabled',\n    'disabled:border-none',\n\n    'active:bg-action-fill-neutral-tertiary-pressed',\n    'active:border-action-border-neutral-tertiary-pressed',\n    'active:rounded-pill',\n\n    'px-twopulse',\n    'py-onepulse',\n  ],\n})\n","import React from 'react'\nimport { useTheme } from '~/hooks/use-theme'\nimport { type ScopedProps, useOptionMenuContext } from '../../option-menu'\nimport { isItemElement } from '../../utils/is-item-element'\nimport { Divider } from '../divider'\nimport { Group } from '../group'\n\ntype ListProps = {\n  children: React.ReactNode\n  maxHeight?: number | string\n  testID?: string\n}\n\nconst SCOPE_ERROR_MESSAGE =\n  'Only Fragment, OptionMenu.Item and Group components are allowed as children of OptionMenu.List. Please remove or replace any other elements.'\n\nexport function List({ maxHeight = 480, ...props }: Readonly<ListProps>) {\n  const { __scopeOptionMenu, children, testID } =\n    props as ScopedProps<ListProps>\n  const theme = useTheme()\n  const { type } = useOptionMenuContext('OptionMenuList', __scopeOptionMenu)\n\n  let childItems: React.ReactNode[] = []\n\n  React.Children.forEach(children, child => {\n    if (!React.isValidElement(child)) return\n\n    if (child.type === React.Fragment) {\n      const fragmentChildren = child.props.children as React.ReactNode\n      childItems.push(fragmentChildren)\n      return\n    }\n\n    if (\n      isItemElement(child) ||\n      child.type === Group ||\n      child.type === Divider\n    ) {\n      childItems.push(child)\n    } else {\n      throw new Error(SCOPE_ERROR_MESSAGE)\n    }\n  })\n\n  childItems = childItems.map(child => {\n    if (isItemElement(child)) {\n      return React.cloneElement(child, {\n        key: (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1),\n        type,\n      })\n    }\n    return child\n  })\n\n  return (\n    <div\n      className={`flex max-h-[${maxHeight}px] flex-col overflow-y-scroll px-onepulse py-onepulse ${theme.spacingInlineOnepulse}`}\n      data-testid={testID}\n    >\n      {childItems}\n    </div>\n  )\n}\n","import React from 'react'\n\nimport { Item, type ItemProps } from '../components/item'\n\nexport function isItemElement(\n  element: React.ReactNode\n): element is React.ReactElement<ItemProps> {\n  return React.isValidElement(element) && element.type === Item\n}\n"],"mappings":"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","names":["option_menu_exports","__export","OptionMenu","__toCommonJS","import_jsx_runtime","Divider","import_react","import_react_context","import_tailwind_variants","tv","buttonVariants","tv","import_pulso_design_tokens","import_react","import_react","import_jsx_runtime","ThemeContext","useTheme","currentTheme","ThemeContext","__spreadValues","getColorIcon","color","theme","useTheme","acc","tokenKey","colorToken","getIconSize","import_jsx_runtime","Icon","_a","_b","symbol","size","color","props","__objRest","symbolName","__spreadProps","__spreadValues","getIconSize","getColorIcon","import_jsx_runtime","ButtonIcon","props","_a","__scopeButton","rest","__objRest","variant","size","disabled","useButtonContext","iconColorMapper","iconSizeMapper","Icon","__spreadProps","__spreadValues","getRefreshColor","color","theme","useTheme","import_jsx_runtime","Refresh","color","srText","getRefreshColor","import_jsx_runtime","ButtonRefresh","props","_a","__scopeButton","rest","__objRest","variant","useButtonContext","refreshColorMapper","Refresh","__spreadProps","__spreadValues","import_react","isIconOnly","children","React","ButtonIcon","import_jsx_runtime","DISPLAY_NAME","ButtonRoot","props","ref","children","variant","size","loading","disabled","full","className","__scopeButton","isDisabled","ButtonProvider","__spreadProps","__spreadValues","buttonVariants","isIconOnly","ButtonRefresh","createButtonContext","useButtonContext","Button","ButtonIcon","import_jsx_runtime","Footer","controls","testID","control","idx","btnVariant","Button","import_react_context","import_react","import_jsx_runtime","Group","children","title","hasTitle","Divider","import_react","optionMenuItemContainerVariants","tv","optionMenuItemWrapperVariants","optionMenuItemButtonVariants","import_jsx_runtime","Item","type","content","checked","disabled","testID","onPress","hasPressed","setHasPressed","hasPrefixIcon","hasDescription","handlePressIn","handlePressOut","truncateLabel","label","isPrefixIconWidth","optionMenuItemButtonVariants","optionMenuItemContainerVariants","Icon","import_react","import_react","isItemElement","element","React","Item","import_jsx_runtime","SCOPE_ERROR_MESSAGE","List","_a","_b","maxHeight","props","__objRest","__scopeOptionMenu","children","testID","theme","useTheme","type","useOptionMenuContext","childItems","React","child","fragmentChildren","isItemElement","Group","Divider","import_jsx_runtime","DISPLAY_NAME","Root","props","type","children","customEmptyMessage","testID","__scopeOptionMenu","renderChildren","React","child","List","Footer","OptionMenuProvider","createOptionMenuContext","useOptionMenuContext","OptionMenu","Divider","Item","Group"]}