@toyu-ui/solid 0.1.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.
- package/LICENSE +21 -0
- package/README.md +79 -0
- package/button.d.ts +13 -0
- package/button.js +22 -0
- package/checkbox.d.ts +12 -0
- package/checkbox.js +19 -0
- package/custom-elements.json +715 -0
- package/define/button.d.ts +1 -0
- package/define/button.js +1 -0
- package/define/center.d.ts +1 -0
- package/define/center.js +1 -0
- package/define/checkbox.d.ts +1 -0
- package/define/checkbox.js +1 -0
- package/define/cluster.d.ts +1 -0
- package/define/cluster.js +1 -0
- package/define/container.d.ts +1 -0
- package/define/container.js +1 -0
- package/define/flex.d.ts +1 -0
- package/define/flex.js +1 -0
- package/define/frame.d.ts +1 -0
- package/define/frame.js +1 -0
- package/define/grid.d.ts +1 -0
- package/define/grid.js +1 -0
- package/define/input.d.ts +1 -0
- package/define/input.js +1 -0
- package/define/radio-group.d.ts +1 -0
- package/define/radio-group.js +1 -0
- package/define/radio.d.ts +1 -0
- package/define/radio.js +1 -0
- package/define/sidebar.d.ts +1 -0
- package/define/sidebar.js +1 -0
- package/define.d.ts +1 -0
- package/define.js +1 -0
- package/helpers/index.d.ts +2 -0
- package/index.d.ts +6 -0
- package/index.js +12 -0
- package/input.d.ts +19 -0
- package/input.js +25 -0
- package/jsx.d.ts +151 -0
- package/jsx.js +1 -0
- package/package.json +123 -0
- package/radio-group.d.ts +13 -0
- package/radio-group.js +20 -0
- package/radio.d.ts +12 -0
- package/radio.js +19 -0
- package/skills/button/SKILL.md +35 -0
- package/skills/center/SKILL.md +38 -0
- package/skills/checkbox/SKILL.md +37 -0
- package/skills/cluster/SKILL.md +38 -0
- package/skills/components/SKILL.md +38 -0
- package/skills/container/SKILL.md +38 -0
- package/skills/flex/SKILL.md +38 -0
- package/skills/frame/SKILL.md +38 -0
- package/skills/grid/SKILL.md +38 -0
- package/skills/input/SKILL.md +37 -0
- package/skills/radio/SKILL.md +37 -0
- package/skills/radio-group/SKILL.md +38 -0
- package/skills/setup/SKILL.md +49 -0
- package/skills/sidebar/SKILL.md +38 -0
|
@@ -0,0 +1,715 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "1.0.0",
|
|
3
|
+
"readme": "",
|
|
4
|
+
"package": "@toyu-ui/elements",
|
|
5
|
+
"version": "0.0.0",
|
|
6
|
+
"modules": [
|
|
7
|
+
{
|
|
8
|
+
"kind": "javascript-module",
|
|
9
|
+
"path": "./src/button/tyui-button.ts",
|
|
10
|
+
"declarations": [
|
|
11
|
+
{
|
|
12
|
+
"kind": "class",
|
|
13
|
+
"declaration": {
|
|
14
|
+
"name": "TyuiButtonElement",
|
|
15
|
+
"module": "./src/button/tyui-button.ts"
|
|
16
|
+
},
|
|
17
|
+
"name": "TyuiButtonElement",
|
|
18
|
+
"tagName": "tyui-button",
|
|
19
|
+
"customElement": true,
|
|
20
|
+
"summary": "Native custom element button for immediate actions.",
|
|
21
|
+
"attributes": [
|
|
22
|
+
{
|
|
23
|
+
"name": "appearance",
|
|
24
|
+
"type": "default | secondary | primary | outline | subtle | transparent",
|
|
25
|
+
"default": "default",
|
|
26
|
+
"description": "Visual emphasis."
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"name": "disabled",
|
|
30
|
+
"type": "boolean",
|
|
31
|
+
"default": "false",
|
|
32
|
+
"description": "Disables the native button."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"name": "disabled-focusable",
|
|
36
|
+
"type": "boolean",
|
|
37
|
+
"default": "false",
|
|
38
|
+
"description": "Keeps the button focusable while suppressing activation."
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"name": "icon-position",
|
|
42
|
+
"type": "before | after",
|
|
43
|
+
"default": "before",
|
|
44
|
+
"description": "Places slotted icon before or after text."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "shape",
|
|
48
|
+
"type": "rounded | circular | square",
|
|
49
|
+
"default": "rounded",
|
|
50
|
+
"description": "Control corner treatment."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "size",
|
|
54
|
+
"type": "small | medium | large",
|
|
55
|
+
"default": "medium",
|
|
56
|
+
"description": "Control density."
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"name": "type",
|
|
60
|
+
"type": "button | submit | reset",
|
|
61
|
+
"default": "button",
|
|
62
|
+
"description": "Native button type."
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"members": [
|
|
66
|
+
{
|
|
67
|
+
"kind": "field",
|
|
68
|
+
"name": "appearance",
|
|
69
|
+
"type": {
|
|
70
|
+
"text": "TyuiButtonAppearance"
|
|
71
|
+
},
|
|
72
|
+
"attribute": "appearance",
|
|
73
|
+
"description": "Reflected visual emphasis."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"kind": "field",
|
|
77
|
+
"name": "disabled",
|
|
78
|
+
"type": {
|
|
79
|
+
"text": "boolean"
|
|
80
|
+
},
|
|
81
|
+
"attribute": "disabled",
|
|
82
|
+
"description": "Reflected disabled state."
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
"kind": "field",
|
|
86
|
+
"name": "disabledFocusable",
|
|
87
|
+
"type": {
|
|
88
|
+
"text": "boolean"
|
|
89
|
+
},
|
|
90
|
+
"attribute": "disabled-focusable",
|
|
91
|
+
"description": "Focusable disabled state."
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
"kind": "field",
|
|
95
|
+
"name": "type",
|
|
96
|
+
"type": {
|
|
97
|
+
"text": "TyuiButtonType"
|
|
98
|
+
},
|
|
99
|
+
"attribute": "type",
|
|
100
|
+
"description": "Native button type."
|
|
101
|
+
}
|
|
102
|
+
],
|
|
103
|
+
"events": [
|
|
104
|
+
{
|
|
105
|
+
"name": "click",
|
|
106
|
+
"type": {
|
|
107
|
+
"text": "MouseEvent"
|
|
108
|
+
},
|
|
109
|
+
"description": "Native composed click from the internal button."
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
"slots": [
|
|
113
|
+
{
|
|
114
|
+
"name": "default",
|
|
115
|
+
"description": "Button label."
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
"name": "icon",
|
|
119
|
+
"description": "Decorative or named icon."
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
"cssParts": [
|
|
123
|
+
{
|
|
124
|
+
"name": "control",
|
|
125
|
+
"description": "Internal native button."
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"name": "label",
|
|
129
|
+
"description": "Label wrapper."
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"cssProperties": [
|
|
133
|
+
{
|
|
134
|
+
"name": "--ty-button-background",
|
|
135
|
+
"description": "Resting background."
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"name": "--ty-button-foreground",
|
|
139
|
+
"description": "Text color."
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "--ty-button-border-color",
|
|
143
|
+
"description": "Border color."
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"name": "--ty-button-radius",
|
|
147
|
+
"description": "Corner radius."
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
"x-design-system": {
|
|
151
|
+
"intent": "Trigger an immediate in-page action.",
|
|
152
|
+
"pattern": "Native button",
|
|
153
|
+
"layoutOwnership": "Component owns internal padding and icon-label gap; parent owns width and placement.",
|
|
154
|
+
"accessibility": [
|
|
155
|
+
"Use a button for actions, not navigation.",
|
|
156
|
+
"Icon-only buttons require an accessible name."
|
|
157
|
+
],
|
|
158
|
+
"misuse": [
|
|
159
|
+
"Do not use for navigation.",
|
|
160
|
+
"Do not place interactive controls inside the label slot."
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
],
|
|
165
|
+
"exports": [
|
|
166
|
+
{
|
|
167
|
+
"kind": "custom-element-definition",
|
|
168
|
+
"name": "tyui-button",
|
|
169
|
+
"declaration": {
|
|
170
|
+
"name": "TyuiButtonElement",
|
|
171
|
+
"module": "./src/button/tyui-button.ts"
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
]
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"kind": "javascript-module",
|
|
178
|
+
"path": "./src/input/tyui-input.ts",
|
|
179
|
+
"declarations": [
|
|
180
|
+
{
|
|
181
|
+
"kind": "class",
|
|
182
|
+
"declaration": {
|
|
183
|
+
"name": "TyuiInputElement",
|
|
184
|
+
"module": "./src/input/tyui-input.ts"
|
|
185
|
+
},
|
|
186
|
+
"name": "TyuiInputElement",
|
|
187
|
+
"tagName": "tyui-input",
|
|
188
|
+
"customElement": true,
|
|
189
|
+
"summary": "Form-associated single-line text input.",
|
|
190
|
+
"attributes": [
|
|
191
|
+
{
|
|
192
|
+
"name": "appearance",
|
|
193
|
+
"type": "outline | filled-darker | filled-lighter",
|
|
194
|
+
"default": "outline",
|
|
195
|
+
"description": "Base field style."
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"name": "default-value",
|
|
199
|
+
"type": "string",
|
|
200
|
+
"default": "",
|
|
201
|
+
"description": "Initial uncontrolled value."
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
"name": "disabled",
|
|
205
|
+
"type": "boolean",
|
|
206
|
+
"default": "false",
|
|
207
|
+
"description": "Disables the native input."
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"name": "invalid",
|
|
211
|
+
"type": "boolean",
|
|
212
|
+
"default": "false",
|
|
213
|
+
"description": "Reflects invalid visual/ARIA state."
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
"name": "name",
|
|
217
|
+
"type": "string",
|
|
218
|
+
"default": "",
|
|
219
|
+
"description": "Form field name."
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"name": "placeholder",
|
|
223
|
+
"type": "string",
|
|
224
|
+
"default": "",
|
|
225
|
+
"description": "Native placeholder, not a label."
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"name": "readonly",
|
|
229
|
+
"type": "boolean",
|
|
230
|
+
"default": "false",
|
|
231
|
+
"description": "Forwards native readOnly."
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"name": "required",
|
|
235
|
+
"type": "boolean",
|
|
236
|
+
"default": "false",
|
|
237
|
+
"description": "Participates in validity."
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"name": "size",
|
|
241
|
+
"type": "small | medium | large",
|
|
242
|
+
"default": "medium",
|
|
243
|
+
"description": "Control density."
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
"name": "type",
|
|
247
|
+
"type": "text | email | password | search | tel | url | number",
|
|
248
|
+
"default": "text",
|
|
249
|
+
"description": "Supported native input type."
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
"name": "value",
|
|
253
|
+
"type": "string",
|
|
254
|
+
"default": "",
|
|
255
|
+
"description": "Current value."
|
|
256
|
+
}
|
|
257
|
+
],
|
|
258
|
+
"members": [
|
|
259
|
+
{
|
|
260
|
+
"kind": "field",
|
|
261
|
+
"name": "value",
|
|
262
|
+
"type": {
|
|
263
|
+
"text": "string"
|
|
264
|
+
},
|
|
265
|
+
"attribute": "value",
|
|
266
|
+
"description": "Updates internal input and form value."
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"kind": "field",
|
|
270
|
+
"name": "defaultValue",
|
|
271
|
+
"type": {
|
|
272
|
+
"text": "string"
|
|
273
|
+
},
|
|
274
|
+
"attribute": "default-value",
|
|
275
|
+
"description": "Seeds initial value once."
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
"kind": "field",
|
|
279
|
+
"name": "invalid",
|
|
280
|
+
"type": {
|
|
281
|
+
"text": "boolean"
|
|
282
|
+
},
|
|
283
|
+
"attribute": "invalid",
|
|
284
|
+
"description": "Reflected invalid state."
|
|
285
|
+
}
|
|
286
|
+
],
|
|
287
|
+
"events": [
|
|
288
|
+
{
|
|
289
|
+
"name": "input",
|
|
290
|
+
"type": {
|
|
291
|
+
"text": "CustomEvent<{ value: string }>"
|
|
292
|
+
},
|
|
293
|
+
"description": "User text input after host value updates."
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"name": "change",
|
|
297
|
+
"type": {
|
|
298
|
+
"text": "Event"
|
|
299
|
+
},
|
|
300
|
+
"description": "Native change re-dispatched from host."
|
|
301
|
+
}
|
|
302
|
+
],
|
|
303
|
+
"slots": [
|
|
304
|
+
{
|
|
305
|
+
"name": "contentBefore",
|
|
306
|
+
"description": "Decorative content before text."
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"name": "contentAfter",
|
|
310
|
+
"description": "Decorative content after text."
|
|
311
|
+
}
|
|
312
|
+
],
|
|
313
|
+
"cssParts": [
|
|
314
|
+
{
|
|
315
|
+
"name": "control",
|
|
316
|
+
"description": "Input surface wrapper."
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"name": "input",
|
|
320
|
+
"description": "Internal native input."
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
"name": "content-before",
|
|
324
|
+
"description": "Before slot wrapper."
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"name": "content-after",
|
|
328
|
+
"description": "After slot wrapper."
|
|
329
|
+
}
|
|
330
|
+
],
|
|
331
|
+
"cssProperties": [
|
|
332
|
+
{
|
|
333
|
+
"name": "--ty-input-background",
|
|
334
|
+
"description": "Resting field background."
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
"name": "--ty-input-border-color",
|
|
338
|
+
"description": "Resting border."
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"name": "--ty-input-focus-indicator-color",
|
|
342
|
+
"description": "Focus indicator color."
|
|
343
|
+
}
|
|
344
|
+
],
|
|
345
|
+
"x-design-system": {
|
|
346
|
+
"intent": "Capture short single-line text.",
|
|
347
|
+
"pattern": "Native input",
|
|
348
|
+
"layoutOwnership": "Component owns internal padding, gap, and native input; field wrapper owns label and messages.",
|
|
349
|
+
"accessibility": [
|
|
350
|
+
"Requires a visible label or accessible name.",
|
|
351
|
+
"Placeholder is not a label."
|
|
352
|
+
],
|
|
353
|
+
"misuse": [
|
|
354
|
+
"Do not put focusable controls in content slots.",
|
|
355
|
+
"Use combobox/search components for popups or clear buttons."
|
|
356
|
+
]
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
],
|
|
360
|
+
"exports": [
|
|
361
|
+
{
|
|
362
|
+
"kind": "custom-element-definition",
|
|
363
|
+
"name": "tyui-input",
|
|
364
|
+
"declaration": {
|
|
365
|
+
"name": "TyuiInputElement",
|
|
366
|
+
"module": "./src/input/tyui-input.ts"
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
]
|
|
370
|
+
},
|
|
371
|
+
{
|
|
372
|
+
"kind": "javascript-module",
|
|
373
|
+
"path": "./src/checkbox/tyui-checkbox.ts",
|
|
374
|
+
"declarations": [
|
|
375
|
+
{
|
|
376
|
+
"kind": "class",
|
|
377
|
+
"declaration": {
|
|
378
|
+
"name": "TyuiCheckboxElement",
|
|
379
|
+
"module": "./src/checkbox/tyui-checkbox.ts"
|
|
380
|
+
},
|
|
381
|
+
"name": "TyuiCheckboxElement",
|
|
382
|
+
"tagName": "tyui-checkbox",
|
|
383
|
+
"customElement": true,
|
|
384
|
+
"summary": "Native checkbox custom element.",
|
|
385
|
+
"attributes": [
|
|
386
|
+
{
|
|
387
|
+
"name": "checked",
|
|
388
|
+
"type": "boolean",
|
|
389
|
+
"default": "false",
|
|
390
|
+
"description": "Checked state."
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"name": "disabled",
|
|
394
|
+
"type": "boolean",
|
|
395
|
+
"default": "false",
|
|
396
|
+
"description": "Disabled state."
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"name": "indeterminate",
|
|
400
|
+
"type": "boolean",
|
|
401
|
+
"default": "false",
|
|
402
|
+
"description": "Mixed visual state."
|
|
403
|
+
},
|
|
404
|
+
{
|
|
405
|
+
"name": "value",
|
|
406
|
+
"type": "string",
|
|
407
|
+
"default": "on",
|
|
408
|
+
"description": "Submitted value."
|
|
409
|
+
}
|
|
410
|
+
],
|
|
411
|
+
"members": [
|
|
412
|
+
{
|
|
413
|
+
"kind": "field",
|
|
414
|
+
"name": "checked",
|
|
415
|
+
"type": {
|
|
416
|
+
"text": "boolean"
|
|
417
|
+
},
|
|
418
|
+
"attribute": "checked",
|
|
419
|
+
"description": "Reflected checked state."
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"kind": "field",
|
|
423
|
+
"name": "indeterminate",
|
|
424
|
+
"type": {
|
|
425
|
+
"text": "boolean"
|
|
426
|
+
},
|
|
427
|
+
"attribute": "indeterminate",
|
|
428
|
+
"description": "Reflected mixed state."
|
|
429
|
+
}
|
|
430
|
+
],
|
|
431
|
+
"events": [
|
|
432
|
+
{
|
|
433
|
+
"name": "change",
|
|
434
|
+
"type": {
|
|
435
|
+
"text": "CustomEvent<{ checked: boolean }>"
|
|
436
|
+
},
|
|
437
|
+
"description": "User change event."
|
|
438
|
+
}
|
|
439
|
+
],
|
|
440
|
+
"slots": [
|
|
441
|
+
{
|
|
442
|
+
"name": "default",
|
|
443
|
+
"description": "Checkbox label."
|
|
444
|
+
}
|
|
445
|
+
],
|
|
446
|
+
"cssParts": [
|
|
447
|
+
{
|
|
448
|
+
"name": "control",
|
|
449
|
+
"description": "Native input."
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
"name": "box",
|
|
453
|
+
"description": "Visual box."
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"name": "label",
|
|
457
|
+
"description": "Label wrapper."
|
|
458
|
+
}
|
|
459
|
+
],
|
|
460
|
+
"cssProperties": [
|
|
461
|
+
{
|
|
462
|
+
"name": "--ty-checkbox-size",
|
|
463
|
+
"description": "Checkbox visual size."
|
|
464
|
+
}
|
|
465
|
+
],
|
|
466
|
+
"x-design-system": {
|
|
467
|
+
"intent": "Toggle an independent boolean choice.",
|
|
468
|
+
"pattern": "Native checkbox",
|
|
469
|
+
"layoutOwnership": "Component owns indicator/label gap; parent owns grouping.",
|
|
470
|
+
"accessibility": [
|
|
471
|
+
"Use for independent choices.",
|
|
472
|
+
"Use radio for mutually exclusive choices."
|
|
473
|
+
],
|
|
474
|
+
"misuse": ["Do not use checkbox as a command button."]
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
],
|
|
478
|
+
"exports": [
|
|
479
|
+
{
|
|
480
|
+
"kind": "custom-element-definition",
|
|
481
|
+
"name": "tyui-checkbox",
|
|
482
|
+
"declaration": {
|
|
483
|
+
"name": "TyuiCheckboxElement",
|
|
484
|
+
"module": "./src/checkbox/tyui-checkbox.ts"
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
]
|
|
488
|
+
},
|
|
489
|
+
{
|
|
490
|
+
"kind": "javascript-module",
|
|
491
|
+
"path": "./src/radio/tyui-radio.ts",
|
|
492
|
+
"declarations": [
|
|
493
|
+
{
|
|
494
|
+
"kind": "class",
|
|
495
|
+
"declaration": {
|
|
496
|
+
"name": "TyuiRadioElement",
|
|
497
|
+
"module": "./src/radio/tyui-radio.ts"
|
|
498
|
+
},
|
|
499
|
+
"name": "TyuiRadioElement",
|
|
500
|
+
"tagName": "tyui-radio",
|
|
501
|
+
"customElement": true,
|
|
502
|
+
"summary": "Radio option used inside tyui-radio-group.",
|
|
503
|
+
"attributes": [
|
|
504
|
+
{
|
|
505
|
+
"name": "checked",
|
|
506
|
+
"type": "boolean",
|
|
507
|
+
"default": "false",
|
|
508
|
+
"description": "Checked state controlled by group."
|
|
509
|
+
},
|
|
510
|
+
{
|
|
511
|
+
"name": "disabled",
|
|
512
|
+
"type": "boolean",
|
|
513
|
+
"default": "false",
|
|
514
|
+
"description": "Disabled state."
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
"name": "value",
|
|
518
|
+
"type": "string",
|
|
519
|
+
"default": "",
|
|
520
|
+
"description": "Option value."
|
|
521
|
+
}
|
|
522
|
+
],
|
|
523
|
+
"members": [
|
|
524
|
+
{
|
|
525
|
+
"kind": "field",
|
|
526
|
+
"name": "value",
|
|
527
|
+
"type": {
|
|
528
|
+
"text": "string"
|
|
529
|
+
},
|
|
530
|
+
"attribute": "value",
|
|
531
|
+
"description": "Option value."
|
|
532
|
+
}
|
|
533
|
+
],
|
|
534
|
+
"events": [
|
|
535
|
+
{
|
|
536
|
+
"name": "change",
|
|
537
|
+
"type": {
|
|
538
|
+
"text": "Event"
|
|
539
|
+
},
|
|
540
|
+
"description": "Native input change reflected to host."
|
|
541
|
+
}
|
|
542
|
+
],
|
|
543
|
+
"slots": [
|
|
544
|
+
{
|
|
545
|
+
"name": "default",
|
|
546
|
+
"description": "Radio label."
|
|
547
|
+
}
|
|
548
|
+
],
|
|
549
|
+
"cssParts": [
|
|
550
|
+
{
|
|
551
|
+
"name": "root",
|
|
552
|
+
"description": "Label root."
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"name": "input",
|
|
556
|
+
"description": "Native radio input."
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"name": "circle",
|
|
560
|
+
"description": "Visual circle."
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"name": "dot",
|
|
564
|
+
"description": "Selected dot."
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"name": "label",
|
|
568
|
+
"description": "Label wrapper."
|
|
569
|
+
}
|
|
570
|
+
],
|
|
571
|
+
"cssProperties": [
|
|
572
|
+
{
|
|
573
|
+
"name": "--ty-radio-checked-color",
|
|
574
|
+
"description": "Selected fill and border."
|
|
575
|
+
}
|
|
576
|
+
],
|
|
577
|
+
"x-design-system": {
|
|
578
|
+
"intent": "Represent one option in a mutually exclusive set.",
|
|
579
|
+
"pattern": "Native radio",
|
|
580
|
+
"layoutOwnership": "Radio owns native input and indicator; radio group owns value and roving tabindex.",
|
|
581
|
+
"accessibility": ["Use inside tyui-radio-group for coordinated keyboard behavior."],
|
|
582
|
+
"misuse": ["Do not use standalone radios for unrelated boolean choices."]
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
],
|
|
586
|
+
"exports": [
|
|
587
|
+
{
|
|
588
|
+
"kind": "custom-element-definition",
|
|
589
|
+
"name": "tyui-radio",
|
|
590
|
+
"declaration": {
|
|
591
|
+
"name": "TyuiRadioElement",
|
|
592
|
+
"module": "./src/radio/tyui-radio.ts"
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
]
|
|
596
|
+
},
|
|
597
|
+
{
|
|
598
|
+
"kind": "javascript-module",
|
|
599
|
+
"path": "./src/radio-group/tyui-radio-group.ts",
|
|
600
|
+
"declarations": [
|
|
601
|
+
{
|
|
602
|
+
"kind": "class",
|
|
603
|
+
"declaration": {
|
|
604
|
+
"name": "TyuiRadioGroupElement",
|
|
605
|
+
"module": "./src/radio-group/tyui-radio-group.ts"
|
|
606
|
+
},
|
|
607
|
+
"name": "TyuiRadioGroupElement",
|
|
608
|
+
"tagName": "tyui-radio-group",
|
|
609
|
+
"customElement": true,
|
|
610
|
+
"summary": "Form-associated radio group coordinating tyui-radio children.",
|
|
611
|
+
"attributes": [
|
|
612
|
+
{
|
|
613
|
+
"name": "disabled",
|
|
614
|
+
"type": "boolean",
|
|
615
|
+
"default": "false",
|
|
616
|
+
"description": "Disables the group."
|
|
617
|
+
},
|
|
618
|
+
{
|
|
619
|
+
"name": "label",
|
|
620
|
+
"type": "string",
|
|
621
|
+
"default": "",
|
|
622
|
+
"description": "Group label text."
|
|
623
|
+
},
|
|
624
|
+
{
|
|
625
|
+
"name": "layout",
|
|
626
|
+
"type": "vertical | horizontal | horizontal-stacked",
|
|
627
|
+
"default": "vertical",
|
|
628
|
+
"description": "Child layout."
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
"name": "name",
|
|
632
|
+
"type": "string",
|
|
633
|
+
"default": "",
|
|
634
|
+
"description": "Form field name."
|
|
635
|
+
},
|
|
636
|
+
{
|
|
637
|
+
"name": "required",
|
|
638
|
+
"type": "boolean",
|
|
639
|
+
"default": "false",
|
|
640
|
+
"description": "Requires selection."
|
|
641
|
+
},
|
|
642
|
+
{
|
|
643
|
+
"name": "value",
|
|
644
|
+
"type": "string",
|
|
645
|
+
"default": "",
|
|
646
|
+
"description": "Selected radio value."
|
|
647
|
+
}
|
|
648
|
+
],
|
|
649
|
+
"members": [
|
|
650
|
+
{
|
|
651
|
+
"kind": "field",
|
|
652
|
+
"name": "value",
|
|
653
|
+
"type": {
|
|
654
|
+
"text": "string"
|
|
655
|
+
},
|
|
656
|
+
"attribute": "value",
|
|
657
|
+
"description": "Selected value."
|
|
658
|
+
}
|
|
659
|
+
],
|
|
660
|
+
"events": [
|
|
661
|
+
{
|
|
662
|
+
"name": "change",
|
|
663
|
+
"type": {
|
|
664
|
+
"text": "CustomEvent<{ value: string }>"
|
|
665
|
+
},
|
|
666
|
+
"description": "User selection change."
|
|
667
|
+
}
|
|
668
|
+
],
|
|
669
|
+
"slots": [
|
|
670
|
+
{
|
|
671
|
+
"name": "default",
|
|
672
|
+
"description": "tyui-radio children."
|
|
673
|
+
}
|
|
674
|
+
],
|
|
675
|
+
"cssParts": [
|
|
676
|
+
{
|
|
677
|
+
"name": "label",
|
|
678
|
+
"description": "Group label."
|
|
679
|
+
},
|
|
680
|
+
{
|
|
681
|
+
"name": "items",
|
|
682
|
+
"description": "Radio item container."
|
|
683
|
+
}
|
|
684
|
+
],
|
|
685
|
+
"cssProperties": [
|
|
686
|
+
{
|
|
687
|
+
"name": "--ty-radio-group-gap",
|
|
688
|
+
"description": "Gap between radio items."
|
|
689
|
+
}
|
|
690
|
+
],
|
|
691
|
+
"x-design-system": {
|
|
692
|
+
"intent": "Select one option from a small set.",
|
|
693
|
+
"pattern": "ARIA radiogroup with native radio children",
|
|
694
|
+
"layoutOwnership": "Group owns child layout, value, roving tabindex, and form state.",
|
|
695
|
+
"accessibility": [
|
|
696
|
+
"Tab enters one active radio.",
|
|
697
|
+
"Arrow keys move focus and selection."
|
|
698
|
+
],
|
|
699
|
+
"misuse": ["Do not put non-radio interactive controls in the default slot."]
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
],
|
|
703
|
+
"exports": [
|
|
704
|
+
{
|
|
705
|
+
"kind": "custom-element-definition",
|
|
706
|
+
"name": "tyui-radio-group",
|
|
707
|
+
"declaration": {
|
|
708
|
+
"name": "TyuiRadioGroupElement",
|
|
709
|
+
"module": "./src/radio-group/tyui-radio-group.ts"
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
]
|
|
713
|
+
}
|
|
714
|
+
]
|
|
715
|
+
}
|