import React, { useState, useCallback, useEffect, JSX } from 'react'; import classNames from 'classnames'; import CheckmarkIcon from '@moda/icons/checkmark-16'; import CircleIcon from '@moda/icons/circle-12'; import './Checkbox.scss'; const CHECKED_ITEM_PROPS = { className: 'Checkbox__check-mark', height: '85%', width: '85%' }; export type ShowCheckedUsing = 'checkmark' | 'circle'; export type CheckboxProps = React.InputHTMLAttributes & { children?: JSX.Element | string; checkIcon?: ShowCheckedUsing; dataTestId?: string; }; export const Checkbox: React.FC = ({ className, defaultChecked, checked, children, value, onChange, disabled, checkIcon = 'checkmark', dataTestId, id, ...rest }) => { const [isChecked, setIsChecked] = useState(checked ?? defaultChecked ?? false); useEffect(() => { if (typeof checked !== 'undefined') setIsChecked(checked); }, [checked]); const handleChange = useCallback( (event: React.ChangeEvent) => { if (typeof checked === 'undefined') setIsChecked(event.currentTarget.checked); onChange?.(event); }, [onChange, checked] ); return ( ); };