@kerfjs/ui 4.5.0-beta.1 → 5.0.0-beta.100

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 (980) hide show
  1. package/README.md +461 -116
  2. package/ai/application-ui-diagnostic-ids-v1.json +23 -1
  3. package/ai/application-ui-profile-sync.cjs +21 -2
  4. package/ai/application-ui-profile.d.ts +4 -0
  5. package/ai/application-ui-profile.defaults.json +63 -8
  6. package/ai/application-ui-profile.mjs +28 -1
  7. package/ai/application-ui-profile.schema.json +10 -0
  8. package/ai/catalog-authoring.json +13 -4
  9. package/ai/catalog-authoring.schema.json +52 -8
  10. package/ai/compile-time-contracts-v1.json +63 -16
  11. package/ai/compile-time-contracts-v1.schema.json +4 -1
  12. package/ai/component-catalog-extension.schema.json +25 -0
  13. package/ai/component-catalog.json +5585 -1175
  14. package/ai/component-catalog.schema.json +78 -1
  15. package/ai/component-class-owners.cjs +83 -0
  16. package/ai/component-composition-extension.d.ts +7 -0
  17. package/ai/component-composition-extension.schema.json +7 -0
  18. package/ai/{component-catalog-v2-overrides.json → component-composition-rules.json} +281 -49
  19. package/ai/component-composition.d.ts +132 -0
  20. package/ai/component-composition.json +8729 -0
  21. package/ai/component-composition.schema.json +412 -0
  22. package/ai/components/README.md +185 -0
  23. package/ai/components/anchored-surface.md +99 -0
  24. package/ai/components/application-tabs.md +65 -0
  25. package/ai/components/badge.md +76 -0
  26. package/ai/components/chip.md +76 -0
  27. package/ai/components/choice-chips.md +87 -0
  28. package/ai/components/collapsible-panel.md +103 -0
  29. package/ai/components/column-track.md +78 -0
  30. package/ai/components/combobox.md +88 -0
  31. package/ai/components/composer.md +83 -0
  32. package/ai/components/content-item.md +98 -0
  33. package/ai/components/content-swap.md +78 -0
  34. package/ai/components/corner-status.md +88 -0
  35. package/ai/components/disclosure-arrow.md +77 -0
  36. package/ai/components/document-baseline.md +77 -0
  37. package/ai/components/edge-activity-indicator.md +81 -0
  38. package/ai/components/empty-state.md +80 -0
  39. package/ai/components/feedback.md +71 -0
  40. package/ai/components/file-picker.md +88 -0
  41. package/ai/components/floating-toolbar.md +82 -0
  42. package/ai/components/foundation.md +65 -0
  43. package/ai/components/framed-list.md +80 -0
  44. package/ai/components/grid.md +101 -0
  45. package/ai/components/headers.md +63 -0
  46. package/ai/components/icon-button.md +82 -0
  47. package/ai/components/icon-toggle-button.md +80 -0
  48. package/ai/components/layout.md +75 -0
  49. package/ai/components/list-action-row.md +108 -0
  50. package/ai/components/list-header.md +91 -0
  51. package/ai/components/list-inset-control.md +74 -0
  52. package/ai/components/list-inset-text.md +72 -0
  53. package/ai/components/list-item.md +108 -0
  54. package/ai/components/list.md +125 -0
  55. package/ai/components/loading-spinner.md +73 -0
  56. package/ai/components/lucide-icon.md +97 -0
  57. package/ai/components/nav-stack.md +115 -0
  58. package/ai/components/pane.md +115 -0
  59. package/ai/components/popup-menu.md +171 -0
  60. package/ai/components/recipe-app-shell.md +57 -0
  61. package/ai/components/recipe-collapsible-sidebar.md +57 -0
  62. package/ai/components/recipe-compact-toolbar.md +57 -0
  63. package/ai/components/recipe-composer-form.md +57 -0
  64. package/ai/components/recipe-list-detail-dialog.md +57 -0
  65. package/ai/components/recipe-list-workspace-states.md +57 -0
  66. package/ai/components/recipe-loading-inspector.md +57 -0
  67. package/ai/components/recipe-navigation-sidebar.md +57 -0
  68. package/ai/components/recipe-navigation-stack.md +57 -0
  69. package/ai/components/recipe-workspace-header.md +57 -0
  70. package/ai/components/resize.md +106 -0
  71. package/ai/components/row.md +96 -0
  72. package/ai/components/segmented-control.md +82 -0
  73. package/ai/components/select.md +116 -0
  74. package/ai/components/skeleton.md +84 -0
  75. package/ai/components/spacer.md +86 -0
  76. package/ai/components/split-button.md +80 -0
  77. package/ai/components/split-view.md +105 -0
  78. package/ai/components/state-banner.md +96 -0
  79. package/ai/components/summary-row.md +85 -0
  80. package/ai/components/sunken-panel.md +79 -0
  81. package/ai/components/surface-scaffold.md +105 -0
  82. package/ai/components/tab-bar.md +114 -0
  83. package/ai/components/tab-navigator.md +100 -0
  84. package/ai/components/tabs.md +95 -0
  85. package/ai/components/text.md +90 -0
  86. package/ai/components/token-search-field.md +107 -0
  87. package/ai/components/toolbar-control-group.md +125 -0
  88. package/ai/components/toolbar-text.md +100 -0
  89. package/ai/components/toolbar.md +103 -0
  90. package/ai/components/value-table.md +80 -0
  91. package/ai/components/wa-accordion-item.md +55 -0
  92. package/ai/components/wa-accordion.md +65 -0
  93. package/ai/components/wa-animated-image.md +55 -0
  94. package/ai/components/wa-animation.md +55 -0
  95. package/ai/components/wa-avatar.md +55 -0
  96. package/ai/components/wa-badge.md +55 -0
  97. package/ai/components/wa-breadcrumb-item.md +53 -0
  98. package/ai/components/wa-breadcrumb.md +55 -0
  99. package/ai/components/wa-button-group.md +60 -0
  100. package/ai/components/wa-button.md +59 -0
  101. package/ai/components/wa-callout.md +58 -0
  102. package/ai/components/wa-card.md +59 -0
  103. package/ai/components/wa-carousel-item.md +53 -0
  104. package/ai/components/wa-carousel.md +55 -0
  105. package/ai/components/wa-checkbox-group.md +55 -0
  106. package/ai/components/wa-checkbox.md +55 -0
  107. package/ai/components/wa-color-picker.md +55 -0
  108. package/ai/components/wa-comparison.md +55 -0
  109. package/ai/components/wa-copy-button.md +55 -0
  110. package/ai/components/wa-details.md +61 -0
  111. package/ai/components/wa-dialog.md +59 -0
  112. package/ai/components/wa-divider.md +53 -0
  113. package/ai/components/wa-drawer.md +55 -0
  114. package/ai/components/wa-dropdown-item.md +60 -0
  115. package/ai/components/wa-dropdown.md +60 -0
  116. package/ai/components/wa-format-bytes.md +53 -0
  117. package/ai/components/wa-format-date.md +53 -0
  118. package/ai/components/wa-format-number.md +53 -0
  119. package/ai/components/wa-icon.md +58 -0
  120. package/ai/components/wa-include.md +53 -0
  121. package/ai/components/wa-input.md +59 -0
  122. package/ai/components/wa-intersection-observer.md +53 -0
  123. package/ai/components/wa-known-date.md +53 -0
  124. package/ai/components/wa-markdown.md +53 -0
  125. package/ai/components/wa-mutation-observer.md +53 -0
  126. package/ai/components/wa-number-input.md +55 -0
  127. package/ai/components/wa-option.md +59 -0
  128. package/ai/components/wa-otp-input.md +53 -0
  129. package/ai/components/wa-page.md +53 -0
  130. package/ai/components/wa-pagination.md +55 -0
  131. package/ai/components/wa-popover.md +55 -0
  132. package/ai/components/wa-popup.md +53 -0
  133. package/ai/components/wa-progress-bar.md +53 -0
  134. package/ai/components/wa-progress-ring.md +53 -0
  135. package/ai/components/wa-qr-code.md +53 -0
  136. package/ai/components/wa-radio-group.md +59 -0
  137. package/ai/components/wa-radio.md +55 -0
  138. package/ai/components/wa-random-content.md +53 -0
  139. package/ai/components/wa-rating.md +55 -0
  140. package/ai/components/wa-relative-time.md +53 -0
  141. package/ai/components/wa-resize-observer.md +53 -0
  142. package/ai/components/wa-scroller.md +53 -0
  143. package/ai/components/wa-select.md +63 -0
  144. package/ai/components/wa-skeleton.md +53 -0
  145. package/ai/components/wa-slider.md +55 -0
  146. package/ai/components/wa-spinner.md +58 -0
  147. package/ai/components/wa-split-panel.md +58 -0
  148. package/ai/components/wa-switch.md +53 -0
  149. package/ai/components/wa-tab-group.md +69 -0
  150. package/ai/components/wa-tab-panel.md +60 -0
  151. package/ai/components/wa-tab.md +59 -0
  152. package/ai/components/wa-tag.md +59 -0
  153. package/ai/components/wa-textarea.md +53 -0
  154. package/ai/components/wa-time-input.md +55 -0
  155. package/ai/components/wa-toast-item.md +60 -0
  156. package/ai/components/wa-toast.md +60 -0
  157. package/ai/components/wa-tooltip.md +55 -0
  158. package/ai/components/wa-tree-item.md +55 -0
  159. package/ai/components/wa-tree.md +55 -0
  160. package/ai/components/wa-zoomable-frame.md +55 -0
  161. package/ai/components/workbench.md +120 -0
  162. package/ai/public-api-signatures-v1.md +3851 -441
  163. package/ai/skill.md +402 -70
  164. package/ai/webawesome-jsx-signatures-v1.md +9 -2
  165. package/analyzer/cli.mjs +5 -2
  166. package/analyzer/component-ownership.d.mts +72 -0
  167. package/analyzer/component-ownership.mjs +429 -0
  168. package/analyzer/index.d.mts +8 -0
  169. package/analyzer/index.mjs +1687 -49
  170. package/analyzer/loud-pairs.d.mts +49 -0
  171. package/analyzer/loud-pairs.mjs +357 -0
  172. package/analyzer/selectors.d.mts +21 -0
  173. package/analyzer/selectors.mjs +212 -0
  174. package/catalog-projection-cli.mjs +96 -0
  175. package/catalog-projection.d.mts +55 -0
  176. package/catalog-projection.mjs +62 -0
  177. package/dist/anchored-surface.d.ts +69 -0
  178. package/dist/anchored-surface.js +3 -0
  179. package/dist/anchored-surface.js.map +1 -0
  180. package/dist/app-tab.d.ts +39 -4
  181. package/dist/app-tab.js +2 -1
  182. package/dist/badge.d.ts +83 -0
  183. package/dist/badge.js +4 -0
  184. package/dist/badge.js.map +1 -0
  185. package/dist/browser/anchored-surface.js +3 -0
  186. package/dist/browser/badge.js +3 -0
  187. package/dist/browser/catalog.js +28 -0
  188. package/dist/browser/chip.js +3 -0
  189. package/dist/browser/choice-chips.js +3 -0
  190. package/dist/browser/collapsible-panel.js +9 -0
  191. package/dist/browser/column-track.js +3 -0
  192. package/dist/browser/combobox.js +3 -0
  193. package/dist/browser/composer.js +4 -0
  194. package/dist/browser/content-item.js +3 -0
  195. package/dist/browser/content-swap.js +3 -0
  196. package/dist/browser/corner-status.js +3 -0
  197. package/dist/browser/edge-activity-indicator.js +3 -0
  198. package/dist/browser/file-picker.js +3 -0
  199. package/dist/browser/framed-list.js +3 -0
  200. package/dist/browser/grid.js +3 -0
  201. package/dist/browser/icon-button.js +4 -0
  202. package/dist/browser/icon-toggle-button.js +4 -0
  203. package/dist/browser/list-action-row.js +2 -0
  204. package/dist/browser/list-header.js +3 -1
  205. package/dist/browser/list-item.js +1 -0
  206. package/dist/browser/nav-stack.js +11 -0
  207. package/dist/browser/popup-menu.js +3 -0
  208. package/dist/browser/row.js +3 -0
  209. package/dist/browser/segmented-control.js +0 -1
  210. package/dist/browser/select.js +2 -1
  211. package/dist/browser/spacer.js +3 -0
  212. package/dist/browser/split-button.js +5 -0
  213. package/dist/browser/split-view.js +13 -0
  214. package/dist/browser/state-banner.js +1 -0
  215. package/dist/browser/summary-row.js +3 -0
  216. package/dist/browser/surface-scaffold.js +3 -0
  217. package/dist/browser/tab-navigator.js +4 -0
  218. package/dist/browser/text.js +3 -0
  219. package/dist/browser/toolbar-control-group.js +1 -0
  220. package/dist/browser/workbench.js +14 -0
  221. package/dist/catalog-resources.d.ts +17 -1
  222. package/dist/catalog-resources.js +5 -5
  223. package/dist/catalog-resources.js.map +1 -1
  224. package/dist/catalog.d.ts +123 -121
  225. package/dist/catalog.js +598 -269
  226. package/dist/catalog.js.map +1 -1
  227. package/dist/chip.d.ts +69 -0
  228. package/dist/chip.js +3 -0
  229. package/dist/chip.js.map +1 -0
  230. package/dist/choice-chips.d.ts +82 -0
  231. package/dist/choice-chips.js +3 -0
  232. package/dist/choice-chips.js.map +1 -0
  233. package/dist/chunk-2GOCOLQL.js +270 -0
  234. package/dist/chunk-2GOCOLQL.js.map +1 -0
  235. package/dist/chunk-2MSPNRWJ.js +82 -0
  236. package/dist/chunk-2MSPNRWJ.js.map +1 -0
  237. package/dist/chunk-34U4ANDJ.js +119 -0
  238. package/dist/chunk-34U4ANDJ.js.map +1 -0
  239. package/dist/chunk-3GLYIIFR.js +230 -0
  240. package/dist/chunk-3GLYIIFR.js.map +1 -0
  241. package/dist/{chunk-Y6LYKFXY.js → chunk-3VXDSIBJ.js} +7 -4
  242. package/dist/chunk-3VXDSIBJ.js.map +1 -0
  243. package/dist/chunk-3WYREXW4.js +120 -0
  244. package/dist/chunk-3WYREXW4.js.map +1 -0
  245. package/dist/chunk-4UB5Z3ZZ.js +68 -0
  246. package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
  247. package/dist/chunk-6C6DLP3W.js +31 -0
  248. package/dist/chunk-6C6DLP3W.js.map +1 -0
  249. package/dist/chunk-7IUEBNCO.js +108 -0
  250. package/dist/chunk-7IUEBNCO.js.map +1 -0
  251. package/dist/{chunk-QO55FN2Y.js → chunk-AN5IWMTM.js} +7 -3
  252. package/dist/chunk-AN5IWMTM.js.map +1 -0
  253. package/dist/chunk-AV7CPAPT.js +82 -0
  254. package/dist/chunk-AV7CPAPT.js.map +1 -0
  255. package/dist/{chunk-PX3YSS5C.js → chunk-B53PS2LE.js} +5 -3
  256. package/dist/chunk-B53PS2LE.js.map +1 -0
  257. package/dist/chunk-CA7LNX3J.js +44 -0
  258. package/dist/chunk-CA7LNX3J.js.map +1 -0
  259. package/dist/chunk-CEJ5FK6G.js +288 -0
  260. package/dist/chunk-CEJ5FK6G.js.map +1 -0
  261. package/dist/chunk-CMETHPKR.js +175 -0
  262. package/dist/chunk-CMETHPKR.js.map +1 -0
  263. package/dist/chunk-CMLPFIC5.js +46 -0
  264. package/dist/chunk-CMLPFIC5.js.map +1 -0
  265. package/dist/{chunk-RKVQEH4J.js → chunk-CVD5IZGB.js} +10 -5
  266. package/dist/chunk-CVD5IZGB.js.map +1 -0
  267. package/dist/chunk-CXZXHZTR.js +514 -0
  268. package/dist/chunk-CXZXHZTR.js.map +1 -0
  269. package/dist/chunk-D5RGM3XA.js +38 -0
  270. package/dist/chunk-D5RGM3XA.js.map +1 -0
  271. package/dist/{chunk-KWWR5VMS.js → chunk-DZJ4GBSP.js} +19 -5
  272. package/dist/chunk-DZJ4GBSP.js.map +1 -0
  273. package/dist/chunk-EIET4QLK.js +51 -0
  274. package/dist/chunk-EIET4QLK.js.map +1 -0
  275. package/dist/chunk-ELCMSQNJ.js +49 -0
  276. package/dist/chunk-ELCMSQNJ.js.map +1 -0
  277. package/dist/chunk-EOO6PYGF.js +162 -0
  278. package/dist/chunk-EOO6PYGF.js.map +1 -0
  279. package/dist/chunk-ETCWQLJV.js +85 -0
  280. package/dist/chunk-ETCWQLJV.js.map +1 -0
  281. package/dist/chunk-FDZNYD4C.js +138 -0
  282. package/dist/chunk-FDZNYD4C.js.map +1 -0
  283. package/dist/chunk-FR76ZJQC.js +90 -0
  284. package/dist/chunk-FR76ZJQC.js.map +1 -0
  285. package/dist/chunk-G3J7JDP6.js +29 -0
  286. package/dist/chunk-G3J7JDP6.js.map +1 -0
  287. package/dist/chunk-GS2QD3N7.js +14 -0
  288. package/dist/chunk-GS2QD3N7.js.map +1 -0
  289. package/dist/chunk-HGV7J4T6.js +86 -0
  290. package/dist/chunk-HGV7J4T6.js.map +1 -0
  291. package/dist/chunk-HLDRH23D.js +84 -0
  292. package/dist/chunk-HLDRH23D.js.map +1 -0
  293. package/dist/chunk-HQZYKJ56.js +302 -0
  294. package/dist/chunk-HQZYKJ56.js.map +1 -0
  295. package/dist/chunk-HZPHCSCS.js +95 -0
  296. package/dist/chunk-HZPHCSCS.js.map +1 -0
  297. package/dist/chunk-IKS72C6P.js +53 -0
  298. package/dist/chunk-IKS72C6P.js.map +1 -0
  299. package/dist/chunk-IM3GKYOG.js +202 -0
  300. package/dist/chunk-IM3GKYOG.js.map +1 -0
  301. package/dist/{chunk-JRKSK2HX.js → chunk-INI4WDWC.js} +53 -7
  302. package/dist/chunk-INI4WDWC.js.map +1 -0
  303. package/dist/chunk-IQSRHXZR.js +164 -0
  304. package/dist/chunk-IQSRHXZR.js.map +1 -0
  305. package/dist/{chunk-M7JBER5U.js → chunk-JOR5LGYE.js} +18 -4
  306. package/dist/chunk-JOR5LGYE.js.map +1 -0
  307. package/dist/chunk-K4AT3V3J.js +545 -0
  308. package/dist/chunk-K4AT3V3J.js.map +1 -0
  309. package/dist/chunk-KCS6NJ3O.js +82 -0
  310. package/dist/chunk-KCS6NJ3O.js.map +1 -0
  311. package/dist/{chunk-SRSJO5QE.js → chunk-KH4KEMSP.js} +34 -3
  312. package/dist/chunk-KH4KEMSP.js.map +1 -0
  313. package/dist/chunk-LL45C7BB.js +122 -0
  314. package/dist/chunk-LL45C7BB.js.map +1 -0
  315. package/dist/chunk-LOSRXZAH.js +100 -0
  316. package/dist/chunk-LOSRXZAH.js.map +1 -0
  317. package/dist/{chunk-7KEUJIIC.js → chunk-MF6ZUUJZ.js} +93 -11
  318. package/dist/chunk-MF6ZUUJZ.js.map +1 -0
  319. package/dist/chunk-MHMWQ7RB.js +19 -0
  320. package/dist/chunk-MHMWQ7RB.js.map +1 -0
  321. package/dist/chunk-MJ5RU6XT.js +173 -0
  322. package/dist/chunk-MJ5RU6XT.js.map +1 -0
  323. package/dist/chunk-MXNIVEVL.js +48 -0
  324. package/dist/chunk-MXNIVEVL.js.map +1 -0
  325. package/dist/{chunk-IJBSZ4NX.js → chunk-NS2TBYM4.js} +8 -5
  326. package/dist/chunk-NS2TBYM4.js.map +1 -0
  327. package/dist/chunk-PIVY32AE.js +140 -0
  328. package/dist/chunk-PIVY32AE.js.map +1 -0
  329. package/dist/chunk-PYBBYSZ3.js +526 -0
  330. package/dist/chunk-PYBBYSZ3.js.map +1 -0
  331. package/dist/chunk-QDSZTQXL.js +28 -0
  332. package/dist/chunk-QDSZTQXL.js.map +1 -0
  333. package/dist/chunk-QH5KOFNS.js +39 -0
  334. package/dist/chunk-QH5KOFNS.js.map +1 -0
  335. package/dist/chunk-QIG4IGUP.js +139 -0
  336. package/dist/chunk-QIG4IGUP.js.map +1 -0
  337. package/dist/chunk-QLA25V2K.js +493 -0
  338. package/dist/chunk-QLA25V2K.js.map +1 -0
  339. package/dist/chunk-QROYYGWU.js +52 -0
  340. package/dist/chunk-QROYYGWU.js.map +1 -0
  341. package/dist/chunk-QYMJHS4K.js +36 -0
  342. package/dist/chunk-QYMJHS4K.js.map +1 -0
  343. package/dist/chunk-RHD7RKGI.js +176 -0
  344. package/dist/chunk-RHD7RKGI.js.map +1 -0
  345. package/dist/chunk-S2XULQEK.js +52 -0
  346. package/dist/chunk-S2XULQEK.js.map +1 -0
  347. package/dist/{chunk-LPOMRC4C.js → chunk-S3ECMF23.js} +11 -3
  348. package/dist/chunk-S3ECMF23.js.map +1 -0
  349. package/dist/chunk-S4Y3YTAI.js +35 -0
  350. package/dist/chunk-S4Y3YTAI.js.map +1 -0
  351. package/dist/chunk-S4ZGTDSG.js +18 -0
  352. package/dist/chunk-S4ZGTDSG.js.map +1 -0
  353. package/dist/{chunk-PSKN344N.js → chunk-T4WJ5VGP.js} +63 -12
  354. package/dist/chunk-T4WJ5VGP.js.map +1 -0
  355. package/dist/chunk-TDMHA7C3.js +251 -0
  356. package/dist/chunk-TDMHA7C3.js.map +1 -0
  357. package/dist/{chunk-Y45PPBDV.js → chunk-TGLUDQP2.js} +47 -14
  358. package/dist/chunk-TGLUDQP2.js.map +1 -0
  359. package/dist/chunk-TLMMFQWM.js +222 -0
  360. package/dist/chunk-TLMMFQWM.js.map +1 -0
  361. package/dist/chunk-U6QYTMDB.js +85 -0
  362. package/dist/chunk-U6QYTMDB.js.map +1 -0
  363. package/dist/chunk-UMKV7YVQ.js +20 -0
  364. package/dist/chunk-UMKV7YVQ.js.map +1 -0
  365. package/dist/chunk-VFYO3UGZ.js +45 -0
  366. package/dist/chunk-VFYO3UGZ.js.map +1 -0
  367. package/dist/chunk-W4IK7AWD.js +73 -0
  368. package/dist/chunk-W4IK7AWD.js.map +1 -0
  369. package/dist/chunk-WVS6CUCT.js +48 -0
  370. package/dist/chunk-WVS6CUCT.js.map +1 -0
  371. package/dist/chunk-Y6KT7ZTR.js +109 -0
  372. package/dist/chunk-Y6KT7ZTR.js.map +1 -0
  373. package/dist/chunk-YMUIQRWK.js +44 -0
  374. package/dist/chunk-YMUIQRWK.js.map +1 -0
  375. package/dist/chunk-YOA5W5ZH.js +807 -0
  376. package/dist/chunk-YOA5W5ZH.js.map +1 -0
  377. package/dist/chunk-YQ2AC4E2.js +59 -0
  378. package/dist/chunk-YQ2AC4E2.js.map +1 -0
  379. package/dist/chunk-ZKKO4MHC.js +25 -0
  380. package/dist/chunk-ZKKO4MHC.js.map +1 -0
  381. package/dist/chunk-ZNROKDSZ.js +54 -0
  382. package/dist/chunk-ZNROKDSZ.js.map +1 -0
  383. package/dist/collapsible-panel.d.ts +96 -17
  384. package/dist/collapsible-panel.js +104 -27
  385. package/dist/collapsible-panel.js.map +1 -1
  386. package/dist/column-track.d.ts +41 -0
  387. package/dist/column-track.js +4 -0
  388. package/dist/column-track.js.map +1 -0
  389. package/dist/combobox.d.ts +40 -0
  390. package/dist/combobox.js +3 -0
  391. package/dist/combobox.js.map +1 -0
  392. package/dist/composer.d.ts +62 -0
  393. package/dist/composer.js +5 -0
  394. package/dist/composer.js.map +1 -0
  395. package/dist/content-item.d.ts +116 -0
  396. package/dist/content-item.js +4 -0
  397. package/dist/content-item.js.map +1 -0
  398. package/dist/content-swap.d.ts +34 -0
  399. package/dist/content-swap.js +3 -0
  400. package/dist/content-swap.js.map +1 -0
  401. package/dist/corner-status.d.ts +36 -0
  402. package/dist/corner-status.js +3 -0
  403. package/dist/corner-status.js.map +1 -0
  404. package/dist/css-values.d.ts +127 -0
  405. package/dist/css-values.js +3 -0
  406. package/dist/css-values.js.map +1 -0
  407. package/dist/device-class.js +1 -1
  408. package/dist/device-class.js.map +1 -1
  409. package/dist/disclosure-arrow.d.ts +6 -1
  410. package/dist/disclosure-arrow.js +2 -1
  411. package/dist/edge-activity-indicator.d.ts +28 -0
  412. package/dist/edge-activity-indicator.js +3 -0
  413. package/dist/edge-activity-indicator.js.map +1 -0
  414. package/dist/empty-state.d.ts +5 -2
  415. package/dist/empty-state.js +2 -1
  416. package/dist/extension-attributes-mu8MFUl0.d.ts +13 -0
  417. package/dist/file-picker.d.ts +47 -0
  418. package/dist/file-picker.js +3 -0
  419. package/dist/file-picker.js.map +1 -0
  420. package/dist/flex-alignment-4ms8ZbV8.d.ts +5 -0
  421. package/dist/floating-toolbar.d.ts +29 -6
  422. package/dist/floating-toolbar.js +1 -1
  423. package/dist/framed-list.d.ts +47 -0
  424. package/dist/framed-list.js +4 -0
  425. package/dist/framed-list.js.map +1 -0
  426. package/dist/grid.d.ts +58 -0
  427. package/dist/grid.js +6 -0
  428. package/dist/grid.js.map +1 -0
  429. package/dist/help-tags-register.d.ts +13 -0
  430. package/dist/help-tags-register.js +9 -0
  431. package/dist/help-tags-register.js.map +1 -0
  432. package/dist/icon-button.d.ts +46 -0
  433. package/dist/icon-button.js +6 -0
  434. package/dist/icon-button.js.map +1 -0
  435. package/dist/icon-toggle-button.d.ts +42 -0
  436. package/dist/icon-toggle-button.js +6 -0
  437. package/dist/icon-toggle-button.js.map +1 -0
  438. package/dist/index.d.ts +59 -20
  439. package/dist/index.js +66 -29
  440. package/dist/list-action-row.d.ts +69 -12
  441. package/dist/list-action-row.js +5 -1
  442. package/dist/list-header.d.ts +36 -2
  443. package/dist/list-header.js +4 -1
  444. package/dist/list-icon-tile-B8dr97OW.d.ts +18 -0
  445. package/dist/list-inset-control.d.ts +10 -4
  446. package/dist/list-inset-control.js +1 -1
  447. package/dist/list-inset-text.d.ts +17 -12
  448. package/dist/list-inset-text.js +2 -1
  449. package/dist/list-item.d.ts +49 -5
  450. package/dist/list-item.js +4 -1
  451. package/dist/list.d.ts +121 -12
  452. package/dist/list.js +5 -1
  453. package/dist/loading-spinner.d.ts +12 -2
  454. package/dist/loading-spinner.js +2 -1
  455. package/dist/lucide-icon.d.ts +15 -3
  456. package/dist/lucide-icon.js +2 -1
  457. package/dist/nav-stack-VXTumzKa.d.ts +158 -0
  458. package/dist/nav-stack.d.ts +15 -38
  459. package/dist/nav-stack.js +13 -1
  460. package/dist/pane.d.ts +111 -7
  461. package/dist/pane.js +2 -1
  462. package/dist/panel-toolbar-vg6Ir5Dy.d.ts +77 -0
  463. package/dist/popup-menu-register.d.ts +10 -0
  464. package/dist/popup-menu-register.js +336 -0
  465. package/dist/popup-menu-register.js.map +1 -0
  466. package/dist/popup-menu.d.ts +125 -0
  467. package/dist/popup-menu.js +3 -0
  468. package/dist/popup-menu.js.map +1 -0
  469. package/dist/resizable-region.d.ts +32 -3
  470. package/dist/resizable-region.js +1 -1
  471. package/dist/row.d.ts +53 -0
  472. package/dist/row.js +7 -0
  473. package/dist/row.js.map +1 -0
  474. package/dist/scroll-clearance-BikHljTc.d.ts +14 -0
  475. package/dist/segmented-control.d.ts +7 -4
  476. package/dist/segmented-control.js +1 -2
  477. package/dist/select-register.js +255 -3
  478. package/dist/select-register.js.map +1 -1
  479. package/dist/select.d.ts +95 -6
  480. package/dist/select.js +4 -1
  481. package/dist/semantic-content-BbzjvSu9.d.ts +14 -0
  482. package/dist/semantic-tone-CdW013KF.d.ts +4 -0
  483. package/dist/sides-BPSWde0A.d.ts +4 -0
  484. package/dist/skeleton.d.ts +14 -7
  485. package/dist/skeleton.js +2 -1
  486. package/dist/spacer.d.ts +18 -0
  487. package/dist/spacer.js +4 -0
  488. package/dist/spacer.js.map +1 -0
  489. package/dist/split-button.d.ts +57 -0
  490. package/dist/split-button.js +7 -0
  491. package/dist/split-button.js.map +1 -0
  492. package/dist/split-view.d.ts +63 -6
  493. package/dist/split-view.js +88 -9
  494. package/dist/split-view.js.map +1 -1
  495. package/dist/state-banner.d.ts +37 -6
  496. package/dist/state-banner.js +4 -1
  497. package/dist/styles/anchored-surface.css +41 -0
  498. package/dist/styles/app-tab.css +232 -0
  499. package/dist/styles/badge.css +145 -0
  500. package/dist/styles/catalog/components/catalog-example-stack.css +14 -0
  501. package/dist/styles/catalog/components/catalog-example.css +204 -0
  502. package/dist/styles/catalog/components/catalog-stage.css +61 -0
  503. package/dist/styles/catalog/components/catalog.css +26 -0
  504. package/dist/styles/catalog.css +5 -575
  505. package/dist/styles/chip.css +208 -0
  506. package/dist/styles/choice-chips.css +154 -0
  507. package/dist/styles/collapsible-panel.css +450 -16
  508. package/dist/styles/column-track.css +57 -0
  509. package/dist/styles/combobox.css +113 -0
  510. package/dist/styles/components/actions/floating-toolbar/floating-toolbar.css +119 -0
  511. package/dist/styles/components/actions/icon-button/icon-button.css +22 -0
  512. package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +83 -0
  513. package/dist/styles/components/actions/popup-menu/popup-menu.css +370 -0
  514. package/dist/styles/components/actions/split-button/split-button.css +95 -0
  515. package/dist/styles/components/actions/toolbar/toolbar.css +443 -0
  516. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +1069 -0
  517. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +269 -0
  518. package/dist/styles/components/collections/framed-list/framed-list.css +47 -0
  519. package/dist/styles/components/collections/list/list.css +250 -0
  520. package/dist/styles/components/collections/list-action-row/list-action-row.css +466 -0
  521. package/dist/styles/components/collections/list-header/list-header.css +229 -0
  522. package/dist/styles/components/collections/list-inset-control/list-inset-control.css +30 -0
  523. package/dist/styles/components/collections/list-inset-text/list-inset-text.css +29 -0
  524. package/dist/styles/components/collections/list-item/list-item.css +461 -0
  525. package/dist/styles/components/collections/summary-row/summary-row.css +161 -0
  526. package/dist/styles/components/data-display/value-table/value-table.css +183 -0
  527. package/dist/styles/components/feedback/anchored-surface/anchored-surface.css +41 -0
  528. package/dist/styles/components/feedback/badge/badge.css +145 -0
  529. package/dist/styles/components/feedback/chip/chip.css +208 -0
  530. package/dist/styles/components/feedback/corner-status/corner-status.css +60 -0
  531. package/dist/styles/components/feedback/edge-activity-indicator/edge-activity-indicator.css +127 -0
  532. package/dist/styles/components/feedback/empty-state/empty-state.css +47 -0
  533. package/dist/styles/components/feedback/loading-spinner/loading-spinner.css +25 -0
  534. package/dist/styles/components/feedback/skeleton/skeleton.css +92 -0
  535. package/dist/styles/components/feedback/state-banner/state-banner.css +297 -0
  536. package/dist/styles/components/forms/choice-chips/choice-chips.css +154 -0
  537. package/dist/styles/components/forms/combobox/combobox.css +113 -0
  538. package/dist/styles/components/forms/composer/composer.css +100 -0
  539. package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
  540. package/dist/styles/components/forms/segmented-control/segmented-control.css +196 -0
  541. package/dist/styles/components/forms/select/select.css +455 -0
  542. package/dist/styles/components/forms/token-search-field/token-search-field.css +432 -0
  543. package/dist/styles/components/layout/collapsible-panel/collapsible-panel.css +580 -0
  544. package/dist/styles/components/layout/column-track/column-track.css +57 -0
  545. package/dist/styles/components/layout/content-swap/content-swap.css +154 -0
  546. package/dist/styles/components/layout/grid/grid.css +88 -0
  547. package/dist/styles/components/layout/pane/pane.css +382 -0
  548. package/dist/styles/components/layout/resizable-region/resizable-region.css +545 -0
  549. package/dist/styles/components/layout/row/row.css +114 -0
  550. package/dist/styles/components/layout/spacer/spacer.css +11 -0
  551. package/dist/styles/components/layout/split-view/split-view.css +146 -0
  552. package/dist/styles/components/layout/workbench/workbench.css +1086 -0
  553. package/dist/styles/components/media/lucide-icon/lucide-icon.css +15 -0
  554. package/dist/styles/components/navigation/app-tab/app-tab.css +384 -0
  555. package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +23 -0
  556. package/dist/styles/components/navigation/nav-stack/nav-stack.css +342 -0
  557. package/dist/styles/components/navigation/tab-bar/tab-bar.css +197 -0
  558. package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +325 -0
  559. package/dist/styles/components/surfaces/content-item/content-item.css +138 -0
  560. package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +31 -0
  561. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +425 -0
  562. package/dist/styles/components/typography/text/text.css +220 -0
  563. package/dist/styles/composer.css +100 -0
  564. package/dist/styles/content-item.css +138 -0
  565. package/dist/styles/content-swap.css +154 -0
  566. package/dist/styles/corner-status.css +60 -0
  567. package/dist/styles/document.css +98 -0
  568. package/dist/styles/edge-activity-indicator.css +127 -0
  569. package/dist/styles/file-picker.css +81 -0
  570. package/dist/styles/floating-toolbar.css +87 -6
  571. package/dist/styles/foundation.css +254 -53
  572. package/dist/styles/framed-list.css +47 -0
  573. package/dist/styles/grid.css +88 -0
  574. package/dist/styles/icon-button.css +22 -0
  575. package/dist/styles/icon-toggle-button.css +83 -0
  576. package/dist/styles/layout.css +1 -21
  577. package/dist/styles/list-action-row.css +323 -17
  578. package/dist/styles/list-header.css +128 -59
  579. package/dist/styles/list-inset-control.css +25 -2
  580. package/dist/styles/list-inset-text.css +27 -12
  581. package/dist/styles/list-item.css +371 -33
  582. package/dist/styles/list.css +214 -7
  583. package/dist/styles/loading-spinner.css +4 -0
  584. package/dist/styles/lucide-icon.css +9 -0
  585. package/dist/styles/nav-stack.css +280 -49
  586. package/dist/styles/pane.css +322 -2
  587. package/dist/styles/popup-menu.css +370 -0
  588. package/dist/styles/resizable-region.css +438 -4
  589. package/dist/styles/row.css +114 -0
  590. package/dist/styles/segmented-control.css +34 -3
  591. package/dist/styles/select.css +338 -23
  592. package/dist/styles/skeleton.css +64 -3
  593. package/dist/styles/spacer.css +11 -0
  594. package/dist/styles/split-button.css +95 -0
  595. package/dist/styles/split-view.css +114 -3
  596. package/dist/styles/state-banner.css +141 -42
  597. package/dist/styles/styles.css +22 -1
  598. package/dist/styles/summary-row.css +161 -0
  599. package/dist/styles/sunken-panel.css +13 -4
  600. package/dist/styles/surface-scaffold.css +425 -0
  601. package/dist/styles/tab-bar.css +161 -9
  602. package/dist/styles/tab-navigator.css +325 -0
  603. package/dist/styles/text.css +220 -0
  604. package/dist/styles/token-search-field.css +202 -59
  605. package/dist/styles/toolbar-control-group.css +886 -42
  606. package/dist/styles/toolbar-text.css +184 -7
  607. package/dist/styles/toolbar.css +363 -17
  608. package/dist/styles/value-table.css +115 -7
  609. package/dist/styles/webawesome.css +282 -20
  610. package/dist/styles/workbench.css +999 -7
  611. package/dist/summary-row.d.ts +56 -0
  612. package/dist/summary-row.js +4 -0
  613. package/dist/summary-row.js.map +1 -0
  614. package/dist/sunken-panel.d.ts +23 -4
  615. package/dist/sunken-panel.js +2 -1
  616. package/dist/surface-scaffold-register.d.ts +9 -0
  617. package/dist/surface-scaffold-register.js +151 -0
  618. package/dist/surface-scaffold-register.js.map +1 -0
  619. package/dist/surface-scaffold.d.ts +170 -0
  620. package/dist/surface-scaffold.js +4 -0
  621. package/dist/surface-scaffold.js.map +1 -0
  622. package/dist/tab-bar.d.ts +31 -6
  623. package/dist/tab-bar.js +1 -1
  624. package/dist/tab-navigator.d.ts +114 -0
  625. package/dist/tab-navigator.js +102 -0
  626. package/dist/tab-navigator.js.map +1 -0
  627. package/dist/text.d.ts +98 -0
  628. package/dist/text.js +3 -0
  629. package/dist/text.js.map +1 -0
  630. package/dist/token-search-field.d.ts +3 -59
  631. package/dist/token-search-field.js +2 -1
  632. package/dist/token-search-model-aYR0YAei.d.ts +184 -0
  633. package/dist/token-search-model.d.ts +3 -0
  634. package/dist/token-search-model.js +3 -0
  635. package/dist/token-search-model.js.map +1 -0
  636. package/dist/toolbar-control-group.d.ts +87 -4
  637. package/dist/toolbar-control-group.js +3 -1
  638. package/dist/toolbar-text.d.ts +46 -12
  639. package/dist/toolbar-text.js +2 -1
  640. package/dist/toolbar.d.ts +71 -9
  641. package/dist/toolbar.js +1 -1
  642. package/dist/types-CVgIwSdq.d.ts +189 -0
  643. package/dist/value-table.d.ts +30 -4
  644. package/dist/value-table.js +2 -1
  645. package/dist/webawesome.d.ts +8 -1
  646. package/dist/wire-catalog.d.ts +88 -13
  647. package/dist/wire-catalog.js +240 -206
  648. package/dist/wire-catalog.js.map +1 -1
  649. package/dist/wire-comboboxes.d.ts +26 -0
  650. package/dist/wire-comboboxes.js +3 -0
  651. package/dist/wire-comboboxes.js.map +1 -0
  652. package/dist/wire-composers.d.ts +16 -0
  653. package/dist/wire-composers.js +3 -0
  654. package/dist/wire-composers.js.map +1 -0
  655. package/dist/wire-content-items.d.ts +11 -0
  656. package/dist/wire-content-items.js +139 -0
  657. package/dist/wire-content-items.js.map +1 -0
  658. package/dist/wire-corner-status.d.ts +11 -0
  659. package/dist/wire-corner-status.js +3 -0
  660. package/dist/wire-corner-status.js.map +1 -0
  661. package/dist/wire-file-pickers.d.ts +26 -0
  662. package/dist/wire-file-pickers.js +3 -0
  663. package/dist/wire-file-pickers.js.map +1 -0
  664. package/dist/wire-list-focus-scroll.d.ts +16 -0
  665. package/dist/wire-list-focus-scroll.js +3 -0
  666. package/dist/wire-list-focus-scroll.js.map +1 -0
  667. package/dist/wire-list-reorder.d.ts +41 -0
  668. package/dist/wire-list-reorder.js +3 -0
  669. package/dist/wire-list-reorder.js.map +1 -0
  670. package/dist/wire-nav-stack.d.ts +4 -1
  671. package/dist/wire-nav-stack.js +312 -16
  672. package/dist/wire-nav-stack.js.map +1 -1
  673. package/dist/wire-resizable-regions.d.ts +2 -1
  674. package/dist/wire-resizable-regions.js +2 -1
  675. package/dist/wire-scroll-dividers.d.ts +87 -0
  676. package/dist/wire-scroll-dividers.js +3 -0
  677. package/dist/wire-scroll-dividers.js.map +1 -0
  678. package/dist/wire-sidebar.d.ts +24 -4
  679. package/dist/wire-sidebar.js +122 -19
  680. package/dist/wire-sidebar.js.map +1 -1
  681. package/dist/wire-tab-bars.d.ts +1 -0
  682. package/dist/wire-tab-bars.js +1 -1
  683. package/dist/wire-tab-navigator.d.ts +13 -0
  684. package/dist/wire-tab-navigator.js +153 -0
  685. package/dist/wire-tab-navigator.js.map +1 -0
  686. package/dist/wire-token-search-fields.d.ts +5 -1
  687. package/dist/wire-token-search-fields.js +2 -1
  688. package/dist/wire-toolbar-visibility.d.ts +13 -0
  689. package/dist/wire-toolbar-visibility.js +3 -0
  690. package/dist/wire-toolbar-visibility.js.map +1 -0
  691. package/dist/wire-workbench.d.ts +116 -0
  692. package/dist/wire-workbench.js +6 -0
  693. package/dist/wire-workbench.js.map +1 -0
  694. package/dist/workbench.d.ts +253 -10
  695. package/dist/workbench.js +20 -62
  696. package/dist/workbench.js.map +1 -1
  697. package/docs/accessibility.md +617 -32
  698. package/docs/anchored-surface.md +101 -0
  699. package/docs/app-layouts.md +159 -10
  700. package/docs/apple-hig.md +2 -0
  701. package/docs/catalog.md +403 -110
  702. package/docs/collapsible-panel.md +272 -16
  703. package/docs/component-contract.md +700 -79
  704. package/docs/component-integration.md +75 -0
  705. package/docs/component-selection.md +908 -79
  706. package/docs/composer.md +143 -0
  707. package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -0
  708. package/docs/design/templates/choice-chips/color-palette.svg +1 -0
  709. package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -0
  710. package/docs/design/templates/choice-chips/compact-icons.svg +1 -0
  711. package/docs/design/templates/choice-chips/multiple-dark.svg +1 -0
  712. package/docs/design/templates/choice-chips/multiple.svg +1 -0
  713. package/docs/design/templates/choice-chips-dark.svg +1 -0
  714. package/docs/design/templates/choice-chips.svg +1 -0
  715. package/docs/design/templates/composer/chat-dark.svg +1 -0
  716. package/docs/design/templates/composer/chat.svg +1 -0
  717. package/docs/design/templates/composer/prompt-dark.svg +1 -0
  718. package/docs/design/templates/composer/prompt.svg +1 -0
  719. package/docs/design/templates/composer-dark.svg +1 -0
  720. package/docs/design/templates/composer.svg +1 -0
  721. package/docs/design/templates/empty-state/filtered-dark.svg +1 -1
  722. package/docs/design/templates/empty-state/filtered.svg +1 -1
  723. package/docs/design/templates/empty-state/with-action-dark.svg +1 -1
  724. package/docs/design/templates/empty-state/with-action.svg +1 -1
  725. package/docs/design/templates/empty-state-dark.svg +1 -1
  726. package/docs/design/templates/empty-state.svg +1 -1
  727. package/docs/design/templates/list/compact-dark.svg +1 -1
  728. package/docs/design/templates/list/compact.svg +1 -1
  729. package/docs/design/templates/list/stack-dark.svg +1 -1
  730. package/docs/design/templates/list/stack.svg +1 -1
  731. package/docs/design/templates/list-action-row/default-dark.svg +1 -1
  732. package/docs/design/templates/list-action-row/default.svg +1 -1
  733. package/docs/design/templates/list-action-row/icon-tile-dark.svg +1 -0
  734. package/docs/design/templates/list-action-row/icon-tile.svg +1 -0
  735. package/docs/design/templates/list-action-row/selected-dark.svg +1 -1
  736. package/docs/design/templates/list-action-row/selected.svg +1 -1
  737. package/docs/design/templates/list-action-row/trailing-menu-dark.svg +1 -0
  738. package/docs/design/templates/list-action-row/trailing-menu.svg +1 -0
  739. package/docs/design/templates/list-action-row-dark.svg +1 -1
  740. package/docs/design/templates/list-action-row.svg +1 -1
  741. package/docs/design/templates/list-dark.svg +1 -1
  742. package/docs/design/templates/list-header/action-dark.svg +1 -1
  743. package/docs/design/templates/list-header/action.svg +1 -1
  744. package/docs/design/templates/list-header/count-dark.svg +1 -1
  745. package/docs/design/templates/list-header/count.svg +1 -1
  746. package/docs/design/templates/list-header/inline-action-dark.svg +1 -0
  747. package/docs/design/templates/list-header/inline-action.svg +1 -0
  748. package/docs/design/templates/list-header/size-l-dark.svg +1 -0
  749. package/docs/design/templates/list-header/size-l.svg +1 -0
  750. package/docs/design/templates/list-header/size-m-dark.svg +1 -0
  751. package/docs/design/templates/list-header/size-m.svg +1 -0
  752. package/docs/design/templates/list-header/size-xl-dark.svg +1 -0
  753. package/docs/design/templates/list-header/size-xl.svg +1 -0
  754. package/docs/design/templates/list-header/size-xs-dark.svg +1 -0
  755. package/docs/design/templates/list-header/size-xs.svg +1 -0
  756. package/docs/design/templates/list-header/toggle-collapsed-dark.svg +1 -1
  757. package/docs/design/templates/list-header/toggle-collapsed.svg +1 -1
  758. package/docs/design/templates/list-header/toggle-expanded-dark.svg +1 -1
  759. package/docs/design/templates/list-header/toggle-expanded.svg +1 -1
  760. package/docs/design/templates/list-header-dark.svg +1 -1
  761. package/docs/design/templates/list-header.svg +1 -1
  762. package/docs/design/templates/list-item/default-dark.svg +1 -1
  763. package/docs/design/templates/list-item/default.svg +1 -1
  764. package/docs/design/templates/list-item/icon-tile-dark.svg +1 -0
  765. package/docs/design/templates/list-item/icon-tile.svg +1 -0
  766. package/docs/design/templates/list-item/multiline-dark.svg +1 -1
  767. package/docs/design/templates/list-item/multiline.svg +1 -1
  768. package/docs/design/templates/list-item/selected-dark.svg +1 -1
  769. package/docs/design/templates/list-item/selected.svg +1 -1
  770. package/docs/design/templates/list-item/trailing-dark.svg +1 -1
  771. package/docs/design/templates/list-item/trailing.svg +1 -1
  772. package/docs/design/templates/list-item-dark.svg +1 -1
  773. package/docs/design/templates/list-item.svg +1 -1
  774. package/docs/design/templates/list.svg +1 -1
  775. package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
  776. package/docs/design/templates/segmented-control/equal.svg +1 -1
  777. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
  778. package/docs/design/templates/segmented-control/pill-small.svg +1 -1
  779. package/docs/design/templates/segmented-control-dark.svg +1 -1
  780. package/docs/design/templates/segmented-control.svg +1 -1
  781. package/docs/design/templates/skeleton-dark.svg +1 -1
  782. package/docs/design/templates/skeleton.svg +1 -1
  783. package/docs/design/templates/state-banner/danger-dark.svg +1 -1
  784. package/docs/design/templates/state-banner/danger.svg +1 -1
  785. package/docs/design/templates/state-banner/info-badge-dark.svg +1 -1
  786. package/docs/design/templates/state-banner/info-badge.svg +1 -1
  787. package/docs/design/templates/state-banner/info-dark.svg +1 -1
  788. package/docs/design/templates/state-banner/info.svg +1 -1
  789. package/docs/design/templates/state-banner/strip-dark.svg +1 -0
  790. package/docs/design/templates/state-banner/strip.svg +1 -0
  791. package/docs/design/templates/state-banner/success-dark.svg +1 -1
  792. package/docs/design/templates/state-banner/success.svg +1 -1
  793. package/docs/design/templates/state-banner/warning-dark.svg +1 -1
  794. package/docs/design/templates/state-banner/warning.svg +1 -1
  795. package/docs/design/templates/state-banner-dark.svg +1 -1
  796. package/docs/design/templates/state-banner.svg +1 -1
  797. package/docs/design/templates/tab-bar/workspace-tabs-dark.svg +1 -1
  798. package/docs/design/templates/tab-bar/workspace-tabs.svg +1 -1
  799. package/docs/design/templates/tab-bar-dark.svg +1 -1
  800. package/docs/design/templates/tab-bar.svg +1 -1
  801. package/docs/design/templates/token-search-field/empty-dark.svg +1 -1
  802. package/docs/design/templates/token-search-field/empty.svg +1 -1
  803. package/docs/design/templates/token-search-field/tokens-dark.svg +1 -1
  804. package/docs/design/templates/token-search-field/tokens.svg +1 -1
  805. package/docs/design/templates/token-search-field-dark.svg +1 -1
  806. package/docs/design/templates/token-search-field.svg +1 -1
  807. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
  808. package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
  809. package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -0
  810. package/docs/design/templates/toolbar/width-visibility-320.svg +1 -0
  811. package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -0
  812. package/docs/design/templates/toolbar/width-visibility-600.svg +1 -0
  813. package/docs/design/templates/toolbar-control-group/borderless-single-dark.svg +1 -1
  814. package/docs/design/templates/toolbar-control-group/borderless-single.svg +1 -1
  815. package/docs/design/templates/toolbar-control-group/icon-buttons-dark.svg +1 -1
  816. package/docs/design/templates/toolbar-control-group/icon-buttons.svg +1 -1
  817. package/docs/design/templates/toolbar-control-group/icon-tile-brand-dark.svg +1 -0
  818. package/docs/design/templates/toolbar-control-group/icon-tile-brand.svg +1 -0
  819. package/docs/design/templates/toolbar-control-group/icon-tile-danger-dark.svg +1 -0
  820. package/docs/design/templates/toolbar-control-group/icon-tile-danger.svg +1 -0
  821. package/docs/design/templates/toolbar-control-group/icon-tile-neutral-dark.svg +1 -0
  822. package/docs/design/templates/toolbar-control-group/icon-tile-neutral.svg +1 -0
  823. package/docs/design/templates/toolbar-control-group/icon-tile-success-dark.svg +1 -0
  824. package/docs/design/templates/toolbar-control-group/icon-tile-success.svg +1 -0
  825. package/docs/design/templates/toolbar-control-group/icon-tile-warning-dark.svg +1 -0
  826. package/docs/design/templates/toolbar-control-group/icon-tile-warning.svg +1 -0
  827. package/docs/design/templates/toolbar-control-group/push-buttons-dark.svg +1 -1
  828. package/docs/design/templates/toolbar-control-group/push-buttons.svg +1 -1
  829. package/docs/design/templates/toolbar-control-group/with-text-dark.svg +1 -1
  830. package/docs/design/templates/toolbar-control-group/with-text.svg +1 -1
  831. package/docs/design/templates/toolbar-control-group-dark.svg +1 -1
  832. package/docs/design/templates/toolbar-control-group.svg +1 -1
  833. package/docs/design/templates/toolbar-dark.svg +1 -1
  834. package/docs/design/templates/toolbar-text/dark-tone-dark.svg +1 -0
  835. package/docs/design/templates/toolbar-text/dark-tone.svg +1 -0
  836. package/docs/design/templates/toolbar-text/default-dark.svg +1 -1
  837. package/docs/design/templates/toolbar-text/default.svg +1 -1
  838. package/docs/design/templates/toolbar-text/large-dark.svg +1 -1
  839. package/docs/design/templates/toolbar-text/large.svg +1 -1
  840. package/docs/design/templates/toolbar-text/small-dark.svg +1 -1
  841. package/docs/design/templates/toolbar-text/small.svg +1 -1
  842. package/docs/design/templates/toolbar-text-dark.svg +1 -1
  843. package/docs/design/templates/toolbar-text.svg +1 -1
  844. package/docs/design/templates/toolbar.svg +1 -1
  845. package/docs/design/templates/value-table/details-dark.svg +1 -1
  846. package/docs/design/templates/value-table/details.svg +1 -1
  847. package/docs/design/templates/value-table-dark.svg +1 -1
  848. package/docs/design/templates/value-table.svg +1 -1
  849. package/docs/design/templates.md +19 -9
  850. package/docs/design-philosophy.md +58 -11
  851. package/docs/device-class.md +2 -1
  852. package/docs/document-baseline.md +93 -0
  853. package/docs/examples/application-ui-profile.json +8 -8
  854. package/docs/examples/command-palette-adapter.tsx +9 -7
  855. package/docs/examples/component-catalog-extension.json +8 -1
  856. package/docs/examples/{component-catalog-extension-v2.json → component-composition-extension.json} +8 -9
  857. package/docs/layout.md +764 -40
  858. package/docs/nav-stack.md +275 -11
  859. package/docs/recipes.md +125 -69
  860. package/docs/split-view.md +94 -5
  861. package/docs/sunken-panel.md +54 -1
  862. package/docs/surface-scaffold.md +270 -0
  863. package/docs/tab-navigator.md +255 -0
  864. package/docs/type-contracts.md +57 -22
  865. package/docs/ui-analyzer.md +334 -14
  866. package/docs/ui-doctor.md +207 -10
  867. package/docs/ui-evaluator.md +17 -0
  868. package/docs/ux-demo.md +47 -16
  869. package/docs/webawesome-theme.md +148 -14
  870. package/docs/workbench.md +600 -11
  871. package/docs/writing.md +152 -0
  872. package/doctor/cli.mjs +5 -0
  873. package/doctor/component-style-checks.mjs +457 -0
  874. package/doctor/config.schema.json +26 -0
  875. package/doctor/copy-capitalization-checks.mjs +591 -0
  876. package/doctor/eslint-diagnostics.d.mts +16 -0
  877. package/doctor/eslint-diagnostics.mjs +17 -0
  878. package/doctor/index.d.mts +6 -0
  879. package/doctor/index.mjs +214 -47
  880. package/evaluator/index.mjs +73 -8
  881. package/llms.txt +702 -56
  882. package/package.json +256 -25
  883. package/scripts/component-catalog-extension-validation.mjs +28 -0
  884. package/traversal-exclusions.mjs +60 -1
  885. package/ux-demo/recipes/app-shell.tsx +181 -189
  886. package/ux-demo/recipes/collapsible-sidebar.tsx +177 -139
  887. package/ux-demo/recipes/compact-toolbar.tsx +120 -101
  888. package/ux-demo/recipes/composer-form.tsx +86 -62
  889. package/ux-demo/recipes/list-detail-dialog.tsx +219 -114
  890. package/ux-demo/recipes/list-workspace-states.tsx +95 -80
  891. package/ux-demo/recipes/loaders.ts +5 -2
  892. package/ux-demo/recipes/loading-inspector.tsx +157 -117
  893. package/ux-demo/recipes/mount-recipe.ts +0 -5
  894. package/ux-demo/recipes/navigation-sidebar.tsx +98 -83
  895. package/ux-demo/recipes/navigation-stack.tsx +42 -29
  896. package/ux-demo/recipes/types.ts +14 -1
  897. package/ux-demo/recipes/workspace-header.tsx +77 -51
  898. package/vite-ux-review.d.mts +83 -0
  899. package/vite-ux-review.mjs +120 -0
  900. package/ai/component-catalog-extension-v2.d.ts +0 -7
  901. package/ai/component-catalog-extension-v2.schema.json +0 -7
  902. package/ai/component-catalog-v2.d.ts +0 -67
  903. package/ai/component-catalog-v2.json +0 -4675
  904. package/ai/component-catalog-v2.schema.json +0 -246
  905. package/dist/browser/panel-header.js +0 -7
  906. package/dist/chunk-5VTB2BKP.js +0 -35
  907. package/dist/chunk-5VTB2BKP.js.map +0 -1
  908. package/dist/chunk-6WTETUZ6.js +0 -21
  909. package/dist/chunk-6WTETUZ6.js.map +0 -1
  910. package/dist/chunk-7KEUJIIC.js.map +0 -1
  911. package/dist/chunk-7XRDUG4Y.js +0 -58
  912. package/dist/chunk-7XRDUG4Y.js.map +0 -1
  913. package/dist/chunk-B3A3IVO5.js +0 -83
  914. package/dist/chunk-B3A3IVO5.js.map +0 -1
  915. package/dist/chunk-DPDBVKNA.js +0 -113
  916. package/dist/chunk-DPDBVKNA.js.map +0 -1
  917. package/dist/chunk-FEAMR7S4.js +0 -68
  918. package/dist/chunk-FEAMR7S4.js.map +0 -1
  919. package/dist/chunk-FEY65TBV.js +0 -15
  920. package/dist/chunk-FEY65TBV.js.map +0 -1
  921. package/dist/chunk-IJBSZ4NX.js.map +0 -1
  922. package/dist/chunk-J5BFYY7Q.js +0 -35
  923. package/dist/chunk-J5BFYY7Q.js.map +0 -1
  924. package/dist/chunk-JRKSK2HX.js.map +0 -1
  925. package/dist/chunk-KWWR5VMS.js.map +0 -1
  926. package/dist/chunk-LPOMRC4C.js.map +0 -1
  927. package/dist/chunk-M7JBER5U.js.map +0 -1
  928. package/dist/chunk-NENBUYX5.js +0 -79
  929. package/dist/chunk-NENBUYX5.js.map +0 -1
  930. package/dist/chunk-NWSEP5RT.js +0 -117
  931. package/dist/chunk-NWSEP5RT.js.map +0 -1
  932. package/dist/chunk-OJWWHFH3.js +0 -426
  933. package/dist/chunk-OJWWHFH3.js.map +0 -1
  934. package/dist/chunk-PSKN344N.js.map +0 -1
  935. package/dist/chunk-PX3YSS5C.js.map +0 -1
  936. package/dist/chunk-QO55FN2Y.js.map +0 -1
  937. package/dist/chunk-R7ZWUN64.js +0 -38
  938. package/dist/chunk-R7ZWUN64.js.map +0 -1
  939. package/dist/chunk-RKVQEH4J.js.map +0 -1
  940. package/dist/chunk-SRSJO5QE.js.map +0 -1
  941. package/dist/chunk-SYDMYBPG.js +0 -31
  942. package/dist/chunk-SYDMYBPG.js.map +0 -1
  943. package/dist/chunk-TB6DY7H5.js +0 -25
  944. package/dist/chunk-TB6DY7H5.js.map +0 -1
  945. package/dist/chunk-UFZKLBCF.js +0 -108
  946. package/dist/chunk-UFZKLBCF.js.map +0 -1
  947. package/dist/chunk-UKKSMZYT.js +0 -281
  948. package/dist/chunk-UKKSMZYT.js.map +0 -1
  949. package/dist/chunk-W2FK7ZNY.js +0 -26
  950. package/dist/chunk-W2FK7ZNY.js.map +0 -1
  951. package/dist/chunk-W5L2JSBY.js +0 -40
  952. package/dist/chunk-W5L2JSBY.js.map +0 -1
  953. package/dist/chunk-Y45PPBDV.js.map +0 -1
  954. package/dist/chunk-Y6LYKFXY.js.map +0 -1
  955. package/dist/divider-sides-267FA7sY.d.ts +0 -4
  956. package/dist/panel-header.d.ts +0 -42
  957. package/dist/panel-header.js +0 -7
  958. package/dist/panel-header.js.map +0 -1
  959. package/dist/styles/panel-header.css +0 -64
  960. package/dist/styles/tab-scaffold.css +0 -84
  961. package/dist/tab-scaffold.d.ts +0 -30
  962. package/dist/tab-scaffold.js +0 -51
  963. package/dist/tab-scaffold.js.map +0 -1
  964. package/dist/wire-tab-scaffold.d.ts +0 -11
  965. package/dist/wire-tab-scaffold.js +0 -21
  966. package/dist/wire-tab-scaffold.js.map +0 -1
  967. package/docs/design/templates/panel-header/icon-actions-dark.svg +0 -1
  968. package/docs/design/templates/panel-header/icon-actions.svg +0 -1
  969. package/docs/design/templates/panel-header/icon-summary-actions-dark.svg +0 -1
  970. package/docs/design/templates/panel-header/icon-summary-actions.svg +0 -1
  971. package/docs/design/templates/panel-header/no-icon-dark.svg +0 -1
  972. package/docs/design/templates/panel-header/no-icon.svg +0 -1
  973. package/docs/design/templates/panel-header/page-heading-dark.svg +0 -1
  974. package/docs/design/templates/panel-header/page-heading.svg +0 -1
  975. package/docs/design/templates/panel-header/title-only-dark.svg +0 -1
  976. package/docs/design/templates/panel-header/title-only.svg +0 -1
  977. package/docs/design/templates/panel-header-dark.svg +0 -1
  978. package/docs/design/templates/panel-header.svg +0 -1
  979. package/docs/tab-scaffold.md +0 -50
  980. package/ux-demo/recipes/recipes.css +0 -448
