@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,154 @@
1
+ import { SafeHtml, Signal } from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
+
4
+ interface TokenSearchToken {
5
+ value: string;
6
+ label: string;
7
+ offset?: number;
8
+ accessibleLabel?: string;
9
+ }
10
+ interface TokenSearchTrailingAction {
11
+ icon: SafeHtml;
12
+ label: string;
13
+ action: string;
14
+ id?: string;
15
+ }
16
+ type TokenSearchEditorAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
17
+ 'data-component'?: never;
18
+ 'data-key'?: never;
19
+ 'data-morph-skip'?: never;
20
+ 'data-token-search-editor'?: never;
21
+ 'data-token-count'?: never;
22
+ 'data-placeholder'?: never;
23
+ }>;
24
+ interface TokenSearchFieldBaseProps {
25
+ id: string;
26
+ label: string;
27
+ query?: string;
28
+ tokens?: readonly TokenSearchToken[];
29
+ /** Opt-in grammar, suggestion, and evaluation state. Overrides `query` and `tokens`. */
30
+ model?: TokenSearchModel;
31
+ /**
32
+ * Editor identity for a programmatic text replacement. The editor's text is
33
+ * DOM-owned between token changes, so a new `query` with the same tokens
34
+ * does not re-render it (that would reset the caret on every keystroke).
35
+ * Change `revision` when the app replaces the text itself — reseeding a
36
+ * persistent dialog's field on reopen, applying a saved search — and the
37
+ * editor is rebuilt from `query` and `tokens`.
38
+ */
39
+ revision?: string | number;
40
+ placeholder?: string;
41
+ tokenPlaceholder?: string;
42
+ disabled?: boolean;
43
+ autofocus?: boolean;
44
+ /** Let an expanded collapsible field consume the available inline width. */
45
+ fill?: boolean;
46
+ leading?: KerfUiContent;
47
+ editAction?: string;
48
+ removeAction?: string;
49
+ clearAction?: string;
50
+ clearLabel?: string;
51
+ /** Icon for the clear button. Default: the Lucide `x` glyph token chips also use. */
52
+ clearIcon?: SafeHtml;
53
+ className?: string;
54
+ editorAttributes?: TokenSearchEditorAttributes;
55
+ /** Native named-slot assignment when composed inside a web component. */
56
+ slot?: string;
57
+ }
58
+ type TokenSearchTrailingProps = {
59
+ trailing?: KerfUiContent;
60
+ trailingAction?: never;
61
+ } | {
62
+ trailing?: never;
63
+ trailingAction: TokenSearchTrailingAction;
64
+ };
65
+ type TokenSearchPresentationProps = {
66
+ /** Standalone field chrome or the inset visual layer of a configured toolbar group. */
67
+ presentation?: 'standalone' | 'toolbar-group';
68
+ hint?: never;
69
+ required?: never;
70
+ } | {
71
+ /** Visible form label and optional hint around the full-width standalone control. */
72
+ presentation: 'form-field';
73
+ hint?: string;
74
+ /** Marks the editor required; the app validates its value. */
75
+ required?: boolean;
76
+ };
77
+ type TokenSearchCollapsibleProps = {
78
+ /** Allow an empty field to render as one iconic action. */
79
+ collapsible: true;
80
+ /** Keep an empty collapsible field open while the application owns focus. */
81
+ expanded?: boolean;
82
+ expandAction?: string;
83
+ expandLabel?: string;
84
+ } | {
85
+ collapsible?: false;
86
+ expanded?: never;
87
+ expandAction?: never;
88
+ expandLabel?: never;
89
+ };
90
+ type TokenSearchFieldProps = TokenSearchFieldBaseProps & TokenSearchCollapsibleProps & TokenSearchTrailingProps & TokenSearchPresentationProps;
91
+ interface TokenSearchFieldValue {
92
+ query: string;
93
+ tokens: TokenSearchToken[];
94
+ }
95
+ declare function TokenSearchField({ id, label, query, tokens, model, revision, placeholder, tokenPlaceholder, disabled, autofocus, fill, collapsible, expanded, expandAction, expandLabel, leading, trailing, trailingAction, presentation, hint, required, editAction, removeAction, clearAction, clearLabel, clearIcon, className, editorAttributes, slot, }: TokenSearchFieldProps): SafeHtml;
96
+ /** Read editable text and ordered token offsets from a rendered TokenSearchField editor. */
97
+ declare function readTokenSearchField(editor: HTMLElement, knownTokens?: readonly TokenSearchToken[]): TokenSearchFieldValue;
98
+ /** Focus an editor and place its caret at a text offset, skipping atomic token chips. */
99
+ declare function placeTokenSearchCaret(editor: HTMLElement, offset?: number): void;
100
+
101
+ interface TokenSearchRule {
102
+ /** The word before `:` (for example `tag` or `status`). */
103
+ name: string;
104
+ /** Return a canonical value, or undefined to leave invalid input as text. */
105
+ parse?: (input: string) => string | undefined;
106
+ /** Label for a committed chip. Defaults to `name:input`. */
107
+ label?: (value: string, input: string) => string;
108
+ /** Suggestions for the unfinished value after `name:`, with current committed tokens. */
109
+ suggest?: (input: string, state: TokenSearchState) => readonly (string | {
110
+ value: string;
111
+ label: string;
112
+ })[];
113
+ }
114
+ interface TokenSearchResolvedToken extends TokenSearchToken {
115
+ kind: string;
116
+ parsedValue: string;
117
+ }
118
+ interface TokenSearchState {
119
+ query: string;
120
+ tokens: TokenSearchResolvedToken[];
121
+ }
122
+ interface TokenSearchSuggestion {
123
+ value: string;
124
+ label: string;
125
+ }
126
+ interface TokenSearchModel<Result = unknown> {
127
+ state: Signal<TokenSearchState>;
128
+ /** Changes when a model action must replace DOM-owned editor text. */
129
+ editorRevision: Signal<number>;
130
+ suggestions: Signal<readonly TokenSearchSuggestion[]>;
131
+ result: Signal<Result | undefined>;
132
+ edit(value: TokenSearchFieldValue, commit?: boolean): void;
133
+ /** Replace app-owned search state and rebuild the DOM-owned editor text. */
134
+ replace(value: TokenSearchFieldValue): void;
135
+ submit(value: TokenSearchFieldValue): void;
136
+ choose(value: string): void;
137
+ /** Commit a value for the active `name:` prefix, even when it is not suggested. */
138
+ commit(value: string): void;
139
+ expandToken(value: string): void;
140
+ remove(value: string): void;
141
+ clear(): void;
142
+ dismiss(): void;
143
+ }
144
+ interface TokenSearchModelOptions<Result> {
145
+ rules?: readonly TokenSearchRule[];
146
+ initial?: TokenSearchFieldValue;
147
+ /** Runs after every state change, including initial state. */
148
+ evaluate?: (state: TokenSearchState) => Result;
149
+ onSubmit?: (state: TokenSearchState, result: Result | undefined) => void;
150
+ }
151
+ /** Opt-in state, token parsing, suggestions, and evaluation for TokenSearchField. */
152
+ declare function createTokenSearchModel<Result = unknown>({ rules, initial, evaluate, onSubmit, }?: TokenSearchModelOptions<Result>): TokenSearchModel<Result>;
153
+
154
+ export { type TokenSearchEditorAttributes as T, TokenSearchField as a, type TokenSearchFieldProps as b, type TokenSearchFieldValue as c, type TokenSearchModel as d, type TokenSearchModelOptions as e, type TokenSearchResolvedToken as f, type TokenSearchRule as g, type TokenSearchState as h, type TokenSearchSuggestion as i, type TokenSearchToken as j, type TokenSearchTrailingAction as k, createTokenSearchModel as l, placeTokenSearchCaret as p, readTokenSearchField as r };
@@ -0,0 +1,3 @@
1
+ export { d as TokenSearchModel, e as TokenSearchModelOptions, f as TokenSearchResolvedToken, g as TokenSearchRule, h as TokenSearchState, i as TokenSearchSuggestion, l as createTokenSearchModel } from './token-search-model-DTcTXWMS.js';
2
+ import 'kerfjs';
3
+ import './semantic-content-BbzjvSu9.js';
@@ -0,0 +1,3 @@
1
+ export { createTokenSearchModel } from './chunk-IM3GKYOG.js';
2
+
3
+ //# sourceMappingURL=token-search-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"token-search-model.js"}
@@ -1,15 +1,97 @@
1
- import { SafeHtml } from 'kerfjs';
1
+ import * as kerfjs from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
+ import { CssLength } from './css-values.js';
2
4
 
