@kerfjs/ui 5.0.0-beta.9 → 5.0.0-beta.90

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 (802) hide show
  1. package/README.md +540 -132
  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 +34 -0
  10. package/ai/catalog-authoring.schema.json +105 -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 +4487 -633
  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 +520 -0
  20. package/ai/component-composition.d.ts +129 -0
  21. package/ai/component-composition.json +7470 -0
  22. package/ai/component-composition.schema.json +408 -0
  23. package/ai/components/README.md +172 -0
  24. package/ai/components/anchored-surface.md +86 -0
  25. package/ai/components/application-tabs.md +65 -0
  26. package/ai/components/badge.md +72 -0
  27. package/ai/components/chip.md +72 -0
  28. package/ai/components/collapsible-panel.md +102 -0
  29. package/ai/components/content-item.md +96 -0
  30. package/ai/components/disclosure-arrow.md +77 -0
  31. package/ai/components/document-baseline.md +75 -0
  32. package/ai/components/empty-state.md +80 -0
  33. package/ai/components/feedback.md +71 -0
  34. package/ai/components/floating-toolbar.md +82 -0
  35. package/ai/components/foundation.md +65 -0
  36. package/ai/components/grid.md +100 -0
  37. package/ai/components/headers.md +63 -0
  38. package/ai/components/layout.md +75 -0
  39. package/ai/components/list-action-row.md +91 -0
  40. package/ai/components/list-header.md +91 -0
  41. package/ai/components/list-inset-control.md +74 -0
  42. package/ai/components/list-inset-text.md +72 -0
  43. package/ai/components/list-item.md +94 -0
  44. package/ai/components/list.md +106 -0
  45. package/ai/components/loading-spinner.md +73 -0
  46. package/ai/components/lucide-icon.md +97 -0
  47. package/ai/components/nav-stack.md +105 -0
  48. package/ai/components/pane.md +106 -0
  49. package/ai/components/popup-menu.md +171 -0
  50. package/ai/components/recipe-app-shell.md +57 -0
  51. package/ai/components/recipe-collapsible-sidebar.md +57 -0
  52. package/ai/components/recipe-compact-toolbar.md +57 -0
  53. package/ai/components/recipe-composer-form.md +57 -0
  54. package/ai/components/recipe-list-detail-dialog.md +57 -0
  55. package/ai/components/recipe-list-workspace-states.md +57 -0
  56. package/ai/components/recipe-loading-inspector.md +57 -0
  57. package/ai/components/recipe-navigation-sidebar.md +57 -0
  58. package/ai/components/recipe-navigation-stack.md +57 -0
  59. package/ai/components/recipe-workspace-header.md +57 -0
  60. package/ai/components/resize.md +106 -0
  61. package/ai/components/row.md +96 -0
  62. package/ai/components/segmented-control.md +82 -0
  63. package/ai/components/select.md +115 -0
  64. package/ai/components/skeleton.md +84 -0
  65. package/ai/components/spacer.md +86 -0
  66. package/ai/components/split-view.md +103 -0
  67. package/ai/components/state-banner.md +94 -0
  68. package/ai/components/sunken-panel.md +79 -0
  69. package/ai/components/surface-scaffold.md +87 -0
  70. package/ai/components/tab-bar.md +113 -0
  71. package/ai/components/tab-navigator.md +96 -0
  72. package/ai/components/tabs.md +95 -0
  73. package/ai/components/text.md +87 -0
  74. package/ai/components/token-search-field.md +107 -0
  75. package/ai/components/toolbar-control-group.md +121 -0
  76. package/ai/components/toolbar-text.md +98 -0
  77. package/ai/components/toolbar.md +101 -0
  78. package/ai/components/value-table.md +73 -0
  79. package/ai/components/wa-accordion-item.md +55 -0
  80. package/ai/components/wa-accordion.md +65 -0
  81. package/ai/components/wa-animated-image.md +55 -0
  82. package/ai/components/wa-animation.md +55 -0
  83. package/ai/components/wa-avatar.md +55 -0
  84. package/ai/components/wa-badge.md +55 -0
  85. package/ai/components/wa-breadcrumb-item.md +53 -0
  86. package/ai/components/wa-breadcrumb.md +55 -0
  87. package/ai/components/wa-button-group.md +59 -0
  88. package/ai/components/wa-button.md +55 -0
  89. package/ai/components/wa-callout.md +58 -0
  90. package/ai/components/wa-card.md +59 -0
  91. package/ai/components/wa-carousel-item.md +53 -0
  92. package/ai/components/wa-carousel.md +55 -0
  93. package/ai/components/wa-checkbox-group.md +55 -0
  94. package/ai/components/wa-checkbox.md +55 -0
  95. package/ai/components/wa-color-picker.md +55 -0
  96. package/ai/components/wa-comparison.md +55 -0
  97. package/ai/components/wa-copy-button.md +55 -0
  98. package/ai/components/wa-details.md +61 -0
  99. package/ai/components/wa-dialog.md +59 -0
  100. package/ai/components/wa-divider.md +53 -0
  101. package/ai/components/wa-drawer.md +55 -0
  102. package/ai/components/wa-dropdown-item.md +60 -0
  103. package/ai/components/wa-dropdown.md +60 -0
  104. package/ai/components/wa-format-bytes.md +53 -0
  105. package/ai/components/wa-format-date.md +53 -0
  106. package/ai/components/wa-format-number.md +53 -0
  107. package/ai/components/wa-icon.md +58 -0
  108. package/ai/components/wa-include.md +53 -0
  109. package/ai/components/wa-input.md +59 -0
  110. package/ai/components/wa-intersection-observer.md +53 -0
  111. package/ai/components/wa-known-date.md +53 -0
  112. package/ai/components/wa-markdown.md +53 -0
  113. package/ai/components/wa-mutation-observer.md +53 -0
  114. package/ai/components/wa-number-input.md +55 -0
  115. package/ai/components/wa-option.md +59 -0
  116. package/ai/components/wa-otp-input.md +53 -0
  117. package/ai/components/wa-page.md +53 -0
  118. package/ai/components/wa-pagination.md +55 -0
  119. package/ai/components/wa-popover.md +55 -0
  120. package/ai/components/wa-popup.md +53 -0
  121. package/ai/components/wa-progress-bar.md +53 -0
  122. package/ai/components/wa-progress-ring.md +53 -0
  123. package/ai/components/wa-qr-code.md +53 -0
  124. package/ai/components/wa-radio-group.md +59 -0
  125. package/ai/components/wa-radio.md +55 -0
  126. package/ai/components/wa-random-content.md +53 -0
  127. package/ai/components/wa-rating.md +55 -0
  128. package/ai/components/wa-relative-time.md +53 -0
  129. package/ai/components/wa-resize-observer.md +53 -0
  130. package/ai/components/wa-scroller.md +53 -0
  131. package/ai/components/wa-select.md +63 -0
  132. package/ai/components/wa-skeleton.md +53 -0
  133. package/ai/components/wa-slider.md +55 -0
  134. package/ai/components/wa-spinner.md +58 -0
  135. package/ai/components/wa-split-panel.md +58 -0
  136. package/ai/components/wa-switch.md +53 -0
  137. package/ai/components/wa-tab-group.md +69 -0
  138. package/ai/components/wa-tab-panel.md +60 -0
  139. package/ai/components/wa-tab.md +59 -0
  140. package/ai/components/wa-tag.md +59 -0
  141. package/ai/components/wa-textarea.md +53 -0
  142. package/ai/components/wa-time-input.md +55 -0
  143. package/ai/components/wa-toast-item.md +60 -0
  144. package/ai/components/wa-toast.md +60 -0
  145. package/ai/components/wa-tooltip.md +55 -0
  146. package/ai/components/wa-tree-item.md +55 -0
  147. package/ai/components/wa-tree.md +55 -0
  148. package/ai/components/wa-zoomable-frame.md +55 -0
  149. package/ai/components/workbench.md +119 -0
  150. package/ai/public-api-signatures-v1.md +2835 -351
  151. package/ai/skill.md +401 -63
  152. package/ai/webawesome-jsx-signatures-v1.md +9 -2
  153. package/analyzer/cli.mjs +49 -0
  154. package/analyzer/component-ownership.d.mts +72 -0
  155. package/analyzer/component-ownership.mjs +429 -0
  156. package/analyzer/index.d.mts +53 -0
  157. package/analyzer/index.mjs +2346 -0
  158. package/analyzer/loud-pairs.d.mts +49 -0
  159. package/analyzer/loud-pairs.mjs +357 -0
  160. package/analyzer/report.schema.json +66 -0
  161. package/analyzer/selectors.d.mts +21 -0
  162. package/analyzer/selectors.mjs +212 -0
  163. package/catalog-projection-cli.mjs +96 -0
  164. package/catalog-projection.d.mts +55 -0
  165. package/catalog-projection.mjs +62 -0
  166. package/dist/anchored-surface.d.ts +30 -0
  167. package/dist/anchored-surface.js +3 -0
  168. package/dist/anchored-surface.js.map +1 -0
  169. package/dist/app-tab.d.ts +39 -4
  170. package/dist/app-tab.js +2 -1
  171. package/dist/badge.d.ts +54 -0
  172. package/dist/badge.js +3 -0
  173. package/dist/badge.js.map +1 -0
  174. package/dist/browser/anchored-surface.js +3 -0
  175. package/dist/browser/badge.js +3 -0
  176. package/dist/browser/catalog.js +28 -0
  177. package/dist/browser/chip.js +3 -0
  178. package/dist/browser/collapsible-panel.js +9 -0
  179. package/dist/browser/content-item.js +3 -0
  180. package/dist/browser/floating-toolbar.js +3 -0
  181. package/dist/browser/grid.js +3 -0
  182. package/dist/browser/list-action-row.js +1 -0
  183. package/dist/browser/list-header.js +3 -1
  184. package/dist/browser/list-inset-control.js +3 -0
  185. package/dist/browser/list-inset-text.js +3 -0
  186. package/dist/browser/list-item.js +1 -0
  187. package/dist/browser/list.js +3 -0
  188. package/dist/browser/nav-stack.js +11 -0
  189. package/dist/browser/pane.js +3 -0
  190. package/dist/browser/popup-menu.js +3 -0
  191. package/dist/browser/row.js +3 -0
  192. package/dist/browser/segmented-control.js +0 -1
  193. package/dist/browser/select.js +2 -1
  194. package/dist/browser/spacer.js +3 -0
  195. package/dist/browser/split-view.js +13 -0
  196. package/dist/browser/state-banner.js +1 -0
  197. package/dist/browser/sunken-panel.js +3 -0
  198. package/dist/browser/surface-scaffold.js +3 -0
  199. package/dist/browser/tab-navigator.js +4 -0
  200. package/dist/browser/text.js +3 -0
  201. package/dist/browser/toolbar-control-group.js +1 -0
  202. package/dist/browser/workbench.js +14 -0
  203. package/dist/catalog-resources.d.ts +48 -0
  204. package/dist/catalog-resources.js +22 -0
  205. package/dist/catalog-resources.js.map +1 -0
  206. package/dist/catalog.d.ts +76 -103
  207. package/dist/catalog.js +566 -87
  208. package/dist/catalog.js.map +1 -1
  209. package/dist/chip.d.ts +36 -0
  210. package/dist/chip.js +3 -0
  211. package/dist/chip.js.map +1 -0
  212. package/dist/chunk-2GOCOLQL.js +270 -0
  213. package/dist/chunk-2GOCOLQL.js.map +1 -0
  214. package/dist/{chunk-56RJXPHG.js → chunk-2YPPNFYT.js} +7 -4
  215. package/dist/chunk-2YPPNFYT.js.map +1 -0
  216. package/dist/chunk-3CXRQAYT.js +288 -0
  217. package/dist/chunk-3CXRQAYT.js.map +1 -0
  218. package/dist/chunk-3DXHNLME.js +69 -0
  219. package/dist/chunk-3DXHNLME.js.map +1 -0
  220. package/dist/chunk-3PO7JEK7.js +188 -0
  221. package/dist/chunk-3PO7JEK7.js.map +1 -0
  222. package/dist/chunk-3XPGJUUQ.js +37 -0
  223. package/dist/chunk-3XPGJUUQ.js.map +1 -0
  224. package/dist/chunk-4Y4L5YEI.js +66 -0
  225. package/dist/chunk-4Y4L5YEI.js.map +1 -0
  226. package/dist/chunk-5BZBIRQG.js +452 -0
  227. package/dist/chunk-5BZBIRQG.js.map +1 -0
  228. package/dist/chunk-6IVNMC6R.js +19 -0
  229. package/dist/chunk-6IVNMC6R.js.map +1 -0
  230. package/dist/chunk-7QQ3HE47.js +17 -0
  231. package/dist/chunk-7QQ3HE47.js.map +1 -0
  232. package/dist/chunk-A7DYEERU.js +59 -0
  233. package/dist/chunk-A7DYEERU.js.map +1 -0
  234. package/dist/chunk-AN5IWMTM.js +24 -0
  235. package/dist/chunk-AN5IWMTM.js.map +1 -0
  236. package/dist/chunk-B3TROLC2.js +104 -0
  237. package/dist/chunk-B3TROLC2.js.map +1 -0
  238. package/dist/chunk-BYHGRKC3.js +44 -0
  239. package/dist/chunk-BYHGRKC3.js.map +1 -0
  240. package/dist/chunk-CD5TOO22.js +82 -0
  241. package/dist/chunk-CD5TOO22.js.map +1 -0
  242. package/dist/chunk-CEJ5FK6G.js +288 -0
  243. package/dist/chunk-CEJ5FK6G.js.map +1 -0
  244. package/dist/chunk-DL55BSQX.js +52 -0
  245. package/dist/chunk-DL55BSQX.js.map +1 -0
  246. package/dist/chunk-DQDTZE4W.js +70 -0
  247. package/dist/chunk-DQDTZE4W.js.map +1 -0
  248. package/dist/chunk-FL6J644M.js +116 -0
  249. package/dist/chunk-FL6J644M.js.map +1 -0
  250. package/dist/chunk-GPCAXYMT.js +165 -0
  251. package/dist/chunk-GPCAXYMT.js.map +1 -0
  252. package/dist/chunk-GS2QD3N7.js +14 -0
  253. package/dist/chunk-GS2QD3N7.js.map +1 -0
  254. package/dist/chunk-H45DAZBL.js +491 -0
  255. package/dist/chunk-H45DAZBL.js.map +1 -0
  256. package/dist/chunk-IM3GKYOG.js +202 -0
  257. package/dist/chunk-IM3GKYOG.js.map +1 -0
  258. package/dist/chunk-IOS2NXW7.js +53 -0
  259. package/dist/chunk-IOS2NXW7.js.map +1 -0
  260. package/dist/chunk-J3AWE5I4.js +50 -0
  261. package/dist/chunk-J3AWE5I4.js.map +1 -0
  262. package/dist/chunk-JOR5LGYE.js +55 -0
  263. package/dist/chunk-JOR5LGYE.js.map +1 -0
  264. package/dist/chunk-KAJVVN7Q.js +138 -0
  265. package/dist/chunk-KAJVVN7Q.js.map +1 -0
  266. package/dist/chunk-KL3W6FUN.js +506 -0
  267. package/dist/chunk-KL3W6FUN.js.map +1 -0
  268. package/dist/{chunk-7BR3DO2A.js → chunk-LAZLBC2Q.js} +14 -5
  269. package/dist/chunk-LAZLBC2Q.js.map +1 -0
  270. package/dist/chunk-LFPW4YC6.js +222 -0
  271. package/dist/chunk-LFPW4YC6.js.map +1 -0
  272. package/dist/chunk-MN3POJFN.js +44 -0
  273. package/dist/chunk-MN3POJFN.js.map +1 -0
  274. package/dist/chunk-MORVLMDG.js +59 -0
  275. package/dist/chunk-MORVLMDG.js.map +1 -0
  276. package/dist/chunk-MTCTX25G.js +139 -0
  277. package/dist/chunk-MTCTX25G.js.map +1 -0
  278. package/dist/chunk-MXNIVEVL.js +48 -0
  279. package/dist/chunk-MXNIVEVL.js.map +1 -0
  280. package/dist/chunk-NJZMR7HM.js +135 -0
  281. package/dist/chunk-NJZMR7HM.js.map +1 -0
  282. package/dist/chunk-NMWDHZVM.js +35 -0
  283. package/dist/chunk-NMWDHZVM.js.map +1 -0
  284. package/dist/chunk-NP3FSLNX.js +58 -0
  285. package/dist/chunk-NP3FSLNX.js.map +1 -0
  286. package/dist/{chunk-YGN7OMLT.js → chunk-NS2TBYM4.js} +8 -5
  287. package/dist/chunk-NS2TBYM4.js.map +1 -0
  288. package/dist/chunk-O27D24CA.js +250 -0
  289. package/dist/chunk-O27D24CA.js.map +1 -0
  290. package/dist/chunk-PGL6TXFW.js +48 -0
  291. package/dist/chunk-PGL6TXFW.js.map +1 -0
  292. package/dist/chunk-QQICWWNX.js +71 -0
  293. package/dist/chunk-QQICWWNX.js.map +1 -0
  294. package/dist/chunk-S3ECMF23.js +33 -0
  295. package/dist/chunk-S3ECMF23.js.map +1 -0
  296. package/dist/chunk-S4ZGTDSG.js +18 -0
  297. package/dist/chunk-S4ZGTDSG.js.map +1 -0
  298. package/dist/chunk-SJW5BCEQ.js +174 -0
  299. package/dist/chunk-SJW5BCEQ.js.map +1 -0
  300. package/dist/chunk-TTGIHMDR.js +149 -0
  301. package/dist/chunk-TTGIHMDR.js.map +1 -0
  302. package/dist/chunk-U657IHFB.js +158 -0
  303. package/dist/chunk-U657IHFB.js.map +1 -0
  304. package/dist/chunk-VLGQIYZ5.js +295 -0
  305. package/dist/chunk-VLGQIYZ5.js.map +1 -0
  306. package/dist/chunk-XK4E225T.js +34 -0
  307. package/dist/chunk-XK4E225T.js.map +1 -0
  308. package/dist/chunk-XKZPBRU7.js +135 -0
  309. package/dist/chunk-XKZPBRU7.js.map +1 -0
  310. package/dist/chunk-XNXKIPU5.js +779 -0
  311. package/dist/chunk-XNXKIPU5.js.map +1 -0
  312. package/dist/chunk-Y43B6DS3.js +66 -0
  313. package/dist/chunk-Y43B6DS3.js.map +1 -0
  314. package/dist/chunk-Y6KT7ZTR.js +109 -0
  315. package/dist/chunk-Y6KT7ZTR.js.map +1 -0
  316. package/dist/chunk-YOKEL75M.js +48 -0
  317. package/dist/chunk-YOKEL75M.js.map +1 -0
  318. package/dist/collapsible-panel.d.ts +137 -0
  319. package/dist/collapsible-panel.js +136 -0
  320. package/dist/collapsible-panel.js.map +1 -0
  321. package/dist/content-item.d.ts +99 -0
  322. package/dist/content-item.js +4 -0
  323. package/dist/content-item.js.map +1 -0
  324. package/dist/css-values.d.ts +119 -0
  325. package/dist/css-values.js +3 -0
  326. package/dist/css-values.js.map +1 -0
  327. package/dist/device-class.js +34 -6
  328. package/dist/device-class.js.map +1 -1
  329. package/dist/disclosure-arrow.d.ts +6 -1
  330. package/dist/disclosure-arrow.js +2 -1
  331. package/dist/empty-state.d.ts +5 -2
  332. package/dist/empty-state.js +2 -1
  333. package/dist/flex-alignment-4ms8ZbV8.d.ts +5 -0
  334. package/dist/floating-toolbar.d.ts +51 -0
  335. package/dist/floating-toolbar.js +3 -0
  336. package/dist/floating-toolbar.js.map +1 -0
  337. package/dist/grid.d.ts +58 -0
  338. package/dist/grid.js +6 -0
  339. package/dist/grid.js.map +1 -0
  340. package/dist/help-tags-register.d.ts +13 -0
  341. package/dist/help-tags-register.js +9 -0
  342. package/dist/help-tags-register.js.map +1 -0
  343. package/dist/index.d.ts +41 -17
  344. package/dist/index.js +46 -23
  345. package/dist/list-action-row.d.ts +15 -3
  346. package/dist/list-action-row.js +4 -1
  347. package/dist/list-header.d.ts +65 -10
  348. package/dist/list-header.js +4 -1
  349. package/dist/list-inset-control.d.ts +22 -0
  350. package/dist/list-inset-control.js +3 -0
  351. package/dist/list-inset-control.js.map +1 -0
  352. package/dist/list-inset-text.d.ts +30 -0
  353. package/dist/list-inset-text.js +4 -0
  354. package/dist/list-inset-text.js.map +1 -0
  355. package/dist/list-item.d.ts +34 -5
  356. package/dist/list-item.js +4 -1
  357. package/dist/list.d.ts +64 -0
  358. package/dist/list.js +7 -0
  359. package/dist/list.js.map +1 -0
  360. package/dist/loading-spinner.d.ts +12 -2
  361. package/dist/loading-spinner.js +2 -1
  362. package/dist/lucide-icon.d.ts +14 -2
  363. package/dist/lucide-icon.js +2 -1
  364. package/dist/nav-stack-BvSKY448.d.ts +109 -0
  365. package/dist/nav-stack.d.ts +13 -38
  366. package/dist/nav-stack.js +11 -1
  367. package/dist/pane.d.ts +116 -0
  368. package/dist/pane.js +4 -0
  369. package/dist/pane.js.map +1 -0
  370. package/dist/panel-toolbar-CL9tYOkh.d.ts +72 -0
  371. package/dist/popup-menu-register.d.ts +9 -0
  372. package/dist/popup-menu-register.js +244 -0
  373. package/dist/popup-menu-register.js.map +1 -0
  374. package/dist/popup-menu.d.ts +100 -0
  375. package/dist/popup-menu.js +3 -0
  376. package/dist/popup-menu.js.map +1 -0
  377. package/dist/resizable-region.d.ts +32 -3
  378. package/dist/resizable-region.js +1 -1
  379. package/dist/row.d.ts +49 -0
  380. package/dist/row.js +7 -0
  381. package/dist/row.js.map +1 -0
  382. package/dist/segmented-control.d.ts +12 -9
  383. package/dist/segmented-control.js +1 -2
  384. package/dist/select-register.d.ts +5 -1
  385. package/dist/select-register.js +247 -3
  386. package/dist/select-register.js.map +1 -1
  387. package/dist/select.d.ts +103 -8
  388. package/dist/select.js +3 -1
  389. package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
  390. package/dist/semantic-tone-CdW013KF.d.ts +4 -0
  391. package/dist/sides-BPSWde0A.d.ts +4 -0
  392. package/dist/skeleton.d.ts +14 -7
  393. package/dist/skeleton.js +2 -1
  394. package/dist/spacer.d.ts +18 -0
  395. package/dist/spacer.js +4 -0
  396. package/dist/spacer.js.map +1 -0
  397. package/dist/split-view.d.ts +43 -6
  398. package/dist/split-view.js +125 -10
  399. package/dist/split-view.js.map +1 -1
  400. package/dist/state-banner.d.ts +21 -7
  401. package/dist/state-banner.js +3 -1
  402. package/dist/styles/anchored-surface.css +15 -0
  403. package/dist/styles/app-tab.css +232 -0
  404. package/dist/styles/badge.css +118 -0
  405. package/dist/styles/catalog/components/catalog-example-stack.css +9 -0
  406. package/dist/styles/catalog/components/catalog-example.css +167 -0
  407. package/dist/styles/catalog/components/catalog-stage.css +54 -0
  408. package/dist/styles/catalog/components/catalog.css +26 -0
  409. package/dist/styles/catalog.css +5 -482
  410. package/dist/styles/chip.css +138 -0
  411. package/dist/styles/collapsible-panel.css +580 -0
  412. package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
  413. package/dist/styles/components/actions/popup-menu/popup-menu.css +285 -0
  414. package/dist/styles/components/actions/toolbar/toolbar.css +417 -0
  415. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +891 -0
  416. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +171 -0
  417. package/dist/styles/components/collections/list/list.css +136 -0
  418. package/dist/styles/components/collections/list-action-row/list-action-row.css +258 -0
  419. package/dist/styles/components/collections/list-header/list-header.css +229 -0
  420. package/dist/styles/components/collections/list-inset-control/list-inset-control.css +30 -0
  421. package/dist/styles/components/collections/list-inset-text/list-inset-text.css +29 -0
  422. package/dist/styles/components/collections/list-item/list-item.css +255 -0
  423. package/dist/styles/components/data-display/value-table/value-table.css +107 -0
  424. package/dist/styles/components/feedback/anchored-surface/anchored-surface.css +15 -0
  425. package/dist/styles/components/feedback/badge/badge.css +118 -0
  426. package/dist/styles/components/feedback/chip/chip.css +138 -0
  427. package/dist/styles/components/feedback/empty-state/empty-state.css +47 -0
  428. package/dist/styles/components/feedback/loading-spinner/loading-spinner.css +25 -0
  429. package/dist/styles/components/feedback/skeleton/skeleton.css +92 -0
  430. package/dist/styles/components/feedback/state-banner/state-banner.css +248 -0
  431. package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
  432. package/dist/styles/components/forms/select/select.css +454 -0
  433. package/dist/styles/components/forms/token-search-field/token-search-field.css +392 -0
  434. package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +580 -0
  435. package/dist/styles/components/layout/grid/grid.css +88 -0
  436. package/dist/styles/components/layout/pane/pane.css +309 -0
  437. package/dist/styles/components/layout/resizable-region/resizable-region.css +545 -0
  438. package/dist/styles/components/layout/row/row.css +114 -0
  439. package/dist/styles/components/layout/spacer/spacer.css +11 -0
  440. package/dist/styles/components/layout/split-view/split-view.css +146 -0
  441. package/dist/styles/components/layout/workbench/workbench.css +1092 -0
  442. package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
  443. package/dist/styles/components/navigation/app-tab/app-tab.css +384 -0
  444. package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +23 -0
  445. package/dist/styles/components/navigation/nav-stack/nav-stack.css +258 -0
  446. package/dist/styles/components/navigation/tab-bar/tab-bar.css +186 -0
  447. package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +253 -0
  448. package/dist/styles/components/surfaces/content-item/content-item.css +120 -0
  449. package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +34 -0
  450. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +111 -0
  451. package/dist/styles/components/typography/text/text.css +158 -0
  452. package/dist/styles/content-item.css +120 -0
  453. package/dist/styles/document.css +33 -0
  454. package/dist/styles/floating-toolbar.css +119 -0
  455. package/dist/styles/foundation.css +187 -45
  456. package/dist/styles/grid.css +88 -0
  457. package/dist/styles/layout.css +3 -41
  458. package/dist/styles/list-action-row.css +104 -6
  459. package/dist/styles/list-header.css +128 -59
  460. package/dist/styles/list-inset-control.css +30 -0
  461. package/dist/styles/list-inset-text.css +29 -0
  462. package/dist/styles/list-item.css +165 -33
  463. package/dist/styles/list.css +136 -0
  464. package/dist/styles/loading-spinner.css +4 -0
  465. package/dist/styles/lucide-icon.css +9 -0
  466. package/dist/styles/nav-stack.css +196 -50
  467. package/dist/styles/pane.css +309 -0
  468. package/dist/styles/popup-menu.css +285 -0
  469. package/dist/styles/resizable-region.css +438 -4
  470. package/dist/styles/row.css +114 -0
  471. package/dist/styles/segmented-control.css +36 -9
  472. package/dist/styles/select.css +337 -21
  473. package/dist/styles/skeleton.css +64 -3
  474. package/dist/styles/spacer.css +11 -0
  475. package/dist/styles/split-view.css +114 -3
  476. package/dist/styles/state-banner.css +94 -19
  477. package/dist/styles/styles.css +10 -1
  478. package/dist/styles/sunken-panel.css +34 -0
  479. package/dist/styles/surface-scaffold.css +111 -0
  480. package/dist/styles/tab-bar.css +150 -9
  481. package/dist/styles/tab-navigator.css +253 -0
  482. package/dist/styles/text.css +158 -0
  483. package/dist/styles/token-search-field.css +167 -56
  484. package/dist/styles/toolbar-control-group.css +710 -30
  485. package/dist/styles/toolbar-text.css +139 -8
  486. package/dist/styles/toolbar.css +367 -11
  487. package/dist/styles/value-table.css +39 -7
  488. package/dist/styles/webawesome.css +392 -17
  489. package/dist/styles/workbench.css +1005 -7
  490. package/dist/sunken-panel.d.ts +31 -0
  491. package/dist/sunken-panel.js +3 -0
  492. package/dist/sunken-panel.js.map +1 -0
  493. package/dist/surface-scaffold-register.d.ts +4 -0
  494. package/dist/surface-scaffold-register.js +59 -0
  495. package/dist/surface-scaffold-register.js.map +1 -0
  496. package/dist/surface-scaffold.d.ts +38 -0
  497. package/dist/surface-scaffold.js +3 -0
  498. package/dist/surface-scaffold.js.map +1 -0
  499. package/dist/tab-bar.d.ts +39 -6
  500. package/dist/tab-bar.js +1 -1
  501. package/dist/tab-navigator.d.ts +93 -0
  502. package/dist/tab-navigator.js +97 -0
  503. package/dist/tab-navigator.js.map +1 -0
  504. package/dist/text.d.ts +63 -0
  505. package/dist/text.js +3 -0
  506. package/dist/text.js.map +1 -0
  507. package/dist/token-search-field.d.ts +3 -43
  508. package/dist/token-search-field.js +2 -1
  509. package/dist/token-search-model-DTcTXWMS.d.ts +154 -0
  510. package/dist/token-search-model.d.ts +3 -0
  511. package/dist/token-search-model.js +3 -0
  512. package/dist/token-search-model.js.map +1 -0
  513. package/dist/toolbar-control-group.d.ts +89 -7
  514. package/dist/toolbar-control-group.js +3 -1
  515. package/dist/toolbar-text.d.ts +45 -9
  516. package/dist/toolbar-text.js +2 -1
  517. package/dist/toolbar.d.ts +59 -7
  518. package/dist/toolbar.js +1 -1
  519. package/dist/types-oLe_N1w0.d.ts +130 -0
  520. package/dist/value-table.d.ts +11 -3
  521. package/dist/value-table.js +2 -1
  522. package/dist/webawesome.d.ts +8 -1
  523. package/dist/wire-catalog.d.ts +76 -4
  524. package/dist/wire-catalog.js +250 -14
  525. package/dist/wire-catalog.js.map +1 -1
  526. package/dist/wire-content-items.d.ts +11 -0
  527. package/dist/wire-content-items.js +139 -0
  528. package/dist/wire-content-items.js.map +1 -0
  529. package/dist/wire-nav-stack.d.ts +4 -1
  530. package/dist/wire-nav-stack.js +191 -15
  531. package/dist/wire-nav-stack.js.map +1 -1
  532. package/dist/wire-resizable-regions.d.ts +2 -1
  533. package/dist/wire-resizable-regions.js +2 -1
  534. package/dist/wire-scroll-dividers.d.ts +72 -0
  535. package/dist/wire-scroll-dividers.js +3 -0
  536. package/dist/wire-scroll-dividers.js.map +1 -0
  537. package/dist/wire-sidebar.d.ts +63 -0
  538. package/dist/wire-sidebar.js +231 -0
  539. package/dist/wire-sidebar.js.map +1 -0
  540. package/dist/wire-tab-bars.d.ts +19 -2
  541. package/dist/wire-tab-bars.js +1 -1
  542. package/dist/wire-tab-navigator.d.ts +11 -0
  543. package/dist/wire-tab-navigator.js +21 -0
  544. package/dist/wire-tab-navigator.js.map +1 -0
  545. package/dist/wire-token-search-fields.d.ts +65 -3
  546. package/dist/wire-token-search-fields.js +2 -1
  547. package/dist/wire-toolbar-visibility.d.ts +13 -0
  548. package/dist/wire-toolbar-visibility.js +3 -0
  549. package/dist/wire-toolbar-visibility.js.map +1 -0
  550. package/dist/wire-workbench.d.ts +116 -0
  551. package/dist/wire-workbench.js +6 -0
  552. package/dist/wire-workbench.js.map +1 -0
  553. package/dist/workbench.d.ts +246 -9
  554. package/dist/workbench.js +18 -15
  555. package/dist/workbench.js.map +1 -1
  556. package/docs/accessibility.md +495 -24
  557. package/docs/anchored-surface.md +51 -0
  558. package/docs/app-layouts.md +141 -10
  559. package/docs/apple-hig.md +1 -0
  560. package/docs/catalog.md +395 -62
  561. package/docs/collapsible-panel.md +382 -0
  562. package/docs/component-contract.md +740 -53
  563. package/docs/component-integration.md +75 -0
  564. package/docs/component-selection.md +682 -97
  565. package/docs/design/templates/empty-state/filtered-dark.svg +1 -0
  566. package/docs/design/templates/empty-state/filtered.svg +1 -0
  567. package/docs/design/templates/empty-state/with-action-dark.svg +1 -0
  568. package/docs/design/templates/empty-state/with-action.svg +1 -0
  569. package/docs/design/templates/empty-state-dark.svg +1 -0
  570. package/docs/design/templates/empty-state.svg +1 -0
  571. package/docs/design/templates/list/compact-dark.svg +1 -0
  572. package/docs/design/templates/list/compact.svg +1 -0
  573. package/docs/design/templates/list/stack-dark.svg +1 -0
  574. package/docs/design/templates/list/stack.svg +1 -0
  575. package/docs/design/templates/list-action-row/default-dark.svg +1 -0
  576. package/docs/design/templates/list-action-row/default.svg +1 -0
  577. package/docs/design/templates/list-action-row/selected-dark.svg +1 -0
  578. package/docs/design/templates/list-action-row/selected.svg +1 -0
  579. package/docs/design/templates/list-action-row-dark.svg +1 -0
  580. package/docs/design/templates/list-action-row.svg +1 -0
  581. package/docs/design/templates/list-dark.svg +1 -0
  582. package/docs/design/templates/list-header/action-dark.svg +1 -0
  583. package/docs/design/templates/list-header/action.svg +1 -0
  584. package/docs/design/templates/list-header/count-dark.svg +1 -0
  585. package/docs/design/templates/list-header/count.svg +1 -0
  586. package/docs/design/templates/list-header/inline-action-dark.svg +1 -0
  587. package/docs/design/templates/list-header/inline-action.svg +1 -0
  588. package/docs/design/templates/list-header/size-l-dark.svg +1 -0
  589. package/docs/design/templates/list-header/size-l.svg +1 -0
  590. package/docs/design/templates/list-header/size-m-dark.svg +1 -0
  591. package/docs/design/templates/list-header/size-m.svg +1 -0
  592. package/docs/design/templates/list-header/size-xl-dark.svg +1 -0
  593. package/docs/design/templates/list-header/size-xl.svg +1 -0
  594. package/docs/design/templates/list-header/size-xs-dark.svg +1 -0
  595. package/docs/design/templates/list-header/size-xs.svg +1 -0
  596. package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -0
  597. package/docs/design/templates/list-header/toggle-collapsed.svg +1 -0
  598. package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -0
  599. package/docs/design/templates/list-header/toggle-expanded.svg +1 -0
  600. package/docs/design/templates/list-header-dark.svg +1 -0
  601. package/docs/design/templates/list-header.svg +1 -0
  602. package/docs/design/templates/list-item/default-dark.svg +1 -0
  603. package/docs/design/templates/list-item/default.svg +1 -0
  604. package/docs/design/templates/list-item/multiline-dark.svg +1 -0
  605. package/docs/design/templates/list-item/multiline.svg +1 -0
  606. package/docs/design/templates/list-item/selected-dark.svg +1 -0
  607. package/docs/design/templates/list-item/selected.svg +1 -0
  608. package/docs/design/templates/list-item/trailing-dark.svg +1 -0
  609. package/docs/design/templates/list-item/trailing.svg +1 -0
  610. package/docs/design/templates/list-item-dark.svg +1 -0
  611. package/docs/design/templates/list-item.svg +1 -0
  612. package/docs/design/templates/list.svg +1 -0
  613. package/docs/design/templates/segmented-control/equal-dark.svg +1 -0
  614. package/docs/design/templates/segmented-control/equal.svg +1 -0
  615. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -0
  616. package/docs/design/templates/segmented-control/pill-small.svg +1 -0
  617. package/docs/design/templates/segmented-control-dark.svg +1 -0
  618. package/docs/design/templates/segmented-control.svg +1 -0
  619. package/docs/design/templates/skeleton/avatar-dark.svg +1 -0
  620. package/docs/design/templates/skeleton/avatar.svg +1 -0
  621. package/docs/design/templates/skeleton/block-dark.svg +1 -0
  622. package/docs/design/templates/skeleton/block.svg +1 -0
  623. package/docs/design/templates/skeleton/lines-dark.svg +1 -0
  624. package/docs/design/templates/skeleton/lines.svg +1 -0
  625. package/docs/design/templates/skeleton-dark.svg +1 -0
  626. package/docs/design/templates/skeleton.svg +1 -0
  627. package/docs/design/templates/state-banner/danger-dark.svg +1 -0
  628. package/docs/design/templates/state-banner/danger.svg +1 -0
  629. package/docs/design/templates/state-banner/info-badge-dark.svg +1 -0
  630. package/docs/design/templates/state-banner/info-badge.svg +1 -0
  631. package/docs/design/templates/state-banner/info-dark.svg +1 -0
  632. package/docs/design/templates/state-banner/info.svg +1 -0
  633. package/docs/design/templates/state-banner/success-dark.svg +1 -0
  634. package/docs/design/templates/state-banner/success.svg +1 -0
  635. package/docs/design/templates/state-banner/warning-dark.svg +1 -0
  636. package/docs/design/templates/state-banner/warning.svg +1 -0
  637. package/docs/design/templates/state-banner-dark.svg +1 -0
  638. package/docs/design/templates/state-banner.svg +1 -0
  639. package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -0
  640. package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -0
  641. package/docs/design/templates/tab-bar-dark.svg +1 -0
  642. package/docs/design/templates/tab-bar.svg +1 -0
  643. package/docs/design/templates/token-search-field/empty-dark.svg +1 -0
  644. package/docs/design/templates/token-search-field/empty.svg +1 -0
  645. package/docs/design/templates/token-search-field/tokens-dark.svg +1 -0
  646. package/docs/design/templates/token-search-field/tokens.svg +1 -0
  647. package/docs/design/templates/token-search-field-dark.svg +1 -0
  648. package/docs/design/templates/token-search-field.svg +1 -0
  649. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -0
  650. package/docs/design/templates/toolbar/title-and-actions.svg +1 -0
  651. package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
  652. package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
  653. package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
  654. package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
  655. package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -0
  656. package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -0
  657. package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -0
  658. package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -0
  659. package/docs/design/templates/toolbar-control-group/icon-tile-brand-dark.svg +1 -0
  660. package/docs/design/templates/toolbar-control-group/icon-tile-brand.svg +1 -0
  661. package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -0
  662. package/docs/design/templates/toolbar-control-group/icon-tile-danger.svg +1 -0
  663. package/docs/design/templates/toolbar-control-group/icon-tile-neutral-dark.svg +1 -0
  664. package/docs/design/templates/toolbar-control-group/icon-tile-neutral.svg +1 -0
  665. package/docs/design/templates/toolbar-control-group/icon-tile-success-dark.svg +1 -0
  666. package/docs/design/templates/toolbar-control-group/icon-tile-success.svg +1 -0
  667. package/docs/design/templates/toolbar-control-group/icon-tile-warning-dark.svg +1 -0
  668. package/docs/design/templates/toolbar-control-group/icon-tile-warning.svg +1 -0
  669. package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -0
  670. package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -0
  671. package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -0
  672. package/docs/design/templates/toolbar-control-group/with-text.svg +1 -0
  673. package/docs/design/templates/toolbar-control-group-dark.svg +1 -0
  674. package/docs/design/templates/toolbar-control-group.svg +1 -0
  675. package/docs/design/templates/toolbar-dark.svg +1 -0
  676. package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
  677. package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
  678. package/docs/design/templates/toolbar-text/default-dark.svg +1 -0
  679. package/docs/design/templates/toolbar-text/default.svg +1 -0
  680. package/docs/design/templates/toolbar-text/large-dark.svg +1 -0
  681. package/docs/design/templates/toolbar-text/large.svg +1 -0
  682. package/docs/design/templates/toolbar-text/small-dark.svg +1 -0
  683. package/docs/design/templates/toolbar-text/small.svg +1 -0
  684. package/docs/design/templates/toolbar-text-dark.svg +1 -0
  685. package/docs/design/templates/toolbar-text.svg +1 -0
  686. package/docs/design/templates/toolbar.svg +1 -0
  687. package/docs/design/templates/value-table/details-dark.svg +1 -0
  688. package/docs/design/templates/value-table/details.svg +1 -0
  689. package/docs/design/templates/value-table-dark.svg +1 -0
  690. package/docs/design/templates/value-table.svg +1 -0
  691. package/docs/design/templates.md +140 -0
  692. package/docs/design-philosophy.md +56 -19
  693. package/docs/device-class.md +10 -9
  694. package/docs/document-baseline.md +42 -0
  695. package/docs/examples/application-ui-profile.json +60 -0
  696. package/docs/examples/command-palette-adapter.tsx +69 -17
  697. package/docs/examples/component-catalog-extension.json +52 -0
  698. package/docs/examples/component-composition-extension.json +80 -0
  699. package/docs/layout.md +612 -53
  700. package/docs/nav-stack.md +163 -14
  701. package/docs/recipes.md +127 -52
  702. package/docs/split-view.md +76 -5
  703. package/docs/sunken-panel.md +93 -0
  704. package/docs/surface-scaffold.md +74 -0
  705. package/docs/tab-navigator.md +218 -0
  706. package/docs/type-contracts.md +137 -0
  707. package/docs/ui-analyzer.md +404 -0
  708. package/docs/ui-doctor.md +202 -0
  709. package/docs/ui-evaluator.md +139 -0
  710. package/docs/ux-demo.md +45 -15
  711. package/docs/webawesome-theme.md +204 -16
  712. package/docs/workbench.md +623 -12
  713. package/doctor/cli.mjs +120 -0
  714. package/doctor/component-style-checks.mjs +457 -0
  715. package/doctor/config.schema.json +94 -0
  716. package/doctor/eslint-diagnostics.d.mts +24 -0
  717. package/doctor/eslint-diagnostics.mjs +24 -0
  718. package/doctor/index.d.mts +122 -0
  719. package/doctor/index.mjs +1403 -0
  720. package/doctor/report.schema.json +118 -0
  721. package/evaluator/cli.mjs +89 -0
  722. package/evaluator/index.d.mts +90 -0
  723. package/evaluator/index.mjs +1203 -0
  724. package/evaluator/report.schema.json +152 -0
  725. package/llms.txt +562 -49
  726. package/package.json +247 -27
  727. package/scripts/component-catalog-extension-validation.mjs +28 -0
  728. package/traversal-exclusions.mjs +27 -0
  729. package/ux-demo/recipes/app-shell.tsx +204 -16
  730. package/ux-demo/recipes/collapsible-sidebar.tsx +260 -0
  731. package/ux-demo/recipes/compact-toolbar.tsx +135 -14
  732. package/ux-demo/recipes/composer-form.tsx +133 -21
  733. package/ux-demo/recipes/list-detail-dialog.tsx +255 -14
  734. package/ux-demo/recipes/list-workspace-states.tsx +183 -11
  735. package/ux-demo/recipes/loaders.ts +11 -3
  736. package/ux-demo/recipes/loading-inspector.tsx +161 -36
  737. package/ux-demo/recipes/mount-recipe.ts +28 -10
  738. package/ux-demo/recipes/navigation-sidebar.tsx +137 -11
  739. package/ux-demo/recipes/navigation-stack.tsx +79 -24
  740. package/ux-demo/recipes/types.ts +23 -2
  741. package/ux-demo/recipes/workspace-header.tsx +86 -5
  742. package/dist/browser/panel-header.js +0 -7
  743. package/dist/chunk-2RJBFNB6.js +0 -172
  744. package/dist/chunk-2RJBFNB6.js.map +0 -1
  745. package/dist/chunk-2TS7ZSYX.js +0 -20
  746. package/dist/chunk-2TS7ZSYX.js.map +0 -1
  747. package/dist/chunk-2Z5TWHKQ.js +0 -34
  748. package/dist/chunk-2Z5TWHKQ.js.map +0 -1
  749. package/dist/chunk-37T3VNIZ.js +0 -19
  750. package/dist/chunk-37T3VNIZ.js.map +0 -1
  751. package/dist/chunk-55DATV3A.js +0 -10
  752. package/dist/chunk-55DATV3A.js.map +0 -1
  753. package/dist/chunk-56RJXPHG.js.map +0 -1
  754. package/dist/chunk-7BR3DO2A.js.map +0 -1
  755. package/dist/chunk-7JB7VPRI.js +0 -34
  756. package/dist/chunk-7JB7VPRI.js.map +0 -1
  757. package/dist/chunk-7LDCTU7D.js +0 -134
  758. package/dist/chunk-7LDCTU7D.js.map +0 -1
  759. package/dist/chunk-AQNKJRFH.js +0 -79
  760. package/dist/chunk-AQNKJRFH.js.map +0 -1
  761. package/dist/chunk-B24C4A6T.js +0 -22
  762. package/dist/chunk-B24C4A6T.js.map +0 -1
  763. package/dist/chunk-BLK3UEEI.js +0 -23
  764. package/dist/chunk-BLK3UEEI.js.map +0 -1
  765. package/dist/chunk-DAFFDO33.js +0 -14
  766. package/dist/chunk-DAFFDO33.js.map +0 -1
  767. package/dist/chunk-I7INRJO4.js +0 -17
  768. package/dist/chunk-I7INRJO4.js.map +0 -1
  769. package/dist/chunk-L4OKFDJY.js +0 -24
  770. package/dist/chunk-L4OKFDJY.js.map +0 -1
  771. package/dist/chunk-LC3YSAZC.js +0 -39
  772. package/dist/chunk-LC3YSAZC.js.map +0 -1
  773. package/dist/chunk-M5JRI6MN.js +0 -27
  774. package/dist/chunk-M5JRI6MN.js.map +0 -1
  775. package/dist/chunk-MBR3TYNL.js +0 -14
  776. package/dist/chunk-MBR3TYNL.js.map +0 -1
  777. package/dist/chunk-MFKMHK5W.js +0 -10
  778. package/dist/chunk-MFKMHK5W.js.map +0 -1
  779. package/dist/chunk-MQIZAD4A.js +0 -227
  780. package/dist/chunk-MQIZAD4A.js.map +0 -1
  781. package/dist/chunk-RUNWEPR4.js +0 -10
  782. package/dist/chunk-RUNWEPR4.js.map +0 -1
  783. package/dist/chunk-W2FK7ZNY.js +0 -26
  784. package/dist/chunk-W2FK7ZNY.js.map +0 -1
  785. package/dist/chunk-W5EQ3HYQ.js +0 -42
  786. package/dist/chunk-W5EQ3HYQ.js.map +0 -1
  787. package/dist/chunk-WVPYVDXY.js +0 -15
  788. package/dist/chunk-WVPYVDXY.js.map +0 -1
  789. package/dist/chunk-YGN7OMLT.js.map +0 -1
  790. package/dist/panel-header.d.ts +0 -36
  791. package/dist/panel-header.js +0 -7
  792. package/dist/panel-header.js.map +0 -1
  793. package/dist/styles/panel-header.css +0 -64
  794. package/dist/styles/tab-scaffold.css +0 -84
  795. package/dist/tab-scaffold.d.ts +0 -30
  796. package/dist/tab-scaffold.js +0 -16
  797. package/dist/tab-scaffold.js.map +0 -1
  798. package/dist/wire-tab-scaffold.d.ts +0 -11
  799. package/dist/wire-tab-scaffold.js +0 -16
  800. package/dist/wire-tab-scaffold.js.map +0 -1
  801. package/docs/tab-scaffold.md +0 -41
  802. package/ux-demo/recipes/recipes.css +0 -361
