{"version":3,"file":"CheckboxCard.cjs","sources":["../../../../src/components/Checkbox/CheckboxCard/CheckboxCard.tsx"],"sourcesContent":["import { useUncontrolled } from '@raikou/hooks';\nimport {\n  BoxProps,\n  createVarsResolver,\n  ElementProps,\n  factory,\n  Factory,\n  getRadius,\n  RaikouRadius,\n  StylesApiProps,\n  useProps,\n  useStyles,\n} from '../../../core';\nimport { UnstyledButton } from '../../UnstyledButton';\nimport { useCheckboxGroupContext } from '../CheckboxGroup.context';\nimport { CheckboxCardProvider } from './CheckboxCard.context';\nimport { CheckboxCardStyle } from './CheckboxCard.css';\n\nexport type CheckboxCardStylesNames = 'card';\nexport type CheckboxCardCssVariables = {\n  card: '--card-radius';\n};\n\nexport interface CheckboxCardProps\n  extends BoxProps,\n    StylesApiProps<CheckboxCardFactory>,\n    ElementProps<'button', 'onChange'> {\n  /** Controlled component value */\n  checked?: boolean;\n\n  /** Uncontrolled component default value */\n  defaultChecked?: boolean;\n\n  /** Called when value changes */\n  onChange?: (checked: boolean) => void;\n\n  /** Determines whether the card should have border, `true` by default */\n  withBorder?: boolean;\n\n  /** Key of `theme.radius` or any valid CSS value to set `border-radius`, numbers are converted to rem, `theme.defaultRadius` by default */\n  radius?: RaikouRadius;\n\n  /** Value of the checkbox, used with `Checkbox.Group` */\n  value?: string;\n}\n\nexport type CheckboxCardFactory = Factory<{\n  props: CheckboxCardProps;\n  ref: HTMLButtonElement;\n  stylesNames: CheckboxCardStylesNames;\n  vars: CheckboxCardCssVariables;\n}>;\n\nconst defaultProps: Partial<CheckboxCardProps> = {\n  withBorder: true,\n};\n\nconst varsResolver = createVarsResolver<CheckboxCardFactory>((_, { radius }) => ({\n  card: {\n    '--card-radius': getRadius(radius),\n  },\n}));\n\nexport const CheckboxCard = factory<CheckboxCardFactory>((_props, ref) => {\n  const props = useProps('CheckboxCard', defaultProps, _props);\n  const {\n    classNames,\n    className,\n    style,\n    styles,\n    unstyled,\n    vars,\n    checked,\n    mod,\n    withBorder,\n    value,\n    onClick,\n    defaultChecked,\n    onChange,\n    ...others\n  } = props;\n\n  const getStyles = useStyles<CheckboxCardFactory>({\n    name: 'CheckboxCard',\n    classes: {\n      card: CheckboxCardStyle,\n    },\n    props,\n    className,\n    style,\n    classNames,\n    styles,\n    unstyled,\n    vars,\n    varsResolver,\n    rootSelector: 'card',\n  });\n\n  const ctx = useCheckboxGroupContext();\n  const _checked =\n    typeof checked === 'boolean' ? checked : ctx ? ctx.value.includes(value || '') : undefined;\n  const [_value, setValue] = useUncontrolled({\n    value: _checked,\n    defaultValue: defaultChecked,\n    finalValue: false,\n    onChange,\n  });\n\n  return (\n    <CheckboxCardProvider value={{ checked: _value }}>\n      <UnstyledButton\n        ref={ref}\n        mod={[{ 'with-border': withBorder, checked: _value }, mod]}\n        {...getStyles('card')}\n        {...others}\n        role=\"checkbox\"\n        aria-checked={_value}\n        onClick={(event) => {\n          onClick?.(event);\n          ctx?.onChange(value || '');\n          setValue(!_value);\n        }}\n      />\n    </CheckboxCardProvider>\n  );\n});\n\nCheckboxCard.displayName = '@raikou/core/CheckboxCard';\n"],"names":["createVarsResolver","getRadius","factory","useProps","useStyles","CheckboxCardStyle","useCheckboxGroupContext","useUncontrolled","CheckboxCardProvider","jsx","UnstyledButton"],"mappings":";;;;;;;;;;;;;;;;;;AAqDA,MAAM,YAA2C,GAAA;AAAA,EAC/C,UAAY,EAAA;AACd,CAAA;AAEA,MAAM,eAAeA,qCAAwC,CAAA,CAAC,CAAG,EAAA,EAAE,QAAc,MAAA;AAAA,EAC/E,IAAM,EAAA;AAAA,IACJ,eAAA,EAAiBC,kBAAU,MAAM;AAAA;AAErC,CAAE,CAAA,CAAA;AAEK,MAAM,YAAe,GAAAC,eAAA,CAA6B,CAAC,MAAA,EAAQ,GAAQ,KAAA;AACxE,EAAA,MAAM,KAAQ,GAAAC,iBAAA,CAAS,cAAgB,EAAA,YAAA,EAAc,MAAM,CAAA;AAC3D,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,OAAA;AAAA,IACA,GAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAG;AAAA,GACD,GAAA,KAAA;AAEJ,EAAA,MAAM,YAAYC,mBAA+B,CAAA;AAAA,IAC/C,IAAM,EAAA,cAAA;AAAA,IACN,OAAS,EAAA;AAAA,MACP,IAAM,EAAAC;AAAA,KACR;AAAA,IACA,KAAA;AAAA,IACA,SAAA;AAAA,IACA,KAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA;AAAA,IACA,QAAA;AAAA,IACA,IAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAc,EAAA;AAAA,GACf,CAAA;AAED,EAAA,MAAM,MAAMC,6CAAwB,EAAA;AACpC,EAAM,MAAA,QAAA,GACJ,OAAO,OAAA,KAAY,SAAY,GAAA,OAAA,GAAU,GAAM,GAAA,GAAA,CAAI,KAAM,CAAA,QAAA,CAAS,KAAS,IAAA,EAAE,CAAI,GAAA,KAAA,CAAA;AACnF,EAAA,MAAM,CAAC,MAAA,EAAQ,QAAQ,CAAA,GAAIC,qBAAgB,CAAA;AAAA,IACzC,KAAO,EAAA,QAAA;AAAA,IACP,YAAc,EAAA,cAAA;AAAA,IACd,UAAY,EAAA,KAAA;AAAA,IACZ;AAAA,GACD,CAAA;AAED,EAAA,sCACGC,yCAAqB,EAAA,EAAA,KAAA,EAAO,EAAE,OAAA,EAAS,QACtC,EAAA,QAAA,kBAAAC,cAAA;AAAA,IAACC,6BAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,GAAA,EAAK,CAAC,EAAE,aAAA,EAAe,YAAY,OAAS,EAAA,MAAA,IAAU,GAAG,CAAA;AAAA,MACxD,GAAG,UAAU,MAAM,CAAA;AAAA,MACnB,GAAG,MAAA;AAAA,MACJ,IAAK,EAAA,UAAA;AAAA,MACL,cAAc,EAAA,MAAA;AAAA,MACd,OAAA,EAAS,CAAC,KAAU,KAAA;AAClB,QAAA,OAAA,GAAU,KAAK,CAAA;AACf,QAAK,GAAA,EAAA,QAAA,CAAS,SAAS,EAAE,CAAA;AACzB,QAAA,QAAA,CAAS,CAAC,MAAM,CAAA;AAAA;AAClB;AAAA,GAEJ,EAAA,CAAA;AAEJ,CAAC;AAED,YAAA,CAAa,WAAc,GAAA,2BAAA;;;;"}