@kerfjs/ui 5.0.0-beta.29 → 5.0.0-beta.30

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 (224) hide show
  1. package/README.md +43 -8
  2. package/ai/application-ui-diagnostic-ids-v1.json +5 -0
  3. package/ai/compile-time-contracts-v1.json +37 -0
  4. package/ai/compile-time-contracts-v1.schema.json +3 -1
  5. package/ai/component-catalog-v2-overrides.json +198 -1
  6. package/ai/component-catalog-v2.d.ts +22 -0
  7. package/ai/component-catalog-v2.json +488 -32
  8. package/ai/component-catalog-v2.schema.json +51 -0
  9. package/ai/component-catalog.json +251 -36
  10. package/ai/component-catalog.schema.json +23 -0
  11. package/ai/public-api-signatures-v1.md +231 -84
  12. package/ai/skill.md +32 -10
  13. package/ai/webawesome-jsx-signatures-v1.md +1 -1
  14. package/analyzer/index.mjs +247 -5
  15. package/dist/app-tab.d.ts +3 -2
  16. package/dist/app-tab.js +2 -1
  17. package/dist/catalog-resources.d.ts +1 -0
  18. package/dist/catalog.d.ts +7 -6
  19. package/dist/catalog.js +8 -7
  20. package/dist/catalog.js.map +1 -1
  21. package/dist/{chunk-PX3YSS5C.js → chunk-6NDBE2OK.js} +1 -1
  22. package/dist/chunk-6NDBE2OK.js.map +1 -0
  23. package/dist/{chunk-B3A3IVO5.js → chunk-AQFWBG23.js} +3 -3
  24. package/dist/chunk-AQFWBG23.js.map +1 -0
  25. package/dist/{chunk-WNWD54GR.js → chunk-B6JYRX3P.js} +4 -2
  26. package/dist/chunk-B6JYRX3P.js.map +1 -0
  27. package/dist/{chunk-HP2B2L26.js → chunk-CAB6NQ2T.js} +1 -1
  28. package/dist/chunk-CAB6NQ2T.js.map +1 -0
  29. package/dist/{chunk-2NMQW7FX.js → chunk-CK6P5AUK.js} +4 -3
  30. package/dist/chunk-CK6P5AUK.js.map +1 -0
  31. package/dist/{chunk-VCE4MPVE.js → chunk-DAO2VFTT.js} +5 -6
  32. package/dist/chunk-DAO2VFTT.js.map +1 -0
  33. package/dist/{chunk-LPOMRC4C.js → chunk-DYBPI5O2.js} +1 -1
  34. package/dist/chunk-DYBPI5O2.js.map +1 -0
  35. package/dist/{chunk-IJBSZ4NX.js → chunk-E34TE2ZI.js} +4 -3
  36. package/dist/chunk-E34TE2ZI.js.map +1 -0
  37. package/dist/{chunk-4EF2CMYS.js → chunk-I45QO2IZ.js} +8 -7
  38. package/dist/chunk-I45QO2IZ.js.map +1 -0
  39. package/dist/{chunk-JRKSK2HX.js → chunk-I4V3UDSA.js} +1 -1
  40. package/dist/chunk-I4V3UDSA.js.map +1 -0
  41. package/dist/{chunk-FEY65TBV.js → chunk-KFUUFNTS.js} +1 -1
  42. package/dist/chunk-KFUUFNTS.js.map +1 -0
  43. package/dist/{chunk-QO55FN2Y.js → chunk-MFR2IIFG.js} +1 -1
  44. package/dist/chunk-MFR2IIFG.js.map +1 -0
  45. package/dist/{chunk-GWEAPEZI.js → chunk-OC275HHS.js} +4 -3
  46. package/dist/chunk-OC275HHS.js.map +1 -0
  47. package/dist/chunk-OL4TC3U2.js +156 -0
  48. package/dist/chunk-OL4TC3U2.js.map +1 -0
  49. package/dist/{chunk-OT6RPYAP.js → chunk-OMSRSL3B.js} +4 -3
  50. package/dist/chunk-OMSRSL3B.js.map +1 -0
  51. package/dist/{chunk-J5BFYY7Q.js → chunk-RL6COPKF.js} +12 -3
  52. package/dist/chunk-RL6COPKF.js.map +1 -0
  53. package/dist/{chunk-TB6DY7H5.js → chunk-SOK5EUF7.js} +1 -1
  54. package/dist/chunk-SOK5EUF7.js.map +1 -0
  55. package/dist/{chunk-RKVQEH4J.js → chunk-T7DOWS6T.js} +3 -3
  56. package/dist/chunk-T7DOWS6T.js.map +1 -0
  57. package/dist/{chunk-7KEUJIIC.js → chunk-TIGSG6BX.js} +1 -1
  58. package/dist/chunk-TIGSG6BX.js.map +1 -0
  59. package/dist/{chunk-W5L2JSBY.js → chunk-UDHHKZWO.js} +6 -5
  60. package/dist/chunk-UDHHKZWO.js.map +1 -0
  61. package/dist/{chunk-R7ZWUN64.js → chunk-V6GQKOX2.js} +4 -3
  62. package/dist/chunk-V6GQKOX2.js.map +1 -0
  63. package/dist/{chunk-KWWR5VMS.js → chunk-V6HCTCVD.js} +4 -3
  64. package/dist/chunk-V6HCTCVD.js.map +1 -0
  65. package/dist/{chunk-JFGXQBIP.js → chunk-VDUJZF5G.js} +76 -13
  66. package/dist/chunk-VDUJZF5G.js.map +1 -0
  67. package/dist/{chunk-SYDMYBPG.js → chunk-VXFGMDA7.js} +1 -1
  68. package/dist/chunk-VXFGMDA7.js.map +1 -0
  69. package/dist/{chunk-YMKH5XTF.js → chunk-WN52USHV.js} +2 -2
  70. package/dist/{chunk-YMKH5XTF.js.map → chunk-WN52USHV.js.map} +1 -1
  71. package/dist/{chunk-OBLTAKSX.js → chunk-WSXUPSID.js} +1 -1
  72. package/dist/chunk-WSXUPSID.js.map +1 -0
  73. package/dist/{chunk-X2U3QJCJ.js → chunk-ZPWZIVI6.js} +1 -1
  74. package/dist/chunk-ZPWZIVI6.js.map +1 -0
  75. package/dist/collapsible-panel.d.ts +5 -2
  76. package/dist/collapsible-panel.js.map +1 -1
  77. package/dist/css-values.d.ts +75 -0
  78. package/dist/css-values.js +3 -0
  79. package/dist/css-values.js.map +1 -0
  80. package/dist/empty-state.d.ts +2 -1
  81. package/dist/empty-state.js +1 -1
  82. package/dist/floating-toolbar.d.ts +4 -3
  83. package/dist/floating-toolbar.js +1 -1
  84. package/dist/index.d.ts +2 -0
  85. package/dist/index.js +26 -25
  86. package/dist/list-action-row.d.ts +1 -2
  87. package/dist/list-action-row.js +2 -1
  88. package/dist/list-header.d.ts +1 -1
  89. package/dist/list-header.js +2 -1
  90. package/dist/list-inset-control.d.ts +4 -3
  91. package/dist/list-inset-control.js +1 -1
  92. package/dist/list-inset-text.d.ts +4 -3
  93. package/dist/list-inset-text.js +1 -1
  94. package/dist/list-item.d.ts +4 -3
  95. package/dist/list-item.js +2 -1
  96. package/dist/list.d.ts +10 -8
  97. package/dist/list.js +2 -1
  98. package/dist/nav-stack.d.ts +9 -6
  99. package/dist/nav-stack.js +2 -1
  100. package/dist/pane.d.ts +6 -5
  101. package/dist/pane.js +1 -1
  102. package/dist/resizable-region.d.ts +2 -1
  103. package/dist/resizable-region.js +1 -1
  104. package/dist/segmented-control.d.ts +4 -3
  105. package/dist/segmented-control.js +2 -1
  106. package/dist/select.d.ts +3 -1
  107. package/dist/select.js +2 -1
  108. package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
  109. package/dist/skeleton.d.ts +7 -6
  110. package/dist/skeleton.js +2 -1
  111. package/dist/split-view.d.ts +5 -4
  112. package/dist/split-view.js +3 -2
  113. package/dist/split-view.js.map +1 -1
  114. package/dist/state-banner.d.ts +3 -2
  115. package/dist/state-banner.js +2 -1
  116. package/dist/styles/catalog.css +8 -1
  117. package/dist/styles/collapsible-panel.css +6 -2
  118. package/dist/styles/foundation.css +44 -0
  119. package/dist/styles/list-header.css +6 -0
  120. package/dist/styles/list-item.css +9 -0
  121. package/dist/styles/nav-stack.css +32 -2
  122. package/dist/styles/segmented-control.css +8 -1
  123. package/dist/styles/select.css +2 -1
  124. package/dist/styles/state-banner.css +14 -0
  125. package/dist/styles/tab-scaffold.css +1 -0
  126. package/dist/styles/token-search-field.css +4 -0
  127. package/dist/styles/toolbar-control-group.css +98 -16
  128. package/dist/styles/webawesome.css +22 -0
  129. package/dist/styles/workbench.css +4 -0
  130. package/dist/sunken-panel.d.ts +4 -3
  131. package/dist/sunken-panel.js +1 -1
  132. package/dist/surface-scaffold.d.ts +6 -5
  133. package/dist/surface-scaffold.js +1 -1
  134. package/dist/tab-bar.d.ts +6 -5
  135. package/dist/tab-bar.js +1 -1
  136. package/dist/tab-scaffold.d.ts +2 -1
  137. package/dist/tab-scaffold.js.map +1 -1
  138. package/dist/token-search-field.d.ts +5 -4
  139. package/dist/token-search-field.js +1 -1
  140. package/dist/toolbar-control-group.d.ts +10 -4
  141. package/dist/toolbar-control-group.js +1 -1
  142. package/dist/toolbar-text.js +2 -1
  143. package/dist/toolbar.d.ts +6 -5
  144. package/dist/toolbar.js +1 -1
  145. package/dist/value-table.d.ts +4 -2
  146. package/dist/value-table.js +2 -1
  147. package/dist/wire-nav-stack.d.ts +4 -1
  148. package/dist/wire-nav-stack.js +125 -0
  149. package/dist/wire-nav-stack.js.map +1 -1
  150. package/dist/wire-resizable-regions.js +1 -1
  151. package/dist/wire-tab-bars.d.ts +1 -0
  152. package/dist/wire-token-search-fields.js +1 -1
  153. package/dist/workbench.d.ts +7 -4
  154. package/dist/workbench.js.map +1 -1
  155. package/docs/accessibility.md +9 -3
  156. package/docs/collapsible-panel.md +4 -1
  157. package/docs/component-contract.md +56 -8
  158. package/docs/component-selection.md +45 -8
  159. package/docs/design/templates/list/compact-dark.svg +1 -1
  160. package/docs/design/templates/list/compact.svg +1 -1
  161. package/docs/design/templates/list/stack-dark.svg +1 -1
  162. package/docs/design/templates/list/stack.svg +1 -1
  163. package/docs/design/templates/list-action-row/default-dark.svg +1 -1
  164. package/docs/design/templates/list-action-row/default.svg +1 -1
  165. package/docs/design/templates/list-action-row/selected-dark.svg +1 -1
  166. package/docs/design/templates/list-action-row/selected.svg +1 -1
  167. package/docs/design/templates/list-action-row-dark.svg +1 -1
  168. package/docs/design/templates/list-action-row.svg +1 -1
  169. package/docs/design/templates/list-dark.svg +1 -1
  170. package/docs/design/templates/list-item/default-dark.svg +1 -1
  171. package/docs/design/templates/list-item/default.svg +1 -1
  172. package/docs/design/templates/list-item/multiline-dark.svg +1 -1
  173. package/docs/design/templates/list-item/multiline.svg +1 -1
  174. package/docs/design/templates/list-item/selected-dark.svg +1 -1
  175. package/docs/design/templates/list-item/selected.svg +1 -1
  176. package/docs/design/templates/list-item/trailing-dark.svg +1 -1
  177. package/docs/design/templates/list-item/trailing.svg +1 -1
  178. package/docs/design/templates/list-item-dark.svg +1 -1
  179. package/docs/design/templates/list-item.svg +1 -1
  180. package/docs/design/templates/list.svg +1 -1
  181. package/docs/design-philosophy.md +4 -2
  182. package/docs/examples/component-catalog-extension-v2.json +2 -0
  183. package/docs/layout.md +12 -4
  184. package/docs/nav-stack.md +29 -8
  185. package/docs/recipes.md +8 -4
  186. package/docs/split-view.md +6 -0
  187. package/docs/surface-scaffold.md +8 -0
  188. package/docs/tab-scaffold.md +3 -1
  189. package/docs/type-contracts.md +39 -12
  190. package/docs/ui-analyzer.md +17 -3
  191. package/docs/ui-doctor.md +7 -0
  192. package/docs/ux-demo.md +10 -4
  193. package/docs/webawesome-theme.md +6 -0
  194. package/docs/workbench.md +6 -4
  195. package/llms.txt +46 -6
  196. package/package.json +5 -1
  197. package/ux-demo/recipes/compact-toolbar.tsx +10 -9
  198. package/ux-demo/recipes/composer-form.tsx +6 -3
  199. package/ux-demo/recipes/loading-inspector.tsx +2 -1
  200. package/dist/chunk-2NMQW7FX.js.map +0 -1
  201. package/dist/chunk-4EF2CMYS.js.map +0 -1
  202. package/dist/chunk-7KEUJIIC.js.map +0 -1
  203. package/dist/chunk-B3A3IVO5.js.map +0 -1
  204. package/dist/chunk-FEY65TBV.js.map +0 -1
  205. package/dist/chunk-GWEAPEZI.js.map +0 -1
  206. package/dist/chunk-HP2B2L26.js.map +0 -1
  207. package/dist/chunk-IJBSZ4NX.js.map +0 -1
  208. package/dist/chunk-J5BFYY7Q.js.map +0 -1
  209. package/dist/chunk-JFGXQBIP.js.map +0 -1
  210. package/dist/chunk-JRKSK2HX.js.map +0 -1
  211. package/dist/chunk-KWWR5VMS.js.map +0 -1
  212. package/dist/chunk-LPOMRC4C.js.map +0 -1
  213. package/dist/chunk-OBLTAKSX.js.map +0 -1
  214. package/dist/chunk-OT6RPYAP.js.map +0 -1
  215. package/dist/chunk-PX3YSS5C.js.map +0 -1
  216. package/dist/chunk-QO55FN2Y.js.map +0 -1
  217. package/dist/chunk-R7ZWUN64.js.map +0 -1
  218. package/dist/chunk-RKVQEH4J.js.map +0 -1
  219. package/dist/chunk-SYDMYBPG.js.map +0 -1
  220. package/dist/chunk-TB6DY7H5.js.map +0 -1
  221. package/dist/chunk-VCE4MPVE.js.map +0 -1
  222. package/dist/chunk-W5L2JSBY.js.map +0 -1
  223. package/dist/chunk-WNWD54GR.js.map +0 -1
  224. package/dist/chunk-X2U3QJCJ.js.map +0 -1
