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

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