'use client'; import { HTMLProps, useEffect, useRef } from 'react'; import { cn } from '@/lib/helper'; import { Size } from '@/types/theme'; interface CheckboxInputProps extends Omit, 'size'> { name: string; label?: string; indeterminate?: boolean; classNames?: { wrapper?: string; inputWrapper?: string; checkbox?: string; label?: string; }; isError?: boolean; isValid?: boolean; errorMessage?: string; size?: Size; } const CheckboxInput = ({ indeterminate, name, label, className, classNames, isValid, isError, errorMessage, size = 'sm', ...rest }: CheckboxInputProps) => { const ref = useRef(null!); const checkboxBaseClassName = cn('checkbox cursor-pointer rounded-md', { 'checkbox-xs': size === 'xs', 'checkbox-sm': size === 'sm', 'checkbox-md': size === 'md', 'checkbox-lg': size === 'lg', 'checkbox-xl': size === 'xl', }); useEffect(() => { if (typeof indeterminate === 'boolean') { ref.current.indeterminate = !rest.checked && indeterminate; } }, [ref, indeterminate]); return (
{label && ( )}
{errorMessage && {errorMessage}}
); }; export default CheckboxInput;