@@ -33,6 +33,7 @@
33
33
  "Decorative icons are aria-hidden; meaningful icons require a label."
34
34
  ]
35
35
  },
36
+ "cssValueProps": [],
36
37
  "boundaries": {
37
38
  "rootClass": null,
38
39
  "publicClasses": [],
@@ -75,6 +76,7 @@
75
76
  "The arrow is decorative; expose expanded state through aria-expanded on its owning control and keep that control's accessible name stable."
76
77
  ]
77
78
  },
79
+ "cssValueProps": [],
78
80
  "boundaries": {
79
81
  "rootClass": "kui-disclosure-arrow",
80
82
  "publicClasses": ["kui-disclosure-arrow"],
@@ -123,6 +125,7 @@
123
125
  "Preserve Web Awesome semantics and Kerf focus/contrast tokens."
124
126
  ]
125
127
  },
128
+ "cssValueProps": [],
126
129
  "boundaries": {
127
130
  "rootClass": null,
128
131
  "publicClasses": [],
@@ -175,6 +178,7 @@
175
178
  "Preserve semantic contrast relationships and the visible focus ring when overriding foundation colors."
176
179
  ]
177
180
  },
181
+ "cssValueProps": [],
178
182
  "boundaries": {
179
183
  "rootClass": null,
180
184
  "publicClasses": [],
@@ -206,6 +210,7 @@
206
210
  "--kui-layout-content-gap",
207
211
  "--kui-layout-control-gap",
208
212
  "--kui-layout-metadata-gap",
213
+ "--kui-layout-highlight-inset",
209
214
  "--kui-layout-rounded-radius",
210
215
  "--kui-layout-pill-radius",
211
216
  "--kui-toolbar-group-inner-size",
@@ -242,6 +247,16 @@
242
247
  "--kui-color-brand-on-normal",
243
248
  "--kui-color-brand-on-loud",
244
249
  "--kui-color-brand-on-fill",
250
+ "--kui-color-pop-fill-loud",
251
+ "--kui-color-pop-fill-quiet",
252
+ "--kui-color-pop-fill-normal",
253
+ "--kui-color-pop-border-quiet",
254
+ "--kui-color-pop-border-normal",
255
+ "--kui-color-pop-border-loud",
256
+ "--kui-color-pop-on-quiet",
257
+ "--kui-color-pop-on-normal",
258
+ "--kui-color-pop-on-loud",
259
+ "--kui-color-pop-on-fill",
245
260
  "--kui-color-success-fill-loud",
246
261
  "--kui-color-success-fill-quiet",
247
262
  "--kui-color-success-fill-normal",
@@ -275,6 +290,8 @@
275
290
  "--kui-color-border-quiet",
276
291
  "--kui-color-accent",
277
292
  "--kui-color-accent-text",
293
+ "--kui-color-pop",
294
+ "--kui-color-pop-text",
278
295
  "--kui-color-success",
279
296
  "--kui-color-success-text",
280
297
  "--kui-color-warning",
@@ -329,6 +346,7 @@
329
346
  "When collapse replaces one control with its counterpart in another toolbar, move focus to the newly rendered restore or collapse control."
330
347
  ]
331
348
  },
