@ticatec/uniface-element 0.2.4 → 0.3.0

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.
Files changed (176) hide show
  1. package/dist/accordion/README.md +169 -0
  2. package/dist/accordion/README_CN.md +176 -0
  3. package/dist/action-bar/README.md +275 -0
  4. package/dist/action-bar/README_CN.md +285 -0
  5. package/dist/app-layout/README.md +374 -0
  6. package/dist/app-layout/README_CN.md +381 -0
  7. package/dist/app-top-bar/README.md +357 -0
  8. package/dist/app-top-bar/README_CN.md +365 -0
  9. package/dist/attachment-files/AttachmentFilesField.svelte +67 -1
  10. package/dist/attachment-files/AttachmentFilesField.svelte.d.ts +8 -1
  11. package/dist/base-calendar/CalendarBase.svelte +0 -3
  12. package/dist/box/README.md +385 -0
  13. package/dist/box/README_CN.md +393 -0
  14. package/dist/breadcrumbs/README.md +442 -0
  15. package/dist/breadcrumbs/README_CN.md +442 -0
  16. package/dist/button/Button.svelte +27 -7
  17. package/dist/button/Button.svelte.d.ts +3 -1
  18. package/dist/button/IconButton.svelte +26 -6
  19. package/dist/button/IconButton.svelte.d.ts +3 -1
  20. package/dist/button/IconButton_README.md +513 -0
  21. package/dist/button/IconButton_README_CN.md +513 -0
  22. package/dist/button/README.md +428 -0
  23. package/dist/button/README_CN.md +428 -0
  24. package/dist/button/TextButton.svelte +26 -6
  25. package/dist/button/TextButton.svelte.d.ts +3 -1
  26. package/dist/button/TextButton_README.md +571 -0
  27. package/dist/button/TextButton_README_CN.md +571 -0
  28. package/dist/card/README.md +666 -0
  29. package/dist/card/README_CN.md +666 -0
  30. package/dist/cascade-options-select/CascadeOptionSelect.svelte +43 -7
  31. package/dist/cascade-options-select/CascadeOptionSelect.svelte.d.ts +3 -4
  32. package/dist/cascade-options-select/README.md +663 -2
  33. package/dist/cascade-options-select/README_CN.md +664 -0
  34. package/dist/checkbox/CheckBox.svelte +20 -6
  35. package/dist/checkbox/CheckBox.svelte.d.ts +4 -2
  36. package/dist/checkbox/README.md +562 -0
  37. package/dist/checkbox/README_CN.md +727 -0
  38. package/dist/common-editor/NumberInput.svelte +39 -26
  39. package/dist/common-editor/NumberInput.svelte.d.ts +5 -1
  40. package/dist/concise-data-table/ConciseListTable.svelte +133 -36
  41. package/dist/concise-data-table/ConciseListTable.svelte.d.ts +8 -1
  42. package/dist/concise-data-table/DataCell.svelte +5 -6
  43. package/dist/concise-data-table/DataRow.svelte +22 -2
  44. package/dist/concise-data-table/DataRow.svelte.d.ts +1 -0
  45. package/dist/concise-data-table/README.md +606 -0
  46. package/dist/concise-data-table/README_CN.md +611 -0
  47. package/dist/context-menu/ContextMenu.svelte +138 -21
  48. package/dist/context-menu/ContextMenu.svelte.d.ts +5 -0
  49. package/dist/context-menu/ContextMenuItem.d.ts +20 -4
  50. package/dist/context-menu/README.md +551 -0
  51. package/dist/context-menu/README_CN.md +551 -0
  52. package/dist/criteria-field/CriteriaField.svelte +3 -5
  53. package/dist/criteria-field/README.md +532 -0
  54. package/dist/criteria-field/README_CN.md +532 -0
  55. package/dist/data-table/README.md +712 -0
  56. package/dist/data-table/README_CN.md +712 -0
  57. package/dist/date-picker/DatePicker.svelte +44 -7
  58. package/dist/date-picker/DatePicker.svelte.d.ts +3 -4
  59. package/dist/date-picker/DateTimePicker.svelte +32 -8
  60. package/dist/date-picker/DateTimePicker.svelte.d.ts +3 -4
  61. package/dist/date-picker/README.md +326 -0
  62. package/dist/date-picker/README_CN.md +316 -0
  63. package/dist/date-picker/ScrollBar.svelte +18 -8
  64. package/dist/date-picker/ScrollBar.svelte.d.ts +1 -1
  65. package/dist/date-picker/TimePanel.svelte +5 -5
  66. package/dist/date-picker/TimePanel.svelte.d.ts +1 -1
  67. package/dist/date-range/README.md +374 -0
  68. package/dist/date-range/README_CN.md +374 -0
  69. package/dist/dialog/README.md +596 -0
  70. package/dist/dialog/README_CN.md +596 -0
  71. package/dist/drawer/README.md +679 -1
  72. package/dist/drawer/README_CN.md +679 -0
  73. package/dist/group-box/group-check-box/GroupCheckBox.svelte +62 -5
  74. package/dist/group-box/group-check-box/GroupCheckBox.svelte.d.ts +7 -2
  75. package/dist/group-box/group-check-box/README.md +749 -0
  76. package/dist/group-box/group-check-box/README_CN.md +750 -0
  77. package/dist/group-box/group-radio-box/GroupRadioBox.svelte +69 -4
  78. package/dist/group-box/group-radio-box/GroupRadioBox.svelte.d.ts +8 -2
  79. package/dist/group-box/group-radio-box/README.md +920 -0
  80. package/dist/group-box/group-radio-box/README_CN.md +920 -0
  81. package/dist/image-files/README.md +1346 -0
  82. package/dist/image-files/README_CN.md +1346 -0
  83. package/dist/input-options-select/InputOptionsSelect.svelte +161 -65
  84. package/dist/input-options-select/InputOptionsSelect.svelte.d.ts +4 -1
  85. package/dist/lib/forwardAllEvents.d.ts +3 -0
  86. package/dist/lib/forwardAllEvents.js +24 -0
  87. package/dist/list-box/README.md +579 -0
  88. package/dist/list-box/README_CN.md +682 -0
  89. package/dist/lookup-editor/LookupEditor.svelte +15 -3
  90. package/dist/lookup-editor/LookupEditor.svelte.d.ts +3 -4
  91. package/dist/lookup-editor/README.md +684 -0
  92. package/dist/lookup-editor/README_CN.md +684 -0
  93. package/dist/memo-editor/MemoEditor.svelte +77 -27
  94. package/dist/memo-editor/MemoEditor.svelte.d.ts +6 -3
  95. package/dist/memo-editor/README.md +819 -0
  96. package/dist/memo-editor/README_CN.md +819 -0
  97. package/dist/message-box/README.md +398 -0
  98. package/dist/message-box/README_CN.md +398 -0
  99. package/dist/number-editor/NumberEditor.svelte +2 -2
  100. package/dist/number-editor/NumberEditor.svelte.d.ts +1 -1
  101. package/dist/number-editor/README.md +353 -22
  102. package/dist/number-editor/README_CN.md +357 -0
  103. package/dist/number-range/README.md +443 -0
  104. package/dist/number-range/README_CN.md +443 -0
  105. package/dist/options-multi-select/OptionsMultiSelect.svelte +87 -12
  106. package/dist/options-multi-select/OptionsMultiSelect.svelte.d.ts +3 -1
  107. package/dist/options-multi-select/README.md +480 -0
  108. package/dist/options-multi-select/README_CN.md +480 -0
  109. package/dist/options-select/OptionsSelect.svelte +36 -5
  110. package/dist/options-select/OptionsSelect.svelte.d.ts +3 -4
  111. package/dist/options-select/README.md +632 -0
  112. package/dist/options-select/README_CN.md +632 -0
  113. package/dist/page/README.md +605 -0
  114. package/dist/page/README_CN.md +605 -0
  115. package/dist/pagination/README.md +946 -0
  116. package/dist/pagination/README_CN.md +946 -0
  117. package/dist/pagination-panel/README.md +1075 -0
  118. package/dist/pagination-panel/README_CN.md +1075 -0
  119. package/dist/popup-hint/README.md +841 -0
  120. package/dist/popup-hint/README_CN.md +840 -0
  121. package/dist/progress-bar/README.md +242 -0
  122. package/dist/progress-bar/README_CN.md +242 -0
  123. package/dist/progress-step-bar/README.md +316 -0
  124. package/dist/progress-step-bar/README_CN.md +316 -0
  125. package/dist/prompts-text-editor/PromptsTextEditor.svelte +6 -3
  126. package/dist/prompts-text-editor/PromptsTextEditor.svelte.d.ts +3 -1
  127. package/dist/prompts-text-editor/README.md +329 -0
  128. package/dist/prompts-text-editor/README_CN.md +329 -0
  129. package/dist/property-editor/README.md +969 -0
  130. package/dist/property-editor/README_CN.md +969 -0
  131. package/dist/radio-button/README.md +372 -0
  132. package/dist/radio-button/README_CN.md +372 -0
  133. package/dist/radio-button/RadioButton.svelte +32 -3
  134. package/dist/radio-button/RadioButton.svelte.d.ts +12 -1
  135. package/dist/search-box/README.md +425 -0
  136. package/dist/search-box/README_CN.md +424 -0
  137. package/dist/search-box/SearchBox.svelte +22 -6
  138. package/dist/search-box/SearchBox.svelte.d.ts +4 -1
  139. package/dist/tabs/README.md +919 -0
  140. package/dist/tabs/README_CN.md +920 -0
  141. package/dist/tag/README.md +922 -0
  142. package/dist/tag/README_CN.md +922 -0
  143. package/dist/text-editor/PasswordEditor.svelte +17 -2
  144. package/dist/text-editor/PasswordEditor.svelte.d.ts +3 -3
  145. package/dist/text-editor/PasswordEditor_README.md +551 -0
  146. package/dist/text-editor/PasswordEditor_README_CN.md +551 -0
  147. package/dist/text-editor/README.md +466 -0
  148. package/dist/text-editor/README_CN.md +466 -0
  149. package/dist/text-editor/TextEditor.svelte +51 -19
  150. package/dist/text-editor/TextEditor.svelte.d.ts +0 -1
  151. package/dist/time-editor/README.md +498 -24
  152. package/dist/time-editor/README_CN.md +498 -0
  153. package/dist/time-editor/TimeEditor.svelte +7 -3
  154. package/dist/time-editor/TimeEditor.svelte.d.ts +3 -1
  155. package/dist/toast/README.md +667 -0
  156. package/dist/toast/README_CN.md +667 -0
  157. package/dist/transfer/README.md +795 -0
  158. package/dist/transfer/Transfer.svelte +6 -4
  159. package/dist/transfer/Transfer.svelte.d.ts +3 -1
  160. package/dist/tree-view/README.md +761 -0
  161. package/dist/tree-view/README_CN.md +761 -0
  162. package/dist/tree-view/TreeView.svelte +5 -3
  163. package/dist/tree-view/TreeView.svelte.d.ts +3 -1
  164. package/dist/unit-number-editor/README.md +546 -20
  165. package/dist/unit-number-editor/README_CN.md +525 -0
  166. package/dist/unit-number-editor/UnitNumberEditor.svelte +62 -8
  167. package/dist/unit-number-editor/UnitNumberEditor.svelte.d.ts +5 -1
  168. package/docs/form-field/cn/README_CN.md +364 -0
  169. package/docs/form-field/en/README.md +364 -0
  170. package/docs/form-panel/flex-form/cn/README_CN.md +586 -0
  171. package/docs/form-panel/flex-form/en/README.md +586 -0
  172. package/docs/form-panel/flex-row-form/cn/README_CN.md +787 -0
  173. package/docs/form-panel/flex-row-form/en/README.md +787 -0
  174. package/docs/form-panel/grid-form/en/README.md +744 -0
  175. package/package.json +1 -1
  176. package/dist/drawer/README-CN.md +0 -1
