{"version":3,"file":"Pill.cjs","sources":["../../../src/components/Pill/Pill.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  getRadius,\n  getSize,\n  RaikouRadius,\n  RaikouSize,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../core';\nimport { CloseButton } from '../CloseButton';\nimport { usePillsInputContext } from '../PillsInput/PillsInput.context';\nimport { usePillGroupContext } from './PillGroup.context';\nimport { PillGroup } from './PillGroup/PillGroup';\nimport { PillLabelStyle, PillRemoveStyle, PillRootStyle } from './Pill.css';\n\nexport type PillStylesNames = 'root' | 'label' | 'remove';\nexport type PillVariant = 'default' | 'contrast';\nexport type PillCssVariables = {\n  root: '--pill-fz' | '--pill-radius' | '--pill-height';\n};\n\nexport interface PillProps extends BoxProps, StylesApiProps<PillFactory>, ElementProps<'div'> {\n  /** Controls pill `font-size` and `padding`, `'sm'` by default */\n  size?: RaikouSize;\n\n  /** Determines whether the remove button should be displayed, `false` by default */\n  withRemoveButton?: boolean;\n\n  /** Called when the remove button is clicked */\n  onRemove?: () => void;\n\n  /** Props passed down to the remove button */\n  removeButtonProps?: React.ComponentPropsWithoutRef<'button'>;\n\n  /** Key of `theme.radius` or any valid CSS value to set border-radius. Numbers are converted to rem. `'xl'` by default. */\n  radius?: RaikouRadius;\n\n  /** If pill is disabled it has higher contrast to be visible on the disabled input background and the remove button is hidden */\n  disabled?: boolean;\n}\n\nexport type PillFactory = Factory<{\n  props: PillProps;\n  ref: HTMLDivElement;\n  stylesNames: PillStylesNames;\n  vars: PillCssVariables;\n  variant: PillVariant;\n  ctx: { size: RaikouSize | (string & {}) | undefined };\n  staticComponents: {\n    Group: typeof PillGroup;\n  };\n}>;\n\nconst defaultProps: Partial<PillProps> = {\n  variant: 'default',\n};\n\nconst varsResolver = createVarsResolver<PillFactory>((_, { radius }, { size }) => ({\n  root: {\n    '--pill-fz': getSize(size, 'pill-fz'),\n    '--pill-height': getSize(size, 'pill-height'),\n    '--pill-radius': radius === undefined ? undefined : getRadius(radius),\n  },\n}));\n\nexport const Pill = factory<PillFactory>((_props, ref) => {\n  const props = useProps('Pill', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    variant,\n    children,\n    withRemoveButton,\n    onRemove,\n    removeButtonProps,\n    radius,\n    size,\n    disabled,\n    mod,\n    ...others\n  } = props;\n\n  const ctx = usePillGroupContext();\n  const pillsInputCtx = usePillsInputContext();\n  const _size = size || ctx?.size || undefined;\n  const _variant = pillsInputCtx?.variant === 'filled' ? 'contrast' : variant || 'default';\n\n  const getStyles = useStyles<PillFactory>({\n    name: 'Pill',\n    classes: {\n      root: PillRootStyle,\n      label: PillLabelStyle,\n      remove: PillRemoveStyle,\n    },\n    props,\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n    stylesCtx: { size: _size },\n  });\n\n  return (\n    <Box\n      component=\"span\"\n      ref={ref}\n      variant={_variant}\n      size={_size}\n      {...getStyles('root', { variant: _variant })}\n      mod={[\n        { 'with-remove': withRemoveButton && !disabled, disabled: disabled || ctx?.disabled },\n        mod,\n      ]}\n      {...others}\n    >\n      <span {...getStyles('label')}>{children}</span>\n      {withRemoveButton && (\n        <CloseButton\n          variant=\"transparent\"\n          radius={radius}\n          tabIndex={-1}\n          aria-hidden\n          unstyled={unstyled}\n          {...removeButtonProps}\n          {...getStyles('remove', {\n            className: removeButtonProps?.className,\n            style: removeButtonProps?.style,\n          })}\n          onMouseDown={(event) => {\n            event.preventDefault();\n            event.stopPropagation();\n            removeButtonProps?.onMouseDown?.(event);\n          }}\n          onClick={(event) => {\n            event.stopPropagation();\n            onRemove?.();\n            removeButtonProps?.onClick?.(event);\n          }}\n        />\n      )}\n    </Box>\n  );\n});\n\nPill.displayName = '@raikou/core/Pill';\nPill.Group = PillGroup;\n"],"names":["createVarsResolver","getSize","getRadius","factory","useProps","usePillGroupContext","usePillsInputContext","useStyles","PillRootStyle","PillLabelStyle","PillRemoveStyle","jsxs","Box","jsx","CloseButton","PillGroup"],"mappings":"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"}