{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "radio-buttons", "type": "registry:ui", "title": "Radio Buttons", "description": "A radio buttons component that can be used to select one option from a set.", "files": [ { "path": "registry/tra-kit/components/radio-buttons.tsx", "content": "import React, { useContext, useMemo } from 'react';\r\n\r\ninterface IRadioButtonContext {\r\n selectedValue: string | number | undefined;\r\n setSelectedValue: React.Dispatch>;\r\n onChange?: (value: string | number | undefined) => void;\r\n}\r\n\r\nconst RadioButtonContext = React.createContext(undefined);\r\n\r\ninterface IRadioGroupItem {\r\n id: string;\r\n label?: string;\r\n disabled?: boolean;\r\n name?: string;\r\n value: string;\r\n className?: string;\r\n checked?: boolean;\r\n}\r\n\r\nexport const RadioGroupItem: React.FC = ({\r\n id,\r\n label,\r\n disabled = false,\r\n checked = false,\r\n name,\r\n value,\r\n className = '',\r\n}) => {\r\n const context = useContext(RadioButtonContext);\r\n if (!context) {\r\n throw new Error('RadioGroupItem component must be used within a RadioGroup component');\r\n }\r\n const { selectedValue, setSelectedValue, onChange } = context;\r\n return (\r\n
\r\n {\r\n setSelectedValue(value);\r\n if (onChange) {\r\n onChange(value);\r\n }\r\n }}\r\n className=\"peer hidden\"\r\n />\r\n \r\n
\r\n );\r\n};\r\n\r\ninterface IRadioGroup {\r\n children?: React.ReactNode;\r\n className?: string;\r\n defaultValue?: string | number;\r\n onChange?: (value: string | number | undefined) => void;\r\n}\r\n\r\nexport const RadioGroup: React.FC = ({\r\n children,\r\n className,\r\n defaultValue,\r\n onChange,\r\n}) => {\r\n const [selectedValue, setSelectedValue] = React.useState(\r\n defaultValue,\r\n );\r\n\r\n const value = useMemo(() => ({ selectedValue, setSelectedValue, onChange }), [selectedValue]);\r\n return (\r\n \r\n
{children}
\r\n
\r\n );\r\n};\r\n", "type": "registry:ui" } ] }