5
+ type ToolbarControlGroupAppearance = 'contained' | 'borderless';
6
+ type ToolbarControlGroupTone = 'default' | 'dark';
7
+ /** Quiet palette for a contained, single decorative icon tile. */
8
+ type ToolbarControlGroupTileTone = 'neutral' | 'brand' | 'success' | 'warning' | 'danger';
9
+ type ToolbarControlGroupButtonAppearance = 'plain' | 'push';
10
+ type ToolbarControlGroupShape = 'pill' | 'rounded';
11
+ type ToolbarControlGroupSize = 'default' | 'compact';
12
+ type ToolbarControlGroupDensity = 'comfortable' | 'tight';
13
+ type ToolbarControlGroupContent = 'icon' | 'text' | 'mixed' | 'avatar' | 'search';
14
+ type ToolbarControlGroupFocusRing = 'control' | 'outline' | 'halo';
15
+ type ToolbarControlGroupSelectedChrome = 'raised' | 'filled' | 'outline';
16
+ type ToolbarControlGroupSelectedTone = 'brand' | 'neutral' | 'pop';
17
+ type ToolbarControlGroupOverflow = 'visible' | 'scroll' | 'wrap';
18
+ type ToolbarControlGroupExpandedOverflow = 'clip' | 'visible';
19
+ type ToolbarControlGroupMenuInset = 'standard' | 'compact' | 'list-zero';
20
+ type ToolbarControlGroupVisibility = 'always' | 'compact-only' | 'hide-collapsed-tiny' | 'yield-to-expanded-sibling';
21
+ type ToolbarControlGroupSizing = 'content' | 'grow' | 'fill';
22
+ type ToolbarControlGroupPlacement = 'start' | 'end';
23
+ interface ToolbarActionLinkProps {
24
+ href: string;
25
+ label: string;
26
+ icon?: KerfUiContent;
27
+ /** Optional machine-readable detail hidden visually but included in the default accessible name. */
28
+ detail?: string;
29
+ /** Override the accessible name when surrounding context is needed. */
30
+ ariaLabel?: string;
31
+ /** Open in a new tab with a safe rel and announce that behavior. */
32
+ external?: boolean;
33
+ className?: string;
34
+ /** Native named-slot assignment when composed inside a web component. */
35
+ slot?: string;
36
+ }
37
+ /** A semantic anchor with ToolbarControlGroup-owned action geometry. */
38
+ declare function ToolbarActionLink({ href, label, icon, detail, ariaLabel, external, className, slot, }: ToolbarActionLinkProps): kerfjs.SafeHtml;
3
39
  interface ToolbarControlGroupProps {
4
- children: SafeHtml | SafeHtml[];
40
+ children: KerfUiContent;
5
41
  label?: string;
6
42
  className?: string;
7
43
  expanded?: boolean;
8
44
  single?: boolean;
9
- appearance?: 'contained' | 'borderless';
10
- tone?: 'default' | 'dark';
11
- buttonAppearance?: 'plain' | 'push';
45
+ appearance?: ToolbarControlGroupAppearance;
46
+ tone?: ToolbarControlGroupTone;
47
+ /** Quiet fill, matching border and foreground for a contained single group whose only child is a decorative SVG. Ignored for interactive or mixed content. */
48
+ tileTone?: ToolbarControlGroupTileTone;
49
+ buttonAppearance?: ToolbarControlGroupButtonAppearance;
50
+ /** Corner shape: fully round `pill` (default) or a softer `rounded` rectangle. */
51
+ shape?: ToolbarControlGroupShape;
52
+ size?: ToolbarControlGroupSize;
53
+ density?: ToolbarControlGroupDensity;
54
+ content?: ToolbarControlGroupContent;
55
+ /** Whether controls paint focus individually or the group paints an outline/halo on focus-within. */
56
+ focusRing?: ToolbarControlGroupFocusRing;
57
+ selectedChrome?: ToolbarControlGroupSelectedChrome;
58
+ selectedTone?: ToolbarControlGroupSelectedTone;
59
+ /** Size a nested Web Awesome dropdown trigger as part of this group. */
60
+ nestedDropdown?: boolean;
61
+ /** Configure the nested dropdown menu inset without consumer ::part() CSS. */
62
+ menuInset?: ToolbarControlGroupMenuInset;
63
+ /** Keep an overlong row inside the available width by scrolling or wrapping. */
64
+ overflow?: ToolbarControlGroupOverflow;
65
+ /** Let app-owned anchored surfaces extend outside an expanded search group. Collapsed searches retain their clipping. */
66
+ expandedOverflow?: ToolbarControlGroupExpandedOverflow;
67
+ /** Responsive visibility owned by the enclosing Toolbar container. */
68
+ visibility?: ToolbarControlGroupVisibility;
69
+ /** Hide below this Toolbar content width; requires wireToolbarVisibility. */
70
+ hideBelow?: CssLength;
71
+ /** Show only below this Toolbar content width; requires wireToolbarVisibility. */
72
+ showBelow?: CssLength;
73
+ /** Intrinsic (default), grow from a basis, or occupy a full wrapping row. */
74
+ sizing?: ToolbarControlGroupSizing;
75
+ /** Place this group at the end of its flex row in a wrapping Toolbar zone. */
76
+ placement?: ToolbarControlGroupPlacement;
77
+ /** CSS length used as the minimum width and flex basis for `sizing="grow"`; defaults to 19rem. */
78
+ growBasis?: string;
79
+ /** Move this group into the work-area toolbar when its panel collapses. */
80
+ relocateOnCollapse?: boolean;
81
+ /** Add contrast behind photo-backed avatar content. */
82
+ scrim?: boolean;
83
+ /** Block the group's controls and show a spinner without changing its dimensions. */
84
+ busy?: boolean;
85
+ /** Announced status while busy; defaults to “Working”. */
86
+ busyLabel?: string;
87
+ /**
88
+ * Avatar image URL. A single-control group paints it on the group; a
89
+ * multi-control group paints it only on the pressed selection highlight.
90
+ */
91
+ avatarImage?: string;
92
+ /** Native named-slot assignment when composed inside a web component. */
93
+ slot?: string;
12
94
  }
