@kerfjs/ui 5.0.0-beta.95 → 5.0.0-beta.96

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 (385) hide show
  1. package/README.md +95 -55
  2. package/ai/component-catalog.json +1328 -94
  3. package/ai/component-composition-rules.json +11 -0
  4. package/ai/component-composition.d.ts +3 -0
  5. package/ai/component-composition.json +955 -23
  6. package/ai/component-composition.schema.json +4 -0
  7. package/ai/components/README.md +12 -0
  8. package/ai/components/badge.md +6 -2
  9. package/ai/components/choice-chips.md +80 -0
  10. package/ai/components/column-track.md +78 -0
  11. package/ai/components/combobox.md +88 -0
  12. package/ai/components/content-item.md +2 -0
  13. package/ai/components/content-swap.md +78 -0
  14. package/ai/components/corner-status.md +88 -0
  15. package/ai/components/document-baseline.md +3 -1
  16. package/ai/components/edge-activity-indicator.md +81 -0
  17. package/ai/components/file-picker.md +88 -0
  18. package/ai/components/foundation.md +1 -1
  19. package/ai/components/framed-list.md +80 -0
  20. package/ai/components/grid.md +2 -1
  21. package/ai/components/icon-button.md +82 -0
  22. package/ai/components/icon-toggle-button.md +80 -0
  23. package/ai/components/list-action-row.md +19 -7
  24. package/ai/components/list-item.md +16 -7
  25. package/ai/components/list.md +5 -2
  26. package/ai/components/nav-stack.md +2 -1
  27. package/ai/components/popup-menu.md +2 -2
  28. package/ai/components/row.md +1 -1
  29. package/ai/components/select.md +2 -1
  30. package/ai/components/split-button.md +80 -0
  31. package/ai/components/split-view.md +1 -1
  32. package/ai/components/state-banner.md +4 -2
  33. package/ai/components/summary-row.md +85 -0
  34. package/ai/components/sunken-panel.md +1 -1
  35. package/ai/components/surface-scaffold.md +8 -2
  36. package/ai/components/text.md +3 -0
  37. package/ai/components/toolbar-control-group.md +4 -2
  38. package/ai/components/toolbar-text.md +1 -0
  39. package/ai/components/toolbar.md +1 -0
  40. package/ai/components/value-table.md +9 -2
  41. package/ai/components/wa-button-group.md +2 -1
  42. package/ai/components/wa-button.md +5 -1
  43. package/ai/public-api-signatures-v1.md +1063 -52
  44. package/ai/skill.md +54 -52
  45. package/ai/webawesome-jsx-signatures-v1.md +1 -1
  46. package/dist/anchored-surface.d.ts +13 -2
  47. package/dist/anchored-surface.js +1 -1
  48. package/dist/app-tab.js +1 -1
  49. package/dist/badge.d.ts +31 -2
  50. package/dist/badge.js +2 -1
  51. package/dist/browser/choice-chips.js +3 -0
  52. package/dist/browser/column-track.js +3 -0
  53. package/dist/browser/combobox.js +3 -0
  54. package/dist/browser/content-swap.js +3 -0
  55. package/dist/browser/corner-status.js +3 -0
  56. package/dist/browser/edge-activity-indicator.js +3 -0
  57. package/dist/browser/file-picker.js +3 -0
  58. package/dist/browser/framed-list.js +3 -0
  59. package/dist/browser/icon-button.js +4 -0
  60. package/dist/browser/icon-toggle-button.js +4 -0
  61. package/dist/browser/list-action-row.js +1 -0
  62. package/dist/browser/split-button.js +5 -0
  63. package/dist/browser/summary-row.js +3 -0
  64. package/dist/catalog-resources.d.ts +1 -0
  65. package/dist/catalog.d.ts +1 -0
  66. package/dist/catalog.js +16 -13
  67. package/dist/catalog.js.map +1 -1
  68. package/dist/chip.d.ts +1 -0
  69. package/dist/choice-chips.d.ts +58 -0
  70. package/dist/choice-chips.js +3 -0
  71. package/dist/choice-chips.js.map +1 -0
  72. package/dist/chunk-2MSPNRWJ.js +82 -0
  73. package/dist/chunk-2MSPNRWJ.js.map +1 -0
  74. package/dist/{chunk-3PO7JEK7.js → chunk-36TL6BCR.js} +18 -4
  75. package/dist/chunk-36TL6BCR.js.map +1 -0
  76. package/dist/{chunk-MORVLMDG.js → chunk-44A6LP54.js} +3 -3
  77. package/dist/chunk-44A6LP54.js.map +1 -0
  78. package/dist/{chunk-7QQ3HE47.js → chunk-4LOK4634.js} +7 -3
  79. package/dist/chunk-4LOK4634.js.map +1 -0
  80. package/dist/chunk-4UB5Z3ZZ.js +68 -0
  81. package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
  82. package/dist/{chunk-PGL6TXFW.js → chunk-6BRRUPJY.js} +6 -2
  83. package/dist/chunk-6BRRUPJY.js.map +1 -0
  84. package/dist/{chunk-KAJVVN7Q.js → chunk-6NOLL5KG.js} +2 -2
  85. package/dist/{chunk-KAJVVN7Q.js.map → chunk-6NOLL5KG.js.map} +1 -1
  86. package/dist/{chunk-IOS2NXW7.js → chunk-76PWEN5Y.js} +13 -2
  87. package/dist/chunk-76PWEN5Y.js.map +1 -0
  88. package/dist/{chunk-B3TROLC2.js → chunk-7IUEBNCO.js} +7 -3
  89. package/dist/chunk-7IUEBNCO.js.map +1 -0
  90. package/dist/{chunk-75YOTZ25.js → chunk-AYHC62OZ.js} +10 -6
  91. package/dist/chunk-AYHC62OZ.js.map +1 -0
  92. package/dist/{chunk-RZYQFGMM.js → chunk-BBU2SPRE.js} +4 -4
  93. package/dist/{chunk-RZYQFGMM.js.map → chunk-BBU2SPRE.js.map} +1 -1
  94. package/dist/{chunk-QCLLBMLA.js → chunk-BU23Z5HZ.js} +37 -12
  95. package/dist/chunk-BU23Z5HZ.js.map +1 -0
  96. package/dist/{chunk-BYHGRKC3.js → chunk-CMLPFIC5.js} +3 -1
  97. package/dist/chunk-CMLPFIC5.js.map +1 -0
  98. package/dist/{chunk-3XPGJUUQ.js → chunk-D5RGM3XA.js} +3 -2
  99. package/dist/chunk-D5RGM3XA.js.map +1 -0
  100. package/dist/chunk-EIET4QLK.js +51 -0
  101. package/dist/chunk-EIET4QLK.js.map +1 -0
  102. package/dist/chunk-ETCWQLJV.js +85 -0
  103. package/dist/chunk-ETCWQLJV.js.map +1 -0
  104. package/dist/chunk-FDZNYD4C.js +138 -0
  105. package/dist/chunk-FDZNYD4C.js.map +1 -0
  106. package/dist/{chunk-XKZPBRU7.js → chunk-FOQK4F3L.js} +25 -5
  107. package/dist/chunk-FOQK4F3L.js.map +1 -0
  108. package/dist/{chunk-FL6J644M.js → chunk-GJYQ27C2.js} +4 -2
  109. package/dist/chunk-GJYQ27C2.js.map +1 -0
  110. package/dist/{chunk-DL55BSQX.js → chunk-GZE2XVKC.js} +8 -1
  111. package/dist/chunk-GZE2XVKC.js.map +1 -0
  112. package/dist/{chunk-YP2G67S7.js → chunk-HO6FU3G7.js} +2 -2
  113. package/dist/{chunk-YP2G67S7.js.map → chunk-HO6FU3G7.js.map} +1 -1
  114. package/dist/{chunk-3DXHNLME.js → chunk-IGTWXPTN.js} +25 -8
  115. package/dist/chunk-IGTWXPTN.js.map +1 -0
  116. package/dist/chunk-IKS72C6P.js +53 -0
  117. package/dist/chunk-IKS72C6P.js.map +1 -0
  118. package/dist/chunk-JYD7G4RG.js +130 -0
  119. package/dist/chunk-JYD7G4RG.js.map +1 -0
  120. package/dist/{chunk-LAZLBC2Q.js → chunk-KH4KEMSP.js} +33 -2
  121. package/dist/chunk-KH4KEMSP.js.map +1 -0
  122. package/dist/chunk-LL45C7BB.js +122 -0
  123. package/dist/chunk-LL45C7BB.js.map +1 -0
  124. package/dist/chunk-M2NRCFRO.js +45 -0
  125. package/dist/chunk-M2NRCFRO.js.map +1 -0
  126. package/dist/chunk-MJ5RU6XT.js +173 -0
  127. package/dist/chunk-MJ5RU6XT.js.map +1 -0
  128. package/dist/{chunk-GIUOXAVL.js → chunk-P74VXMB6.js} +39 -19
  129. package/dist/chunk-P74VXMB6.js.map +1 -0
  130. package/dist/{chunk-TKDDTLG5.js → chunk-PBT3CPPY.js} +31 -3
  131. package/dist/chunk-PBT3CPPY.js.map +1 -0
  132. package/dist/chunk-PRG4CL3Q.js +88 -0
  133. package/dist/chunk-PRG4CL3Q.js.map +1 -0
  134. package/dist/chunk-QH5KOFNS.js +39 -0
  135. package/dist/chunk-QH5KOFNS.js.map +1 -0
  136. package/dist/{chunk-CD5TOO22.js → chunk-QIAPOWHH.js} +2 -2
  137. package/dist/{chunk-CD5TOO22.js.map → chunk-QIAPOWHH.js.map} +1 -1
  138. package/dist/chunk-QQ3TTWFH.js +29 -0
  139. package/dist/chunk-QQ3TTWFH.js.map +1 -0
  140. package/dist/chunk-QYMJHS4K.js +36 -0
  141. package/dist/chunk-QYMJHS4K.js.map +1 -0
  142. package/dist/chunk-R42D2BAO.js +44 -0
  143. package/dist/chunk-R42D2BAO.js.map +1 -0
  144. package/dist/chunk-S2XULQEK.js +52 -0
  145. package/dist/chunk-S2XULQEK.js.map +1 -0
  146. package/dist/{chunk-NMWDHZVM.js → chunk-S4Y3YTAI.js} +2 -2
  147. package/dist/{chunk-NMWDHZVM.js.map → chunk-S4Y3YTAI.js.map} +1 -1
  148. package/dist/{chunk-O27D24CA.js → chunk-TDMHA7C3.js} +3 -2
  149. package/dist/chunk-TDMHA7C3.js.map +1 -0
  150. package/dist/chunk-U6QYTMDB.js +85 -0
  151. package/dist/chunk-U6QYTMDB.js.map +1 -0
  152. package/dist/{chunk-QQICWWNX.js → chunk-V6W56V3N.js} +18 -7
  153. package/dist/chunk-V6W56V3N.js.map +1 -0
  154. package/dist/chunk-W4IK7AWD.js +73 -0
  155. package/dist/chunk-W4IK7AWD.js.map +1 -0
  156. package/dist/{chunk-TNG3XKHB.js → chunk-Y3LC7JQO.js} +26 -8
  157. package/dist/chunk-Y3LC7JQO.js.map +1 -0
  158. package/dist/chunk-YWQGSUF2.js +84 -0
  159. package/dist/chunk-YWQGSUF2.js.map +1 -0
  160. package/dist/{chunk-MTCTX25G.js → chunk-YXOMI7ES.js} +1 -1
  161. package/dist/chunk-YXOMI7ES.js.map +1 -0
  162. package/dist/chunk-ZKKO4MHC.js +25 -0
  163. package/dist/chunk-ZKKO4MHC.js.map +1 -0
  164. package/dist/collapsible-panel.d.ts +10 -3
  165. package/dist/collapsible-panel.js +8 -5
  166. package/dist/collapsible-panel.js.map +1 -1
  167. package/dist/column-track.d.ts +41 -0
  168. package/dist/column-track.js +4 -0
  169. package/dist/column-track.js.map +1 -0
  170. package/dist/combobox.d.ts +40 -0
  171. package/dist/combobox.js +3 -0
  172. package/dist/combobox.js.map +1 -0
  173. package/dist/content-item.d.ts +21 -4
  174. package/dist/content-item.js +1 -1
  175. package/dist/content-swap.d.ts +34 -0
  176. package/dist/content-swap.js +3 -0
  177. package/dist/content-swap.js.map +1 -0
  178. package/dist/corner-status.d.ts +36 -0
  179. package/dist/corner-status.js +3 -0
  180. package/dist/corner-status.js.map +1 -0
  181. package/dist/edge-activity-indicator.d.ts +28 -0
  182. package/dist/edge-activity-indicator.js +3 -0
  183. package/dist/edge-activity-indicator.js.map +1 -0
  184. package/dist/extension-attributes-mu8MFUl0.d.ts +13 -0
  185. package/dist/file-picker.d.ts +47 -0
  186. package/dist/file-picker.js +3 -0
  187. package/dist/file-picker.js.map +1 -0
  188. package/dist/framed-list.d.ts +47 -0
  189. package/dist/framed-list.js +4 -0
  190. package/dist/framed-list.js.map +1 -0
  191. package/dist/grid.js +1 -1
  192. package/dist/help-tags-register.js +1 -1
  193. package/dist/icon-button.d.ts +46 -0
  194. package/dist/icon-button.js +6 -0
  195. package/dist/icon-button.js.map +1 -0
  196. package/dist/icon-toggle-button.d.ts +42 -0
  197. package/dist/icon-toggle-button.js +6 -0
  198. package/dist/icon-toggle-button.js.map +1 -0
  199. package/dist/index.d.ts +23 -6
  200. package/dist/index.js +44 -27
  201. package/dist/list-action-row.d.ts +47 -10
  202. package/dist/list-action-row.js +2 -1
  203. package/dist/list-header.js +1 -1
  204. package/dist/list-inset-text.js +1 -1
  205. package/dist/list-item.d.ts +10 -2
  206. package/dist/list-item.js +1 -1
  207. package/dist/list.d.ts +37 -5
  208. package/dist/list.js +1 -1
  209. package/dist/nav-stack.d.ts +1 -0
  210. package/dist/nav-stack.js +2 -1
  211. package/dist/pane.js +2 -1
  212. package/dist/popup-menu-register.js +18 -1
  213. package/dist/popup-menu-register.js.map +1 -1
  214. package/dist/popup-menu.d.ts +28 -3
  215. package/dist/popup-menu.js +1 -1
  216. package/dist/row.d.ts +6 -2
  217. package/dist/row.js +1 -1
  218. package/dist/select-register.js +1 -1
  219. package/dist/select.js +2 -1
  220. package/dist/split-button.d.ts +57 -0
  221. package/dist/split-button.js +7 -0
  222. package/dist/split-button.js.map +1 -0
  223. package/dist/split-view.d.ts +20 -2
  224. package/dist/split-view.js +22 -1
  225. package/dist/split-view.js.map +1 -1
  226. package/dist/state-banner.d.ts +17 -2
  227. package/dist/state-banner.js +2 -1
  228. package/dist/styles/badge.css +27 -0
  229. package/dist/styles/catalog/components/catalog-example.css +7 -3
  230. package/dist/styles/choice-chips.css +154 -0
  231. package/dist/styles/column-track.css +57 -0
  232. package/dist/styles/combobox.css +113 -0
  233. package/dist/styles/components/actions/icon-button/icon-button.css +22 -0
  234. package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +83 -0
  235. package/dist/styles/components/actions/popup-menu/popup-menu.css +69 -1
  236. package/dist/styles/components/actions/split-button/split-button.css +95 -0
  237. package/dist/styles/components/actions/toolbar/toolbar.css +16 -9
  238. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +144 -48
  239. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +23 -0
  240. package/dist/styles/components/collections/framed-list/framed-list.css +47 -0
  241. package/dist/styles/components/collections/list/list.css +44 -0
  242. package/dist/styles/components/collections/list-action-row/list-action-row.css +39 -0
  243. package/dist/styles/components/collections/list-item/list-item.css +45 -0
  244. package/dist/styles/components/collections/summary-row/summary-row.css +161 -0
  245. package/dist/styles/components/data-display/value-table/value-table.css +76 -0
  246. package/dist/styles/components/feedback/badge/badge.css +27 -0
  247. package/dist/styles/components/feedback/corner-status/corner-status.css +60 -0
  248. package/dist/styles/components/feedback/edge-activity-indicator/edge-activity-indicator.css +127 -0
  249. package/dist/styles/components/feedback/state-banner/state-banner.css +38 -0
  250. package/dist/styles/components/forms/choice-chips/choice-chips.css +154 -0
  251. package/dist/styles/components/forms/combobox/combobox.css +113 -0
  252. package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
  253. package/dist/styles/components/forms/token-search-field/token-search-field.css +12 -1
  254. package/dist/styles/components/layout/column-track/column-track.css +57 -0
  255. package/dist/styles/components/layout/content-swap/content-swap.css +154 -0
  256. package/dist/styles/components/layout/pane/pane.css +2 -8
  257. package/dist/styles/components/layout/workbench/workbench.css +2 -8
  258. package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +1 -4
  259. package/dist/styles/components/surfaces/content-item/content-item.css +18 -0
  260. package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +1 -4
  261. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +119 -0
  262. package/dist/styles/components/typography/text/text.css +62 -0
  263. package/dist/styles/content-item.css +18 -0
  264. package/dist/styles/content-swap.css +154 -0
  265. package/dist/styles/corner-status.css +60 -0
  266. package/dist/styles/document.css +65 -0
  267. package/dist/styles/edge-activity-indicator.css +127 -0
  268. package/dist/styles/file-picker.css +81 -0
  269. package/dist/styles/foundation.css +8 -0
  270. package/dist/styles/framed-list.css +47 -0
  271. package/dist/styles/icon-button.css +22 -0
  272. package/dist/styles/icon-toggle-button.css +83 -0
  273. package/dist/styles/list-action-row.css +39 -0
  274. package/dist/styles/list-item.css +45 -0
  275. package/dist/styles/list.css +44 -0
  276. package/dist/styles/pane.css +2 -8
  277. package/dist/styles/popup-menu.css +69 -1
  278. package/dist/styles/split-button.css +95 -0
  279. package/dist/styles/state-banner.css +38 -0
  280. package/dist/styles/styles.css +12 -0
  281. package/dist/styles/summary-row.css +161 -0
  282. package/dist/styles/sunken-panel.css +1 -4
  283. package/dist/styles/surface-scaffold.css +119 -0
  284. package/dist/styles/tab-navigator.css +1 -4
  285. package/dist/styles/text.css +62 -0
  286. package/dist/styles/token-search-field.css +12 -1
  287. package/dist/styles/toolbar-control-group.css +144 -48
  288. package/dist/styles/toolbar-text.css +23 -0
  289. package/dist/styles/toolbar.css +16 -9
  290. package/dist/styles/value-table.css +76 -0
  291. package/dist/styles/webawesome.css +4 -4
  292. package/dist/styles/workbench.css +2 -8
  293. package/dist/summary-row.d.ts +56 -0
  294. package/dist/summary-row.js +4 -0
  295. package/dist/summary-row.js.map +1 -0
  296. package/dist/sunken-panel.d.ts +8 -1
  297. package/dist/sunken-panel.js +2 -1
  298. package/dist/surface-scaffold-register.js +7 -1
  299. package/dist/surface-scaffold-register.js.map +1 -1
  300. package/dist/surface-scaffold.d.ts +75 -2
  301. package/dist/surface-scaffold.js +2 -1
  302. package/dist/tab-navigator.js +4 -1
  303. package/dist/tab-navigator.js.map +1 -1
  304. package/dist/text.d.ts +39 -4
  305. package/dist/text.js +1 -1
  306. package/dist/toolbar-control-group.d.ts +8 -1
  307. package/dist/toolbar-control-group.js +1 -1
  308. package/dist/toolbar-text.d.ts +14 -1
  309. package/dist/toolbar-text.js +1 -1
  310. package/dist/toolbar.d.ts +14 -3
  311. package/dist/toolbar.js +1 -1
  312. package/dist/value-table.d.ts +20 -2
  313. package/dist/value-table.js +1 -1
  314. package/dist/wire-catalog.d.ts +1 -0
  315. package/dist/wire-comboboxes.d.ts +26 -0
  316. package/dist/wire-comboboxes.js +3 -0
  317. package/dist/wire-comboboxes.js.map +1 -0
  318. package/dist/wire-corner-status.d.ts +11 -0
  319. package/dist/wire-corner-status.js +3 -0
  320. package/dist/wire-corner-status.js.map +1 -0
  321. package/dist/wire-file-pickers.d.ts +26 -0
  322. package/dist/wire-file-pickers.js +3 -0
  323. package/dist/wire-file-pickers.js.map +1 -0
  324. package/dist/wire-list-reorder.d.ts +41 -0
  325. package/dist/wire-list-reorder.js +3 -0
  326. package/dist/wire-list-reorder.js.map +1 -0
  327. package/dist/wire-token-search-fields.js +1 -1
  328. package/dist/workbench.d.ts +1 -0
  329. package/dist/workbench.js +2 -1
  330. package/docs/accessibility.md +45 -2
  331. package/docs/anchored-surface.md +15 -7
  332. package/docs/app-layouts.md +2 -1
  333. package/docs/component-contract.md +26 -6
  334. package/docs/component-selection.md +149 -13
  335. package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -0
  336. package/docs/design/templates/choice-chips/color-palette.svg +1 -0
  337. package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -0
  338. package/docs/design/templates/choice-chips/compact-icons.svg +1 -0
  339. package/docs/design/templates/choice-chips-dark.svg +1 -0
  340. package/docs/design/templates/choice-chips.svg +1 -0
  341. package/docs/design/templates/list-action-row/trailing-menu-dark.svg +1 -0
  342. package/docs/design/templates/list-action-row/trailing-menu.svg +1 -0
  343. package/docs/design/templates/list-action-row-dark.svg +1 -1
  344. package/docs/design/templates/list-action-row.svg +1 -1
  345. package/docs/design/templates/state-banner/strip-dark.svg +1 -0
  346. package/docs/design/templates/state-banner/strip.svg +1 -0
  347. package/docs/design/templates/state-banner-dark.svg +1 -1
  348. package/docs/design/templates/state-banner.svg +1 -1
  349. package/docs/design/templates.md +1 -1
  350. package/docs/document-baseline.md +51 -0
  351. package/docs/layout.md +52 -1
  352. package/docs/split-view.md +20 -2
  353. package/docs/sunken-panel.md +13 -0
  354. package/docs/surface-scaffold.md +66 -1
  355. package/docs/ux-demo.md +1 -0
  356. package/docs/webawesome-theme.md +6 -2
  357. package/llms.txt +125 -16
  358. package/package.json +89 -1
  359. package/dist/chunk-3DXHNLME.js.map +0 -1
  360. package/dist/chunk-3PO7JEK7.js.map +0 -1
  361. package/dist/chunk-3XPGJUUQ.js.map +0 -1
  362. package/dist/chunk-4Y4L5YEI.js +0 -66
  363. package/dist/chunk-4Y4L5YEI.js.map +0 -1
  364. package/dist/chunk-75YOTZ25.js.map +0 -1
  365. package/dist/chunk-7QQ3HE47.js.map +0 -1
  366. package/dist/chunk-A7DYEERU.js +0 -59
  367. package/dist/chunk-A7DYEERU.js.map +0 -1
  368. package/dist/chunk-B3TROLC2.js.map +0 -1
  369. package/dist/chunk-BYHGRKC3.js.map +0 -1
  370. package/dist/chunk-DL55BSQX.js.map +0 -1
  371. package/dist/chunk-FL6J644M.js.map +0 -1
  372. package/dist/chunk-GIUOXAVL.js.map +0 -1
  373. package/dist/chunk-IOS2NXW7.js.map +0 -1
  374. package/dist/chunk-J3AWE5I4.js +0 -50
  375. package/dist/chunk-J3AWE5I4.js.map +0 -1
  376. package/dist/chunk-LAZLBC2Q.js.map +0 -1
  377. package/dist/chunk-MORVLMDG.js.map +0 -1
  378. package/dist/chunk-MTCTX25G.js.map +0 -1
  379. package/dist/chunk-O27D24CA.js.map +0 -1
  380. package/dist/chunk-PGL6TXFW.js.map +0 -1
  381. package/dist/chunk-QCLLBMLA.js.map +0 -1
  382. package/dist/chunk-QQICWWNX.js.map +0 -1
  383. package/dist/chunk-TKDDTLG5.js.map +0 -1
  384. package/dist/chunk-TNG3XKHB.js.map +0 -1
  385. package/dist/chunk-XKZPBRU7.js.map +0 -1