@@ -1,28 +1,68 @@
1
1
  .kui-workbench {
2
+ position: relative;
3
+ /* The rail and drawer overlays and the restore controls stack within the
4
+ Workbench, never against the page around it. */
5
+ isolation: isolate;
2
6
  display: flex;
3
7
  min-width: 0;
4
8
  min-height: 0;
5
9
  height: 100%;
6
10
  overflow: hidden;
7
11
  background: var(--kui-color-surface);
12
+ /* Safe areas: every track paints through the unsafe area it reaches (a rail
13
+ or drawer grows by that inset), and each region's content compensates only
14
+ for the edges the region still touches. An expanded inline rail takes its
15
+ edge away from the center; collapsing it hands the edge back. See pane.css
16
+ for the `--kui-edge-inset-*` edge context. */
17
+ --_kui-workbench-safe-block-start: var(
18
+ --kui-edge-inset-block-start,
19
+ var(--kui-safe-area-block-start, env(safe-area-inset-top, 0px))
20
+ );
21
+ --_kui-workbench-safe-block-end: var(
22
+ --kui-edge-inset-block-end,
23
+ var(--kui-safe-area-block-end, env(safe-area-inset-bottom, 0px))
24
+ );
25
+ --_kui-workbench-safe-inline-start: var(
26
+ --kui-edge-inset-inline-start,
27
+ var(--kui-safe-area-inline-start, env(safe-area-inset-left, 0px))
28
+ );
29
+ --_kui-workbench-safe-inline-end: var(
30
+ --kui-edge-inset-inline-end,
31
+ var(--kui-safe-area-inline-end, env(safe-area-inset-right, 0px))
32
+ );
8
33
  }
