/**
* RadioGroup — one choice from a set.
*
* The group owns the value and hands each item its selected state through
* context, so an item is a thin pressable that reports its own value up and
* reads selection back down.
*
* Two shapes, chosen on the group and inherited by every item: `dot` is the
* classic label-beside-a-disc row; `card` turns the whole surface into the
* target — for pickable options where the disc is a confirmation rather than
* the thing you aim at. The card is the same treatment `Checkbox` offers, so a
* form mixing single- and multi-select choices reads as one family.
*
* ```tsx
*
*
*
*
* ```
*/
import { type ReactNode } from 'react';
import { View, type ViewProps } from 'react-native';
type RadioVariant = 'dot' | 'card';
type RadioOrientation = 'vertical' | 'horizontal';
export interface RadioGroupProps extends ViewProps {
className?: string;
value?: string;
onValueChange: (value: string) => void;
disabled?: boolean;
/**
* `dot` is the label-beside-a-disc row. `card` makes the whole surface the
* target and highlights the selected option — for a plan picker or a
* settings choice where each option carries a description.
*/
variant?: RadioVariant;
/**
* `horizontal` lays the options out along a row that wraps — for two or
* three short choices, where a stacked list wastes the width and reads as
* longer than it is.
*/
orientation?: RadioOrientation;
children: ReactNode;
}
export interface RadioGroupItemProps {
className?: string;
value: string;
label?: string;
/** Secondary line under the label. Most at home in the `card` variant. */
description?: string;
disabled?: boolean;
/** Hide the disc entirely — for a card whose selected fill is enough. */
hideIndicator?: boolean;
children?: ReactNode;
}
export declare const RadioGroup: import("react").ForwardRefExoticComponent> & {
Item: import("react").ForwardRefExoticComponent>;
};
export type { RadioVariant };
//# sourceMappingURL=index.d.ts.map