{"version":3,"file":"CheckboxIndicator.cjs","sources":["../../../../src/components/Checkbox/CheckboxIndicator/CheckboxIndicator.tsx"],"sourcesContent":["import {\n  Box,\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  getAutoContrastValue,\n  getContrastColor,\n  getRadius,\n  getSize,\n  getThemeColor,\n  parseThemeColor,\n  RaikouColor,\n  RaikouRadius,\n  RaikouSize,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../../core';\nimport { useCheckboxCardContext } from '../CheckboxCard/CheckboxCard.context';\nimport { CheckboxIcon } from '../CheckIcon';\nimport {\n  CheckboxIndicatorIconStyle,\n  CheckboxIndicatorIndicatorStyle,\n} from './CheckboxIndicator.css';\n\nexport type CheckboxIndicatorStylesNames = 'indicator' | 'icon';\nexport type CheckboxIndicatorVariant = 'filled' | 'outline';\nexport type CheckboxIndicatorCssVariables = {\n  indicator: '--checkbox-size' | '--checkbox-radius' | '--checkbox-color' | '--checkbox-icon-color';\n};\n\nexport interface CheckboxIndicatorProps\n  extends BoxProps,\n    StylesApiProps<CheckboxIndicatorFactory>,\n    ElementProps<'div'> {\n  /** Key of `theme.colors` or any valid CSS color to set input background color in checked state, `theme.primaryColor` by default */\n  color?: RaikouColor;\n\n  /** Controls size of the component, `'sm'` by default */\n  size?: RaikouSize | (string & {});\n\n  /** Key of `theme.radius` or any valid CSS value to set `border-radius,` `theme.defaultRadius` by default */\n  radius?: RaikouRadius;\n\n  /** Key of `theme.colors` or any valid CSS color to set icon color, by default value depends on `theme.autoContrast` */\n  iconColor?: RaikouColor;\n\n  /** Determines whether icon color with filled variant should depend on `background-color`. If luminosity of the `color` prop is less than `theme.luminosityThreshold`, then `theme.white` will be used for text color, otherwise `theme.black`. Overrides `theme.autoContrast`. */\n  autoContrast?: boolean;\n\n  /** Indeterminate state of the checkbox. If set, `checked` prop is ignored. */\n  indeterminate?: boolean;\n\n  /** Icon displayed when checkbox is in checked or indeterminate state */\n  icon?: React.FC<{ indeterminate: boolean | undefined; className: string }>;\n\n  /** Determines whether the component should have checked styles */\n  checked?: boolean;\n\n  /** Determines whether the component should have disabled styles */\n  disabled?: boolean;\n}\n\nexport type CheckboxIndicatorFactory = Factory<{\n  props: CheckboxIndicatorProps;\n  ref: HTMLDivElement;\n  stylesNames: CheckboxIndicatorStylesNames;\n  vars: CheckboxIndicatorCssVariables;\n  variant: CheckboxIndicatorVariant;\n}>;\n\nconst defaultProps: Partial<CheckboxIndicatorProps> = {\n  icon: CheckboxIcon,\n};\n\nconst varsResolver = createVarsResolver<CheckboxIndicatorFactory>(\n  (theme, { radius, color, size, iconColor, variant, autoContrast }) => {\n    const parsedColor = parseThemeColor({ color: color || theme.primaryColor, theme });\n    const outlineColor =\n      parsedColor.isThemeColor && parsedColor.shade === undefined\n        ? `var(--raikou-color-${parsedColor.color}-outline)`\n        : parsedColor.color;\n\n    return {\n      indicator: {\n        '--checkbox-size': getSize(size, 'checkbox-size'),\n        '--checkbox-radius': radius === undefined ? undefined : getRadius(radius),\n        '--checkbox-color': variant === 'outline' ? outlineColor : getThemeColor(color, theme),\n        '--checkbox-icon-color': iconColor\n          ? getThemeColor(iconColor, theme)\n          : getAutoContrastValue(autoContrast, theme)\n            ? getContrastColor({ color, theme, autoContrast })\n            : undefined,\n      },\n    };\n  }\n);\n\nexport const CheckboxIndicator = factory<CheckboxIndicatorFactory>((_props, ref) => {\n  const props = useProps('CheckboxIndicator', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    icon,\n    indeterminate,\n    radius,\n    color,\n    iconColor,\n    autoContrast,\n    checked,\n    mod,\n    variant,\n    disabled,\n    ...others\n  } = props;\n  const Icon = icon!;\n\n  const getStyles = useStyles<CheckboxIndicatorFactory>({\n    name: 'CheckboxIndicator',\n    classes: {\n      indicator: CheckboxIndicatorIndicatorStyle,\n      icon: CheckboxIndicatorIconStyle,\n    },\n    props,\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n    rootSelector: 'indicator',\n  });\n\n  const ctx = useCheckboxCardContext();\n  const _checked =\n    typeof checked === 'boolean' || typeof indeterminate === 'boolean'\n      ? checked || indeterminate\n      : ctx?.checked || false;\n\n  return (\n    <Box\n      ref={ref}\n      {...getStyles('indicator', { variant })}\n      variant={variant}\n      mod={[{ checked: _checked, disabled }, mod]}\n      {...others}\n    >\n      <Icon indeterminate={indeterminate} {...getStyles('icon')} />\n    </Box>\n  );\n});\n\nCheckboxIndicator.displayName = '@raikou/core/CheckboxIndicator';\n"],"names":["CheckboxIcon","createVarsResolver","parseThemeColor","getSize","getRadius","getThemeColor","getAutoContrastValue","getContrastColor","factory","useProps","useStyles","CheckboxIndicatorIndicatorStyle","CheckboxIndicatorIconStyle","useCheckboxCardContext","jsx","Box"],"mappings":"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"}