"use client"; import clsx from "clsx"; import { FC, createContext, useContext, useRef } from "react"; import { useFocusRing, useRadio, useRadioGroup } from "react-aria"; import { useRadioGroupState } from "react-stately"; import styles from "./radio.module.css"; const RadioContext = createContext(null); interface RadioGroupProps { label: string; name?: string; value: string | null; onChange?: (value: string | null) => void; required?: boolean; disabled?: boolean; } export const RadioGroup: FC> = ( props, ) => { const { children, label } = props; const state = useRadioGroupState({ ...props, isDisabled: props.disabled }); const { radioGroupProps, labelProps } = useRadioGroup(props, state); return (
{label || "Default Radio Example"} {children}
); }; interface RadioItemProps { value: string; label?: boolean; disabled?: boolean; } export const RadioItem: FC> = ( props, ) => { const { children } = props; const state = useContext(RadioContext); const ref = useRef(null); const { inputProps, isDisabled } = useRadio(props, state, ref); const { isFocusVisible, focusProps } = useFocusRing(); return ( ); };