349
+ "cssValueProps": [],
332
350
  "boundaries": {
333
351
  "rootClass": "kui-content",
334
352
  "publicClasses": [
@@ -364,8 +382,36 @@
364
382
  "kind": "component",
365
383
  "source": "kerf",
366
384
  "parents": { "mode": "any", "entries": [] },
367
- "contexts": ["application-ui"],
368
- "zones": [],
385
+ "contexts": [
386
+ "application-column",
387
+ "sidebar",
388
+ "main-content",
389
+ "inspector",
390
+ "dialog-column"
391
+ ],
392
+ "zones": [
393
+ {
394
+ "id": "header",
395
+ "jsx": { "prop": "header" },
396
+ "accepts": ["fixed-chrome"],
397
+ "cardinality": { "min": 0, "max": "unbounded" },
398
+ "exclusiveWith": []
399
+ },
400
+ {
401
+ "id": "content",
402
+ "jsx": { "prop": "children" },
403
+ "accepts": ["pane-content"],
404
+ "cardinality": { "min": 0, "max": "unbounded" },
405
+ "exclusiveWith": []
406
+ },
407
+ {
408
+ "id": "footer",
409
+ "jsx": { "prop": "footer" },
410
+ "accepts": ["fixed-chrome"],
411
+ "cardinality": { "min": 0, "max": "unbounded" },
412
+ "exclusiveWith": []
413
+ }
414
+ ],
369
415
  "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
370
416
  "state": [
371
417
  {
@@ -413,6 +459,7 @@
413
459
  "Keep fixed header/footer chrome outside the single scrolling content slot so reading and focus order remain coherent."
414
460
  ]
415
461
  },
462
+ "cssValueProps": [],
416
463
  "boundaries": {
417
464
  "rootClass": "kui-pane",
418
465
  "publicClasses": [
@@ -430,7 +477,7 @@
430
477
  "diagnostics": [],
431
478
  "provenance": {
432
479
  "selection": "ai/component-catalog.json",
433
- "composition": "generated-permissive-default"
480
+ "composition": "docs/layout.md#anatomy"
434
481
  }
435
482
  },
436
483
  {
@@ -461,12 +508,12 @@
461
508
  "required": false
462
509
  },
463
510
  {
464
- "id": "focus restoration policy",
511
+ "id": "preferred initial focus targets when DOM order is insufficient",
465
512
  "owner": "application",
466
513
  "required": false
467
514
  },
468
515
  {
469
- "id": "optional persistent bottom toolbar",
516
+ "id": "per-view bottom toolbar content or a persistent fallback",
470
517
  "owner": "application",
471
518
  "required": false
472
519
  }
@@ -491,14 +538,21 @@
491
538
  "accessibility": {
492
539
  "obligations": [
493
540
  "Give the stack region an accessible label and every back control a stable action label.",
494
- "Wire pop behavior and restore focus to the control that opened the departing view after the controlled rerender."
541
+ "Use wireNavStack so each controlled push moves focus into the new top view and each pop restores the revealed view's remembered descendant.",
542
+ "Mark a preferred initial heading or control with data-nav-focus when the first enabled focusable descendant is not the right target."
495
543
  ]
496
544
  },
545
+ "cssValueProps": [],
497
546
  "boundaries": {
498
547
  "rootClass": "kui-nav-stack",
499
548
  "publicClasses": [
500
549
  "kui-nav-stack",
501
550
  "kui-nav-stack__chrome",
551
+ "kui-nav-stack__bottom",
552
+ "kui-nav-stack__chrome--entering",
553
+ "kui-nav-stack__chrome-copy",
554
+ "kui-nav-stack__chrome-copy--bottom",
555
+ "kui-nav-stack__chrome-copy--exiting",
502
556
  "kui-nav-stack__lead",
503
557
  "kui-nav-stack__back",
504
558
  "kui-nav-stack__back-icon",
@@ -507,10 +561,9 @@
507
561
  "kui-nav-stack__viewport",
508
562
  "kui-nav-stack__view",
509
563
  "kui-nav-stack__view--entering",
510
- "kui-nav-stack__view--exiting",
511
- "kui-nav-stack__bottom"
564
+ "kui-nav-stack__view--exiting"
512
565
  ],
513
- "publicTokens": []
566
+ "publicTokens": ["--kui-nav-stack-transition-duration"]
514
567
  },
515
568
  "diagnostics": [],
516
569
  "provenance": {
@@ -526,8 +579,23 @@
526
579
  "kind": "component",
527
580
  "source": "kerf",
528
581
  "parents": { "mode": "any", "entries": [] },
529
- "contexts": ["application-ui"],
530
- "zones": [],
582
+ "contexts": ["list-detail", "responsive-master-detail"],
583
+ "zones": [
584
+ {
585
+ "id": "list",
586
+ "jsx": { "prop": "list" },
587
+ "accepts": ["list-region"],
588
+ "cardinality": { "min": 1, "max": 1 },
589
+ "exclusiveWith": []
590
+ },
591
+ {
592
+ "id": "detail",
593
+ "jsx": { "prop": "detail" },
594
+ "accepts": ["detail-region"],
595
+ "cardinality": { "min": 1, "max": 1 },
596
+ "exclusiveWith": []
597
+ }
598
+ ],
531
599
  "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
532
600
  "state": [
533
601
  {
@@ -575,6 +643,7 @@
575
643
  "Wire the compact back action and optional separator keyboard behavior, and restore focus when controlled navigation replaces a view."
576
644
  ]
577
645
  },
646
+ "cssValueProps": [],
578
647
  "boundaries": {
579
648
  "rootClass": "kui-split-view",
580
649
  "publicClasses": [
@@ -589,7 +658,7 @@
589
658
  "diagnostics": [],
590
659
  "provenance": {
591
660
  "selection": "ai/component-catalog.json",
592
- "composition": "generated-permissive-default"
661
+ "composition": "docs/split-view.md#split-view-list-detail"
593
662
  }
594
663
  },
595
664
  {
@@ -648,6 +717,7 @@
648
717
  "Wire selection through the controlled active id while leaving inactive scenes mounted and hidden."
649
718
  ]
650
719
  },
720
+ "cssValueProps": [],
651
721
  "boundaries": {
652
722
  "rootClass": "kui-tab-scaffold",
653
723
  "publicClasses": [
@@ -675,8 +745,34 @@
675
745
  "kind": "component",
676
746
  "source": "kerf",
677
747
  "parents": { "mode": "any", "entries": [] },
678
- "contexts": ["application-ui"],
679
- "zones": [],
748
+ "contexts": ["desktop-application-shell"],
749
+ "zones": [
750
+ {
751
+ "id": "main",
752
+ "jsx": { "prop": "main" },
753
+ "accepts": ["workspace-region"],
754
+ "cardinality": { "min": 1, "max": 1 },
755
+ "exclusiveWith": []
756
+ },
757
+ {
758
+ "id": "left-rail",
759
+ "accepts": ["panel-region"],
760
+ "cardinality": { "min": 0, "max": 1 },
761
+ "exclusiveWith": []
762
+ },
763
+ {
764
+ "id": "right-rail",
765
+ "accepts": ["panel-region"],
766
+ "cardinality": { "min": 0, "max": 1 },
767
+ "exclusiveWith": []
768
+ },
769
+ {
770
+ "id": "bottom-drawer",
771
+ "accepts": ["panel-region"],
772
+ "cardinality": { "min": 0, "max": 1 },
773
+ "exclusiveWith": []
774
+ }
775
+ ],
680
776
  "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
681
777
  "state": [
682
778
  {
@@ -716,6 +812,7 @@
716
812
  "Keep collapse controls outside the disappearing region and move focus when a controlled rerender replaces a collapse control with its restore control."
717
813
  ]
718
814
  },
815
+ "cssValueProps": [],
719
816
  "boundaries": {
720
817
  "rootClass": "kui-workbench",
721
818
  "publicClasses": [
@@ -743,7 +840,7 @@
743
840
  "diagnostics": [],
744
841
  "provenance": {
745
842
  "selection": "ai/component-catalog.json",
746
- "composition": "generated-permissive-default"
843
+ "composition": "docs/workbench.md#workbench"
747
844
  }
748
845
  },
749
846
  {
@@ -803,6 +900,7 @@
803
900
  "Keep the restore control outside the disappearing panel and use wireSidebar for focus transfer, Escape, backdrop dismissal, and compact focus trapping."
804
901
  ]
805
902
  },
903
+ "cssValueProps": [],
806
904
  "boundaries": {
807
905
  "rootClass": "kui-collapsible-panel",
808
906
  "publicClasses": [
@@ -874,6 +972,7 @@
874
972
  "Pass ariaLabel only when the surface is a distinct named region; otherwise it remains a non-landmark grouping."
875
973
  ]
876
974
  },
975
+ "cssValueProps": [],
877
976
  "boundaries": {
878
977
  "rootClass": "kui-sunken-panel",
879
978
  "publicClasses": ["kui-sunken-panel"],
@@ -908,18 +1007,21 @@
908
1007
  "zones": [
909
1008
  {
910
1009
  "id": "leading",
1010
+ "jsx": { "prop": "leading" },
911
1011
  "accepts": ["toolbar-text", "toolbar-control-group"],
912
1012
  "cardinality": { "min": 0, "max": "unbounded" },
913
1013
  "exclusiveWith": []
914
1014
  },
915
1015
  {
916
1016
  "id": "center",
1017
+ "jsx": { "prop": "center" },
917
1018
  "accepts": ["toolbar-text", "toolbar-control-group"],
918
1019
  "cardinality": { "min": 0, "max": "unbounded" },
919
1020
  "exclusiveWith": []
920
1021
  },
921
1022
  {
922
1023
  "id": "trailing",
1024
+ "jsx": { "prop": "trailing" },
923
1025
  "accepts": ["toolbar-text", "toolbar-control-group"],
924
1026
  "cardinality": { "min": 0, "max": "unbounded" },
925
1027
  "exclusiveWith": []
@@ -961,6 +1063,7 @@
961
1063
  "Supply a label when the toolbar needs an accessible name."
962
1064
  ]
963
1065
  },
1066
+ "cssValueProps": [],
964
1067
  "boundaries": {
965
1068
  "rootClass": "kui-toolbar",
966
1069
  "publicClasses": [
@@ -1013,7 +1116,8 @@
1013
1116
  "state": [
1014
1117
  { "id": "actions", "owner": "application", "required": false },
1015
1118
  { "id": "pressed state", "owner": "application", "required": false },
1016
- { "id": "expanded state", "owner": "application", "required": false }
1119
+ { "id": "expanded state", "owner": "application", "required": false },
1120
+ { "id": "avatar image URL", "owner": "application", "required": false }
1017
1121
  ],
1018
1122
  "wiring": { "required": false, "helpers": [], "obligations": [] },
1019
1123
  "responsive": { "owner": "not-applicable", "behaviors": [] },
@@ -1026,11 +1130,16 @@
1026
1130
  "Name the group when its relationship is not evident from context."
1027
1131
  ]
1028
1132
  },
1133
+ "cssValueProps": [],
1029
1134
  "boundaries": {
1030
1135
  "rootClass": "kui-toolbar-control-group",
1031
1136
  "publicClasses": ["kui-toolbar-control-group"],
1032
1137
  "publicTokens": [
1033
1138
  "--kui-color-brand-on-quiet",
1139
+ "--kui-color-pop-border-normal",
1140
+ "--kui-color-pop-fill-normal",
1141
+ "--kui-color-pop-on-normal",
1142
+ "--kui-color-pop-on-quiet",
1034
1143
  "--kui-color-neutral-border-loud",
1035
1144
  "--kui-color-neutral-border-normal",
1036
1145
  "--kui-color-neutral-fill-loud",
@@ -1089,6 +1198,7 @@
1089
1198
  "Use popup surfaces only for real dropdown menus with named triggers."
1090
1199
  ]
1091
1200
  },
1201
+ "cssValueProps": [],
1092
1202
  "boundaries": {
1093
1203
  "rootClass": "kui-dialog-surface",
1094
1204
  "publicClasses": ["kui-dialog-surface", "kui-popup-surface"],
@@ -1131,6 +1241,7 @@
1131
1241
  "Give the toolbar an accessible name (label is required — it exposes role=\"toolbar\")."
1132
1242
  ]
1133
1243
  },
1244
+ "cssValueProps": [],
1134
1245
  "boundaries": {
1135
1246
  "rootClass": "kui-floating-toolbar",
1136
1247
  "publicClasses": ["kui-floating-toolbar"],
@@ -1176,6 +1287,7 @@
1176
1287
  "Plain text is not a heading; pass headingLevel to expose role=heading + aria-level for a page/section title."
1177
1288
  ]
1178
1289
  },
1290
+ "cssValueProps": [],
1179
1291
  "boundaries": {
1180
1292
  "rootClass": "kui-toolbar-text",
1181
1293
  "publicClasses": ["kui-toolbar-text"],
@@ -1220,6 +1332,7 @@
1220
1332
  "Preserve heading and description relationships for the containing surface."
1221
1333
  ]
1222
1334
  },
1335
+ "cssValueProps": [],
1223
1336
  "boundaries": {
1224
1337
  "rootClass": null,
1225
1338
  "publicClasses": [],
@@ -1258,6 +1371,7 @@
1258
1371
  "Name ValueTable with its label; ValueTableRow supplies dt/dd semantics, and row icons stay decorative unless meaning requires an accessible label."
1259
1372
  ]
1260
1373
  },
1374
+ "cssValueProps": [],
1261
1375
  "boundaries": {
1262
1376
  "rootClass": "kui-value-table",
1263
1377
  "publicClasses": [
@@ -1310,7 +1424,7 @@
1310
1424
  "required": false
1311
1425
  },
1312
1426
  {
1313
- "id": "gap, flex, and divider choices",
1427
+ "id": "typed gap, flex, and divider choices",
1314
1428
  "owner": "application",
1315
1429
  "required": false
1316
1430
  }
@@ -1334,6 +1448,33 @@
1334
1448
  "Give a scrollable List a bounded block size and keep keyboard focus visible as its contents scroll."
1335
1449
  ]
1336
1450
  },
1451
+ "cssValueProps": [
1452
+ {
1453
+ "path": "gap",
1454
+ "grammar": "length",
1455
+ "helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
1456
+ "nonStandaloneHelpers": ["plus"],
1457
+ "shorthands": ["none", "2xs", "xs", "s", "m", "l", "xl"],
1458
+ "canonicalShorthands": ["none", "2xs", "xs", "m", "l"],
1459
+ "exceptionalShorthands": ["s", "xl"],
1460
+ "rawPolicy": "forbid",
1461
+ "examples": [
1462
+ "gap=\"xs\"",
1463
+ "gap={rem(0.25)}",
1464
+ "gap={calc(plus(rem(0.25), pct(10)))}"
1465
+ ]
1466
+ },
1467
+ {
1468
+ "path": "flex",
1469
+ "grammar": "flex",
1470
+ "helpers": ["flex"],
1471
+ "shorthands": ["none", "auto", "initial"],
1472
+ "canonicalShorthands": ["none", "auto", "initial"],
1473
+ "exceptionalShorthands": [],
1474
+ "rawPolicy": "forbid",
1475
+ "examples": ["flex=\"none\"", "flex={flex(1, 1, rem(20))}"]
1476
+ }
1477
+ ],
1337
1478
  "boundaries": {
1338
1479
  "rootClass": "kui-list",
1339
1480
  "publicClasses": ["kui-list"],
@@ -1374,6 +1515,7 @@
1374
1515
  "The owning control retains a stable accessible name."
1375
1516
  ]
1376
1517
  },
1518
+ "cssValueProps": [],
1377
1519
  "boundaries": {
1378
1520
  "rootClass": "kui-list-header",
1379
1521
  "publicClasses": [
@@ -1402,6 +1544,8 @@
1402
1544
  "--kui-list-header-hover-background",
1403
1545
  "--kui-list-group-divider-color",
1404
1546
  "--kui-color-brand-on-normal",
1547
+ "--kui-color-pop-fill-normal",
1548
+ "--kui-color-pop-on-normal",
1405
1549
  "--kui-color-danger-fill-normal",
1406
1550
  "--kui-color-danger-on-normal"
1407
1551
  ]
@@ -1457,6 +1601,18 @@
1457
1601
  "Selection semantics are exposed only by the primary button; label, icon, and trailingActionIcon are dormant SafeHtml and must not contain interactive descendants; never place an interactive descendant in ListItem.trailing."
1458
1602
  ]
1459
1603
  },
