@nuralyui/radio-group 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,196 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { css } from 'lit';
7
+ export const styles = css `
8
+ :host {
9
+ /* ========================================
10
+ * CSS CUSTOM PROPERTIES - RADIO GROUP
11
+ * ======================================== */
12
+
13
+ /* Group Layout */
14
+ --nuraly-radio-group-gap: 12px;
15
+ --nuraly-radio-group-horizontal-gap: 16px;
16
+
17
+ /* Colors - Error/Warning states */
18
+ --nuraly-radio-group-error-icon-color: var(--nuraly-color-radio-error-icon, #ef4444);
19
+ --nuraly-radio-group-error-text-color: var(--nuraly-color-radio-error-text, #ef4444);
20
+ --nuraly-radio-group-warning-icon-color: var(--nuraly-color-radio-warning-icon, #f59e0b);
21
+ --nuraly-radio-group-warning-text-color: var(--nuraly-color-radio-warning-text, #f59e0b);
22
+
23
+ /* Typography */
24
+ --nuraly-radio-group-font-family: var(--nuraly-font-family-radio, Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Ubuntu, Cantarell, "Noto Sans", sans-serif);
25
+ --nuraly-radio-group-message-font-size: var(--nuraly-font-size-radio-message, 12px);
26
+
27
+ /* Button type styling */
28
+ --nuraly-radio-group-button-border-radius: 4px;
29
+ --nuraly-radio-group-button-hover-color: var(--nuraly-color-radio-border-hover, #7c3aed);
30
+
31
+ /* Slot container styling */
32
+ --nuraly-radio-group-slot-hover-bg: rgba(124, 58, 237, 0.04);
33
+ --nuraly-radio-group-slot-selected-bg: rgba(124, 58, 237, 0.08);
34
+ --nuraly-radio-group-slot-border-radius: 6px;
35
+
36
+ /* ========================================
37
+ * COMPONENT STYLES
38
+ * ======================================== */
39
+
40
+ width: fit-content;
41
+ display: block;
42
+ font-family: var(--nuraly-radio-group-font-family);
43
+ }
44
+
45
+ /* ========================================
46
+ * RADIO GROUP LAYOUT
47
+ * ======================================== */
48
+
49
+ .radio-group {
50
+ display: flex;
51
+ flex-direction: column;
52
+ gap: var(--nuraly-radio-group-gap);
53
+ }
54
+
55
+ .radio-group.horizontal {
56
+ flex-direction: row;
57
+ flex-wrap: wrap;
58
+ gap: var(--nuraly-radio-group-horizontal-gap);
59
+ }
60
+
61
+ .radio-wrapper {
62
+ display: flex;
63
+ flex-direction: column;
64
+ gap: 4px;
65
+ }
66
+
67
+ /* ========================================
68
+ * MESSAGE CONTAINERS (Error/Warning)
69
+ * ======================================== */
70
+
71
+ .radio-wrapper .message-container {
72
+ display: flex;
73
+ align-items: center;
74
+ gap: 6px;
75
+ font-size: var(--nuraly-radio-group-message-font-size);
76
+ padding-left: 28px; /* Align with radio label */
77
+ }
78
+
79
+ nr-icon {
80
+ display: flex;
81
+ }
82
+
83
+ .radio-wrapper.error nr-icon {
84
+ --nuraly-icon-color: var(--nuraly-radio-group-error-icon-color);
85
+ }
86
+
87
+ .radio-wrapper.warning nr-icon {
88
+ --nuraly-icon-color: var(--nuraly-radio-group-warning-icon-color);
89
+ }
90
+
91
+ .radio-wrapper.error .message-container {
92
+ color: var(--nuraly-radio-group-error-text-color);
93
+ }
94
+
95
+ .radio-wrapper.warning .message-container {
96
+ color: var(--nuraly-radio-group-warning-text-color);
97
+ }
98
+
99
+ /* ========================================
100
+ * BUTTON TYPE STYLING
101
+ * ======================================== */
102
+
103
+ .type-button {
104
+ display: inline-flex;
105
+ gap: 0px;
106
+ }
107
+
108
+ /* Button border radius for first and last child */
109
+ .type-button :first-child {
110
+ --nuraly-button-border-top-left-radius: var(--nuraly-radio-group-button-border-radius);
111
+ --nuraly-button-border-bottom-left-radius: var(--nuraly-radio-group-button-border-radius);
112
+ }
113
+
114
+ .type-button :last-child {
115
+ --nuraly-button-border-top-right-radius: var(--nuraly-radio-group-button-border-radius);
116
+ --nuraly-button-border-bottom-right-radius: var(--nuraly-radio-group-button-border-radius);
117
+ }
118
+
119
+ .type-button nr-button:not(:last-child) {
120
+ margin-right: -1px;
121
+ }
122
+
123
+ .type-button nr-button {
124
+ position: relative;
125
+ z-index: 1;
126
+ }
127
+
128
+ .type-button nr-button[type="default"]:hover {
129
+ --nuraly-button-color: var(--nuraly-radio-group-button-hover-color);
130
+ --nuraly-button-border-color: var(--nuraly-radio-group-button-hover-color);
131
+ z-index: 2;
132
+ }
133
+
134
+ .type-button nr-button[type="primary"] {
135
+ z-index: 1;
136
+ position: relative;
137
+ }
138
+
139
+ /* Disabled button states */
140
+ .type-button nr-button[disabled] {
141
+ opacity: 0.6;
142
+ cursor: not-allowed;
143
+ pointer-events: none;
144
+ }
145
+
146
+ .type-button nr-button[disabled]:hover {
147
+ z-index: auto;
148
+ --nuraly-button-border-color: var(--nuraly-button-disabled-border-color, var(--nuraly-button-local-disabled-border-color));
149
+ --nuraly-button-background-color: var(--nuraly-button-disabled-background-color, var(--nuraly-button-local-disabled-background-color));
150
+ --nuraly-button-color: var(--nuraly-button-disabled-text-color, var(--nuraly-button-local-disabled-text-color));
151
+ }
152
+
153
+ .type-button nr-button[type="primary"][disabled] {
154
+ --nuraly-button-background-color: var(--nuraly-button-primary-disabled-background-color, var(--nuraly-button-local-primary-disabled-background-color));
155
+ --nuraly-button-border-color: var(--nuraly-button-primary-disabled-border-color, var(--nuraly-button-local-primary-disabled-border-color));
156
+ --nuraly-button-color: var(--nuraly-button-primary-disabled-text-color, var(--nuraly-button-local-primary-disabled-text-color));
157
+ }
158
+
159
+ .type-button nr-button[type="primary"][disabled] nr-icon {
160
+ --nuraly-icon-color: var(--nuraly-button-primary-disabled-text-color, var(--nuraly-button-local-primary-disabled-text-color));
161
+ --nuraly-icon-local-color: var(--nuraly-button-primary-disabled-text-color, var(--nuraly-button-local-primary-disabled-text-color));
162
+ }
163
+
164
+ /* ========================================
165
+ * SLOT-BASED RADIO STYLING
166
+ * ======================================== */
167
+
168
+ .slot-wrapper {
169
+ display: flex;
170
+ align-items: flex-start;
171
+ gap: 12px;
172
+ cursor: pointer;
173
+ transition: all 0.2s ease;
174
+ padding: 8px;
175
+ border-radius: var(--nuraly-radio-group-slot-border-radius);
176
+ }
177
+
178
+ .slot-wrapper:hover {
179
+ background-color: var(--nuraly-radio-group-slot-hover-bg);
180
+ }
181
+
182
+ .slot-wrapper nr-radio {
183
+ flex-shrink: 0;
184
+ margin-top: 2px;
185
+ }
186
+
187
+ .slot-wrapper .slot-content {
188
+ flex: 1;
189
+ min-width: 0;
190
+ }
191
+
192
+ .slot-container.selected .slot-wrapper {
193
+ background-color: var(--nuraly-radio-group-slot-selected-bg);
194
+ }
195
+ `;
196
+ //# sourceMappingURL=radio-group.style.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.style.js","sourceRoot":"","sources":["../../../src/components/radio-group/radio-group.style.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4LxB,CAAC","sourcesContent":["/**\n * @license\n * Copyright 2023 Nuraly, Laabidi Aymen\n * SPDX-License-Identifier: MIT\n */\n\nimport { css } from 'lit';\n\nexport const styles = css`\n :host {\n /* ========================================\n * CSS CUSTOM PROPERTIES - RADIO GROUP\n * ======================================== */\n \n /* Group Layout */\n --nuraly-radio-group-gap: 12px;\n --nuraly-radio-group-horizontal-gap: 16px;\n\n /* Colors - Error/Warning states */\n --nuraly-radio-group-error-icon-color: var(--nuraly-color-radio-error-icon, #ef4444);\n --nuraly-radio-group-error-text-color: var(--nuraly-color-radio-error-text, #ef4444);\n --nuraly-radio-group-warning-icon-color: var(--nuraly-color-radio-warning-icon, #f59e0b);\n --nuraly-radio-group-warning-text-color: var(--nuraly-color-radio-warning-text, #f59e0b);\n\n /* Typography */\n --nuraly-radio-group-font-family: var(--nuraly-font-family-radio, Inter, ui-sans-serif, system-ui, -apple-system, \"Segoe UI\", Roboto, Ubuntu, Cantarell, \"Noto Sans\", sans-serif);\n --nuraly-radio-group-message-font-size: var(--nuraly-font-size-radio-message, 12px);\n\n /* Button type styling */\n --nuraly-radio-group-button-border-radius: 4px;\n --nuraly-radio-group-button-hover-color: var(--nuraly-color-radio-border-hover, #7c3aed);\n\n /* Slot container styling */\n --nuraly-radio-group-slot-hover-bg: rgba(124, 58, 237, 0.04);\n --nuraly-radio-group-slot-selected-bg: rgba(124, 58, 237, 0.08);\n --nuraly-radio-group-slot-border-radius: 6px;\n\n /* ========================================\n * COMPONENT STYLES\n * ======================================== */\n \n width: fit-content;\n display: block;\n font-family: var(--nuraly-radio-group-font-family);\n }\n\n /* ========================================\n * RADIO GROUP LAYOUT\n * ======================================== */\n\n .radio-group {\n display: flex;\n flex-direction: column;\n gap: var(--nuraly-radio-group-gap);\n }\n\n .radio-group.horizontal {\n flex-direction: row;\n flex-wrap: wrap;\n gap: var(--nuraly-radio-group-horizontal-gap);\n }\n\n .radio-wrapper {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n /* ========================================\n * MESSAGE CONTAINERS (Error/Warning)\n * ======================================== */\n\n .radio-wrapper .message-container {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--nuraly-radio-group-message-font-size);\n padding-left: 28px; /* Align with radio label */\n }\n\n nr-icon {\n display: flex;\n }\n\n .radio-wrapper.error nr-icon {\n --nuraly-icon-color: var(--nuraly-radio-group-error-icon-color);\n }\n\n .radio-wrapper.warning nr-icon {\n --nuraly-icon-color: var(--nuraly-radio-group-warning-icon-color);\n }\n\n .radio-wrapper.error .message-container {\n color: var(--nuraly-radio-group-error-text-color);\n }\n\n .radio-wrapper.warning .message-container {\n color: var(--nuraly-radio-group-warning-text-color);\n }\n\n /* ========================================\n * BUTTON TYPE STYLING\n * ======================================== */\n\n .type-button {\n display: inline-flex;\n gap: 0px;\n }\n\n /* Button border radius for first and last child */\n .type-button :first-child {\n --nuraly-button-border-top-left-radius: var(--nuraly-radio-group-button-border-radius);\n --nuraly-button-border-bottom-left-radius: var(--nuraly-radio-group-button-border-radius);\n }\n\n .type-button :last-child {\n --nuraly-button-border-top-right-radius: var(--nuraly-radio-group-button-border-radius);\n --nuraly-button-border-bottom-right-radius: var(--nuraly-radio-group-button-border-radius);\n }\n\n .type-button nr-button:not(:last-child) {\n margin-right: -1px;\n }\n\n .type-button nr-button {\n position: relative;\n z-index: 1;\n }\n\n .type-button nr-button[type=\"default\"]:hover {\n --nuraly-button-color: var(--nuraly-radio-group-button-hover-color);\n --nuraly-button-border-color: var(--nuraly-radio-group-button-hover-color);\n z-index: 2;\n }\n\n .type-button nr-button[type=\"primary\"] {\n z-index: 1;\n position: relative;\n }\n\n /* Disabled button states */\n .type-button nr-button[disabled] {\n opacity: 0.6;\n cursor: not-allowed;\n pointer-events: none;\n }\n\n .type-button nr-button[disabled]:hover {\n z-index: auto;\n --nuraly-button-border-color: var(--nuraly-button-disabled-border-color, var(--nuraly-button-local-disabled-border-color));\n --nuraly-button-background-color: var(--nuraly-button-disabled-background-color, var(--nuraly-button-local-disabled-background-color));\n --nuraly-button-color: var(--nuraly-button-disabled-text-color, var(--nuraly-button-local-disabled-text-color));\n }\n\n .type-button nr-button[type=\"primary\"][disabled] {\n --nuraly-button-background-color: var(--nuraly-button-primary-disabled-background-color, var(--nuraly-button-local-primary-disabled-background-color));\n --nuraly-button-border-color: var(--nuraly-button-primary-disabled-border-color, var(--nuraly-button-local-primary-disabled-border-color));\n --nuraly-button-color: var(--nuraly-button-primary-disabled-text-color, var(--nuraly-button-local-primary-disabled-text-color));\n }\n\n .type-button nr-button[type=\"primary\"][disabled] nr-icon {\n --nuraly-icon-color: var(--nuraly-button-primary-disabled-text-color, var(--nuraly-button-local-primary-disabled-text-color));\n --nuraly-icon-local-color: var(--nuraly-button-primary-disabled-text-color, var(--nuraly-button-local-primary-disabled-text-color));\n }\n\n /* ========================================\n * SLOT-BASED RADIO STYLING\n * ======================================== */\n\n .slot-wrapper {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n cursor: pointer;\n transition: all 0.2s ease;\n padding: 8px;\n border-radius: var(--nuraly-radio-group-slot-border-radius);\n }\n\n .slot-wrapper:hover {\n background-color: var(--nuraly-radio-group-slot-hover-bg);\n }\n\n .slot-wrapper nr-radio {\n flex-shrink: 0;\n margin-top: 2px;\n }\n\n .slot-wrapper .slot-content {\n flex: 1;\n min-width: 0;\n }\n\n .slot-container.selected .slot-wrapper {\n background-color: var(--nuraly-radio-group-slot-selected-bg);\n }\n`;\n"]}
@@ -0,0 +1,37 @@
1
+ export declare type RadioButtonOption = {
2
+ value: string;
3
+ label: string;
4
+ icon?: string;
5
+ disabled?: boolean;
6
+ state?: RadioButtonState;
7
+ message?: string;
8
+ htmlContent?: string;
9
+ className?: string;
10
+ style?: string;
11
+ title?: string;
12
+ id?: string;
13
+ };
14
+ export declare type RadioButtonState = 'error' | 'warning';
15
+ export declare enum RadioButtonDirection {
16
+ Horizontal = "horizontal",
17
+ Vertical = "vertical"
18
+ }
19
+ export declare enum RadioButtonPosition {
20
+ Left = "left",
21
+ Right = "right"
22
+ }
23
+ export declare enum RadioButtonType {
24
+ Default = "default",
25
+ Button = "button",
26
+ Slot = "slot"
27
+ }
28
+ export declare enum RadioButtonSize {
29
+ Small = "small",
30
+ Medium = "medium",
31
+ Large = "large"
32
+ }
33
+ export declare enum RadioButtonVariant {
34
+ Default = "default",
35
+ Solid = "solid"
36
+ }
37
+ //# sourceMappingURL=radio-group.types.d.ts.map
@@ -0,0 +1,28 @@
1
+ export var RadioButtonDirection;
2
+ (function (RadioButtonDirection) {
3
+ RadioButtonDirection["Horizontal"] = "horizontal";
4
+ RadioButtonDirection["Vertical"] = "vertical";
5
+ })(RadioButtonDirection || (RadioButtonDirection = {}));
6
+ export var RadioButtonPosition;
7
+ (function (RadioButtonPosition) {
8
+ RadioButtonPosition["Left"] = "left";
9
+ RadioButtonPosition["Right"] = "right";
10
+ })(RadioButtonPosition || (RadioButtonPosition = {}));
11
+ export var RadioButtonType;
12
+ (function (RadioButtonType) {
13
+ RadioButtonType["Default"] = "default";
14
+ RadioButtonType["Button"] = "button";
15
+ RadioButtonType["Slot"] = "slot";
16
+ })(RadioButtonType || (RadioButtonType = {}));
17
+ export var RadioButtonSize;
18
+ (function (RadioButtonSize) {
19
+ RadioButtonSize["Small"] = "small";
20
+ RadioButtonSize["Medium"] = "medium";
21
+ RadioButtonSize["Large"] = "large";
22
+ })(RadioButtonSize || (RadioButtonSize = {}));
23
+ export var RadioButtonVariant;
24
+ (function (RadioButtonVariant) {
25
+ RadioButtonVariant["Default"] = "default";
26
+ RadioButtonVariant["Solid"] = "solid";
27
+ })(RadioButtonVariant || (RadioButtonVariant = {}));
28
+ //# sourceMappingURL=radio-group.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio-group.types.js","sourceRoot":"","sources":["../../../src/components/radio-group/radio-group.types.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAN,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC9B,iDAAyB,CAAA;IACzB,6CAAqB,CAAA;AACvB,CAAC,EAHW,oBAAoB,KAApB,oBAAoB,QAG/B;AAED,MAAM,CAAN,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,oCAAa,CAAA;IACb,sCAAe,CAAA;AACjB,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,QAG9B;AAED,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,sCAAmB,CAAA;IACnB,oCAAiB,CAAA;IACjB,gCAAa,CAAA;AACf,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,kCAAe,CAAA;IACf,oCAAiB,CAAA;IACjB,kCAAe,CAAA;AACjB,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,MAAM,CAAN,IAAY,kBAGX;AAHD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,qCAAe,CAAA;AACjB,CAAC,EAHW,kBAAkB,KAAlB,kBAAkB,QAG7B","sourcesContent":["export type RadioButtonOption = {\n value: string;\n label: string;\n icon?: string;\n disabled?: boolean;\n state?: RadioButtonState;\n message?: string;\n htmlContent?: string; // Support for HTML content instead of plain label\n className?: string; // Custom CSS class for the option\n style?: string; // Inline styles for the option\n title?: string; // Tooltip text\n id?: string; // Custom ID for the option\n};\n\nexport type RadioButtonState = 'error' | 'warning';\n\nexport enum RadioButtonDirection {\n Horizontal = 'horizontal',\n Vertical = 'vertical',\n}\n\nexport enum RadioButtonPosition {\n Left = 'left',\n Right = 'right',\n}\n\nexport enum RadioButtonType {\n Default = 'default',\n Button = 'button',\n Slot = 'slot',\n}\n\nexport enum RadioButtonSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\nexport enum RadioButtonVariant {\n Default = 'default',\n Solid = 'solid',\n}\n"]}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2023 Nuraly, Laabidi Aymen
4
+ * SPDX-License-Identifier: MIT
5
+ */
6
+ import { LitElement } from 'lit';
7
+ import '../icon/icon.component.js';
8
+ import '../button/button.component.js';
9
+ import { RadioButtonType, RadioButtonOption } from './radio.type.js';
10
+ declare const NrRadioGroupElement_base: (new (...args: any[]) => import("../../shared/dependency-mixin.js").DependencyAware) & (new (...args: any[]) => import("../../shared/theme-mixin.js").ThemeAware) & (new (...args: any[]) => import("../../shared/event-handler-mixin.js").EventHandlerCapable) & typeof LitElement;
11
+ /**
12
+ * A radio button group component using Reactive Controllers architecture.
13
+ *
14
+ * Supports multiple display modes:
15
+ * - Default: Traditional radio buttons with labels
16
+ * - Button: Button-style radio group
17
+ * - Slot: Custom HTML content with radio selection
18
+ *
19
+ * Features:
20
+ * - Theme-aware styling with light/dark mode support
21
+ * - Keyboard navigation (arrow keys, space, enter)
22
+ * - Accessibility compliance
23
+ * - Form validation and integration
24
+ * - Ripple effects on interaction
25
+ * - Modular controller-based architecture
26
+ *
27
+ * @example
28
+ * ```html
29
+ * <nr-radio-group
30
+ * .options='[
31
+ * { value: "option1", label: "Option 1" },
32
+ * { value: "option2", label: "Option 2" }
33
+ * ]'
34
+ * default-value="option1"
35
+ * direction="horizontal">
36
+ * </nr-radio-group>
37
+ * ```
38
+ *
39
+ * @fires change - Dispatched when the selected option changes
40
+ */
41
+ export declare class NrRadioGroupElement extends NrRadioGroupElement_base {
42
+ static styles: import("lit").CSSResult;
43
+ requiredComponents: string[];
44
+ options: RadioButtonOption[];
45
+ defaultValue: string;
46
+ value: string;
47
+ name: string;
48
+ direction: 'horizontal' | 'vertical';
49
+ type: RadioButtonType;
50
+ required: boolean;
51
+ disabled: boolean;
52
+ private groupController;
53
+ private keyboardController;
54
+ private focusController;
55
+ private validationController;
56
+ private rippleController;
57
+ /**
58
+ * Get the currently selected option - DELEGATES to controller
59
+ */
60
+ get selectedOption(): RadioButtonOption | undefined;
61
+ /**
62
+ * Check if an option is selected - DELEGATES to controller
63
+ */
64
+ isOptionSelected(option: RadioButtonOption): boolean;
65
+ /**
66
+ * Check if an option is disabled - DELEGATES to controller
67
+ */
68
+ isOptionDisabled(option: RadioButtonOption): boolean;
69
+ /**
70
+ * Handle option selection change - DELEGATES to controller
71
+ */
72
+ handleSelectionChange(option: RadioButtonOption): void;
73
+ /**
74
+ * Set focused option by index - DELEGATES to controller
75
+ */
76
+ setFocusedOption(index: number): void;
77
+ /**
78
+ * Handle keyboard events - DELEGATES to controller
79
+ */
80
+ handleKeyDown(_event: KeyboardEvent): void;
81
+ /**
82
+ * Add ripple effect on radio input click - DELEGATES to controller
83
+ */
84
+ addRippleEffect(event: Event): void;
85
+ /**
86
+ * Validate the radio group - DELEGATES to controller
87
+ */
88
+ validate(): boolean;
89
+ /**
90
+ * Get validation message - DELEGATES to controller
91
+ */
92
+ get validationMessage(): string;
93
+ /**
94
+ * Check if the radio group is valid - DELEGATES to controller
95
+ */
96
+ get isValid(): boolean;
97
+ /**
98
+ * Get form data for form submission - DELEGATES to controller
99
+ */
100
+ getFormData(): {
101
+ [key: string]: string;
102
+ };
103
+ /**
104
+ * Reset the radio group - DELEGATES to controller
105
+ */
106
+ reset(): void;
107
+ /**
108
+ * FormData integration for native form submission - DELEGATES to controller
109
+ */
110
+ get formData(): FormData | null;
111
+ /**
112
+ * Check form validity (required for HTML5 form validation)
113
+ */
114
+ checkValidity(): boolean;
115
+ /**
116
+ * Report form validity (required for HTML5 form validation) - DELEGATES to controller
117
+ */
118
+ reportValidity(): boolean;
119
+ /**
120
+ * Programmatically focus the radio group - DELEGATES to controller
121
+ */
122
+ focus(): void;
123
+ /**
124
+ * Programmatically blur the radio group - DELEGATES to controller
125
+ */
126
+ blur(): void;
127
+ /**
128
+ * Render default radio button style
129
+ */
130
+ private renderOptionDefault;
131
+ /**
132
+ * Render button style radio group
133
+ */
134
+ private renderOptionsWithButtons;
135
+ /**
136
+ * Render slot-based radio group (for custom HTML content)
137
+ */
138
+ private renderOptionsWithSlots;
139
+ /**
140
+ * Render button style with slots
141
+ */
142
+ private renderButtonsWithSlots;
143
+ protected render(): import("lit").TemplateResult<1>;
144
+ }
145
+ export {};
146
+ //# sourceMappingURL=radio.component.d.ts.map