13
- declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, buttonAppearance }: ToolbarControlGroupProps): SafeHtml;
95
+ declare function ToolbarControlGroup({ children, label, className, expanded, single, appearance, tone, tileTone, buttonAppearance, shape, size, density, content, focusRing, selectedChrome, selectedTone, nestedDropdown, menuInset, overflow, expandedOverflow, visibility, hideBelow, showBelow, sizing, placement, growBasis, relocateOnCollapse, scrim, busy, busyLabel, avatarImage, slot, }: ToolbarControlGroupProps): kerfjs.SafeHtml;
14
96
 
15
- export { ToolbarControlGroup, type ToolbarControlGroupProps };
97
+ export { ToolbarActionLink, type ToolbarActionLinkProps, ToolbarControlGroup, type ToolbarControlGroupAppearance, type ToolbarControlGroupButtonAppearance, type ToolbarControlGroupContent, type ToolbarControlGroupDensity, type ToolbarControlGroupExpandedOverflow, type ToolbarControlGroupFocusRing, type ToolbarControlGroupMenuInset, type ToolbarControlGroupOverflow, type ToolbarControlGroupPlacement, type ToolbarControlGroupProps, type ToolbarControlGroupSelectedChrome, type ToolbarControlGroupSelectedTone, type ToolbarControlGroupShape, type ToolbarControlGroupSize, type ToolbarControlGroupSizing, type ToolbarControlGroupTileTone, type ToolbarControlGroupTone, type ToolbarControlGroupVisibility };
@@ -1,3 +1,5 @@
1
- export { ToolbarControlGroup } from './chunk-MFKMHK5W.js';
1
+ export { ToolbarActionLink, ToolbarControlGroup } from './chunk-RRCD3A6G.js';
2
+
3
+
2
4
 