@@ -0,0 +1,285 @@
1
+ /* An icon-only trigger's accessible name: Web Awesome names its button from the
2
+ slotted content, so the label is present but visually hidden. */
3
+ .kui-popup-menu__label {
4
+ position: absolute;
5
+ width: 1px;
6
+ height: 1px;
7
+ padding: 0;
8
+ overflow: hidden;
9
+ clip: rect(0, 0, 0, 0);
10
+ white-space: nowrap;
11
+ clip-path: inset(50%);
12
+ }
13
+
14
+ /* PopupMenu shares the Select's caret motion, surface inset, row rhythm,
15
+ current-row fill, and group titles from the popup-choice contract in
16
+ foundation.css. Only checkbox items reserve a check column. */
17
+
18
+ /* The trigger caret turns to face the open menu, like the Select's. */
19
+ .kui-popup-menu > wa-button::part(caret) {
20
+ rotate: 0deg;
21
+ transition: var(--_kui-popup-caret-transition);
22
+ }
23
+ .kui-popup-menu[open] > wa-button::part(caret) {
24
+ rotate: var(--_kui-popup-caret-open-rotation);
25
+ }
26
+
27
+ /* The Select's popup fades in place; Web Awesome's dropdown also scales from
28
+ 90%. Holding the scale leaves the shared fade. */
29
+ .kui-popup-menu::part(menu) {
30
+ padding: var(--_kui-popup-inset);
31
+ gap: var(--_kui-popup-row-gap);
32
+ scale: none !important;
33
+ }
34
+
35
+ .kui-popup-menu wa-dropdown-item {
36
+ /* A plain command starts at the checkbox glyph's leading edge. The glyph
37
+ sits half a smaller-font em beyond the row's base inset; its label starts
38
+ after the full check column below. */
39
+ padding: var(--_kui-popup-row-padding-block)
40
+ var(--_kui-popup-row-padding-inline-end) var(--_kui-popup-row-padding-block)
41
+ calc(var(--_kui-popup-row-padding-inline-start) + 0.4375em);
42
+ }
43
+ .kui-popup-menu wa-dropdown-item[type="checkbox"] {
44
+ /* Web Awesome marks every sibling checkbox-adjacent; reserve this column
45
+ only on items whose checked state was explicitly supplied. */
46
+ padding-inline-start: calc(
47
+ var(--_kui-popup-row-padding-inline-start) +
48
+ var(--_kui-popup-row-check-width)
49
+ );
50
+ }
51
+ /* Web Awesome's nested submenu owns its item host padding. Move its exposed
52
+ checkmark inside the panel and leave room for the label beside it. */
53
+ .kui-popup-menu
54
+ wa-dropdown-item[slot="submenu"][type="checkbox"]::part(checkmark) {
55
+ margin-inline-start: 0;
56
+ }
57
+ .kui-popup-menu wa-dropdown-item[slot="submenu"][type="checkbox"]::part(label) {
58
+ padding-inline-start: 1em;
59
+ }
60
+ .kui-popup-menu wa-dropdown-item::part(label) {
61
+ padding-block: var(--_kui-popup-row-label-padding-block);
62
+ line-height: var(--_kui-popup-row-label-line-height);
63
+ }
64
+ /* A keyboard-focused item is the menu's current row: the Select's brand fill,
65
+ with no second focus ring inside the open popup. */
66
+ .kui-popup-menu wa-dropdown-item:focus-visible {
67
+ outline: none;
68
+ color: var(--_kui-popup-row-current-color);
69
+ background-color: var(--_kui-popup-row-current-background);
70
+ }
71
+ .kui-popup-menu > wa-divider,
72
+ .kui-popup-menu wa-divider[slot="submenu"] {
73
+ --spacing: 0.5em;
74
+ }
75
+
76
+ /* Center the icon on the label's line, like the Select's start slot. */
77
+ .kui-popup-menu wa-dropdown-item::part(icon) {
78
+ display: flex;
79
+ align-self: center;
80
+ }
81
+ .kui-popup-menu__icon {
82
+ display: inline-flex;
83
+ width: var(--_kui-popup-row-icon-size);
84
+ height: var(--_kui-popup-row-icon-size);
85
+ flex: none;
86
+ /* Web Awesome spaces a slotted item icon 0.75em from its label (an
87
+ !important shadow rule). Sizing that em makes the gap the Select's. */
88
+ font-size: calc(var(--_kui-popup-row-icon-gap) / 0.75);
89
+ }
90
+ .kui-popup-menu__icon svg {
91
+ display: block;
92
+ width: 100%;
93
+ height: 100%;
94
+ }
95
+
96
+ .kui-popup-menu__details {
97
+ display: inline-flex;
98
+ align-items: center;
99
+ }
100
+
101
+ .kui-popup-menu__details svg {
102
+ display: block;
103
+ width: var(--_kui-popup-row-icon-size);
104
+ height: var(--_kui-popup-row-icon-size);
105
+ }
106
+
107
+ .kui-popup-menu[data-trigger="context"] {
108
+ display: inline-block;
109
+ width: 0;
110
+ height: 0;
111
+ }
112
+
113
+ .kui-popup-menu__context-anchor {
114
+ position: fixed;
115
+ top: var(--kui-popup-menu-context-y, 0px);
116
+ left: var(--kui-popup-menu-context-x, 0px);
117
+ width: 1px;
118
+ height: 1px;
119
+ padding: 0;
120
+ border: 0;
121
+ opacity: 0;
122
+ pointer-events: none;
123
+ }
124
+
125
+ /* A group title matches the Select's group title. It is a styled element
126
+ rather than a slotted heading, whose Web Awesome metrics are !important. */
127
+ .kui-popup-menu__heading {
128
+ padding: var(--_kui-popup-group-title-padding);
129
+ color: var(--kui-color-neutral-on-quiet);
130
+ font-size: var(--kui-font-2xs);
131
+ font-weight: var(--_kui-popup-group-title-font-weight);
132
+ letter-spacing: 0.04em;
133
+ text-transform: uppercase;
134
+ }
135
+
136
+ /* In a ToolbarControlGroup a PopupMenu sizes itself in the group's context:
137
+ the group lays out its own native and raw Web Awesome children and names a
138
+ PopupMenu only to key its own state on it. The trigger takes the group's
139
+ control height (40px, or 32px in a compact group). A mixed-content trigger
140
+ in a nested-dropdown group grows for its label plus the caret; a fixed 32px
141
+ base would center both outside its host, painting the label across the
142
+ separator and the caret beyond the group border. */
143
+ /* The trigger button takes the group's control metrics, as the group's own
144
+ raw wa-button children do (toolbar-control-group.css excludes this
145
+ trigger). The PopupMenu ancestor sits in `:where()` so each rule keeps the
146
+ specificity of the group's matching raw-child rule and resolves against the
147
+ group's attribute-keyed variants exactly as they do. */
148
+ .kui-toolbar-control-group :where(wa-dropdown.kui-popup-menu) > wa-button {
149
+ --wa-form-control-height: 2.5rem;
150
+ display: inline-flex;
151
+ line-height: 0;
152
+ align-items: center;
153
+ justify-content: center;
154
+ --wa-color-fill-quiet: transparent;
155
+ }
156
+ .kui-toolbar-control-group[data-size="compact"]
157
+ :where(wa-dropdown.kui-popup-menu)
158
+ > wa-button {
159
+ --wa-form-control-height: 2rem;
160
+ }
161
+ .kui-toolbar-control-group[data-content="mixed"]
162
+ :where(wa-dropdown.kui-popup-menu)
163
+ > wa-button {
164
+ line-height: normal;
165
+ }
166
+ .kui-toolbar-control-group
167
+ :where(wa-dropdown.kui-popup-menu)
168
+ > wa-button
169
+ > svg {
170
+ display: block;
171
+ width: 1rem;
172
+ height: 1rem;
173
+ }
174
+ /* Toolbar controls never wrap: a slotted icon and its label share one row. */
175
+ .kui-toolbar-control-group
176
+ :where(wa-dropdown.kui-popup-menu)
177
+ > wa-button::part(label) {
178
+ display: inline-flex;
179
+ align-items: center;
180
+ gap: var(--kui-space-xs);
181
+ white-space: nowrap;
182
+ }
183
+ /* At least a circle around an icon-only trigger, with the group's item radius;
184
+ hover lifts the trigger like a group button, except in a `single` group,
185
+ whose whole surface shows the hover (toolbar-control-group.css). */
186
+ .kui-toolbar-control-group
187
+ :where(wa-dropdown.kui-popup-menu)
188
+ > wa-button::part(base) {
189
+ min-width: 2.5rem;
190
+ min-height: 2.5rem;
191
+ box-sizing: border-box;
192
+ border: 1px solid transparent;
193
+ border-radius: var(
194
+ --kui-toolbar-item-radius,
195
+ var(--kui-layout-pill-radius, calc(1px + 1.3125rem))
196
+ );
197
+ }
198
+ .kui-toolbar-control-group
199
+ :where(wa-dropdown.kui-popup-menu)
200
+ > wa-button:hover::part(base) {
201
+ border-color: var(--kui-toolbar-control-border);
202
+ background-color: var(--kui-toolbar-control-hover-background);
203
+ }
204
+ .kui-toolbar-control-group[data-single="true"]
205
+ :where(wa-dropdown.kui-popup-menu)
206
+ > wa-button:hover::part(base) {
207
+ border-color: transparent;
208
+ background: transparent;
209
+ }
210
+ .kui-toolbar-control-group > wa-dropdown.kui-popup-menu {
211
+ display: inline-flex;
212
+ flex: 0 0 auto;
213
+ }
214
+ .kui-toolbar-control-group > wa-dropdown.kui-popup-menu,
215
+ .kui-toolbar-control-group > wa-dropdown.kui-popup-menu > wa-button,
216
+ .kui-toolbar-control-group
217
+ > wa-dropdown.kui-popup-menu
218
+ > wa-button::part(base) {
219
+ min-width: 2.5rem;
220
+ height: 2.5rem;
221
+ }
222
+ .kui-toolbar-control-group[data-size="compact"] > wa-dropdown.kui-popup-menu,
223
+ .kui-toolbar-control-group[data-size="compact"]
224
+ > wa-dropdown.kui-popup-menu
225
+ > wa-button,
226
+ .kui-toolbar-control-group[data-size="compact"]
227
+ > wa-dropdown.kui-popup-menu
228
+ > wa-button::part(base),
229
+ .kui-toolbar-control-group[data-size="compact"][data-nested-dropdown="true"]
230
+ wa-dropdown.kui-popup-menu
231
+ wa-button,
232
+ .kui-toolbar-control-group[data-size="compact"][data-nested-dropdown="true"]
233
+ wa-dropdown.kui-popup-menu
234
+ wa-button::part(base) {
235
+ min-width: 2rem;
236
+ height: 2rem;
237
+ min-height: 2rem;
238
+ }
239
+ .kui-toolbar-control-group[data-size="compact"][data-content="mixed"]
240
+ > wa-dropdown.kui-popup-menu {
241
+ margin: -2px;
242
+ }
243
+ .kui-toolbar-control-group[data-content="mixed"][data-nested-dropdown="true"]
244
+ > wa-dropdown.kui-popup-menu
245
+ > wa-button,
246
+ .kui-toolbar-control-group[data-content="mixed"][data-nested-dropdown="true"]
247
+ > wa-dropdown.kui-popup-menu
248
+ > wa-button::part(base) {
249
+ min-width: max-content;
250
+ }
251
+ .kui-toolbar-control-group[data-content="mixed"][data-nested-dropdown="true"]
252
+ > wa-dropdown.kui-popup-menu
253
+ > wa-button::part(base) {
254
+ width: max-content;
255
+ }
256
+ .kui-toolbar-control-group[data-single="true"]
257
+ > wa-dropdown.kui-popup-menu
258
+ > wa-button::part(base) {
259
+ width: max-content;
260
+ }
261
+
262
+ /* The menu insets a composing parent asks for. A PopupMenu applies them to
263
+ itself; its default is the Select listbox inset above, which a
264
+ ToolbarControlGroup's `standard` inset keeps. A PopupSurface's inset follows
265
+ the group's, so a surface wins when both apply. */
266
+ .kui-toolbar-control-group[data-menu-inset="compact"]
267
+ wa-dropdown.kui-popup-menu::part(menu) {
268
+ padding: 0.25rem;
269
+ }
270
+ .kui-toolbar-control-group[data-menu-inset="list-zero"]
271
+ wa-dropdown.kui-popup-menu::part(menu) {
272
+ padding: 0;
273
+ }
274
+ .kui-popup-surface[data-inset="standard"]
275
+ > wa-dropdown.kui-popup-menu::part(menu) {
276
+ padding: var(--kui-wa-surface-inset, 0.5rem);
277
+ }
278
+ .kui-popup-surface[data-inset="compact"]
279
+ > wa-dropdown.kui-popup-menu::part(menu) {
280
+ padding: 0.25rem;
281
+ }
282
+ .kui-popup-surface[data-inset="list-zero"]
283
+ > wa-dropdown.kui-popup-menu::part(menu) {
284
+ padding: 0;
285
+ }
@@ -0,0 +1,417 @@
1
+ .kui-toolbar {
2
+ display: grid;
3
+ width: 100%;
4
+ /* min-height and padding: see the safe-area rules below. */
5
+ box-sizing: border-box;
6
+ color: var(--kui-color-text);
7
+ background: transparent;
8
+ /* The center track's minimum is `auto`, not 0, so it resolves to the center
9
+ zone's own min-width (its content width, below): when the zones do not all
10
+ fit, the auto leading track is what shrinks and its title truncates, and
11
+ the center group never overflows its track onto the leading identity. */
12
+ grid-template-columns: auto 1fr auto;
13
+ align-items: start;
14
+ gap: var(--kui-toolbar-gap, 0.5rem);
15
+ container: kui-toolbar / inline-size;
16
+ font-family: var(--kui-font-sans);
17
+ }
18
+
19
+ /* Safe areas: a toolbar compensates only for the inline edges its owner hands
20
+ it through `--kui-edge-inset-inline-*` (a Pane header or footer does), so its
21
+ box and dividers keep reaching the edge while its zones clear the unsafe
22
+ area. Unset means none: a toolbar embedded in content never pads for the
23
+ device. An app bar or bottom bar at a screen edge claims its sides with
24
+ `safeAreaEdges`; each claimed side pads by the routed edge context, or the
25
+ full device inset when nothing routes it (the Pane rule), so the top bar of
26
+ a shell clears the status area. A Pane header or footer clears the context
27
+ for its children, so a claimed side there never double-insets. Its zones
28
+ then see a cleared context. */
29
+ .kui-toolbar {
30
+ --_kui-toolbar-safe-block-start: 0px;
31
+ --_kui-toolbar-safe-block-end: 0px;
32
+ --_kui-toolbar-safe-inline-start: var(--kui-edge-inset-inline-start, 0px);
33
+ --_kui-toolbar-safe-inline-end: var(--kui-edge-inset-inline-end, 0px);
34
+ /* The minimum height grows by any claimed block inset, so a toolbar a flex
35
+ column shrinks still keeps a whole control row clear of the unsafe area. */
36
+ min-height: calc(
37
+ var(--kui-toolbar-group-size, calc(2px + 2.625rem)) +
38
+ (2 * var(--kui-toolbar-inset, var(--kui-toolbar-gap, 0.5rem))) +
39
+ var(--_kui-toolbar-safe-block-start) + var(--_kui-toolbar-safe-block-end)
40
+ );
41
+ padding-block: calc(
42
+ var(--kui-toolbar-inset, var(--kui-toolbar-gap, 0.5rem)) +
43
+ var(--_kui-toolbar-safe-block-start)
44
+ )
45
+ calc(
46
+ var(--kui-toolbar-inset, var(--kui-toolbar-gap, 0.5rem)) +
47
+ var(--_kui-toolbar-safe-block-end)
48
+ );
49
+ padding-inline: calc(
50
+ var(--kui-toolbar-inset, var(--kui-toolbar-gap, 0.5rem)) +
51
+ var(--_kui-toolbar-safe-inline-start)
52
+ )
53
+ calc(
54
+ var(--kui-toolbar-inset, var(--kui-toolbar-gap, 0.5rem)) +
55
+ var(--_kui-toolbar-safe-inline-end)
56
+ );
57
+ }
58
+
59
+ .kui-toolbar[data-safe-area-block-start="true"] {
60
+ --_kui-toolbar-safe-block-start: var(
61
+ --kui-edge-inset-block-start,
62
+ var(--kui-safe-area-block-start, env(safe-area-inset-top, 0px))
63
+ );
64
+ }
65
+
66
+ .kui-toolbar[data-safe-area-block-end="true"] {
67
+ --_kui-toolbar-safe-block-end: var(
68
+ --kui-edge-inset-block-end,
69
+ var(--kui-safe-area-block-end, env(safe-area-inset-bottom, 0px))
70
+ );
71
+ }
72
+
73
+ .kui-toolbar[data-safe-area-inline-start="true"] {
74
+ --_kui-toolbar-safe-inline-start: var(
75
+ --kui-edge-inset-inline-start,
76
+ var(--kui-safe-area-inline-start, env(safe-area-inset-left, 0px))
77
+ );
78
+ }
79
+
80
+ .kui-toolbar[data-safe-area-inline-end="true"] {
81
+ --_kui-toolbar-safe-inline-end: var(
82
+ --kui-edge-inset-inline-end,
83
+ var(--kui-safe-area-inline-end, env(safe-area-inset-right, 0px))
84
+ );
85
+ }
86
+
87
+ .kui-toolbar > * {
88
+ --kui-edge-inset-block-start: 0px;
89
+ --kui-edge-inset-block-end: 0px;
90
+ --kui-edge-inset-inline-start: 0px;
91
+ --kui-edge-inset-inline-end: 0px;
92
+ }
93
+
94
+ .kui-toolbar[data-has-center="false"] {
95
+ grid-template-columns: minmax(0, 1fr) auto;
96
+ }
97
+
98
+ /* Equal side tracks center the middle zone on the toolbar's content box even
99
+ when one side has no controls. Side content still shrinks or wraps within
100
+ its own track, and responsive policies below may move a zone to a new row. */
101
+ .kui-toolbar[data-center-align="balanced"][data-has-center="true"] {
102
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
103
+ }
104
+
105
+ .kui-toolbar[data-responsive="trailing-priority"][data-has-center="false"]:has(
106
+ > .kui-toolbar__trailing [data-expanded="true"]
107
+ ) {
108
+ grid-template-columns:
109
+ minmax(0, 1fr)
110
+ minmax(0, var(--kui-token-search-expanded-width, 30rem));
111
+ }
112
+
113
+ .kui-toolbar {
114
+ --_kui-toolbar-divider-top: transparent;
115
+ --_kui-toolbar-divider-right: transparent;
116
+ --_kui-toolbar-divider-bottom: transparent;
117
+ --_kui-toolbar-divider-left: transparent;
118
+ box-shadow:
119
+ inset 0 1px var(--_kui-toolbar-divider-top),
120
+ inset -1px 0 var(--_kui-toolbar-divider-right),
121
+ inset 0 -1px var(--_kui-toolbar-divider-bottom),
122
+ inset 1px 0 var(--_kui-toolbar-divider-left);
123
+ }
124
+
125
+ .kui-toolbar:is([divider-sides*="t"], [data-scroll-divider*="t"]) {
126
+ --_kui-toolbar-divider-top: var(
127
+ --kui-toolbar-divider-color,
128
+ var(--kui-color-neutral-border-normal)
129
+ );
130
+ }
131
+
132
+ .kui-toolbar:is([divider-sides*="r"], [data-scroll-divider*="r"]) {
133
+ --_kui-toolbar-divider-right: var(
134
+ --kui-toolbar-divider-color,
135
+ var(--kui-color-neutral-border-normal)
136
+ );
137
+ }
138
+
139
+ .kui-toolbar:is([divider-sides*="b"], [data-scroll-divider*="b"]) {
140
+ --_kui-toolbar-divider-bottom: var(
141
+ --kui-toolbar-divider-color,
142
+ var(--kui-color-neutral-border-normal)
143
+ );
144
+ }
145
+
146
+ .kui-toolbar:is([divider-sides*="l"], [data-scroll-divider*="l"]) {
147
+ --_kui-toolbar-divider-left: var(
148
+ --kui-toolbar-divider-color,
149
+ var(--kui-color-neutral-border-normal)
150
+ );
151
+ }
152
+
153
+ /* Every zone reserves a group-height control band. Direct custom content
154
+ centers against its zone's height by default. ToolbarText,
155
+ ToolbarControlGroup, and standalone wa-button keep their own first-band
156
+ placement, so taller siblings do not move their controls off that axis.
157
+ `--_kui-toolbar-band` is context those components use for that placement. */
158
+ .kui-toolbar {
159
+ --_kui-toolbar-band: var(--kui-toolbar-group-size, calc(2px + 2.625rem));
160
+ }
161
+
162
+ .kui-toolbar__leading,
163
+ .kui-toolbar__center,
164
+ .kui-toolbar__trailing {
165
+ display: flex;
166
+ min-width: 0;
167
+ min-height: var(--_kui-toolbar-band);
168
+ padding-inline: var(--kui-toolbar-zone-padding-inline, 0px);
169
+ box-sizing: border-box;
170
+ align-items: center;
171
+ gap: var(--kui-toolbar-gap, 0.5rem);
172
+ }
173
+
174
+ /* Pin each zone to its column so a display:none (empty) leading or center zone
175
+ doesn't let the trailing zone auto-place into the first column — which left an
176
+ extra gap + empty track to the trailing zone's right (KF-5BEF2M). The trailing
177
+ zone anchors to the last column via -2/-1, so it stays flush right for both
178
+ the 3- and 2-column layouts, and still stacks under the leading zone when a
179
+ consumer collapses the toolbar to a single column. */
180
+ .kui-toolbar__leading {
181
+ min-width: var(--kui-toolbar-leading-min-width, 0px);
182
+ padding-inline: var(
183
+ --kui-toolbar-leading-padding-inline,
184
+ var(--kui-toolbar-zone-padding-inline, 0px)
185
+ );
186
+ grid-column: 1;
187
+ /* Keep a shrinking title clipped while letting the 3px focus outline plus
188
+ its 1px offset paint past the zone edge. `hidden` cropped the ring of the
189
+ first control in this zone. */
190
+ overflow: clip;
191
+ overflow-clip-margin: 4px;
192
+ }
193
+
194
+ .kui-toolbar__center {
195
+ /* The center content never compresses below its own width (a group cannot
196
+ shrink or clip its controls). The track above takes this as its minimum, so
197
+ the leading identity gives way first, the way a platform toolbar truncates
198
+ its title before it overlaps the centered controls. */
199
+ min-width: min-content;
200
+ padding-inline: var(
201
+ --kui-toolbar-center-padding-inline,
202
+ var(--kui-toolbar-zone-padding-inline, 0px)
203
+ );
204
+ justify-content: center;
205
+ grid-column: 2;
206
+ }
207
+
208
+ .kui-toolbar[data-center-align="stretch"] > .kui-toolbar__center {
209
+ justify-content: flex-start;
210
+ }
211
+
212
+ .kui-toolbar[data-center-align="stretch"] > .kui-toolbar__center > * {
213
+ width: 100%;
214
+ flex-basis: 100%;
215
+ }
216
+
217
+ .kui-toolbar__trailing {
218
+ padding-inline: var(
219
+ --kui-toolbar-trailing-padding-inline,
220
+ var(--kui-toolbar-zone-padding-inline, 0px)
221
+ );
222
+ justify-content: var(--kui-toolbar-trailing-justify, flex-end);
223
+ justify-self: var(--kui-toolbar-trailing-justify-self, stretch);
224
+ grid-column: -2 / -1;
225
+ gap: var(--kui-toolbar-trailing-gap, var(--kui-toolbar-gap, 0.5rem));
226
+ /* Trailing actions never clip (KF-4EYES0): the zone wraps its groups, so its
227
+ track can shrink only to the widest single group. When one row cannot hold
228
+ every group, the next group moves to a new trailing-aligned row instead of
229
+ overflowing the toolbar. */
230
+ flex-wrap: wrap;
231
+ }
232
+
233
+ .kui-toolbar__trailing > wa-button {
234
+ margin-block-start: max(
235
+ 0px,
236
+ calc((var(--_kui-toolbar-band) - var(--wa-form-control-height)) / 2)
237
+ );
238
+ align-self: flex-start;
239
+ flex: 0 0 auto;
240
+ }
241
+
242
+ /* An expanded trailing search gets a complete second row while the leading
243
+ identity and optional center controls remain in the first. The query styles
244
+ descendants because a toolbar cannot query its own container width. */
245
+ @container kui-toolbar (max-width: 52rem) {
246
+ .kui-toolbar[data-responsive="trailing-priority"][data-responsive-at="narrow"][data-has-center="false"]:has(
247
+ > .kui-toolbar__trailing [data-expanded="true"]
248
+ )
249
+ > .kui-toolbar__leading {
250
+ grid-column: 1 / -1;
251
+ grid-row: 1;
252
+ }
253
+
254
+ .kui-toolbar[data-responsive="trailing-priority"][data-responsive-at="narrow"]:has(
255
+ > .kui-toolbar__trailing [data-expanded="true"]
256
+ )
257
+ > .kui-toolbar__trailing {
258
+ width: 100%;
259
+ grid-column: 1 / -1;
260
+ grid-row: 2;
261
+ justify-self: stretch;
262
+ }
263
+
264
+ .kui-toolbar[data-responsive="trailing-priority"][data-responsive-at="narrow"]
265
+ > .kui-toolbar__trailing
266
+ > [data-expanded="true"] {
267
+ width: 100%;
268
+ flex: 1 1 100%;
269
+ }
270
+ }
271
+
272
+ @container kui-toolbar (max-width: 44rem) {
273
+ .kui-toolbar[data-responsive="trailing-priority"][data-responsive-at="compact"][data-has-center="false"]:has(
274
+ > .kui-toolbar__trailing [data-expanded="true"]
275
+ )
276
+ > .kui-toolbar__leading {
277
+ grid-column: 1 / -1;
278
+ grid-row: 1;
279
+ }
280
+
281
+ .kui-toolbar[data-responsive="trailing-priority"][data-responsive-at="compact"]:has(
282
+ > .kui-toolbar__trailing [data-expanded="true"]
283
+ )
284
+ > .kui-toolbar__trailing {
285
+ width: 100%;
286
+ grid-column: 1 / -1;
287
+ grid-row: 2;
288
+ justify-self: stretch;
289
+ }
290
+
291
+ .kui-toolbar[data-responsive="trailing-priority"][data-responsive-at="compact"]
292
+ > .kui-toolbar__trailing
293
+ > [data-expanded="true"] {
294
+ width: 100%;
295
+ flex: 1 1 100%;
296
+ }
297
+ }
298
+
299
+ /* Content-driven wrap: one row while every zone fits at its natural width;
300
+ otherwise the trailing zone moves below the identity, still trailing-aligned,
301
+ instead of truncating the leading title or clipping an action. For panel,
302
+ inspector, and dialog headings whose identity must stay whole. */
303
+ .kui-toolbar[data-responsive="wrap"] {
304
+ display: flex;
305
+ flex-wrap: wrap;
306
+ }
307
+
308
+ .kui-toolbar[data-responsive="wrap"] > .kui-toolbar__leading {
309
+ max-width: 100%;
310
+ flex: 1 1 auto;
311
+ }
312
+
313
+ .kui-toolbar[data-responsive="wrap"] > .kui-toolbar__center {
314
+ flex: 1 1 auto;
315
+ }
316
+
317
+ .kui-toolbar[data-responsive="wrap"] > .kui-toolbar__trailing {
318
+ max-width: 100%;
319
+ flex: 0 1 auto;
320
+ margin-inline-start: auto;
321
+ }
322
+
323
+ .kui-toolbar[data-has-center="false"] .kui-toolbar__center,
324
+ .kui-toolbar__leading:empty,
325
+ .kui-toolbar__trailing:empty {
326
+ display: none;
327
+ }
328
+
329
+ /* Stacked topology. A container query only matches an ancestor container, so
330
+ these rules style the zones (whose query container is this toolbar) rather
331
+ than the toolbar's own grid template, which a self query can never reach.
332
+ Each zone spans every column track, one zone per row, so no empty track or
333
+ column gap narrows a stacked zone. Stacked control zones wrap at group
334
+ granularity (KF-4EYES0: a stacked trailing zone clipped its last action at
335
+ phone widths), so every group stays whole, reachable, and full size; the
336
+ leading identity keeps its single-line truncation. */
337
+ @container kui-toolbar (max-width: 52rem) {
338
+ .kui-toolbar[data-responsive="stack"][data-responsive-at="narrow"]
339
+ > :is(.kui-toolbar__leading, .kui-toolbar__center, .kui-toolbar__trailing) {
340
+ width: 100%;
341
+ grid-column: 1 / -1;
342
+ justify-content: flex-start;
343
+ }
344
+
345
+ .kui-toolbar[data-responsive="stack"][data-responsive-at="narrow"]
346
+ > :is(.kui-toolbar__center, .kui-toolbar__trailing) {
347
+ flex-wrap: wrap;
348
+ }
349
+ }
350
+
351
+ @container kui-toolbar (max-width: 44rem) {
352
+ .kui-toolbar[data-responsive="stack"][data-responsive-at="compact"]
353
+ > :is(.kui-toolbar__leading, .kui-toolbar__center, .kui-toolbar__trailing) {
354
+ width: 100%;
355
+ grid-column: 1 / -1;
356
+ justify-content: flex-start;
357
+ }
358
+
359
+ .kui-toolbar[data-responsive="stack"][data-responsive-at="compact"]
360
+ > :is(.kui-toolbar__center, .kui-toolbar__trailing) {
361
+ flex-wrap: wrap;
362
+ }
363
+ }
364
+
365
+ /* Center priority. As with the stacked topology, the toolbar cannot query its
366
+ own width, so these rules style the zones: while the center holds an expanded
367
+ control, the leading and trailing zones leave and the center spans every
368
+ column track (including the gaps the vacated tracks still own), taking the
369
+ whole row. */
370
+ @container kui-toolbar (max-width: 42rem) {
371
+ .kui-toolbar[data-responsive="center-priority"]:has(
372
+ > .kui-toolbar__center [data-expanded="true"]
373
+ )
374
+ > .kui-toolbar__center {
375
+ width: 100%;
376
+ grid-column: 1 / -1;
377
+ }
378
+
379
+ .kui-toolbar[data-responsive="center-priority"]:has(
380
+ > .kui-toolbar__center [data-expanded="true"]
381
+ )
382
+ > :is(.kui-toolbar__leading, .kui-toolbar__trailing) {
383
+ display: none;
384
+ }
385
+ }
386
+ .kui-toolbar > [data-toolbar-visibility-probe] {
387
+ position: fixed;
388
+ left: 0;
389
+ top: 0;
390
+ height: 0;
391
+ overflow: hidden;
392
+ visibility: hidden;
393
+ pointer-events: none;
394
+ contain: layout paint;
395
+ }
396
+
397
+ .kui-toolbar > [data-toolbar-visibility-probe] > div {
398
+ position: absolute;
399
+ top: 0;
400
+ height: 0;
401
+ min-width: 0;
402
+ max-width: none;
403
+ padding: 0;
404
+ border: 0;
405
+ margin: 0;
406
+ }
407
+
408
+ /* A typed sentinel distinguishes invalid/unresolved input from a valid zero. */
409
+ @property --kui-toolbar-visibility-length {
410
+ syntax: "<length-percentage>";
411
+ inherits: false;
412
+ initial-value: -1px;
413
+ }
414
+ .kui-toolbar > [data-toolbar-visibility-probe] > div {
415
+ left: var(--kui-toolbar-visibility-length);
416
+ width: var(--kui-toolbar-visibility-length);
417
+ }