@@ -0,0 +1,372 @@
1
+ # RadioButton
2
+
3
+ A radio button component for single selection from a group of options. Radio buttons allow users to select exactly one option from a predefined set of mutually exclusive choices.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @ticatec/uniface-element
9
+ ```
10
+
11
+ ## Import
12
+
13
+ ```typescript
14
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
15
+ ```
16
+
17
+ ## Basic Usage
18
+
19
+ ```svelte
20
+ <script>
21
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
22
+
23
+ let selectedSize = '';
24
+ </script>
25
+
26
+ <RadioButton bind:group={selectedSize} value="small" label="Small" />
27
+ <RadioButton bind:group={selectedSize} value="medium" label="Medium" />
28
+ <RadioButton bind:group={selectedSize} value="large" label="Large" />
29
+
30
+ <p>Selected: {selectedSize}</p>
31
+ ```
32
+
33
+ ## Props
34
+
35
+ | Prop | Type | Default | Description |
36
+ |------|------|---------|-------------|
37
+ | `value` | `any` | Required | Value of this radio button option |
38
+ | `label` | `string` | Required | Display label for the radio button |
39
+ | `group` | `any` | Required | Bind to a variable that holds the selected value |
40
+ | `disabled` | `boolean` | `false` | Whether the radio button is disabled |
41
+ | `readonly` | `boolean` | `false` | Whether the radio button is read-only |
42
+ | `compact` | `boolean` | `false` | Whether to use compact spacing |
43
+ | `style` | `string` | `""` | Additional CSS styles |
44
+ | `onfocus` | `((event: FocusEvent) => void) \| null` | `null` | Callback when radio button gains focus |
45
+ | `onblur` | `((event: FocusEvent) => void) \| null` | `null` | Callback when radio button loses focus |
46
+ | `onchange` | `((event: Event) => void) \| null` | `null` | Callback when selection changes |
47
+
48
+ ## Events
49
+
50
+ | Event | Description |
51
+ |-------|-------------|
52
+ | `focus` | Fired when the radio button gains focus |
53
+ | `blur` | Fired when the radio button loses focus |
54
+ | `change` | Fired when the selection changes |
55
+ | `click` | Fired when the radio button is clicked |
56
+
57
+ ## Methods
58
+
59
+ | Method | Description |
60
+ |--------|-------------|
61
+ | `setFocus()` | Programmatically focus the radio button |
62
+
63
+ ## Examples
64
+
65
+ ### Basic Radio Group
66
+
67
+ ```svelte
68
+ <script>
69
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
70
+
71
+ let selectedOption = 'option1';
72
+ </script>
73
+
74
+ <h3>Choose an option:</h3>
75
+ <RadioButton bind:group={selectedOption} value="option1" label="Option 1" />
76
+ <RadioButton bind:group={selectedOption} value="option2" label="Option 2" />
77
+ <RadioButton bind:group={selectedOption} value="option3" label="Option 3" />
78
+
79
+ <p>You selected: {selectedOption}</p>
80
+ ```
81
+
82
+ ### With Event Handlers
83
+
84
+ ```svelte
85
+ <script>
86
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
87
+
88
+ let selectedColor = '';
89
+
90
+ function handleChange(event) {
91
+ console.log('Color changed:', event.target.value);
92
+ }
93
+
94
+ function handleFocus(event) {
95
+ console.log('Radio button focused');
96
+ }
97
+
98
+ function handleBlur(event) {
99
+ console.log('Radio button blurred');
100
+ }
101
+ </script>
102
+
103
+ <h3>Select a color:</h3>
104
+ <RadioButton
105
+ bind:group={selectedColor}
106
+ value="red"
107
+ label="Red"
108
+ onchange={handleChange}
109
+ onfocus={handleFocus}
110
+ onblur={handleBlur}
111
+ />
112
+ <RadioButton
113
+ bind:group={selectedColor}
114
+ value="green"
115
+ label="Green"
116
+ onchange={handleChange}
117
+ onfocus={handleFocus}
118
+ onblur={handleBlur}
119
+ />
120
+ <RadioButton
121
+ bind:group={selectedColor}
122
+ value="blue"
123
+ label="Blue"
124
+ onchange={handleChange}
125
+ onfocus={handleFocus}
126
+ onblur={handleBlur}
127
+ />
128
+ ```
129
+
130
+ ### Disabled and Readonly States
131
+
132
+ ```svelte
133
+ <script>
134
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
135
+
136
+ let selectedPlan = 'basic';
137
+ </script>
138
+
139
+ <h3>Subscription Plan:</h3>
140
+ <RadioButton bind:group={selectedPlan} value="free" label="Free (Limited)" disabled />
141
+ <RadioButton bind:group={selectedPlan} value="basic" label="Basic" />
142
+ <RadioButton bind:group={selectedPlan} value="premium" label="Premium" />
143
+ <RadioButton bind:group={selectedPlan} value="enterprise" label="Enterprise" readonly />
144
+ ```
145
+
146
+ ### Compact Style
147
+
148
+ ```svelte
149
+ <script>
150
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
151
+
152
+ let selectedTheme = 'light';
153
+ </script>
154
+
155
+ <div style="display: flex; gap: 16px;">
156
+ <RadioButton bind:group={selectedTheme} value="light" label="Light" compact />
157
+ <RadioButton bind:group={selectedTheme} value="dark" label="Dark" compact />
158
+ <RadioButton bind:group={selectedTheme} value="auto" label="Auto" compact />
159
+ </div>
160
+ ```
161
+
162
+ ### Form Integration
163
+
164
+ ```svelte
165
+ <script>
166
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
167
+ import Button from "@ticatec/uniface-element/Button";
168
+
169
+ let formData = {
170
+ priority: '',
171
+ category: '',
172
+ urgency: ''
173
+ };
174
+
175
+ function handleSubmit() {
176
+ console.log('Form submitted:', formData);
177
+ }
178
+ </script>
179
+
180
+ <form on:submit|preventDefault={handleSubmit}>
181
+ <fieldset>
182
+ <legend>Priority Level</legend>
183
+ <RadioButton bind:group={formData.priority} value="low" label="Low Priority" />
184
+ <RadioButton bind:group={formData.priority} value="medium" label="Medium Priority" />
185
+ <RadioButton bind:group={formData.priority} value="high" label="High Priority" />
186
+ </fieldset>
187
+
188
+ <fieldset>
189
+ <legend>Category</legend>
190
+ <RadioButton bind:group={formData.category} value="bug" label="Bug Report" />
191
+ <RadioButton bind:group={formData.category} value="feature" label="Feature Request" />
192
+ <RadioButton bind:group={formData.category} value="support" label="Support Question" />
193
+ </fieldset>
194
+
195
+ <fieldset>
196
+ <legend>Urgency</legend>
197
+ <RadioButton bind:group={formData.urgency} value="immediate" label="Immediate" />
198
+ <RadioButton bind:group={formData.urgency} value="soon" label="This Week" />
199
+ <RadioButton bind:group={formData.urgency} value="later" label="Whenever" />
200
+ </fieldset>
201
+
202
+ <Button type="primary" label="Submit" onClick={handleSubmit} />
203
+ </form>
204
+
205
+ <style>
206
+ fieldset {
207
+ border: 1px solid #ddd;
208
+ border-radius: 4px;
209
+ padding: 16px;
210
+ margin-bottom: 16px;
211
+ }
212
+
213
+ legend {
214
+ font-weight: bold;
215
+ padding: 0 8px;
216
+ }
217
+ </style>
218
+ ```
219
+
220
+ ### Dynamic Options
221
+
222
+ ```svelte
223
+ <script>
224
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
225
+
226
+ let selectedLanguage = '';
227
+ let languages = [
228
+ { value: 'js', label: 'JavaScript' },
229
+ { value: 'ts', label: 'TypeScript' },
230
+ { value: 'py', label: 'Python' },
231
+ { value: 'java', label: 'Java' },
232
+ { value: 'go', label: 'Go' }
233
+ ];
234
+ </script>
235
+
236
+ <h3>Preferred Programming Language:</h3>
237
+ {#each languages as lang}
238
+ <RadioButton
239
+ bind:group={selectedLanguage}
240
+ value={lang.value}
241
+ label={lang.label}
242
+ />
243
+ {/each}
244
+
245
+ {#if selectedLanguage}
246
+ <p>You chose: {languages.find(l => l.value === selectedLanguage)?.label}</p>
247
+ {/if}
248
+ ```
249
+
250
+ ### With Custom Styling
251
+
252
+ ```svelte
253
+ <script>
254
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
255
+
256
+ let selectedSize = 'medium';
257
+ </script>
258
+
259
+ <div class="size-selector">
260
+ <RadioButton
261
+ bind:group={selectedSize}
262
+ value="small"
263
+ label="Small (S)"
264
+ style="margin-right: 24px;"
265
+ />
266
+ <RadioButton
267
+ bind:group={selectedSize}
268
+ value="medium"
269
+ label="Medium (M)"
270
+ style="margin-right: 24px;"
271
+ />
272
+ <RadioButton
273
+ bind:group={selectedSize}
274
+ value="large"
275
+ label="Large (L)"
276
+ />
277
+ </div>
278
+
279
+ <style>
280
+ .size-selector {
281
+ padding: 16px;
282
+ background: #f8f9fa;
283
+ border-radius: 8px;
284
+ display: flex;
285
+ align-items: center;
286
+ }
287
+ </style>
288
+ ```
289
+
290
+ ### Programmatic Focus
291
+
292
+ ```svelte
293
+ <script>
294
+ import RadioButton from "@ticatec/uniface-element/RadioButton";
295
+ import Button from "@ticatec/uniface-element/Button";
296
+
297
+ let selectedAnswer = '';
298
+ let firstRadio, secondRadio, thirdRadio;
299
+
300
+ function focusFirst() {
301
+ firstRadio.setFocus();
302
+ }
303
+
304
+ function focusSecond() {
305
+ secondRadio.setFocus();
306
+ }
307
+
308
+ function focusThird() {
309
+ thirdRadio.setFocus();
310
+ }
311
+ </script>
312
+
313
+ <h3>Survey Question:</h3>
314
+ <RadioButton bind:this={firstRadio} bind:group={selectedAnswer} value="yes" label="Yes" />
315
+ <RadioButton bind:this={secondRadio} bind:group={selectedAnswer} value="no" label="No" />
316
+ <RadioButton bind:this={thirdRadio} bind:group={selectedAnswer} value="maybe" label="Maybe" />
317
+
318
+ <div style="margin-top: 16px;">
319
+ <Button label="Focus Yes" onClick={focusFirst} />
320
+ <Button label="Focus No" onClick={focusSecond} />
321
+ <Button label="Focus Maybe" onClick={focusThird} />
322
+ </div>
323
+ ```
324
+
325
+ ## Features
326
+
327
+ - **Single Selection**: Ensures only one option can be selected in a group
328
+ - **Keyboard Navigation**: Full keyboard accessibility with tab and arrow key support
329
+ - **Focus Management**: Programmatic focus control and event handling
330
+ - **State Management**: Disabled and readonly states
331
+ - **Custom Styling**: Flexible styling options and compact mode
332
+ - **Event Handling**: Comprehensive event support for user interactions
333
+
334
+ ## Behavior
335
+
336
+ 1. **Selection**: Clicking a radio button selects it and deselects all others in the group
337
+ 2. **Keyboard**: Arrow keys navigate between options, Space selects the focused option
338
+ 3. **Focus**: Tab key moves focus between radio button groups
339
+ 4. **Label**: Clicking the label selects the associated radio button
340
+ 5. **Disabled**: Disabled radio buttons cannot be selected or focused
341
+ 6. **Readonly**: Readonly radio buttons cannot be changed but can be focused
342
+
343
+ ## Accessibility
344
+
345
+ - Proper ARIA attributes and roles
346
+ - Keyboard navigation support
347
+ - Screen reader compatible labels
348
+ - Focus indicators and management
349
+ - Semantic HTML structure with proper labeling
350
+
351
+ ## Best Practices
352
+
353
+ 1. **Group Related Options**: Use radio buttons for mutually exclusive choices
354
+ 2. **Clear Labels**: Provide descriptive, concise labels for each option
355
+ 3. **Default Selection**: Consider providing a sensible default selection
356
+ 4. **Option Count**: Limit to 2-7 options for optimal usability
357
+ 5. **Logical Order**: Arrange options in a logical sequence
358
+ 6. **Visual Grouping**: Use fieldsets and legends to group related radio buttons
359
+
360
+ ## Browser Support
361
+
362
+ - Modern browsers with full form control support
363
+ - Compatible with Svelte 5+
364
+ - Responsive design principles
365
+ - Touch-friendly interface
366
+
367
+ ## Related Components
368
+
369
+ - `CheckBox` - For multiple selections
370
+ - `Switch` - For binary on/off states
371
+ - `OptionsSelect` - For dropdown single selection
372
+ - `Button` - For action-based selections