3
5
  //# sourceMappingURL=toolbar-control-group.js.map
@@ -1,23 +1,59 @@
1
1
  import * as kerfjs from 'kerfjs';
2
+ import { CssLength } from './css-values.js';
2
3
 
3
- type ToolbarTextSize = 'xlarge' | 'large' | 'default' | 'small';
4
+ type ToolbarTextSize = 'xlarge' | 'xlarge-fixed' | 'large' | 'default' | 'small' | 'xsmall';
5
+ type ToolbarTextTone = 'default' | 'dark';
4
6
  /** ARIA heading level for a title exposed as a heading landmark. */
5
7
  type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6;
6
- interface ToolbarTextProps {
8
+ interface ToolbarTextBaseProps {
7
9
  text: string;
8
10
  size?: ToolbarTextSize;
11
+ /** Use dark-toolbar foregrounds on a dark or photo-backed toolbar. */
12
+ tone?: ToolbarTextTone;
13
+ /** Hide below this Toolbar content width; requires wireToolbarVisibility. */
14
+ hideBelow?: CssLength;
15
+ /** Show only below this Toolbar content width; requires wireToolbarVisibility. */
16
+ showBelow?: CssLength;
9
17
  className?: string;
10
18
  /** Optional id, e.g. so a dialog can reference the title via aria-labelledby. */
11
19
  id?: string;
12
20
  /**
13
- * Expose heading semantics (`role="heading"` + `aria-level`) so the text acts as
14
- * a heading landmark — e.g. a page's primary title. Omit to keep the plain span
15
- * (the default), which suits a dialog title referenced via `aria-labelledby`.
21
+ * Show a trailing ellipsis (…) where the text is truncated — on the single line
22
+ * (default), or at the `maxLines` boundary when wrapping. Set false to hard-clip
23
+ * instead. Default true.
16
24
  */
25
+ ellipsis?: boolean;
26
+ /**
27
+ * Grow to fill the free space of the flex row it sits in (a Toolbar zone),
28
+ * truncating at the space left by its siblings instead of taking only its
29
+ * text's width. Default false.
30
+ */
31
+ fill?: boolean;
32
+ /** Native named-slot assignment when composed inside a web component. */
33
+ slot?: string;
34
+ }
35
+ type ToolbarTextWrappingProps = {
36
+ /** Wrap onto multiple lines; combine with `maxLines` to cap them. */
37
+ wrap: true;
38
+ maxLines?: number | null;
39
+ } | {
40
+ wrap?: false;
41
+ maxLines?: never;
42
+ };
43
+ type ToolbarTextProps = ToolbarTextBaseProps & (({
44
+ action?: never;
45
+ /** Expose `role="heading"` and `aria-level` on read-only text. */
17
46
  headingLevel?: HeadingLevel;
18
- /** Render the text as an unanimated loading skeleton instead of its value. */
47
+ /** Render an unanimated loading skeleton instead of the text. */
19
48
  placeholder?: boolean;
20
- }
21
- declare function ToolbarText({ text, size, className, id, headingLevel, placeholder }: ToolbarTextProps): kerfjs.SafeHtml;
49
+ } & ToolbarTextWrappingProps) | {
50
+ /** Render a native button with this delegated action; the app owns editing. */
51
+ action: string;
52
+ headingLevel?: never;
53
+ placeholder?: never;
54
+ wrap?: never;
55
+ maxLines?: never;
56
+ });
57
+ declare function ToolbarText({ text, size, tone, hideBelow, showBelow, className, id, headingLevel, placeholder, wrap, ellipsis, maxLines, fill, slot, action, }: ToolbarTextProps): kerfjs.SafeHtml;
22
58
 
