import React, { forwardRef, useEffect, useState } from 'react'; import { Container } from '@cleartrip/ct-design-container'; import type { ContainerRef } from '@cleartrip/ct-design-container'; import { Radio } from '@cleartrip/ct-design-radio'; import { Typography, TypographyVariant } from '@cleartrip/ct-design-typography'; import { makeStyles } from '@cleartrip/ct-design-style-manager'; import { IRadioGroup, IRadioOption } from './type'; const staticRadioGroupStyles = makeStyles((theme) => { return { root: { padding: theme?.spacing[2], }, heading: { display: 'flex', flexDirection: 'column', marginBottom: theme?.spacing[3], color: theme?.color.text.primary, }, radioContainer: { display: 'flex', flexDirection: 'column', marginBottom: theme?.spacing[3], }, }; }); const RadioGroup = forwardRef(({ radioList, heading, onClick, styleConfig }, ref) => { const [selectedRadioOption, setSelectedRadioOption] = useState(undefined); const { root: customRootStyles = [], heading: customHeadingStyles = [], radioContainer: customRadioContainerStyles = [], } = styleConfig || {}; useEffect(() => { const initialSelectedOption = radioList?.find((option) => option?.checked); setSelectedRadioOption(initialSelectedOption); }, [radioList]); const handleOptionClick = (selectedOption: IRadioOption) => { setSelectedRadioOption(selectedOption); onClick?.(selectedOption); }; return ( {!!heading && (typeof heading === 'string' ? ( {heading} ) : ( heading ))} {radioList?.map((radioOption: IRadioOption) => { return ( handleOptionClick(radioOption)} checked={radioOption?.id === selectedRadioOption?.id} /> ); })} ); }); RadioGroup.displayName = 'RadioGroup'; export default RadioGroup;