@@ -45,13 +45,14 @@
45
45
  "accessibility": {
46
46
  "obligations": [
47
47
  "Badge is non-interactive. Supply label when visible content is abbreviated, and ariaHidden when it repeats an accessible name owned by the surrounding component. A text-free dot must take either label (exposed as an image) or ariaHidden, which the types enforce.",
48
- "Keep meaningful text visible because tone is supplementary."
48
+ "Keep meaningful text visible because tone is supplementary.",
49
+ "A label replaces abbreviated or symbolic visible text; the badge is then a labeled image (role img)."
49
50
  ]
50
51
  },
51
52
  "cssValueProps": [],
52
53
  "boundaries": {
53
54
  "rootClass": "kui-badge",
54
- "publicClasses": ["kui-badge"],
55
+ "publicClasses": ["kui-badge", "kui-badge__icon", "kui-badge__label"],
55
56
  "publicTokens": []
56
57
  },
57
58
  "diagnostics": [],
@@ -327,6 +328,8 @@
327
328
  "--kui-color-surface",
328
329
  "--kui-color-surface-raised",
329
330
  "--kui-color-surface-lowered",
331
+ "--kui-sunken-texture",
332
+ "--kui-sunken-surface",
330
333
  "--kui-color-text",
331
334
  "--kui-color-text-quiet",
