@kerfjs/ui 5.0.0-beta.95 → 5.0.0-beta.96

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 (385) hide show
  1. package/README.md +95 -55
  2. package/ai/component-catalog.json +1328 -94
  3. package/ai/component-composition-rules.json +11 -0
  4. package/ai/component-composition.d.ts +3 -0
  5. package/ai/component-composition.json +955 -23
  6. package/ai/component-composition.schema.json +4 -0
  7. package/ai/components/README.md +12 -0
  8. package/ai/components/badge.md +6 -2
  9. package/ai/components/choice-chips.md +80 -0
  10. package/ai/components/column-track.md +78 -0
  11. package/ai/components/combobox.md +88 -0
  12. package/ai/components/content-item.md +2 -0
  13. package/ai/components/content-swap.md +78 -0
  14. package/ai/components/corner-status.md +88 -0
  15. package/ai/components/document-baseline.md +3 -1
  16. package/ai/components/edge-activity-indicator.md +81 -0
  17. package/ai/components/file-picker.md +88 -0
  18. package/ai/components/foundation.md +1 -1
  19. package/ai/components/framed-list.md +80 -0
  20. package/ai/components/grid.md +2 -1
  21. package/ai/components/icon-button.md +82 -0
  22. package/ai/components/icon-toggle-button.md +80 -0
  23. package/ai/components/list-action-row.md +19 -7
  24. package/ai/components/list-item.md +16 -7
  25. package/ai/components/list.md +5 -2
  26. package/ai/components/nav-stack.md +2 -1
  27. package/ai/components/popup-menu.md +2 -2
  28. package/ai/components/row.md +1 -1
  29. package/ai/components/select.md +2 -1
  30. package/ai/components/split-button.md +80 -0
  31. package/ai/components/split-view.md +1 -1
  32. package/ai/components/state-banner.md +4 -2
  33. package/ai/components/summary-row.md +85 -0
  34. package/ai/components/sunken-panel.md +1 -1
  35. package/ai/components/surface-scaffold.md +8 -2
  36. package/ai/components/text.md +3 -0
  37. package/ai/components/toolbar-control-group.md +4 -2
  38. package/ai/components/toolbar-text.md +1 -0
  39. package/ai/components/toolbar.md +1 -0
  40. package/ai/components/value-table.md +9 -2
  41. package/ai/components/wa-button-group.md +2 -1
  42. package/ai/components/wa-button.md +5 -1
  43. package/ai/public-api-signatures-v1.md +1063 -52
  44. package/ai/skill.md +54 -52
  45. package/ai/webawesome-jsx-signatures-v1.md +1 -1
  46. package/dist/anchored-surface.d.ts +13 -2
  47. package/dist/anchored-surface.js +1 -1
  48. package/dist/app-tab.js +1 -1
  49. package/dist/badge.d.ts +31 -2
  50. package/dist/badge.js +2 -1
  51. package/dist/browser/choice-chips.js +3 -0
  52. package/dist/browser/column-track.js +3 -0
  53. package/dist/browser/combobox.js +3 -0
  54. package/dist/browser/content-swap.js +3 -0
  55. package/dist/browser/corner-status.js +3 -0
  56. package/dist/browser/edge-activity-indicator.js +3 -0
  57. package/dist/browser/file-picker.js +3 -0
  58. package/dist/browser/framed-list.js +3 -0
  59. package/dist/browser/icon-button.js +4 -0
  60. package/dist/browser/icon-toggle-button.js +4 -0
  61. package/dist/browser/list-action-row.js +1 -0
  62. package/dist/browser/split-button.js +5 -0
  63. package/dist/browser/summary-row.js +3 -0
  64. package/dist/catalog-resources.d.ts +1 -0
  65. package/dist/catalog.d.ts +1 -0
  66. package/dist/catalog.js +16 -13
  67. package/dist/catalog.js.map +1 -1
  68. package/dist/chip.d.ts +1 -0
  69. package/dist/choice-chips.d.ts +58 -0
  70. package/dist/choice-chips.js +3 -0
  71. package/dist/choice-chips.js.map +1 -0
  72. package/dist/chunk-2MSPNRWJ.js +82 -0
  73. package/dist/chunk-2MSPNRWJ.js.map +1 -0
  74. package/dist/{chunk-3PO7JEK7.js → chunk-36TL6BCR.js} +18 -4
  75. package/dist/chunk-36TL6BCR.js.map +1 -0
  76. package/dist/{chunk-MORVLMDG.js → chunk-44A6LP54.js} +3 -3
  77. package/dist/chunk-44A6LP54.js.map +1 -0
  78. package/dist/{chunk-7QQ3HE47.js → chunk-4LOK4634.js} +7 -3
  79. package/dist/chunk-4LOK4634.js.map +1 -0
  80. package/dist/chunk-4UB5Z3ZZ.js +68 -0
  81. package/dist/chunk-4UB5Z3ZZ.js.map +1 -0
  82. package/dist/{chunk-PGL6TXFW.js → chunk-6BRRUPJY.js} +6 -2
  83. package/dist/chunk-6BRRUPJY.js.map +1 -0
  84. package/dist/{chunk-KAJVVN7Q.js → chunk-6NOLL5KG.js} +2 -2
  85. package/dist/{chunk-KAJVVN7Q.js.map → chunk-6NOLL5KG.js.map} +1 -1
  86. package/dist/{chunk-IOS2NXW7.js → chunk-76PWEN5Y.js} +13 -2
  87. package/dist/chunk-76PWEN5Y.js.map +1 -0
  88. package/dist/{chunk-B3TROLC2.js → chunk-7IUEBNCO.js} +7 -3
  89. package/dist/chunk-7IUEBNCO.js.map +1 -0
  90. package/dist/{chunk-75YOTZ25.js → chunk-AYHC62OZ.js} +10 -6
  91. package/dist/chunk-AYHC62OZ.js.map +1 -0
  92. package/dist/{chunk-RZYQFGMM.js → chunk-BBU2SPRE.js} +4 -4
  93. package/dist/{chunk-RZYQFGMM.js.map → chunk-BBU2SPRE.js.map} +1 -1
  94. package/dist/{chunk-QCLLBMLA.js → chunk-BU23Z5HZ.js} +37 -12
  95. package/dist/chunk-BU23Z5HZ.js.map +1 -0
  96. package/dist/{chunk-BYHGRKC3.js → chunk-CMLPFIC5.js} +3 -1
  97. package/dist/chunk-CMLPFIC5.js.map +1 -0
  98. package/dist/{chunk-3XPGJUUQ.js → chunk-D5RGM3XA.js} +3 -2
  99. package/dist/chunk-D5RGM3XA.js.map +1 -0
  100. package/dist/chunk-EIET4QLK.js +51 -0
  101. package/dist/chunk-EIET4QLK.js.map +1 -0
  102. package/dist/chunk-ETCWQLJV.js +85 -0
  103. package/dist/chunk-ETCWQLJV.js.map +1 -0
  104. package/dist/chunk-FDZNYD4C.js +138 -0
  105. package/dist/chunk-FDZNYD4C.js.map +1 -0
  106. package/dist/{chunk-XKZPBRU7.js → chunk-FOQK4F3L.js} +25 -5
  107. package/dist/chunk-FOQK4F3L.js.map +1 -0
  108. package/dist/{chunk-FL6J644M.js → chunk-GJYQ27C2.js} +4 -2
  109. package/dist/chunk-GJYQ27C2.js.map +1 -0
  110. package/dist/{chunk-DL55BSQX.js → chunk-GZE2XVKC.js} +8 -1
  111. package/dist/chunk-GZE2XVKC.js.map +1 -0
  112. package/dist/{chunk-YP2G67S7.js → chunk-HO6FU3G7.js} +2 -2
  113. package/dist/{chunk-YP2G67S7.js.map → chunk-HO6FU3G7.js.map} +1 -1
  114. package/dist/{chunk-3DXHNLME.js → chunk-IGTWXPTN.js} +25 -8
  115. package/dist/chunk-IGTWXPTN.js.map +1 -0
  116. package/dist/chunk-IKS72C6P.js +53 -0
  117. package/dist/chunk-IKS72C6P.js.map +1 -0
  118. package/dist/chunk-JYD7G4RG.js +130 -0
  119. package/dist/chunk-JYD7G4RG.js.map +1 -0
  120. package/dist/{chunk-LAZLBC2Q.js → chunk-KH4KEMSP.js} +33 -2
  121. package/dist/chunk-KH4KEMSP.js.map +1 -0
  122. package/dist/chunk-LL45C7BB.js +122 -0
  123. package/dist/chunk-LL45C7BB.js.map +1 -0
  124. package/dist/chunk-M2NRCFRO.js +45 -0
  125. package/dist/chunk-M2NRCFRO.js.map +1 -0
  126. package/dist/chunk-MJ5RU6XT.js +173 -0
  127. package/dist/chunk-MJ5RU6XT.js.map +1 -0
  128. package/dist/{chunk-GIUOXAVL.js → chunk-P74VXMB6.js} +39 -19
  129. package/dist/chunk-P74VXMB6.js.map +1 -0
  130. package/dist/{chunk-TKDDTLG5.js → chunk-PBT3CPPY.js} +31 -3
  131. package/dist/chunk-PBT3CPPY.js.map +1 -0
  132. package/dist/chunk-PRG4CL3Q.js +88 -0
  133. package/dist/chunk-PRG4CL3Q.js.map +1 -0
  134. package/dist/chunk-QH5KOFNS.js +39 -0
  135. package/dist/chunk-QH5KOFNS.js.map +1 -0
  136. package/dist/{chunk-CD5TOO22.js → chunk-QIAPOWHH.js} +2 -2
  137. package/dist/{chunk-CD5TOO22.js.map → chunk-QIAPOWHH.js.map} +1 -1
  138. package/dist/chunk-QQ3TTWFH.js +29 -0
  139. package/dist/chunk-QQ3TTWFH.js.map +1 -0
  140. package/dist/chunk-QYMJHS4K.js +36 -0
  141. package/dist/chunk-QYMJHS4K.js.map +1 -0
  142. package/dist/chunk-R42D2BAO.js +44 -0
  143. package/dist/chunk-R42D2BAO.js.map +1 -0
  144. package/dist/chunk-S2XULQEK.js +52 -0
  145. package/dist/chunk-S2XULQEK.js.map +1 -0
  146. package/dist/{chunk-NMWDHZVM.js → chunk-S4Y3YTAI.js} +2 -2
  147. package/dist/{chunk-NMWDHZVM.js.map → chunk-S4Y3YTAI.js.map} +1 -1
  148. package/dist/{chunk-O27D24CA.js → chunk-TDMHA7C3.js} +3 -2
  149. package/dist/chunk-TDMHA7C3.js.map +1 -0
  150. package/dist/chunk-U6QYTMDB.js +85 -0
  151. package/dist/chunk-U6QYTMDB.js.map +1 -0
  152. package/dist/{chunk-QQICWWNX.js → chunk-V6W56V3N.js} +18 -7
  153. package/dist/chunk-V6W56V3N.js.map +1 -0
  154. package/dist/chunk-W4IK7AWD.js +73 -0
  155. package/dist/chunk-W4IK7AWD.js.map +1 -0
  156. package/dist/{chunk-TNG3XKHB.js → chunk-Y3LC7JQO.js} +26 -8
  157. package/dist/chunk-Y3LC7JQO.js.map +1 -0
  158. package/dist/chunk-YWQGSUF2.js +84 -0
  159. package/dist/chunk-YWQGSUF2.js.map +1 -0
  160. package/dist/{chunk-MTCTX25G.js → chunk-YXOMI7ES.js} +1 -1
  161. package/dist/chunk-YXOMI7ES.js.map +1 -0
  162. package/dist/chunk-ZKKO4MHC.js +25 -0
  163. package/dist/chunk-ZKKO4MHC.js.map +1 -0
  164. package/dist/collapsible-panel.d.ts +10 -3
  165. package/dist/collapsible-panel.js +8 -5
  166. package/dist/collapsible-panel.js.map +1 -1
  167. package/dist/column-track.d.ts +41 -0
  168. package/dist/column-track.js +4 -0
  169. package/dist/column-track.js.map +1 -0
  170. package/dist/combobox.d.ts +40 -0
  171. package/dist/combobox.js +3 -0
  172. package/dist/combobox.js.map +1 -0
  173. package/dist/content-item.d.ts +21 -4
  174. package/dist/content-item.js +1 -1
  175. package/dist/content-swap.d.ts +34 -0
  176. package/dist/content-swap.js +3 -0
  177. package/dist/content-swap.js.map +1 -0
  178. package/dist/corner-status.d.ts +36 -0
  179. package/dist/corner-status.js +3 -0
  180. package/dist/corner-status.js.map +1 -0
  181. package/dist/edge-activity-indicator.d.ts +28 -0
  182. package/dist/edge-activity-indicator.js +3 -0
  183. package/dist/edge-activity-indicator.js.map +1 -0
  184. package/dist/extension-attributes-mu8MFUl0.d.ts +13 -0
  185. package/dist/file-picker.d.ts +47 -0
  186. package/dist/file-picker.js +3 -0
  187. package/dist/file-picker.js.map +1 -0
  188. package/dist/framed-list.d.ts +47 -0
  189. package/dist/framed-list.js +4 -0
  190. package/dist/framed-list.js.map +1 -0
  191. package/dist/grid.js +1 -1
  192. package/dist/help-tags-register.js +1 -1
  193. package/dist/icon-button.d.ts +46 -0
  194. package/dist/icon-button.js +6 -0
  195. package/dist/icon-button.js.map +1 -0
  196. package/dist/icon-toggle-button.d.ts +42 -0
  197. package/dist/icon-toggle-button.js +6 -0
  198. package/dist/icon-toggle-button.js.map +1 -0
  199. package/dist/index.d.ts +23 -6
  200. package/dist/index.js +44 -27
  201. package/dist/list-action-row.d.ts +47 -10
  202. package/dist/list-action-row.js +2 -1
  203. package/dist/list-header.js +1 -1
  204. package/dist/list-inset-text.js +1 -1
  205. package/dist/list-item.d.ts +10 -2
  206. package/dist/list-item.js +1 -1
  207. package/dist/list.d.ts +37 -5
  208. package/dist/list.js +1 -1
  209. package/dist/nav-stack.d.ts +1 -0
  210. package/dist/nav-stack.js +2 -1
  211. package/dist/pane.js +2 -1
  212. package/dist/popup-menu-register.js +18 -1
  213. package/dist/popup-menu-register.js.map +1 -1
  214. package/dist/popup-menu.d.ts +28 -3
  215. package/dist/popup-menu.js +1 -1
  216. package/dist/row.d.ts +6 -2
  217. package/dist/row.js +1 -1
  218. package/dist/select-register.js +1 -1
  219. package/dist/select.js +2 -1
  220. package/dist/split-button.d.ts +57 -0
  221. package/dist/split-button.js +7 -0
  222. package/dist/split-button.js.map +1 -0
  223. package/dist/split-view.d.ts +20 -2
  224. package/dist/split-view.js +22 -1
  225. package/dist/split-view.js.map +1 -1
  226. package/dist/state-banner.d.ts +17 -2
  227. package/dist/state-banner.js +2 -1
  228. package/dist/styles/badge.css +27 -0
  229. package/dist/styles/catalog/components/catalog-example.css +7 -3
  230. package/dist/styles/choice-chips.css +154 -0
  231. package/dist/styles/column-track.css +57 -0
  232. package/dist/styles/combobox.css +113 -0
  233. package/dist/styles/components/actions/icon-button/icon-button.css +22 -0
  234. package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +83 -0
  235. package/dist/styles/components/actions/popup-menu/popup-menu.css +69 -1
  236. package/dist/styles/components/actions/split-button/split-button.css +95 -0
  237. package/dist/styles/components/actions/toolbar/toolbar.css +16 -9
  238. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +144 -48
  239. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +23 -0
  240. package/dist/styles/components/collections/framed-list/framed-list.css +47 -0
  241. package/dist/styles/components/collections/list/list.css +44 -0
  242. package/dist/styles/components/collections/list-action-row/list-action-row.css +39 -0
  243. package/dist/styles/components/collections/list-item/list-item.css +45 -0
  244. package/dist/styles/components/collections/summary-row/summary-row.css +161 -0
  245. package/dist/styles/components/data-display/value-table/value-table.css +76 -0
  246. package/dist/styles/components/feedback/badge/badge.css +27 -0
  247. package/dist/styles/components/feedback/corner-status/corner-status.css +60 -0
  248. package/dist/styles/components/feedback/edge-activity-indicator/edge-activity-indicator.css +127 -0
  249. package/dist/styles/components/feedback/state-banner/state-banner.css +38 -0
  250. package/dist/styles/components/forms/choice-chips/choice-chips.css +154 -0
  251. package/dist/styles/components/forms/combobox/combobox.css +113 -0
  252. package/dist/styles/components/forms/file-picker/file-picker.css +81 -0
  253. package/dist/styles/components/forms/token-search-field/token-search-field.css +12 -1
  254. package/dist/styles/components/layout/column-track/column-track.css +57 -0
  255. package/dist/styles/components/layout/content-swap/content-swap.css +154 -0
  256. package/dist/styles/components/layout/pane/pane.css +2 -8
  257. package/dist/styles/components/layout/workbench/workbench.css +2 -8
  258. package/dist/styles/components/navigation/tab-navigator/tab-navigator.css +1 -4
  259. package/dist/styles/components/surfaces/content-item/content-item.css +18 -0
  260. package/dist/styles/components/surfaces/sunken-panel/sunken-panel.css +1 -4
  261. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +119 -0
  262. package/dist/styles/components/typography/text/text.css +62 -0
  263. package/dist/styles/content-item.css +18 -0
  264. package/dist/styles/content-swap.css +154 -0
  265. package/dist/styles/corner-status.css +60 -0
  266. package/dist/styles/document.css +65 -0
  267. package/dist/styles/edge-activity-indicator.css +127 -0
  268. package/dist/styles/file-picker.css +81 -0
  269. package/dist/styles/foundation.css +8 -0
  270. package/dist/styles/framed-list.css +47 -0
  271. package/dist/styles/icon-button.css +22 -0
  272. package/dist/styles/icon-toggle-button.css +83 -0
  273. package/dist/styles/list-action-row.css +39 -0
  274. package/dist/styles/list-item.css +45 -0
  275. package/dist/styles/list.css +44 -0
  276. package/dist/styles/pane.css +2 -8
  277. package/dist/styles/popup-menu.css +69 -1
  278. package/dist/styles/split-button.css +95 -0
  279. package/dist/styles/state-banner.css +38 -0
  280. package/dist/styles/styles.css +12 -0
  281. package/dist/styles/summary-row.css +161 -0
  282. package/dist/styles/sunken-panel.css +1 -4
  283. package/dist/styles/surface-scaffold.css +119 -0
  284. package/dist/styles/tab-navigator.css +1 -4
  285. package/dist/styles/text.css +62 -0
  286. package/dist/styles/token-search-field.css +12 -1
  287. package/dist/styles/toolbar-control-group.css +144 -48
  288. package/dist/styles/toolbar-text.css +23 -0
  289. package/dist/styles/toolbar.css +16 -9
  290. package/dist/styles/value-table.css +76 -0
  291. package/dist/styles/webawesome.css +4 -4
  292. package/dist/styles/workbench.css +2 -8
  293. package/dist/summary-row.d.ts +56 -0
  294. package/dist/summary-row.js +4 -0
  295. package/dist/summary-row.js.map +1 -0
  296. package/dist/sunken-panel.d.ts +8 -1
  297. package/dist/sunken-panel.js +2 -1
  298. package/dist/surface-scaffold-register.js +7 -1
  299. package/dist/surface-scaffold-register.js.map +1 -1
  300. package/dist/surface-scaffold.d.ts +75 -2
  301. package/dist/surface-scaffold.js +2 -1
  302. package/dist/tab-navigator.js +4 -1
  303. package/dist/tab-navigator.js.map +1 -1
  304. package/dist/text.d.ts +39 -4
  305. package/dist/text.js +1 -1
  306. package/dist/toolbar-control-group.d.ts +8 -1
  307. package/dist/toolbar-control-group.js +1 -1
  308. package/dist/toolbar-text.d.ts +14 -1
  309. package/dist/toolbar-text.js +1 -1
  310. package/dist/toolbar.d.ts +14 -3
  311. package/dist/toolbar.js +1 -1
  312. package/dist/value-table.d.ts +20 -2
  313. package/dist/value-table.js +1 -1
  314. package/dist/wire-catalog.d.ts +1 -0
  315. package/dist/wire-comboboxes.d.ts +26 -0
  316. package/dist/wire-comboboxes.js +3 -0
  317. package/dist/wire-comboboxes.js.map +1 -0
  318. package/dist/wire-corner-status.d.ts +11 -0
  319. package/dist/wire-corner-status.js +3 -0
  320. package/dist/wire-corner-status.js.map +1 -0
  321. package/dist/wire-file-pickers.d.ts +26 -0
  322. package/dist/wire-file-pickers.js +3 -0
  323. package/dist/wire-file-pickers.js.map +1 -0
  324. package/dist/wire-list-reorder.d.ts +41 -0
  325. package/dist/wire-list-reorder.js +3 -0
  326. package/dist/wire-list-reorder.js.map +1 -0
  327. package/dist/wire-token-search-fields.js +1 -1
  328. package/dist/workbench.d.ts +1 -0
  329. package/dist/workbench.js +2 -1
  330. package/docs/accessibility.md +45 -2
  331. package/docs/anchored-surface.md +15 -7
  332. package/docs/app-layouts.md +2 -1
  333. package/docs/component-contract.md +26 -6
  334. package/docs/component-selection.md +149 -13
  335. package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -0
  336. package/docs/design/templates/choice-chips/color-palette.svg +1 -0
  337. package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -0
  338. package/docs/design/templates/choice-chips/compact-icons.svg +1 -0
  339. package/docs/design/templates/choice-chips-dark.svg +1 -0
  340. package/docs/design/templates/choice-chips.svg +1 -0
  341. package/docs/design/templates/list-action-row/trailing-menu-dark.svg +1 -0
  342. package/docs/design/templates/list-action-row/trailing-menu.svg +1 -0
  343. package/docs/design/templates/list-action-row-dark.svg +1 -1
  344. package/docs/design/templates/list-action-row.svg +1 -1
  345. package/docs/design/templates/state-banner/strip-dark.svg +1 -0
  346. package/docs/design/templates/state-banner/strip.svg +1 -0
  347. package/docs/design/templates/state-banner-dark.svg +1 -1
  348. package/docs/design/templates/state-banner.svg +1 -1
  349. package/docs/design/templates.md +1 -1
  350. package/docs/document-baseline.md +51 -0
  351. package/docs/layout.md +52 -1
  352. package/docs/split-view.md +20 -2
  353. package/docs/sunken-panel.md +13 -0
  354. package/docs/surface-scaffold.md +66 -1
  355. package/docs/ux-demo.md +1 -0
  356. package/docs/webawesome-theme.md +6 -2
  357. package/llms.txt +125 -16
  358. package/package.json +89 -1
  359. package/dist/chunk-3DXHNLME.js.map +0 -1
  360. package/dist/chunk-3PO7JEK7.js.map +0 -1
  361. package/dist/chunk-3XPGJUUQ.js.map +0 -1
  362. package/dist/chunk-4Y4L5YEI.js +0 -66
  363. package/dist/chunk-4Y4L5YEI.js.map +0 -1
  364. package/dist/chunk-75YOTZ25.js.map +0 -1
  365. package/dist/chunk-7QQ3HE47.js.map +0 -1
  366. package/dist/chunk-A7DYEERU.js +0 -59
  367. package/dist/chunk-A7DYEERU.js.map +0 -1
  368. package/dist/chunk-B3TROLC2.js.map +0 -1
  369. package/dist/chunk-BYHGRKC3.js.map +0 -1
  370. package/dist/chunk-DL55BSQX.js.map +0 -1
  371. package/dist/chunk-FL6J644M.js.map +0 -1
  372. package/dist/chunk-GIUOXAVL.js.map +0 -1
  373. package/dist/chunk-IOS2NXW7.js.map +0 -1
  374. package/dist/chunk-J3AWE5I4.js +0 -50
  375. package/dist/chunk-J3AWE5I4.js.map +0 -1
  376. package/dist/chunk-LAZLBC2Q.js.map +0 -1
  377. package/dist/chunk-MORVLMDG.js.map +0 -1
  378. package/dist/chunk-MTCTX25G.js.map +0 -1
  379. package/dist/chunk-O27D24CA.js.map +0 -1
  380. package/dist/chunk-PGL6TXFW.js.map +0 -1
  381. package/dist/chunk-QCLLBMLA.js.map +0 -1
  382. package/dist/chunk-QQICWWNX.js.map +0 -1
  383. package/dist/chunk-TKDDTLG5.js.map +0 -1
  384. package/dist/chunk-TNG3XKHB.js.map +0 -1
  385. package/dist/chunk-XKZPBRU7.js.map +0 -1
