import type { EventEmitter } from '../../stencil-public-runtime'; import type { RadioChangeDetail, RadioSize } from './mud-radio.types'; /** * Radio — single-select form input atom. * * Pattern B (atom-interactive, form-associated): renders its own * `` inside shadow DOM and paints the visual circle * with CSS. Form participation works via `formAssociated` + * `ElementInternals.setFormValue`. The component is the standalone radio * primitive; `mud-radio-group` groups radios into one Tab stop with * arrow-key selection and gives them one `name`. * * @element mud-radio * * @slot label - Rich label content, replaces the `label` prop when present. * @slot supporting-text - Rich supporting text, replaces the `supportingText` prop when present. */ export declare class MudRadio { /** * Visual size rung. * @default 'md' */ size: RadioSize; /** * Whether the radio is currently selected. * @default false */ checked: boolean; /** * Disables interactivity. The internal control receives `aria-disabled` and * the native `disabled` attribute. * @default false */ disabled: boolean; /** * Maps to Figma's "Error" state — border and selected dot turn red. * Sets `aria-invalid` on the internal control. * @default false */ invalid: boolean; /** * Marks the field as mandatory. Sets `aria-required` on the internal control. * @default false */ required: boolean; /** * Renders the control read-only. It remains focusable but cannot be toggled. * @default false */ readonly: boolean; /** Form-control `name`. Used during form submission and for grouping radios. */ name?: string; /** Value submitted with the form when this radio is checked. */ value?: string; /** * Visible label text, which also names the input. The `label` slot replaces it * for rich content. For an accessible name with no visible text, set the native * `aria-label` attribute instead. */ label?: string; /** * Visible supporting text below the label, wired to the input through * `aria-describedby`. The `supporting-text` slot replaces it for rich content. */ supportingText?: string; /** * Plain-text error message shown under the label and supporting text when * `invalid` is set (Figma radio-label Error, 585:35232). Linked to the * internal control through `aria-describedby`. */ errorText?: string; /** ID of the element labelling the radio. Used when label content lives outside the component. */ ariaLabelledby?: string; private hasLabelSlot; private hasSupportingTextSlot; private isFocused; private fieldsetDisabled; private resolvedAriaLabel?; private resolvedAriaLabelledby?; host: HTMLMudRadioElement; internals: ElementInternals; /** Fires whenever the checked state changes. `detail.checked` is the new state. */ mudChange: EventEmitter; /** Fires when the internal control gains focus. The native `FocusEvent` is forwarded as-is. */ mudFocus: EventEmitter; /** Fires when the internal control loses focus. The native `FocusEvent` is forwarded as-is. */ mudBlur: EventEmitter; private readonly instanceId; private readonly inputId; private readonly labelId; private readonly supportingId; private readonly errorId; private initialChecked; private stopAriaLabel?; validateSize(next: RadioSize): void; handleCheckedChange(next: boolean): void; handleValueChange(): void; syncAriaLabelledby(next?: string): void; connectedCallback(): void; disconnectedCallback(): void; componentWillLoad(): void; /** Mirrors `disabled` from an ancestor `
` without clobbering the consumer-set prop. */ formDisabledCallback(disabled: boolean): void; formResetCallback(): void; formStateRestoreCallback(state: string | File | FormData | null): void; private syncFormValue; private uncheckSiblings; private onLabelSlotChange; private onSupportingTextSlotChange; private slotHasContent; private handleChange; private handleClick; private handleFocus; private handleBlur; private isInert; private hasErrorMessage; render(): any; }