9
34
 
10
35
  /* Side rails. Collapsing snaps the flex track to zero (one reflow) while the
11
36
  fixed-width content slides out via transform (composited, clipped) — never a
12
37
  per-frame width animation. See docs/18 / the KF-7QKJRK catalog sidebar. */
13
38
  .kui-workbench__rail {
14
- flex: 0 0 var(--kui-workbench-rail-width, 17.5rem);
39
+ --kui-edge-inset-block-start: var(--_kui-workbench-safe-block-start);
40
+ --kui-edge-inset-block-end: var(--_kui-workbench-safe-block-end);
41
+ --_kui-workbench-rail-extent: calc(
42
+ var(--kui-workbench-rail-width, 17.5rem) +
43
+ var(--_kui-workbench-rail-safe-inset)
44
+ );
45
+ /* The size is the whole track, separator border included, in or out of
46
+ flow and whatever box model the app defaults to. */
47
+ box-sizing: border-box;
48
+ flex: 0 0 var(--_kui-workbench-rail-extent);
15
49
  min-width: 0;
16
50
  overflow: hidden;
17
51
  background: var(--kui-color-surface);
18
52
  }
19
53
 
20
54
  .kui-workbench__rail--left {
21
- border-inline-end: 1px solid var(--kui-color-border);
55
+ --_kui-workbench-rail-safe-inset: var(--_kui-workbench-safe-inline-start);
56
+ --kui-edge-inset-inline-start: var(--_kui-workbench-safe-inline-start);
57
+ --kui-edge-inset-inline-end: 0px;
58
+ border-inline-end: 1px solid var(--kui-color-neutral-border-normal);
22
59
  }