@@ -62,6 +62,28 @@
62
62
  )
63
63
  );
64
64
  }
65
+ .kui-dialog-surface[data-presentation="modal"][data-height]
66
+ > wa-dialog::part(dialog) {
67
+ --_kui-dialog-surface-resolved-height: max(
68
+ 0px,
69
+ min(
70
+ var(--_kui-dialog-surface-height, 100dvh),
71
+ calc(
72
+ 100dvh - var(--_kui-dialog-surface-resolved-gutter) -
73
+ var(--_kui-dialog-surface-resolved-gutter)
74
+ )
75
+ )
76
+ );
77
+ height: var(--_kui-dialog-surface-resolved-height);
78
+ max-height: var(--_kui-dialog-surface-resolved-height);
79
+ }
80
+ /* One child owns the body: it gets the body's whole height and its own
81
+ scrolling (the body itself no longer scrolls). */
82
+ .kui-dialog-surface[data-body-layout="fill"] > wa-dialog::part(body) {
83
+ display: grid;
84
+ overflow: hidden;
85
+ grid-template-rows: minmax(0, 1fr);
86
+ }
65
87
  .kui-dialog-surface[data-body-inset="none"] > wa-dialog::part(body),
66
88
  .kui-dialog-surface[data-footer-inset="none"] > wa-dialog::part(footer) {
67
89
  padding: 0;
@@ -92,6 +114,103 @@
92
114
  max-height: 100dvh;
93
115
  border-radius: 0;
94
116
  }