1604
+ "cssValueProps": [
1605
+ {
1606
+ "path": "style",
1607
+ "grammar": "declarations",
1608
+ "helpers": [],
1609
+ "shorthands": [],
1610
+ "canonicalShorthands": [],
1611
+ "exceptionalShorthands": [],
1612
+ "rawPolicy": "forbid",
1613
+ "examples": ["className=\"app-row\""]
1614
+ }
1615
+ ],
1460
1616
  "boundaries": {
1461
1617
  "rootClass": "kui-list-action-row",
1462
1618
  "publicClasses": [
@@ -1536,6 +1692,18 @@
1536
1692
  "Uses native button activation; selected maps to aria-current and pressed to aria-pressed; rootAttributes cannot add role=menuitem or replace owned ARIA; trailing is dormant content and must not contain controls."
1537
1693
  ]
1538
1694
  },
1695
+ "cssValueProps": [
1696
+ {
1697
+ "path": "style",
1698
+ "grammar": "declarations",
1699
+ "helpers": [],
1700
+ "shorthands": [],
1701
+ "canonicalShorthands": [],
1702
+ "exceptionalShorthands": [],
1703
+ "rawPolicy": "forbid",
1704
+ "examples": ["className=\"app-row\""]
1705
+ }
1706
+ ],
1539
1707
  "boundaries": {
1540
1708
  "rootClass": "kui-list-item",
1541
1709
  "publicClasses": [
@@ -1601,6 +1769,7 @@
1601
1769
  "A layout wrapper only; it adds no role or name — the wrapped control keeps its own."
1602
1770
  ]
1603
1771
  },