23
60
 
24
61
  .kui-workbench__rail--right {
25
- border-inline-start: 1px solid var(--kui-color-border);
62
+ --_kui-workbench-rail-safe-inset: var(--_kui-workbench-safe-inline-end);
63
+ --kui-edge-inset-inline-start: 0px;
64
+ --kui-edge-inset-inline-end: var(--_kui-workbench-safe-inline-end);
65
+ border-inline-start: 1px solid var(--kui-color-neutral-border-normal);
26
66
  }
27
67
 
28
68
  .kui-workbench__rail[data-collapsed="true"] {
@@ -30,7 +70,19 @@
30
70
  border-inline: 0;
31
71
  }
32
72
 
73
+ .kui-workbench__rail[data-separator="hidden"],
74
+ .kui-workbench__drawer[data-separator="hidden"] {
75
+ border-color: transparent;
76
+ }
77
+
78
+ /* The center is the overlay drawer's containing block, so a drawer that
79
+ leaves the flow still covers exactly the work-area column it docks under. */
33
80
  .kui-workbench__center {
81
+ position: relative;
82
+ --kui-edge-inset-block-start: var(--_kui-workbench-safe-block-start);
83
+ --kui-edge-inset-block-end: var(--_kui-workbench-safe-block-end);
84
+ --kui-edge-inset-inline-start: var(--_kui-workbench-safe-inline-start);
85
+ --kui-edge-inset-inline-end: var(--_kui-workbench-safe-inline-end);
34
86
  display: flex;
35
87
  flex: 1;
36
88
  min-width: 0;
@@ -39,18 +91,162 @@
39
91
  flex-direction: column;
40
92
  }
