// components/switch.tsx import clsx from 'clsx'; import { type HTMLAttributes, type ReactNode, useCallback, useState, } from 'react'; import * as styles from './index.css'; export type SwitchProps = Omit, 'onChange'> & { checked?: boolean; onChange?: (checked: boolean) => void; children?: ReactNode; }; export const Switch = ({ checked: checkedProp = false, onChange: onChangeProp, children, className, ...otherProps }: SwitchProps) => { const [checkedState, setCheckedState] = useState(checkedProp); const checked = onChangeProp ? checkedProp : checkedState; const onChange = useCallback( (event: React.ChangeEvent) => { const newChecked = event.target.checked; if (onChangeProp) onChangeProp(newChecked); else setCheckedState(newChecked); }, [onChangeProp] ); return ( ); };