117
+ /* PopoverDialogSurface: the dialog chrome and bounded geometry for a native
118
+ popover="auto" surface (non-modal, light dismiss) or the same surface in
119
+ flow. The UA popover rules supply the centered top-layer placement. */
120
+ .kui-popover-dialog-surface {
121
+ --_kui-popover-dialog-surface-width: 35rem;
122
+ --_kui-popover-dialog-surface-resolved-gutter: max(
123
+ 0px,
124
+ var(--_kui-popover-dialog-surface-gutter, 1rem)
125
+ );
126
+ --_kui-popover-dialog-surface-available-height: calc(
127
+ 100dvh - var(--_kui-popover-dialog-surface-resolved-gutter) -
128
+ var(--_kui-popover-dialog-surface-resolved-gutter)
129
+ );
130
+ box-sizing: border-box;
131
+ width: min(
132
+ var(
133
+ --_kui-popover-dialog-surface-preferred-width,
134
+ var(--_kui-popover-dialog-surface-width)
135
+ ),
136
+ max(
137
+ 0px,
138
+ calc(
139
+ 100vw - var(--_kui-popover-dialog-surface-resolved-gutter) -
140
+ var(--_kui-popover-dialog-surface-resolved-gutter)
141
+ )
142
+ )
143
+ );
144
+ max-height: max(0px, var(--_kui-popover-dialog-surface-available-height));
145
+ padding: 0;
146
+ overflow: auto;
147
+ color: var(--kui-color-text);
148
+ border: 1px solid var(--kui-color-neutral-border-normal);
149
+ border-radius: var(--kui-radius-l);
150
+ background: var(--kui-color-surface-raised);
151
+ box-shadow: var(--kui-shadow-l);
152
+ }
153
+ .kui-popover-dialog-surface[data-size="small"] {
154
+ --_kui-popover-dialog-surface-width: 25rem;
155
+ }
156
+ .kui-popover-dialog-surface[data-size="large"] {
157
+ --_kui-popover-dialog-surface-width: 50rem;
158
+ }
159
+ .kui-popover-dialog-surface[data-max-height] {
160
+ max-height: max(
161
+ 0px,
162
+ min(
163
+ var(--_kui-popover-dialog-surface-max-height, 100dvh),
164
+ var(--_kui-popover-dialog-surface-available-height)
165
+ )
166
+ );
167
+ }
168
+ .kui-popover-dialog-surface[data-height] {
169
+ height: max(
170
+ 0px,
171
+ min(
172
+ var(--_kui-popover-dialog-surface-height, 100dvh),
173
+ var(--_kui-popover-dialog-surface-available-height)
174
+ )
175
+ );
176
+ max-height: none;
177
+ }
178
+ /* Centered in the top layer whatever margins or item alignment the host
179
+ sets: an absolutely positioned box's auto self-alignment otherwise
180
+ follows its parent's justify-items. */
181
+ .kui-popover-dialog-surface[data-presentation="overlay"]:popover-open {
182
+ inset: 0;
183
+ margin: auto;
184
+ place-self: center;
185
+ }
186
+ .kui-popover-dialog-surface::backdrop {
187
+ background: var(
188
+ --wa-color-overlay-modal,
189
+ light-dark(rgb(29 29 31 / 0.34), rgb(0 0 0 / 0.6))
190
+ );
191
+ }
192
+ /* Only an open overlay lays out, so a closed one stays hidden. One filling
193
+ child takes the whole surface and owns its scrolling. */
194
+ .kui-popover-dialog-surface[data-body-layout="fill"]:is(
195
+ :popover-open,
196
+ [data-presentation="embedded"]
197
+ ) {
198
+ display: grid;
199
+ overflow: hidden;
200
+ grid-template-rows: minmax(0, 1fr);
201
+ }
202
+ /* In flow for a catalog or inline use: the same surface without the top
203
+ layer, never wider than its container. */
204
+ .kui-popover-dialog-surface[data-presentation="embedded"] {
205
+ position: relative;
206
+ inset: auto;
207
+ /* The available inline space, after any margin the container gives it. */
208
+ max-width: 100%;
209
+ max-width: -webkit-fill-available;
210
+ max-width: -moz-available;
211
+ max-width: stretch;
212
+ margin: 0;
213
+ }
95
214
  .kui-popup-surface {
96
215
  display: inline-flex;
97
216
  }