41
93
 
94
+ .kui-workbench[data-left-inline-expanded="true"] > .kui-workbench__center {
95
+ --kui-edge-inset-inline-start: 0px;
96
+ }
97
+
98
+ .kui-workbench[data-right-inline-expanded="true"] > .kui-workbench__center {
99
+ --kui-edge-inset-inline-end: 0px;
100
+ }
101
+
42
102
  .kui-workbench__main {
103
+ position: relative;
43
104
  flex: 1;
44
105
  min-height: 0;
45
106
  overflow: auto;
46
107
  }
47
108
 
109
+ :is(.kui-workbench__main, .kui-workbench__rail, .kui-workbench__drawer):is(
110
+ :focus-visible,
111
+ [data-outlined="true"]
112
+ ) {
113
+ outline: var(--kui-focus-ring);
114
+ outline-offset: -3px;
115
+ }
116
+
117
+ /* A sole Pane can host an opaque full-width scroller above the main outline.
118
+ Keep the selected work-area ring in the final paint layer, without blocking
119
+ controls in that Pane. Other main compositions retain their own outline. */
120
+ .kui-workbench__main:has(> [data-component="pane"]:only-child):is(
121
+ :focus-visible,
122
+ [data-outlined="true"]
123
+ )::after {
124
+ position: absolute;
125
+ z-index: 1;
126
+ outline: var(--kui-focus-ring);
127
+ outline-offset: -3px;
128
+ content: "";
129
+ inset: 0;
130
+ pointer-events: none;
131
+ }
132
+
133
+ /* When no Pane chrome is composed, the Workbench region owns its scroll.
134
+ A resizable auto-overflow panel instead scrolls its content box so its
135
+ separator handle remains fixed. Paint only that owner. */
136
+ .kui-workbench__main[data-appearance="sunken"],
137
+ :is(.kui-workbench__rail, .kui-workbench__drawer)[data-appearance="sunken"] {
138
+ background: var(--kui-sunken-panel-background, var(--kui-sunken-surface));
139
+ }
140
+
141
+ :is(
142
+ .kui-workbench__rail,
143
+ .kui-workbench__drawer
144
+ )[data-appearance="sunken"][data-resizable="true"][data-content-overflow="auto"] {
145
+ background: transparent;
146
+ }
147
+
148
+ :is(
149
+ .kui-workbench__rail,
150
+ .kui-workbench__drawer
151
+ )[data-appearance="sunken"][data-resizable="true"][data-content-overflow="auto"]
152
+ > .kui-workbench__panel-content {
153
+ background: var(--kui-sunken-panel-background, var(--kui-sunken-surface));
154
+ }
155
+
156
+ .kui-workbench__main[data-drawer-inline-expanded="true"] {
157
+ --_kui-workbench-content-edge-block-end: 0px;
158
+ }
159
+
160
+ /* The main area and each panel's content are the consumers: they pad for the
161
+ edges their region still touches, the main area inside its scroller so
162
+ content scrolls under an unsafe edge but can always be scrolled clear. A
163
+ region whose only child is a Pane or layout lets that child own the insets. */
164
+ .kui-workbench__center,
165
+ .kui-workbench__rail,
166
+ .kui-workbench__drawer {
167
+ --_kui-workbench-content-edge-block-start: var(--kui-edge-inset-block-start);
168
+ --_kui-workbench-content-edge-block-end: var(--kui-edge-inset-block-end);
169
+ --_kui-workbench-content-edge-inline-start: var(
170
+ --kui-edge-inset-inline-start
171
+ );
172
+ --_kui-workbench-content-edge-inline-end: var(--kui-edge-inset-inline-end);
173
+ }
174
+
175
+ .kui-workbench__main,
176
+ .kui-workbench__panel-content {
177
+ /* Clear the public context at the region, so arbitrary app children inherit
178
+ zero without a selector whose subject is every child in the document. */
179
+ --kui-edge-inset-block-start: 0px;
180
+ --kui-edge-inset-block-end: 0px;
181
+ --kui-edge-inset-inline-start: 0px;
182
+ --kui-edge-inset-inline-end: 0px;
183
+ }
184
+
185
+ .kui-workbench__main:not(
186
+ :has(
187
+ > :is(
188
+ [data-component="pane"],
189
+ [data-component="nav-stack"],
190
+ [data-component="split-view"],
191
+ [data-component="workbench"],
192
+ [data-component="tab-scaffold"]
193
+ ):only-child
194
+ )
195
+ ),
196
+ .kui-workbench__panel-content:not(
197
+ :has(
198
+ > :is(
199
+ [data-component="pane"],
200
+ [data-component="nav-stack"],
201
+ [data-component="split-view"],
202
+ [data-component="workbench"],
203
+ [data-component="tab-scaffold"]
204
+ ):only-child
205
+ )
206
+ ) {
207
+ padding-block: var(--_kui-workbench-content-edge-block-start)
208
+ var(--_kui-workbench-content-edge-block-end);
209
+ padding-inline: var(--_kui-workbench-content-edge-inline-start)
210
+ var(--_kui-workbench-content-edge-inline-end);
211
+ scroll-padding-block: var(--_kui-workbench-content-edge-block-start)
212
+ var(--_kui-workbench-content-edge-block-end);
213
+ }
214
+
215
+ /* A nested Workbench owns its safe-area insets. Other sole layout children
216
+ restore this context from their own stylesheets. */
217
+ :is(.kui-workbench__main, .kui-workbench__panel-content)
218
+ > [data-component="workbench"]:only-child {
219
+ --kui-edge-inset-block-start: var(--_kui-workbench-content-edge-block-start);
220
+ --kui-edge-inset-block-end: var(--_kui-workbench-content-edge-block-end);
221
+ --kui-edge-inset-inline-start: var(
222
+ --_kui-workbench-content-edge-inline-start
223
+ );
224
+ --kui-edge-inset-inline-end: var(--_kui-workbench-content-edge-inline-end);
225
+ }
226
+
227
+ /* A region whose only child is a Pane or layout lets it fill the region, so a
228
+ composed toolbar's footer (or the app's own) sits at the region's bottom
229
+ edge rather than under short content. Each of those components fills the
230
+ region from its own stylesheet (pane.css, nav-stack.css, split-view.css,
231
+ tab-navigator.css); a nested Workbench fills it here. */
232
+ :is(.kui-workbench__main, .kui-workbench__panel-content)
233
+ > [data-component="workbench"]:only-child {
234
+ height: 100%;
235
+ }
236
+
48
237
  /* Bottom drawer — the vertical analogue of a rail. */
