import { useMemo } from 'react'; import { CheckboxChecked, CheckboxNull } from '../Icons'; import { CheckboxProps } from './Checkbox'; import Label from './Label'; export interface TristateProps extends Omit { value: boolean | null setValue?: (newValue: boolean | null) => void } function Checkbox({ id, required, disabled, tooltip, label, widthClass = 'w-fit', value, setValue }: TristateProps) { const cursor = useMemo( () => { if (disabled) { return 'cursor-not-allowed'; } else if (setValue) { return 'cursor-pointer'; } else { return '' } }, [disabled, setValue]); const bgColor = useMemo( () => { return value !== false ? 'clr-primary' : 'clr-app' }, [value]); function handleClick(event: React.MouseEvent): void { event.preventDefault(); if (disabled || !setValue) { return; } if (value === false) { setValue(null); } else { setValue(!value); } } return ( ); } export default Checkbox;