23
- export { type HeadingLevel, ToolbarText, type ToolbarTextProps, type ToolbarTextSize };
59
+ export { type HeadingLevel, ToolbarText, type ToolbarTextProps, type ToolbarTextSize, type ToolbarTextTone };
@@ -1,4 +1,5 @@
1
- export { ToolbarText } from './chunk-RUNWEPR4.js';
1
+ export { ToolbarText } from './chunk-VHXHLZ6R.js';
2
+
2
3
 
3
4
 
4
5
  //# sourceMappingURL=toolbar-text.js.map
package/dist/toolbar.d.ts CHANGED
@@ -1,13 +1,65 @@
1
- import { SafeHtml } from 'kerfjs';
1
+ import * as kerfjs from 'kerfjs';
2
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
+ import { S as Sides } from './sides-BPSWde0A.js';
4
+ import { PaneSeparatorSide } from './pane.js';
2
5
 
6
+ type ToolbarPosition = 'header' | 'footer';
3
7
  interface ToolbarProps {
4
- leading?: SafeHtml;
5
- center?: SafeHtml;
6
- trailing?: SafeHtml;
8
+ leading?: KerfUiContent;
9
+ center?: KerfUiContent;
10
+ trailing?: KerfUiContent;
7
11
  label?: string;
8
- divider?: boolean;
12
+ /** Use footer semantics for a bottom toolbar; defaults to header. */
13
+ position?: ToolbarPosition;
14
+ /**
15
+ * Physical divider edges in canonical top/right/bottom/left order, drawn
16
+ * always. Defaults to none: a toolbar pinned over or under scrolling content
17
+ * gets its divider from the scroll state instead — a `Pane` draws the line
18
+ * between its chrome and content while content is scrolled away beneath it,
19
+ * and `wireScrollDividers` `targets` can name a toolbar as chrome, which
20
+ * then draws its facing side the same way.
21
+ */
22
+ dividerSides?: Sides;
23
+ /** `balanced` gives both side zones equal tracks, centering the middle zone on the toolbar even if only one side has controls. */
24
+ centerAlign?: 'center' | 'stretch' | 'balanced';
25
+ /**
26
+ * Component-owned responsive layout; applications choose the policy rather
27
+ * than restyling toolbar internals. Under every policy the trailing zone
28
+ * wraps its groups instead of clipping an action, and the center zone keeps
29
+ * its whole content width: when the zones do not fit one row, the leading
30
+ * title truncates with an ellipsis rather than the center overlapping it.
31
+ * - `none` keeps one row; the leading identity truncates first.
32
+ * - `stack` stacks the zones at `responsiveAt`, wrapping stacked control
33
+ * groups onto further rows.
34
+ * - `wrap` keeps one row while every zone fits at its natural width, and
35
+ * otherwise moves the trailing zone below a whole leading identity.
36
+ * - `center-priority` gives an expanded center control the full row.
37
+ * - `trailing-priority` moves an expanded trailing control to a full row
38
+ * below the leading identity at `responsiveAt`.
39
+ */
40
+ responsive?: 'none' | 'stack' | 'wrap' | 'center-priority' | 'trailing-priority';
41
+ /** Container width at which `stack` or `trailing-priority` activates. */
42
+ responsiveAt?: 'compact' | 'narrow';
43
+ /**
44
+ * Screen edges this toolbar claims for device safe-area compensation, for an
45
+ * app bar or bottom bar that sits directly at a screen edge rather than in a
46
+ * Pane header or footer. Each listed side pads by the inset its surrounding
47
+ * layout reports through `--kui-edge-inset-*`, or the full device inset when
48
+ * nothing routes that edge, while the toolbar's box and dividers paint
49
+ * through. Omitted, the toolbar pads only the inline edges an owner such as
50
+ * a Pane header hands it, and never a block edge.
51
+ */
52
+ safeAreaEdges?: readonly PaneSeparatorSide[];
9
53
  className?: string;
54
+ /** Native named-slot assignment when composed inside a web component. */
55
+ slot?: string;
10
56
  }