332
335
  "--kui-color-text-link",
@@ -443,7 +446,8 @@
443
446
  },
444
447
  "accessibility": {
445
448
  "obligations": [
446
- "Links keep the semantic link color at zero specificity so application focus and link styles still apply."
449
+ "Links keep the semantic link color at zero specificity so application focus and link styles still apply.",
450
+ "Native controls get semantic cursors at zero specificity: pointer on enabled buttons, links, role=button, checkbox/radio/button-type inputs, selects, and checkbox/radio labels; not-allowed on disabled controls, aria-disabled role=button, and a disabled wa-button's base part; text on text-like inputs and textareas."
447
451
  ]
448
452
  },
449
453
  "cssValueProps": [],
@@ -1678,6 +1682,7 @@
1678
1682
  "accessibility": {
1679
1683
  "obligations": [
1680
1684
  "Name the group when its relationship is not evident from context.",
1685
+ "A disabled native button (disabled, or aria-disabled=\"true\" when it must stay focusable) dims to half opacity with the not-allowed cursor and no hover surface; a disabled raw wa-button paints no hover surface either. Do not add disabled styling yourself.",
1681
1686
  "Name an icon-only button or link with aria-label, not title. Once any help-tag installer is imported (select/register, popup-menu/register, or help-tags/register), it shows an aria-hidden Web Awesome help tag repeating that name after a 500ms hover and at once on keyboard focus, hidden on a press and on Escape, and never joins aria-labelledby. A native title keeps the browser tooltip and gets no second tag."
1682
1687
  ]
1683
1688
  },
