import { LitElement } from 'lit'; import { ValidationMessages } from '../../../shared/face-mixin'; import { SelectionButtonTheme, SelectionButtonSize, SelectionButtonShape } from '../../SelectionButton/core/_SelectionButton.js'; export type SelectionButtonType = 'radio' | 'checkbox'; export type SelectionButtonGroupTheme = SelectionButtonTheme; export type SelectionButtonGroupSize = SelectionButtonSize; export type SelectionButtonGroupShape = SelectionButtonShape; export interface SelectionButtonChangeEventDetail { /** The value of the button that triggered the change */ value: string; /** Whether the button is now selected */ checked: boolean; /** All currently selected values */ selectedValues: string[]; } export type SelectionButtonChangeEvent = CustomEvent; export interface SelectionButtonGroupProps { /** Selection mode: 'radio' (single) or 'checkbox' (multiple) */ type: SelectionButtonType; /** Name attribute for the input elements */ name: string; /** Legend text for the fieldset (accessibility) */ legend?: string; /** Visually hide the legend while keeping it accessible */ legendHidden?: boolean; /** Theme variant for buttons */ theme?: SelectionButtonGroupTheme; /** Size variant for buttons */ size?: SelectionButtonGroupSize; /** Shape variant for buttons */ shape?: SelectionButtonGroupShape; /** Controlled value for radio mode */ value?: string; /** Controlled values for checkbox mode */ values?: string[]; /** Disable all buttons in the group */ disabled?: boolean; /** Require at least one selection before the form can be submitted */ required?: boolean; validationMessages?: ValidationMessages; /** Callback for selection changes */ onSelectionChange?: (event: SelectionButtonChangeEvent) => void; } declare const AgSelectionButtonGroup_base: (new (...args: any[]) => import('../../../shared/face-mixin').FaceMixinInterface) & typeof LitElement; export declare class AgSelectionButtonGroup extends AgSelectionButtonGroup_base implements SelectionButtonGroupProps { static styles: import('lit').CSSResult; type: SelectionButtonType; legend: string; legendHidden: boolean; theme: SelectionButtonGroupTheme; size: SelectionButtonGroupSize; shape: SelectionButtonGroupShape; value: string; values: string[]; disabled: boolean; required: boolean; validationMessages: ValidationMessages | undefined; onSelectionChange: ((event: SelectionButtonChangeEvent) => void) | undefined; _internalSelectedValues: string[]; constructor(); private _getSelectedValues; /** * Sync the form value to ElementInternals. * Radio: submits the selected value as a string, or null if nothing selected. * Checkbox: submits all selected values via FormData overload. */ private _syncFormValue; private _syncValidity; /** * FACE lifecycle: called when the parent form is reset. * Clears all selections and re-syncs child buttons. */ formResetCallback(): void; /** * FACE lifecycle: called on session restore or browser autofill. * Restores selected value(s) from the previously saved form state. * Radio mode: state is a single string. Checkbox mode: state is FormData. */ formStateRestoreCallback(state: File | string | FormData | null, _mode: 'restore' | 'autocomplete'): void; /** * Sync CustomStateSet states so :state() pseudo-classes work from external CSS. * * Must be called AFTER _syncValidity() so that :state(invalid) reads the * freshly-updated _internals.validity.valid value. * * Exposed states: * :state(disabled) — group is disabled * :state(required) — group is required * :state(invalid) — FACE constraint validation is failing */ private _syncStates; connectedCallback(): void; disconnectedCallback(): void; updated(changedProperties: Map): void; firstUpdated(): void; private _getButtons; private _syncChildButtons; private _handleButtonChange; private _handleKeyDown; private _handleSlotChange; render(): import('lit').TemplateResult<1>; } export {}; //# sourceMappingURL=_SelectionButtonGroup.d.ts.map