"use client"; import * as React from "react"; import { cn } from "../../lib/utils"; import { Check } from "lucide-react"; export interface CheckboxProps extends React.InputHTMLAttributes { checked?: boolean; onCheckedChange?: (checked: boolean) => void; } const Checkbox = React.forwardRef( ({ className, checked, onCheckedChange, ...props }, ref) => { const [isChecked, setIsChecked] = React.useState(checked || false); const [isAnimating, setIsAnimating] = React.useState(false); React.useEffect(() => { if (checked !== undefined) { setIsChecked(checked); setIsAnimating(true); // Reset animation state after transition completes const timer = setTimeout(() => { setIsAnimating(false); }, 300); return () => clearTimeout(timer); } }, [checked]); const handleChange = (event: React.ChangeEvent) => { const newChecked = event.target.checked; setIsChecked(newChecked); setIsAnimating(true); // Reset animation state after transition completes setTimeout(() => { setIsAnimating(false); }, 300); onCheckedChange?.(newChecked); props.onChange?.(event); }; return (
{isChecked && (
)}
); } ); Checkbox.displayName = "Checkbox"; export { Checkbox };