'use client'; import styles from '@components/Checkbox.module.css'; import * as React from 'react'; import * as Utilities from '@common/utilities'; interface CheckboxProps { style?: React.CSSProperties; checkboxStyle?: React.CSSProperties; name: string; defaultChecked?: boolean; onChange?: (event: React.ChangeEvent) => void; tabIndex?: number; children?: React.ReactNode; } const Checkbox: React.FC = ({ style, name, defaultChecked = false, onChange, children }) => { const checkboxId = `${name}-checkbox`; const inputRef = React.useRef(null); const [isChecked, setIsChecked] = React.useState(defaultChecked); const [isFocused, setIsFocused] = React.useState(false); const handleKeyDown = (event: React.KeyboardEvent) => { switch (event.key) { case 'Enter': event.preventDefault(); inputRef.current?.click(); break; case 'ArrowUp': case 'ArrowLeft': { event.preventDefault(); const previousFocusable = Utilities.findNextFocusable(document.activeElement, 'previous'); previousFocusable?.focus(); break; } case 'ArrowDown': case 'ArrowRight': { event.preventDefault(); const nextFocusable = Utilities.findNextFocusable(document.activeElement, 'next'); nextFocusable?.focus(); break; } default: break; } }; const handleChange = (event: React.ChangeEvent) => { const newCheckedStatus = event.target.checked; setIsChecked(newCheckedStatus); if (onChange) { onChange(event); } }; const handleFocus = () => setIsFocused(true); const handleBlur = () => setIsFocused(false); return (
  {children}
); }; export default Checkbox;