49
238
  .kui-workbench__drawer {
50
- flex: 0 0 var(--kui-workbench-drawer-height, 13.75rem);
239
+ --kui-edge-inset-block-start: 0px;
240
+ --_kui-workbench-drawer-extent: calc(
241
+ var(--kui-workbench-drawer-height, 13.75rem) +
242
+ var(--_kui-workbench-safe-block-end)
243
+ );
244
+ box-sizing: border-box;
245
+ position: relative;
246
+ flex: 0 0 var(--_kui-workbench-drawer-extent);
51
247
  min-height: 0;
52
248
  overflow: hidden;
53
- border-block-start: 1px solid var(--kui-color-border);
249
+ border-block-start: 1px solid var(--kui-color-neutral-border-normal);
54
250
  background: var(--kui-color-surface);
55
251
  }
56
252
 
@@ -59,20 +255,57 @@
59
255
  border-block-start: 0;
60
256
  }
61
257
 
258
+ .kui-workbench__rail[data-content-overflow="auto"],
259
+ .kui-workbench__drawer[data-content-overflow="auto"] {
260
+ overflow: auto;
261
+ }
262
+
263
+ .kui-workbench__rail[data-content-overflow="visible"],
264
+ .kui-workbench__drawer[data-content-overflow="visible"] {
265
+ z-index: var(--kui-workbench-popup-z, 5);
266
+ overflow: visible;
267
+ }
268
+
269
+ .kui-workbench__rail:has(wa-dropdown[open]),
270
+ .kui-workbench__drawer:has(wa-dropdown[open]) {
271
+ z-index: var(--kui-workbench-popup-z, 5);
272
+ }
273
+
62
274
  /* The fixed-size sliding content. The rail/drawer keeps a definite size on its
63
275
  content so the transform reads as a slide, not a squeeze. */
64
276
  .kui-workbench__rail .kui-workbench__panel-content {
65
- width: var(--kui-workbench-rail-width, 17.5rem);
277
+ width: var(--_kui-workbench-rail-extent);
66
278
  height: 100%;
67
279
  transition: transform 200ms ease;
68
280
  }
69
281
 
70
282
  .kui-workbench__drawer .kui-workbench__panel-content {
283
+ position: absolute;
284
+ inset-inline: 0;
285
+ inset-block-end: 0;
71
286
  width: 100%;
72
- height: var(--kui-workbench-drawer-height, 13.75rem);
287
+ height: var(--_kui-workbench-drawer-extent);
73
288
  transition: transform 200ms ease;
74
289
  }
75
290
 
291
+ .kui-workbench__rail[data-collapse-motion="none"] .kui-workbench__panel-content,
292
+ .kui-workbench__drawer[data-collapse-motion="none"]
293
+ .kui-workbench__panel-content {
294
+ transition: none;
295
+ }
296
+
297
+ :is(.kui-workbench__rail, .kui-workbench__drawer)[data-resizing="true"]
298
+ > .kui-workbench__panel-content {
299
+ transition: none;
300
+ }
301
+
302
+ .kui-workbench__rail[data-collapse-motion="fade-slide"][data-collapsed="true"]
303
+ .kui-workbench__panel-content,
304
+ .kui-workbench__drawer[data-collapse-motion="fade-slide"][data-collapsed="true"]
305
+ .kui-workbench__panel-content {
306
+ opacity: 0;
307
+ }
308
+
76
309
  .kui-workbench__rail--left[data-collapsed="true"]
77
310
  .kui-workbench__panel-content {
78
311
  transform: translateX(-100%);
@@ -87,8 +320,767 @@
87
320
  transform: translateY(100%);
88
321
  }
89
322
 
