@kerfjs/ui 5.0.0-beta.8 → 5.0.0-beta.80

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 (807) hide show
  1. package/README.md +546 -139
  2. package/ai/application-ui-diagnostic-ids-v1.json +113 -0
  3. package/ai/application-ui-profile-sync.cjs +548 -0
  4. package/ai/application-ui-profile.d.mts +1 -0
  5. package/ai/application-ui-profile.d.ts +106 -0
  6. package/ai/application-ui-profile.defaults.json +96 -0
  7. package/ai/application-ui-profile.mjs +653 -0
  8. package/ai/application-ui-profile.schema.json +140 -0
  9. package/ai/catalog-authoring.json +36 -0
  10. package/ai/catalog-authoring.schema.json +109 -0
  11. package/ai/compile-time-contracts-v1.json +149 -0
  12. package/ai/compile-time-contracts-v1.schema.json +52 -0
  13. package/ai/component-catalog-extension.schema.json +104 -0
  14. package/ai/component-catalog.json +4280 -457
  15. package/ai/component-catalog.schema.json +94 -1
  16. package/ai/component-class-owners.cjs +83 -0
  17. package/ai/component-composition-extension.d.ts +7 -0
  18. package/ai/component-composition-extension.schema.json +7 -0
  19. package/ai/component-composition-rules.json +516 -0
  20. package/ai/component-composition.d.ts +129 -0
  21. package/ai/component-composition.json +7397 -0
  22. package/ai/component-composition.schema.json +408 -0
  23. package/ai/components/README.md +171 -0
  24. package/ai/components/application-tabs.md +65 -0
  25. package/ai/components/badge.md +72 -0
  26. package/ai/components/chip.md +72 -0
  27. package/ai/components/collapsible-panel.md +102 -0
  28. package/ai/components/content-item.md +96 -0
  29. package/ai/components/disclosure-arrow.md +77 -0
  30. package/ai/components/document-baseline.md +75 -0
  31. package/ai/components/empty-state.md +80 -0
  32. package/ai/components/feedback.md +71 -0
  33. package/ai/components/floating-toolbar.md +82 -0
  34. package/ai/components/foundation.md +65 -0
  35. package/ai/components/grid.md +100 -0
  36. package/ai/components/headers.md +63 -0
  37. package/ai/components/layout.md +75 -0
  38. package/ai/components/list-action-row.md +91 -0
  39. package/ai/components/list-header.md +91 -0
  40. package/ai/components/list-inset-control.md +74 -0
  41. package/ai/components/list-inset-text.md +72 -0
  42. package/ai/components/list-item.md +94 -0
  43. package/ai/components/list.md +106 -0
  44. package/ai/components/loading-spinner.md +73 -0
  45. package/ai/components/lucide-icon.md +97 -0
  46. package/ai/components/nav-stack.md +105 -0
  47. package/ai/components/pane.md +104 -0
  48. package/ai/components/popup-menu.md +171 -0
  49. package/ai/components/recipe-app-shell.md +57 -0
  50. package/ai/components/recipe-collapsible-sidebar.md +57 -0
  51. package/ai/components/recipe-compact-toolbar.md +57 -0
  52. package/ai/components/recipe-composer-form.md +57 -0
  53. package/ai/components/recipe-list-detail-dialog.md +57 -0
  54. package/ai/components/recipe-list-workspace-states.md +57 -0
  55. package/ai/components/recipe-loading-inspector.md +57 -0
  56. package/ai/components/recipe-navigation-sidebar.md +57 -0
  57. package/ai/components/recipe-navigation-stack.md +57 -0
  58. package/ai/components/recipe-workspace-header.md +57 -0
  59. package/ai/components/resize.md +106 -0
  60. package/ai/components/row.md +96 -0
  61. package/ai/components/segmented-control.md +82 -0
  62. package/ai/components/select.md +115 -0
  63. package/ai/components/skeleton.md +84 -0
  64. package/ai/components/spacer.md +86 -0
  65. package/ai/components/split-view.md +103 -0
  66. package/ai/components/state-banner.md +94 -0
  67. package/ai/components/sunken-panel.md +79 -0
  68. package/ai/components/surface-scaffold.md +87 -0
  69. package/ai/components/tab-bar.md +113 -0
  70. package/ai/components/tab-navigator.md +95 -0
  71. package/ai/components/tabs.md +95 -0
  72. package/ai/components/text.md +87 -0
  73. package/ai/components/token-search-field.md +107 -0
  74. package/ai/components/toolbar-control-group.md +121 -0
  75. package/ai/components/toolbar-text.md +98 -0
  76. package/ai/components/toolbar.md +101 -0
  77. package/ai/components/value-table.md +73 -0
  78. package/ai/components/wa-accordion-item.md +55 -0
  79. package/ai/components/wa-accordion.md +65 -0
  80. package/ai/components/wa-animated-image.md +55 -0
  81. package/ai/components/wa-animation.md +55 -0
  82. package/ai/components/wa-avatar.md +55 -0
  83. package/ai/components/wa-badge.md +55 -0
  84. package/ai/components/wa-breadcrumb-item.md +53 -0
  85. package/ai/components/wa-breadcrumb.md +55 -0
  86. package/ai/components/wa-button-group.md +59 -0
  87. package/ai/components/wa-button.md +55 -0
  88. package/ai/components/wa-callout.md +58 -0
  89. package/ai/components/wa-card.md +59 -0
  90. package/ai/components/wa-carousel-item.md +53 -0
  91. package/ai/components/wa-carousel.md +55 -0
  92. package/ai/components/wa-checkbox-group.md +55 -0
  93. package/ai/components/wa-checkbox.md +55 -0
  94. package/ai/components/wa-color-picker.md +55 -0
  95. package/ai/components/wa-comparison.md +55 -0
  96. package/ai/components/wa-copy-button.md +55 -0
  97. package/ai/components/wa-details.md +61 -0
  98. package/ai/components/wa-dialog.md +59 -0
  99. package/ai/components/wa-divider.md +53 -0
  100. package/ai/components/wa-drawer.md +55 -0
  101. package/ai/components/wa-dropdown-item.md +60 -0
  102. package/ai/components/wa-dropdown.md +60 -0
  103. package/ai/components/wa-format-bytes.md +53 -0
  104. package/ai/components/wa-format-date.md +53 -0
  105. package/ai/components/wa-format-number.md +53 -0
  106. package/ai/components/wa-icon.md +58 -0
  107. package/ai/components/wa-include.md +53 -0
  108. package/ai/components/wa-input.md +59 -0
  109. package/ai/components/wa-intersection-observer.md +53 -0
  110. package/ai/components/wa-known-date.md +53 -0
  111. package/ai/components/wa-markdown.md +53 -0
  112. package/ai/components/wa-mutation-observer.md +53 -0
  113. package/ai/components/wa-number-input.md +55 -0
  114. package/ai/components/wa-option.md +59 -0
  115. package/ai/components/wa-otp-input.md +53 -0
  116. package/ai/components/wa-page.md +53 -0
  117. package/ai/components/wa-pagination.md +55 -0
  118. package/ai/components/wa-popover.md +55 -0
  119. package/ai/components/wa-popup.md +53 -0
  120. package/ai/components/wa-progress-bar.md +53 -0
  121. package/ai/components/wa-progress-ring.md +53 -0
  122. package/ai/components/wa-qr-code.md +53 -0
  123. package/ai/components/wa-radio-group.md +59 -0
  124. package/ai/components/wa-radio.md +55 -0
  125. package/ai/components/wa-random-content.md +53 -0
  126. package/ai/components/wa-rating.md +55 -0
  127. package/ai/components/wa-relative-time.md +53 -0
  128. package/ai/components/wa-resize-observer.md +53 -0
  129. package/ai/components/wa-scroller.md +53 -0
  130. package/ai/components/wa-select.md +63 -0
  131. package/ai/components/wa-skeleton.md +53 -0
  132. package/ai/components/wa-slider.md +55 -0
  133. package/ai/components/wa-spinner.md +58 -0
  134. package/ai/components/wa-split-panel.md +58 -0
  135. package/ai/components/wa-switch.md +53 -0
  136. package/ai/components/wa-tab-group.md +69 -0
  137. package/ai/components/wa-tab-panel.md +60 -0
  138. package/ai/components/wa-tab.md +59 -0
  139. package/ai/components/wa-tag.md +59 -0
  140. package/ai/components/wa-textarea.md +53 -0
  141. package/ai/components/wa-time-input.md +55 -0
  142. package/ai/components/wa-toast-item.md +60 -0
  143. package/ai/components/wa-toast.md +60 -0
  144. package/ai/components/wa-tooltip.md +55 -0
  145. package/ai/components/wa-tree-item.md +55 -0
  146. package/ai/components/wa-tree.md +55 -0
  147. package/ai/components/wa-zoomable-frame.md +55 -0
  148. package/ai/components/workbench.md +119 -0
  149. package/ai/public-api-signatures-v1.md +2821 -250
  150. package/ai/skill.md +354 -66
  151. package/ai/webawesome-jsx-signatures-v1.md +9 -2
  152. package/analyzer/cli.mjs +49 -0
  153. package/analyzer/component-ownership.d.mts +72 -0
  154. package/analyzer/component-ownership.mjs +429 -0
  155. package/analyzer/index.d.mts +53 -0
  156. package/analyzer/index.mjs +2346 -0
  157. package/analyzer/loud-pairs.d.mts +49 -0
  158. package/analyzer/loud-pairs.mjs +357 -0
  159. package/analyzer/report.schema.json +66 -0
  160. package/analyzer/selectors.d.mts +21 -0
  161. package/analyzer/selectors.mjs +212 -0
  162. package/catalog-projection-cli.mjs +96 -0
  163. package/catalog-projection.d.mts +55 -0
  164. package/catalog-projection.mjs +62 -0
  165. package/dist/app-tab.d.ts +39 -4
  166. package/dist/app-tab.js +2 -1
  167. package/dist/badge.d.ts +54 -0
  168. package/dist/badge.js +3 -0
  169. package/dist/badge.js.map +1 -0
  170. package/dist/browser/badge.js +3 -0
  171. package/dist/browser/catalog.js +26 -0
  172. package/dist/browser/chip.js +3 -0
  173. package/dist/browser/collapsible-panel.js +9 -0
  174. package/dist/browser/content-item.js +3 -0
  175. package/dist/browser/floating-toolbar.js +3 -0
  176. package/dist/browser/grid.js +3 -0
  177. package/dist/browser/list-action-row.js +5 -0
  178. package/dist/browser/{menu-header.js → list-header.js} +5 -3
  179. package/dist/browser/list-inset-control.js +3 -0
  180. package/dist/browser/list-inset-text.js +3 -0
  181. package/dist/browser/list-item.js +5 -0
  182. package/dist/browser/list.js +3 -0
  183. package/dist/browser/nav-stack.js +11 -0
  184. package/dist/browser/pane.js +3 -0
  185. package/dist/browser/popup-menu.js +3 -0
  186. package/dist/browser/row.js +3 -0
  187. package/dist/browser/segmented-control.js +0 -1
  188. package/dist/browser/select.js +2 -1
  189. package/dist/browser/spacer.js +3 -0
  190. package/dist/browser/split-view.js +13 -0
  191. package/dist/browser/state-banner.js +1 -0
  192. package/dist/browser/sunken-panel.js +3 -0
  193. package/dist/browser/surface-scaffold.js +3 -0
  194. package/dist/browser/tab-navigator.js +4 -0
  195. package/dist/browser/text.js +3 -0
  196. package/dist/browser/toolbar-control-group.js +1 -0
  197. package/dist/browser/workbench.js +14 -0
  198. package/dist/catalog-resources.d.ts +48 -0
  199. package/dist/catalog-resources.js +22 -0
  200. package/dist/catalog-resources.js.map +1 -0
  201. package/dist/catalog.d.ts +92 -0
  202. package/dist/catalog.js +541 -0
  203. package/dist/catalog.js.map +1 -0
  204. package/dist/chip.d.ts +36 -0
  205. package/dist/chip.js +3 -0
  206. package/dist/chip.js.map +1 -0
  207. package/dist/chunk-2GOCOLQL.js +270 -0
  208. package/dist/chunk-2GOCOLQL.js.map +1 -0
  209. package/dist/chunk-3CXRQAYT.js +288 -0
  210. package/dist/chunk-3CXRQAYT.js.map +1 -0
  211. package/dist/chunk-3RE2JMZU.js +48 -0
  212. package/dist/chunk-3RE2JMZU.js.map +1 -0
  213. package/dist/chunk-3SXWV2IR.js +295 -0
  214. package/dist/chunk-3SXWV2IR.js.map +1 -0
  215. package/dist/chunk-3XPGJUUQ.js +37 -0
  216. package/dist/chunk-3XPGJUUQ.js.map +1 -0
  217. package/dist/chunk-4Y4L5YEI.js +66 -0
  218. package/dist/chunk-4Y4L5YEI.js.map +1 -0
  219. package/dist/chunk-5BZBIRQG.js +452 -0
  220. package/dist/chunk-5BZBIRQG.js.map +1 -0
  221. package/dist/chunk-5D3WDMIK.js +71 -0
  222. package/dist/chunk-5D3WDMIK.js.map +1 -0
  223. package/dist/chunk-62VMNBV2.js +779 -0
  224. package/dist/chunk-62VMNBV2.js.map +1 -0
  225. package/dist/chunk-75I3SNUJ.js +44 -0
  226. package/dist/chunk-75I3SNUJ.js.map +1 -0
  227. package/dist/chunk-7QQ3HE47.js +17 -0
  228. package/dist/chunk-7QQ3HE47.js.map +1 -0
  229. package/dist/chunk-7TE6XDFI.js +91 -0
  230. package/dist/chunk-7TE6XDFI.js.map +1 -0
  231. package/dist/chunk-A7DYEERU.js +59 -0
  232. package/dist/chunk-A7DYEERU.js.map +1 -0
  233. package/dist/chunk-AN5IWMTM.js +24 -0
  234. package/dist/chunk-AN5IWMTM.js.map +1 -0
  235. package/dist/chunk-ARZ4RSQO.js +48 -0
  236. package/dist/chunk-ARZ4RSQO.js.map +1 -0
  237. package/dist/chunk-BJLXE56E.js +135 -0
  238. package/dist/chunk-BJLXE56E.js.map +1 -0
  239. package/dist/chunk-BYHGRKC3.js +44 -0
  240. package/dist/chunk-BYHGRKC3.js.map +1 -0
  241. package/dist/chunk-CEJ5FK6G.js +288 -0
  242. package/dist/chunk-CEJ5FK6G.js.map +1 -0
  243. package/dist/chunk-CVKIADIS.js +172 -0
  244. package/dist/chunk-CVKIADIS.js.map +1 -0
  245. package/dist/chunk-DQDTZE4W.js +70 -0
  246. package/dist/chunk-DQDTZE4W.js.map +1 -0
  247. package/dist/chunk-EFDCALR3.js +66 -0
  248. package/dist/chunk-EFDCALR3.js.map +1 -0
  249. package/dist/chunk-FL6J644M.js +116 -0
  250. package/dist/chunk-FL6J644M.js.map +1 -0
  251. package/dist/chunk-GS2QD3N7.js +14 -0
  252. package/dist/chunk-GS2QD3N7.js.map +1 -0
  253. package/dist/chunk-H45DAZBL.js +491 -0
  254. package/dist/chunk-H45DAZBL.js.map +1 -0
  255. package/dist/chunk-H7ZJEI3H.js +52 -0
  256. package/dist/chunk-H7ZJEI3H.js.map +1 -0
  257. package/dist/chunk-HFLGWMG3.js +138 -0
  258. package/dist/chunk-HFLGWMG3.js.map +1 -0
  259. package/dist/chunk-HFQDSSED.js +188 -0
  260. package/dist/chunk-HFQDSSED.js.map +1 -0
  261. package/dist/{chunk-56RJXPHG.js → chunk-I4SDIMFA.js} +7 -4
  262. package/dist/chunk-I4SDIMFA.js.map +1 -0
  263. package/dist/chunk-IM3GKYOG.js +202 -0
  264. package/dist/chunk-IM3GKYOG.js.map +1 -0
  265. package/dist/chunk-J3AWE5I4.js +50 -0
  266. package/dist/chunk-J3AWE5I4.js.map +1 -0
  267. package/dist/chunk-JOR5LGYE.js +55 -0
  268. package/dist/chunk-JOR5LGYE.js.map +1 -0
  269. package/dist/chunk-JZM3G6RT.js +149 -0
  270. package/dist/chunk-JZM3G6RT.js.map +1 -0
  271. package/dist/{chunk-7BR3DO2A.js → chunk-LAZLBC2Q.js} +14 -5
  272. package/dist/chunk-LAZLBC2Q.js.map +1 -0
  273. package/dist/chunk-LQKY5S4F.js +506 -0
  274. package/dist/chunk-LQKY5S4F.js.map +1 -0
  275. package/dist/chunk-LRAIS3YB.js +158 -0
  276. package/dist/chunk-LRAIS3YB.js.map +1 -0
  277. package/dist/chunk-MXNIVEVL.js +48 -0
  278. package/dist/chunk-MXNIVEVL.js.map +1 -0
  279. package/dist/chunk-NJZMR7HM.js +135 -0
  280. package/dist/chunk-NJZMR7HM.js.map +1 -0
  281. package/dist/chunk-NMWDHZVM.js +35 -0
  282. package/dist/chunk-NMWDHZVM.js.map +1 -0
  283. package/dist/{chunk-YGN7OMLT.js → chunk-NS2TBYM4.js} +8 -5
  284. package/dist/chunk-NS2TBYM4.js.map +1 -0
  285. package/dist/chunk-NVKRZ5DI.js +222 -0
  286. package/dist/chunk-NVKRZ5DI.js.map +1 -0
  287. package/dist/chunk-NVRJ7C3W.js +83 -0
  288. package/dist/chunk-NVRJ7C3W.js.map +1 -0
  289. package/dist/chunk-O27D24CA.js +250 -0
  290. package/dist/chunk-O27D24CA.js.map +1 -0
  291. package/dist/chunk-PQQQXJGV.js +58 -0
  292. package/dist/chunk-PQQQXJGV.js.map +1 -0
  293. package/dist/chunk-RRCD3A6G.js +139 -0
  294. package/dist/chunk-RRCD3A6G.js.map +1 -0
  295. package/dist/chunk-S3ECMF23.js +33 -0
  296. package/dist/chunk-S3ECMF23.js.map +1 -0
  297. package/dist/chunk-S4ZGTDSG.js +18 -0
  298. package/dist/chunk-S4ZGTDSG.js.map +1 -0
  299. package/dist/chunk-VHXHLZ6R.js +69 -0
  300. package/dist/chunk-VHXHLZ6R.js.map +1 -0
  301. package/dist/chunk-VIGVNDXZ.js +165 -0
  302. package/dist/chunk-VIGVNDXZ.js.map +1 -0
  303. package/dist/chunk-VR7MWD2X.js +91 -0
  304. package/dist/chunk-VR7MWD2X.js.map +1 -0
  305. package/dist/chunk-Y6KT7ZTR.js +109 -0
  306. package/dist/chunk-Y6KT7ZTR.js.map +1 -0
  307. package/dist/chunk-YLJ6X3AC.js +34 -0
  308. package/dist/chunk-YLJ6X3AC.js.map +1 -0
  309. package/dist/collapsible-panel.d.ts +137 -0
  310. package/dist/collapsible-panel.js +135 -0
  311. package/dist/collapsible-panel.js.map +1 -0
  312. package/dist/content-item.d.ts +99 -0
  313. package/dist/content-item.js +4 -0
  314. package/dist/content-item.js.map +1 -0
  315. package/dist/css-values.d.ts +112 -0
  316. package/dist/css-values.js +3 -0
  317. package/dist/css-values.js.map +1 -0
  318. package/dist/device-class.js +34 -6
  319. package/dist/device-class.js.map +1 -1
  320. package/dist/disclosure-arrow.d.ts +6 -1
  321. package/dist/disclosure-arrow.js +2 -1
  322. package/dist/empty-state.d.ts +5 -2
  323. package/dist/empty-state.js +2 -1
  324. package/dist/flex-alignment-4ms8ZbV8.d.ts +5 -0
  325. package/dist/floating-toolbar.d.ts +51 -0
  326. package/dist/floating-toolbar.js +3 -0
  327. package/dist/floating-toolbar.js.map +1 -0
  328. package/dist/grid.d.ts +57 -0
  329. package/dist/grid.js +5 -0
  330. package/dist/grid.js.map +1 -0
  331. package/dist/help-tags-register.d.ts +13 -0
  332. package/dist/help-tags-register.js +9 -0
  333. package/dist/help-tags-register.js.map +1 -0
  334. package/dist/index.d.ts +40 -18
  335. package/dist/index.js +44 -23
  336. package/dist/{menu-action-row.d.ts → list-action-row.d.ts} +21 -9
  337. package/dist/list-action-row.js +8 -0
  338. package/dist/list-action-row.js.map +1 -0
  339. package/dist/list-header.d.ts +98 -0
  340. package/dist/list-header.js +10 -0
  341. package/dist/list-header.js.map +1 -0
  342. package/dist/list-inset-control.d.ts +22 -0
  343. package/dist/list-inset-control.js +3 -0
  344. package/dist/list-inset-control.js.map +1 -0
  345. package/dist/list-inset-text.d.ts +30 -0
  346. package/dist/list-inset-text.js +4 -0
  347. package/dist/list-inset-text.js.map +1 -0
  348. package/dist/list-item.d.ts +62 -0
  349. package/dist/list-item.js +8 -0
  350. package/dist/list-item.js.map +1 -0
  351. package/dist/list.d.ts +63 -0
  352. package/dist/list.js +6 -0
  353. package/dist/list.js.map +1 -0
  354. package/dist/loading-spinner.d.ts +12 -2
  355. package/dist/loading-spinner.js +2 -1
  356. package/dist/lucide-icon.d.ts +14 -2
  357. package/dist/lucide-icon.js +2 -1
  358. package/dist/nav-stack-B1Qc2e5q.d.ts +101 -0
  359. package/dist/nav-stack.d.ts +13 -38
  360. package/dist/nav-stack.js +10 -1
  361. package/dist/pane.d.ts +116 -0
  362. package/dist/pane.js +4 -0
  363. package/dist/pane.js.map +1 -0
  364. package/dist/panel-toolbar-CL9tYOkh.d.ts +72 -0
  365. package/dist/popup-menu-register.d.ts +9 -0
  366. package/dist/popup-menu-register.js +244 -0
  367. package/dist/popup-menu-register.js.map +1 -0
  368. package/dist/popup-menu.d.ts +100 -0
  369. package/dist/popup-menu.js +3 -0
  370. package/dist/popup-menu.js.map +1 -0
  371. package/dist/resizable-region.d.ts +32 -3
  372. package/dist/resizable-region.js +1 -1
  373. package/dist/row.d.ts +48 -0
  374. package/dist/row.js +6 -0
  375. package/dist/row.js.map +1 -0
  376. package/dist/segmented-control.d.ts +12 -9
  377. package/dist/segmented-control.js +1 -2
  378. package/dist/select-register.d.ts +5 -1
  379. package/dist/select-register.js +247 -3
  380. package/dist/select-register.js.map +1 -1
  381. package/dist/select.d.ts +103 -8
  382. package/dist/select.js +3 -1
  383. package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
  384. package/dist/semantic-tone-CdW013KF.d.ts +4 -0
  385. package/dist/sides-BPSWde0A.d.ts +4 -0
  386. package/dist/skeleton.d.ts +14 -7
  387. package/dist/skeleton.js +2 -1
  388. package/dist/spacer.d.ts +18 -0
  389. package/dist/spacer.js +4 -0
  390. package/dist/spacer.js.map +1 -0
  391. package/dist/split-view.d.ts +44 -7
  392. package/dist/split-view.js +124 -10
  393. package/dist/split-view.js.map +1 -1
  394. package/dist/state-banner.d.ts +21 -7
  395. package/dist/state-banner.js +3 -1
  396. package/dist/styles/app-tab.css +224 -0
  397. package/dist/styles/badge.css +118 -0
  398. package/dist/styles/catalog/components/catalog-example-stack.css +9 -0
  399. package/dist/styles/catalog/components/catalog-example.css +168 -0
  400. package/dist/styles/catalog/components/catalog-stage.css +55 -0
  401. package/dist/styles/catalog/components/catalog.css +50 -0
  402. package/dist/styles/catalog.css +5 -0
  403. package/dist/styles/chip.css +138 -0
  404. package/dist/styles/collapsible-panel.css +580 -0
  405. package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
  406. package/dist/styles/components/actions/popup-menu/popup-menu.css +285 -0
  407. package/dist/styles/components/actions/toolbar/toolbar.css +417 -0
  408. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +891 -0
  409. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +171 -0
  410. package/dist/styles/components/collections/list/list.css +133 -0
  411. package/dist/styles/components/collections/list-action-row/list-action-row.css +258 -0
  412. package/dist/styles/components/collections/list-header/list-header.css +229 -0
  413. package/dist/styles/components/collections/list-inset-control/list-inset-control.css +30 -0
  414. package/dist/styles/components/collections/list-inset-text/list-inset-text.css +29 -0
  415. package/dist/styles/components/collections/list-item/list-item.css +255 -0
  416. package/dist/styles/components/data-display/value-table/value-table.css +105 -0
  417. package/dist/styles/components/feedback/badge/badge.css +118 -0
  418. package/dist/styles/components/feedback/chip/chip.css +138 -0
  419. package/dist/styles/components/feedback/empty-state/empty-state.css +47 -0
  420. package/dist/styles/components/feedback/loading-spinner/loading-spinner.css +25 -0
  421. package/dist/styles/components/feedback/skeleton/skeleton.css +92 -0
  422. package/dist/styles/components/feedback/state-banner/state-banner.css +248 -0
  423. package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
  424. package/dist/styles/components/forms/select/select.css +454 -0
  425. package/dist/styles/components/forms/token-search-field/token-search-field.css +392 -0
  426. package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +580 -0
  427. package/dist/styles/components/layout/grid/grid.css +85 -0
  428. package/dist/styles/components/layout/pane/pane.css +294 -0
  429. package/dist/styles/components/layout/resizable-region/resizable-region.css +545 -0
  430. package/dist/styles/components/layout/row/row.css +111 -0
  431. package/dist/styles/components/layout/spacer/spacer.css +11 -0
  432. package/dist/styles/components/layout/split-view/split-view.css +146 -0
  433. package/dist/styles/components/layout/workbench/workbench.css +1075 -0
  434. package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
  435. package/dist/styles/components/navigation/app-tab/app-tab.css +376 -0
  436. package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +23 -0
  437. package/dist/styles/components/navigation/nav-stack/nav-stack.css +242 -0
  438. package/dist/styles/components/navigation/tab-bar/tab-bar.css +183 -0
  439. package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +237 -0
  440. package/dist/styles/components/surfaces/content-item/content-item.css +120 -0
  441. package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +34 -0
  442. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +111 -0
  443. package/dist/styles/components/typography/text/text.css +158 -0
  444. package/dist/styles/content-item.css +120 -0
  445. package/dist/styles/document.css +33 -0
  446. package/dist/styles/floating-toolbar.css +119 -0
  447. package/dist/styles/foundation.css +187 -45
  448. package/dist/styles/grid.css +85 -0
  449. package/dist/styles/layout.css +3 -41
  450. package/dist/styles/list-action-row.css +258 -0
  451. package/dist/styles/list-header.css +229 -0
  452. package/dist/styles/list-inset-control.css +30 -0
  453. package/dist/styles/list-inset-text.css +29 -0
  454. package/dist/styles/list-item.css +255 -0
  455. package/dist/styles/list.css +133 -0
  456. package/dist/styles/loading-spinner.css +4 -0
  457. package/dist/styles/lucide-icon.css +9 -0
  458. package/dist/styles/nav-stack.css +180 -50
  459. package/dist/styles/pane.css +294 -0
  460. package/dist/styles/popup-menu.css +285 -0
  461. package/dist/styles/resizable-region.css +438 -4
  462. package/dist/styles/row.css +111 -0
  463. package/dist/styles/segmented-control.css +36 -9
  464. package/dist/styles/select.css +337 -21
  465. package/dist/styles/skeleton.css +64 -3
  466. package/dist/styles/spacer.css +11 -0
  467. package/dist/styles/split-view.css +114 -3
  468. package/dist/styles/state-banner.css +94 -19
  469. package/dist/styles/styles.css +13 -4
  470. package/dist/styles/sunken-panel.css +34 -0
  471. package/dist/styles/surface-scaffold.css +111 -0
  472. package/dist/styles/tab-bar.css +147 -9
  473. package/dist/styles/tab-navigator.css +237 -0
  474. package/dist/styles/text.css +158 -0
  475. package/dist/styles/token-search-field.css +167 -56
  476. package/dist/styles/toolbar-control-group.css +710 -30
  477. package/dist/styles/toolbar-text.css +139 -8
  478. package/dist/styles/toolbar.css +367 -11
  479. package/dist/styles/value-table.css +34 -4
  480. package/dist/styles/webawesome.css +388 -16
  481. package/dist/styles/workbench.css +988 -7
  482. package/dist/sunken-panel.d.ts +31 -0
  483. package/dist/sunken-panel.js +3 -0
  484. package/dist/sunken-panel.js.map +1 -0
  485. package/dist/surface-scaffold-register.d.ts +4 -0
  486. package/dist/surface-scaffold-register.js +59 -0
  487. package/dist/surface-scaffold-register.js.map +1 -0
  488. package/dist/surface-scaffold.d.ts +38 -0
  489. package/dist/surface-scaffold.js +3 -0
  490. package/dist/surface-scaffold.js.map +1 -0
  491. package/dist/tab-bar.d.ts +39 -6
  492. package/dist/tab-bar.js +1 -1
  493. package/dist/tab-navigator.d.ts +86 -0
  494. package/dist/tab-navigator.js +95 -0
  495. package/dist/tab-navigator.js.map +1 -0
  496. package/dist/text.d.ts +63 -0
  497. package/dist/text.js +3 -0
  498. package/dist/text.js.map +1 -0
  499. package/dist/token-search-field.d.ts +3 -43
  500. package/dist/token-search-field.js +2 -1
  501. package/dist/token-search-model-DTcTXWMS.d.ts +154 -0
  502. package/dist/token-search-model.d.ts +3 -0
  503. package/dist/token-search-model.js +3 -0
  504. package/dist/token-search-model.js.map +1 -0
  505. package/dist/toolbar-control-group.d.ts +89 -7
  506. package/dist/toolbar-control-group.js +3 -1
  507. package/dist/toolbar-text.d.ts +45 -9
  508. package/dist/toolbar-text.js +2 -1
  509. package/dist/toolbar.d.ts +59 -7
  510. package/dist/toolbar.js +1 -1
  511. package/dist/types-C9BubXfz.d.ts +117 -0
  512. package/dist/value-table.d.ts +11 -3
  513. package/dist/value-table.js +2 -1
  514. package/dist/webawesome.d.ts +8 -1
  515. package/dist/wire-catalog.d.ts +82 -0
  516. package/dist/wire-catalog.js +407 -0
  517. package/dist/wire-catalog.js.map +1 -0
  518. package/dist/wire-content-items.d.ts +11 -0
  519. package/dist/wire-content-items.js +114 -0
  520. package/dist/wire-content-items.js.map +1 -0
  521. package/dist/wire-nav-stack.d.ts +4 -1
  522. package/dist/wire-nav-stack.js +191 -15
  523. package/dist/wire-nav-stack.js.map +1 -1
  524. package/dist/wire-resizable-regions.d.ts +2 -1
  525. package/dist/wire-resizable-regions.js +2 -1
  526. package/dist/wire-scroll-dividers.d.ts +72 -0
  527. package/dist/wire-scroll-dividers.js +3 -0
  528. package/dist/wire-scroll-dividers.js.map +1 -0
  529. package/dist/wire-sidebar.d.ts +63 -0
  530. package/dist/wire-sidebar.js +231 -0
  531. package/dist/wire-sidebar.js.map +1 -0
  532. package/dist/wire-tab-bars.d.ts +19 -2
  533. package/dist/wire-tab-bars.js +1 -1
  534. package/dist/wire-tab-navigator.d.ts +11 -0
  535. package/dist/wire-tab-navigator.js +21 -0
  536. package/dist/wire-tab-navigator.js.map +1 -0
  537. package/dist/wire-token-search-fields.d.ts +65 -3
  538. package/dist/wire-token-search-fields.js +2 -1
  539. package/dist/wire-toolbar-visibility.d.ts +13 -0
  540. package/dist/wire-toolbar-visibility.js +3 -0
  541. package/dist/wire-toolbar-visibility.js.map +1 -0
  542. package/dist/wire-workbench.d.ts +116 -0
  543. package/dist/wire-workbench.js +6 -0
  544. package/dist/wire-workbench.js.map +1 -0
  545. package/dist/workbench.d.ts +246 -9
  546. package/dist/workbench.js +17 -15
  547. package/dist/workbench.js.map +1 -1
  548. package/docs/accessibility.md +497 -26
  549. package/docs/app-layouts.md +141 -10
  550. package/docs/apple-hig.md +1 -0
  551. package/docs/catalog.md +493 -0
  552. package/docs/collapsible-panel.md +382 -0
  553. package/docs/component-contract.md +736 -61
  554. package/docs/component-integration.md +75 -0
  555. package/docs/component-selection.md +617 -97
  556. package/docs/design/templates/empty-state/filtered-dark.svg +1 -0
  557. package/docs/design/templates/empty-state/filtered.svg +1 -0
  558. package/docs/design/templates/empty-state/with-action-dark.svg +1 -0
  559. package/docs/design/templates/empty-state/with-action.svg +1 -0
  560. package/docs/design/templates/empty-state-dark.svg +1 -0
  561. package/docs/design/templates/empty-state.svg +1 -0
  562. package/docs/design/templates/list/compact-dark.svg +1 -0
  563. package/docs/design/templates/list/compact.svg +1 -0
  564. package/docs/design/templates/list/stack-dark.svg +1 -0
  565. package/docs/design/templates/list/stack.svg +1 -0
  566. package/docs/design/templates/list-action-row/default-dark.svg +1 -0
  567. package/docs/design/templates/list-action-row/default.svg +1 -0
  568. package/docs/design/templates/list-action-row/selected-dark.svg +1 -0
  569. package/docs/design/templates/list-action-row/selected.svg +1 -0
  570. package/docs/design/templates/list-action-row-dark.svg +1 -0
  571. package/docs/design/templates/list-action-row.svg +1 -0
  572. package/docs/design/templates/list-dark.svg +1 -0
  573. package/docs/design/templates/list-header/action-dark.svg +1 -0
  574. package/docs/design/templates/list-header/action.svg +1 -0
  575. package/docs/design/templates/list-header/count-dark.svg +1 -0
  576. package/docs/design/templates/list-header/count.svg +1 -0
  577. package/docs/design/templates/list-header/inline-action-dark.svg +1 -0
  578. package/docs/design/templates/list-header/inline-action.svg +1 -0
  579. package/docs/design/templates/list-header/size-l-dark.svg +1 -0
  580. package/docs/design/templates/list-header/size-l.svg +1 -0
  581. package/docs/design/templates/list-header/size-m-dark.svg +1 -0
  582. package/docs/design/templates/list-header/size-m.svg +1 -0
  583. package/docs/design/templates/list-header/size-xl-dark.svg +1 -0
  584. package/docs/design/templates/list-header/size-xl.svg +1 -0
  585. package/docs/design/templates/list-header/size-xs-dark.svg +1 -0
  586. package/docs/design/templates/list-header/size-xs.svg +1 -0
  587. package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -0
  588. package/docs/design/templates/list-header/toggle-collapsed.svg +1 -0
  589. package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -0
  590. package/docs/design/templates/list-header/toggle-expanded.svg +1 -0
  591. package/docs/design/templates/list-header-dark.svg +1 -0
  592. package/docs/design/templates/list-header.svg +1 -0
  593. package/docs/design/templates/list-item/default-dark.svg +1 -0
  594. package/docs/design/templates/list-item/default.svg +1 -0
  595. package/docs/design/templates/list-item/multiline-dark.svg +1 -0
  596. package/docs/design/templates/list-item/multiline.svg +1 -0
  597. package/docs/design/templates/list-item/selected-dark.svg +1 -0
  598. package/docs/design/templates/list-item/selected.svg +1 -0
  599. package/docs/design/templates/list-item/trailing-dark.svg +1 -0
  600. package/docs/design/templates/list-item/trailing.svg +1 -0
  601. package/docs/design/templates/list-item-dark.svg +1 -0
  602. package/docs/design/templates/list-item.svg +1 -0
  603. package/docs/design/templates/list.svg +1 -0
  604. package/docs/design/templates/segmented-control/equal-dark.svg +1 -0
  605. package/docs/design/templates/segmented-control/equal.svg +1 -0
  606. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -0
  607. package/docs/design/templates/segmented-control/pill-small.svg +1 -0
  608. package/docs/design/templates/segmented-control-dark.svg +1 -0
  609. package/docs/design/templates/segmented-control.svg +1 -0
  610. package/docs/design/templates/skeleton/avatar-dark.svg +1 -0
  611. package/docs/design/templates/skeleton/avatar.svg +1 -0
  612. package/docs/design/templates/skeleton/block-dark.svg +1 -0
  613. package/docs/design/templates/skeleton/block.svg +1 -0
  614. package/docs/design/templates/skeleton/lines-dark.svg +1 -0
  615. package/docs/design/templates/skeleton/lines.svg +1 -0
  616. package/docs/design/templates/skeleton-dark.svg +1 -0
  617. package/docs/design/templates/skeleton.svg +1 -0
  618. package/docs/design/templates/state-banner/danger-dark.svg +1 -0
  619. package/docs/design/templates/state-banner/danger.svg +1 -0
  620. package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
  621. package/docs/design/templates/state-banner/info-badge.svg +1 -0
  622. package/docs/design/templates/state-banner/info-dark.svg +1 -0
  623. package/docs/design/templates/state-banner/info.svg +1 -0
  624. package/docs/design/templates/state-banner/success-dark.svg +1 -0
  625. package/docs/design/templates/state-banner/success.svg +1 -0
  626. package/docs/design/templates/state-banner/warning-dark.svg +1 -0
  627. package/docs/design/templates/state-banner/warning.svg +1 -0
  628. package/docs/design/templates/state-banner-dark.svg +1 -0
  629. package/docs/design/templates/state-banner.svg +1 -0
  630. package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -0
  631. package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -0
  632. package/docs/design/templates/tab-bar-dark.svg +1 -0
  633. package/docs/design/templates/tab-bar.svg +1 -0
  634. package/docs/design/templates/token-search-field/empty-dark.svg +1 -0
  635. package/docs/design/templates/token-search-field/empty.svg +1 -0
  636. package/docs/design/templates/token-search-field/tokens-dark.svg +1 -0
  637. package/docs/design/templates/token-search-field/tokens.svg +1 -0
  638. package/docs/design/templates/token-search-field-dark.svg +1 -0
  639. package/docs/design/templates/token-search-field.svg +1 -0
  640. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -0
  641. package/docs/design/templates/toolbar/title-and-actions.svg +1 -0
  642. package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
  643. package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
  644. package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
  645. package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
  646. package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -0
  647. package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -0
  648. package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -0
  649. package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -0
  650. package/docs/design/templates/toolbar-control-group/icon-tile-brand-dark.svg +1 -0
  651. package/docs/design/templates/toolbar-control-group/icon-tile-brand.svg +1 -0
  652. package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -0
  653. package/docs/design/templates/toolbar-control-group/icon-tile-danger.svg +1 -0
  654. package/docs/design/templates/toolbar-control-group/icon-tile-neutral-dark.svg +1 -0
  655. package/docs/design/templates/toolbar-control-group/icon-tile-neutral.svg +1 -0
  656. package/docs/design/templates/toolbar-control-group/icon-tile-success-dark.svg +1 -0
  657. package/docs/design/templates/toolbar-control-group/icon-tile-success.svg +1 -0
  658. package/docs/design/templates/toolbar-control-group/icon-tile-warning-dark.svg +1 -0
  659. package/docs/design/templates/toolbar-control-group/icon-tile-warning.svg +1 -0
  660. package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -0
  661. package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -0
  662. package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -0
  663. package/docs/design/templates/toolbar-control-group/with-text.svg +1 -0
  664. package/docs/design/templates/toolbar-control-group-dark.svg +1 -0
  665. package/docs/design/templates/toolbar-control-group.svg +1 -0
  666. package/docs/design/templates/toolbar-dark.svg +1 -0
  667. package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
  668. package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
  669. package/docs/design/templates/toolbar-text/default-dark.svg +1 -0
  670. package/docs/design/templates/toolbar-text/default.svg +1 -0
  671. package/docs/design/templates/toolbar-text/large-dark.svg +1 -0
  672. package/docs/design/templates/toolbar-text/large.svg +1 -0
  673. package/docs/design/templates/toolbar-text/small-dark.svg +1 -0
  674. package/docs/design/templates/toolbar-text/small.svg +1 -0
  675. package/docs/design/templates/toolbar-text-dark.svg +1 -0
  676. package/docs/design/templates/toolbar-text.svg +1 -0
  677. package/docs/design/templates/toolbar.svg +1 -0
  678. package/docs/design/templates/value-table/details-dark.svg +1 -0
  679. package/docs/design/templates/value-table/details.svg +1 -0
  680. package/docs/design/templates/value-table-dark.svg +1 -0
  681. package/docs/design/templates/value-table.svg +1 -0
  682. package/docs/design/templates.md +140 -0
  683. package/docs/design-philosophy.md +48 -20
  684. package/docs/device-class.md +10 -9
  685. package/docs/document-baseline.md +42 -0
  686. package/docs/examples/application-ui-profile.json +60 -0
  687. package/docs/examples/command-palette-adapter.tsx +69 -17
  688. package/docs/examples/component-catalog-extension.json +52 -0
  689. package/docs/examples/component-composition-extension.json +80 -0
  690. package/docs/layout.md +601 -59
  691. package/docs/nav-stack.md +154 -14
  692. package/docs/recipes.md +142 -55
  693. package/docs/split-view.md +77 -6
  694. package/docs/sunken-panel.md +93 -0
  695. package/docs/surface-scaffold.md +74 -0
  696. package/docs/tab-navigator.md +210 -0
  697. package/docs/type-contracts.md +135 -0
  698. package/docs/ui-analyzer.md +404 -0
  699. package/docs/ui-doctor.md +202 -0
  700. package/docs/ui-evaluator.md +139 -0
  701. package/docs/ux-demo.md +46 -16
  702. package/docs/webawesome-theme.md +188 -16
  703. package/docs/workbench.md +621 -12
  704. package/doctor/cli.mjs +120 -0
  705. package/doctor/component-style-checks.mjs +457 -0
  706. package/doctor/config.schema.json +94 -0
  707. package/doctor/eslint-diagnostics.d.mts +24 -0
  708. package/doctor/eslint-diagnostics.mjs +24 -0
  709. package/doctor/index.d.mts +122 -0
  710. package/doctor/index.mjs +1403 -0
  711. package/doctor/report.schema.json +118 -0
  712. package/evaluator/cli.mjs +89 -0
  713. package/evaluator/index.d.mts +90 -0
  714. package/evaluator/index.mjs +1203 -0
  715. package/evaluator/report.schema.json +152 -0
  716. package/llms.txt +510 -49
  717. package/package.json +266 -44
  718. package/scripts/component-catalog-extension-validation.mjs +28 -0
  719. package/traversal-exclusions.mjs +27 -0
  720. package/ux-demo/recipes/app-shell.tsx +205 -17
  721. package/ux-demo/recipes/collapsible-sidebar.tsx +260 -0
  722. package/ux-demo/recipes/compact-toolbar.tsx +135 -14
  723. package/ux-demo/recipes/composer-form.tsx +133 -21
  724. package/ux-demo/recipes/list-detail-dialog.tsx +286 -0
  725. package/ux-demo/recipes/list-workspace-states.tsx +183 -11
  726. package/ux-demo/recipes/loaders.ts +15 -5
  727. package/ux-demo/recipes/loading-inspector.tsx +204 -0
  728. package/ux-demo/recipes/mount-recipe.ts +28 -10
  729. package/ux-demo/recipes/navigation-sidebar.tsx +139 -13
  730. package/ux-demo/recipes/navigation-stack.tsx +81 -26
  731. package/ux-demo/recipes/types.ts +23 -2
  732. package/ux-demo/recipes/workspace-header.tsx +86 -5
  733. package/dist/browser/menu-action-row.js +0 -4
  734. package/dist/browser/menu-item.js +0 -4
  735. package/dist/browser/panel-header.js +0 -7
  736. package/dist/chunk-2RJBFNB6.js +0 -172
  737. package/dist/chunk-2RJBFNB6.js.map +0 -1
  738. package/dist/chunk-2Z5TWHKQ.js +0 -34
  739. package/dist/chunk-2Z5TWHKQ.js.map +0 -1
  740. package/dist/chunk-3YD6ZNRA.js +0 -34
  741. package/dist/chunk-3YD6ZNRA.js.map +0 -1
  742. package/dist/chunk-55DATV3A.js +0 -10
  743. package/dist/chunk-55DATV3A.js.map +0 -1
  744. package/dist/chunk-56RJXPHG.js.map +0 -1
  745. package/dist/chunk-7BR3DO2A.js.map +0 -1
  746. package/dist/chunk-7LDCTU7D.js +0 -134
  747. package/dist/chunk-7LDCTU7D.js.map +0 -1
  748. package/dist/chunk-AQNKJRFH.js +0 -79
  749. package/dist/chunk-AQNKJRFH.js.map +0 -1
  750. package/dist/chunk-B24C4A6T.js +0 -22
  751. package/dist/chunk-B24C4A6T.js.map +0 -1
  752. package/dist/chunk-BLK3UEEI.js +0 -23
  753. package/dist/chunk-BLK3UEEI.js.map +0 -1
  754. package/dist/chunk-BNQ2YDV4.js +0 -20
  755. package/dist/chunk-BNQ2YDV4.js.map +0 -1
  756. package/dist/chunk-DAFFDO33.js +0 -14
  757. package/dist/chunk-DAFFDO33.js.map +0 -1
  758. package/dist/chunk-H6URQGJI.js +0 -42
  759. package/dist/chunk-H6URQGJI.js.map +0 -1
  760. package/dist/chunk-I7INRJO4.js +0 -17
  761. package/dist/chunk-I7INRJO4.js.map +0 -1
  762. package/dist/chunk-LC3YSAZC.js +0 -39
  763. package/dist/chunk-LC3YSAZC.js.map +0 -1
  764. package/dist/chunk-M5JRI6MN.js +0 -27
  765. package/dist/chunk-M5JRI6MN.js.map +0 -1
  766. package/dist/chunk-MBR3TYNL.js +0 -14
  767. package/dist/chunk-MBR3TYNL.js.map +0 -1
  768. package/dist/chunk-MFKMHK5W.js +0 -10
  769. package/dist/chunk-MFKMHK5W.js.map +0 -1
  770. package/dist/chunk-MQIZAD4A.js +0 -227
  771. package/dist/chunk-MQIZAD4A.js.map +0 -1
  772. package/dist/chunk-PONXLV5U.js +0 -19
  773. package/dist/chunk-PONXLV5U.js.map +0 -1
  774. package/dist/chunk-RUNWEPR4.js +0 -10
  775. package/dist/chunk-RUNWEPR4.js.map +0 -1
  776. package/dist/chunk-W2FK7ZNY.js +0 -26
  777. package/dist/chunk-W2FK7ZNY.js.map +0 -1
  778. package/dist/chunk-WVPYVDXY.js +0 -15
  779. package/dist/chunk-WVPYVDXY.js.map +0 -1
  780. package/dist/chunk-YGN7OMLT.js.map +0 -1
  781. package/dist/chunk-YKUUZPED.js +0 -24
  782. package/dist/chunk-YKUUZPED.js.map +0 -1
  783. package/dist/menu-action-row.js +0 -5
  784. package/dist/menu-action-row.js.map +0 -1
  785. package/dist/menu-header.d.ts +0 -43
  786. package/dist/menu-header.js +0 -7
  787. package/dist/menu-header.js.map +0 -1
  788. package/dist/menu-item.d.ts +0 -33
  789. package/dist/menu-item.js +0 -5
  790. package/dist/menu-item.js.map +0 -1
  791. package/dist/panel-header.d.ts +0 -36
  792. package/dist/panel-header.js +0 -7
  793. package/dist/panel-header.js.map +0 -1
  794. package/dist/styles/menu-action-row.css +0 -160
  795. package/dist/styles/menu-header.css +0 -160
  796. package/dist/styles/menu-item.css +0 -123
  797. package/dist/styles/panel-header.css +0 -64
  798. package/dist/styles/tab-scaffold.css +0 -84
  799. package/dist/tab-scaffold.d.ts +0 -30
  800. package/dist/tab-scaffold.js +0 -16
  801. package/dist/tab-scaffold.js.map +0 -1
  802. package/dist/wire-tab-scaffold.d.ts +0 -11
  803. package/dist/wire-tab-scaffold.js +0 -16
  804. package/dist/wire-tab-scaffold.js.map +0 -1
  805. package/docs/tab-scaffold.md +0 -41
  806. package/ux-demo/recipes/master-detail-dialog.tsx +0 -45
  807. package/ux-demo/recipes/recipes.css +0 -355
