stimeo-ui 0.2.1 → 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 (184) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/dist/cable/index.d.ts +16 -16
  3. package/dist/cable/index.js.map +1 -1
  4. package/dist/controllers/accordion_controller.js +10 -0
  5. package/dist/controllers/accordion_controller.js.map +1 -1
  6. package/dist/controllers/alert_dialog_controller.js.map +1 -1
  7. package/dist/controllers/breadcrumb_controller.d.ts +97 -10
  8. package/dist/controllers/breadcrumb_controller.js +225 -13
  9. package/dist/controllers/breadcrumb_controller.js.map +1 -1
  10. package/dist/controllers/calendar_controller.d.ts +11 -1
  11. package/dist/controllers/calendar_controller.js +89 -22
  12. package/dist/controllers/calendar_controller.js.map +1 -1
  13. package/dist/controllers/carousel_controller.d.ts +16 -1
  14. package/dist/controllers/carousel_controller.js +47 -6
  15. package/dist/controllers/carousel_controller.js.map +1 -1
  16. package/dist/controllers/collapsible_controller.js +2 -2
  17. package/dist/controllers/collapsible_controller.js.map +1 -1
  18. package/dist/controllers/color_picker_controller.d.ts +12 -1
  19. package/dist/controllers/color_picker_controller.js +46 -7
  20. package/dist/controllers/color_picker_controller.js.map +1 -1
  21. package/dist/controllers/combobox_controller.d.ts +14 -1
  22. package/dist/controllers/combobox_controller.js +162 -23
  23. package/dist/controllers/combobox_controller.js.map +1 -1
  24. package/dist/controllers/command_palette_controller.d.ts +2 -0
  25. package/dist/controllers/command_palette_controller.js +194 -17
  26. package/dist/controllers/command_palette_controller.js.map +1 -1
  27. package/dist/controllers/confirm_controller.js.map +1 -1
  28. package/dist/controllers/context_menu_controller.d.ts +7 -6
  29. package/dist/controllers/context_menu_controller.js +32 -10
  30. package/dist/controllers/context_menu_controller.js.map +1 -1
  31. package/dist/controllers/count_up_controller.js.map +1 -1
  32. package/dist/controllers/data_grid_controller.d.ts +19 -1
  33. package/dist/controllers/data_grid_controller.js +82 -4
  34. package/dist/controllers/data_grid_controller.js.map +1 -1
  35. package/dist/controllers/date_range_picker_controller.d.ts +1 -0
  36. package/dist/controllers/date_range_picker_controller.js +27 -3
  37. package/dist/controllers/date_range_picker_controller.js.map +1 -1
  38. package/dist/controllers/dialog_controller.js.map +1 -1
  39. package/dist/controllers/dismissible_controller.js.map +1 -1
  40. package/dist/controllers/drawer_controller.js.map +1 -1
  41. package/dist/controllers/dropdown_controller.d.ts +1 -2
  42. package/dist/controllers/dropdown_controller.js.map +1 -1
  43. package/dist/controllers/editable_controller.js +1 -0
  44. package/dist/controllers/editable_controller.js.map +1 -1
  45. package/dist/controllers/focus_controller.d.ts +1 -1
  46. package/dist/controllers/focus_controller.js.map +1 -1
  47. package/dist/controllers/form_field_controller.js.map +1 -1
  48. package/dist/controllers/form_validation_controller.js +1 -1
  49. package/dist/controllers/form_validation_controller.js.map +1 -1
  50. package/dist/controllers/highlight_controller.js.map +1 -1
  51. package/dist/controllers/hover_card_controller.d.ts +1 -1
  52. package/dist/controllers/hover_card_controller.js.map +1 -1
  53. package/dist/controllers/intersection_controller.js +36 -11
  54. package/dist/controllers/intersection_controller.js.map +1 -1
  55. package/dist/controllers/lazy_frame_controller.js +31 -10
  56. package/dist/controllers/lazy_frame_controller.js.map +1 -1
  57. package/dist/controllers/listbox_controller.d.ts +9 -2
  58. package/dist/controllers/listbox_controller.js +257 -53
  59. package/dist/controllers/listbox_controller.js.map +1 -1
  60. package/dist/controllers/local_time_controller.js +2 -2
  61. package/dist/controllers/local_time_controller.js.map +1 -1
  62. package/dist/controllers/menu_controller.d.ts +29 -11
  63. package/dist/controllers/menu_controller.js +104 -17
  64. package/dist/controllers/menu_controller.js.map +1 -1
  65. package/dist/controllers/menubar_controller.d.ts +91 -11
  66. package/dist/controllers/menubar_controller.js +415 -63
  67. package/dist/controllers/menubar_controller.js.map +1 -1
  68. package/dist/controllers/meter_controller.js.map +1 -1
  69. package/dist/controllers/multi_select_controller.d.ts +31 -5
  70. package/dist/controllers/multi_select_controller.js +312 -29
  71. package/dist/controllers/multi_select_controller.js.map +1 -1
  72. package/dist/controllers/navigation_menu_controller.d.ts +65 -18
  73. package/dist/controllers/navigation_menu_controller.js +154 -27
  74. package/dist/controllers/navigation_menu_controller.js.map +1 -1
  75. package/dist/controllers/nested_form_controller.d.ts +4 -5
  76. package/dist/controllers/nested_form_controller.js.map +1 -1
  77. package/dist/controllers/number_input_controller.d.ts +1 -1
  78. package/dist/controllers/number_input_controller.js +7 -0
  79. package/dist/controllers/number_input_controller.js.map +1 -1
  80. package/dist/controllers/otp_controller.js +18 -1
  81. package/dist/controllers/otp_controller.js.map +1 -1
  82. package/dist/controllers/overflow_indicator_controller.d.ts +3 -2
  83. package/dist/controllers/overflow_indicator_controller.js +81 -13
  84. package/dist/controllers/overflow_indicator_controller.js.map +1 -1
  85. package/dist/controllers/overflow_menu_controller.d.ts +78 -19
  86. package/dist/controllers/overflow_menu_controller.js +381 -57
  87. package/dist/controllers/overflow_menu_controller.js.map +1 -1
  88. package/dist/controllers/pagination_controller.d.ts +36 -5
  89. package/dist/controllers/pagination_controller.js +163 -32
  90. package/dist/controllers/pagination_controller.js.map +1 -1
  91. package/dist/controllers/persist_controller.js +6 -6
  92. package/dist/controllers/persist_controller.js.map +1 -1
  93. package/dist/controllers/pointer_drag_controller.d.ts +2 -3
  94. package/dist/controllers/pointer_drag_controller.js +9 -1
  95. package/dist/controllers/pointer_drag_controller.js.map +1 -1
  96. package/dist/controllers/popover_controller.d.ts +1 -2
  97. package/dist/controllers/popover_controller.js +2 -2
  98. package/dist/controllers/popover_controller.js.map +1 -1
  99. package/dist/controllers/portal_controller.d.ts +4 -4
  100. package/dist/controllers/portal_controller.js.map +1 -1
  101. package/dist/controllers/progress_controller.js.map +1 -1
  102. package/dist/controllers/radio_group_controller.js +22 -3
  103. package/dist/controllers/radio_group_controller.js.map +1 -1
  104. package/dist/controllers/range_slider_controller.d.ts +14 -4
  105. package/dist/controllers/range_slider_controller.js +32 -6
  106. package/dist/controllers/range_slider_controller.js.map +1 -1
  107. package/dist/controllers/rating_controller.js +16 -2
  108. package/dist/controllers/rating_controller.js.map +1 -1
  109. package/dist/controllers/read_more_controller.js +63 -19
  110. package/dist/controllers/read_more_controller.js.map +1 -1
  111. package/dist/controllers/reading_progress_controller.js.map +1 -1
  112. package/dist/controllers/resizable_controller.d.ts +3 -1
  113. package/dist/controllers/resizable_controller.js +65 -1
  114. package/dist/controllers/resizable_controller.js.map +1 -1
  115. package/dist/controllers/roving_controller.js +17 -2
  116. package/dist/controllers/roving_controller.js.map +1 -1
  117. package/dist/controllers/scroll_area_controller.js +86 -12
  118. package/dist/controllers/scroll_area_controller.js.map +1 -1
  119. package/dist/controllers/scroll_restore_controller.js +1 -1
  120. package/dist/controllers/scroll_restore_controller.js.map +1 -1
  121. package/dist/controllers/scroll_visibility_controller.d.ts +6 -3
  122. package/dist/controllers/scroll_visibility_controller.js +33 -3
  123. package/dist/controllers/scroll_visibility_controller.js.map +1 -1
  124. package/dist/controllers/scrollspy_controller.d.ts +64 -15
  125. package/dist/controllers/scrollspy_controller.js +346 -73
  126. package/dist/controllers/scrollspy_controller.js.map +1 -1
  127. package/dist/controllers/separator_controller.d.ts +20 -5
  128. package/dist/controllers/separator_controller.js +9 -0
  129. package/dist/controllers/separator_controller.js.map +1 -1
  130. package/dist/controllers/sidebar_controller.d.ts +1 -1
  131. package/dist/controllers/sidebar_controller.js.map +1 -1
  132. package/dist/controllers/skeleton_controller.js +1 -1
  133. package/dist/controllers/skeleton_controller.js.map +1 -1
  134. package/dist/controllers/slider_controller.d.ts +11 -1
  135. package/dist/controllers/slider_controller.js +32 -6
  136. package/dist/controllers/slider_controller.js.map +1 -1
  137. package/dist/controllers/sortable_controller.d.ts +3 -1
  138. package/dist/controllers/sortable_controller.js +34 -3
  139. package/dist/controllers/sortable_controller.js.map +1 -1
  140. package/dist/controllers/spinner_controller.js +1 -1
  141. package/dist/controllers/spinner_controller.js.map +1 -1
  142. package/dist/controllers/stick_to_bottom_controller.d.ts +5 -6
  143. package/dist/controllers/stick_to_bottom_controller.js +2 -1
  144. package/dist/controllers/stick_to_bottom_controller.js.map +1 -1
  145. package/dist/controllers/sticky_observer_controller.js +32 -11
  146. package/dist/controllers/sticky_observer_controller.js.map +1 -1
  147. package/dist/controllers/submit_once_controller.d.ts +2 -2
  148. package/dist/controllers/submit_once_controller.js.map +1 -1
  149. package/dist/controllers/switch_controller.js +1 -0
  150. package/dist/controllers/switch_controller.js.map +1 -1
  151. package/dist/controllers/tabs_controller.d.ts +11 -3
  152. package/dist/controllers/tabs_controller.js +26 -3
  153. package/dist/controllers/tabs_controller.js.map +1 -1
  154. package/dist/controllers/tags_input_controller.js +22 -2
  155. package/dist/controllers/tags_input_controller.js.map +1 -1
  156. package/dist/controllers/theme_controller.d.ts +1 -1
  157. package/dist/controllers/theme_controller.js +22 -3
  158. package/dist/controllers/theme_controller.js.map +1 -1
  159. package/dist/controllers/time_picker_controller.js +20 -1
  160. package/dist/controllers/time_picker_controller.js.map +1 -1
  161. package/dist/controllers/toast_controller.d.ts +4 -5
  162. package/dist/controllers/toast_controller.js +4 -5
  163. package/dist/controllers/toast_controller.js.map +1 -1
  164. package/dist/controllers/toggle_group_controller.js +23 -2
  165. package/dist/controllers/toggle_group_controller.js.map +1 -1
  166. package/dist/controllers/toolbar_controller.d.ts +53 -13
  167. package/dist/controllers/toolbar_controller.js +230 -31
  168. package/dist/controllers/toolbar_controller.js.map +1 -1
  169. package/dist/controllers/tooltip_controller.d.ts +1 -1
  170. package/dist/controllers/tooltip_controller.js.map +1 -1
  171. package/dist/controllers/transition_controller.js.map +1 -1
  172. package/dist/controllers/tree_view_controller.d.ts +87 -6
  173. package/dist/controllers/tree_view_controller.js +467 -51
  174. package/dist/controllers/tree_view_controller.js.map +1 -1
  175. package/dist/index.js +3514 -689
  176. package/dist/index.js.map +1 -1
  177. package/dist/inspector/cli.d.ts +375 -39
  178. package/dist/inspector/cli.js +228 -14
  179. package/dist/inspector/cli.js.map +1 -1
  180. package/dist/inspector/cli_bin.js +419 -48
  181. package/dist/inspector/cli_bin.js.map +1 -1
  182. package/dist/inspector/examples.json +24 -24
  183. package/dist/inspector/manifest.json +1040 -125
  184. package/package.json +5 -6
