import{type TemplateResult}from'lit';import{LyraRadio}from'./radio.class.js'; /** * `` — a single-choice control rendered as a button rather than a circle. * * The same control as ``, and deliberately a subclass of it: form association, * validity, `form.reset()` restoration and the whole `` ownership/roving-focus * contract are inherited rather than reimplemented, so the two can never drift apart. Only the * chrome differs. A `` accepts either tag, and the two can be mixed. * * An owning horizontal group collapses borders only for button radios whose rendered boxes are * actually adjacent on the same flex line. The group's ordinary gap, a plain-radio interruption, * vertical layout, or wrapping starts a new fully rounded run; live layout and membership changes * are reconciled after layout in both directions. * A host `aria-label` is forwarded to the internal `role="radio"` by attribute presence, so an * explicitly empty value remains authoritative rather than restoring a label-text fallback. * Standalone button chrome is bounded by its allocation: unbroken labels wrap, while long * start/prefix and end/suffix adornments truncate inside their capped portions instead of widening * the page. The leading, label, and trailing wrappers are hidden independently while empty, so a * missing region never contributes a dead `--lr-radio-button-gap`. * * Host `aria-describedby` references resolve onto the internal radio and track target changes, * reconnect and document adoption. Equal-value `checked` assignments retain the inherited dirty * state contract: later defaults cannot replace the live selection until reset. * * @customElement lr-radio-button * @slot - Label text. * @slot start - Content placed before the label, typically an icon. * @slot prefix - Shoelace-compatible alias for `start`, rendered through the same wrapper. * @slot end - Content placed after the label. * @slot suffix - Shoelace-compatible alias for `end`, rendered through the same wrapper. * @event input - The user selected this radio. * @event change - The user selected this radio. * @event lr-change - A standalone radio button was selected. `detail: { checked, value }`. An * owning radio group emits its aggregate event instead. * @event focus - The internal control received focus. * @event blur - The internal control lost focus. * @event lr-invalid - The standalone radio button failed a validity check. Aggregate groups emit * their own alias instead. 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 the control is required, either by its own `required` * attribute or by an owning ``. Style with * `lr-radio-button:state(required)`. * @cssstate optional - Matches while it is neither — the complement of `required`. * @cssstate valid - Matches while the control satisfies its constraints, including any * `setCustomValidity()` error. * @cssstate invalid - Matches while it does not — from the very first render, before the user has * touched anything. * @cssstate user-valid - `valid`, but only after the user has interacted with this control: * selecting it, blurring it, `reportValidity()`, or a submission attempt. Not after a silent * `checkValidity()` alone. * @cssstate user-invalid - `invalid` after that same interaction. Style validation errors with this * rather than `invalid`: a pristine required control is genuinely invalid, but colouring it red * before the user has done anything is hostile. * @csspart base - The interactive button. Carries `checked` and `disabled` in the part name so a * consumer can target either state through `::part()`. Every size tier retains a 24px minimum * target in both axes, including an empty-label control. * @csspart button - Shoelace name for the interactive button. * @csspart button--checked - Shoelace state alias on the selected button. * @csspart control - Compatibility alias for the interactive control. * @csspart start - The leading-content wrapper; hidden while both leading slots are empty. * @csspart prefix - Shoelace-compatible alias for `start`; both names are on the same wrapper. * @csspart label - The default slot wrapper; hidden while it has no real content. * @csspart end - The trailing-content wrapper; hidden while both trailing slots are empty. * @csspart suffix - Shoelace-compatible alias for `end`; both names are on the same wrapper. * @cssprop [--lr-radio-radius=var(--lr-form-control-radius)] - Corner radius of the outer edges of * the button row. Its private default follows the shared control radius and changes to * `--lr-radius-pill` for `pill`; an inherited or direct public value still wins. * @cssprop [--lr-radio-button-gap=var(--lr-space-xs)] - Gap between the start/prefix wrapper, * label, and end/suffix wrapper in both `` and ``. * @cssprop [--lr-radio-button-hover-bg=var(--lr-color-brand-quiet)] - Unchecked button background * while hovered. * @cssprop [--lr-radio-button-hover-border-color=var(--lr-color-brand)] - Unchecked button border * while hovered. * @cssprop [--lr-radio-button-active-bg=color-mix(...)] - Unchecked button background while * pressed. * @cssprop [--lr-radio-button-active-border-color=var(--lr-radio-button-hover-border-color)] - * Unchecked button border while pressed. * @cssprop [--lr-radio-button-checked-bg=var(--lr-color-brand)] - Checked button background. * @cssprop [--lr-radio-button-checked-border-color=var(--lr-color-brand)] - Checked button border. * @cssprop [--lr-radio-button-checked-color=var(--lr-color-on-brand)] - Checked button text color. * @cssprop [--lr-radio-button-checked-hover-bg=color-mix(...)] - Checked button background while * hovered. * @cssprop [--lr-radio-button-checked-hover-border-color=var(--lr-radio-button-checked-border-color)] - * Checked button border while hovered. * @cssprop [--lr-radio-button-checked-active-bg=color-mix(...)] - Checked button background while * pressed. * @cssprop [--lr-radio-button-checked-active-border-color=var(--lr-radio-button-checked-hover-border-color)] - * Checked button border while pressed. * @status stable * @since 8.0.0 */ export declare class LyraRadioButton extends LyraRadio{static styles:import("lit").CSSResultGroup[];render():TemplateResult;}declare global{interface HTMLElementTagNameMap{'lr-radio-button':LyraRadioButton;}}