@@ -1865,7 +1870,11 @@
1865
1870
  ],
1866
1871
  "boundaries": {
1867
1872
  "rootClass": "kui-dialog-surface",
1868
- "publicClasses": ["kui-dialog-surface", "kui-popup-surface"],
1873
+ "publicClasses": [
1874
+ "kui-dialog-surface",
1875
+ "kui-popover-dialog-surface",
1876
+ "kui-popup-surface"
1877
+ ],
1869
1878
  "publicTokens": [
1870
1879
  "--kui-radius-l",
1871
1880
  "--kui-wa-container-inset",
@@ -2105,7 +2114,8 @@
2105
2114
  "Text renders a native paragraph by default; choose an h1 through h6 variant by document outline rather than appearance, or span for inline secondary text.",
2106
2115
  "Ordinary global, data, and ARIA attributes pass through to the native element.",
2107
2116
  "Choose tone, size, and font independently of the heading level so appearance does not distort the document outline.",
2108
- "FieldLabel is plain text, not a native label; give it an id and associate the preview group with aria-labelledby."
2117
+ "FieldLabel is plain text, not a native label; give it an id and associate the preview group with aria-labelledby.",
2118
+ "Start and middle truncation clip visually only: the whole value stays in the DOM in reading order, and Text shows it as the element's title unless the app supplies one."
2109
2119
  ]
2110
2120
  },
2111
2121
  "cssValueProps": [],
@@ -2226,8 +2236,174 @@
2226
2236
  "--kui-value-table-border",
2227
2237
  "--kui-value-table-icon-size",
2228
2238
  "--kui-value-table-row-columns",
2229
- "--kui-value-table-row-padding-block",
2230
- "--kui-value-table-row-gap"
2239
+ "--kui-value-table-row-gap",
2240
+ "--kui-value-table-row-padding-block"
2241
+ ]
2242
+ },
2243
+ "diagnostics": [],
2244
+ "provenance": {
2245
+ "selection": "ai/component-catalog.json",
2246
+ "composition": "generated-permissive-default"
2247
+ }
2248
+ },
2249
+ {
2250
+ "key": "@kerfjs/ui:framed-list",
2251
+ "package": "@kerfjs/ui",
2252
+ "id": "framed-list",
2253
+ "name": "FramedList",
2254
+ "kind": "component",
2255
+ "source": "kerf",
2256
+ "parents": { "mode": "any", "entries": [] },
2257
+ "contexts": ["application-ui"],
2258
+ "zones": [],
2259
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
2260
+ "state": [
2261
+ {
2262
+ "id": "row content and its controls",
2263
+ "owner": "application",
2264
+ "required": false
2265
+ },
2266
+ {
2267
+ "id": "which row is highlighted",
2268
+ "owner": "application",
2269
+ "required": false
2270
+ },
2271
+ {
2272
+ "id": "the list's accessible name",
2273
+ "owner": "application",
2274
+ "required": false
2275
+ }
2276
+ ],
2277
+ "wiring": {
2278
+ "required": false,
2279
+ "helpers": [],
2280
+ "obligations": [],
2281
+ "stateAttributes": []
2282
+ },
2283
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
2284
+ "layout": {
2285
+ "roles": ["structure"],
2286
+ "geometry": {
2287
+ "margin": "self",
2288
+ "border": "self",
2289
+ "padding": "self",
2290
+ "notes": [
2291
+ "Rows own the 8px inset and the inset 1px divider above them; the frame owns the 8px margin, border, and radius."
2292
+ ]
2293
+ }
2294
+ },
2295
+ "accessibility": {
2296
+ "obligations": [
2297
+ "Renders a list (ul role=list, li rows); pass label when no heading names it. Highlight is visual; carry its meaning in row content or a control's state."
2298
+ ]
2299
+ },
2300
+ "cssValueProps": [],
2301
+ "boundaries": {
2302
+ "rootClass": "kui-framed-list",
2303
+ "publicClasses": ["kui-framed-list", "kui-framed-list__row"],
2304
+ "rootElement": "ul",
2305
+ "publicTokens": [
2306
+ "--kui-framed-list-border",
2307
+ "--kui-color-neutral-border-normal",
2308
+ "--kui-color-surface-lowered",
2309
+ "--kui-color-surface",
2310
+ "--kui-color-brand-fill-quiet",
2311
+ "--kui-layout-inline-margin",
2312
+ "--kui-layout-item-padding",
2313
+ "--kui-layout-rounded-radius"
2314
+ ]
2315
+ },
2316
+ "diagnostics": [],
2317
+ "provenance": {
2318
+ "selection": "ai/component-catalog.json",
2319
+ "composition": "generated-permissive-default"
2320
+ }
2321
+ },
2322
+ {
2323
+ "key": "@kerfjs/ui:summary-row",
2324
+ "package": "@kerfjs/ui",
2325
+ "id": "summary-row",
2326
+ "name": "SummaryRow",
2327
+ "kind": "component",
2328
+ "source": "kerf",
2329
+ "parents": { "mode": "any", "entries": [] },
2330
+ "contexts": ["application-ui"],
2331
+ "zones": [],
2332
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
2333
+ "state": [
2334
+ {
2335
+ "id": "the listbox container, selection set, and keyboard movement",
2336
+ "owner": "application",
2337
+ "required": false
2338
+ },
2339
+ {
2340
+ "id": "the title, leading glyph, trailing meta, and metadata content",
2341
+ "owner": "application",
2342
+ "required": false
2343
+ },
2344
+ {
2345
+ "id": "rail tone and dimming policy",
2346
+ "owner": "application",
2347
+ "required": false
2348
+ }
2349
+ ],
2350
+ "wiring": {
2351
+ "required": false,
2352
+ "helpers": [],
2353
+ "obligations": [],
2354
+ "stateAttributes": []
2355
+ },
2356
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
2357
+ "layout": {
2358
+ "roles": ["structure"],
2359
+ "geometry": {
2360
+ "margin": "none",
2361
+ "border": "self",
2362
+ "padding": "self",
2363
+ "notes": [
2364
+ "Rows sit flush in a list section and round only the corners at its edges; cards are borderless rounded cards."
2365
+ ]
2366
+ }
2367
+ },
2368
+ "accessibility": {
2369
+ "obligations": [
2370
+ "Each SummaryRow is role=option with tabindex=0 and aria-selected; place rows in a labeled role=listbox and move focus with the arrow keys in the app. The rail is decorative; carry its meaning in text."
2371
+ ]
2372
+ },
2373
+ "cssValueProps": [],
2374
+ "boundaries": {
2375
+ "rootClass": "kui-summary-row",
2376
+ "publicClasses": [
2377
+ "kui-summary-row",
2378
+ "kui-summary-row__rail",
2379
+ "kui-summary-row__body",
2380
+ "kui-summary-row__leading",
2381
+ "kui-summary-row__content",
2382
+ "kui-summary-row__title",
2383
+ "kui-summary-row__trailing",
2384
+ "kui-summary-row__metadata"
2385
+ ],
2386
+ "rootElement": "div",
2387
+ "publicTokens": [
2388
+ "--kui-color-neutral-border-quiet",
2389
+ "--kui-color-text",
2390
+ "--kui-color-surface",
2391
+ "--kui-color-brand-border-normal",
2392
+ "--kui-color-text-link",
2393
+ "--kui-color-brand-fill-quiet",
2394
+ "--kui-color-neutral-on-quiet",
2395
+ "--kui-color-brand-fill-loud",
2396
+ "--kui-color-pop-fill-loud",
2397
+ "--kui-color-success-fill-loud",
2398
+ "--kui-color-warning-fill-loud",
2399
+ "--kui-color-danger-fill-loud",
2400
+ "--kui-color-text-quiet",
2401
+ "--kui-font-2xs",
2402
+ "--kui-font-xs",
2403
+ "--kui-layout-rounded-radius",
2404
+ "--kui-space-2xs",
2405
+ "--kui-space-s",
2406
+ "--kui-space-xs"
2231
2407
  ]
2232
2408
  },
2233
2409
  "diagnostics": [],
@@ -2431,6 +2607,130 @@
2431
2607
  "composition": "generated-permissive-default"
2432
2608
  }
2433
2609
  },