@@ -1,6 +1,6 @@
1
1
  {
2
- "schemaVersion": 5,
3
- "packageVersion": "0.2.1",
2
+ "schemaVersion": 8,
3
+ "packageVersion": "0.3.0",
4
4
  "controllers": {
5
5
  "stimeo--accordion": {
6
6
  "targets": [
@@ -19,10 +19,15 @@
19
19
  "trigger",
20
20
  "panel"
21
21
  ],
22
+ "conditionalTargets": [],
22
23
  "a11y": [],
23
24
  "keyboard": [],
24
25
  "managedAria": [],
25
- "compositions": []
26
+ "compositions": [],
27
+ "companions": [],
28
+ "targetDeclarations": [],
29
+ "cardinality": [],
30
+ "forbiddenAria": []
26
31
  },
27
32
  "stimeo--alert-dialog": {
28
33
  "targets": [
@@ -44,6 +49,7 @@
44
49
  "trigger",
45
50
  "dialog"
46
51
  ],
52
+ "conditionalTargets": [],
47
53
  "a11y": [
48
54
  {
49
55
  "target": "dialog",
@@ -76,7 +82,11 @@
76
82
  ],
77
83
  "keyboard": [],
78
84
  "managedAria": [],
79
- "compositions": []
85
+ "compositions": [],
86
+ "companions": [],
87
+ "targetDeclarations": [],
88
+ "cardinality": [],
89
+ "forbiddenAria": []
80
90
  },
81
91
  "stimeo--announcer": {
82
92
  "targets": [
@@ -92,10 +102,15 @@
92
102
  ],
93
103
  "events": [],
94
104
  "requiredTargets": [],
105
+ "conditionalTargets": [],
95
106
  "a11y": [],
96
107
  "keyboard": [],
97
108
  "managedAria": [],
98
- "compositions": []
109
+ "compositions": [],
110
+ "companions": [],
111
+ "targetDeclarations": [],
112
+ "cardinality": [],
113
+ "forbiddenAria": []
99
114
  },
100
115
  "stimeo--aspect-ratio": {
101
116
  "targets": [
@@ -107,10 +122,15 @@
107
122
  "actions": [],
108
123
  "events": [],
109
124
  "requiredTargets": [],
125
+ "conditionalTargets": [],
110
126
  "a11y": [],
111
127
  "keyboard": [],
112
128
  "managedAria": [],
113
- "compositions": []
129
+ "compositions": [],
130
+ "companions": [],
131
+ "targetDeclarations": [],
132
+ "cardinality": [],
133
+ "forbiddenAria": []
114
134
  },
115
135
  "stimeo--auto-submit": {
116
136
  "targets": [
@@ -130,10 +150,15 @@
130
150
  "done"
131
151
  ],
132
152
  "requiredTargets": [],
153
+ "conditionalTargets": [],
133
154
  "a11y": [],
134
155
  "keyboard": [],
135
156
  "managedAria": [],
136
- "compositions": []
157
+ "compositions": [],
158
+ "companions": [],
159
+ "targetDeclarations": [],
160
+ "cardinality": [],
161
+ "forbiddenAria": []
137
162
  },
138
163
  "stimeo--avatar": {
139
164
  "targets": [
@@ -153,10 +178,15 @@
153
178
  "requiredTargets": [
154
179
  "image"
155
180
  ],
181
+ "conditionalTargets": [],
156
182
  "a11y": [],
157
183
  "keyboard": [],
158
184
  "managedAria": [],
159
- "compositions": []
185
+ "compositions": [],
186
+ "companions": [],
187
+ "targetDeclarations": [],
188
+ "cardinality": [],
189
+ "forbiddenAria": []
160
190
  },
161
191
  "stimeo--breadcrumb": {
162
192
  "targets": [
@@ -167,7 +197,8 @@
167
197
  ],
168
198
  "values": [],
169
199
  "actions": [
170
- "toggle"
200
+ "toggle",
201
+ "update"
171
202
  ],
172
203
  "events": [
173
204
  "toggle"
@@ -175,10 +206,24 @@
175
206
  "requiredTargets": [
176
207
  "list"
177
208
  ],
209
+ "conditionalTargets": [
210
+ {
211
+ "whenPresent": "collapsible",
212
+ "require": [
213
+ "ellipsis",
214
+ "trigger"
215
+ ],
216
+ "suggestion": "Add the disclosure an author-marked \"collapsible\" needs: an \"ellipsis\" item and a \"trigger\" button inside it. Without both, the trail never collapses."
217
+ }
218
+ ],
178
219
  "a11y": [],
179
220
  "keyboard": [],
180
221
  "managedAria": [],
181
- "compositions": []
222
+ "compositions": [],
223
+ "companions": [],
224
+ "targetDeclarations": [],
225
+ "cardinality": [],
226
+ "forbiddenAria": []
182
227
  },
183
228
  "stimeo--bulk-select": {
184
229
  "targets": [
@@ -203,10 +248,15 @@
203
248
  "item",
204
249
  "bar"
205
250
  ],
251
+ "conditionalTargets": [],
206
252
  "a11y": [],
207
253
  "keyboard": [],
208
254
  "managedAria": [],
209
- "compositions": []
255
+ "compositions": [],
256
+ "companions": [],
257
+ "targetDeclarations": [],
258
+ "cardinality": [],
259
+ "forbiddenAria": []
210
260
  },
211
261
  "stimeo--calendar": {
212
262
  "targets": [
@@ -234,10 +284,15 @@
234
284
  "requiredTargets": [
235
285
  "grid"
236
286
  ],
287
+ "conditionalTargets": [],
237
288
  "a11y": [],
238
289
  "keyboard": [],
239
290
  "managedAria": [],
240
- "compositions": []
291
+ "compositions": [],
292
+ "companions": [],
293
+ "targetDeclarations": [],
294
+ "cardinality": [],
295
+ "forbiddenAria": []
241
296
  },
242
297
  "stimeo--carousel": {
243
298
  "targets": [
@@ -271,6 +326,7 @@
271
326
  "slide",
272
327
  "picker"
273
328
  ],
329
+ "conditionalTargets": [],
274
330
  "a11y": [
275
331
  {
276
332
  "target": "",
@@ -310,6 +366,14 @@
310
366
  ],
311
367
  "suggestion": "Add aria-roledescription=\"slide\" to each slide target."
312
368
  },
369
+ {
370
+ "target": "slide",
371
+ "attrs": [
372
+ "aria-labelledby",
373
+ "aria-label"
374
+ ],
375
+ "suggestion": "Name each slide via aria-labelledby (its picker's id) or aria-label."
376
+ },
313
377
  {
314
378
  "target": "picker",
315
379
  "attrs": [
@@ -323,7 +387,22 @@
323
387
  ],
324
388
  "keyboard": [],
325
389
  "managedAria": [],
326
- "compositions": []
390
+ "compositions": [],
391
+ "companions": [],
392
+ "targetDeclarations": [],
393
+ "cardinality": [
394
+ {
395
+ "within": "",
396
+ "target": "picker",
397
+ "attr": "aria-selected",
398
+ "values": [
399
+ "true"
400
+ ],
401
+ "max": 1,
402
+ "suggestion": "Leave aria-selected=\"true\" on exactly one picker and set the others to \"false\" — the carousel shows one slide, and connect keeps the first."
403
+ }
404
+ ],
405
+ "forbiddenAria": []
327
406
  },
328
407
  "stimeo--character-counter": {
329
408
  "targets": [
@@ -340,10 +419,15 @@
340
419
  "change"
341
420
  ],
342
421
  "requiredTargets": [],
422
+ "conditionalTargets": [],
343
423
  "a11y": [],
344
424
  "keyboard": [],
345
425
  "managedAria": [],
346
- "compositions": []
426
+ "compositions": [],
427
+ "companions": [],
428
+ "targetDeclarations": [],
429
+ "cardinality": [],
430
+ "forbiddenAria": []
347
431
  },
348
432
  "stimeo--checkbox": {
349
433
  "targets": [
@@ -361,10 +445,15 @@
361
445
  "requiredTargets": [
362
446
  "parent"
363
447
  ],
448
+ "conditionalTargets": [],
364
449
  "a11y": [],
365
450
  "keyboard": [],
366
451
  "managedAria": [],
367
- "compositions": []
452
+ "compositions": [],
453
+ "companions": [],
454
+ "targetDeclarations": [],
455
+ "cardinality": [],
456
+ "forbiddenAria": []
368
457
  },
369
458
  "stimeo--clipboard": {
370
459
  "targets": [
@@ -388,10 +477,15 @@
388
477
  "button",
389
478
  "feedback"
390
479
  ],
480
+ "conditionalTargets": [],
391
481
  "a11y": [],
392
482
  "keyboard": [],
393
483
  "managedAria": [],
394
- "compositions": []
484
+ "compositions": [],
485
+ "companions": [],
486
+ "targetDeclarations": [],
487
+ "cardinality": [],
488
+ "forbiddenAria": []
395
489
  },
396
490
  "stimeo--collapsible": {
397
491
  "targets": [
@@ -409,10 +503,15 @@
409
503
  "trigger",
410
504
  "content"
411
505
  ],
506
+ "conditionalTargets": [],
412
507
  "a11y": [],
413
508
  "keyboard": [],
414
509
  "managedAria": [],
415
- "compositions": []
510
+ "compositions": [],
511
+ "companions": [],
512
+ "targetDeclarations": [],
513
+ "cardinality": [],
514
+ "forbiddenAria": []
416
515
  },
417
516
  "stimeo--color-picker": {
418
517
  "targets": [
@@ -423,7 +522,8 @@
423
522
  ],
424
523
  "values": [
425
524
  "value",
426
- "alpha"
525
+ "alpha",
526
+ "logicalTrack"
427
527
  ],
428
528
  "actions": [
429
529
  "onHexInput",
@@ -436,6 +536,7 @@
436
536
  "requiredTargets": [
437
537
  "slider"
438
538
  ],
539
+ "conditionalTargets": [],
439
540
  "a11y": [
440
541
  {
441
542
  "target": "slider",
@@ -464,7 +565,11 @@
464
565
  }
465
566
  ],
466
567
  "managedAria": [],
467
- "compositions": []
568
+ "compositions": [],
569
+ "companions": [],
570
+ "targetDeclarations": [],
571
+ "cardinality": [],
572
+ "forbiddenAria": []
468
573
  },
469
574
  "stimeo--combobox": {
470
575
  "targets": [
@@ -487,6 +592,7 @@
487
592
  "input",
488
593
  "list"
489
594
  ],
595
+ "conditionalTargets": [],
490
596
  "a11y": [
491
597
  {
492
598
  "target": "input",
@@ -508,6 +614,21 @@
508
614
  ],
509
615
  "suggestion": "Add aria-autocomplete=\"list\" to the input target."
510
616
  },
617
+ {
618
+ "target": "input",
619
+ "attrs": [
620
+ "aria-labelledby",
621
+ "aria-label"
622
+ ],
623
+ "whenElement": {
624
+ "exceptTags": [
625
+ "input",
626
+ "select",
627
+ "textarea"
628
+ ]
629
+ },
630
+ "suggestion": "Name the combobox via aria-labelledby, aria-label, or a native <label for>."
631
+ },
511
632
  {
512
633
  "target": "list",
513
634
  "attrs": [
@@ -518,6 +639,14 @@
518
639
  ],
519
640
  "suggestion": "Add role=\"listbox\" to the list target."
520
641
  },
642
+ {
643
+ "target": "list",
644
+ "attrs": [
645
+ "aria-labelledby",
646
+ "aria-label"
647
+ ],
648
+ "suggestion": "Name the listbox via aria-labelledby (the input's label) or aria-label."
649
+ },
521
650
  {
522
651
  "target": "option",
523
652
  "attrs": [
@@ -537,9 +666,20 @@
537
666
  "aria-activedescendant"
538
667
  ],
539
668
  "suggestion": "Remove aria-activedescendant from the input target — the controller sets it while the listbox is open."
669
+ },
670
+ {
671
+ "target": "option",
672
+ "attrs": [
673
+ "aria-selected"
674
+ ],
675
+ "suggestion": "Remove aria-selected from the option target — here it marks the active candidate, which the controller overwrites on connect. The committed value lives in the input."
540
676
  }
541
677
  ],
542
- "compositions": []
678
+ "compositions": [],
679
+ "companions": [],
680
+ "targetDeclarations": [],
681
+ "cardinality": [],
682
+ "forbiddenAria": []
543
683
  },
544
684
  "stimeo--command-palette": {
545
685
  "targets": [
@@ -570,6 +710,7 @@
570
710
  "input",
571
711
  "list"
572
712
  ],
713
+ "conditionalTargets": [],
573
714
  "a11y": [
574
715
  {
575
716
  "target": "dialog",
@@ -619,6 +760,21 @@
619
760
  ],
620
761
  "suggestion": "Add aria-autocomplete=\"list\" to the input target."
621
762
  },
763
+ {
764
+ "target": "input",
765
+ "attrs": [
766
+ "aria-labelledby",
767
+ "aria-label"
768
+ ],
769
+ "whenElement": {
770
+ "exceptTags": [
771
+ "input",
772
+ "select",
773
+ "textarea"
774
+ ]
775
+ },
776
+ "suggestion": "Name the combobox via aria-labelledby, aria-label, or a native <label for>."
777
+ },
622
778
  {
623
779
  "target": "list",
624
780
  "attrs": [
@@ -629,6 +785,14 @@
629
785
  ],
630
786
  "suggestion": "Add role=\"listbox\" to the list target."
631
787
  },
788
+ {
789
+ "target": "list",
790
+ "attrs": [
791
+ "aria-labelledby",
792
+ "aria-label"
793
+ ],
794
+ "suggestion": "Name the listbox via aria-labelledby (the input's label) or aria-label."
795
+ },
632
796
  {
633
797
  "target": "option",
634
798
  "attrs": [
@@ -655,9 +819,20 @@
655
819
  "aria-activedescendant"
656
820
  ],
657
821
  "suggestion": "Remove aria-activedescendant from the input target — the controller sets it while the palette is open."
822
+ },
823
+ {
824
+ "target": "option",
825
+ "attrs": [
826
+ "aria-selected"
827
+ ],
828
+ "suggestion": "Remove aria-selected from the option target — here it marks the active candidate, which the controller overwrites on connect. A palette runs a command and keeps nothing selected."
658
829
  }
659
830
  ],
660
- "compositions": []
831
+ "compositions": [],
832
+ "companions": [],
833
+ "targetDeclarations": [],
834
+ "cardinality": [],
835
+ "forbiddenAria": []
661
836
  },
662
837
  "stimeo--conditional-fields": {
663
838
  "targets": [
@@ -678,10 +853,15 @@
678
853
  "trigger",
679
854
  "region"
680
855
  ],
856
+ "conditionalTargets": [],
681
857
  "a11y": [],
682
858
  "keyboard": [],
683
859
  "managedAria": [],
684
- "compositions": []
860
+ "compositions": [],
861
+ "companions": [],
862
+ "targetDeclarations": [],
863
+ "cardinality": [],
864
+ "forbiddenAria": []
685
865
  },
686
866
  "stimeo--confirm": {
687
867
  "targets": [
@@ -708,6 +888,7 @@
708
888
  "requiredTargets": [
709
889
  "dialog"
710
890
  ],
891
+ "conditionalTargets": [],
711
892
  "a11y": [
712
893
  {
713
894
  "target": "dialog",
@@ -740,7 +921,11 @@
740
921
  ],
741
922
  "keyboard": [],
742
923
  "managedAria": [],
743
- "compositions": []
924
+ "compositions": [],
925
+ "companions": [],
926
+ "targetDeclarations": [],
927
+ "cardinality": [],
928
+ "forbiddenAria": []
744
929
  },
745
930
  "stimeo--context-menu": {
746
931
  "targets": [
@@ -761,6 +946,7 @@
761
946
  "menu",
762
947
  "item"
763
948
  ],
949
+ "conditionalTargets": [],
764
950
  "a11y": [
765
951
  {
766
952
  "target": "menu",
@@ -783,6 +969,15 @@
783
969
  "menuitemradio"
784
970
  ],
785
971
  "suggestion": "Add role=\"menuitem\" (or \"menuitemcheckbox\" / \"menuitemradio\") to each item target."
972
+ },
973
+ {
974
+ "target": "menu",
975
+ "attrs": [
976
+ "aria-labelledby",
977
+ "aria-label"
978
+ ],
979
+ "severity": "warning",
980
+ "suggestion": "Name the menu via aria-label (a context menu has no visible trigger)."
786
981
  }
787
982
  ],
788
983
  "keyboard": [
@@ -798,7 +993,11 @@
798
993
  }
799
994
  ],
800
995
  "managedAria": [],
801
- "compositions": []
996
+ "compositions": [],
997
+ "companions": [],
998
+ "targetDeclarations": [],
999
+ "cardinality": [],
1000
+ "forbiddenAria": []
802
1001
  },
803
1002
  "stimeo--count-up": {
804
1003
  "targets": [],
@@ -814,10 +1013,15 @@
814
1013
  "end"
815
1014
  ],
816
1015
  "requiredTargets": [],
1016
+ "conditionalTargets": [],
817
1017
  "a11y": [],
818
1018
  "keyboard": [],
819
1019
  "managedAria": [],
820
- "compositions": []
1020
+ "compositions": [],
1021
+ "companions": [],
1022
+ "targetDeclarations": [],
1023
+ "cardinality": [],
1024
+ "forbiddenAria": []
821
1025
  },
822
1026
  "stimeo--countdown": {
823
1027
  "targets": [
@@ -845,10 +1049,15 @@
845
1049
  "tick"
846
1050
  ],
847
1051
  "requiredTargets": [],
1052
+ "conditionalTargets": [],
848
1053
  "a11y": [],
849
1054
  "keyboard": [],
850
1055
  "managedAria": [],
851
- "compositions": []
1056
+ "compositions": [],
1057
+ "companions": [],
1058
+ "targetDeclarations": [],
1059
+ "cardinality": [],
1060
+ "forbiddenAria": []
852
1061
  },
853
1062
  "stimeo--currency-input": {
854
1063
  "targets": [
@@ -872,10 +1081,15 @@
872
1081
  "display",
873
1082
  "field"
874
1083
  ],
1084
+ "conditionalTargets": [],
875
1085
  "a11y": [],
876
1086
  "keyboard": [],
877
1087
  "managedAria": [],
878
- "compositions": []
1088
+ "compositions": [],
1089
+ "companions": [],
1090
+ "targetDeclarations": [],
1091
+ "cardinality": [],
1092
+ "forbiddenAria": []
879
1093
  },
880
1094
  "stimeo--data-grid": {
881
1095
  "targets": [
@@ -900,6 +1114,7 @@
900
1114
  "row",
901
1115
  "cell"
902
1116
  ],
1117
+ "conditionalTargets": [],
903
1118
  "a11y": [
904
1119
  {
905
1120
  "target": "",
@@ -910,11 +1125,46 @@
910
1125
  "grid"
911
1126
  ],
912
1127
  "suggestion": "Add role=\"grid\" to the controller element."
1128
+ },
1129
+ {
1130
+ "target": "",
1131
+ "attrs": [
1132
+ "aria-labelledby",
1133
+ "aria-label"
1134
+ ],
1135
+ "whenElement": {
1136
+ "exceptTags": [
1137
+ "table"
1138
+ ]
1139
+ },
1140
+ "suggestion": "Name the grid via aria-labelledby or aria-label."
913
1141
  }
914
1142
  ],
915
1143
  "keyboard": [],
916
1144
  "managedAria": [],
917
- "compositions": []
1145
+ "compositions": [],
1146
+ "companions": [],
1147
+ "targetDeclarations": [],
1148
+ "cardinality": [
1149
+ {
1150
+ "within": "",
1151
+ "target": "row",
1152
+ "attr": "aria-selected",
1153
+ "values": [
1154
+ "true"
1155
+ ],
1156
+ "max": 1,
1157
+ "when": {
1158
+ "value": "selection",
1159
+ "equals": [
1160
+ "single"
1161
+ ],
1162
+ "default": "none"
1163
+ },
1164
+ "suggestion": "Leave aria-selected=\"true\" on exactly one row, or switch the grid to data-stimeo--data-grid-selection-value=\"multiple\" if several were meant."
1165
+ }
1166
+ ],
1167
+ "forbiddenAria": []
918
1168
  },
919
1169
  "stimeo--date-range-picker": {
920
1170
  "targets": [
@@ -944,6 +1194,7 @@
944
1194
  "grid",
945
1195
  "cell"
946
1196
  ],
1197
+ "conditionalTargets": [],
947
1198
  "a11y": [
948
1199
  {
949
1200
  "target": "grid",
@@ -955,6 +1206,19 @@
955
1206
  ],
956
1207
  "suggestion": "Add role=\"grid\" to the grid target."
957
1208
  },
1209
+ {
1210
+ "target": "grid",
1211
+ "attrs": [
1212
+ "aria-labelledby",
1213
+ "aria-label"
1214
+ ],
1215
+ "whenElement": {
1216
+ "exceptTags": [
1217
+ "table"
1218
+ ]
1219
+ },
1220
+ "suggestion": "Name the grid via aria-labelledby (the month heading) or aria-label."
1221
+ },
958
1222
  {
959
1223
  "target": "cell",
960
1224
  "attrs": [
@@ -968,7 +1232,11 @@
968
1232
  ],
969
1233
  "keyboard": [],
970
1234
  "managedAria": [],
971
- "compositions": []
1235
+ "compositions": [],
1236
+ "companions": [],
1237
+ "targetDeclarations": [],
1238
+ "cardinality": [],
1239
+ "forbiddenAria": []
972
1240
  },
973
1241
  "stimeo--dialog": {
974
1242
  "targets": [
@@ -986,6 +1254,7 @@
986
1254
  "trigger",
987
1255
  "dialog"
988
1256
  ],
1257
+ "conditionalTargets": [],
989
1258
  "a11y": [
990
1259
  {
991
1260
  "target": "dialog",
@@ -1018,7 +1287,11 @@
1018
1287
  ],
1019
1288
  "keyboard": [],
1020
1289
  "managedAria": [],
1021
- "compositions": []
1290
+ "compositions": [],
1291
+ "companions": [],
1292
+ "targetDeclarations": [],
1293
+ "cardinality": [],
1294
+ "forbiddenAria": []
1022
1295
  },
1023
1296
  "stimeo--direct-upload": {
1024
1297
  "targets": [
@@ -1043,10 +1316,15 @@
1043
1316
  "list",
1044
1317
  "row"
1045
1318
  ],
1319
+ "conditionalTargets": [],
1046
1320
  "a11y": [],
1047
1321
  "keyboard": [],
1048
1322
  "managedAria": [],
1049
- "compositions": []
1323
+ "compositions": [],
1324
+ "companions": [],
1325
+ "targetDeclarations": [],
1326
+ "cardinality": [],
1327
+ "forbiddenAria": []
1050
1328
  },
1051
1329
  "stimeo--dirty-form": {
1052
1330
  "targets": [],
@@ -1062,10 +1340,15 @@
1062
1340
  "guard"
1063
1341
  ],
1064
1342
  "requiredTargets": [],
1343
+ "conditionalTargets": [],
1065
1344
  "a11y": [],
1066
1345
  "keyboard": [],
1067
1346
  "managedAria": [],
1068
- "compositions": []
1347
+ "compositions": [],
1348
+ "companions": [],
1349
+ "targetDeclarations": [],
1350
+ "cardinality": [],
1351
+ "forbiddenAria": []
1069
1352
  },
1070
1353
  "stimeo--dismissible": {
1071
1354
  "targets": [
@@ -1083,10 +1366,15 @@
1083
1366
  "dismiss"
1084
1367
  ],
1085
1368
  "requiredTargets": [],
1369
+ "conditionalTargets": [],
1086
1370
  "a11y": [],
1087
1371
  "keyboard": [],
1088
1372
  "managedAria": [],
1089
- "compositions": []
1373
+ "compositions": [],
1374
+ "companions": [],
1375
+ "targetDeclarations": [],
1376
+ "cardinality": [],
1377
+ "forbiddenAria": []
1090
1378
  },
1091
1379
  "stimeo--drawer": {
1092
1380
  "targets": [
@@ -1107,6 +1395,7 @@
1107
1395
  "requiredTargets": [
1108
1396
  "panel"
1109
1397
  ],
1398
+ "conditionalTargets": [],
1110
1399
  "a11y": [
1111
1400
  {
1112
1401
  "target": "panel",
@@ -1139,7 +1428,11 @@
1139
1428
  ],
1140
1429
  "keyboard": [],
1141
1430
  "managedAria": [],
1142
- "compositions": []
1431
+ "compositions": [],
1432
+ "companions": [],
1433
+ "targetDeclarations": [],
1434
+ "cardinality": [],
1435
+ "forbiddenAria": []
1143
1436
  },
1144
1437
  "stimeo--dropdown": {
1145
1438
  "targets": [
@@ -1157,10 +1450,15 @@
1157
1450
  "trigger",
1158
1451
  "menu"
1159
1452
  ],
1453
+ "conditionalTargets": [],
1160
1454
  "a11y": [],
1161
1455
  "keyboard": [],
1162
1456
  "managedAria": [],
1163
- "compositions": []
1457
+ "compositions": [],
1458
+ "companions": [],
1459
+ "targetDeclarations": [],
1460
+ "cardinality": [],
1461
+ "forbiddenAria": []
1164
1462
  },
1165
1463
  "stimeo--editable": {
1166
1464
  "targets": [
@@ -1184,10 +1482,15 @@
1184
1482
  "display",
1185
1483
  "input"
1186
1484
  ],
1485
+ "conditionalTargets": [],
1187
1486
  "a11y": [],
1188
1487
  "keyboard": [],
1189
1488
  "managedAria": [],
1190
- "compositions": []
1489
+ "compositions": [],
1490
+ "companions": [],
1491
+ "targetDeclarations": [],
1492
+ "cardinality": [],
1493
+ "forbiddenAria": []
1191
1494
  },
1192
1495
  "stimeo--empty-state": {
1193
1496
  "targets": [
@@ -1205,10 +1508,15 @@
1205
1508
  "requiredTargets": [
1206
1509
  "list"
1207
1510
  ],
1511
+ "conditionalTargets": [],
1208
1512
  "a11y": [],
1209
1513
  "keyboard": [],
1210
1514
  "managedAria": [],
1211
- "compositions": []
1515
+ "compositions": [],
1516
+ "companions": [],
1517
+ "targetDeclarations": [],
1518
+ "cardinality": [],
1519
+ "forbiddenAria": []
1212
1520
  },
1213
1521
  "stimeo--file-dropzone": {
1214
1522
  "targets": [
@@ -1240,10 +1548,30 @@
1240
1548
  "input",
1241
1549
  "trigger"
1242
1550
  ],
1551
+ "conditionalTargets": [
1552
+ {
1553
+ "whenPresent": "itemTemplate",
1554
+ "require": [
1555
+ "list"
1556
+ ],
1557
+ "suggestion": "Add a \"list\" target for the rendered items — an \"itemTemplate\" with nowhere to append to renders nothing."
1558
+ },
1559
+ {
1560
+ "whenPresent": "list",
1561
+ "require": [
1562
+ "itemTemplate"
1563
+ ],
1564
+ "suggestion": "Add an \"itemTemplate\" target — a \"list\" has no item markup to clone without it."
1565
+ }
1566
+ ],
1243
1567
  "a11y": [],
1244
1568
  "keyboard": [],
1245
1569
  "managedAria": [],
1246
- "compositions": []
1570
+ "compositions": [],
1571
+ "companions": [],
1572
+ "targetDeclarations": [],
1573
+ "cardinality": [],
1574
+ "forbiddenAria": []
1247
1575
  },
1248
1576
  "stimeo--filter": {
1249
1577
  "targets": [
@@ -1265,10 +1593,15 @@
1265
1593
  "requiredTargets": [
1266
1594
  "item"
1267
1595
  ],
1596
+ "conditionalTargets": [],
1268
1597
  "a11y": [],
1269
1598
  "keyboard": [],
1270
1599
  "managedAria": [],
1271
- "compositions": []
1600
+ "compositions": [],
1601
+ "companions": [],
1602
+ "targetDeclarations": [],
1603
+ "cardinality": [],
1604
+ "forbiddenAria": []
1272
1605
  },
1273
1606
  "stimeo--flash": {
1274
1607
  "targets": [
@@ -1290,10 +1623,15 @@
1290
1623
  "requiredTargets": [
1291
1624
  "region"
1292
1625
  ],
1626
+ "conditionalTargets": [],
1293
1627
  "a11y": [],
1294
1628
  "keyboard": [],
1295
1629
  "managedAria": [],
1296
- "compositions": []
1630
+ "compositions": [],
1631
+ "companions": [],
1632
+ "targetDeclarations": [],
1633
+ "cardinality": [],
1634
+ "forbiddenAria": []
1297
1635
  },
1298
1636
  "stimeo--focus": {
1299
1637
  "targets": [
@@ -1314,10 +1652,15 @@
1314
1652
  "deactivate"
1315
1653
  ],
1316
1654
  "requiredTargets": [],
1655
+ "conditionalTargets": [],
1317
1656
  "a11y": [],
1318
1657
  "keyboard": [],
1319
1658
  "managedAria": [],
1320
- "compositions": []
1659
+ "compositions": [],
1660
+ "companions": [],
1661
+ "targetDeclarations": [],
1662
+ "cardinality": [],
1663
+ "forbiddenAria": []
1321
1664
  },
1322
1665
  "stimeo--form-field": {
1323
1666
  "targets": [
@@ -1338,6 +1681,7 @@
1338
1681
  "requiredTargets": [
1339
1682
  "control"
1340
1683
  ],
1684
+ "conditionalTargets": [],
1341
1685
  "a11y": [
1342
1686
  {
1343
1687
  "target": "error",
@@ -1364,7 +1708,11 @@
1364
1708
  ],
1365
1709
  "keyboard": [],
1366
1710
  "managedAria": [],
1367
- "compositions": []
1711
+ "compositions": [],
1712
+ "companions": [],
1713
+ "targetDeclarations": [],
1714
+ "cardinality": [],
1715
+ "forbiddenAria": []
1368
1716
  },
1369
1717
  "stimeo--form-validation": {
1370
1718
  "targets": [],
@@ -1382,10 +1730,15 @@
1382
1730
  "invalid"
1383
1731
  ],
1384
1732
  "requiredTargets": [],
1733
+ "conditionalTargets": [],
1385
1734
  "a11y": [],
1386
1735
  "keyboard": [],
1387
1736
  "managedAria": [],
1388
- "compositions": []
1737
+ "compositions": [],
1738
+ "companions": [],
1739
+ "targetDeclarations": [],
1740
+ "cardinality": [],
1741
+ "forbiddenAria": []
1389
1742
  },
1390
1743
  "stimeo--frame-loading": {
1391
1744
  "targets": [
@@ -1403,10 +1756,15 @@
1403
1756
  "end"
1404
1757
  ],
1405
1758
  "requiredTargets": [],
1759
+ "conditionalTargets": [],
1406
1760
  "a11y": [],
1407
1761
  "keyboard": [],
1408
1762
  "managedAria": [],
1409
- "compositions": []
1763
+ "compositions": [],
1764
+ "companions": [],
1765
+ "targetDeclarations": [],
1766
+ "cardinality": [],
1767
+ "forbiddenAria": []
1410
1768
  },
1411
1769
  "stimeo--highlight": {
1412
1770
  "targets": [],
@@ -1420,10 +1778,15 @@
1420
1778
  "end"
1421
1779
  ],
1422
1780
  "requiredTargets": [],
1781
+ "conditionalTargets": [],
1423
1782
  "a11y": [],
1424
1783
  "keyboard": [],
1425
1784
  "managedAria": [],
1426
- "compositions": []
1785
+ "compositions": [],
1786
+ "companions": [],
1787
+ "targetDeclarations": [],
1788
+ "cardinality": [],
1789
+ "forbiddenAria": []
1427
1790
  },
1428
1791
  "stimeo--hover-card": {
1429
1792
  "targets": [
@@ -1444,10 +1807,15 @@
1444
1807
  "trigger",
1445
1808
  "card"
1446
1809
  ],
1810
+ "conditionalTargets": [],
1447
1811
  "a11y": [],
1448
1812
  "keyboard": [],
1449
1813
  "managedAria": [],
1450
- "compositions": []
1814
+ "compositions": [],
1815
+ "companions": [],
1816
+ "targetDeclarations": [],
1817
+ "cardinality": [],
1818
+ "forbiddenAria": []
1451
1819
  },
1452
1820
  "stimeo--idle": {
1453
1821
  "targets": [],
@@ -1463,10 +1831,15 @@
1463
1831
  "active"
1464
1832
  ],
1465
1833
  "requiredTargets": [],
1834
+ "conditionalTargets": [],
1466
1835
  "a11y": [],
1467
1836
  "keyboard": [],
1468
1837
  "managedAria": [],
1469
- "compositions": []
1838
+ "compositions": [],
1839
+ "companions": [],
1840
+ "targetDeclarations": [],
1841
+ "cardinality": [],
1842
+ "forbiddenAria": []
1470
1843
  },
1471
1844
  "stimeo--input-mask": {
1472
1845
  "targets": [],
@@ -1482,10 +1855,15 @@
1482
1855
  "change"
1483
1856
  ],
1484
1857
  "requiredTargets": [],
1858
+ "conditionalTargets": [],
1485
1859
  "a11y": [],
1486
1860
  "keyboard": [],
1487
1861
  "managedAria": [],
1488
- "compositions": []
1862
+ "compositions": [],
1863
+ "companions": [],
1864
+ "targetDeclarations": [],
1865
+ "cardinality": [],
1866
+ "forbiddenAria": []
1489
1867
  },
1490
1868
  "stimeo--intersection": {
1491
1869
  "targets": [],
@@ -1506,10 +1884,15 @@
1506
1884
  "passed"
1507
1885
  ],
1508
1886
  "requiredTargets": [],
1887
+ "conditionalTargets": [],
1509
1888
  "a11y": [],
1510
1889
  "keyboard": [],
1511
1890
  "managedAria": [],
1512
- "compositions": []
1891
+ "compositions": [],
1892
+ "companions": [],
1893
+ "targetDeclarations": [],
1894
+ "cardinality": [],
1895
+ "forbiddenAria": []
1513
1896
  },
1514
1897
  "stimeo--lazy-frame": {
1515
1898
  "targets": [],
@@ -1523,10 +1906,15 @@
1523
1906
  "load"
1524
1907
  ],
1525
1908
  "requiredTargets": [],
1909
+ "conditionalTargets": [],
1526
1910
  "a11y": [],
1527
1911
  "keyboard": [],
1528
1912
  "managedAria": [],
1529
- "compositions": []
1913
+ "compositions": [],
1914
+ "companions": [],
1915
+ "targetDeclarations": [],
1916
+ "cardinality": [],
1917
+ "forbiddenAria": []
1530
1918
  },
1531
1919
  "stimeo--listbox": {
1532
1920
  "targets": [
@@ -1552,6 +1940,7 @@
1552
1940
  "list",
1553
1941
  "option"
1554
1942
  ],
1943
+ "conditionalTargets": [],
1555
1944
  "a11y": [
1556
1945
  {
1557
1946
  "target": "trigger",
@@ -1581,6 +1970,14 @@
1581
1970
  ],
1582
1971
  "suggestion": "Add role=\"listbox\" to the list target."
1583
1972
  },
1973
+ {
1974
+ "target": "list",
1975
+ "attrs": [
1976
+ "aria-labelledby",
1977
+ "aria-label"
1978
+ ],
1979
+ "suggestion": "Name the listbox via aria-labelledby (the trigger's label) or aria-label."
1980
+ },
1584
1981
  {
1585
1982
  "target": "option",
1586
1983
  "attrs": [
@@ -1602,7 +1999,22 @@
1602
1999
  "suggestion": "Remove aria-activedescendant from the trigger target — the controller sets it while the listbox is open."
1603
2000
  }
1604
2001
  ],
1605
- "compositions": []
2002
+ "compositions": [],
2003
+ "companions": [],
2004
+ "targetDeclarations": [],
2005
+ "cardinality": [
2006
+ {
2007
+ "within": "",
2008
+ "target": "option",
2009
+ "attr": "aria-selected",
2010
+ "values": [
2011
+ "true"
2012
+ ],
2013
+ "max": 1,
2014
+ "suggestion": "Leave aria-selected=\"true\" on exactly one option and set the others to \"false\" — the listbox commits a single value, and connect keeps the first."
2015
+ }
2016
+ ],
2017
+ "forbiddenAria": []
1606
2018
  },
1607
2019
  "stimeo--local-time": {
1608
2020
  "targets": [],
@@ -1618,10 +2030,15 @@
1618
2030
  "format"
1619
2031
  ],
1620
2032
  "requiredTargets": [],
2033
+ "conditionalTargets": [],
1621
2034
  "a11y": [],
1622
2035
  "keyboard": [],
1623
2036
  "managedAria": [],
1624
- "compositions": []
2037
+ "compositions": [],
2038
+ "companions": [],
2039
+ "targetDeclarations": [],
2040
+ "cardinality": [],
2041
+ "forbiddenAria": []
1625
2042
  },
1626
2043
  "stimeo--masonry": {
1627
2044
  "targets": [
@@ -1638,10 +2055,15 @@
1638
2055
  "requiredTargets": [
1639
2056
  "item"
1640
2057
  ],
2058
+ "conditionalTargets": [],
1641
2059
  "a11y": [],
1642
2060
  "keyboard": [],
1643
2061
  "managedAria": [],
1644
- "compositions": []
2062
+ "compositions": [],
2063
+ "companions": [],
2064
+ "targetDeclarations": [],
2065
+ "cardinality": [],
2066
+ "forbiddenAria": []
1645
2067
  },
1646
2068
  "stimeo--menu": {
1647
2069
  "targets": [
@@ -1663,6 +2085,7 @@
1663
2085
  "trigger",
1664
2086
  "menu"
1665
2087
  ],
2088
+ "conditionalTargets": [],
1666
2089
  "a11y": [
1667
2090
  {
1668
2091
  "target": "trigger",
@@ -1691,6 +2114,7 @@
1691
2114
  "aria-labelledby",
1692
2115
  "aria-label"
1693
2116
  ],
2117
+ "severity": "warning",
1694
2118
  "suggestion": "Name the menu via aria-labelledby (the trigger's id) or aria-label."
1695
2119
  },
1696
2120
  {
@@ -1714,7 +2138,11 @@
1714
2138
  }
1715
2139
  ],
1716
2140
  "managedAria": [],
1717
- "compositions": []
2141
+ "compositions": [],
2142
+ "companions": [],
2143
+ "targetDeclarations": [],
2144
+ "cardinality": [],
2145
+ "forbiddenAria": []
1718
2146
  },
1719
2147
  "stimeo--menubar": {
1720
2148
  "targets": [
@@ -1732,9 +2160,9 @@
1732
2160
  "events": [],
1733
2161
  "requiredTargets": [
1734
2162
  "top",
1735
- "menu",
1736
- "item"
2163
+ "menu"
1737
2164
  ],
2165
+ "conditionalTargets": [],
1738
2166
  "a11y": [
1739
2167
  {
1740
2168
  "target": "",
@@ -1766,6 +2194,38 @@
1766
2194
  ],
1767
2195
  "suggestion": "Add role=\"menu\" to each menu target."
1768
2196
  },
2197
+ {
2198
+ "target": "",
2199
+ "attrs": [
2200
+ "aria-labelledby",
2201
+ "aria-label"
2202
+ ],
2203
+ "severity": "warning",
2204
+ "suggestion": "Name the menubar via aria-labelledby or aria-label."
2205
+ },
2206
+ {
2207
+ "target": "menu",
2208
+ "attrs": [
2209
+ "aria-labelledby",
2210
+ "aria-label"
2211
+ ],
2212
+ "severity": "warning",
2213
+ "suggestion": "Name each menu via aria-labelledby (its top item's id) or aria-label."
2214
+ },
2215
+ {
2216
+ "target": "menu",
2217
+ "whenContains": {
2218
+ "target": "item",
2219
+ "max": 0
2220
+ },
2221
+ "attrs": [
2222
+ "aria-busy"
2223
+ ],
2224
+ "values": [
2225
+ "true"
2226
+ ],
2227
+ "suggestion": "Add aria-busy=\"true\" to the empty menu and drop it once the items land — role=\"menu\" requires owned menuitems, and the controller never infers the state."
2228
+ },
1769
2229
  {
1770
2230
  "target": "item",
1771
2231
  "attrs": [
@@ -1781,7 +2241,26 @@
1781
2241
  ],
1782
2242
  "keyboard": [],
1783
2243
  "managedAria": [],
1784
- "compositions": []
2244
+ "compositions": [],
2245
+ "companions": [],
2246
+ "targetDeclarations": [],
2247
+ "cardinality": [],
2248
+ "forbiddenAria": [
2249
+ {
2250
+ "target": "menu",
2251
+ "attrs": [
2252
+ "aria-busy"
2253
+ ],
2254
+ "values": [
2255
+ "true"
2256
+ ],
2257
+ "whenContains": {
2258
+ "target": "item",
2259
+ "min": 1
2260
+ },
2261
+ "suggestion": "Drop aria-busy from the menu now that its items are in the markup — it only declares the temporary absence of the menuitems the role requires."
2262
+ }
2263
+ ]
1785
2264
  },
1786
2265
  "stimeo--meter": {
1787
2266
  "targets": [
@@ -1803,6 +2282,7 @@
1803
2282
  "change"
1804
2283
  ],
1805
2284
  "requiredTargets": [],
2285
+ "conditionalTargets": [],
1806
2286
  "a11y": [
1807
2287
  {
1808
2288
  "target": "",
@@ -1825,7 +2305,11 @@
1825
2305
  ],
1826
2306
  "keyboard": [],
1827
2307
  "managedAria": [],
1828
- "compositions": []
2308
+ "compositions": [],
2309
+ "companions": [],
2310
+ "targetDeclarations": [],
2311
+ "cardinality": [],
2312
+ "forbiddenAria": []
1829
2313
  },
1830
2314
  "stimeo--multi-select": {
1831
2315
  "targets": [
@@ -1859,6 +2343,7 @@
1859
2343
  "list",
1860
2344
  "tags"
1861
2345
  ],
2346
+ "conditionalTargets": [],
1862
2347
  "a11y": [
1863
2348
  {
1864
2349
  "target": "input",
@@ -1880,6 +2365,21 @@
1880
2365
  ],
1881
2366
  "suggestion": "Add aria-autocomplete=\"list\" to the input target."
1882
2367
  },
2368
+ {
2369
+ "target": "input",
2370
+ "attrs": [
2371
+ "aria-labelledby",
2372
+ "aria-label"
2373
+ ],
2374
+ "whenElement": {
2375
+ "exceptTags": [
2376
+ "input",
2377
+ "select",
2378
+ "textarea"
2379
+ ]
2380
+ },
2381
+ "suggestion": "Name the combobox via aria-labelledby, aria-label, or a native <label for>."
2382
+ },
1883
2383
  {
1884
2384
  "target": "list",
1885
2385
  "attrs": [
@@ -1890,6 +2390,14 @@
1890
2390
  ],
1891
2391
  "suggestion": "Add role=\"listbox\" to the list target."
1892
2392
  },
2393
+ {
2394
+ "target": "list",
2395
+ "attrs": [
2396
+ "aria-labelledby",
2397
+ "aria-label"
2398
+ ],
2399
+ "suggestion": "Name the listbox via aria-labelledby (the input's label) or aria-label."
2400
+ },
1893
2401
  {
1894
2402
  "target": "list",
1895
2403
  "attrs": [
@@ -1921,7 +2429,11 @@
1921
2429
  "suggestion": "Remove aria-activedescendant from the input target — the controller sets it while the listbox is open."
1922
2430
  }
1923
2431
  ],
1924
- "compositions": []
2432
+ "compositions": [],
2433
+ "companions": [],
2434
+ "targetDeclarations": [],
2435
+ "cardinality": [],
2436
+ "forbiddenAria": []
1925
2437
  },
1926
2438
  "stimeo--navigation-menu": {
1927
2439
  "targets": [
@@ -1942,10 +2454,23 @@
1942
2454
  "trigger",
1943
2455
  "panel"
1944
2456
  ],
2457
+ "conditionalTargets": [],
1945
2458
  "a11y": [],
1946
2459
  "keyboard": [],
1947
2460
  "managedAria": [],
1948
- "compositions": []
2461
+ "compositions": [],
2462
+ "companions": [],
2463
+ "targetDeclarations": [],
2464
+ "cardinality": [
2465
+ {
2466
+ "within": "hoverArea",
2467
+ "target": "trigger",
2468
+ "min": 1,
2469
+ "max": 1,
2470
+ "suggestion": "Wrap exactly one trigger per hoverArea — hovering an area that holds several always opens the first trigger's panel."
2471
+ }
2472
+ ],
2473
+ "forbiddenAria": []
1949
2474
  },
1950
2475
  "stimeo--nested-form": {
1951
2476
  "targets": [
@@ -1973,10 +2498,15 @@
1973
2498
  "list",
1974
2499
  "template"
1975
2500
  ],
2501
+ "conditionalTargets": [],
1976
2502
  "a11y": [],
1977
2503
  "keyboard": [],
1978
2504
  "managedAria": [],
1979
- "compositions": []
2505
+ "compositions": [],
2506
+ "companions": [],
2507
+ "targetDeclarations": [],
2508
+ "cardinality": [],
2509
+ "forbiddenAria": []
1980
2510
  },
1981
2511
  "stimeo--network-status": {
1982
2512
  "targets": [
@@ -1991,10 +2521,15 @@
1991
2521
  "change"
1992
2522
  ],
1993
2523
  "requiredTargets": [],
2524
+ "conditionalTargets": [],
1994
2525
  "a11y": [],
1995
2526
  "keyboard": [],
1996
2527
  "managedAria": [],
1997
- "compositions": []
2528
+ "compositions": [],
2529
+ "companions": [],
2530
+ "targetDeclarations": [],
2531
+ "cardinality": [],
2532
+ "forbiddenAria": []
1998
2533
  },
1999
2534
  "stimeo--number-input": {
2000
2535
  "targets": [
@@ -2020,10 +2555,15 @@
2020
2555
  "requiredTargets": [
2021
2556
  "input"
2022
2557
  ],
2558
+ "conditionalTargets": [],
2023
2559
  "a11y": [],
2024
2560
  "keyboard": [],
2025
2561
  "managedAria": [],
2026
- "compositions": []
2562
+ "compositions": [],
2563
+ "companions": [],
2564
+ "targetDeclarations": [],
2565
+ "cardinality": [],
2566
+ "forbiddenAria": []
2027
2567
  },
2028
2568
  "stimeo--optimistic": {
2029
2569
  "targets": [
@@ -2037,10 +2577,15 @@
2037
2577
  "rollback"
2038
2578
  ],
2039
2579
  "requiredTargets": [],
2580
+ "conditionalTargets": [],
2040
2581
  "a11y": [],
2041
2582
  "keyboard": [],
2042
2583
  "managedAria": [],
2043
- "compositions": []
2584
+ "compositions": [],
2585
+ "companions": [],
2586
+ "targetDeclarations": [],
2587
+ "cardinality": [],
2588
+ "forbiddenAria": []
2044
2589
  },
2045
2590
  "stimeo--otp": {
2046
2591
  "targets": [
@@ -2065,10 +2610,15 @@
2065
2610
  "requiredTargets": [
2066
2611
  "field"
2067
2612
  ],
2613
+ "conditionalTargets": [],
2068
2614
  "a11y": [],
2069
2615
  "keyboard": [],
2070
2616
  "managedAria": [],
2071
- "compositions": []
2617
+ "compositions": [],
2618
+ "companions": [],
2619
+ "targetDeclarations": [],
2620
+ "cardinality": [],
2621
+ "forbiddenAria": []
2072
2622
  },
2073
2623
  "stimeo--overflow-indicator": {
2074
2624
  "targets": [
@@ -2088,10 +2638,15 @@
2088
2638
  "requiredTargets": [
2089
2639
  "viewport"
2090
2640
  ],
2641
+ "conditionalTargets": [],
2091
2642
  "a11y": [],
2092
2643
  "keyboard": [],
2093
2644
  "managedAria": [],
2094
- "compositions": []
2645
+ "compositions": [],
2646
+ "companions": [],
2647
+ "targetDeclarations": [],
2648
+ "cardinality": [],
2649
+ "forbiddenAria": []
2095
2650
  },
2096
2651
  "stimeo--overflow-menu": {
2097
2652
  "targets": [
@@ -2112,10 +2667,21 @@
2112
2667
  "items",
2113
2668
  "more"
2114
2669
  ],
2670
+ "conditionalTargets": [],
2115
2671
  "a11y": [],
2116
2672
  "keyboard": [],
2117
2673
  "managedAria": [],
2118
- "compositions": []
2674
+ "compositions": [],
2675
+ "companions": [
2676
+ {
2677
+ "target": "more",
2678
+ "controller": "stimeo--menu",
2679
+ "suggestion": "Add data-controller=\"stimeo--menu\" to the more target — the overflow controller banks items into it but never opens it."
2680
+ }
2681
+ ],
2682
+ "targetDeclarations": [],
2683
+ "cardinality": [],
2684
+ "forbiddenAria": []
2119
2685
  },
2120
2686
  "stimeo--pagination": {
2121
2687
  "targets": [
@@ -2135,13 +2701,16 @@
2135
2701
  "events": [
2136
2702
  "change"
2137
2703
  ],
2138
- "requiredTargets": [
2139
- "page"
2140
- ],
2704
+ "requiredTargets": [],
2705
+ "conditionalTargets": [],
2141
2706
  "a11y": [],
2142
2707
  "keyboard": [],
2143
2708
  "managedAria": [],
2144
- "compositions": []
2709
+ "compositions": [],
2710
+ "companions": [],
2711
+ "targetDeclarations": [],
2712
+ "cardinality": [],
2713
+ "forbiddenAria": []
2145
2714
  },
2146
2715
  "stimeo--password-reveal": {
2147
2716
  "targets": [
@@ -2161,10 +2730,15 @@
2161
2730
  "input",
2162
2731
  "toggle"
2163
2732
  ],
2733
+ "conditionalTargets": [],
2164
2734
  "a11y": [],
2165
2735
  "keyboard": [],
2166
2736
  "managedAria": [],
2167
- "compositions": []
2737
+ "compositions": [],
2738
+ "companions": [],
2739
+ "targetDeclarations": [],
2740
+ "cardinality": [],
2741
+ "forbiddenAria": []
2168
2742
  },
2169
2743
  "stimeo--password-strength": {
2170
2744
  "targets": [
@@ -2186,6 +2760,7 @@
2186
2760
  "input",
2187
2761
  "meter"
2188
2762
  ],
2763
+ "conditionalTargets": [],
2189
2764
  "a11y": [
2190
2765
  {
2191
2766
  "target": "meter",
@@ -2208,7 +2783,11 @@
2208
2783
  ],
2209
2784
  "keyboard": [],
2210
2785
  "managedAria": [],
2211
- "compositions": []
2786
+ "compositions": [],
2787
+ "companions": [],
2788
+ "targetDeclarations": [],
2789
+ "cardinality": [],
2790
+ "forbiddenAria": []
2212
2791
  },
2213
2792
  "stimeo--persist": {
2214
2793
  "targets": [
@@ -2229,10 +2808,15 @@
2229
2808
  "clear"
2230
2809
  ],
2231
2810
  "requiredTargets": [],
2811
+ "conditionalTargets": [],
2232
2812
  "a11y": [],
2233
2813
  "keyboard": [],
2234
2814
  "managedAria": [],
2235
- "compositions": []
2815
+ "compositions": [],
2816
+ "companions": [],
2817
+ "targetDeclarations": [],
2818
+ "cardinality": [],
2819
+ "forbiddenAria": []
2236
2820
  },
2237
2821
  "stimeo--pointer-drag": {
2238
2822
  "targets": [
@@ -2253,10 +2837,15 @@
2253
2837
  "cancel"
2254
2838
  ],
2255
2839
  "requiredTargets": [],
2840
+ "conditionalTargets": [],
2256
2841
  "a11y": [],
2257
2842
  "keyboard": [],
2258
2843
  "managedAria": [],
2259
- "compositions": []
2844
+ "compositions": [],
2845
+ "companions": [],
2846
+ "targetDeclarations": [],
2847
+ "cardinality": [],
2848
+ "forbiddenAria": []
2260
2849
  },
2261
2850
  "stimeo--popover": {
2262
2851
  "targets": [
@@ -2276,6 +2865,7 @@
2276
2865
  "trigger",
2277
2866
  "panel"
2278
2867
  ],
2868
+ "conditionalTargets": [],
2279
2869
  "a11y": [
2280
2870
  {
2281
2871
  "target": "panel",
@@ -2298,7 +2888,11 @@
2298
2888
  ],
2299
2889
  "keyboard": [],
2300
2890
  "managedAria": [],
2301
- "compositions": []
2891
+ "compositions": [],
2892
+ "companions": [],
2893
+ "targetDeclarations": [],
2894
+ "cardinality": [],
2895
+ "forbiddenAria": []
2302
2896
  },
2303
2897
  "stimeo--portal": {
2304
2898
  "targets": [
@@ -2315,10 +2909,15 @@
2315
2909
  "unmount"
2316
2910
  ],
2317
2911
  "requiredTargets": [],
2912
+ "conditionalTargets": [],
2318
2913
  "a11y": [],
2319
2914
  "keyboard": [],
2320
2915
  "managedAria": [],
2321
- "compositions": []
2916
+ "compositions": [],
2917
+ "companions": [],
2918
+ "targetDeclarations": [],
2919
+ "cardinality": [],
2920
+ "forbiddenAria": []
2322
2921
  },
2323
2922
  "stimeo--preview-guard": {
2324
2923
  "targets": [],
@@ -2332,10 +2931,15 @@
2332
2931
  "show"
2333
2932
  ],
2334
2933
  "requiredTargets": [],
2934
+ "conditionalTargets": [],
2335
2935
  "a11y": [],
2336
2936
  "keyboard": [],
2337
2937
  "managedAria": [],
2338
- "compositions": []
2938
+ "compositions": [],
2939
+ "companions": [],
2940
+ "targetDeclarations": [],
2941
+ "cardinality": [],
2942
+ "forbiddenAria": []
2339
2943
  },
2340
2944
  "stimeo--progress": {
2341
2945
  "targets": [
@@ -2356,6 +2960,7 @@
2356
2960
  "complete"
2357
2961
  ],
2358
2962
  "requiredTargets": [],
2963
+ "conditionalTargets": [],
2359
2964
  "a11y": [
2360
2965
  {
2361
2966
  "target": "",
@@ -2378,7 +2983,11 @@
2378
2983
  ],
2379
2984
  "keyboard": [],
2380
2985
  "managedAria": [],
2381
- "compositions": []
2986
+ "compositions": [],
2987
+ "companions": [],
2988
+ "targetDeclarations": [],
2989
+ "cardinality": [],
2990
+ "forbiddenAria": []
2382
2991
  },
2383
2992
  "stimeo--radio-group": {
2384
2993
  "targets": [
@@ -2396,6 +3005,7 @@
2396
3005
  "requiredTargets": [
2397
3006
  "radio"
2398
3007
  ],
3008
+ "conditionalTargets": [],
2399
3009
  "a11y": [
2400
3010
  {
2401
3011
  "target": "",
@@ -2416,11 +3026,28 @@
2416
3026
  "radio"
2417
3027
  ],
2418
3028
  "suggestion": "Add role=\"radio\" to each radio target."
3029
+ },
3030
+ {
3031
+ "target": "",
3032
+ "attrs": [
3033
+ "aria-labelledby",
3034
+ "aria-label"
3035
+ ],
3036
+ "whenElement": {
3037
+ "exceptTags": [
3038
+ "fieldset"
3039
+ ]
3040
+ },
3041
+ "suggestion": "Name the radio group via aria-labelledby or aria-label."
2419
3042
  }
2420
3043
  ],
2421
3044
  "keyboard": [],
2422
3045
  "managedAria": [],
2423
- "compositions": []
3046
+ "compositions": [],
3047
+ "companions": [],
3048
+ "targetDeclarations": [],
3049
+ "cardinality": [],
3050
+ "forbiddenAria": []
2424
3051
  },
2425
3052
  "stimeo--range-slider": {
2426
3053
  "targets": [
@@ -2433,7 +3060,8 @@
2433
3060
  "max",
2434
3061
  "step",
2435
3062
  "start",
2436
- "end"
3063
+ "end",
3064
+ "logicalTrack"
2437
3065
  ],
2438
3066
  "actions": [
2439
3067
  "onKeydown",
@@ -2447,6 +3075,7 @@
2447
3075
  "startThumb",
2448
3076
  "endThumb"
2449
3077
  ],
3078
+ "conditionalTargets": [],
2450
3079
  "a11y": [
2451
3080
  {
2452
3081
  "target": "startThumb",
@@ -2498,7 +3127,11 @@
2498
3127
  }
2499
3128
  ],
2500
3129
  "managedAria": [],
2501
- "compositions": []
3130
+ "compositions": [],
3131
+ "companions": [],
3132
+ "targetDeclarations": [],
3133
+ "cardinality": [],
3134
+ "forbiddenAria": []
2502
3135
  },
2503
3136
  "stimeo--rating": {
2504
3137
  "targets": [
@@ -2523,10 +3156,15 @@
2523
3156
  "requiredTargets": [
2524
3157
  "symbol"
2525
3158
  ],
3159
+ "conditionalTargets": [],
2526
3160
  "a11y": [],
2527
3161
  "keyboard": [],
2528
3162
  "managedAria": [],
2529
- "compositions": []
3163
+ "compositions": [],
3164
+ "companions": [],
3165
+ "targetDeclarations": [],
3166
+ "cardinality": [],
3167
+ "forbiddenAria": []
2530
3168
  },
2531
3169
  "stimeo--read-more": {
2532
3170
  "targets": [
@@ -2544,10 +3182,15 @@
2544
3182
  "content",
2545
3183
  "trigger"
2546
3184
  ],
3185
+ "conditionalTargets": [],
2547
3186
  "a11y": [],
2548
3187
  "keyboard": [],
2549
3188
  "managedAria": [],
2550
- "compositions": []
3189
+ "compositions": [],
3190
+ "companions": [],
3191
+ "targetDeclarations": [],
3192
+ "cardinality": [],
3193
+ "forbiddenAria": []
2551
3194
  },
2552
3195
  "stimeo--reading-progress": {
2553
3196
  "targets": [],
@@ -2558,10 +3201,15 @@
2558
3201
  "complete"
2559
3202
  ],
2560
3203
  "requiredTargets": [],
3204
+ "conditionalTargets": [],
2561
3205
  "a11y": [],
2562
3206
  "keyboard": [],
2563
3207
  "managedAria": [],
2564
- "compositions": []
3208
+ "compositions": [],
3209
+ "companions": [],
3210
+ "targetDeclarations": [],
3211
+ "cardinality": [],
3212
+ "forbiddenAria": []
2565
3213
  },
2566
3214
  "stimeo--relative-time": {
2567
3215
  "targets": [],
@@ -2573,10 +3221,15 @@
2573
3221
  "actions": [],
2574
3222
  "events": [],
2575
3223
  "requiredTargets": [],
3224
+ "conditionalTargets": [],
2576
3225
  "a11y": [],
2577
3226
  "keyboard": [],
2578
3227
  "managedAria": [],
2579
- "compositions": []
3228
+ "compositions": [],
3229
+ "companions": [],
3230
+ "targetDeclarations": [],
3231
+ "cardinality": [],
3232
+ "forbiddenAria": []
2580
3233
  },
2581
3234
  "stimeo--reset-before-cache": {
2582
3235
  "targets": [],
@@ -2592,10 +3245,15 @@
2592
3245
  "request"
2593
3246
  ],
2594
3247
  "requiredTargets": [],
3248
+ "conditionalTargets": [],
2595
3249
  "a11y": [],
2596
3250
  "keyboard": [],
2597
3251
  "managedAria": [],
2598
- "compositions": []
3252
+ "compositions": [],
3253
+ "companions": [],
3254
+ "targetDeclarations": [],
3255
+ "cardinality": [],
3256
+ "forbiddenAria": []
2599
3257
  },
2600
3258
  "stimeo--resizable": {
2601
3259
  "targets": [
@@ -2622,6 +3280,7 @@
2622
3280
  "secondary",
2623
3281
  "separator"
2624
3282
  ],
3283
+ "conditionalTargets": [],
2625
3284
  "a11y": [
2626
3285
  {
2627
3286
  "target": "separator",
@@ -2639,7 +3298,13 @@
2639
3298
  "aria-label",
2640
3299
  "aria-labelledby"
2641
3300
  ],
2642
- "suggestion": "Name the separator target via aria-label or aria-labelledby."
3301
+ "whenDocument": {
3302
+ "role": "separator",
3303
+ "atLeast": 2,
3304
+ "focusable": true
3305
+ },
3306
+ "severity": "warning",
3307
+ "suggestion": "Name each separator target via aria-label or aria-labelledby — this file has more than one focusable separator."
2643
3308
  }
2644
3309
  ],
2645
3310
  "keyboard": [
@@ -2650,7 +3315,11 @@
2650
3315
  }
2651
3316
  ],
2652
3317
  "managedAria": [],
2653
- "compositions": []
3318
+ "compositions": [],
3319
+ "companions": [],
3320
+ "targetDeclarations": [],
3321
+ "cardinality": [],
3322
+ "forbiddenAria": []
2654
3323
  },
2655
3324
  "stimeo--roving": {
2656
3325
  "targets": [
@@ -2668,10 +3337,15 @@
2668
3337
  "requiredTargets": [
2669
3338
  "item"
2670
3339
  ],
3340
+ "conditionalTargets": [],
2671
3341
  "a11y": [],
2672
3342
  "keyboard": [],
2673
3343
  "managedAria": [],
2674
- "compositions": []
3344
+ "compositions": [],
3345
+ "companions": [],
3346
+ "targetDeclarations": [],
3347
+ "cardinality": [],
3348
+ "forbiddenAria": []
2675
3349
  },
2676
3350
  "stimeo--scroll-area": {
2677
3351
  "targets": [
@@ -2687,10 +3361,15 @@
2687
3361
  "requiredTargets": [
2688
3362
  "viewport"
2689
3363
  ],
3364
+ "conditionalTargets": [],
2690
3365
  "a11y": [],
2691
3366
  "keyboard": [],
2692
3367
  "managedAria": [],
2693
- "compositions": []
3368
+ "compositions": [],
3369
+ "companions": [],
3370
+ "targetDeclarations": [],
3371
+ "cardinality": [],
3372
+ "forbiddenAria": []
2694
3373
  },
2695
3374
  "stimeo--scroll-restore": {
2696
3375
  "targets": [],
@@ -2701,10 +3380,15 @@
2701
3380
  "actions": [],
2702
3381
  "events": [],
2703
3382
  "requiredTargets": [],
3383
+ "conditionalTargets": [],
2704
3384
  "a11y": [],
2705
3385
  "keyboard": [],
2706
3386
  "managedAria": [],
2707
- "compositions": []
3387
+ "compositions": [],
3388
+ "companions": [],
3389
+ "targetDeclarations": [],
3390
+ "cardinality": [],
3391
+ "forbiddenAria": []
2708
3392
  },
2709
3393
  "stimeo--scroll-visibility": {
2710
3394
  "targets": [
@@ -2725,10 +3409,15 @@
2725
3409
  "requiredTargets": [
2726
3410
  "element"
2727
3411
  ],
3412
+ "conditionalTargets": [],
2728
3413
  "a11y": [],
2729
3414
  "keyboard": [],
2730
3415
  "managedAria": [],
2731
- "compositions": []
3416
+ "compositions": [],
3417
+ "companions": [],
3418
+ "targetDeclarations": [],
3419
+ "cardinality": [],
3420
+ "forbiddenAria": []
2732
3421
  },
2733
3422
  "stimeo--scrollspy": {
2734
3423
  "targets": [
@@ -2737,7 +3426,8 @@
2737
3426
  "values": [
2738
3427
  "offset",
2739
3428
  "rootMargin",
2740
- "rootSelector"
3429
+ "rootSelector",
3430
+ "focusSection"
2741
3431
  ],
2742
3432
  "actions": [
2743
3433
  "scrollTo"
@@ -2748,10 +3438,15 @@
2748
3438
  "requiredTargets": [
2749
3439
  "link"
2750
3440
  ],
3441
+ "conditionalTargets": [],
2751
3442
  "a11y": [],
2752
3443
  "keyboard": [],
2753
3444
  "managedAria": [],
2754
- "compositions": []
3445
+ "compositions": [],
3446
+ "companions": [],
3447
+ "targetDeclarations": [],
3448
+ "cardinality": [],
3449
+ "forbiddenAria": []
2755
3450
  },
2756
3451
  "stimeo--separator": {
2757
3452
  "targets": [],
@@ -2767,10 +3462,15 @@
2767
3462
  "change"
2768
3463
  ],
2769
3464
  "requiredTargets": [],
3465
+ "conditionalTargets": [],
2770
3466
  "a11y": [],
2771
3467
  "keyboard": [],
2772
3468
  "managedAria": [],
2773
- "compositions": []
3469
+ "compositions": [],
3470
+ "companions": [],
3471
+ "targetDeclarations": [],
3472
+ "cardinality": [],
3473
+ "forbiddenAria": []
2774
3474
  },
2775
3475
  "stimeo--sidebar": {
2776
3476
  "targets": [
@@ -2793,10 +3493,15 @@
2793
3493
  "requiredTargets": [
2794
3494
  "panel"
2795
3495
  ],
3496
+ "conditionalTargets": [],
2796
3497
  "a11y": [],
2797
3498
  "keyboard": [],
2798
3499
  "managedAria": [],
2799
- "compositions": []
3500
+ "compositions": [],
3501
+ "companions": [],
3502
+ "targetDeclarations": [],
3503
+ "cardinality": [],
3504
+ "forbiddenAria": []
2800
3505
  },
2801
3506
  "stimeo--skeleton": {
2802
3507
  "targets": [
@@ -2814,10 +3519,15 @@
2814
3519
  "ready"
2815
3520
  ],
2816
3521
  "requiredTargets": [],
3522
+ "conditionalTargets": [],
2817
3523
  "a11y": [],
2818
3524
  "keyboard": [],
2819
3525
  "managedAria": [],
2820
- "compositions": []
3526
+ "compositions": [],
3527
+ "companions": [],
3528
+ "targetDeclarations": [],
3529
+ "cardinality": [],
3530
+ "forbiddenAria": []
2821
3531
  },
2822
3532
  "stimeo--slider": {
2823
3533
  "targets": [
@@ -2828,7 +3538,8 @@
2828
3538
  "min",
2829
3539
  "max",
2830
3540
  "step",
2831
- "value"
3541
+ "value",
3542
+ "logicalTrack"
2832
3543
  ],
2833
3544
  "actions": [
2834
3545
  "onKeydown",
@@ -2841,6 +3552,7 @@
2841
3552
  "track",
2842
3553
  "thumb"
2843
3554
  ],
3555
+ "conditionalTargets": [],
2844
3556
  "a11y": [
2845
3557
  {
2846
3558
  "target": "thumb",
@@ -2869,7 +3581,11 @@
2869
3581
  }
2870
3582
  ],
2871
3583
  "managedAria": [],
2872
- "compositions": []
3584
+ "compositions": [],
3585
+ "companions": [],
3586
+ "targetDeclarations": [],
3587
+ "cardinality": [],
3588
+ "forbiddenAria": []
2873
3589
  },
2874
3590
  "stimeo--smart-sticky-header": {
2875
3591
  "targets": [],
@@ -2883,10 +3599,15 @@
2883
3599
  "change"
2884
3600
  ],
2885
3601
  "requiredTargets": [],
3602
+ "conditionalTargets": [],
2886
3603
  "a11y": [],
2887
3604
  "keyboard": [],
2888
3605
  "managedAria": [],
2889
- "compositions": []
3606
+ "compositions": [],
3607
+ "companions": [],
3608
+ "targetDeclarations": [],
3609
+ "cardinality": [],
3610
+ "forbiddenAria": []
2890
3611
  },
2891
3612
  "stimeo--sortable": {
2892
3613
  "targets": [
@@ -2904,6 +3625,7 @@
2904
3625
  "requiredTargets": [
2905
3626
  "item"
2906
3627
  ],
3628
+ "conditionalTargets": [],
2907
3629
  "a11y": [
2908
3630
  {
2909
3631
  "target": "status",
@@ -3013,7 +3735,11 @@
3013
3735
  },
3014
3736
  "suggestion": "Set data-stimeo--pointer-drag-axis-value=\"x\" on the item so grabbed Left/Right (and horizontal drags) move it along the list."
3015
3737
  }
3016
- ]
3738
+ ],
3739
+ "companions": [],
3740
+ "targetDeclarations": [],
3741
+ "cardinality": [],
3742
+ "forbiddenAria": []
3017
3743
  },
3018
3744
  "stimeo--spinner": {
3019
3745
  "targets": [
@@ -3034,6 +3760,7 @@
3034
3760
  "show"
3035
3761
  ],
3036
3762
  "requiredTargets": [],
3763
+ "conditionalTargets": [],
3037
3764
  "a11y": [
3038
3765
  {
3039
3766
  "target": "indicator",
@@ -3060,7 +3787,11 @@
3060
3787
  ],
3061
3788
  "keyboard": [],
3062
3789
  "managedAria": [],
3063
- "compositions": []
3790
+ "compositions": [],
3791
+ "companions": [],
3792
+ "targetDeclarations": [],
3793
+ "cardinality": [],
3794
+ "forbiddenAria": []
3064
3795
  },
3065
3796
  "stimeo--step-indicator": {
3066
3797
  "targets": [
@@ -3078,10 +3809,15 @@
3078
3809
  "requiredTargets": [
3079
3810
  "step"
3080
3811
  ],
3812
+ "conditionalTargets": [],
3081
3813
  "a11y": [],
3082
3814
  "keyboard": [],
3083
3815
  "managedAria": [],
3084
- "compositions": []
3816
+ "compositions": [],
3817
+ "companions": [],
3818
+ "targetDeclarations": [],
3819
+ "cardinality": [],
3820
+ "forbiddenAria": []
3085
3821
  },
3086
3822
  "stimeo--stepper": {
3087
3823
  "targets": [
@@ -3102,10 +3838,15 @@
3102
3838
  "requiredTargets": [
3103
3839
  "step"
3104
3840
  ],
3841
+ "conditionalTargets": [],
3105
3842
  "a11y": [],
3106
3843
  "keyboard": [],
3107
3844
  "managedAria": [],
3108
- "compositions": []
3845
+ "compositions": [],
3846
+ "companions": [],
3847
+ "targetDeclarations": [],
3848
+ "cardinality": [],
3849
+ "forbiddenAria": []
3109
3850
  },
3110
3851
  "stimeo--stick-to-bottom": {
3111
3852
  "targets": [
@@ -3123,10 +3864,15 @@
3123
3864
  "new"
3124
3865
  ],
3125
3866
  "requiredTargets": [],
3867
+ "conditionalTargets": [],
3126
3868
  "a11y": [],
3127
3869
  "keyboard": [],
3128
3870
  "managedAria": [],
3129
- "compositions": []
3871
+ "compositions": [],
3872
+ "companions": [],
3873
+ "targetDeclarations": [],
3874
+ "cardinality": [],
3875
+ "forbiddenAria": []
3130
3876
  },
3131
3877
  "stimeo--sticky-observer": {
3132
3878
  "targets": [
@@ -3145,10 +3891,15 @@
3145
3891
  "sentinel",
3146
3892
  "element"
3147
3893
  ],
3894
+ "conditionalTargets": [],
3148
3895
  "a11y": [],
3149
3896
  "keyboard": [],
3150
3897
  "managedAria": [],
3151
- "compositions": []
3898
+ "compositions": [],
3899
+ "companions": [],
3900
+ "targetDeclarations": [],
3901
+ "cardinality": [],
3902
+ "forbiddenAria": []
3152
3903
  },
3153
3904
  "stimeo--submit-once": {
3154
3905
  "targets": [
@@ -3167,10 +3918,15 @@
3167
3918
  "end"
3168
3919
  ],
3169
3920
  "requiredTargets": [],
3921
+ "conditionalTargets": [],
3170
3922
  "a11y": [],
3171
3923
  "keyboard": [],
3172
3924
  "managedAria": [],
3173
- "compositions": []
3925
+ "compositions": [],
3926
+ "companions": [],
3927
+ "targetDeclarations": [],
3928
+ "cardinality": [],
3929
+ "forbiddenAria": []
3174
3930
  },
3175
3931
  "stimeo--switch": {
3176
3932
  "targets": [],
@@ -3183,10 +3939,15 @@
3183
3939
  "changed"
3184
3940
  ],
3185
3941
  "requiredTargets": [],
3942
+ "conditionalTargets": [],
3186
3943
  "a11y": [],
3187
3944
  "keyboard": [],
3188
3945
  "managedAria": [],
3189
- "compositions": []
3946
+ "compositions": [],
3947
+ "companions": [],
3948
+ "targetDeclarations": [],
3949
+ "cardinality": [],
3950
+ "forbiddenAria": []
3190
3951
  },
3191
3952
  "stimeo--tabs": {
3192
3953
  "targets": [
@@ -3205,6 +3966,7 @@
3205
3966
  "panel",
3206
3967
  "list"
3207
3968
  ],
3969
+ "conditionalTargets": [],
3208
3970
  "a11y": [
3209
3971
  {
3210
3972
  "target": "tab",
@@ -3242,12 +4004,36 @@
3242
4004
  "aria-labelledby",
3243
4005
  "aria-label"
3244
4006
  ],
4007
+ "severity": "warning",
3245
4008
  "suggestion": "Name the tablist via aria-labelledby or aria-label."
4009
+ },
4010
+ {
4011
+ "target": "panel",
4012
+ "attrs": [
4013
+ "aria-labelledby",
4014
+ "aria-label"
4015
+ ],
4016
+ "suggestion": "Name each panel via aria-labelledby (its tab's id) or aria-label."
3246
4017
  }
3247
4018
  ],
3248
4019
  "keyboard": [],
3249
4020
  "managedAria": [],
3250
- "compositions": []
4021
+ "compositions": [],
4022
+ "companions": [],
4023
+ "targetDeclarations": [],
4024
+ "cardinality": [
4025
+ {
4026
+ "within": "",
4027
+ "target": "tab",
4028
+ "attr": "aria-selected",
4029
+ "values": [
4030
+ "true"
4031
+ ],
4032
+ "max": 1,
4033
+ "suggestion": "Leave aria-selected=\"true\" on exactly one tab and set the others to \"false\" — connect activates the first and deselects the rest."
4034
+ }
4035
+ ],
4036
+ "forbiddenAria": []
3251
4037
  },
3252
4038
  "stimeo--tags-input": {
3253
4039
  "targets": [
@@ -3275,10 +4061,15 @@
3275
4061
  "input",
3276
4062
  "tags"
3277
4063
  ],
4064
+ "conditionalTargets": [],
3278
4065
  "a11y": [],
3279
4066
  "keyboard": [],
3280
4067
  "managedAria": [],
3281
- "compositions": []
4068
+ "compositions": [],
4069
+ "companions": [],
4070
+ "targetDeclarations": [],
4071
+ "cardinality": [],
4072
+ "forbiddenAria": []
3282
4073
  },
3283
4074
  "stimeo--textarea-autosize": {
3284
4075
  "targets": [],
@@ -3293,10 +4084,15 @@
3293
4084
  "resize"
3294
4085
  ],
3295
4086
  "requiredTargets": [],
4087
+ "conditionalTargets": [],
3296
4088
  "a11y": [],
3297
4089
  "keyboard": [],
3298
4090
  "managedAria": [],
3299
- "compositions": []
4091
+ "compositions": [],
4092
+ "companions": [],
4093
+ "targetDeclarations": [],
4094
+ "cardinality": [],
4095
+ "forbiddenAria": []
3300
4096
  },
3301
4097
  "stimeo--theme": {
3302
4098
  "targets": [
@@ -3315,10 +4111,15 @@
3315
4111
  "change"
3316
4112
  ],
3317
4113
  "requiredTargets": [],
4114
+ "conditionalTargets": [],
3318
4115
  "a11y": [],
3319
4116
  "keyboard": [],
3320
4117
  "managedAria": [],
3321
- "compositions": []
4118
+ "compositions": [],
4119
+ "companions": [],
4120
+ "targetDeclarations": [],
4121
+ "cardinality": [],
4122
+ "forbiddenAria": []
3322
4123
  },
3323
4124
  "stimeo--time-picker": {
3324
4125
  "targets": [
@@ -3341,6 +4142,7 @@
3341
4142
  "segment",
3342
4143
  "field"
3343
4144
  ],
4145
+ "conditionalTargets": [],
3344
4146
  "a11y": [
3345
4147
  {
3346
4148
  "target": "segment",
@@ -3369,7 +4171,11 @@
3369
4171
  }
3370
4172
  ],
3371
4173
  "managedAria": [],
3372
- "compositions": []
4174
+ "compositions": [],
4175
+ "companions": [],
4176
+ "targetDeclarations": [],
4177
+ "cardinality": [],
4178
+ "forbiddenAria": []
3373
4179
  },
3374
4180
  "stimeo--toast": {
3375
4181
  "targets": [
@@ -3395,10 +4201,15 @@
3395
4201
  "requiredTargets": [
3396
4202
  "list"
3397
4203
  ],
4204
+ "conditionalTargets": [],
3398
4205
  "a11y": [],
3399
4206
  "keyboard": [],
3400
4207
  "managedAria": [],
3401
- "compositions": []
4208
+ "compositions": [],
4209
+ "companions": [],
4210
+ "targetDeclarations": [],
4211
+ "cardinality": [],
4212
+ "forbiddenAria": []
3402
4213
  },
3403
4214
  "stimeo--toggle-group": {
3404
4215
  "targets": [
@@ -3417,10 +4228,15 @@
3417
4228
  "requiredTargets": [
3418
4229
  "item"
3419
4230
  ],
4231
+ "conditionalTargets": [],
3420
4232
  "a11y": [],
3421
4233
  "keyboard": [],
3422
4234
  "managedAria": [],
3423
- "compositions": []
4235
+ "compositions": [],
4236
+ "companions": [],
4237
+ "targetDeclarations": [],
4238
+ "cardinality": [],
4239
+ "forbiddenAria": []
3424
4240
  },
3425
4241
  "stimeo--toolbar": {
3426
4242
  "targets": [
@@ -3437,6 +4253,7 @@
3437
4253
  "requiredTargets": [
3438
4254
  "control"
3439
4255
  ],
4256
+ "conditionalTargets": [],
3440
4257
  "a11y": [
3441
4258
  {
3442
4259
  "target": "",
@@ -3447,11 +4264,45 @@
3447
4264
  "toolbar"
3448
4265
  ],
3449
4266
  "suggestion": "Add role=\"toolbar\" to the controller element."
4267
+ },
4268
+ {
4269
+ "target": "",
4270
+ "when": {
4271
+ "value": "orientation",
4272
+ "equals": [
4273
+ "vertical"
4274
+ ],
4275
+ "default": "horizontal"
4276
+ },
4277
+ "attrs": [
4278
+ "aria-orientation"
4279
+ ],
4280
+ "values": [
4281
+ "vertical"
4282
+ ],
4283
+ "suggestion": "Add aria-orientation=\"vertical\" to the controller element — the toolbar roves with Up/Down but is announced as horizontal without it."
4284
+ },
4285
+ {
4286
+ "target": "",
4287
+ "attrs": [
4288
+ "aria-labelledby",
4289
+ "aria-label"
4290
+ ],
4291
+ "severity": "warning",
4292
+ "escalateWhen": {
4293
+ "role": "toolbar",
4294
+ "atLeast": 2
4295
+ },
4296
+ "suggestion": "Name the toolbar via aria-labelledby or aria-label."
3450
4297
  }
3451
4298
  ],
3452
4299
  "keyboard": [],
3453
4300
  "managedAria": [],
3454
- "compositions": []
4301
+ "compositions": [],
4302
+ "companions": [],
4303
+ "targetDeclarations": [],
4304
+ "cardinality": [],
4305
+ "forbiddenAria": []
3455
4306
  },
3456
4307
  "stimeo--tooltip": {
3457
4308
  "targets": [
@@ -3472,6 +4323,7 @@
3472
4323
  "trigger",
3473
4324
  "content"
3474
4325
  ],
4326
+ "conditionalTargets": [],
3475
4327
  "a11y": [
3476
4328
  {
3477
4329
  "target": "content",
@@ -3493,7 +4345,11 @@
3493
4345
  ],
3494
4346
  "keyboard": [],
3495
4347
  "managedAria": [],
3496
- "compositions": []
4348
+ "compositions": [],
4349
+ "companions": [],
4350
+ "targetDeclarations": [],
4351
+ "cardinality": [],
4352
+ "forbiddenAria": []
3497
4353
  },
3498
4354
  "stimeo--transition": {
3499
4355
  "targets": [],
@@ -3516,10 +4372,15 @@
3516
4372
  "left"
3517
4373
  ],
3518
4374
  "requiredTargets": [],
4375
+ "conditionalTargets": [],
3519
4376
  "a11y": [],
3520
4377
  "keyboard": [],
3521
4378
  "managedAria": [],
3522
- "compositions": []
4379
+ "compositions": [],
4380
+ "companions": [],
4381
+ "targetDeclarations": [],
4382
+ "cardinality": [],
4383
+ "forbiddenAria": []
3523
4384
  },
3524
4385
  "stimeo--tree-view": {
3525
4386
  "targets": [
@@ -3529,7 +4390,8 @@
3529
4390
  "values": [],
3530
4391
  "actions": [
3531
4392
  "onClick",
3532
- "onKeydown"
4393
+ "onKeydown",
4394
+ "toggle"
3533
4395
  ],
3534
4396
  "events": [
3535
4397
  "select",
@@ -3538,6 +4400,7 @@
3538
4400
  "requiredTargets": [
3539
4401
  "item"
3540
4402
  ],
4403
+ "conditionalTargets": [],
3541
4404
  "a11y": [
3542
4405
  {
3543
4406
  "target": "",
@@ -3568,11 +4431,43 @@
3568
4431
  "group"
3569
4432
  ],
3570
4433
  "suggestion": "Add role=\"group\" to each group target."
4434
+ },
4435
+ {
4436
+ "target": "",
4437
+ "attrs": [
4438
+ "aria-labelledby",
4439
+ "aria-label"
4440
+ ],
4441
+ "suggestion": "Name the tree via aria-labelledby or aria-label."
3571
4442
  }
3572
4443
  ],
3573
4444
  "keyboard": [],
3574
4445
  "managedAria": [],
3575
- "compositions": []
4446
+ "compositions": [],
4447
+ "companions": [],
4448
+ "targetDeclarations": [
4449
+ {
4450
+ "attr": "role",
4451
+ "values": [
4452
+ "treeitem"
4453
+ ],
4454
+ "target": "item",
4455
+ "suggestion": "Add data-stimeo--tree-view-target=\"item\" to the treeitem — the controller only moves focus, expands and selects within its item targets."
4456
+ }
4457
+ ],
4458
+ "cardinality": [
4459
+ {
4460
+ "within": "",
4461
+ "target": "item",
4462
+ "attr": "aria-selected",
4463
+ "values": [
4464
+ "true"
4465
+ ],
4466
+ "max": 1,
4467
+ "suggestion": "Leave aria-selected=\"true\" on exactly one item and set the others to \"false\" — the tree commits a single node, and connect keeps the first."
4468
+ }
4469
+ ],
4470
+ "forbiddenAria": []
3576
4471
  },
3577
4472
  "stimeo--anchored": {
3578
4473
  "targets": [
@@ -3596,10 +4491,15 @@
3596
4491
  "anchor",
3597
4492
  "floating"
3598
4493
  ],
4494
+ "conditionalTargets": [],
3599
4495
  "a11y": [],
3600
4496
  "keyboard": [],
3601
4497
  "managedAria": [],
3602
- "compositions": []
4498
+ "compositions": [],
4499
+ "companions": [],
4500
+ "targetDeclarations": [],
4501
+ "cardinality": [],
4502
+ "forbiddenAria": []
3603
4503
  },
3604
4504
  "stimeo--live-counter": {
3605
4505
  "targets": [
@@ -3618,10 +4518,15 @@
3618
4518
  "change"
3619
4519
  ],
3620
4520
  "requiredTargets": [],
4521
+ "conditionalTargets": [],
3621
4522
  "a11y": [],
3622
4523
  "keyboard": [],
3623
4524
  "managedAria": [],
3624
- "compositions": []
4525
+ "compositions": [],
4526
+ "companions": [],
4527
+ "targetDeclarations": [],
4528
+ "cardinality": [],
4529
+ "forbiddenAria": []
3625
4530
  },
3626
4531
  "stimeo--presence": {
3627
4532
  "targets": [
@@ -3644,10 +4549,15 @@
3644
4549
  "change"
3645
4550
  ],
3646
4551
  "requiredTargets": [],
4552
+ "conditionalTargets": [],
3647
4553
  "a11y": [],
3648
4554
  "keyboard": [],
3649
4555
  "managedAria": [],
3650
- "compositions": []
4556
+ "compositions": [],
4557
+ "companions": [],
4558
+ "targetDeclarations": [],
4559
+ "cardinality": [],
4560
+ "forbiddenAria": []
3651
4561
  },
3652
4562
  "stimeo--typing-indicator": {
3653
4563
  "targets": [
@@ -3666,6 +4576,7 @@
3666
4576
  "change"
3667
4577
  ],
3668
4578
  "requiredTargets": [],
4579
+ "conditionalTargets": [],
3669
4580
  "a11y": [
3670
4581
  {
3671
4582
  "target": "status",
@@ -3692,7 +4603,11 @@
3692
4603
  ],
3693
4604
  "keyboard": [],
3694
4605
  "managedAria": [],
3695
- "compositions": []
4606
+ "compositions": [],
4607
+ "companions": [],
4608
+ "targetDeclarations": [],
4609
+ "cardinality": [],
4610
+ "forbiddenAria": []
3696
4611
  }
3697
4612
  }
3698
4613
  }