import { default as React, ChangeEvent, InputHTMLAttributes } from 'react'; import { RadioValue } from './RadioGroupContext'; /** * @figmaNode wXrXt5uKNNzV2DnQCgyYZH#15385-19720 * Figma "Radio" / `_BASE_Radiobutton` (circle 20px, 40px touch). Figma **Selected** (on/off) ← * `checked` (or the surrounding `StyledRadioGroup`); Figma **State** (Enabled/Hovered/Focused/ * Pressed/Error/Disabled/Read-only) ← native hover/focus + `error`/`disabled`/`readOnly`. Checked * ring + dot = `gama-500` #168181, unchecked border = `delta-500`, disabled = `delta-300`, * read-only = unchecked ring `delta-300` / checked ring+dot `delta-500` (node 35046-162573/162576). */ export type StyledRadioProps = { /** @figmaProp none — the group value this radio represents */ value?: RadioValue; /** @figmaProp none — test hook */ dataTest?: string; className?: string; /** @figmaProp none — app size (Figma circle is 20px) */ size?: 'small' | 'medium'; /** @figmaProp State = true→"Error" */ error?: boolean; /** @figmaProp State = true→"Read-only" (unchecked ring delta-300 / checked ring+dot delta-500) */ readOnly?: boolean; /** @figmaProp Selected = true→"on" | false→"off" */ checked?: boolean; onChange?: (event: ChangeEvent, checked: boolean) => void; /** * Renders the identical visual circle/dot (same classes/data-attrs — no visual change) with NO * real `` at all, for use as a pure state indicator inside a widget that already owns * selection itself (e.g. `StyledInteractiveChip`, whose `clickable` chip handles the click — this * radio is `pointer-events-none` there already). A real `` nested inside * that chip's `role="button"` is a genuine axe `nested-interactive` violation; see * `StyledCheckbox`'s identical `decorative` prop for the full rationale. */ decorative?: boolean; } & Omit, 'value' | 'className' | 'size' | 'checked' | 'onChange' | 'type'>; /** * Native `` (replaces `@base-ui/react`). Uses the surrounding * `StyledRadioGroup` context for name/selection when present, else the standalone `checked` prop. * SCSS module (ripple/pseudo-elements — GUD-003) is driven via `data-*` from React. TASK-201. */ export declare const StyledRadio: React.ForwardRefExoticComponent<{ /** @figmaProp none — the group value this radio represents */ value?: RadioValue; /** @figmaProp none — test hook */ dataTest?: string; className?: string; /** @figmaProp none — app size (Figma circle is 20px) */ size?: "small" | "medium"; /** @figmaProp State = true→"Error" */ error?: boolean; /** @figmaProp State = true→"Read-only" (unchecked ring delta-300 / checked ring+dot delta-500) */ readOnly?: boolean; /** @figmaProp Selected = true→"on" | false→"off" */ checked?: boolean; onChange?: (event: ChangeEvent, checked: boolean) => void; /** * Renders the identical visual circle/dot (same classes/data-attrs — no visual change) with NO * real `` at all, for use as a pure state indicator inside a widget that already owns * selection itself (e.g. `StyledInteractiveChip`, whose `clickable` chip handles the click — this * radio is `pointer-events-none` there already). A real `` nested inside * that chip's `role="button"` is a genuine axe `nested-interactive` violation; see * `StyledCheckbox`'s identical `decorative` prop for the full rationale. */ decorative?: boolean; } & Omit, "value" | "className" | "onChange" | "size" | "type" | "checked"> & React.RefAttributes>;