{"version":3,"file":"Checkbox.cjs","sources":["../../../../src/components/forms/checkbox/Checkbox.tsx"],"sourcesContent":["import { Checkbox as BaseCheckbox } from '@base-ui/react/checkbox'\r\nimport { memo, useId, type FC } from 'react'\r\n\r\nimport { Icon } from '@components/foundation/icon'\r\nimport CheckIcon from '@resources/asset/CheckIcon.svg?react'\r\nimport MinusIcon from '@resources/asset/MinusIcon.svg?react'\r\nimport FormLabel from '@components/forms/_shared/components/form-label/FormLabel.tsx'\r\nimport { Flex } from '@components/layout/flex'\r\nimport { cn } from '@utils/cn.ts'\r\nimport { CHECKBOX_STYLES } from '@components/forms/checkbox/styles/Checkbox.css.ts'\r\nimport type { CheckboxProps } from '@components/forms/checkbox/types/Checkbox.props.ts'\r\n\r\n/**\r\n  * A styled checkbox control built on top of `@base-ui/react/checkbox`.\r\n  *\r\n  * Supports controlled (`checked` + `onCheckedChange`) and uncontrolled\r\n  * (`defaultChecked`) modes, plus an optional inline `label`.\r\n  *\r\n  * @example\r\n  * ```tsx\r\n  * <Checkbox label=\"Accept terms\" checked={accepted} onCheckedChange={setAccepted} />\r\n  * ```\r\n  */\r\nconst Checkbox: FC<CheckboxProps> = memo(({\r\n    label,\r\n    id,\r\n    className,\r\n    onCheckedChange,\r\n    'aria-labelledby': ariaLabelledby,\r\n    ...props\r\n}) => {\r\n    const generatedId = useId()\r\n    const labelId = useId()\r\n    const checkboxId = id ?? (label ? generatedId : undefined)\r\n\r\n    return (\r\n        <Flex\r\n            as={'span'}\r\n            inline\r\n            gap={'sm'}\r\n        >\r\n            <BaseCheckbox.Root\r\n                id={checkboxId}\r\n                className={cn(CHECKBOX_STYLES.root, className)}\r\n                onCheckedChange={onCheckedChange}\r\n                aria-labelledby={ariaLabelledby ?? (label ? labelId : undefined)}\r\n                {...props}\r\n            >\r\n                <BaseCheckbox.Indicator className={CHECKBOX_STYLES.indicator}>\r\n                    <Icon\r\n                        icon={CheckIcon}\r\n                        size={'xs'}\r\n                        className={CHECKBOX_STYLES.checkIcon}\r\n                    />\r\n                    <Icon\r\n                        icon={MinusIcon}\r\n                        size={'xs'}\r\n                        className={CHECKBOX_STYLES.indeterminateIcon}\r\n                    />\r\n                </BaseCheckbox.Indicator>\r\n            </BaseCheckbox.Root>\r\n\r\n            {label && (\r\n                <FormLabel\r\n                    id={labelId}\r\n                    className={CHECKBOX_STYLES.label}\r\n                >\r\n                    {label}\r\n                </FormLabel>\r\n            )}\r\n        </Flex>\r\n    )\r\n})\r\n\r\nCheckbox.displayName = 'Checkbox'\r\n\r\nexport default Checkbox\r\n"],"names":["Checkbox","memo","label","id","className","onCheckedChange","ariaLabelledby","props","generatedId","useId","labelId","checkboxId","jsxs","Flex","jsx","BaseCheckbox","cn","CHECKBOX_STYLES","Icon","CheckIcon","MinusIcon","FormLabel"],"mappings":"siBAuBMA,EAA8BC,EAAAA,KAAK,CAAC,CACtC,MAAAC,EACA,GAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,kBAAmBC,EACnB,GAAGC,CACP,IAAM,CACF,MAAMC,EAAcC,EAAAA,MAAA,EACdC,EAAUD,EAAAA,MAAA,EACVE,EAAaR,IAAOD,EAAQM,EAAc,QAEhD,OACII,EAAAA,KAACC,EAAA,CACG,GAAI,OACJ,OAAM,GACN,IAAK,KAEL,SAAA,CAAAC,EAAAA,IAACC,EAAAA,SAAa,KAAb,CACG,GAAIJ,EACJ,UAAWK,EAAAA,GAAGC,kBAAgB,KAAMb,CAAS,EAC7C,gBAAAC,EACA,kBAAiBC,IAAmBJ,EAAQQ,EAAU,QACrD,GAAGH,EAEJ,gBAACQ,EAAAA,SAAa,UAAb,CAAuB,UAAWE,EAAAA,gBAAgB,UAC/C,SAAA,CAAAH,EAAAA,IAACI,EAAA,CACG,KAAMC,EACN,KAAM,KACN,UAAWF,EAAAA,gBAAgB,SAAA,CAAA,EAE/BH,EAAAA,IAACI,EAAA,CACG,KAAME,EACN,KAAM,KACN,UAAWH,EAAAA,gBAAgB,iBAAA,CAAA,CAC/B,CAAA,CACJ,CAAA,CAAA,EAGHf,GACGY,EAAAA,IAACO,EAAA,CACG,GAAIX,EACJ,UAAWO,EAAAA,gBAAgB,MAE1B,SAAAf,CAAA,CAAA,CACL,CAAA,CAAA,CAIhB,CAAC,EAEDF,EAAS,YAAc"}