@@ -52,10 +52,7 @@
52
52
  }
53
53
 
54
54
  .kui-tab-scaffold__scene[data-appearance="sunken"] {
55
- background: var(
56
- --kui-sunken-panel-background,
57
- var(--kui-color-surface-lowered)
58
- );
55
+ background: var(--kui-sunken-panel-background, var(--kui-sunken-surface));
59
56
  }
60
57
 
61
58
  /* A scene is its region's scroll owner, so its top inset is padding inside
@@ -45,6 +45,42 @@ span.kui-text[data-wrap="truncate"] {
45
45
  max-width: 100%;
46
46
  }
47
47
 
48
+ /* Tail-preserving truncation: the clip box runs right to left so its ellipsis
49
+ lands at the start, while the isolated left-to-right run keeps the text's
50
+ own order and punctuation. Short text that fits stays left-aligned. */
51
+ .kui-text__truncate-start {
52
+ display: block;
53
+ overflow: hidden;
54
+ direction: rtl;
55
+ text-align: left;
56
+ text-overflow: ellipsis;
57
+ white-space: nowrap;
58
+ }
59
+
60
+ /* Middle truncation: the head shrinks to an ellipsis while the kept suffix
61
+ (the last path segment) stays whole. Pre keeps a space at the split. */
62
+ .kui-text__truncate-middle {
63
+ display: flex;
64
+ min-width: 0;
65
+ overflow: hidden;
66
+ }
67
+
68
+ .kui-text__truncate-head,
69
+ .kui-text__truncate-tail {
70
+ white-space: pre;
71
+ }
72
+
73
+ .kui-text__truncate-head {
74
+ flex: 0 1 auto;
75
+ min-width: 0;
76
+ overflow: hidden;
77
+ text-overflow: ellipsis;
78
+ }
79
+
80
+ .kui-text__truncate-tail {
81
+ flex: 0 0 auto;
82
+ }
83
+
48
84
  .kui-text__clamp {
49
85
  display: -webkit-box;
50
86
  overflow: hidden;
@@ -89,6 +125,32 @@ span.kui-text[data-wrap="truncate"] {
89
125
  line-height: 1.2;
90
126
  }
91
127
 
128
+ /* Inline alignment. The truncation boxes carry their own direction or flex
129
+ layout, so each aligns its single line explicitly. */
130
+ .kui-text[data-align="center"] {
131
+ text-align: center;
132
+ }
133
+
134
+ .kui-text[data-align="end"] {
135
+ text-align: end;
136
+ }
137
+
138
+ .kui-text[data-align="center"] > .kui-text__truncate-start {
139
+ text-align: center;
140
+ }
141
+
142
+ .kui-text[data-align="end"] > .kui-text__truncate-start {
143
+ text-align: right;
144
+ }
145
+
146
+ .kui-text[data-align="center"] > .kui-text__truncate-middle {
147
+ justify-content: center;
148
+ }
149
+
150
+ .kui-text[data-align="end"] > .kui-text__truncate-middle {
151
+ justify-content: flex-end;
152
+ }
153
+
92
154
  span.kui-text {
93
155
  margin: 0;
94
156
  border: 0;
@@ -284,12 +284,23 @@
284
284
  no-grow / may-shrink behavior a toolbar row wants without leaking the width
285
285
  into the cross axis. */
286
286
  flex: 0 1 auto;
287
+ /* A grow search group animates the open/close itself and sets this duration
288
+ to 0s: the field is the group's width on every frame instead of running a
289
+ second, lagging width transition that left an empty band beside a wrapped
290
+ query (KF-50K0JM). */
287
291
  transition:
288
- width 0.25s ease,
292
+ width var(--_kui-toolbar-group-grow-search-width-duration, 0.25s) ease,
289
293
  background-color 0.2s ease,
290
294
  border-color 0.2s ease;
291
295
  }
292
296
 
297
+ /* While a grow search group is still narrower than its basis, keep the
298
+ basis-wide layout it provides; the group clips the field and reveals the
299
+ query instead of re-wrapping it every frame. Elsewhere this is 0px. */
300
+ .kui-token-search[data-collapsible="true"][data-expanded="true"] {
301
+ min-width: var(--_kui-toolbar-group-grow-search-min-width, 0px);
302
+ }
303
+
293
304
  .kui-token-search[data-collapsible="true"][data-expanded="true"][data-fill="true"] {
294
305
  width: 100%;
295
306
  flex: 1 1 auto;
@@ -215,10 +215,35 @@
215
215
 
216
216
  .kui-toolbar-control-group[data-sizing="grow"][data-expanded="true"] {
217
217
  --_kui-toolbar-group-grow-search-width: 100%;
218
+ /* The grown group's content-box width at its basis (basis minus the 1px
219
+ border and 1px padding on each side). A collapsible search lays its editor
220
+ out at least this wide while the group's flex size animates open, so the
221
+ clipped query is revealed rather than re-wrapped every frame (KF-50K0JM). */
222
+ --_kui-toolbar-group-grow-search-min-width: calc(
223
+ var(--kui-toolbar-group-grow-basis, 19rem) - 4px
224
+ );
218
225
  width: auto;
219
226
  min-width: var(--kui-toolbar-group-grow-basis, 19rem);
220
227
  flex: 1 1 var(--kui-toolbar-group-grow-basis, 19rem);
221
228
  }
229
+
230
+ /* A grow search animates its flex size, not `width`: an expanded grow group's
231
+ `width: auto` cannot interpolate, so it used to snap open while the search
232
+ inside animated, leaving an empty band (KF-50K0JM). The collapsed state names
233
+ a definite basis and minimum so all three flex lengths interpolate. */
234
+ .kui-toolbar-control-group[data-content="search"][data-sizing="grow"] {
235
+ /* The group owns this motion; a collapsible search inside follows it on
236
+ every frame rather than running its own width transition. */
237
+ --_kui-toolbar-group-grow-search-width-duration: 0s;
238
+ transition-property:
239
+ width, flex-basis, flex-grow, min-width, background-color, border-color;
240
+ transition-duration: 0.25s, 0.25s, 0.25s, 0.25s, 0.2s, 0.2s;
241
+ transition-timing-function: ease;
242
+ }
243
+ .kui-toolbar-control-group[data-content="search"][data-sizing="grow"][data-expanded="false"] {
244
+ min-width: var(--kui-toolbar-group-size, calc(2px + 2.625rem));
245
+ flex: 0 0 var(--kui-toolbar-group-size, calc(2px + 2.625rem));
246
+ }
222
247
  .kui-toolbar-control-group[data-sizing="fill"] {
223
248
  width: 100%;
224
249
  min-width: 0;
@@ -256,15 +281,32 @@
256
281
 
257
282
  @container kui-toolbar (max-width: 30rem) {
258
283
  .kui-toolbar-control-group[data-sizing="grow"][data-expanded="true"] {
284
+ --_kui-toolbar-group-grow-search-min-width: 0px;
259
285
  width: 100%;
260
286
  min-width: 0;
261
287
  flex: 1 1 100%;
262
288
  }
289
+
290
+ /* Here the grown search takes its own line. Animating its basis would push
291
+ the trailing siblings and then jump the group to the next line mid-way, so
292
+ it opens and closes in one frame with the search filling it. */
293
+ .kui-toolbar-control-group[data-content="search"][data-sizing="grow"] {
294
+ transition-property: background-color, border-color;
295
+ transition-duration: 0.2s;
296
+ }
263
297
  }
264
298
  .kui-toolbar-control-group[data-content="text"]
265
- > :is(button, wa-button, .kui-toolbar-action-link),
299
+ > :is(
300
+ button,
301
+ wa-button:not(:where(.kui-icon-button)),
302
+ .kui-toolbar-action-link
303
+ ),
266
304
  .kui-toolbar-control-group[data-content="mixed"]
267
- > :is(button, wa-button, .kui-toolbar-action-link) {
305
+ > :is(
306
+ button,
307
+ wa-button:not(:where(.kui-icon-button)),
308
+ .kui-toolbar-action-link
309
+ ) {
268
310
  min-width: max-content;
269
311
  }
270
312
  .kui-toolbar-control-group[data-content="mixed"] > button {
@@ -272,14 +314,14 @@
272
314
  gap: var(--kui-space-xs);
273
315
  }
274
316
  .kui-toolbar-control-group[data-content="mixed"]
275
- wa-button:not(:where(.kui-popup-menu > *)) {
317
+ wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button)) {
276
318
  line-height: normal;
277
319
  }
278
320
  /* Toolbar controls never wrap. Web Awesome's label part is a plain block, so a
279
321
  slotted icon (a block SVG) and its text would otherwise stack vertically —
280
322
  lay them out on one row the way native mixed buttons already are. */
281
323
  .kui-toolbar-control-group
282
- wa-button:not(:where(.kui-popup-menu > *))::part(label) {
324
+ wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button))::part(label) {
283
325
  display: inline-flex;
284
326
  align-items: center;
285
327
  gap: var(--kui-space-xs);
@@ -335,11 +377,32 @@
335
377
  background: transparent;
336
378
  }
337
379
 
380
+ /* `selectedChrome="none"`: a pressed control paints like its unpressed
381
+ neighbors, for an icon-state toggle whose glyph already shows the state.
382
+ One button opts out alone with `data-selected-chrome="none"`. After the
383
+ tone and appearance rules above, so it wins over their selected fills. */
384
+ .kui-toolbar-control-group[data-selected-chrome="none"],
385
+ .kui-toolbar-control-group
386
+ > :is(
387
+ button,
388
+ wa-button:not(:where(.kui-icon-button))
389
+ )[data-selected-chrome="none"] {
390
+ --kui-toolbar-control-selected-shadow: none;
391
+ --kui-toolbar-control-selected-border: transparent;
392
+ --kui-toolbar-control-selected-background: transparent;
393
+ --kui-toolbar-control-selected-color: var(--kui-toolbar-control-color);
394
+ }
395
+
338
396
  /* The group lays out its own native and raw Web Awesome children. A composed
339
397
  PopupMenu (`wa-dropdown.kui-popup-menu`) or Select sizes itself in the
340
398
  group's context from its own stylesheet (popup-menu.css, select.css); the
341
399
  group names those children by class only to key its own state on them. */
342
- .kui-toolbar-control-group > :is(button, wa-button, .kui-toolbar-action-link),
400
+ .kui-toolbar-control-group
401
+ > :is(
402
+ button,
403
+ wa-button:not(:where(.kui-icon-button)),
404
+ .kui-toolbar-action-link
405
+ ),
343
406
  .kui-toolbar-control-group > wa-dropdown:not(.kui-popup-menu) {
344
407
  flex: 0 0 auto;
345
408
  }
@@ -366,12 +429,15 @@
366
429
  place-items: center;
367
430
  }
368
431
 
369
- .kui-toolbar-control-group > button:disabled {
432
+ /* A native button that is disabled, or kept focusable with aria-disabled,
433
+ dims and drops hover chrome. */
434
+ .kui-toolbar-control-group > button:is(:disabled, [aria-disabled="true"]) {
370
435
  opacity: 0.5;
371
436
  cursor: not-allowed;
372
437
  }
373
438
 
374
- .kui-toolbar-control-group > button:not(:disabled):hover {
439
+ .kui-toolbar-control-group
440
+ > button:not(:disabled, [aria-disabled="true"]):hover {
375
441
  border-color: var(--kui-toolbar-control-border);
376
442
  background: var(--kui-toolbar-control-hover-background);
377
443
  }
@@ -429,7 +495,9 @@
429
495
  }
430
496
 
431
497
  .kui-toolbar-control-group > button svg,
432
- .kui-toolbar-control-group wa-button:not(:where(.kui-popup-menu > *)) > svg,
498
+ .kui-toolbar-control-group
499
+ wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button))
500
+ > svg,
433
501
  .kui-toolbar-control-group > .kui-toolbar-action-link svg {
434
502
  display: block;
435
503
  width: 1rem;
@@ -441,40 +509,44 @@
441
509
  buttons: a composed PopupMenu's trigger (`.kui-popup-menu > wa-button`) is
442
510
  excluded inside a zero-specificity `:where()` and takes the same metrics
443
511
  from popup-menu.css. */
444
- .kui-toolbar-control-group wa-button:not(:where(.kui-popup-menu > *)) {
512
+ .kui-toolbar-control-group
513
+ wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button)) {
445
514
  --wa-form-control-height: 2.5rem;
446
515
  }