2610
+ {
2611
+ "key": "@kerfjs/ui:column-track",
2612
+ "package": "@kerfjs/ui",
2613
+ "id": "column-track",
2614
+ "name": "ColumnTrack",
2615
+ "kind": "component",
2616
+ "source": "kerf",
2617
+ "parents": { "mode": "any", "entries": [] },
2618
+ "contexts": ["application-ui"],
2619
+ "zones": [],
2620
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
2621
+ "state": [
2622
+ {
2623
+ "id": "the columns and their content",
2624
+ "owner": "application",
2625
+ "required": false
2626
+ },
2627
+ {
2628
+ "id": "choosing scroll or paged layout (for example by device class)",
2629
+ "owner": "application",
2630
+ "required": false
2631
+ },
2632
+ {
2633
+ "id": "drag and drop between columns",
2634
+ "owner": "application",
2635
+ "required": false
2636
+ }
2637
+ ],
2638
+ "wiring": {
2639
+ "required": false,
2640
+ "helpers": [],
2641
+ "obligations": [],
2642
+ "stateAttributes": []
2643
+ },
2644
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
2645
+ "layout": {
2646
+ "roles": ["structure"],
2647
+ "geometry": {
2648
+ "margin": "none",
2649
+ "border": "none",
2650
+ "padding": "self",
2651
+ "notes": [
2652
+ "The track pads 8px inline and fills its parent's height; columns sit flush and own their insets and vertical scrolling."
2653
+ ]
2654
+ }
2655
+ },
2656
+ "accessibility": {
2657
+ "obligations": [
2658
+ "Name the track with aria-label through rootAttributes when it is a landmark-like region; give each column a region name. Paged scrolling is smooth unless reduced motion is preferred."
2659
+ ]
2660
+ },
2661
+ "cssValueProps": [],
2662
+ "boundaries": {
2663
+ "rootClass": "kui-column-track",
2664
+ "publicClasses": ["kui-column-track", "kui-column-track__columns"],
2665
+ "rootElement": "div",
2666
+ "publicTokens": ["--kui-layout-inline-margin"]
2667
+ },
2668
+ "diagnostics": [],
2669
+ "provenance": {
2670
+ "selection": "ai/component-catalog.json",
2671
+ "composition": "generated-permissive-default"
2672
+ }
2673
+ },
2674
+ {
2675
+ "key": "@kerfjs/ui:content-swap",
2676
+ "package": "@kerfjs/ui",
2677
+ "id": "content-swap",
2678
+ "name": "ContentSwap",
2679
+ "kind": "component",
2680
+ "source": "kerf",
2681
+ "parents": { "mode": "any", "entries": [] },
2682
+ "contexts": ["application-ui"],
2683
+ "zones": [],
2684
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
2685
+ "state": [
2686
+ {
2687
+ "id": "which side is active and the push direction",
2688
+ "owner": "application",
2689
+ "required": false
2690
+ },
2691
+ {
2692
+ "id": "both sides' content",
2693
+ "owner": "application",
2694
+ "required": false
2695
+ },
2696
+ { "id": "the region's name", "owner": "application", "required": false }
2697
+ ],
2698
+ "wiring": {
2699
+ "required": false,
2700
+ "helpers": [],
2701
+ "obligations": [],
2702
+ "stateAttributes": []
2703
+ },
2704
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
2705
+ "layout": {
2706
+ "roles": ["structure"],
2707
+ "geometry": {
2708
+ "margin": "none",
2709
+ "border": "none",
2710
+ "padding": "none",
2711
+ "notes": [
2712
+ "Both sides share one grid cell; the region keeps the active side's height and clips the motion."
2713
+ ]
2714
+ }
2715
+ },
2716
+ "accessibility": {
2717
+ "obligations": [
2718
+ "The inactive side is inert and aria-hidden; label makes the swap a named region. Push mirrors in right-to-left documents. Reduced motion replaces the slide with a short fade."
2719
+ ]
2720
+ },
2721
+ "cssValueProps": [],
2722
+ "boundaries": {
2723
+ "rootClass": "kui-content-swap",
2724
+ "publicClasses": ["kui-content-swap", "kui-content-swap__side"],
2725
+ "rootElement": "div",
2726
+ "publicTokens": []
2727
+ },
2728
+ "diagnostics": [],
2729
+ "provenance": {
2730
+ "selection": "ai/component-catalog.json",
2731
+ "composition": "generated-permissive-default"
2732
+ }
2733
+ },
2434
2734
  {
2435
2735
  "key": "@kerfjs/ui:spacer",
2436
2736
  "package": "@kerfjs/ui",
@@ -2589,7 +2889,8 @@
2589
2889
  "accessibility": {
2590
2890
  "obligations": [
2591
2891
  "List adds layout only and no list role by default; selectionMode=\"multiple\" makes it an aria-multiselectable grid with a required ariaLabel for selectable ContentItem rows.",
2592
- "Give a scrollable List a bounded block size and keep keyboard focus visible as its contents scroll."
2892
+ "Give a scrollable List a bounded block size and keep keyboard focus visible as its contents scroll.",
2893
+ "A focused scrollable List (a keyboard-focusable scroller) draws the theme focus ring inset and rounded inside its own box, so a rounded or clipping parent never cuts it off; do not restyle its focus."
2593
2894
  ]
2594
2895
  },
2595
2896
  "cssValueProps": [
@@ -2625,9 +2926,14 @@
2625
2926
  "publicClasses": ["kui-list"],
2626
2927
  "publicTokens": [
2627
2928
  "--kui-color-neutral-border-normal",
2929
+ "--kui-color-surface",
2930
+ "--kui-color-surface-raised",
2628
2931
  "--kui-layout-item-gap",
2629
2932
  "--kui-list-divider-color",
2630
- "--kui-list-gap"
2933
+ "--kui-list-gap",
2934
+ "--kui-space-l",
2935
+ "--kui-space-m",
2936
+ "--kui-space-xl"
2631
2937
  ]
2632
2938
  },
2633
2939
  "diagnostics": [],
@@ -2729,23 +3035,39 @@
2729
3035
  "id": "popover or context-menu policy",
2730
3036
  "owner": "application",
2731
3037
  "required": false
2732
- }
3038
+ },
3039
+ { "id": "row order", "owner": "application", "required": false }
2733
3040
  ],
2734
3041
  "wiring": {
2735
3042
  "required": false,
2736
- "helpers": [],
3043
+ "helpers": ["wireListReorder", "reorderListItems"],
2737
3044
  "obligations": [],
2738
- "stateAttributes": []
2739
- },
2740
- "responsive": { "owner": "not-applicable", "behaviors": [] },
2741
- "layout": {
2742
- "roles": ["navigation"],
2743
- "geometry": { "margin": "self", "border": "self", "padding": "self" }
3045
+ "stateAttributes": [
3046
+ {
3047
+ "name": "data-dragging",
3048
+ "on": "ListActionRow rows being dragged",
3049
+ "helper": "wireListReorder",
3050
+ "meaning": "\"true\" on every row a pointer drag is moving (the dragged row, or every selected row of its list when the dragged row is selected). Same attribute the `dragging` prop renders."
3051
+ },
3052
+ {
3053
+ "name": "data-drop-position",
3054
+ "on": "ListActionRow row under the pointer",
3055
+ "helper": "wireListReorder",
3056
+ "meaning": "\"before\" or \"after\": the edge of this row the dragged rows would land beside. Same attribute the `dropPosition` prop renders."
3057
+ }
3058
+ ]
3059
+ },
3060
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
3061
+ "layout": {
3062
+ "roles": ["navigation"],
3063
+ "geometry": { "margin": "self", "border": "self", "padding": "self" }
2744
3064
  },
2745
3065
  "accessibility": {
2746
3066
  "obligations": [
2747
3067
  "The noninteractive root contains two sibling native buttons in primary-then-trailing focus order; each button has its own action, item identity, accessible name, and disabled state.",
2748
- "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."
3068
+ "A trailingMenu replaces the trailing button with a PopupMenu trigger in the same position: an icon-only button named by trailingMenu.label that exposes aria-haspopup=\"menu\" and aria-expanded, moves focus into the menu, and returns focus to the trigger on Escape or a choice.",
3069
+ "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.",
3070
+ "A draggable row is dragged by its noninteractive root; with wireListReorder, Alt+Shift+ArrowUp/ArrowDown on its primary button moves it, and focus returns to that button after the application re-renders."
2749
3071
  ]
2750
3072
  },
2751
3073
  "cssValueProps": [
@@ -2773,6 +3095,7 @@
2773
3095
  "kui-list-action-row__trailing-action"
2774
3096
  ],
2775
3097
  "publicTokens": [
3098
+ "--kui-color-brand-border-loud",
2776
3099
  "--kui-color-brand-border-quiet",
2777
3100
  "--kui-color-brand-fill-normal",
2778
3101
  "--kui-color-neutral-border-normal",
@@ -2790,6 +3113,9 @@
2790
3113
  "--kui-list-action-row-background",
2791
3114
  "--kui-list-action-row-border",
2792
3115
  "--kui-list-action-row-color",
3116
+ "--kui-list-action-row-dragging-opacity",
3117
+ "--kui-list-action-row-drop-indicator",
3118
+ "--kui-list-action-row-drop-indicator-width",
2793
3119
  "--kui-list-action-row-hover-background",
2794
3120
  "--kui-list-action-row-hover-border",
2795
3121
  "--kui-list-action-row-selected-background",
@@ -2831,13 +3157,27 @@
2831
3157
  "id": "domain data attributes",
2832
3158
  "owner": "application",
2833
3159
  "required": false
2834
- }
3160
+ },
3161
+ { "id": "row order", "owner": "application", "required": false }
2835
3162
  ],