11
- declare function Toolbar({ leading, center, trailing, label, divider, className }: ToolbarProps): SafeHtml;
57
+ /**
58
+ * A toolbar's configuration, apart from its content: the props a composite
59
+ * that renders a `Toolbar` for the app (a Workbench or CollapsiblePanel
60
+ * toolbar) forwards, so the app configures that toolbar instead of styling it.
61
+ */
62
+ type ToolbarConfig = Pick<ToolbarProps, 'dividerSides' | 'centerAlign' | 'responsive' | 'responsiveAt' | 'safeAreaEdges'>;
63
+ declare function Toolbar({ leading, center, trailing, label, position, dividerSides, centerAlign, responsive, responsiveAt, safeAreaEdges, className, slot, }: ToolbarProps): kerfjs.SafeHtml;
12
64
 
13
- export { Toolbar, type ToolbarProps };
65
+ export { Sides, Toolbar, type ToolbarConfig, type ToolbarPosition, type ToolbarProps };
package/dist/toolbar.js CHANGED
@@ -1,3 +1,3 @@
1
- export { Toolbar } from './chunk-DAFFDO33.js';
1
+ export { Toolbar } from './chunk-BYHGRKC3.js';
2
2
 
3
3
  //# sourceMappingURL=toolbar.js.map