@@ -0,0 +1,72 @@
1
+ # Badge
2
+
3
+ <!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
4
+
5
+ `@kerfjs/ui:badge` · Kerf UI · component · Foundation
6
+
7
+ Self-styled, non-interactive status, count, and category metadata configured through semantic tone, appearance, shape, and size props.
8
+
9
+ ## When to use
10
+
11
+ Present compact metadata without application-authored badge CSS or consumer styling of component internals.
12
+
13
+ - Show a short status, count, category, or metadata label whose presentation should be configured rather than restyled.
14
+
15
+ **Not when:**
16
+
17
+ - Do not use Badge as a button, link, or removable chip; choose an interactive control with the correct native semantics.
18
+ - Do not rely on tone alone to communicate meaning.
19
+
20
+ ## Imports
21
+
22
+ - JavaScript: `@kerfjs/ui/badge` — exports `Badge`.
23
+ - CSS: the browser build of `@kerfjs/ui/badge` pulls its CSS automatically; import `@kerfjs/ui/badge.css` manually only without the `browser` export condition.
24
+ - Declared side effects: browser-condition-css.
25
+
26
+ ## Props
27
+
28
+ Exact prop names and types: [`@kerfjs/ui/badge`](../public-api-signatures-v1.md#kerfjsuibadge) in `public-api-signatures-v1.md`. Do not infer props from examples.
29
+
30
+ **Variants (configure, do not restyle):**
31
+
32
+ - neutral, info, pop, success, warning, or danger tone
33
+ - quiet, solid, or outline appearance
34
+ - pill or rounded shape
35
+ - compact or default size, or a text-free dot (size: 'dot')
36
+ - labeled or decorative duplicate
37
+
38
+ ## Composition
39
+
40
+ - Parents: any.
41
+ - Contexts: `application-ui`.
42
+ - Children: unrestricted.
43
+
44
+ ## State and wiring
45
+
46
+ **The app owns:** metadata text; semantic tone mapping; accessible label for abbreviated content.
47
+
48
+ No wiring helper.
49
+
50
+ ## Geometry
51
+
52
+ Margin: none · border: self · padding: self (layout role: foundation). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
53
+
54
+ ## Accessibility
55
+
56
+ - 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.
57
+ - Keep meaningful text visible because tone is supplementary.
58
+
59
+ ## Styling boundary
60
+
61
+ The component owns its own styles. Configure it through its props and variants; do not override its internals.
62
+
63
+ Public class hooks (select for layout placement only, never to change the component's look): `kui-badge`.
64
+
65
+ Never put `kui-badge` on an element you write; render `Badge` instead (`KUI-L103`).
66
+
67
+ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
68
+
69
+ ## Related
70
+
71
+ - Docs: [`docs/component-selection.md`](../../docs/component-selection.md), [`docs/component-selection.md#problem-to-component-matrix`](../../docs/component-selection.md#problem-to-component-matrix).
72
+ - UX catalog route: `?component=badge`.
@@ -0,0 +1,72 @@
1
+ # Chip
2
+
3
+ <!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
4
+
5
+ `@kerfjs/ui:chip` · Kerf UI · component · Foundation
6
+
7
+ A short tag with semantic tone and an optional accessible remove button, including compact and disabled variants.
8
+
9
+ ## When to use
10
+
11
+ Render removable tags without application rules on Web Awesome internals.
12
+
13
+ - Show a short tag that the application can remove through a delegated action, including a compact or disabled tag.
14
+
15
+ **Not when:**
16
+
17
+ - Use Badge for non-interactive status and count metadata.
18
+ - Do not use the remove button without a specific accessible name.
19
+
20
+ ## Imports
21
+
22
+ - JavaScript: `@kerfjs/ui/chip` — exports `Chip`.
23
+ - CSS: the browser build of `@kerfjs/ui/chip` pulls its CSS automatically; import `@kerfjs/ui/chip.css` manually only without the `browser` export condition.
24
+ - Declared side effects: browser-condition-css.
25
+
26
+ ## Props
27
+
28
+ Exact prop names and types: [`@kerfjs/ui/chip`](../public-api-signatures-v1.md#kerfjsuichip) in `public-api-signatures-v1.md`. Do not infer props from examples.
29
+
30
+ **Variants (configure, do not restyle):**
31
+
32
+ - neutral, info, pop, success, warning, or danger tone
33
+ - quiet, solid, or outline appearance
34
+ - pill or rounded shape
35
+ - compact or default size
36
+ - removable or plain, enabled or disabled
37
+
38
+ ## Composition
39
+
40
+ - Parents: any.
41
+ - Contexts: `application-ui`.
42
+ - Children: unrestricted.
43
+
44
+ ## State and wiring
45
+
46
+ **The app owns:** tag text and identity; remove action and list update; disabled policy.
47
+
48
+ No wiring helper.
49
+
50
+ ## Geometry
51
+
52
+ Margin: none · border: self · padding: self (layout role: foundation). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
53
+
54
+ ## Accessibility
55
+
56
+ - The remove control is a native button and requires an action and a specific removeLabel. A disabled chip disables that button and removes it from keyboard interaction.
57
+ - Keep meaningful tag text visible because tone is supplementary.
58
+
59
+ ## Styling boundary
60
+
61
+ The component owns its own styles. Configure it through its props and variants; do not override its internals.
62
+
63
+ Public class hooks (select for layout placement only, never to change the component's look): `kui-chip`.
64
+
65
+ Never put `kui-chip` on an element you write; render `Chip` instead (`KUI-L103`).
66
+
67
+ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
68
+
69
+ ## Related
70
+
71
+ - Docs: [`docs/component-selection.md`](../../docs/component-selection.md), [`docs/component-selection.md#problem-to-component-matrix`](../../docs/component-selection.md#problem-to-component-matrix).
72
+ - UX catalog route: `?component=chip`.
@@ -0,0 +1,102 @@
1
+ # CollapsiblePanel
2
+
3
+ <!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
4
+
5
+ `@kerfjs/ui:collapsible-panel` · Kerf UI · component · Structure
6
+
7
+ A standalone controlled left or right rail or bottom drawer with standard collapse icons and optional compact-overlay behavior through wireSidebar.
8
+
9
+ ## When to use
10
+
11
+ Add one independently collapsible peripheral panel without adopting the complete multi-panel Workbench shell.
12
+
13
+ - An application needs one collapsible side rail or bottom drawer outside a full Workbench.
14
+ - The panel should become a dismissable, focus-managed overlay on compact devices.
15
+
16
+ **Not when:**
17
+
18
+ - Do not use CollapsiblePanel for a complete editor shell with multiple coordinated rails and a drawer; use Workbench.
19
+ - Do not preserve an empty icon-only rail when collapsed; move the restore control into adjacent visible chrome.
20
+
21
+ **Alternatives:**
22
+
23
+ - [Workbench](./workbench.md) (larger-composition) — Use Workbench when the central work area coordinates multiple peripheral panels.
24
+ - [Collapsible sidebar](./recipe-collapsible-sidebar.md) (recipe) — Use the production recipe for collapse, restore, compact overlay, focus, and persistence ownership.
25
+
26
+ ## Imports
27
+
28
+ - JavaScript: `@kerfjs/ui/collapsible-panel` — exports `CollapsiblePanelSide`, `collapsiblePanelToggleIcon`, `CollapsiblePanelToolbarToggle`, `CollapsiblePanelToolbar`, `CollapsiblePanelToggleProps`, `CollapsiblePanelToggle`, `CollapsiblePanelProps`, `CollapsiblePanel`, `CollapsiblePanelRelocatedProps`, `CollapsiblePanelRelocated`.
29
+ - CSS: the browser build of `@kerfjs/ui/collapsible-panel` pulls its CSS automatically; import `@kerfjs/ui/collapsible-panel.css` manually only without the `browser` export condition.
30
+ - Wiring: `wireSidebar` from `@kerfjs/ui/wire-sidebar` (required).
31
+ - Wiring: `wireScrollDividers` from `@kerfjs/ui/wire-scroll-dividers` (optional).
32
+ - Declared side effects: browser-condition-css.
33
+
34
+ ## Props
35
+
36
+ Exact prop names and types: [`@kerfjs/ui/collapsible-panel`](../public-api-signatures-v1.md#kerfjsuicollapsible-panel), [`@kerfjs/ui/wire-sidebar`](../public-api-signatures-v1.md#kerfjsuiwire-sidebar), [`@kerfjs/ui/wire-scroll-dividers`](../public-api-signatures-v1.md#kerfjsuiwire-scroll-dividers) in `public-api-signatures-v1.md`. Do not infer props from examples.
37
+
38
+ **Variants (configure, do not restyle):**
39
+
40
+ - left rail
41
+ - right rail
42
+ - bottom drawer
43
+ - collapsed
44
+ - compact overlay
45
+ - compact responsive replacement
46
+ - hidden separator
47
+ - slide, fade-slide, or instant content
48
+ - clipped, scrolling, or popup-visible content
49
+ - safe-area restore control
50
+ - chrome dividers only while scrolled (wired by wireScrollDividers)
51
+
52
+ ## Composition
53
+
54
+ - Parents: any.
55
+ - Contexts: `application-ui`.
56
+ - Children: unrestricted.
57
+ - Built from: [LucideIcon](./lucide-icon.md).
58
+
59
+ ## State and wiring
60
+
61
+ **The app owns:** controlled collapsed state; panel content and size; toggle placement; persistence policy; compact-device policy.
62
+
63
+ **Wiring:** `wireSidebar`, `wireScrollDividers` is required.
64
+
65
+ - Use wireSidebar as documented.
66
+
67
+ **Wiring-owned state attributes** — never render, remove, or branch on these as app state:
68
+
69
+ - `data-collapsible-responsive` on `the root passed to wireSidebar` (`wireSidebar`): With a deviceClass: "inline" on a wide device class, otherwise the compact presentation ("overlay" or "hidden"). Re-applied if a re-render drops it.
70
+ - `data-collapsible-overlay` on `the root passed to wireSidebar` (`wireSidebar`): With a deviceClass on a compact device: "true" for the overlay presentation, "false" for hidden. Absent on a wide device class. Re-applied if a re-render drops it.
71
+ - `data-morph-preserve` on `kui-collapsible-panel__backdrop` (`wireSidebar`): Keeps the injected compact-overlay backdrop through the application's re-render; the helper creates and removes the backdrop itself.
72
+ - `data-scroll-overflow` on `kui-pane__content of each panel and work-area Pane` (`wireScrollDividers`): The physical edges, in canonical t/r/b/l order, beyond which content is scrolled out of view; absent when nothing is hidden (content that fits never reports its far edges). Re-applied if a re-render drops it.
73
+ - `data-scroll-divider` on `kui-pane__header and kui-pane__footer of each panel and work-area Pane` (`wireScrollDividers`): The sides, in t/r/b/l order, on which this chrome currently draws its scroll divider: the side facing the scroller while content is hidden beyond it. Re-applied if a re-render drops it.
74
+
75
+ ## Geometry
76
+
77
+ Margin: none · border: self · padding: child (layout role: structure). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
78
+
79
+ - The panel owns its dock-edge separator and size track; its child content owns internal padding and scrolling.
80
+
81
+ ## Accessibility
82
+
83
+ - Give the panel region and every collapse or restore control an accessible label.
84
+ - Keep the restore control outside the disappearing panel and use wireSidebar for focus transfer, Escape, backdrop dismissal, and compact focus trapping.
85
+
86
+ ## Styling boundary
87
+
88
+ The component owns its own styles. Configure it through its props and variants; do not override its internals.
89
+
90
+ Public class hooks (select for layout placement only, never to change the component's look): `kui-collapsible-panel`, `kui-collapsible-panel--left`, `kui-collapsible-panel--right`, `kui-collapsible-panel--bottom`, `kui-collapsible-panel__content`, `kui-collapsible-panel__restore`, `kui-collapsible-panel__backdrop`, `kui-collapsible-panel__toggle`.
91
+
92
+ Never put `kui-collapsible-panel`, `kui-collapsible-panel--left`, `kui-collapsible-panel--right`, `kui-collapsible-panel--bottom`, `kui-collapsible-panel__content`, `kui-collapsible-panel__restore`, `kui-collapsible-panel__backdrop`, `kui-collapsible-panel__toggle` on an element you write; render `CollapsiblePanel` instead (`KUI-L103`).
93
+
94
+ Public tokens it reads: `--kui-collapsible-panel-width`, `--kui-collapsible-panel-height`, `--kui-collapsible-panel-popup-z`, `--kui-collapsible-panel-overlay-z`, `--kui-collapsible-panel-restore-inset`, `--kui-collapsible-panel-restore-z`, `--kui-collapsible-panel-backdrop-z`. Set a token only where its public contract allows; prefer a prop.
95
+
96
+ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
97
+
98
+ ## Related
99
+
100
+ - Components: [LucideIcon](./lucide-icon.md), [Workbench](./workbench.md), [Collapsible sidebar](./recipe-collapsible-sidebar.md).
101
+ - Docs: [`docs/collapsible-panel.md`](../../docs/collapsible-panel.md), [`docs/collapsible-panel.md#recipe-and-coverage`](../../docs/collapsible-panel.md#recipe-and-coverage).
102
+ - UX catalog route: `?component=collapsible-panel`.
@@ -0,0 +1,96 @@
1
+ # ContentItem
2
+
3
+ <!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
4
+
5
+ `@kerfjs/ui:content-item` · Kerf UI · component · Structure
6
+
7
+ One self-contained content child with shared geometry plus typed transparent, surface, or semantic appearance, frame, and shape choices.
8
+
9
+ ## When to use
10
+
11
+ Render one self-contained .kui-content child that owns its 8px inline margin, real 1px border, 8px padding, radius, and optional coordinated surface colors.
12
+
13
+ - An ordinary surface-like child of a Pane or .kui-content stack needs the shared content-item geometry so its content edge lands at the standard 17px inset.
14
+ - A content item marks a real distinction and must read as visibly bounded: pass frame="framed" (the border is always reserved, so geometry does not change).
15
+ - A content item needs the base surface or a coordinated semantic status treatment: pass appearance="surface" or a semantic appearance such as success or danger.
16
+ - A content item should follow a pill control's 22px radius: pass shape="pill".
17
+ - A selectable rich card needs nested controls: use selectionMode="multiple" inside a labeled List multi-select grid.
18
+
19
+ **Not when:**
20
+
21
+ - Do not wrap a component that already owns content-item geometry (ListItem, ListHeader, StateBanner, Toolbar, ValueTable) or pad around a ContentItem; either double-insets.
22
+ - Do not frame an item only to make it look contained; hierarchy comes from alignment, spacing, and type first.
23
+ - Do not use its surface appearance for a lowered inset panel around a stack; use SunkenPanel for that structure.
24
+ - Do not use it for bare text alone; use ListInsetText, which adds the same inset without claiming a surface.
25
+
26
+ **Alternatives:**
27
+
28
+ - [ListInsetText](./list-inset-text.md) (nearest) — Use ListInsetText when bare text only needs to align with neighboring content items.
29
+ - [SunkenPanel](./sunken-panel.md) (nearest) — Use SunkenPanel for a lowered, filled surface around a vertical stack.
30
+ - [Application layout](./layout.md) (composes-with) — Place ContentItem children in a Pane or .kui-content stack, which owns the 24px major rhythm.
31
+
32
+ ## Imports
33
+
34
+ - JavaScript: `@kerfjs/ui/content-item` — exports `ContentItem`.
35
+ - CSS: the browser build of `@kerfjs/ui/content-item` pulls its CSS automatically; import `@kerfjs/ui/content-item.css` manually only without the `browser` export condition.
36
+ - Declared side effects: browser-condition-css.
37
+
38
+ ## Props
39
+
40
+ Exact prop names and types: [`@kerfjs/ui/content-item`](../public-api-signatures-v1.md#kerfjsuicontent-item) in `public-api-signatures-v1.md`. Do not infer props from examples.
41
+
42
+ **Variants (configure, do not restyle):**
43
+
44
+ - unframed rounded item
45
+ - framed rounded item
46
+ - pill item
47
+ - framed pill item
48
+ - base surface item
49
+ - neutral, info, pop, success, warning, or danger semantic item
50
+ - named focus-target region
51
+ - multi-select rich grid row
52
+
53
+ ## Composition
54
+
55
+ - Parents: any.
56
+ - Contexts: `application-ui`.
57
+ - Children: unrestricted.
58
+
59
+ ## State and wiring
60
+
61
+ **The app owns:** the item content; whether the item marks a real distinction that warrants a visible frame; whether the item needs a surface or semantic appearance; corner shape; region semantics and accessible name; whether the item is a programmatic focus target; optional static-item Tab stop and persistent focus outline; the selection set and Shift/Cmd extension for multi-select rich cards.
62
+
63
+ No wiring helper.
64
+
65
+ ## Geometry
66
+
67
+ Margin: self · border: self · padding: self (layout role: structure). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
68
+
69
+ - The 1px border is always reserved; transparent items paint it only when frame="framed", while surface and semantic appearances coordinate its color with their background and foreground.
70
+
71
+ ## Accessibility
72
+
73
+ - An ordinary item adds no role or name; pass ariaLabel only when the item is a distinct named region (it then renders role="region").
74
+ - focusTarget makes the item a programmatic focus target (tabindex="-1", never a tab stop), such as a NavStack view's data-nav-focus target.
75
+ - The frame is decorative and never the only signal of state.
76
+ - selectionMode="multiple" renders a focusable row with aria-selected and a gridcell for nested controls; place it in a labeled List selectionMode="multiple" grid. wireContentItems moves focus among rows with Up/Down and Home/End while nested controls retain those keys. Guard the app's delegated card action with isContentItemActivation so a nested control does not select the row.
77
+
78
+ ## Styling boundary
79
+
80
+ The component owns its own styles. Configure it through its props and variants; do not override its internals.
81
+
82
+ Public class hooks (select for layout placement only, never to change the component's look): `kui-content-item`, `kui-content-item--pill`, `kui-content-item--framed`.
83
+
84
+ Classes an application may place on its own elements: `kui-content-item`, `kui-content-item--pill`, `kui-content-item--framed`.
85
+
86
+ A plain `<div>` carrying them is exactly what `ContentItem` renders: render `ContentItem` instead (`KUI-L103`), and place the classes only on another carrier element.
87
+
88
+ Public tokens it reads: `--kui-content-item-border`, `--kui-content-item-radius`, `--kui-content-item-background`. Set a token only where its public contract allows; prefer a prop.
89
+
90
+ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
91
+
92
+ ## Related
93
+
94
+ - Components: [ListInsetText](./list-inset-text.md), [SunkenPanel](./sunken-panel.md), [Application layout](./layout.md).
95
+ - Docs: [`docs/layout.md`](../../docs/layout.md), [`docs/layout.md#content-items`](../../docs/layout.md#content-items).
96
+ - UX catalog route: `?component=content-item`.
@@ -0,0 +1,77 @@
1
+ # DisclosureArrow
2
+
3
+ <!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
4
+
5
+ `@kerfjs/ui:disclosure-arrow` · Kerf UI · component · Foundation
6
+
7
+ Root-scaled 18px animated open and closed disclosure indicator with configurable directions, shortest-path rotation, and right-oriented replacement icon content.
8
+
9
+ ## When to use
10
+
11
+ Indicate whether a disclosure control is open with an overridable 18px root-scaled visual and shortest-path rotation behavior.
12
+
13
+ - Add a shortest-path rotating indicator to a control that owns open and closed state; author replacement icon content facing right before direction transforms are applied.
14
+
15
+ **Not when:**
16
+
17
+ - Do not use the arrow as the interactive control or accessible name by itself.
18
+
19
+ ## Imports
20
+
21
+ - JavaScript: `@kerfjs/ui/disclosure-arrow` — exports `DisclosureArrow`.
22
+ - CSS: the browser build of `@kerfjs/ui/disclosure-arrow` pulls its CSS automatically; import `@kerfjs/ui/disclosure-arrow.css` manually only without the `browser` export condition.
23
+ - Declared side effects: browser-condition-css.
24
+
25
+ ## Props
26
+
27
+ Exact prop names and types: [`@kerfjs/ui/disclosure-arrow`](../public-api-signatures-v1.md#kerfjsuidisclosure-arrow) in `public-api-signatures-v1.md`. Do not infer props from examples.
28
+
29
+ **Variants (configure, do not restyle):**
30
+
31
+ - open
32
+ - closed
33
+ - custom directions
34
+ - replacement icon
35
+
36
+ **CSS-value props** (typed builders from `@kerfjs/ui/css-values`; raw CSS strings are rejected):
37
+
38
+ - `size`: length grammar; raw values: forbid; helpers `px`, `rem`, `em`, `pct`, `space`, `lengthVar`, `calc` — e.g. `size={remify(24)}`
39
+
40
+ ## Composition
41
+
42
+ - Parents: any.
43
+ - Contexts: `application-ui`.
44
+ - Children: unrestricted.
45
+ - Built from: [LucideIcon](./lucide-icon.md).
46
+
47
+ ## State and wiring
48
+
49
+ **The app owns:** open state; interaction; accessible control label.
50
+
51
+ No wiring helper.
52
+
53
+ ## Geometry
54
+
55
+ Margin: none · border: none · padding: none (layout role: foundation). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
56
+
57
+ ## Accessibility
58
+
59
+ - The arrow is decorative; expose expanded state through aria-expanded on its owning control and keep that control's accessible name stable.
60
+
61
+ ## Styling boundary
62
+
63
+ The component owns its own styles. Configure it through its props and variants; do not override its internals.
64
+
65
+ Public class hooks (select for layout placement only, never to change the component's look): `kui-disclosure-arrow`.
66
+
67
+ Never put `kui-disclosure-arrow` on an element you write; render `DisclosureArrow` instead (`KUI-L103`).
68
+
69
+ Public tokens it reads: `--kui-disclosure-arrow-duration`, `--kui-disclosure-arrow-size`. Set a token only where its public contract allows; prefer a prop.
70
+
71
+ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
72
+
73
+ ## Related
74
+
75
+ - Components: [LucideIcon](./lucide-icon.md).
76
+ - Docs: [`docs/component-selection.md`](../../docs/component-selection.md), [`docs/component-selection.md#problem-to-component-matrix`](../../docs/component-selection.md#problem-to-component-matrix).
77
+ - UX catalog route: `?component=disclosure-arrow`.
@@ -0,0 +1,75 @@
1
+ # Document baseline
2
+
3
+ <!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
4
+
5
+ `@kerfjs/ui:document-baseline` · Kerf UI · CSS composition · Foundation
6
+
7
+ Opt-in document-level defaults: border-box sizing, body margin/font/surface, native table-cell and form-control font metrics, link color, and the html → body → .kui-app-root full-height chain.
8
+
9
+ ## When to use
10
+
11
+ Let an application opt into Kerf UI-owned document defaults and a definite full-height chain for a percentage-height application shell.
12
+
13
+ - An application wants Kerf UI to own document-level box sizing, body typography, native table-cell and form-control font metrics, surface, and link color.
14
+ - A full-height shell (Workbench, SplitView, NavStack, or TabNavigator) mounts into one direct container: put .kui-app-root on that container.
15
+
16
+ **Not when:**
17
+
18
+ - Do not put .kui-app-root on several sibling containers; each requests the full available document height.
19
+ - Do not import it where the host page already owns document-level defaults it would override.
20
+
21
+ **Alternatives:**
22
+
23
+ - [Foundation tokens](./foundation.md) (composes-with) — Import the foundation tokens the baseline reads; the baseline itself adds only global document selectors.
24
+
25
+ ## Imports
26
+
27
+ - CSS: import `@kerfjs/ui/document.css` once.
28
+ - Declared side effects: css.
29
+
30
+ ## Props
31
+
32
+ No props: this entry has no JavaScript API.
33
+
34
+ **Variants (configure, do not restyle):**
35
+
36
+ - document-flow page (no .kui-app-root)
37
+ - full-height application root
38
+
39
+ ## Composition
40
+
41
+ - Parents: any.
42
+ - Contexts: `application-ui`.
43
+ - Children: unrestricted.
44
+
45
+ ## State and wiring
46
+
47
+ **The app owns:** the one direct mount container; application overrides loaded after the baseline.
48
+
49
+ No wiring helper.
50
+
51
+ ## Geometry
52
+
53
+ Margin: none · border: none · padding: none (layout role: foundation). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
54
+
55
+ - The body margin is removed; .kui-app-root only sets height: 100% and owns no inset.
56
+
57
+ ## Accessibility
58
+
59
+ - Links keep the semantic link color at zero specificity so application focus and link styles still apply.
60
+
61
+ ## Styling boundary
62
+
63
+ The component owns its own styles. Configure it through its props and variants; do not override its internals.
64
+
65
+ Public class hooks (select for layout placement only, never to change the component's look): `kui-app-root`.
66
+
67
+ Classes an application may place on its own elements: `kui-app-root`.
68
+
69
+ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
70
+
71
+ ## Related
72
+
73
+ - Components: [Foundation tokens](./foundation.md).
74
+ - Docs: [`docs/document-baseline.md`](../../docs/document-baseline.md).
75
+ - UX catalog route: `?component=document-baseline`.
@@ -0,0 +1,80 @@
1
+ # EmptyState
2
+
3
+ <!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
4
+
5
+ `@kerfjs/ui:empty-state` · Kerf UI · component · Feedback
6
+
7
+ ## When to use
8
+
9
+ Actionable empty and busy content states.
10
+
11
+ - Explain absent or busy content and offer an optional recovery action.
12
+
13
+ **Not when:**
14
+
15
+ - Do not use for an inline update or transient success.
16
+
17
+ **Alternatives:**
18
+
19
+ - [StateBanner](./state-banner.md) (nearest)
20
+ - [Toast](./wa-toast.md) (prefer-over)
21
+
22
+ ## Imports
23
+
24
+ - JavaScript: `@kerfjs/ui/empty-state` — exports `EmptyState`.
25
+ - CSS: the browser build of `@kerfjs/ui/empty-state` pulls its CSS automatically; import `@kerfjs/ui/empty-state.css` manually only without the `browser` export condition.
26
+ - Declared side effects: browser-condition-css.
27
+
28
+ ## Props
29
+
30
+ Exact prop names and types: [`@kerfjs/ui/empty-state`](../public-api-signatures-v1.md#kerfjsuiempty-state) in `public-api-signatures-v1.md`. Do not infer props from examples.
31
+
32
+ **Variants (configure, do not restyle):**
33
+
34
+ - actionable
35
+ - busy
36
+ - illustrated
37
+
38
+ ## Composition
39
+
40
+ - Parents: any.
41
+ - Contexts: `empty-content`, `busy-content`.
42
+ - Children: unrestricted.
43
+ - Built from: [LucideIcon](./lucide-icon.md), [LoadingSpinner](./loading-spinner.md).
44
+
45
+ Zones (a zone is bound to JSX only through its listed prop; never assume the zone id is a prop):
46
+
47
+ - `icon` — JSX prop `icon`; accepts `dormant-decoration`; 0–1.
48
+ - `action` — JSX prop `action`; accepts `control`; 0–1.
49
+
50
+ ## State and wiring
51
+
52
+ **The app owns:** empty/busy policy; recovery action; copy.
53
+
54
+ No wiring helper.
55
+
56
+ ## Geometry
57
+
58
+ Margin: self · border: self · padding: self (layout role: feedback). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
59
+
60
+ ## Accessibility
61
+
62
+ - Busy state uses aria-busy; the illustration never supplies the only label.
63
+
64
+ ## Styling boundary
65
+
66
+ The component owns its own styles. Configure it through its props and variants; do not override its internals.
67
+
68
+ Public class hooks (select for layout placement only, never to change the component's look): `kui-empty-state`, `kui-empty-state__action`, `kui-empty-state__icon`.
69
+
70
+ Never put `kui-empty-state`, `kui-empty-state__action`, `kui-empty-state__icon` on an element you write; render `EmptyState` instead (`KUI-L103`).
71
+
72
+ Public tokens it reads: `--kui-color-neutral-on-quiet`, `--kui-color-text`, `--kui-empty-state-foreground`, `--kui-empty-state-title`, `--kui-font-l`, `--kui-font-s`, `--kui-space-xl`, `--kui-space-xs`. Set a token only where its public contract allows; prefer a prop.
73
+
74
+ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
75
+
76
+ ## Related
77
+
78
+ - Components: [LucideIcon](./lucide-icon.md), [LoadingSpinner](./loading-spinner.md), [StateBanner](./state-banner.md), [Toast](./wa-toast.md).
79
+ - Docs: [`docs/component-selection.md`](../../docs/component-selection.md), [`docs/component-selection.md#ambiguous-choices`](../../docs/component-selection.md#ambiguous-choices).
80
+ - UX catalog route: `?component=empty-state`.
@@ -0,0 +1,71 @@
1
+ # Feedback
2
+
3
+ <!-- Generated by scripts/sync-component-docs.mjs from ai/component-catalog.json and ai/component-composition.json. Do not edit; run `npm run catalog:sync`. -->
4
+
5
+ `@kerfjs/ui:feedback` · Kerf UI · CSS composition · Feedback
6
+
7
+ ## When to use
8
+
9
+ Banners, empty states, and labeled progress.
10
+
11
+ - Compose persistent status, empty/busy content, and compact loading feedback.
12
+
13
+ **Not when:**
14
+
15
+ - Do not collapse different message lifetimes or urgency into one visual treatment.
16
+
17
+ **Alternatives:**
18
+
19
+ - [StateBanner](./state-banner.md) (nearest)
20
+ - [EmptyState](./empty-state.md) (nearest)
21
+ - [Callout](./wa-callout.md) (prefer-over)
22
+ - [Toast](./wa-toast.md) (prefer-over)
23
+
24
+ ## Imports
25
+
26
+ - Nothing to import: this is a reference composition.
27
+ - Declared side effects: css.
28
+
29
+ ## Props
30
+
31
+ No props: this entry has no JavaScript API.
32
+
33
+ **Variants (configure, do not restyle):**
34
+
35
+ - banner
36
+ - empty
37
+ - busy
38
+ - spinner
39
+
40
+ ## Composition
41
+
42
+ - Parents: any.
43
+ - Contexts: `application-ui`.
44
+ - Children: unrestricted.
45
+ - Built from: [StateBanner](./state-banner.md), [EmptyState](./empty-state.md), [LoadingSpinner](./loading-spinner.md).
46
+
47
+ ## State and wiring
48
+
49
+ **The app owns:** state mapping; message lifetime; recovery policy.
50
+
51
+ No wiring helper.
52
+
53
+ ## Geometry
54
+
55
+ Margin: child · border: child · padding: child (layout role: feedback). `self` means the component already owns it — do not add wrapper padding, margin, or borders around it.
56
+
57
+ ## Accessibility
58
+
59
+ - Choose polite status versus assertive alert deliberately.
60
+
61
+ ## Styling boundary
62
+
63
+ The component owns its own styles. Configure it through its props and variants; do not override its internals.
64
+
65
+ Everything else is internal: `kerf-ui-analyze` reports private or unknown `.kui-*` selectors (`KUI-L001`, `KUI-L010`), unknown or private tokens (`KUI-L002`, `KUI-L012`), and any application rule that restyles the component, forced dimensions included (`KUI-L019`).
66
+
67
+ ## Related
68
+
69
+ - Components: [StateBanner](./state-banner.md), [EmptyState](./empty-state.md), [LoadingSpinner](./loading-spinner.md), [Callout](./wa-callout.md), [Toast](./wa-toast.md).
70
+ - Docs: [`docs/component-selection.md`](../../docs/component-selection.md), [`docs/component-selection.md#ambiguous-choices`](../../docs/component-selection.md#ambiguous-choices).
71
+ - UX catalog route: `?component=feedback`.