import { clsx } from 'clsx'; import { InputHTMLAttributes, forwardRef, useEffect, useImperativeHandle, useRef } from 'react'; import { useInputAttributes } from '../inputs/contexts'; export type CheckboxButtonProps = InputHTMLAttributes & { /** @default false */ indeterminate?: boolean; }; const CheckboxButton = forwardRef(function CheckboxButton( { checked, indeterminate = false, className, disabled, onChange, ...rest }, reference, ) { const inputAttributes = useInputAttributes(); const internalRef = useRef(null); useImperativeHandle(reference, () => internalRef.current ?? ({} as HTMLInputElement)); useEffect(() => { if (internalRef.current) { // eslint-disable-next-line functional/immutable-data internalRef.current.indeterminate = indeterminate; } }, [indeterminate, reference]); return ( ); }); export default CheckboxButton;