import { ClassValue, HTMLComponentProps, StyledComponentProps, ThemeColor } from "../../types/shared.js"; import { RadioSlots } from "./radio-variants.js"; import { ReactNode } from "react"; import { RadioGroupIndicatorProps, RadioGroupItemProps, RadioGroupProps } from "@radix-ui/react-radio-group"; //#region src/components/radio/types.d.ts /** * Class names for different slots in the radio component. * Allows customizing styles for specific parts of the radio button and group. */ type RadioClassNames = Partial>; /** * Props for the individual radio button component. * Extends the base radio group item with additional styling and label support. * * @example * ```tsx * * ``` */ interface RadioProps extends RadioGroupItemProps$1 { /** * Class names for customizing specific parts of the radio button * (control, indicator, label, and root container). */ classNames?: Pick; /** * Label text or element displayed next to the radio button. */ label?: ReactNode; } /** * Props for the radio group component containing multiple radio options. * Manages the group selection state and renders multiple radio items. * * @example * ```tsx * * ``` */ interface RadioGroupProps$1 extends StyledComponentProps { /** * Class names for customizing different parts of the radio group and its items. */ classNames?: RadioClassNames; /** * Theme color applied to all radio buttons in the group. * Affects the radio control and indicator colors. */ color?: ThemeColor; /** * Array of radio items to render in the group. * Each item configuration is passed to individual Radio components. */ items: Omit[]; } /** * Props for the radio group item component. * Represents a single selectable radio button within a group. */ interface RadioGroupItemProps$1 extends StyledComponentProps { /** * Theme color for this specific radio item. * Overrides the group-level color if specified. */ color?: ThemeColor; } /** * Props for the radio indicator component. * The visual indicator element shown inside the radio control when selected. */ interface RadioIndicatorProps extends StyledComponentProps { /** * Theme color for the radio indicator element. * Determines the fill color of the indicator dot. */ color?: ThemeColor; } /** * Props for the radio root container component. * Provides a styled div wrapper for radio buttons with custom HTML attributes. */ interface RadioRootProps extends HTMLComponentProps<'div'> {} //#endregion export { RadioClassNames, RadioGroupItemProps$1 as RadioGroupItemProps, RadioGroupProps$1 as RadioGroupProps, RadioIndicatorProps, RadioProps, RadioRootProps };