1772
+ "cssValueProps": [],
1604
1773
  "boundaries": {
1605
1774
  "rootClass": "kui-list-inset-control",
1606
1775
  "publicClasses": ["kui-list-inset-control"],
@@ -1635,6 +1804,7 @@
1635
1804
  "accessibility": {
1636
1805
  "obligations": ["A layout wrapper only; it adds no role or name."]
1637
1806
  },
1807
+ "cssValueProps": [],
1638
1808
  "boundaries": {
1639
1809
  "rootClass": "kui-list-inset-text",
1640
1810
  "publicClasses": [
@@ -1649,6 +1819,55 @@
1649
1819
  "composition": "generated-permissive-default"
1650
1820
  }
1651
1821
  },
1822
+ {
1823
+ "key": "@kerfjs/ui:application-tabs",
1824
+ "package": "@kerfjs/ui",
1825
+ "id": "application-tabs",
1826
+ "name": "Application tabs composition",
1827
+ "kind": "composition",
1828
+ "source": "kerf",
1829
+ "parents": { "mode": "any", "entries": [] },
1830
+ "contexts": ["application-ui"],
1831
+ "zones": [],
1832
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
1833
+ "state": [
1834
+ { "id": "ordered tabs", "owner": "application", "required": false },
1835
+ { "id": "selected tab", "owner": "application", "required": false },
1836
+ { "id": "tabpanels", "owner": "application", "required": false },
1837
+ {
1838
+ "id": "add and close policy",
1839
+ "owner": "application",
1840
+ "required": false
1841
+ },
1842
+ {
1843
+ "id": "routing and persistence",
1844
+ "owner": "application",
1845
+ "required": false
1846
+ }
1847
+ ],
1848
+ "wiring": { "required": false, "helpers": [], "obligations": [] },
1849
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
1850
+ "layout": {
1851
+ "roles": ["navigation"],
1852
+ "geometry": { "margin": "child", "border": "child", "padding": "child" }
1853
+ },
1854
+ "accessibility": {
1855
+ "obligations": [
1856
+ "Keep one selected tab synchronized with one named tabpanel and retain the wireTabBars disposer."
1857
+ ]
1858
+ },
1859
+ "cssValueProps": [],
1860
+ "boundaries": {
1861
+ "rootClass": null,
1862
+ "publicClasses": [],
1863
+ "publicTokens": []
1864
+ },
1865
+ "diagnostics": [],
1866
+ "provenance": {
1867
+ "selection": "ai/component-catalog.json",
1868
+ "composition": "generated-permissive-default"
1869
+ }
1870
+ },
1652
1871
  {
1653
1872
  "key": "@kerfjs/ui:tabs",
1654
1873
  "package": "@kerfjs/ui",
@@ -1656,9 +1875,31 @@
1656
1875
  "name": "AppTab",
1657
1876
  "kind": "component",
1658
1877
  "source": "kerf",
1659
- "parents": { "mode": "any", "entries": [] },
1660
- "contexts": ["application-ui"],
1661
- "zones": [],
1878
+ "parents": { "mode": "listed", "entries": ["@kerfjs/ui:tab-bar"] },
1879
+ "contexts": ["tabpanel-navigation"],
1880
+ "zones": [
1881
+ {
1882
+ "id": "leading-decoration",
1883
+ "jsx": { "prop": "leading" },
1884
+ "accepts": ["dormant-decoration"],
1885
+ "cardinality": { "min": 0, "max": 1 },
1886
+ "exclusiveWith": []
1887
+ },
1888
+ {
1889
+ "id": "trailing-decoration",
1890
+ "jsx": { "prop": "trailing" },
1891
+ "accepts": ["dormant-decoration"],
1892
+ "cardinality": { "min": 0, "max": 1 },
1893
+ "exclusiveWith": []
1894
+ },
1895
+ {
1896
+ "id": "close-icon",
1897
+ "jsx": { "prop": "closeIcon" },
1898
+ "accepts": ["dormant-decoration"],
1899
+ "cardinality": { "min": 0, "max": 1 },
1900
+ "exclusiveWith": []
1901
+ }
1902
+ ],
1662
1903
  "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
1663
1904
  "state": [
1664
1905
  { "id": "tab identity", "owner": "application", "required": false },
@@ -1685,6 +1926,7 @@
1685
1926
  "Use rootAttributes only for application data-* metadata; component-owned identity, state, action, and role semantics are protected at runtime."
1686
1927
  ]
1687
1928
  },
1929
+ "cssValueProps": [],
1688
1930
  "boundaries": {
1689
1931
  "rootClass": "kui-app-tab",
1690
1932
  "publicClasses": [
@@ -1719,7 +1961,7 @@
1719
1961
  "diagnostics": [],
1720
1962
  "provenance": {
1721
1963
  "selection": "ai/component-catalog.json",
1722
- "composition": "generated-permissive-default"
1964
+ "composition": "docs/accessibility.md#tabs"
1723
1965
  }
1724
1966
  },
1725
1967
  {
@@ -1734,9 +1976,24 @@
1734
1976
  "zones": [
1735
1977
  {
1736
1978
  "id": "tabs",
1737
- "accepts": ["app-tab"],
1979
+ "jsx": { "prop": "children" },
1980
+ "accepts": ["tabs"],
1738
1981
  "cardinality": { "min": 1, "max": "unbounded" },
1739
1982
  "exclusiveWith": []
1983
+ },
1984
+ {
1985
+ "id": "leading",
1986
+ "jsx": { "prop": "leading" },
1987
+ "accepts": ["toolbar-control-group"],
1988
+ "cardinality": { "min": 0, "max": 1 },
1989
+ "exclusiveWith": []
1990
+ },
1991
+ {
1992
+ "id": "trailing",
1993
+ "jsx": { "prop": "trailing" },
1994
+ "accepts": ["toolbar-control-group"],
1995
+ "cardinality": { "min": 0, "max": 1 },
1996
+ "exclusiveWith": []
1740
1997
  }
1741
1998
  ],
1742
1999
  "children": {
@@ -1766,6 +2023,7 @@
1766
2023
  "Selection and focus behavior follow the configured activation mode."
1767
2024
  ]
1768
2025
  },
2026
+ "cssValueProps": [],
1769
2027
  "boundaries": {
1770
2028
  "rootClass": "kui-tab-bar",
1771
2029
  "publicClasses": [
@@ -1813,6 +2071,7 @@
1813
2071
  "Every choice has a meaningful label."
1814
2072
  ]
1815
2073
  },
2074
+ "cssValueProps": [],
1816
2075
  "boundaries": {
1817
2076
  "rootClass": "kui-segmented-control",
1818
2077
  "publicClasses": [
@@ -1862,7 +2121,22 @@
1862
2121
  "source": "kerf",
1863
2122
  "parents": { "mode": "any", "entries": [] },
1864
2123
  "contexts": ["structured-search-editor"],
1865
- "zones": [],
2124
+ "zones": [
2125
+ {
2126
+ "id": "leading-decoration",
2127
+ "jsx": { "prop": "leading" },
2128
+ "accepts": ["dormant-decoration"],
2129
+ "cardinality": { "min": 0, "max": 1 },
2130
+ "exclusiveWith": []
2131
+ },
2132
+ {
2133
+ "id": "trailing-control",
2134
+ "jsx": { "prop": "trailing" },
2135
+ "accepts": ["control"],
2136
+ "cardinality": { "min": 0, "max": 1 },
2137
+ "exclusiveWith": []
2138
+ }
2139
+ ],
1866
2140
  "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
1867
2141
  "state": [
1868
2142
  { "id": "tokens", "owner": "controlled", "required": true },
@@ -1885,11 +2159,12 @@
1885
2159
  "accessibility": {
1886
2160
  "obligations": [
1887
2161
  "Announce result changes when useful and keep tokens atomic during editing.",
1888
- "Keep leading and trailing controls aligned to the first text line while content wraps.",
2162
+ "Keep leading and trailing controls aligned to the first text line while content wraps. Managed Clear restores replacement focus before the next input task, preserving immediate typing and later focus handoffs without a frame delay.",
1889
2163
  "Wire Enter to submit without inserting a contenteditable line break and preserve focus plus the text-relative caret across controlled keyboard chip deletion before the next keystroke. Select All deletion preserves managed open state and replacement focus; persist both edited query and tokens. Visual wrapping remains available.",
1890
2164
  "In collapsible mode, wireTokenSearchFields manages this by default: activating the trigger reveals the searchbox and moves focus into it, Escape on an empty field collapses and returns focus to the trigger, and focus leaving an empty field collapses it; each behavior is individually opt-out."
1891
2165
  ]
1892
2166
  },
2167
+ "cssValueProps": [],
1893
2168
  "boundaries": {
1894
2169
  "rootClass": "kui-token-search",
1895
2170
  "publicClasses": [
@@ -1974,6 +2249,7 @@
1974
2249
  "Keep handleIcon decorative and free of interactive descendants; the separator owns focus, naming, and pointer/keyboard interaction."
1975
2250
  ]
1976
2251
  },
2252
+ "cssValueProps": [],
1977
2253
  "boundaries": {
1978
2254
  "rootClass": "kui-resizable-region",
1979
2255
  "publicClasses": [
@@ -2043,6 +2319,21 @@
2043
2319
  "Hint text is visible below the control through Web Awesome's native hint relationship; placeholderText remains the empty value inside the closed control."
2044
2320
  ]
2045
2321
  },
2322
+ "cssValueProps": [
2323
+ {
2324
+ "path": "choices[].color",
2325
+ "grammar": "color",
2326
+ "helpers": ["uiColor", "colorVar"],
2327
+ "shorthands": [],
2328
+ "canonicalShorthands": [],
2329
+ "exceptionalShorthands": [],
2330
+ "rawPolicy": "forbid",
2331
+ "examples": [
2332
+ "color: uiColor(\"success\")",
2333
+ "color: colorVar(\"--app-choice-color\")"
2334
+ ]
2335
+ }
2336
+ ],
2046
2337
  "boundaries": {
2047
2338
  "rootClass": "kui-select",
2048
2339
  "publicClasses": [
@@ -2105,6 +2396,7 @@
2105
2396
  "Choose polite status versus assertive alert deliberately."
2106
2397
  ]
2107
2398
  },
2399
+ "cssValueProps": [],
2108
2400
  "boundaries": {
2109
2401
  "rootClass": null,
2110
2402
  "publicClasses": [],
@@ -2124,8 +2416,23 @@
2124
2416
  "kind": "component",
2125
2417
  "source": "kerf",
2126
2418
  "parents": { "mode": "any", "entries": [] },
2127
- "contexts": ["application-ui"],
2128
- "zones": [],
2419
+ "contexts": ["persistent-status", "recoverable-error"],
2420
+ "zones": [
2421
+ {
2422
+ "id": "icon",
2423
+ "jsx": { "prop": "icon" },
2424
+ "accepts": ["dormant-decoration"],
2425
+ "cardinality": { "min": 0, "max": 1 },
2426
+ "exclusiveWith": []
2427
+ },
2428
+ {
2429
+ "id": "action",
2430
+ "jsx": { "prop": "action" },
2431
+ "accepts": ["control"],
2432
+ "cardinality": { "min": 0, "max": 1 },
2433
+ "exclusiveWith": []
2434
+ }
2435
+ ],
2129
2436
  "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
2130
2437
  "state": [
2131
2438
  { "id": "badge content", "owner": "application", "required": false },
@@ -2146,6 +2453,7 @@
2146
2453
  "Keep optional badge content terse and do not rely on its tone alone for meaning."
2147
2454
  ]
2148
2455
  },
2456
+ "cssValueProps": [],
2149
2457
  "boundaries": {
2150
2458
  "rootClass": "kui-state-banner",
2151
2459
  "publicClasses": [
@@ -2160,6 +2468,9 @@
2160
2468
  "--kui-color-brand-border-quiet",
2161
2469
  "--kui-color-brand-fill-quiet",
2162
2470
  "--kui-color-brand-on-fill",
2471
+ "--kui-color-pop-border-normal",
2472
+ "--kui-color-pop-fill-quiet",
2473
+ "--kui-color-pop-on-fill",
2163
2474
  "--kui-color-danger-border-quiet",
2164
2475
  "--kui-color-danger-fill-quiet",
2165
2476
  "--kui-color-danger-on-quiet",
@@ -2191,6 +2502,9 @@
2191
2502
  "--kui-state-banner-info-background",
2192
2503
  "--kui-state-banner-info-border",
2193
2504
  "--kui-state-banner-info-foreground",
2505
+ "--kui-state-banner-pop-background",
2506
+ "--kui-state-banner-pop-border",
2507
+ "--kui-state-banner-pop-foreground",
2194
2508
  "--kui-state-banner-neutral-background",
2195
2509
  "--kui-state-banner-neutral-border",
2196
2510
  "--kui-state-banner-neutral-foreground",
@@ -2205,7 +2519,7 @@
2205
2519
  "diagnostics": [],
2206
2520
  "provenance": {
2207
2521
  "selection": "ai/component-catalog.json",
2208
- "composition": "generated-permissive-default"
2522
+ "composition": "docs/component-selection.md#problem-to-component-matrix"
2209
2523
  }
2210
2524
  },
2211
2525
  {
@@ -2216,8 +2530,23 @@
2216
2530
  "kind": "component",
2217
2531
  "source": "kerf",
2218
2532
  "parents": { "mode": "any", "entries": [] },
2219
- "contexts": ["application-ui"],
2220
- "zones": [],
2533
+ "contexts": ["empty-content", "busy-content"],
2534
+ "zones": [
2535
+ {
2536
+ "id": "icon",
2537
+ "jsx": { "prop": "icon" },
2538
+ "accepts": ["dormant-decoration"],
2539
+ "cardinality": { "min": 0, "max": 1 },
2540
+ "exclusiveWith": []
2541
+ },
2542
+ {
2543
+ "id": "action",
2544
+ "jsx": { "prop": "action" },
2545
+ "accepts": ["control"],
2546
+ "cardinality": { "min": 0, "max": 1 },
2547
+ "exclusiveWith": []
2548
+ }
2549
+ ],
2221
2550
  "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
2222
2551
  "state": [
2223
2552
  {
@@ -2239,6 +2568,7 @@
2239
2568
  "Busy state uses aria-busy; the illustration never supplies the only label."
2240
2569
  ]
2241
2570
  },
2571
+ "cssValueProps": [],
2242
2572
  "boundaries": {
2243
2573
  "rootClass": "kui-empty-state",
2244
2574
  "publicClasses": [
@@ -2260,7 +2590,7 @@
2260
2590
  "diagnostics": [],
2261
2591
  "provenance": {
2262
2592
  "selection": "ai/component-catalog.json",
2263
- "composition": "generated-permissive-default"
2593
+ "composition": "docs/component-selection.md#problem-to-component-matrix"
2264
2594
  }
2265
2595
  },
2266
2596
  {
@@ -2297,6 +2627,7 @@
2297
2627
  "Labeled spinners use role img; decorative spinners are hidden and stop for reduced motion."
2298
2628
  ]
2299
2629
  },
2630
+ "cssValueProps": [],
2300
2631
  "boundaries": {
2301
2632
  "rootClass": "kui-loading-spinner",
2302
2633
  "publicClasses": ["kui-loading-spinner"],
@@ -2347,6 +2678,51 @@
2347
2678
  "Decorative by default (aria-hidden); pass label to announce it as an image. A component in placeholder mode marks itself aria-busy and disables its own controls."
2348
2679
  ]
2349
2680
  },
2681
+ "cssValueProps": [
2682
+ {
2683
+ "path": "width",
2684
+ "grammar": "size",
2685
+ "helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
2686
+ "nonStandaloneHelpers": ["plus"],
2687
+ "shorthands": ["auto", "min-content", "max-content", "fit-content"],
2688
+ "canonicalShorthands": [
2689
+ "auto",
2690
+ "min-content",
2691
+ "max-content",
2692
+ "fit-content"
2693
+ ],
2694
+ "exceptionalShorthands": [],
2695
+ "rawPolicy": "forbid",
2696
+ "examples": ["width={em(12)}", "width=\"fit-content\""]
2697
+ },
2698
+ {
2699
+ "path": "height",
2700
+ "grammar": "size",
2701
+ "helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
2702
+ "nonStandaloneHelpers": ["plus"],
2703
+ "shorthands": ["auto", "min-content", "max-content", "fit-content"],
2704
+ "canonicalShorthands": [
2705
+ "auto",
2706
+ "min-content",
2707
+ "max-content",
2708
+ "fit-content"
2709
+ ],
2710
+ "exceptionalShorthands": [],
2711
+ "rawPolicy": "forbid",
2712
+ "examples": ["height={em(1.5)}"]
2713
+ },
2714
+ {
2715
+ "path": "radius",
2716
+ "grammar": "length",
2717
+ "helpers": ["px", "rem", "em", "pct", "space", "lengthVar", "calc"],
2718
+ "nonStandaloneHelpers": ["plus"],
2719
+ "shorthands": [],
2720
+ "canonicalShorthands": [],
2721
+ "exceptionalShorthands": [],
2722
+ "rawPolicy": "forbid",
2723
+ "examples": ["radius={px(999)}"]
2724
+ }
2725
+ ],
2350
2726
  "boundaries": {
2351
2727
  "rootClass": "kui-skeleton",
2352
2728
  "publicClasses": ["kui-skeleton", "kui-skeleton-lines"],
@@ -2377,6 +2753,7 @@
2377
2753
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2378
2754
  },
2379
2755
  "accessibility": { "obligations": [] },
2756
+ "cssValueProps": [],
2380
2757
  "boundaries": {
2381
2758
  "rootClass": null,
2382
2759
  "publicClasses": [],
@@ -2407,6 +2784,7 @@
2407
2784
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
2408
2785
  },
2409
2786
  "accessibility": { "obligations": [] },
2787
+ "cssValueProps": [],
2410
2788
  "boundaries": {
2411
2789
  "rootClass": null,
2412
2790
  "publicClasses": [],
@@ -2437,6 +2815,7 @@
2437
2815
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2438
2816
  },
2439
2817
  "accessibility": { "obligations": [] },
2818
+ "cssValueProps": [],
2440
2819
  "boundaries": {
2441
2820
  "rootClass": null,
2442
2821
  "publicClasses": [],
@@ -2467,6 +2846,7 @@
2467
2846
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
2468
2847
  },
2469
2848
  "accessibility": { "obligations": [] },
2849
+ "cssValueProps": [],
2470
2850
  "boundaries": {
2471
2851
  "rootClass": null,
2472
2852
  "publicClasses": [],
@@ -2497,6 +2877,7 @@
2497
2877
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2498
2878
  },
2499
2879
  "accessibility": { "obligations": [] },
2880
+ "cssValueProps": [],
2500
2881
  "boundaries": {
2501
2882
  "rootClass": null,
2502
2883
  "publicClasses": [],
@@ -2527,6 +2908,7 @@
2527
2908
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2528
2909
  },
2529
2910
  "accessibility": { "obligations": [] },
2911
+ "cssValueProps": [],
2530
2912
  "boundaries": {
2531
2913
  "rootClass": null,
2532
2914
  "publicClasses": [],
@@ -2557,6 +2939,7 @@
2557
2939
  "geometry": { "margin": "self", "border": "child", "padding": "child" }
2558
2940
  },
2559
2941
  "accessibility": { "obligations": [] },
2942
+ "cssValueProps": [],
2560
2943
  "boundaries": {
2561
2944
  "rootClass": null,
2562
2945
  "publicClasses": [],
@@ -2587,6 +2970,7 @@
2587
2970
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2588
2971
  },
2589
2972
  "accessibility": { "obligations": [] },
2973
+ "cssValueProps": [],
2590
2974
  "boundaries": {
2591
2975
  "rootClass": null,
2592
2976
  "publicClasses": [],
@@ -2617,6 +3001,7 @@
2617
3001
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2618
3002
  },
2619
3003
  "accessibility": { "obligations": [] },
3004
+ "cssValueProps": [],
2620
3005
  "boundaries": {
2621
3006
  "rootClass": null,
2622
3007
  "publicClasses": [],
@@ -2647,6 +3032,7 @@
2647
3032
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2648
3033
  },
2649
3034
  "accessibility": { "obligations": [] },
3035
+ "cssValueProps": [],
2650
3036
  "boundaries": {
2651
3037
  "rootClass": null,
2652
3038
  "publicClasses": [],
@@ -2677,6 +3063,7 @@
2677
3063
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2678
3064
  },
2679
3065
  "accessibility": { "obligations": [] },
3066
+ "cssValueProps": [],
2680
3067
  "boundaries": {
2681
3068
  "rootClass": null,
2682
3069
  "publicClasses": [],
@@ -2707,6 +3094,7 @@
2707
3094
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2708
3095
  },
2709
3096
  "accessibility": { "obligations": [] },
3097
+ "cssValueProps": [],
2710
3098
  "boundaries": {
2711
3099
  "rootClass": null,
2712
3100
  "publicClasses": [],
@@ -2737,6 +3125,7 @@
2737
3125
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2738
3126
  },
2739
3127
  "accessibility": { "obligations": [] },
3128
+ "cssValueProps": [],
2740
3129
  "boundaries": {
2741
3130
  "rootClass": null,
2742
3131
  "publicClasses": [],
@@ -2767,6 +3156,7 @@
2767
3156
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2768
3157
  },
2769
3158
  "accessibility": { "obligations": [] },
3159
+ "cssValueProps": [],
2770
3160
  "boundaries": {
2771
3161
  "rootClass": null,
2772
3162
  "publicClasses": [],
@@ -2808,6 +3198,7 @@
2808
3198
  "geometry": { "margin": "self", "border": "child", "padding": "child" }
2809
3199
  },
2810
3200
  "accessibility": { "obligations": [] },
3201
+ "cssValueProps": [],
2811
3202
  "boundaries": {
2812
3203
  "rootClass": null,
2813
3204
  "publicClasses": [],
@@ -2838,6 +3229,7 @@
2838
3229
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
2839
3230
  },
2840
3231
  "accessibility": { "obligations": [] },
3232
+ "cssValueProps": [],
2841
3233
  "boundaries": {
2842
3234
  "rootClass": null,
2843
3235
  "publicClasses": [],
@@ -2879,6 +3271,7 @@
2879
3271
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2880
3272
  },
2881
3273
  "accessibility": { "obligations": [] },
3274
+ "cssValueProps": [],
2882
3275
  "boundaries": {
2883
3276
  "rootClass": null,
2884
3277
  "publicClasses": [],
@@ -2909,6 +3302,7 @@
2909
3302
  "geometry": { "margin": "self", "border": "none", "padding": "child" }
2910
3303
  },
2911
3304
  "accessibility": { "obligations": [] },
3305
+ "cssValueProps": [],
2912
3306
  "boundaries": {
2913
3307
  "rootClass": null,
2914
3308
  "publicClasses": [],
@@ -2939,6 +3333,7 @@
2939
3333
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2940
3334
  },
2941
3335
  "accessibility": { "obligations": [] },
3336
+ "cssValueProps": [],
2942
3337
  "boundaries": {
2943
3338
  "rootClass": null,
2944
3339
  "publicClasses": [],
@@ -2969,6 +3364,7 @@
2969
3364
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
2970
3365
  },
2971
3366
  "accessibility": { "obligations": [] },
3367
+ "cssValueProps": [],
2972
3368
  "boundaries": {
2973
3369
  "rootClass": null,
2974
3370
  "publicClasses": [],
@@ -2999,6 +3395,7 @@
2999
3395
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3000
3396
  },
3001
3397
  "accessibility": { "obligations": [] },
3398
+ "cssValueProps": [],
3002
3399
  "boundaries": {
3003
3400
  "rootClass": null,
3004
3401
  "publicClasses": [],
@@ -3040,6 +3437,7 @@
3040
3437
  "geometry": { "margin": "self", "border": "self", "padding": "self" }
3041
3438
  },
3042
3439
  "accessibility": { "obligations": [] },
3440
+ "cssValueProps": [],
3043
3441
  "boundaries": {
3044
3442
  "rootClass": null,
3045
3443
  "publicClasses": [],
@@ -3070,6 +3468,7 @@
3070
3468
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3071
3469
  },
3072
3470
  "accessibility": { "obligations": [] },
3471
+ "cssValueProps": [],
3073
3472
  "boundaries": {
3074
3473
  "rootClass": null,
3075
3474
  "publicClasses": [],
@@ -3100,6 +3499,7 @@
3100
3499
  "geometry": { "margin": "self", "border": "self", "padding": "self" }
3101
3500
  },
3102
3501
  "accessibility": { "obligations": [] },
3502
+ "cssValueProps": [],
3103
3503
  "boundaries": {
3104
3504
  "rootClass": null,
3105
3505
  "publicClasses": [],
@@ -3130,6 +3530,7 @@
3130
3530
  "geometry": { "margin": "self", "border": "self", "padding": "self" }
3131
3531
  },
3132
3532
  "accessibility": { "obligations": [] },
3533
+ "cssValueProps": [],
3133
3534
  "boundaries": {
3134
3535
  "rootClass": null,
3135
3536
  "publicClasses": [],
@@ -3160,15 +3561,16 @@
3160
3561
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3161
3562
  },
3162
3563
  "accessibility": { "obligations": [] },
3564
+ "cssValueProps": [],
3163
3565
  "boundaries": {
3164
3566
  "rootClass": null,
3165
- "publicClasses": [],
3567
+ "publicClasses": ["hide-actions"],
3166
3568
  "publicTokens": []
3167
3569
  },
3168
3570
  "diagnostics": [],
3169
3571
  "provenance": {
3170
3572
  "selection": "ai/component-catalog.json",
3171
- "composition": "generated-permissive-default"
3573
+ "composition": "docs/webawesome-theme.md#coverage"
3172
3574
  }
3173
3575
  },
3174
3576
  {
@@ -3190,6 +3592,7 @@
3190
3592
  "geometry": { "margin": "parent", "border": "self", "padding": "none" }
3191
3593
  },
3192
3594
  "accessibility": { "obligations": [] },
3595
+ "cssValueProps": [],
3193
3596
  "boundaries": {
3194
3597
  "rootClass": null,
3195
3598
  "publicClasses": [],
@@ -3220,6 +3623,7 @@
3220
3623
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3221
3624
  },
3222
3625
  "accessibility": { "obligations": [] },
3626
+ "cssValueProps": [],
3223
3627
  "boundaries": {
3224
3628
  "rootClass": null,
3225
3629
  "publicClasses": [],
@@ -3250,6 +3654,7 @@
3250
3654
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3251
3655
  },
3252
3656
  "accessibility": { "obligations": [] },
3657
+ "cssValueProps": [],
3253
3658
  "boundaries": {
3254
3659
  "rootClass": null,
3255
3660
  "publicClasses": [],
@@ -3280,6 +3685,7 @@
3280
3685
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3281
3686
  },
3282
3687
  "accessibility": { "obligations": [] },
3688
+ "cssValueProps": [],
3283
3689
  "boundaries": {
3284
3690
  "rootClass": null,
3285
3691
  "publicClasses": [],
@@ -3310,6 +3716,7 @@
3310
3716
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3311
3717
  },
3312
3718
  "accessibility": { "obligations": [] },
3719
+ "cssValueProps": [],
3313
3720
  "boundaries": {
3314
3721
  "rootClass": null,
3315
3722
  "publicClasses": [],
@@ -3340,6 +3747,7 @@
3340
3747
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3341
3748
  },
3342
3749
  "accessibility": { "obligations": [] },
3750
+ "cssValueProps": [],
3343
3751
  "boundaries": {
3344
3752
  "rootClass": null,
3345
3753
  "publicClasses": [],
@@ -3370,6 +3778,7 @@
3370
3778
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
3371
3779
  },
3372
3780
  "accessibility": { "obligations": [] },
3781
+ "cssValueProps": [],
3373
3782
  "boundaries": {
3374
3783
  "rootClass": null,
3375
3784
  "publicClasses": [],
@@ -3400,6 +3809,7 @@
3400
3809
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3401
3810
  },
3402
3811
  "accessibility": { "obligations": [] },
3812
+ "cssValueProps": [],
3403
3813
  "boundaries": {
3404
3814
  "rootClass": null,
3405
3815
  "publicClasses": [],
@@ -3430,6 +3840,7 @@
3430
3840
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3431
3841
  },
3432
3842
  "accessibility": { "obligations": [] },
3843
+ "cssValueProps": [],
3433
3844
  "boundaries": {
3434
3845
  "rootClass": null,
3435
3846
  "publicClasses": [],
@@ -3477,6 +3888,7 @@
3477
3888
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3478
3889
  },
3479
3890
  "accessibility": { "obligations": [] },
3891
+ "cssValueProps": [],
3480
3892
  "boundaries": {
3481
3893
  "rootClass": null,
3482
3894
  "publicClasses": [],
@@ -3521,6 +3933,7 @@
3521
3933
  }
3522
3934
  },
3523
3935
  "accessibility": { "obligations": [] },
3936
+ "cssValueProps": [],
3524
3937
  "boundaries": {
3525
3938
  "rootClass": null,
3526
3939
  "publicClasses": [],
@@ -3551,6 +3964,7 @@
3551
3964
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3552
3965
  },
3553
3966
  "accessibility": { "obligations": [] },
3967
+ "cssValueProps": [],
3554
3968
  "boundaries": {
3555
3969
  "rootClass": null,
3556
3970
  "publicClasses": [],
@@ -3581,6 +3995,7 @@
3581
3995
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3582
3996
  },
3583
3997
  "accessibility": { "obligations": [] },
3998
+ "cssValueProps": [],
3584
3999
  "boundaries": {
3585
4000
  "rootClass": null,
3586
4001
  "publicClasses": [],
@@ -3611,6 +4026,7 @@
3611
4026
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3612
4027
  },
3613
4028
  "accessibility": { "obligations": [] },
4029
+ "cssValueProps": [],
3614
4030
  "boundaries": {
3615
4031
  "rootClass": null,
3616
4032
  "publicClasses": [],
@@ -3641,6 +4057,7 @@
3641
4057
  "geometry": { "margin": "self", "border": "self", "padding": "self" }
3642
4058
  },
3643
4059
  "accessibility": { "obligations": [] },
4060
+ "cssValueProps": [],
3644
4061
  "boundaries": {
3645
4062
  "rootClass": null,
3646
4063
  "publicClasses": [],
@@ -3671,6 +4088,7 @@
3671
4088
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3672
4089
  },
3673
4090
  "accessibility": { "obligations": [] },
4091
+ "cssValueProps": [],
3674
4092
  "boundaries": {
3675
4093
  "rootClass": null,
3676
4094
  "publicClasses": [],
@@ -3701,6 +4119,7 @@
3701
4119
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3702
4120
  },
3703
4121
  "accessibility": { "obligations": [] },
4122
+ "cssValueProps": [],
3704
4123
  "boundaries": {
3705
4124
  "rootClass": null,
3706
4125
  "publicClasses": [],
@@ -3731,6 +4150,7 @@
3731
4150
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
3732
4151
  },
3733
4152
  "accessibility": { "obligations": [] },
4153
+ "cssValueProps": [],
3734
4154
  "boundaries": {
3735
4155
  "rootClass": null,
3736
4156
  "publicClasses": [],
@@ -3761,6 +4181,7 @@
3761
4181
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
3762
4182
  },
3763
4183
  "accessibility": { "obligations": [] },
4184
+ "cssValueProps": [],
3764
4185
  "boundaries": {
3765
4186
  "rootClass": null,
3766
4187
  "publicClasses": [],
@@ -3791,6 +4212,7 @@
3791
4212
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3792
4213
  },
3793
4214
  "accessibility": { "obligations": [] },
4215
+ "cssValueProps": [],
3794
4216
  "boundaries": {
3795
4217
  "rootClass": null,
3796
4218
  "publicClasses": [],
@@ -3821,6 +4243,7 @@
3821
4243
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
3822
4244
  },
3823
4245
  "accessibility": { "obligations": [] },
4246
+ "cssValueProps": [],
3824
4247
  "boundaries": {
3825
4248
  "rootClass": null,
3826
4249
  "publicClasses": [],
@@ -3851,6 +4274,7 @@
3851
4274
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3852
4275
  },
3853
4276
  "accessibility": { "obligations": [] },
4277
+ "cssValueProps": [],
3854
4278
  "boundaries": {
3855
4279
  "rootClass": null,
3856
4280
  "publicClasses": [],
@@ -3881,6 +4305,7 @@
3881
4305
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
3882
4306
  },
3883
4307
  "accessibility": { "obligations": [] },
4308
+ "cssValueProps": [],
3884
4309
  "boundaries": {
3885
4310
  "rootClass": null,
3886
4311
  "publicClasses": [],
@@ -3911,6 +4336,7 @@
3911
4336
  "geometry": { "margin": "none", "border": "self", "padding": "none" }
3912
4337
  },
3913
4338
  "accessibility": { "obligations": [] },
4339
+ "cssValueProps": [],
3914
4340
  "boundaries": {
3915
4341
  "rootClass": null,
3916
4342
  "publicClasses": [],
@@ -3941,6 +4367,7 @@
3941
4367
  "geometry": { "margin": "none", "border": "self", "padding": "none" }
3942
4368
  },
3943
4369
  "accessibility": { "obligations": [] },
4370
+ "cssValueProps": [],
3944
4371
  "boundaries": {
3945
4372
  "rootClass": null,
3946
4373
  "publicClasses": [],
@@ -3971,6 +4398,7 @@
3971
4398
  "geometry": { "margin": "none", "border": "self", "padding": "child" }
3972
4399
  },
3973
4400
  "accessibility": { "obligations": [] },
4401
+ "cssValueProps": [],
3974
4402
  "boundaries": {
3975
4403
  "rootClass": null,
3976
4404
  "publicClasses": [],
@@ -4001,6 +4429,7 @@
4001
4429
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
4002
4430
  },
4003
4431
  "accessibility": { "obligations": [] },
4432
+ "cssValueProps": [],
4004
4433
  "boundaries": {
4005
4434
  "rootClass": null,
4006
4435
  "publicClasses": [],
@@ -4031,6 +4460,7 @@
4031
4460
  "geometry": { "margin": "none", "border": "self", "padding": "child" }
4032
4461
  },
4033
4462
  "accessibility": { "obligations": [] },
4463
+ "cssValueProps": [],
4034
4464
  "boundaries": {
4035
4465
  "rootClass": null,
4036
4466
  "publicClasses": [],
@@ -4061,6 +4491,7 @@
4061
4491
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
4062
4492
  },
4063
4493
  "accessibility": { "obligations": [] },
4494
+ "cssValueProps": [],
4064
4495
  "boundaries": {
4065
4496
  "rootClass": null,
4066
4497
  "publicClasses": [],
@@ -4091,6 +4522,7 @@
4091
4522
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
4092
4523
  },
4093
4524
  "accessibility": { "obligations": [] },
4525
+ "cssValueProps": [],
4094
4526
  "boundaries": {
4095
4527
  "rootClass": null,
4096
4528
  "publicClasses": [],
@@ -4121,6 +4553,7 @@
4121
4553
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
4122
4554
  },
4123
4555
  "accessibility": { "obligations": [] },
4556
+ "cssValueProps": [],
4124
4557
  "boundaries": {
4125
4558
  "rootClass": null,
4126
4559
  "publicClasses": [],
@@ -4151,6 +4584,7 @@
4151
4584
  "geometry": { "margin": "none", "border": "self", "padding": "child" }
4152
4585
  },
4153
4586
  "accessibility": { "obligations": [] },
4587
+ "cssValueProps": [],
4154
4588
  "boundaries": {
4155
4589
  "rootClass": null,
4156
4590
  "publicClasses": [],
@@ -4181,6 +4615,7 @@
4181
4615
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
4182
4616
  },
4183
4617
  "accessibility": { "obligations": [] },
4618
+ "cssValueProps": [],
4184
4619
  "boundaries": {
4185
4620
  "rootClass": null,
4186
4621
  "publicClasses": [],
@@ -4211,6 +4646,7 @@
4211
4646
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
4212
4647
  },
4213
4648
  "accessibility": { "obligations": [] },
4649
+ "cssValueProps": [],
4214
4650
  "boundaries": {
4215
4651
  "rootClass": null,
4216
4652
  "publicClasses": [],
@@ -4241,6 +4677,7 @@
4241
4677
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
4242
4678
  },
4243
4679
  "accessibility": { "obligations": [] },
4680
+ "cssValueProps": [],
4244
4681
  "boundaries": {
4245
4682
  "rootClass": null,
4246
4683
  "publicClasses": [],
@@ -4271,6 +4708,7 @@
4271
4708
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
4272
4709
  },
4273
4710
  "accessibility": { "obligations": [] },
4711
+ "cssValueProps": [],
4274
4712
  "boundaries": {
4275
4713
  "rootClass": null,
4276
4714
  "publicClasses": [],
@@ -4301,6 +4739,7 @@
4301
4739
  "geometry": { "margin": "self", "border": "self", "padding": "self" }
4302
4740
  },
4303
4741
  "accessibility": { "obligations": [] },
4742
+ "cssValueProps": [],
4304
4743
  "boundaries": {
4305
4744
  "rootClass": null,
4306
4745
  "publicClasses": [],
@@ -4331,6 +4770,7 @@
4331
4770
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
4332
4771
  },
4333
4772
  "accessibility": { "obligations": [] },
4773
+ "cssValueProps": [],
4334
4774
  "boundaries": {
4335
4775
  "rootClass": null,
4336
4776
  "publicClasses": [],
@@ -4361,6 +4801,7 @@
4361
4801
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
4362
4802
  },
4363
4803
  "accessibility": { "obligations": [] },
4804
+ "cssValueProps": [],
4364
4805
  "boundaries": {
4365
4806
  "rootClass": null,
4366
4807
  "publicClasses": [],
@@ -4391,6 +4832,7 @@
4391
4832
  "geometry": { "margin": "none", "border": "self", "padding": "self" }
4392
4833
  },
4393
4834
  "accessibility": { "obligations": [] },
4835
+ "cssValueProps": [],
4394
4836
  "boundaries": {
4395
4837
  "rootClass": null,
4396
4838
  "publicClasses": [],
@@ -4421,6 +4863,7 @@
4421
4863
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
4422
4864
  },
4423
4865
  "accessibility": { "obligations": [] },
4866
+ "cssValueProps": [],
4424
4867
  "boundaries": {
4425
4868
  "rootClass": null,
4426
4869
  "publicClasses": [],
@@ -4451,6 +4894,7 @@
4451
4894
  "geometry": { "margin": "none", "border": "child", "padding": "child" }
4452
4895
  },
4453
4896
  "accessibility": { "obligations": [] },
4897
+ "cssValueProps": [],
4454
4898
  "boundaries": {
4455
4899
  "rootClass": null,
4456
4900
  "publicClasses": [],
@@ -4481,6 +4925,7 @@
4481
4925
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
4482
4926
  },
4483
4927
  "accessibility": { "obligations": [] },
4928
+ "cssValueProps": [],
4484
4929
  "boundaries": {
4485
4930
  "rootClass": null,
4486
4931
  "publicClasses": [],
@@ -4511,6 +4956,7 @@
4511
4956
  "geometry": { "margin": "none", "border": "none", "padding": "none" }
4512
4957
  },
4513
4958
  "accessibility": { "obligations": [] },
4959
+ "cssValueProps": [],
4514
4960
  "boundaries": {
4515
4961
  "rootClass": null,
4516
4962
  "publicClasses": [],
@@ -4558,6 +5004,7 @@
4558
5004
  "Each pane has one scroll owner and each resize handle keeps its separator keyboard contract."
4559
5005
  ]
4560
5006
  },
5007
+ "cssValueProps": [],
4561
5008
  "boundaries": {
4562
5009
  "rootClass": null,
4563
5010
  "publicClasses": [],
@@ -4605,6 +5052,7 @@
4605
5052
  "Native buttons retain names, current state, sequential focus, and disclosure state; rows and standalone footer actions remain at least 44px tall."
4606
5053
  ]
4607
5054
  },
5055
+ "cssValueProps": [],
4608
5056
  "boundaries": {
4609
5057
  "rootClass": null,
4610
5058
  "publicClasses": [],
@@ -4648,6 +5096,7 @@
4648
5096
  "Heading order and action focus order remain stable when controls wrap."
4649
5097
  ]
4650
5098
  },
5099
+ "cssValueProps": [],
4651
5100
  "boundaries": {
4652
5101
  "rootClass": null,
4653
5102
  "publicClasses": [],
@@ -4691,6 +5140,7 @@
4691
5140
  "Web Awesome owns modal focus and Escape; the application adapter restores the invoking control after hide, and Toolbar plus ToolbarText supply the visible hierarchy."
4692
5141
  ]
4693
5142
  },