2836
3163
  "wiring": {
2837
3164
  "required": false,
2838
- "helpers": [],
3165
+ "helpers": ["wireListReorder", "reorderListItems"],
2839
3166
  "obligations": [],
2840
- "stateAttributes": []
3167
+ "stateAttributes": [
3168
+ {
3169
+ "name": "data-dragging",
3170
+ "on": "ListItem / ListItemLink rows being dragged",
3171
+ "helper": "wireListReorder",
3172
+ "meaning": "\"true\" on every row a pointer drag is moving (the dragged row, or every selected row of its list when the dragged row is selected). Same attribute the `dragging` prop renders."
3173
+ },
3174
+ {
3175
+ "name": "data-drop-position",
3176
+ "on": "ListItem / ListItemLink row under the pointer",
3177
+ "helper": "wireListReorder",
3178
+ "meaning": "\"before\" or \"after\": the edge of this row the dragged rows would land beside. Same attribute the `dropPosition` prop renders."
3179
+ }
3180
+ ]
2841
3181
  },
2842
3182
  "responsive": { "owner": "not-applicable", "behaviors": [] },
2843
3183
  "layout": {
@@ -2853,7 +3193,7 @@
2853
3193
  },
2854
3194
  "accessibility": {
2855
3195
  "obligations": [
2856
- "ListItem uses native button activation and pressed maps to aria-pressed; ListItemLink uses native anchor activation and external opens a new tab with safe rel and an announced default label. Both map selected to aria-current; disabled or loading links omit href and leave the tab order. rootAttributes cannot add role=menuitem or replace owned ARIA; trailing is dormant content and must not contain controls."
3196
+ "ListItem uses native button activation and pressed maps to aria-pressed; ListItemLink uses native anchor activation and external opens a new tab with safe rel and an announced default label. Both map selected to aria-current; disabled or loading links omit href and leave the tab order. rootAttributes cannot add role=menuitem or replace owned ARIA; trailing is dormant content and must not contain controls. A draggable row reorders by pointer drag or, with wireListReorder, Alt+Shift+ArrowUp/ArrowDown; a placeholder is never draggable."
2857
3197
  ]
2858
3198
  },
2859
3199
  "cssValueProps": [
@@ -2880,6 +3220,7 @@
2880
3220
  "kui-list-item__trailing"
2881
3221
  ],
2882
3222
  "publicTokens": [
3223
+ "--kui-color-brand-border-loud",
2883
3224
  "--kui-color-brand-border-normal",
2884
3225
  "--kui-color-brand-border-quiet",
2885
3226
  "--kui-color-brand-fill-quiet",
@@ -2889,6 +3230,7 @@
2889
3230
  "--kui-color-neutral-on-quiet",
2890
3231
  "--kui-color-neutral-border-quiet",
2891
3232
  "--kui-color-neutral-border-normal",
3233
+ "--kui-radius-pill",
2892
3234
  "--kui-focus-ring",
2893
3235
  "--kui-list-item-color",
2894
3236
  "--kui-list-item-background",
@@ -2899,6 +3241,9 @@
2899
3241
  "--kui-list-item-drag-target-background",
2900
3242
  "--kui-list-item-drag-target-outline",
2901
3243
  "--kui-list-item-drag-target-outline-offset",
3244
+ "--kui-list-item-dragging-opacity",
3245
+ "--kui-list-item-drop-indicator",
3246
+ "--kui-list-item-drop-indicator-width",
2902
3247
  "--kui-list-item-gap",
2903
3248
  "--kui-list-item-hover-background",
2904
3249
  "--kui-list-item-hover-border",
@@ -3492,6 +3837,47 @@
3492
3837
  "composition": "docs/accessibility.md#segmentedcontrol"
3493
3838
  }
3494
3839
  },
3840
+ {
3841
+ "key": "@kerfjs/ui:choice-chips",
3842
+ "package": "@kerfjs/ui",
3843
+ "id": "choice-chips",
3844
+ "name": "ChoiceChips",
3845
+ "kind": "component",
3846
+ "source": "kerf",
3847
+ "parents": { "mode": "any", "entries": [] },
3848
+ "contexts": ["wrapping-exclusive-choice"],
3849
+ "zones": [],
3850
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
3851
+ "state": [{ "id": "value", "owner": "controlled", "required": false }],
3852
+ "wiring": {
3853
+ "required": false,
3854
+ "helpers": [],
3855
+ "obligations": [],
3856
+ "stateAttributes": []
3857
+ },
3858
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
3859
+ "layout": {
3860
+ "roles": ["controls"],
3861
+ "geometry": { "margin": "none", "border": "self", "padding": "self" }
3862
+ },
3863
+ "accessibility": {
3864
+ "obligations": [
3865
+ "Name the radio group with label or with labelledBy pointing at a visible heading.",
3866
+ "Every choice keeps a visible text label; a swatch or icon is decorative."
3867
+ ]
3868
+ },
3869
+ "cssValueProps": [],
3870
+ "boundaries": {
3871
+ "rootClass": "kui-choice-chips",
3872
+ "publicClasses": ["kui-choice-chips"],
3873
+ "publicTokens": []
3874
+ },
3875
+ "diagnostics": [],
3876
+ "provenance": {
3877
+ "selection": "ai/component-catalog.json",
3878
+ "composition": "docs/accessibility.md#choicechips"
3879
+ }
3880
+ },
3495
3881
  {
3496
3882
  "key": "@kerfjs/ui:token-search-field",
3497
3883
  "package": "@kerfjs/ui",
@@ -3811,6 +4197,104 @@
3811
4197
  "composition": "README.md#web-awesome-theme"
3812
4198
  }
3813
4199
  },
4200
+ {
4201
+ "key": "@kerfjs/ui:combobox",
4202
+ "package": "@kerfjs/ui",
4203
+ "id": "combobox",
4204
+ "name": "Combobox",
4205
+ "kind": "component",
4206
+ "source": "kerf",
4207
+ "parents": { "mode": "any", "entries": [] },
4208
+ "contexts": ["application-ui"],
4209
+ "zones": [],
4210
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
4211
+ "state": [
4212
+ {
4213
+ "id": "the suggestions and the committed values",
4214
+ "owner": "application",
4215
+ "required": false
4216
+ },
4217
+ {
4218
+ "id": "normalizing and validating created values",
4219
+ "owner": "application",
4220
+ "required": false
4221
+ },
4222
+ {
4223
+ "id": "clearing the field after a commit",
4224
+ "owner": "application",
4225
+ "required": false
4226
+ }
4227
+ ],
4228
+ "wiring": {
4229
+ "required": true,
4230
+ "helpers": ["wireComboboxes"],
4231
+ "obligations": [
4232
+ "Filters suggestions, moves the active option, and reports commits; without it the list never opens."
4233
+ ],
4234
+ "stateAttributes": [
4235
+ {
4236
+ "name": "data-value",
4237
+ "on": "the create option (kui-combobox__option[data-create])",
4238
+ "helper": "wireComboboxes",
4239
+ "meaning": "The typed text the create option would commit; rewritten as the person types."
4240
+ }
4241
+ ]
4242
+ },
4243
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
4244
+ "layout": {
4245
+ "roles": ["controls"],
4246
+ "geometry": {
4247
+ "margin": "none",
4248
+ "border": "self",
4249
+ "padding": "self",
4250
+ "notes": [
4251
+ "Label and hint sit on the value's text column (1px border + 8px padding); the 44px field matches a themed wa-input."
4252
+ ]
4253
+ }
4254
+ },
4255
+ "accessibility": {
4256
+ "obligations": [
4257
+ "Native input with role=combobox, aria-autocomplete=list, aria-expanded, aria-controls, and aria-activedescendant; options are role=option in a listbox. The visible label is a real label; the hint is aria-describedby."
4258
+ ]
4259
+ },
4260
+ "cssValueProps": [],
4261
+ "boundaries": {
4262
+ "rootClass": "kui-combobox",
4263
+ "publicClasses": [
4264
+ "kui-combobox",
4265
+ "kui-combobox__label",
4266
+ "kui-combobox__hint",
4267
+ "kui-combobox__control",
4268
+ "kui-combobox__input",
4269
+ "kui-combobox__listbox",
4270
+ "kui-combobox__option"
4271
+ ],
4272
+ "rootElement": "div",
4273
+ "publicTokens": [
4274
+ "--kui-combobox-z-index",
4275
+ "--kui-color-neutral-on-quiet",
4276
+ "--kui-color-text-quiet",
4277
+ "--kui-color-neutral-border-normal",
4278
+ "--kui-color-text",
4279
+ "--kui-color-surface",
4280
+ "--kui-color-surface-raised",
4281
+ "--kui-color-text-link",
4282
+ "--kui-color-brand-fill-quiet",
4283
+ "--kui-font-xs",
4284
+ "--kui-font-s",
4285
+ "--kui-layout-item-padding",
4286
+ "--kui-layout-rounded-radius",
4287
+ "--kui-shadow-l",
4288
+ "--kui-space-2xs",
4289
+ "--kui-space-xs"
4290
+ ]
4291
+ },
4292
+ "diagnostics": [],
4293
+ "provenance": {
4294
+ "selection": "ai/component-catalog.json",
4295
+ "composition": "generated-permissive-default"
4296
+ }
4297
+ },
3814
4298
  {
3815
4299
  "key": "@kerfjs/ui:anchored-surface",
3816
4300
  "package": "@kerfjs/ui",
@@ -3933,6 +4417,302 @@
3933
4417
  "composition": "generated-permissive-default"
3934
4418
  }
