{"version":3,"file":"checkbox.cjs","sources":["../../../src/components/checkbox.tsx"],"sourcesContent":["import React, {\n    forwardRef,\n    type HTMLAttributes,\n    type ReactElement,\n    useCallback,\n    useId,\n    useState,\n} from \"react\";\nimport { Typography } from \"./typography\";\nimport Info from \"../icons/info\";\nimport { type BaseInputWrapperProps, infoIconStyles } from \"./commons/input\";\nimport Tick from \"../icons/tick\";\nimport { mergedCva } from \"../utils/components\";\nimport { Popover } from \"./popover\";\n\nconst inputWrapperStyles = mergedCva([\"cui-flex\", \"cui-items-center\"], {\n    variants: {\n        hasLabel: {\n            true: [\"cui-gap-2\"],\n        },\n    },\n});\n\nconst checkmarkBackgroundStyles = mergedCva(\n    [\n        \"cui-relative\",\n        \"cui-w-5\",\n        \"cui-h-5\",\n        \"cui-cursor-pointer\",\n        \"cui-border\",\n        \"cui-rounded-md\",\n        \"cui-border-black\",\n        \"dark:cui-border-white\",\n        \"cui-transition-colors\",\n    ],\n    {\n        variants: {\n            checked: {\n                true: [\"cui-bg-orange\"],\n            },\n        },\n    },\n);\n\nconst checkmarkStyles = mergedCva(\n    [\n        \"cui-absolute\",\n        \"cui-top-0\",\n        \"cui-left-0\",\n        \"cui-w-full\",\n        \"cui-h-full\",\n        \"cui-text-black\",\n        \"dark:cui-text-white\",\n        \"cui-transition-opacity\",\n    ],\n    {\n        variants: {\n            checked: {\n                true: [\"cui-opacity-100\"],\n                false: [\"cui-opacity-0\"],\n            },\n        },\n    },\n);\n\nconst inputStyles = mergedCva([\n    \"cui-cursor-pointer\",\n    \"cui-absolute\",\n    \"cui-top-0\",\n    \"cui-left-0\",\n    \"cui-w-full\",\n    \"cui-h-full\",\n    \"cui-opacity-0\",\n]);\n\nconst labelStyles = mergedCva([\n    \"cui-flex\",\n    \"cui-items-center\",\n    \"cui-gap-1.5\",\n    \"cui-w-fit\",\n]);\n\nexport interface BaseCheckboxProps {\n    checked?: boolean;\n    id?: string;\n    className?: BaseInputWrapperProps[\"className\"] & {\n        checkboxinputWrapper?: string;\n        checkmark?: string;\n    };\n}\n\nexport type CheckboxProps = Omit<\n    HTMLAttributes<HTMLInputElement>,\n    \"type\" | \"className\" | \"id\" | keyof BaseCheckboxProps\n> &\n    BaseCheckboxProps &\n    Omit<BaseInputWrapperProps, \"id\" | \"loading\">;\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n    function Checkbox(\n        { id, label, className, checked, info, ...rest },\n        ref,\n    ): ReactElement {\n        const generatedId = useId();\n        const [infoIcon, setInfoIcon] = useState<HTMLDivElement | null>(null);\n        const [infoPopoverOpen, setInfoPopoverOpen] = useState(false);\n\n        const resolvedId = id || generatedId;\n\n        const handleInfoMouseEnter = useCallback(() => {\n            setInfoPopoverOpen(true);\n        }, []);\n\n        const handleInfoMouseExit = useCallback(() => {\n            setInfoPopoverOpen(false);\n        }, []);\n\n        return (\n            <div\n                className={inputWrapperStyles({\n                    hasLabel: !!label,\n                    className: className?.inputWrapper,\n                })}\n            >\n                <div\n                    className={checkmarkBackgroundStyles({\n                        checked,\n                        className: className?.checkboxinputWrapper,\n                    })}\n                >\n                    <Tick\n                        className={checkmarkStyles({\n                            checked,\n                            className: className?.checkmark,\n                        })}\n                    />\n                    <input\n                        type=\"checkbox\"\n                        ref={ref}\n                        checked={checked}\n                        {...rest}\n                        id={resolvedId}\n                        className={inputStyles({\n                            className: className?.input,\n                        })}\n                    />\n                </div>\n                <label\n                    className={labelStyles({ className: className?.label })}\n                    htmlFor={resolvedId}\n                >\n                    <Typography className={className?.labelText}>\n                        {label}\n                    </Typography>\n                    {info && (\n                        <>\n                            <div ref={setInfoIcon}>\n                                <Info\n                                    className={infoIconStyles({\n                                        className: className?.infoIcon,\n                                    })}\n                                    onMouseEnter={handleInfoMouseEnter}\n                                    onMouseLeave={handleInfoMouseExit}\n                                />\n                            </div>\n                            <Popover\n                                anchor={infoIcon}\n                                open={infoPopoverOpen}\n                                className={{\n                                    root: `cui-p-2 ${className?.infoPopover}`,\n                                }}\n                            >\n                                {info}\n                            </Popover>\n                        </>\n                    )}\n                </label>\n            </div>\n        );\n    },\n);\n"],"names":["mergedCva","forwardRef","Checkbox","info","useId","useState","useCallback","Tick","Typography","Info","infoIconStyles","Popover"],"mappings":"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"}