'use client'; import { bool } from 'prop-types'; import { CheckboxProps } from './checkbox.types'; import { RippleArea } from '../ripple/ripple-area'; import useRippleEffect from '../ripple/hooks/useRippleEffect'; import { CheckBoxLayout } from '../checkbox-layout/check-box-layout'; import { forwardRef, useEffect, useImperativeHandle, useRef, useState, } from 'react'; /** * Checkbox component ** description */ export const Checkbox = forwardRef( ({ centralRipple, ...props }, ref) => { const [isActive, setIsActive] = useState(false), [checked, setChecked] = useState(props.checked ?? false), ripplesRef = useRef(null), checkboxRef = useRef(null), events = useRippleEffect(ripplesRef, setIsActive); const classes = `m3 m3-checkbox-label ${isActive === true ? 'visible' : ''}`.trimEnd(); useImperativeHandle(ref, () => checkboxRef.current); useEffect(() => { setChecked(!checked); }, [checkboxRef.current?.checked]); return ( ); }, ); Checkbox.propTypes = { indeterminate: bool, centralRipple: bool, };