3935
4419
  },
4420
+ {
4421
+ "key": "@kerfjs/ui:icon-button",
4422
+ "package": "@kerfjs/ui",
4423
+ "id": "icon-button",
4424
+ "name": "IconButton",
4425
+ "kind": "component",
4426
+ "source": "kerf",
4427
+ "parents": { "mode": "any", "entries": [] },
4428
+ "contexts": ["application-ui"],
4429
+ "zones": [],
4430
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
4431
+ "state": [
4432
+ {
4433
+ "id": "the delegated action",
4434
+ "owner": "application",
4435
+ "required": false
4436
+ },
4437
+ {
4438
+ "id": "the accessible name",
4439
+ "owner": "application",
4440
+ "required": false
4441
+ },
4442
+ {
4443
+ "id": "appearance, variant, and size choice",
4444
+ "owner": "application",
4445
+ "required": false
4446
+ }
4447
+ ],
4448
+ "wiring": {
4449
+ "required": false,
4450
+ "helpers": [],
4451
+ "obligations": [],
4452
+ "stateAttributes": []
4453
+ },
4454
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
4455
+ "layout": {
4456
+ "roles": ["controls"],
4457
+ "geometry": { "margin": "none", "border": "self", "padding": "self" }
4458
+ },
4459
+ "accessibility": {
4460
+ "obligations": [
4461
+ "label is required and names the button through its LucideIcon (role img), since the button shows no text."
4462
+ ]
4463
+ },
4464
+ "cssValueProps": [],
4465
+ "boundaries": {
4466
+ "rootClass": "kui-icon-button",
4467
+ "publicClasses": ["kui-icon-button"],
4468
+ "rootElement": "wa-button",
4469
+ "publicTokens": []
4470
+ },
4471
+ "diagnostics": [],
4472
+ "provenance": {
4473
+ "selection": "ai/component-catalog.json",
4474
+ "composition": "generated-permissive-default"
4475
+ }
4476
+ },
4477
+ {
4478
+ "key": "@kerfjs/ui:icon-toggle-button",
4479
+ "package": "@kerfjs/ui",
4480
+ "id": "icon-toggle-button",
4481
+ "name": "IconToggleButton",
4482
+ "kind": "component",
4483
+ "source": "kerf",
4484
+ "parents": { "mode": "any", "entries": [] },
4485
+ "contexts": ["application-ui"],
4486
+ "zones": [],
4487
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
4488
+ "state": [
4489
+ {
4490
+ "id": "the pressed state and its delegated action",
4491
+ "owner": "application",
4492
+ "required": false
4493
+ },
4494
+ {
4495
+ "id": "the accessible name",
4496
+ "owner": "application",
4497
+ "required": false
4498
+ }
4499
+ ],
4500
+ "wiring": {
4501
+ "required": false,
4502
+ "helpers": [],
4503
+ "obligations": [],
4504
+ "stateAttributes": []
4505
+ },
4506
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
4507
+ "layout": {
4508
+ "roles": ["controls"],
4509
+ "geometry": { "margin": "none", "border": "self", "padding": "self" }
4510
+ },
4511
+ "accessibility": {
4512
+ "obligations": [
4513
+ "Native button with aria-pressed and a required aria-label; with help tags registered it shows that label on hover and keyboard focus."
4514
+ ]
4515
+ },
4516
+ "cssValueProps": [],
4517
+ "boundaries": {
4518
+ "rootClass": "kui-icon-toggle-button",
4519
+ "publicClasses": [
4520
+ "kui-icon-toggle-button",
4521
+ "kui-icon-toggle-button__face"
4522
+ ],
4523
+ "rootElement": "button",
4524
+ "publicTokens": [
4525
+ "--kui-color-neutral-border-normal",
4526
+ "--kui-color-neutral-fill-normal",
4527
+ "--kui-color-neutral-on-quiet",
4528
+ "--kui-color-surface",
4529
+ "--kui-color-brand-on-quiet",
4530
+ "--kui-shadow-s",
4531
+ "--kui-focus-ring",
4532
+ "--kui-layout-pill-radius",
4533
+ "--kui-layout-rounded-radius",
4534
+ "--kui-layout-highlight-inset"
4535
+ ]
4536
+ },
4537
+ "diagnostics": [],
4538
+ "provenance": {
4539
+ "selection": "ai/component-catalog.json",
4540
+ "composition": "generated-permissive-default"
4541
+ }
4542
+ },
4543
+ {
4544
+ "key": "@kerfjs/ui:split-button",
4545
+ "package": "@kerfjs/ui",
4546
+ "id": "split-button",
4547
+ "name": "SplitButton",
4548
+ "kind": "component",
4549
+ "source": "kerf",
4550
+ "parents": { "mode": "any", "entries": [] },
4551
+ "contexts": ["application-ui"],
4552
+ "zones": [],
4553
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
4554
+ "state": [
4555
+ {
4556
+ "id": "the primary and options actions",
4557
+ "owner": "application",
4558
+ "required": false
4559
+ },
4560
+ {
4561
+ "id": "the options menu and its open state",
4562
+ "owner": "application",
4563
+ "required": false
4564
+ },
4565
+ {
4566
+ "id": "the running state, tone switch, and copy",
4567
+ "owner": "application",
4568
+ "required": false
4569
+ }
4570
+ ],
4571
+ "wiring": {
4572
+ "required": false,
4573
+ "helpers": [],
4574
+ "obligations": [],
4575
+ "stateAttributes": []
4576
+ },
4577
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
4578
+ "layout": {
4579
+ "roles": ["controls"],
4580
+ "geometry": { "margin": "none", "border": "self", "padding": "self" }
4581
+ },
4582
+ "accessibility": {
4583
+ "obligations": [
4584
+ "Both halves are native buttons in a group; the options trigger exposes aria-haspopup, aria-expanded, and optional aria-controls, and needs optionsLabel. busy sets aria-busy on the primary."
4585
+ ]
4586
+ },
4587
+ "cssValueProps": [],
4588
+ "boundaries": {
4589
+ "rootClass": "kui-split-button",
4590
+ "publicClasses": [
4591
+ "kui-split-button",
4592
+ "kui-split-button__options",
4593
+ "kui-split-button__icon",
4594
+ "kui-split-button__label"
4595
+ ],
4596
+ "rootElement": "div",
4597
+ "publicTokens": [
4598
+ "--kui-color-brand-fill-loud",
4599
+ "--kui-color-brand-on-loud",
4600
+ "--kui-color-neutral-fill-loud",
4601
+ "--kui-color-neutral-on-loud",
4602
+ "--kui-color-success-fill-loud",
4603
+ "--kui-color-success-on-loud",
4604
+ "--kui-color-warning-fill-loud",
4605
+ "--kui-color-warning-on-loud",
4606
+ "--kui-color-danger-fill-loud",
4607
+ "--kui-color-danger-on-loud",
4608
+ "--kui-focus-ring",
4609
+ "--kui-font-weight-semibold",
4610
+ "--kui-layout-rounded-radius",
4611
+ "--kui-space-s",
4612
+ "--kui-space-xs"
4613
+ ]
4614
+ },
4615
+ "diagnostics": [],
4616
+ "provenance": {
4617
+ "selection": "ai/component-catalog.json",
4618
+ "composition": "generated-permissive-default"
4619
+ }
4620
+ },
4621
+ {
4622
+ "key": "@kerfjs/ui:file-picker",
4623
+ "package": "@kerfjs/ui",
4624
+ "id": "file-picker",
4625
+ "name": "FilePicker",
4626
+ "kind": "component",
4627
+ "source": "kerf",
4628
+ "parents": { "mode": "any", "entries": [] },
4629
+ "contexts": ["application-ui"],
4630
+ "zones": [],
4631
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
4632
+ "state": [
4633
+ {
4634
+ "id": "what happens to the reported files (upload, validation, limits)",
4635
+ "owner": "application",
4636
+ "required": false
4637
+ },
4638
+ {
4639
+ "id": "the list of chosen files",
4640
+ "owner": "application",
4641
+ "required": false
4642
+ },
4643
+ {
4644
+ "id": "copy and accepted types",
4645
+ "owner": "application",
4646
+ "required": false
4647
+ }
4648
+ ],
4649
+ "wiring": {
4650
+ "required": true,
4651
+ "helpers": ["wireFilePickers"],
4652
+ "obligations": [
4653
+ "Reports chosen and dropped files and accepts drops on the zone; without it drops open the file in the browser."
4654
+ ],
4655
+ "stateAttributes": [
4656
+ {
4657
+ "name": "data-dragging",
4658
+ "on": "kui-file-picker (drop zone)",
4659
+ "helper": "wireFilePickers",
4660
+ "meaning": "\"true\" while files are dragged over the zone."
4661
+ }
4662
+ ]
4663
+ },
4664
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
4665
+ "layout": {
4666
+ "roles": ["controls"],
4667
+ "geometry": {
4668
+ "margin": "self",
4669
+ "border": "self",
4670
+ "padding": "self",
4671
+ "notes": [
4672
+ "The drop zone carries the 8px content-item inline margin; the trigger is a compact 32px inline control."
4673
+ ]
4674
+ }
4675
+ },
4676
+ "accessibility": {
4677
+ "obligations": [
4678
+ "Each control is a label around a real file input that receives keyboard focus; the visible control shows the focus ring. Give the input an accessibleLabel when the visible copy is short."
4679
+ ]
4680
+ },
4681
+ "cssValueProps": [],
4682
+ "boundaries": {
4683
+ "rootClass": "kui-file-picker",
4684
+ "publicClasses": [
4685
+ "kui-file-picker",
4686
+ "kui-file-picker__title",
4687
+ "kui-file-picker__detail",
4688
+ "kui-file-picker__input",
4689
+ "kui-file-picker__icon"
4690
+ ],
4691
+ "rootElement": "label",
4692
+ "publicTokens": [
4693
+ "--kui-color-text-link",
4694
+ "--kui-color-brand-fill-quiet",
4695
+ "--kui-color-neutral-border-loud",
4696
+ "--kui-color-neutral-on-quiet",
4697
+ "--kui-color-text",
4698
+ "--kui-focus-ring",
4699
+ "--kui-font-xs",
4700
+ "--kui-font-2xs",
4701
+ "--kui-font-weight-semibold",
4702
+ "--kui-layout-inline-margin",
4703
+ "--kui-layout-rounded-radius",
4704
+ "--kui-radius-pill",
4705
+ "--kui-space-2xs",
4706
+ "--kui-space-s",
4707
+ "--kui-space-xs"
4708
+ ]
4709
+ },
4710
+ "diagnostics": [],
4711
+ "provenance": {
4712
+ "selection": "ai/component-catalog.json",
4713
+ "composition": "generated-permissive-default"
4714
+ }
4715
+ },
3936
4716
  {
3937
4717
  "key": "@kerfjs/ui:feedback",
3938
4718
  "package": "@kerfjs/ui",
@@ -4087,7 +4867,8 @@
4087
4867
  "--kui-state-banner-success-foreground",
4088
4868
  "--kui-state-banner-warning-background",
4089
4869
  "--kui-state-banner-warning-border",
4090
- "--kui-state-banner-warning-foreground"
4870
+ "--kui-state-banner-warning-foreground",
4871
+ "--kui-shadow-l"
4091
4872
  ]
