'use client'; import { RadioProps } from './radio.types'; import { RippleArea } from '../ripple/ripple-area'; import { forwardRef, useRef, useState } from 'react'; import useRippleEffect from '../ripple/hooks/useRippleEffect'; import { CheckBoxLayout } from '../checkbox-layout/check-box-layout'; import { bool, oneOf, string } from 'prop-types'; import { LabelPlacement } from '../checkbox-layout/checkbox-layout.types'; /** * Radio component ** description */ export const Radio = forwardRef( ({ centralRipple, children, labelPlacement = 'right', ...props }, ref) => { const [isActive, setIsActive] = useState(false), ripplesRef = useRef(null), events = useRippleEffect(ripplesRef, setIsActive); const classes = `m3 m3-radio ${isActive === true ? 'visible' : ''}`.trimEnd(); return (
{children && labelPlacement === 'left' && ( )} {children && labelPlacement === 'right' && ( )}
); }, ); Radio.propTypes = { children: string, centralRipple: bool, labelPlacement: oneOf(['left', 'right']), };