import { forwardRef } from 'react'; import { Pressable, View } from 'react-native'; import { Container } from '@cleartrip/ct-design-container'; import { Typography, TypographyVariant } from '@cleartrip/ct-design-typography'; import { makeStyles, useNativeMergeStyles, useStyles } from '@cleartrip/ct-design-style-manager'; import { useTheme } from '@cleartrip/ct-design-theme'; import { getBorderStyles, getLabelColor } from './style'; import { IRadio } from './type'; const staticRadioStyles = makeStyles((theme) => ({ root: { display: 'flex', flexDirection: 'row', alignItems: 'center', gap: theme?.spacing[2], }, radioBtn: { width: theme?.spacing[5], height: theme?.spacing[5], borderRadius: theme?.border.radius[32], borderStyle: theme?.border.style.solid, }, })); const Radio = forwardRef( ( { id, label, labelCTA, labelVariant, onChange, disabled = false, checked = false, styleConfig, rootProps = {} }, ref, ) => { const theme = useTheme(); const radioBtnStyles = useStyles( (themeArg) => ({ root: getBorderStyles(themeArg, checked, disabled), }), [disabled, checked], ); const { root: customRootStyles = [], radioBtn: customRadioBtnStyles = [], labelContainer: customLabelContainerStyles = [], } = styleConfig || {}; const mergedRootStyles = useNativeMergeStyles([staticRadioStyles?.root, ...customRootStyles], [customRootStyles]); const handleOnRadioClick = () => { if (disabled) return; onChange?.(); }; return ( {typeof label === 'string' ? ( {label} ) : ( label )} {typeof labelCTA === 'string' ? ( {labelCTA} ) : ( labelCTA )} ); }, ); Radio.displayName = 'Radio'; export default Radio;