323
+ /* Opt-in resizable panels. The size lives in the resize wiring's track
324
+ property, which the wiring updates live during a drag, so the rail width or
325
+ drawer height follows it; collapsing leaves it alone, so the panel expands
326
+ back to the size it had. These rules precede the presentation rules below,
327
+ which must keep winning for overlay and hidden panels. */
328
+ .kui-workbench__rail[data-resizable="true"] {
329
+ --kui-workbench-rail-width: var(--kui-resizable-region-size);
330
+ position: relative;
331
+ }
332
+
333
+ .kui-workbench__drawer[data-resizable="true"] {
334
+ --kui-workbench-drawer-height: var(--kui-resizable-region-size);
335
+ }
336
+
337
+ /* The work area keeps a minimum width beside the rails (the Workbench's
338
+ `mainMinSize`) and a minimum height above the drawer (`mainMinHeight`),
339
+ never larger than the Workbench itself. Inline panels, fixed or resizable,
340
+ give way instead: when the container narrows the rails shrink in proportion
341
+ to their sizes, when it gets shorter the drawer shrinks, and their content
342
+ follows the shown size. The wiring stops a resize where the work area would
343
+ drop below the minimum. */
344
+ .kui-workbench[data-main-min-size] > .kui-workbench__center {
345
+ min-width: min(var(--_kui-workbench-main-min-width), 100%);
346
+ }
347
+
348
+ .kui-workbench[data-main-min-height]
349
+ > .kui-workbench__center
350
+ > .kui-workbench__main {
351
+ min-height: min(var(--_kui-workbench-main-min-height), 100%);
352
+ }
353
+
354
+ .kui-workbench__rail[data-presentation="inline"]:not([data-collapsed="true"]),
355
+ .kui-workbench__drawer[data-presentation="inline"]:not(
356
+ [data-collapsed="true"]
357
+ ) {
358
+ flex-shrink: 1;
359
+ }
360
+
361
+ /* Low specificity, so a responsive overlay (below) restores the fixed size. */
362
+ .kui-workbench__rail:where(
363
+ [data-presentation="inline"]:not([data-collapsed="true"])
364
+ )
365
+ > .kui-workbench__panel-content {
366
+ width: 100%;
367
+ }
368
+
369
+ .kui-workbench__drawer:where(
370
+ [data-presentation="inline"]:not([data-collapsed="true"])
371
+ )
372
+ > .kui-workbench__panel-content {
373
+ height: 100%;
374
+ }
375
+
376
+ /* The panel clips its sliding content, so a scrolling panel scrolls its
377
+ content box instead of itself: the separator handle is a child of the panel
378
+ and must not scroll away with the content. */
379
+ .kui-workbench__rail[data-resizable="true"][data-content-overflow="auto"],
380
+ .kui-workbench__drawer[data-resizable="true"][data-content-overflow="auto"] {
381
+ overflow: hidden;
382
+ }
383
+
384
+ .kui-workbench__rail[data-resizable="true"][data-content-overflow="auto"]
385
+ > .kui-workbench__panel-content,
386
+ .kui-workbench__drawer[data-resizable="true"][data-content-overflow="auto"]
387
+ > .kui-workbench__panel-content {
388
+ overflow: auto;
389
+ }
390
+
391
+ /* The separator handle: the 20px hit target and dormant grip a
392
+ ResizableRegion handle has. The panel's own border stays the visible
393
+ separator line. By default the target sits wholly inside the panel, at its
394
+ inner edge, because the panel clips its sliding content. */
395
+ .kui-workbench__handle {
396
+ position: absolute;
397
+ z-index: 3;
398
+ display: grid;
399
+ color: var(--kui-color-neutral-on-quiet);
400
+ place-items: center;
401
+ touch-action: none;
402
+ }
403
+
404
+ .kui-workbench__rail > .kui-workbench__handle {
405
+ inset-block: 0;
406
+ width: 20px;
407
+ cursor: col-resize;
408
+ }
409
+
410
+ .kui-workbench__rail--left > .kui-workbench__handle {
411
+ inset-inline-end: 0;
412
+ }
413
+
414
+ .kui-workbench__rail--right > .kui-workbench__handle {
415
+ inset-inline-start: 0;
416
+ }
417
+
418
+ .kui-workbench__drawer > .kui-workbench__handle {
419
+ inset-inline: 0;
420
+ inset-block-start: 0;
421
+ height: 20px;
422
+ cursor: row-resize;
423
+ }
424
+
425
+ .kui-workbench__rail[data-collapsed="true"] > .kui-workbench__handle,
426
+ .kui-workbench__drawer[data-collapsed="true"] > .kui-workbench__handle,
427
+ .kui-workbench__rail:not([data-presentation="inline"]) > .kui-workbench__handle,
428
+ .kui-workbench__drawer:not([data-presentation="inline"])
429
+ > .kui-workbench__handle {
430
+ display: none;
431
+ }
432
+
433
+ /* An expanded panel lets exactly the handle's outer half through its clip, so
434
+ the hit target straddles the separator like a ResizableRegion handle does
435
+ and the grip is drawn centered on the separator line. Collapsing drops the
436
+ extension again before the content slides out. Engines that can extend a
437
+ clip past the panel's edge do it with `overflow-clip-margin`; the rest
438
+ (WebKit) clip with a `clip-path` that reaches past the panel's edges. That
439
+ also makes the panel a stacking context, so the panel stacks at the
440
+ handle's own level to keep the handle's outer half above the work area
441
+ beside it. The clip and the stacking level sit at low specificity, so a
442
+ responsive overlay presentation (below) replaces both. */
443
+ @supports not (overflow-clip-margin: 10px) {
444
+ .kui-workbench__rail[data-resizable="true"][data-presentation="inline"]:not(
445
+ [data-collapsed="true"],
446
+ [data-content-overflow="visible"]
447
+ ),
448
+ .kui-workbench__drawer[data-resizable="true"][data-presentation="inline"]:not(
449
+ [data-collapsed="true"],
450
+ [data-content-overflow="visible"]
451
+ ) {
452
+ overflow: visible;
453
+ }
454
+
455
+ .kui-workbench__rail:where(
456
+ [data-resizable="true"][data-presentation="inline"]:not(
457
+ [data-collapsed="true"],
458
+ [data-content-overflow="visible"]
459
+ )
460
+ ) {
461
+ z-index: 3;
462
+ clip-path: inset(0 -10px);
463
+ }
464
+
465
+ .kui-workbench__drawer:where(
466
+ [data-resizable="true"][data-presentation="inline"]:not(
467
+ [data-collapsed="true"],
468
+ [data-content-overflow="visible"]
469
+ )
470
+ ) {
471
+ z-index: 3;
472
+ clip-path: inset(-10px 0 0);
473
+ }
474
+
475
+ .kui-workbench__rail--left[data-resizable="true"][data-presentation="inline"]
476
+ > .kui-workbench__handle {
477
+ inset-inline-end: -10px;
478
+ }
479
+
480
+ .kui-workbench__rail--right[data-resizable="true"][data-presentation="inline"]
481
+ > .kui-workbench__handle {
482
+ inset-inline-start: -10px;
483
+ }
484
+
485
+ .kui-workbench__drawer[data-resizable="true"][data-presentation="inline"]
486
+ > .kui-workbench__handle {
487
+ inset-block-start: -10px;
488
+ }
489
+ }
490
+
491
+ @supports (overflow-clip-margin: 10px) {
492
+ .kui-workbench__rail[data-resizable="true"]:not(
493
+ [data-collapsed="true"],
494
+ [data-content-overflow="visible"]
495
+ ),
496
+ .kui-workbench__drawer[data-resizable="true"]:not(
497
+ [data-collapsed="true"],
498
+ [data-content-overflow="visible"]
499
+ ) {
500
+ overflow: clip;
501
+ overflow-clip-margin: 10px;
502
+ }
503
+
504
+ .kui-workbench__rail--left[data-resizable="true"] > .kui-workbench__handle {
505
+ inset-inline-end: -10px;
506
+ }
507
+
508
+ .kui-workbench__rail--right[data-resizable="true"] > .kui-workbench__handle {
509
+ inset-inline-start: -10px;
510
+ }
511
+
512
+ .kui-workbench__drawer[data-resizable="true"] > .kui-workbench__handle {
513
+ inset-block-start: -10px;
514
+ }
515
+ }
516
+
517
+ .kui-workbench__handle:hover,
518
+ .kui-workbench__handle:focus-visible {
519
+ color: var(--kui-color-text-link);
520
+ }
521
+
522
+ /* The ring stays wholly inside the handle's box, as a ResizableRegion
523
+ handle's does. */
524
+ .kui-workbench__handle:focus-visible {
525
+ border-radius: var(--kui-radius-s);
526
+ outline: var(--kui-focus-ring);
527
+ outline-offset: -3px;
528
+ }
529
+
530
+ .kui-workbench__handle-icon {
531
+ position: relative;
532
+ display: grid;
533
+ width: 0.9rem;
534
+ height: 0.9rem;
535
+ opacity: 0;
536
+ pointer-events: none;
537
+ place-items: center;
538
+ }
539
+
540
+ .kui-workbench__handle-icon > svg {
541
+ width: 100%;
542
+ height: 100%;
543
+ }
544
+
545
+ .kui-workbench__handle:hover .kui-workbench__handle-icon,
546
+ .kui-workbench__handle:focus-visible .kui-workbench__handle-icon {
547
+ opacity: 1;
548
+ }
549
+
550
+ /* Overlay stacking order: both rails stack above the bottom drawer, one below
551
+ the overlay z-index, as inline rails span the Workbench's full height beside
552
+ the drawer's column; the right rail stacks above the left (document order).
553
+ Restore controls stack below every overlay (see .kui-workbench__restore). */
554
+ .kui-workbench__rail[data-presentation="overlay"],
555
+ .kui-workbench__drawer[data-presentation="overlay"] {
556
+ position: absolute;
557
+ z-index: var(--kui-workbench-overlay-z, 41);
558
+ box-shadow: var(--kui-shadow-l);
559
+ }
560
+
561
+ /* An out-of-flow rail sizes to its content plus its border, so it takes its
562
+ extent explicitly, as its in-flow flex basis does, border included. Each
563
+ overlay maximum caps only the panel's own axis: a rail spans the
564
+ Workbench's full height and a drawer its full width. */
565
+ .kui-workbench__rail[data-presentation="overlay"] {
566
+ width: var(--_kui-workbench-rail-extent);
567
+ max-width: var(--kui-workbench-overlay-max-width, 85vw);
568
+ inset-block: 0;
569
+ }
570
+
571
+ .kui-workbench__rail--left[data-presentation="overlay"] {
572
+ inset-inline-start: 0;
573
+ }
574
+
575
+ .kui-workbench__rail--right[data-presentation="overlay"] {
576
+ inset-inline-end: 0;
577
+ }
578
+
579
+ /* The drawer's content is absolutely positioned against its bottom edge, so
580
+ an out-of-flow drawer has no content height of its own: it takes its extent
581
+ explicitly, as the in-flow track does through its flex basis. */
582
+ .kui-workbench__drawer[data-presentation="overlay"] {
583
+ z-index: calc(var(--kui-workbench-overlay-z, 41) - 1);
584
+ height: var(--_kui-workbench-drawer-extent);
585
+ max-height: var(--kui-workbench-overlay-max-height, 85vh);
586
+ inset-inline: 0;
587
+ inset-block-end: 0;
588
+ }
589
+
590
+ /* Optional shared backdrop sits over work-area controls and restores, below
591
+ the overlay drawer and rails. It is last in document order so an equal-z
592
+ restore control cannot receive the outside press. */
593
+ .kui-workbench__backdrop {
594
+ position: absolute;
595
+ z-index: calc(var(--kui-workbench-overlay-z, 41) - 2);
596
+ display: none;
597
+ inset: 0;
598
+ background: var(--kui-color-scrim, rgb(0 0 0 / 32%));
599
+ }
600
+
601
+ .kui-workbench[data-overlay-backdrop="true"]:is(
602
+ [data-rail-overlay-expanded="true"],
603
+ [data-drawer-overlay-expanded="true"]
604
+ )
605
+ > .kui-workbench__backdrop {
606
+ display: block;
607
+ }
608
+
609
+ /* A collapsed overlay keeps its box for the slide-out, so it drops its surface
610
+ and shadow; the sliding content carries the surface instead. */
611
+ .kui-workbench__rail[data-presentation="overlay"][data-collapsed="true"],
612
+ .kui-workbench__drawer[data-presentation="overlay"][data-collapsed="true"] {
613
+ background: transparent;
614
+ box-shadow: none;
615
+ pointer-events: none;
616
+ }
617
+
618
+ /* Overlay content fills the rail inside its separator border, so it is
619
+ clamped with the rail and carries the surface through the slide-out. */
620
+ .kui-workbench__rail[data-presentation="overlay"]
621
+ > .kui-workbench__panel-content {
622
+ width: 100%;
623
+ background: var(--kui-color-surface);
624
+ }
625
+
626
+ /* The overlay content fills the drawer box below its separator border, so it
627
+ is clamped with the box and carries the surface through the slide-out. */
628
+ .kui-workbench__drawer[data-presentation="overlay"]
629
+ > .kui-workbench__panel-content {
630
+ height: 100%;
631
+ background: var(--kui-color-surface);
632
+ }
633
+
634
+ .kui-workbench__rail[data-presentation="hidden"],
635
+ .kui-workbench__drawer[data-presentation="hidden"] {
636
+ display: none;
637
+ }
638
+
639
+ /* Responsive overlay panels. A rail or the drawer with `responsiveOverlayAt`
640
+ presents as an overlay — out of flow, over the work area, without a
641
+ separator — below the Workbench's own container breakpoint (`narrow`: 704px
642
+ or less, `compact`: 448px or less, as `ResizableRegion`'s
643
+ `responsiveFillAt`), and inline above it. The Workbench becomes a named
644
+ inline-size container only when a panel opts in. The work area keeps its
645
+ safe-area inset under an overlay panel. */
646
+ .kui-workbench[data-responsive-overlay="true"] {
647
+ container: kui-workbench / inline-size;
648
+ }
649
+
650
+ /* A numeric pixel threshold is measured by wireWorkbench and marked on the
651
+ panel. Keep its overlay geometry and covered work area in step with that
652
+ single mark, including when the app changes the threshold at render time. */
653
+ .kui-workbench__rail[data-responsive-overlay-active="true"] {
654
+ position: absolute;
655
+ z-index: var(--kui-workbench-overlay-z, 41);
656
+ width: var(--_kui-workbench-rail-extent);
657
+ max-width: var(--kui-workbench-overlay-max-width, 85vw);
658
+ inset-block: 0;
659
+ box-shadow: var(--kui-shadow-l);
660
+ clip-path: none;
661
+ }
662
+
663
+ .kui-workbench__rail--left[data-responsive-overlay-active="true"] {
664
+ inset-inline-start: 0;
665
+ }
666
+
667
+ .kui-workbench__rail--right[data-responsive-overlay-active="true"] {
668
+ inset-inline-end: 0;
669
+ }
670
+
671
+ .kui-workbench__rail[data-responsive-overlay-active="true"][data-collapsed="true"],
672
+ .kui-workbench__drawer[data-responsive-overlay-active="true"][data-collapsed="true"] {
673
+ background: transparent;
674
+ box-shadow: none;
675
+ pointer-events: none;
676
+ }
677
+
678
+ .kui-workbench__rail[data-responsive-overlay-active="true"]
679
+ > .kui-workbench__panel-content {
680
+ width: 100%;
681
+ background: var(--kui-color-surface);
682
+ }
683
+
684
+ .kui-workbench__rail[data-responsive-overlay-active="true"]
685
+ > .kui-workbench__handle,
686
+ .kui-workbench__drawer[data-responsive-overlay-active="true"]
687
+ > .kui-workbench__handle {
688
+ display: none;
689
+ }
690
+
691
+ .kui-workbench[data-numeric-overlays~="left"] > .kui-workbench__center {
692
+ --kui-edge-inset-inline-start: var(--_kui-workbench-safe-inline-start);
693
+ }
694
+
695
+ .kui-workbench[data-numeric-overlays~="right"] > .kui-workbench__center {
696
+ --kui-edge-inset-inline-end: var(--_kui-workbench-safe-inline-end);
697
+ }
698
+
699
+ .kui-workbench__drawer[data-responsive-overlay-active="true"] {
700
+ position: absolute;
701
+ anchor-name: none;
702
+ z-index: calc(var(--kui-workbench-overlay-z, 41) - 1);
703
+ height: var(--_kui-workbench-drawer-extent);
704
+ max-height: var(--kui-workbench-overlay-max-height, 85vh);
705
+ inset-inline: 0;
706
+ inset-block-end: 0;
707
+ box-shadow: var(--kui-shadow-l);
708
+ clip-path: none;
709
+ }
710
+
711
+ .kui-workbench__drawer[data-responsive-overlay-active="true"]
712
+ > .kui-workbench__panel-content {
713
+ height: 100%;
714
+ background: var(--kui-color-surface);
715
+ }
716
+
717
+ .kui-workbench[data-numeric-overlays~="drawer"]
718
+ > .kui-workbench__center
719
+ > .kui-workbench__main {
720
+ --_kui-workbench-content-edge-block-end: var(--_kui-workbench-safe-block-end);
721
+ }
722
+
723
+ .kui-workbench[data-overlay-backdrop="true"][data-numeric-overlays~="open"]
724
+ > .kui-workbench__backdrop {
725
+ display: block;
726
+ }
727
+
728
+ @container kui-workbench (max-width: 44rem) {
729
+ .kui-workbench[data-overlay-backdrop="true"]:is(
730
+ [data-left-responsive-expanded="narrow"],
731
+ [data-right-responsive-expanded="narrow"],
732
+ [data-drawer-responsive-expanded="narrow"]
733
+ )
734
+ > .kui-workbench__backdrop {
735
+ display: block;
736
+ }
737
+
738
+ .kui-workbench__rail[data-responsive-overlay-at="narrow"] {
739
+ position: absolute;
740
+ z-index: var(--kui-workbench-overlay-z, 41);
741
+ width: var(--_kui-workbench-rail-extent);
742
+ max-width: var(--kui-workbench-overlay-max-width, 85vw);
743
+ inset-block: 0;
744
+ box-shadow: var(--kui-shadow-l);
745
+ clip-path: none;
746
+ }
747
+
748
+ .kui-workbench__rail--left[data-responsive-overlay-at="narrow"] {
749
+ inset-inline-start: 0;
750
+ }
751
+
752
+ .kui-workbench__rail--right[data-responsive-overlay-at="narrow"] {
753
+ inset-inline-end: 0;
754
+ }
755
+
756
+ .kui-workbench__rail[data-responsive-overlay-at="narrow"][data-collapsed="true"] {
757
+ background: transparent;
758
+ box-shadow: none;
759
+ pointer-events: none;
760
+ }
761
+
762
+ .kui-workbench__rail[data-responsive-overlay-at="narrow"]
763
+ > .kui-workbench__panel-content {
764
+ width: 100%;
765
+ background: var(--kui-color-surface);
766
+ }
767
+
768
+ .kui-workbench__rail[data-responsive-overlay-at="narrow"]
769
+ > .kui-workbench__handle {
770
+ display: none;
771
+ }
772
+
773
+ .kui-workbench[data-left-responsive-inline="narrow"]
774
+ > .kui-workbench__center {
775
+ --kui-edge-inset-inline-start: var(--_kui-workbench-safe-inline-start);
776
+ }
777
+
778
+ .kui-workbench[data-right-responsive-inline="narrow"]
779
+ > .kui-workbench__center {
780
+ --kui-edge-inset-inline-end: var(--_kui-workbench-safe-inline-end);
781
+ }
782
+
783
+ .kui-workbench__drawer[data-responsive-overlay-at="narrow"] {
784
+ position: absolute;
785
+ anchor-name: none;
786
+ z-index: calc(var(--kui-workbench-overlay-z, 41) - 1);
787
+ height: var(--_kui-workbench-drawer-extent);
788
+ max-height: var(--kui-workbench-overlay-max-height, 85vh);
789
+ inset-inline: 0;
790
+ inset-block-end: 0;
791
+ box-shadow: var(--kui-shadow-l);
792
+ clip-path: none;
793
+ }
794
+
795
+ .kui-workbench__drawer[data-responsive-overlay-at="narrow"][data-collapsed="true"] {
796
+ background: transparent;
797
+ box-shadow: none;
798
+ pointer-events: none;
799
+ }
800
+
801
+ .kui-workbench__drawer[data-responsive-overlay-at="narrow"]
802
+ > .kui-workbench__panel-content {
803
+ height: 100%;
804
+ background: var(--kui-color-surface);
805
+ }
806
+
807
+ .kui-workbench__drawer[data-responsive-overlay-at="narrow"]
808
+ > .kui-workbench__handle {
809
+ display: none;
810
+ }
811
+
812
+ .kui-workbench__main[data-drawer-responsive-inline="narrow"] {
813
+ --_kui-workbench-content-edge-block-end: var(
814
+ --_kui-workbench-safe-block-end
815
+ );
816
+ }
817
+ }
818
+
819
+ @container kui-workbench (max-width: 28rem) {
820
+ .kui-workbench[data-overlay-backdrop="true"]:is(
821
+ [data-left-responsive-expanded="compact"],
822
+ [data-right-responsive-expanded="compact"],
823
+ [data-drawer-responsive-expanded="compact"]
824
+ )
825
+ > .kui-workbench__backdrop {
826
+ display: block;
827
+ }
828
+
829
+ .kui-workbench__rail[data-responsive-overlay-at="compact"] {
830
+ position: absolute;
831
+ z-index: var(--kui-workbench-overlay-z, 41);
832
+ width: var(--_kui-workbench-rail-extent);
833
+ max-width: var(--kui-workbench-overlay-max-width, 85vw);
834
+ inset-block: 0;
835
+ box-shadow: var(--kui-shadow-l);
836
+ clip-path: none;
837
+ }
838
+
839
+ .kui-workbench__rail--left[data-responsive-overlay-at="compact"] {
840
+ inset-inline-start: 0;
841
+ }
842
+
843
+ .kui-workbench__rail--right[data-responsive-overlay-at="compact"] {
844
+ inset-inline-end: 0;
845
+ }
846
+
847
+ .kui-workbench__rail[data-responsive-overlay-at="compact"][data-collapsed="true"] {
848
+ background: transparent;
849
+ box-shadow: none;
850
+ pointer-events: none;
851
+ }
852
+
853
+ .kui-workbench__rail[data-responsive-overlay-at="compact"]
854
+ > .kui-workbench__panel-content {
855
+ width: 100%;
856
+ background: var(--kui-color-surface);
857
+ }
858
+
859
+ .kui-workbench__rail[data-responsive-overlay-at="compact"]
860
+ > .kui-workbench__handle {
861
+ display: none;
862
+ }
863
+
864
+ .kui-workbench[data-left-responsive-inline="compact"]
865
+ > .kui-workbench__center {
866
+ --kui-edge-inset-inline-start: var(--_kui-workbench-safe-inline-start);
867
+ }
868
+
869
+ .kui-workbench[data-right-responsive-inline="compact"]
870
+ > .kui-workbench__center {
871
+ --kui-edge-inset-inline-end: var(--_kui-workbench-safe-inline-end);
872
+ }
873
+
874
+ .kui-workbench__drawer[data-responsive-overlay-at="compact"] {
875
+ position: absolute;
876
+ anchor-name: none;
877
+ z-index: calc(var(--kui-workbench-overlay-z, 41) - 1);
878
+ height: var(--_kui-workbench-drawer-extent);
879
+ max-height: var(--kui-workbench-overlay-max-height, 85vh);
880
+ inset-inline: 0;
881
+ inset-block-end: 0;
882
+ box-shadow: var(--kui-shadow-l);
883
+ clip-path: none;
884
+ }
885
+
886
+ .kui-workbench__drawer[data-responsive-overlay-at="compact"][data-collapsed="true"] {
887
+ background: transparent;
888
+ box-shadow: none;
889
+ pointer-events: none;
890
+ }
891
+
892
+ .kui-workbench__drawer[data-responsive-overlay-at="compact"]
893
+ > .kui-workbench__panel-content {
894
+ height: 100%;
895
+ background: var(--kui-color-surface);
896
+ }
897
+
898
+ .kui-workbench__drawer[data-responsive-overlay-at="compact"]
899
+ > .kui-workbench__handle {
900
+ display: none;
901
+ }
902
+
903
+ .kui-workbench__main[data-drawer-responsive-inline="compact"] {
904
+ --_kui-workbench-content-edge-block-end: var(
905
+ --_kui-workbench-safe-block-end
906
+ );
907
+ }
908
+ }
909
+
910
+ /* Release the panel and its sliding/scrolling content while a PopupMenu or
911
+ Web Awesome dropdown is open. This comes after resize clipping and keeps
912
+ the popup in place through wa-show/wa-after-hide without a prop change. */
913
+ .kui-workbench__rail:not([data-collapsed="true"]):has(wa-dropdown[open]),
914
+ .kui-workbench__drawer:not([data-collapsed="true"]):has(wa-dropdown[open]) {
915
+ overflow: visible;
916
+ clip-path: none;
917
+ }
918
+ .kui-workbench__rail:not([data-collapsed="true"]):has(wa-dropdown[open])
919
+ > .kui-workbench__panel-content,
920
+ .kui-workbench__drawer:not([data-collapsed="true"]):has(wa-dropdown[open])
921
+ > .kui-workbench__panel-content {
922
+ overflow: visible;
923
+ }
924
+
925
+ /* A collapsed panel's restore control floats in a corner of the Workbench
926
+ itself, never of the viewport, so an embedded Workbench cannot float it over
927
+ page chrome outside it. It is inset from the corner plus the unsafe area of
928
+ each edge that corner reaches. The drawer's control sits in the work-area
929
+ column it restores (the center is its containing block), inset from the
930
+ edges that column still reaches, so it never lands on an expanded rail.
931
+ It belongs to the layer beneath the overlays, two below the overlay
932
+ z-index: an open overlay covers it as it covers the rest of the work area,
933
+ so no other panel's control floats over the overlay's content. A collapsed
934
+ overlay drops its pointer events, so the control stays usable beneath it. */
935
+ .kui-workbench__restore {
936
+ --_kui-workbench-restore-inset: var(
937
+ --kui-workbench-restore-inset,
938
+ 1rem
939
+ );
940
+ position: absolute;
941
+ /* Hidden while an open rail overlay covers the work area (see below). */
942
+ visibility: var(
943
+ --_kui-workbench-covered,
944
+ var(
945
+ --_kui-collapsible-panel-covered,
946
+ var(--_kui-resizable-region-covered, inherit)
947
+ )
948
+ );
949
+ z-index: var(
950
+ --kui-workbench-restore-z,
951
+ calc(var(--kui-workbench-overlay-z, 41) - 2)
952
+ );
953
+ inset-block-end: calc(
954
+ var(--_kui-workbench-restore-inset) + var(--_kui-workbench-safe-block-end)
955
+ );
956
+ }
957
+
958
+ .kui-workbench__restore[data-position="bottom-start"] {
959
+ inset-inline-start: calc(
960
+ var(--_kui-workbench-restore-inset) +
961
+ var(--_kui-workbench-safe-inline-start)
962
+ );
963
+ }
964
+
965
+ .kui-workbench__restore[data-position="bottom-end"] {
966
+ inset-inline-end: calc(
967
+ var(--_kui-workbench-restore-inset) + var(--_kui-workbench-safe-inline-end)
968
+ );
969
+ }
970
+
971
+ /* An expanded inline bottom drawer owns the bottom of the work-area column,
972
+ which reaches the Workbench's bottom corners once a rail collapses, so a
973
+ collapsed rail's control floats the restore inset above the drawer's top
974
+ edge instead of over it — the standalone CollapsiblePanel rule, scoped to
975
+ this Workbench so a nested Workbench or an enclosing layout never sees its
976
+ drawer. The drawer publishes that edge only while it is expanded and in
977
+ flow: an overlay drawer, static or responsive (see the container queries
978
+ above), covers the control as every open overlay does. Without anchor
979
+ positioning the control keeps the Workbench corner. */
980
+ .kui-workbench {
981
+ anchor-scope: --kui-restore-drawer;
982
+ }
983
+
984
+ .kui-workbench__drawer:where(
985
+ [data-presentation="inline"]:not([data-collapsed="true"])
986
+ ) {
987
+ anchor-name: --kui-restore-drawer;
988
+ }
989
+
990
+ .kui-workbench > .kui-workbench__restore {
991
+ position-visibility: always;
992
+ inset-block-end: calc(
993
+ var(--_kui-workbench-restore-inset) +
994
+ anchor(--kui-restore-drawer top, var(--_kui-workbench-safe-block-end))
995
+ );
996
+ }
997
+
998
+ .kui-workbench__center > .kui-workbench__restore {
999
+ inset-block-end: calc(
1000
+ var(--_kui-workbench-restore-inset) + var(--kui-edge-inset-block-end)
1001
+ );
1002
+ }
1003
+
1004
+ .kui-workbench__center > .kui-workbench__restore[data-position="bottom-start"] {
1005
+ inset-inline-start: calc(
1006
+ var(--_kui-workbench-restore-inset) + var(--kui-edge-inset-inline-start)
1007
+ );
1008
+ }
1009
+
1010
+ .kui-workbench__center > .kui-workbench__restore[data-position="bottom-end"] {
1011
+ inset-inline-end: calc(
1012
+ var(--_kui-workbench-restore-inset) + var(--kui-edge-inset-inline-end)
1013
+ );
1014
+ }
1015
+
1016
+ /* An open rail overlay — static or a responsive one whose breakpoint applies —
1017
+ covers the work area, so the work area's floating controls (a
1018
+ FloatingToolbar in main, the drawer's restore corner, the other rail's
1019
+ restore corner) are hidden, not merely stacked beneath it: they never paint
1020
+ over the overlay whatever stacking context an app puts them in, and hidden
1021
+ they leave the tab order and the accessibility tree. They come back as the
1022
+ overlay closes. The Workbench's own covered context,
1023
+ `--_kui-workbench-covered`, is set on the rail's siblings only (never on
1024
+ the open rail), so the overlay's own floating controls stay; FloatingToolbar
1025
+ and the layouts' restore corners read it. A direct child
1026
+ resolves the Workbench's own container query, never a nested one's. */
1027
+ .kui-workbench[data-rail-overlay-expanded="true"]
1028
+ > :is(.kui-workbench__center, .kui-workbench__restore) {
1029
+ --_kui-workbench-covered: hidden;
1030
+ }
1031
+
1032
+ .kui-workbench[data-numeric-overlays~="rail-open"]
1033
+ > :is(.kui-workbench__center, .kui-workbench__restore) {
1034
+ --_kui-workbench-covered: hidden;
1035
+ }
1036
+
1037
+ @container kui-workbench (max-width: 44rem) {
1038
+ .kui-workbench:is(
1039
+ [data-left-responsive-expanded="narrow"],
1040
+ [data-right-responsive-expanded="narrow"]
1041
+ )
1042
+ > :is(.kui-workbench__center, .kui-workbench__restore) {
1043
+ --_kui-workbench-covered: hidden;
1044
+ }
1045
+ }
1046
+
1047
+ @container kui-workbench (max-width: 28rem) {
1048
+ .kui-workbench:is(
1049
+ [data-left-responsive-expanded="compact"],
1050
+ [data-right-responsive-expanded="compact"]
1051
+ )
1052
+ > :is(.kui-workbench__center, .kui-workbench__restore) {
1053
+ --_kui-workbench-covered: hidden;
1054
+ }
1055
+ }
1056
+
90
1057
  @media (prefers-reduced-motion: reduce) {
91
1058
  .kui-workbench__panel-content {
92
1059
  transition: none;
93
1060
  }
94
1061
  }
1062
+
1063
+ /* On a compact (phone-sized) Workbench an overlay rail fills the Workbench
1064
+ less a dismiss margin on the side away from its edge, so a press beside it
1065
+ closes it (the wiring's outside press); `compactOverlay: "full"` fills the
1066
+ Workbench. The rail's resize and configured size stop applying there. */
1067
+ @container kui-workbench (max-width: 28rem) {
1068
+ .kui-workbench__rail:is(
1069
+ [data-responsive-overlay-at="narrow"],
1070
+ [data-responsive-overlay-at="compact"],
1071
+ [data-responsive-overlay-active="true"]
1072
+ ) {
1073
+ width: calc(
1074
+ 100% - var(--kui-workbench-overlay-dismiss-margin, 2.75rem)
1075
+ );
1076
+ max-width: none;
1077
+ }
1078
+
1079
+ .kui-workbench__rail:is(
1080
+ [data-responsive-overlay-at="narrow"],
1081
+ [data-responsive-overlay-at="compact"],
1082
+ [data-responsive-overlay-active="true"]
1083
+ )[data-compact-overlay="full"] {
1084
+ width: 100%;
1085
+ }
1086
+ }