4092
4873
  },
4093
4874
  "diagnostics": [],
@@ -4096,6 +4877,157 @@
4096
4877
  "composition": "docs/component-selection.md#problem-to-component-matrix"
4097
4878
  }
4098
4879
  },
4880
+ {
4881
+ "key": "@kerfjs/ui:corner-status",
4882
+ "package": "@kerfjs/ui",
4883
+ "id": "corner-status",
4884
+ "name": "CornerStatus",
4885
+ "kind": "component",
4886
+ "source": "kerf",
4887
+ "parents": { "mode": "any", "entries": [] },
4888
+ "contexts": ["application-ui"],
4889
+ "zones": [],
4890
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
4891
+ "state": [
4892
+ {
4893
+ "id": "status lifetime (render while the work runs, remove when it ends)",
4894
+ "owner": "application",
4895
+ "required": false
4896
+ },
4897
+ {
4898
+ "id": "the composed StateBanner copy and progress",
4899
+ "owner": "application",
4900
+ "required": false
4901
+ },
4902
+ { "id": "corner placement", "owner": "application", "required": false }
4903
+ ],
4904
+ "wiring": {
4905
+ "required": true,
4906
+ "helpers": ["wireCornerStatus"],
4907
+ "obligations": [
4908
+ "Opens each overlay host in the top layer as renders insert it; without it the Popover API keeps the host hidden."
4909
+ ],
4910
+ "stateAttributes": []
4911
+ },
4912
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
4913
+ "layout": {
4914
+ "roles": ["feedback"],
4915
+ "geometry": {
4916
+ "margin": "none",
4917
+ "border": "child",
4918
+ "padding": "child",
4919
+ "notes": [
4920
+ "Placement owns the 16px viewport gutter plus device safe-area insets; a StateBanner inside drops its inline margin and gains elevation."
4921
+ ]
4922
+ }
4923
+ },
4924
+ "accessibility": {
4925
+ "obligations": [
4926
+ "The host adds no role; the composed StateBanner with urgency=\"status\" is the polite live region.",
4927
+ "Opening never moves focus, and there is no close button, light dismiss, or Escape handling to compete with dialogs.",
4928
+ "A modal dialog opened while it shows stacks above it and makes it inert (unannounced); show progress the dialog's task depends on inside the dialog."
4929
+ ]
4930
+ },
4931
+ "cssValueProps": [],
4932
+ "boundaries": {
4933
+ "rootClass": "kui-corner-status",
4934
+ "publicClasses": ["kui-corner-status"],
4935
+ "rootElement": "div",
4936
+ "publicTokens": [
4937
+ "--kui-corner-status-gutter",
4938
+ "--kui-corner-status-z-index",
4939
+ "--kui-safe-area-block-end",
4940
+ "--kui-safe-area-block-start",
4941
+ "--kui-safe-area-inline-end",
4942
+ "--kui-safe-area-inline-start",
4943
+ "--kui-space-m",
4944
+ "--kui-space-xs"
4945
+ ]
4946
+ },
4947
+ "diagnostics": [],
4948
+ "provenance": {
4949
+ "selection": "ai/component-catalog.json",
4950
+ "composition": "generated-permissive-default"
4951
+ }
4952
+ },
4953
+ {
4954
+ "key": "@kerfjs/ui:edge-activity-indicator",
4955
+ "package": "@kerfjs/ui",
4956
+ "id": "edge-activity-indicator",
4957
+ "name": "EdgeActivityIndicator",
4958
+ "kind": "component",
4959
+ "source": "kerf",
4960
+ "parents": { "mode": "any", "entries": [] },
4961
+ "contexts": ["application-ui"],
4962
+ "zones": [],
4963
+ "children": { "mode": "any", "concepts": [], "requiredConcepts": [] },
4964
+ "state": [
4965
+ { "id": "the busy state", "owner": "application", "required": false },
4966
+ {
4967
+ "id": "the optional status message",
4968
+ "owner": "application",
4969
+ "required": false
4970
+ },
4971
+ { "id": "the tone", "owner": "application", "required": false }
4972
+ ],
4973
+ "wiring": {
4974
+ "required": false,
4975
+ "helpers": [],
4976
+ "obligations": [],
4977
+ "stateAttributes": []
4978
+ },
4979
+ "responsive": { "owner": "not-applicable", "behaviors": [] },
4980
+ "layout": {
4981
+ "roles": ["feedback"],
4982
+ "geometry": {
4983
+ "margin": "none",
4984
+ "border": "none",
4985
+ "padding": "none",
4986
+ "notes": [
4987
+ "Fixed to the top edge below the device safe area; it allocates no layout."
4988
+ ]
4989
+ }
4990
+ },
4991
+ "accessibility": {
4992
+ "obligations": [
4993
+ "The strip is aria-hidden and pointer-inert; the optional pill is a polite live region that holds text only while it shows. Under reduced motion the wave and scale stop and the strip and pill only fade."
4994
+ ]
4995
+ },
4996
+ "cssValueProps": [],
4997
+ "boundaries": {
4998
+ "rootClass": "kui-edge-activity-indicator",
4999
+ "publicClasses": [
5000
+ "kui-edge-activity-indicator",
5001
+ "kui-edge-activity-indicator__strip",
5002
+ "kui-edge-activity-indicator__message"
5003
+ ],
5004
+ "rootElement": "div",
5005
+ "publicTokens": [
5006
+ "--kui-edge-activity-indicator-z-index",
5007
+ "--kui-safe-area-block-start",
5008
+ "--kui-color-brand-fill-loud",
5009
+ "--kui-color-brand-on-loud",
5010
+ "--kui-color-neutral-fill-loud",
5011
+ "--kui-color-neutral-on-loud",
5012
+ "--kui-color-pop-fill-loud",
5013
+ "--kui-color-pop-on-loud",
5014
+ "--kui-color-success-fill-loud",
5015
+ "--kui-color-success-on-loud",
5016
+ "--kui-color-warning-fill-loud",
5017
+ "--kui-color-warning-on-loud",
5018
+ "--kui-color-danger-fill-loud",
5019
+ "--kui-color-danger-on-loud",
5020
+ "--kui-font-2xs",
5021
+ "--kui-space-m",
5022
+ "--kui-space-s"
5023
+ ]
5024
+ },
5025
+ "diagnostics": [],
5026
+ "provenance": {
5027
+ "selection": "ai/component-catalog.json",
5028
+ "composition": "generated-permissive-default"
5029
+ }
5030
+ },
4099
5031
  {
4100
5032
  "key": "@kerfjs/ui:empty-state",
4101
5033
  "package": "@kerfjs/ui",