5143
+ "cssValueProps": [],
4694
5144
  "boundaries": {
4695
5145
  "rootClass": null,
4696
5146
  "publicClasses": [],
@@ -4738,6 +5188,7 @@
4738
5188
  "The form references its ToolbarText title and supporting-summary ids; production fields own labels and help; invalid submission creates an assertive persistent StateBanner while successful submission creates a polite persistent banner."
4739
5189
  ]
4740
5190
  },
5191
+ "cssValueProps": [],
4741
5192
  "boundaries": {
4742
5193
  "rootClass": null,
4743
5194
  "publicClasses": [],
@@ -4781,6 +5232,7 @@
4781
5232
  "Busy, polite, and assertive states use the appropriate production feedback semantics."
4782
5233
  ]
4783
5234
  },
5235
+ "cssValueProps": [],
4784
5236
  "boundaries": {
4785
5237
  "rootClass": null,
4786
5238
  "publicClasses": [],
@@ -4832,6 +5284,7 @@
4832
5284
  "Each control retains its own native name, pressed/value state, and keyboard contract."
4833
5285
  ]
4834
5286
  },
5287
+ "cssValueProps": [],
4835
5288
  "boundaries": {
4836
5289
  "rootClass": null,
4837
5290
  "publicClasses": [],
@@ -4879,6 +5332,7 @@
4879
5332
  "The back control is a real button; reduced motion collapses the slide to instant."
4880
5333
  ]
4881
5334
  },
5335
+ "cssValueProps": [],
4882
5336
  "boundaries": {
4883
5337
  "rootClass": null,
4884
5338
  "publicClasses": [],
@@ -4933,6 +5387,7 @@
4933
5387
  "Each component marks itself aria-busy and disables its own controls while loading; the composition keeps labels and structure stable across the transition."
4934
5388
  ]
4935
5389
  },
5390
+ "cssValueProps": [],
4936
5391
  "boundaries": {
4937
5392
  "rootClass": null,
4938
5393
  "publicClasses": [],
@@ -4984,6 +5439,7 @@
4984
5439
  "Each panel is a labeled aside that is aria-hidden while collapsed; toggles carry aria-expanded and the standard per-side glyph; while compact an open panel is an overlay with a backdrop, Escape and backdrop-click dismiss, and a trapped Tab ring."
4985
5440
  ]
4986
5441
  },
5442
+ "cssValueProps": [],
4987
5443
  "boundaries": {
4988
5444
  "rootClass": null,
4989
5445
  "publicClasses": [],