/**
* @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