import clsx from 'clsx'; import { useMemo } from 'react'; import { CheckboxCheckedIcon } from '../Icons'; import Label from './Label'; export interface CheckboxProps extends Omit, 'children' | 'title' | 'value' | 'onClick' > { label?: string disabled?: boolean tooltip?: string value: boolean setValue?: (newValue: boolean) => void } function Checkbox({ id, disabled, tooltip, label, className, value, setValue, ...restProps }: CheckboxProps) { const cursor = useMemo( () => { if (disabled) { return 'cursor-not-allowed'; } else if (setValue) { return 'cursor-pointer'; } else { return ''; } }, [disabled, setValue]); function handleClick(event: React.MouseEvent): void { event.preventDefault(); if (disabled || !setValue) { return; } setValue(!value); } return ( ); } export default Checkbox;