447
516
  .kui-toolbar-control-group[data-size="compact"]
448
- wa-button:not(:where(.kui-popup-menu > *)) {
517
+ wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button)) {
449
518
  --wa-form-control-height: 2rem;
450
519
  }
451
520
 
452
- .kui-toolbar-control-group > wa-button,
521
+ .kui-toolbar-control-group > wa-button:not(:where(.kui-icon-button)),
453
522
  .kui-toolbar-control-group > wa-dropdown:not(.kui-popup-menu),
454
- .kui-toolbar-control-group > wa-dropdown:not(.kui-popup-menu) > wa-button,
455
523
  .kui-toolbar-control-group
456
524
  > wa-dropdown:not(.kui-popup-menu)
457
- > wa-button::part(base) {
525
+ > wa-button:not(:where(.kui-icon-button)),
526
+ .kui-toolbar-control-group
527
+ > wa-dropdown:not(.kui-popup-menu)
528
+ > wa-button:not(:where(.kui-icon-button))::part(base) {
458
529
  min-width: 2.5rem;
459
530
  height: 2.5rem;
460
531
  }
461
532
  .kui-toolbar-control-group[data-size="compact"] > button,
462
533
  .kui-toolbar-control-group[data-size="compact"] > .kui-toolbar-action-link,
463
- .kui-toolbar-control-group[data-size="compact"] > wa-button,
534
+ .kui-toolbar-control-group[data-size="compact"]
535
+ > wa-button:not(:where(.kui-icon-button)),
464
536
  .kui-toolbar-control-group[data-size="compact"]
465
537
  > wa-dropdown:not(.kui-popup-menu),
466
538
  .kui-toolbar-control-group[data-size="compact"]
467
539
  > wa-dropdown:not(.kui-popup-menu)
468
- > wa-button,
540
+ > wa-button:not(:where(.kui-icon-button)),
469
541
  .kui-toolbar-control-group[data-size="compact"]
470
542
  > wa-dropdown:not(.kui-popup-menu)
471
- > wa-button::part(base),
543
+ > wa-button:not(:where(.kui-icon-button))::part(base),
472
544
  .kui-toolbar-control-group[data-size="compact"][data-nested-dropdown="true"]
473
545
  wa-dropdown:not(.kui-popup-menu)
474
- wa-button,
546
+ wa-button:not(:where(.kui-icon-button)),
475
547
  .kui-toolbar-control-group[data-size="compact"][data-nested-dropdown="true"]
476
548
  wa-dropdown:not(.kui-popup-menu)
477
- wa-button::part(base) {
549
+ wa-button:not(:where(.kui-icon-button))::part(base) {
478
550
  min-width: 2rem;
479
551
  height: 2rem;
480
552
  min-height: 2rem;
@@ -523,7 +595,7 @@
523
595
  .kui-toolbar-control-group[data-size="compact"][data-content="mixed"]
524
596
  > wa-dropdown:not(.kui-popup-menu),
525
597
  .kui-toolbar-control-group[data-size="compact"][data-content="mixed"]
526
- > wa-button {
598
+ > wa-button:not(:where(.kui-icon-button)) {
527
599
  margin: -2px;
528
600
  }
529
601
 
@@ -533,25 +605,26 @@
533
605
  the separator and the caret beyond the group border. */
534
606
  .kui-toolbar-control-group[data-content="mixed"][data-nested-dropdown="true"]
535
607
  > wa-dropdown:not(.kui-popup-menu)
536
- > wa-button,
608
+ > wa-button:not(:where(.kui-icon-button)),
537
609
  .kui-toolbar-control-group[data-content="mixed"][data-nested-dropdown="true"]
538
610
  > wa-dropdown:not(.kui-popup-menu)
539
- > wa-button::part(base) {
611
+ > wa-button:not(:where(.kui-icon-button))::part(base) {
540
612
  min-width: max-content;
541
613
  }
542
614
  .kui-toolbar-control-group[data-content="mixed"][data-nested-dropdown="true"]
543
615
  > wa-dropdown:not(.kui-popup-menu)
544
- > wa-button::part(base) {
616
+ > wa-button:not(:where(.kui-icon-button))::part(base) {
545
617
  width: max-content;
546
618
  }
547
619
 
548
620
  .kui-toolbar-control-group[data-single="true"]
549
621
  > wa-dropdown:not(.kui-popup-menu)
550
- > wa-button::part(base) {
622
+ > wa-button:not(:where(.kui-icon-button))::part(base) {
551
623
  width: max-content;
552
624
  }
553
625
 
554
- .kui-toolbar-control-group wa-button:not(:where(.kui-popup-menu > *)) {
626
+ .kui-toolbar-control-group
627
+ wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button)) {
555
628
  display: inline-flex;
556
629
  line-height: 0;
557
630
  align-items: center;
@@ -560,7 +633,7 @@
560
633
  }
561
634
 
562
635
  .kui-toolbar-control-group
563
- wa-button:not(:where(.kui-popup-menu > *))::part(base) {
636
+ wa-button:not(:where(.kui-popup-menu > *, .kui-icon-button))::part(base) {
564
637
  /* Match min-width to the 40px height so an icon-only button's highlight is at
565
638
  least a circle, not a vertical oval — the host is 40px wide but the base
566
639
  part was sizing to its ~32px content. Text/caret buttons grow past it. */
@@ -575,15 +648,18 @@
575
648
  }
576
649
 
577
650
  .kui-toolbar-control-group
578
- wa-button:not(:where(.kui-popup-menu > *)):hover::part(base) {
651
+ wa-button:not(
652
+ :where(.kui-popup-menu > *, .kui-icon-button),
653
+ [disabled]
654
+ ):hover::part(base) {
579
655
  border-color: var(--kui-toolbar-control-border);
580
656
  background-color: var(--kui-toolbar-control-hover-background);
581
657
  }
582
658
 
583
659
  .kui-toolbar-control-group[data-single="true"]:has(
584
660
  > :is(
585
- button:not(:disabled),
586
- wa-button,
661
+ button:not(:disabled, [aria-disabled="true"]),
662
+ wa-button:not([disabled]),
587
663
  .kui-popup-menu,
588
664
  wa-dropdown:not(.kui-popup-menu),
589
665
  .kui-select,
@@ -594,9 +670,16 @@
594
670
  }
595
671
 
596
672
  .kui-toolbar-control-group[data-single="true"]
597
- > :is(button, wa-button, .kui-toolbar-action-link):hover,
673
+ > :is(
674
+ button,
675
+ wa-button:not(:where(.kui-icon-button)),
676
+ .kui-toolbar-action-link
677
+ ):hover,
598
678
  .kui-toolbar-control-group[data-single="true"]
599
- wa-button:not(:where(.kui-popup-menu > *)):hover::part(base) {
679
+ wa-button:not(
680
+ :where(.kui-popup-menu > *, .kui-icon-button),
681
+ [disabled]
682
+ ):hover::part(base) {
600
683
  border-color: transparent;
601
684
  background: transparent;
602
685
  }
@@ -607,8 +690,8 @@
607
690
  Done action). */
608
691
  .kui-toolbar-control-group:not([data-single="true"]):has(
609
692
  > :is(
610
- button:not(:disabled),
611
- wa-button,
693
+ button:not(:disabled, [aria-disabled="true"]),
694
+ wa-button:not([disabled]),
612
695
  .kui-select,
613
696
  .kui-toolbar-action-link
614
697
  ):nth-child(1 of :where(:not([data-toolbar-visibility-state]))):where(
@@ -619,17 +702,25 @@
619
702
  }
620
703
 
621
704
  .kui-toolbar-control-group:not([data-single="true"]):has(
622
- > :is(button, wa-button, .kui-toolbar-action-link):nth-child(
623
- 1 of :where(:not([data-toolbar-visibility-state]))
624
- ):where(:nth-last-child(1 of :not([data-toolbar-visibility-state])))
705
+ > :is(
706
+ button,
707
+ wa-button:not(:where(.kui-icon-button)),
708
+ .kui-toolbar-action-link
709
+ ):nth-child(1 of :where(:not([data-toolbar-visibility-state]))):where(
710
+ :nth-last-child(1 of :not([data-toolbar-visibility-state]))
711
+ )
625
712
  )
626
- > :is(button, wa-button, .kui-toolbar-action-link):hover,
713
+ > :is(
714
+ button,
715
+ wa-button:not(:where(.kui-icon-button)),
716
+ .kui-toolbar-action-link
717
+ ):hover,
627
718
  .kui-toolbar-control-group:not([data-single="true"]):has(
628
- > :is(button, wa-button):nth-child(
719
+ > :is(button, wa-button:not(:where(.kui-icon-button))):nth-child(
629
720
  1 of :where(:not([data-toolbar-visibility-state]))
630
721
  ):where(:nth-last-child(1 of :not([data-toolbar-visibility-state])))
631
722
  )
632
- > wa-button:hover::part(base) {
723
+ > wa-button:not(:where(.kui-icon-button)):hover::part(base) {
633
724
  border-color: transparent;
634
725
  background: transparent;
635
726
  }
@@ -651,18 +742,22 @@
651
742
  and stays inside the group's border instead of overflowing it as an oversized
652
743
  square (KF-5BDDQ9). The selected text color rides on the host and inherits in. */
653
744
  .kui-toolbar-control-group[data-single="false"]
654
- > wa-button[aria-pressed="true"] {
745
+ > wa-button:not(:where(.kui-icon-button))[aria-pressed="true"] {
655
746
  color: var(--kui-toolbar-control-selected-color);
656
747
  }
657
748
  .kui-toolbar-control-group[data-single="false"]
658
- > wa-button[aria-pressed="true"]::part(base) {
749
+ > wa-button:not(:where(.kui-icon-button))[aria-pressed="true"]::part(base) {
659
750
  border-color: var(--kui-toolbar-control-selected-border);
660
751
  background: var(--kui-toolbar-control-selected-background);
661
752
  box-shadow: var(--kui-toolbar-control-selected-shadow);
662
753
  }
663
754
 
664
755
  .kui-toolbar-control-group
665
- > :is(button, wa-button, .kui-toolbar-action-link):focus-visible {
756
+ > :is(
757
+ button,
758
+ wa-button:not(:where(.kui-icon-button)),
759
+ .kui-toolbar-action-link
760
+ ):focus-visible {
666
761
  outline: var(--kui-focus-ring);
667
762
  outline-offset: 1px;
668
763
  }
@@ -743,12 +838,13 @@
743
838
  }
744
839
 
745
840
  .kui-toolbar-control-group[data-button-appearance="push"][data-single="true"]
746
- > :is(button, wa-button)[aria-pressed="true"] {
841
+ > :is(button, wa-button:not(:where(.kui-icon-button)))[aria-pressed="true"] {
747
842
  color: var(--kui-toolbar-control-pressed-color);
748
843
  }
749
844
 
750
845
  @media (prefers-reduced-motion: reduce) {
751
- .kui-toolbar-control-group[data-content="search"] {
846
+ .kui-toolbar-control-group[data-content="search"],
847
+ .kui-toolbar-control-group[data-content="search"][data-sizing="grow"] {
752
848
  transition-duration: 0s;
753
849
  }
754
850
 
@@ -785,18 +881,18 @@
785
881
  .kui-toolbar-control-group[data-content="avatar"]:is(
786
882
  [data-single="true"],
787
883
  :has(
788
- > :is(button, wa-button):nth-child(
884
+ > :is(button, wa-button:not(:where(.kui-icon-button))):nth-child(
789
885
  1 of :where(:not([data-toolbar-visibility-state]))
790
886
  ):where(:nth-last-child(1 of :not([data-toolbar-visibility-state])))
791
887
  )
792
888
  )
793
- > :is(button, wa-button) {
889
+ > :is(button, wa-button:not(:where(.kui-icon-button))) {
794
890
  color: transparent;
795
891
  }
796
892
 
797
893
  .kui-toolbar-control-group[data-content="avatar"][data-single="false"]:not(
798
894
  :has(
799
- > :is(button, wa-button):nth-child(
895
+ > :is(button, wa-button:not(:where(.kui-icon-button))):nth-child(
800
896
  1 of :where(:not([data-toolbar-visibility-state]))
801
897
  ):where(:nth-last-child(1 of :not([data-toolbar-visibility-state])))
802
898
  )
@@ -804,12 +900,12 @@
804
900
  > button[aria-pressed="true"],
805
901
  .kui-toolbar-control-group[data-content="avatar"][data-single="false"]:not(
806
902
  :has(
807
- > :is(button, wa-button):nth-child(
903
+ > :is(button, wa-button:not(:where(.kui-icon-button))):nth-child(
808
904
  1 of :where(:not([data-toolbar-visibility-state]))
809
905
  ):where(:nth-last-child(1 of :not([data-toolbar-visibility-state])))
810
906
  )
811
907
  )
812
- > wa-button[aria-pressed="true"]::part(base) {
908
+ > wa-button:not(:where(.kui-icon-button))[aria-pressed="true"]::part(base) {
813
909
  color: transparent;
814
910
  background-image: var(--kui-toolbar-avatar-image);
815
911
  background-origin: border-box;
@@ -49,6 +49,29 @@ button.kui-toolbar-text:focus-visible {
49
49
  padding-block: max(0px, calc((var(--_kui-toolbar-band) - 1.25em) / 2));
50
50
  }
51
51
 
52
+ /* A title with supporting copy stacks the two lines and centers them together
53
+ in the control band (growing past it only when they do not fit), so
54
+ trailing groups stay on the band and both lines start at the same edge. */
55
+ .kui-toolbar-text[data-has-description="true"] {
56
+ height: auto;
57
+ flex-direction: column;
58
+ align-items: stretch;
59
+ justify-content: center;
60
+ gap: 0.125rem;
61
+ }
62
+
63
+ .kui-toolbar-text__description {
64
+ min-width: 0;
65
+ overflow: hidden;
66
+ color: var(--kui-color-text-quiet);
67
+ font-size: var(--kui-font-xs);
68
+ font-weight: 400;
69
+ letter-spacing: normal;
70
+ line-height: 1.2;
71
+ text-overflow: ellipsis;
72
+ white-space: nowrap;
73
+ }
74
+
52
75
  /* A filling title grows into its row's free space and truncates there. */
53
76
  .kui-toolbar-text[data-fill="true"] {
54
77
  flex: 1 1 auto;