import { cn } from "@core/utils/cn.ts"; import { Check } from "lucide-react"; import { useId, useState } from "react"; interface CheckboxProps { checked?: boolean; defaultChecked?: boolean; onChange?: (checked: boolean) => void; className?: string; labelClassName?: string; id?: string; children?: React.ReactNode; disabled?: boolean; required?: boolean; name?: string; } export function Checkbox({ checked, defaultChecked = false, onChange, className, id: propId, children, disabled = false, required = false, name, ...rest }: CheckboxProps) { const generatedId = useId(); const id = propId || generatedId; const isControlled = checked !== undefined; const [internal, setInternal] = useState(defaultChecked); const value = checked ?? internal; const handleToggle = (e: React.ChangeEvent) => { if (disabled) { return; } const next = e.target.checked; if (!isControlled) { setInternal(next); } onChange?.(next); }; return ( ); }