@@ -0,0 +1,117 @@
1
+ import { ToolbarConfig } from './toolbar.js';
2
+ import { WorkbenchPanel } from './workbench.js';
3
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
4
+
5
+ /** A reference link shown in the detail footer for the active entry. */
6
+ interface CatalogResource {
7
+ label: string;
8
+ href: string;
9
+ /** Optional machine-readable detail (e.g. a file path) carried by the action link. */
10
+ detail?: string;
11
+ }
12
+ /** A related entry offered in the detail footer's "Related entries" popup menu. */
13
+ interface CatalogRelated {
14
+ id: string;
15
+ name: string;
16
+ /** Group heading in the menu, e.g. "Uses" / "Used by". */
17
+ group: string;
18
+ }
19
+ interface CatalogEntry {
20
+ id: string;
21
+ name: string;
22
+ description?: string;
23
+ /** Short metadata tags shown at the trailing edge of the sidebar row. */
24
+ tags?: readonly string[];
25
+ resources?: readonly CatalogResource[];
26
+ related?: readonly CatalogRelated[];
27
+ }
28
+ interface CatalogSection {
29
+ category: string;
30
+ entries: readonly CatalogEntry[];
31
+ }
32
+ /** A quieter, optionally collapsible group of catalog sections. */
33
+ interface CatalogSecondaryGroup {
34
+ label: string;
35
+ sections: readonly CatalogSection[];
36
+ collapsible?: boolean;
37
+ expanded?: boolean;
38
+ }
39
+ interface CatalogBrand {
40
+ title: string;
41
+ subtitle?: string;
42
+ /** Logo image URL (rendered decorative). Omit for a text-only brand. */
43
+ logoUrl?: string;
44
+ }
45
+ type CatalogStageRootAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
46
+ 'data-catalog-stage'?: never;
47
+ }>;
48
+ /**
49
+ * The Catalog sidebar's configuration, forwarded to its Workbench left rail.
50
+ * Everything is optional; omitted fields keep the Catalog's defaults.
51
+ */
52
+ interface CatalogSidebarConfig extends Pick<WorkbenchPanel, 'resizable' | 'separator' | 'collapseMotion' | 'presentation' | 'responsiveOverlayAt' | 'compactOverlay'> {
53
+ /**
54
+ * Sidebar width in px (default 288). With `resizable`, it is the current
55
+ * width: render the app's size signal here and hand the same signal to
56
+ * `wireCatalog`'s `sidebarSize`, which writes each committed resize to it.
57
+ */
58
+ size?: number;
59
+ /** The sidebar header toolbar's configuration (default: no divider; its pane draws one while scrolled). */
60
+ toolbar?: ToolbarConfig;
61
+ }
62
+ interface CatalogProps {
63
+ /**
64
+ * The catalog's `id` (default `kui-catalog`). Its Workbench derives the
65
+ * sidebar's id from it (`<id>-left-rail`), which `wireCatalog` wires.
66
+ */
67
+ id?: string;
68
+ brand: CatalogBrand;
69
+ sections: readonly CatalogSection[];
70
+ active: string;
71
+ content: KerfUiContent;
72
+ collapsed?: boolean;
73
+ theme?: 'light' | 'dark';
74
+ headerActions?: KerfUiContent;
75
+ secondarySections?: CatalogSecondaryGroup;
76
+ sidebarFooter?: KerfUiContent;
77
+ status?: KerfUiContent;
78
+ geometryOverlay?: boolean;
79
+ /** Consumer-owned data attributes applied to the preview stage. */
80
+ stageRootAttributes?: CatalogStageRootAttributes;
81
+ selectAction?: string;
82
+ toggleSidebarAction?: string;
83
+ toggleThemeAction?: string;
84
+ toggleSecondaryAction?: string;
85
+ /**
86
+ * Whether the entry toolbar and description stay pinned above the preview
87
+ * (`fixed`), scroll away with it (`scroll`), or stay pinned while the entry
88
+ * pane is tall enough and scroll with the preview when it is short (`auto`,
89
+ * default), so a short window or large text never squeezes the preview out.
90
+ */
91
+ headerPlacement?: 'fixed' | 'scroll' | 'auto';
92
+ /**
93
+ * The same for the status and resource footer (default `auto`).
94
+ */
95
+ footerPlacement?: 'fixed' | 'scroll' | 'auto';
96
+ /**
97
+ * The sidebar's size, resizing, and overlay configuration, forwarded to the
98
+ * Workbench left rail (default: 288px, not resizable, an overlay below the
99
+ * Workbench's `narrow` breakpoint, `inset` in a compact Workbench).
100
+ */
101
+ sidebar?: CatalogSidebarConfig;
102
+ /**
103
+ * The entry toolbar's configuration (default `responsive: 'wrap'`: the entry
104
+ * title stays whole and the actions wrap below it when narrow).
105
+ */
106
+ mainToolbar?: ToolbarConfig;
107
+ /**
108
+ * The resource footer toolbar's configuration (default no divider,
109
+ * `responsive: 'stack'` at `responsiveAt: 'narrow'`).
110
+ */
111
+ footerToolbar?: ToolbarConfig;
112
+ className?: string;
113
+ /** Native named-slot assignment when composed inside a web component. */
114
+ slot?: string;
115
+ }
116
+
117
+ export type { CatalogResource as C, CatalogProps as a, CatalogBrand as b, CatalogEntry as c, CatalogRelated as d, CatalogSecondaryGroup as e, CatalogSection as f, CatalogStageRootAttributes as g };
@@ -1,4 +1,6 @@
1
+ import * as kerfjs from 'kerfjs';
1
2
  import { SafeHtml } from 'kerfjs';
