import{type PropertyValues,type TemplateResult}from'lit';import{LyraElement}from'../../../internal/lyra-element.js';import type{LyraSize}from'../../../internal/variants.js';import type{LyraOrientation}from'../../../internal/shared-unions.js';import type{LyraRadio}from'./radio.class.js';import{type FormOwnerValue}from'../../../internal/form-associated.js';import{type LyraFormValidator}from'../form-validator.js';export interface LyraRadioGroupEventMap{input:InputEvent;change:Event;'lr-input':CustomEvent<{value:string;radio:LyraRadio;}>;'lr-change':CustomEvent<{value:string;radio:LyraRadio;}>;'lr-invalid':CustomEvent;}export type RadioGroupOrientation=LyraOrientation; /** * `` — a labeled, keyboard-navigable group of radios. * A required but pristine group exposes `aria-invalid="false"`; intrinsic invalidity is projected * to the radiogroup only after user interaction (selecting a radio, blurring the group) or * interactive validation (`reportValidity()`, or a submission attempt), while explicit error * chrome remains immediate. `checkValidity()` alone is a silent query and never marks a pristine * group interacted. * * Host `aria-describedby` references resolve onto the internal radiogroup before local hint/error * guidance. References track target replacement/removal, reconnect and document adoption. * * @customElement lr-radio-group * @slot - Radio controls. * @slot label - Visible group label. * @slot hint - Supporting text. * @slot help-text - Shoelace alias for `hint`. * @slot error - Validation text. * @event {InputEvent} input - Native event fired from the group when its selected value changes. * @event {Event} change - Native event fired after `input` for the same group selection. * @event lr-input - Prefixed alias for `input`; `detail: { value, radio }`. * @event lr-change - A radio was selected. `detail: { value, radio }`. * @event lr-invalid - The group's owned validity control failed a validity check. Cancelable: * calling `preventDefault()` also cancels the native `invalid` event behind it, suppressing the * browser's own validation bubble so an app can present the failure its own way. * @cssstate required - Matches while `required` is set. * @cssstate optional - Matches while `required` is not set. * @cssstate valid - Matches while the aggregate value satisfies every constraint. * @cssstate invalid - Matches while the aggregate value fails a constraint. * @cssstate user-valid - Matches `valid` after user interaction (selecting a radio, blurring the * group) or interactive validation (`reportValidity()`, or a submission attempt); not after a * silent `checkValidity()` alone. * @cssstate user-invalid - Matches `invalid` after that same interaction or interactive validation; * not after a silent `checkValidity()` alone. * @csspart base - The radiogroup wrapper. * @csspart form-control - Mapped form-control wrapper. * @csspart label - The group label. * @csspart form-control-label - Mapped name on the same group label. * @csspart radios - WA option collection. * @csspart form-control-input - Mapped name on the same option collection. * @csspart button-group - Shoelace segmented-option collection alias. * @csspart button-group__base - Shoelace alias on the same collection. * @csspart hint - Supporting text. * @csspart form-control-help-text - Shoelace name on the same supporting text. * @csspart error - Validation text. * @cssprop [--lr-radio-group-row-gap=calc(var(--lr-form-control-height) * 0.2)] - Vertical gap * between the group's label, options and messages, scaled by `size`. * @cssprop [--lr-form-control-required-content=' *'] - The required marker appended to * `form-control-label` while `required` is set. Set it to `''` to suppress the marker, or to any * other quoted string (`' (required)'`, a localized word) to replace it. * @cssprop [--lr-form-control-required-color=var(--lr-color-danger)] - Required-marker color, * themeable independently of error text and invalid borders. * @cssprop [--lr-form-control-required-offset=0] - Inline space between the label text and the * required marker. * @status stable * @since 4.0.0 */ export declare class LyraRadioGroup extends LyraElement{protected static readonly immutableEventDetails:readonly string[];protected static readonly identityEventDetailProperties:Readonly<{'lr-input':readonly string[];'lr-change':readonly string[];}>; /** Public WA-compatible intrinsic validator catalog. */ static get validators():LyraFormValidator[];static formAssociated:boolean;static styles:import("lit").CSSResultGroup[];static properties:{name:{reflect:boolean;noAccessor:boolean;converter:import("lit").ComplexAttributeConverter;};value:{attribute:boolean;noAccessor:boolean;};defaultValue:{attribute:string;reflect:boolean;useDefault:boolean;noAccessor:boolean;};customError:{attribute:string;reflect:boolean;noAccessor:boolean;};required:{type:BooleanConstructor;reflect:boolean;noAccessor:boolean;};disabled:{type:BooleanConstructor;reflect:boolean;noAccessor:boolean;};orientation:{reflect:boolean;converter:import("lit").ComplexAttributeConverter;};form:{noAccessor:boolean;};}; /** * Size of the group's own chrome, on the library's shared ladder. Accepts both spellings of every * tier — `2xs`/`xs`/`s`/`m`/`l`/`xl` and Web Awesome's `small`/`medium`/`large` — so migrating * either way is a tag rename. Scales the group's label type size and the gaps around and between * its options off the same `--lr-form-control-*` values the controls themselves use, and * projects the effective tier to owned options without rewriting their authored `size` state. */ size:LyraSize; /** Arrow-key axis and option layout. Left/right are mirrored under RTL in horizontal mode. */ orientation:RadioGroupOrientation;label:string;hint:string; /** Shoelace alias for {@link hint}. `hint` wins when both are supplied. */ helpText:string; /** Shoelace's separate spelling for the reset default. */ private shoelaceDefaultValue; /** SSR slot-presence hints used before light-DOM assignment can be inspected. */ withLabel:boolean;withHint:boolean;errorText:string; /** Accessible-name override forwarded to the internal radiogroup. Attribute presence wins, * including an explicitly empty `aria-label`, which also suppresses visible-label linkage. */ accessibleLabel:string;private hasLabelSlot;private hasHintSlot;private hasHelpTextSlot;private hasErrorSlot;private readonly labelId;private readonly hintId;private readonly errorId;private managedRadios;private syncingRadios;private membershipObserver?;private membershipObserverDocument?;private membershipObserverGeneration;private runResizeObserver?;private runProjectionFrame?;private internals;private validityController;private _name;private _value;private _defaultValue;private _valueDirty;private reflectingDefaultValue;private reflectingCustomError;private _required;private _disabled;private _fieldsetDisabled;private hasInteracted;private pendingSelection?;private hadShoelaceDefaultValue; /** Submitted form-data key. Lyra defaults to empty, unlike ``'s `"option"`; * the migration codemod inserts `name="option"`, while a manual tag rename must set it * explicitly to preserve Shoelace's default. * @default '' */ get name():string;set name(next:string|null);get value():string;set value(next:string|null); /** Reflected current reset default; changing it never overwrites a dirty live selection. */ get defaultValue():string;set defaultValue(next:string); /** Consumer-supplied validation message reflected through `custom-error`. */ get customError():string|null;set customError(next:string|null);get required():boolean;set required(next:boolean);get disabled():boolean;set disabled(next:boolean);get effectiveDisabled():boolean;get form():HTMLFormElement|null;set form(owner:FormOwnerValue);getForm():HTMLFormElement|null;get labels():NodeList;get validity():ValidityState;get validationMessage():string;get willValidate():boolean;constructor();private onInvalid;private externalDescriptionLease?;private syncExternalDescription;private releaseExternalDescription;connectedCallback():void;private armRunResizeObserver;private scheduleRunProjection;private isButtonRadio;private areActuallyAdjacent;private projectButtonRuns;private armMembershipObserver;disconnectedCallback():void;adoptedCallback():void;private resetMembershipObserver;protected willUpdate(changed:PropertyValues):void;protected updated(changed:PropertyValues):void;private syncSupportSlots;private radioGroupOwner;private radios;private isRadioAvailable;private selectValue;private syncRadios;private releaseRadios;private onKeyDown;private onSlotChange;private onRadioSlotChange; /** Moves focus to the selected enabled option, or the first enabled option when empty. */ focus(options?:FocusOptions):void; /** Removes focus from whichever owned option currently contains the deep active element. */ blur():void; /** Activates the selected/first enabled option, matching host click semantics on the internal * radio collection rather than leaving `` a no-op. */ click():void;private syncFormState; /** Shared with every other form control: disabled (own or fieldset-cascaded) bars validation. */ private get barredFromValidation();private updateValidity; /** Republishes the six validity custom states from whatever `ElementInternals` currently holds. */ private reflectValidityStates;checkValidity():boolean;reportValidity():boolean;private commitCustomValidity;setCustomValidity(message?:string):void; /** Clears consumer-supplied validity and restores the current required/value constraint. */ resetValidity():void;formResetCallback():void;formStateRestoreCallback(state:string|File|FormData|null,reason:'autocomplete'|'restore'):void;formDisabledCallback(disabled:boolean):void;render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-radio-group':LyraRadioGroup;}}