import type { ReactNode } from "react"; import React from "react"; import type { XOR } from "ts-xor"; interface BaseRadioOptionProps { /** * The value of the radio button. */ readonly value: string | number; /** * Disables the radio button. */ readonly disabled?: boolean; /** * Further description of the label. */ readonly description?: string; /** * The label to appear beside the radio button. */ readonly label?: string; /** * Render a custom label or additional content below the `label` * and `description`. * * Prefer using `label` and `description` over adding child elements if the * content of either would be a string. */ readonly children?: ReactNode; } interface WithRequiredChildren extends BaseRadioOptionProps { readonly children: ReactNode; } interface WithRequiredLabel extends BaseRadioOptionProps { readonly label: string; } export type RadioOptionProps = XOR; /** * For rendering props only. To make updates to * the real RadioOption, look at InternalRadioOption */ export declare function RadioOption({ children }: RadioOptionProps): React.JSX.Element; interface InternalRadioOptionProps extends BaseRadioOptionProps { readonly name: string; readonly checked: boolean; onChange(newValue: string | number): void; } export declare function InternalRadioOption({ value, name, label, description, disabled, checked, children, onChange, }: InternalRadioOptionProps): React.JSX.Element; export {};