/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { LitElement } from 'lit'; import { RadioButtonType, RadioButtonOption } from './radio-group.types.js'; declare const NrRadioGroupElement_base: (new (...args: any[]) => import("@nuralyui/common/mixins").DependencyAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").ThemeAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").EventHandlerCapable) & (new (...args: any[]) => import("packages/common/src/shared/base-mixin.js").LightDomContent) & typeof LitElement; /** * A radio button group component using Reactive Controllers architecture. * * Supports multiple display modes: * - Default: Traditional radio buttons with labels * - Button: Button-style radio group * - Slot: Custom HTML content with radio selection * * Features: * - Theme-aware styling with light/dark mode support * - Keyboard navigation (arrow keys, space, enter) * - Accessibility compliance * - Form validation and integration * - Ripple effects on interaction * - Modular controller-based architecture * * @example * ```html * * * * * * * ``` * * @fires nr-change - Dispatched when the selected option changes * * @slot helper-text - Helper text displayed below the radio group * * @csspart radio-group - The default radio group container * @csspart type-button - The button-style radio group container */ export declare class NrRadioGroupElement extends NrRadioGroupElement_base { static styles: import("lit").CSSResult; static useShadowDom: boolean; requiredComponents: string[]; options: RadioButtonOption[]; defaultValue: string; value: string; name: string; direction: 'horizontal' | 'vertical'; type: RadioButtonType; required: boolean; disabled: boolean; size: 'small' | 'medium' | 'large'; position: 'left' | 'right'; autoWidth: boolean; helper: string; private groupController; private keyboardController; private focusController; private validationController; private rippleController; /** * Get the currently selected option - DELEGATES to controller */ get selectedOption(): RadioButtonOption | undefined; /** * Check if an option is selected - DELEGATES to controller */ isOptionSelected(option: RadioButtonOption): boolean; /** * Check if an option is disabled - DELEGATES to controller */ isOptionDisabled(option: RadioButtonOption): boolean; /** * Check if an option is icon-only (has icon but no meaningful label) */ isOptionIconOnly(option: RadioButtonOption): boolean; /** * Handle option selection change - DELEGATES to controller */ handleSelectionChange(option: RadioButtonOption): void; /** * Set focused option by index - DELEGATES to controller */ setFocusedOption(index: number): void; /** * Handle keyboard events - DELEGATES to controller */ handleKeyDown(_event: KeyboardEvent): void; /** * Add ripple effect on radio input click - DELEGATES to controller */ addRippleEffect(event: Event): void; /** * Validate the radio group - DELEGATES to controller */ validate(): boolean; /** * Get validation message - DELEGATES to controller */ get validationMessage(): string; /** * Check if the radio group is valid - DELEGATES to controller */ get isValid(): boolean; /** * Get form data for form submission - DELEGATES to controller */ getFormData(): { [key: string]: string; }; /** * Reset the radio group - DELEGATES to controller */ reset(): void; /** * FormData integration for native form submission - DELEGATES to controller */ get formData(): FormData | null; /** * Check form validity (required for HTML5 form validation) */ checkValidity(): boolean; /** * Report form validity (required for HTML5 form validation) - DELEGATES to controller */ reportValidity(): boolean; /** * Programmatically focus the radio group - DELEGATES to controller */ focus(): void; /** * Programmatically blur the radio group - DELEGATES to controller */ blur(): void; /** * Render default radio button style using nr-radio component */ private renderOptionDefault; /** * Render button style radio group */ private renderOptionsWithButtons; /** * Render slot-based radio group (for custom HTML content) using nr-radio */ private renderOptionsWithSlots; /** * Render button style with slots */ private renderButtonsWithSlots; protected render(): import("lit-html").TemplateResult<1>; } export {}; //# sourceMappingURL=radio-group.component.d.ts.map