3
+ import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
2
4
 
3
5
  interface ValueTableRowProps {
4
6
  label: string | SafeHtml;
@@ -7,14 +9,20 @@ interface ValueTableRowProps {
7
9
  className?: string;
8
10
  /** Render the value as an unanimated loading skeleton, keeping the field label. */
9
11
  placeholder?: boolean;
12
+ /** Native named-slot assignment when composed inside a web component. */
13
+ slot?: string;
10
14
  }
11
- declare function ValueTableRow({ label, value, icon, className, placeholder }: ValueTableRowProps): SafeHtml;
15
+ declare function ValueTableRow({ label, value, icon, className, placeholder, slot, }: ValueTableRowProps): SafeHtml;
12
16
 
13
17
  interface ValueTableProps {
14
18
  label: string;
19
+ /** Compact row spacing for metadata-dense surfaces. */
20
+ density?: 'default' | 'compact';
15
21
  className?: string;
16
- children: SafeHtml | readonly SafeHtml[];
22
+ children: KerfUiContent;
23
+ /** Native named-slot assignment when composed inside a web component. */
24
+ slot?: string;
17
25
  }
18
- declare function ValueTable({ label, className, children }: ValueTableProps): SafeHtml;
26
+ declare function ValueTable({ label, density, className, children, slot, }: ValueTableProps): kerfjs.SafeHtml;
19
27
 
20
28
  export { ValueTable, type ValueTableProps, ValueTableRow, type ValueTableRowProps };
@@ -1,4 +1,5 @@
1
- export { ValueTable, ValueTableRow } from './chunk-PONXLV5U.js';
1
+ export { ValueTable, ValueTableRow } from './chunk-H7ZJEI3H.js';
2
+
2
3
 
3
4
 
4
5
  //# sourceMappingURL=value-table.js.map
@@ -23,7 +23,11 @@ declare module 'kerfjs/jsx-runtime' {
23
23
  'aria-label'?: string;
24
24
  value?: string;
25
25
  placeholder?: string;
26
+ hint?: string;
26
27
  disabled?: boolean;
28
+ size?: 'xs' | 's' | 'm' | 'l' | 'xl';
29
+ appearance?: 'filled' | 'outlined' | 'filled-outlined';
30
+ placement?: 'top' | 'bottom';
27
31
  };
28
32
  'wa-option': KerfCustomElement & {
29
33
  value?: string;
@@ -39,7 +43,9 @@ declare module 'kerfjs/jsx-runtime' {
39
43
  'wa-comparison': KerfCustomElement;
40
44
  'wa-copy-button': KerfCustomElement;
41
45
  'wa-details': KerfCustomElement;
42
- 'wa-divider': KerfCustomElement;
46
+ 'wa-divider': KerfCustomElement & {
47
+ orientation?: 'horizontal' | 'vertical';
48
+ };
43
49
  'wa-dialog': KerfCustomElement;
44
50
  'wa-drawer': KerfCustomElement;
45
51
  'wa-button': KerfCustomElement & {
@@ -50,6 +56,7 @@ declare module 'kerfjs/jsx-runtime' {
50
56
  };
51
57
  'wa-dropdown': KerfCustomElement & {
52
58
  placement?: string;
59
+ size?: 'xs' | 's' | 'm' | 'l' | 'xl';
53
60
  };
54
61
  'wa-dropdown-item': KerfCustomElement;
55
62
  'wa-format-bytes': KerfCustomElement;