@kerfjs/ui 5.0.0-beta.103 → 5.0.0-beta.105

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 (759) hide show
  1. package/README.md +163 -116
  2. package/ai/application-ui-profile.defaults.json +125 -4
  3. package/ai/compile-time-contracts-v1.json +11 -11
  4. package/ai/component-catalog.json +2606 -627
  5. package/ai/component-composition-rules.json +11 -10
  6. package/ai/component-composition.json +1689 -300
  7. package/ai/components/README.md +66 -48
  8. package/ai/components/application-tabs.md +4 -4
  9. package/ai/components/badge.md +1 -0
  10. package/ai/components/button.md +91 -0
  11. package/ai/components/checkbox.md +89 -0
  12. package/ai/components/choice-chips.md +9 -3
  13. package/ai/components/color-field.md +92 -0
  14. package/ai/components/color-picker.md +90 -0
  15. package/ai/components/color-swatches.md +82 -0
  16. package/ai/components/combobox.md +6 -4
  17. package/ai/components/content-item.md +5 -2
  18. package/ai/components/disclosure.md +83 -0
  19. package/ai/components/file-picker.md +1 -0
  20. package/ai/components/foundation.md +1 -1
  21. package/ai/components/list-action-row.md +3 -3
  22. package/ai/components/list-detail-dialog.md +90 -0
  23. package/ai/components/list.md +2 -0
  24. package/ai/components/lucide-icon.md +2 -0
  25. package/ai/components/{composer.md → message-composer.md} +17 -16
  26. package/ai/components/pane.md +3 -1
  27. package/ai/components/popup-menu.md +12 -9
  28. package/ai/components/progress-bar.md +82 -0
  29. package/ai/components/progress-ring.md +80 -0
  30. package/ai/components/radio-group.md +88 -0
  31. package/ai/components/recipe-list-detail-dialog.md +5 -5
  32. package/ai/components/search-field.md +108 -0
  33. package/ai/components/select.md +15 -13
  34. package/ai/components/slider.md +84 -0
  35. package/ai/components/surface-scaffold.md +16 -13
  36. package/ai/components/switch.md +81 -0
  37. package/ai/components/tab-bar.md +6 -6
  38. package/ai/components/tab-navigator.md +2 -2
  39. package/ai/components/tabs.md +7 -7
  40. package/ai/components/tag-field.md +86 -0
  41. package/ai/components/text-field.md +98 -0
  42. package/ai/components/text.md +1 -0
  43. package/ai/components/toast.md +85 -0
  44. package/ai/components/toolbar-control-group.md +3 -3
  45. package/ai/components/tooltip.md +81 -0
  46. package/ai/components/wa-accordion-item.md +11 -5
  47. package/ai/components/wa-accordion.md +11 -5
  48. package/ai/components/wa-animated-image.md +2 -1
  49. package/ai/components/wa-animation.md +1 -0
  50. package/ai/components/wa-avatar.md +1 -0
  51. package/ai/components/wa-badge.md +10 -3
  52. package/ai/components/wa-breadcrumb-item.md +1 -0
  53. package/ai/components/wa-breadcrumb.md +1 -0
  54. package/ai/components/wa-button-group.md +6 -4
  55. package/ai/components/wa-button.md +7 -5
  56. package/ai/components/wa-callout.md +7 -5
  57. package/ai/components/wa-card.md +12 -4
  58. package/ai/components/wa-carousel-item.md +1 -0
  59. package/ai/components/wa-carousel.md +1 -0
  60. package/ai/components/wa-checkbox-group.md +11 -4
  61. package/ai/components/wa-checkbox.md +10 -4
  62. package/ai/components/wa-color-picker.md +13 -5
  63. package/ai/components/wa-comparison.md +2 -1
  64. package/ai/components/wa-copy-button.md +1 -0
  65. package/ai/components/wa-details.md +11 -5
  66. package/ai/components/wa-dialog.md +10 -4
  67. package/ai/components/wa-divider.md +1 -0
  68. package/ai/components/wa-drawer.md +12 -5
  69. package/ai/components/wa-dropdown-item.md +8 -6
  70. package/ai/components/wa-dropdown.md +8 -6
  71. package/ai/components/wa-format-bytes.md +1 -0
  72. package/ai/components/wa-format-date.md +1 -0
  73. package/ai/components/wa-format-number.md +1 -0
  74. package/ai/components/wa-icon.md +2 -1
  75. package/ai/components/wa-include.md +6 -4
  76. package/ai/components/wa-input.md +9 -6
  77. package/ai/components/wa-intersection-observer.md +1 -0
  78. package/ai/components/wa-known-date.md +1 -0
  79. package/ai/components/wa-markdown.md +1 -0
  80. package/ai/components/wa-mutation-observer.md +1 -0
  81. package/ai/components/wa-number-input.md +1 -0
  82. package/ai/components/wa-option.md +7 -5
  83. package/ai/components/wa-otp-input.md +1 -0
  84. package/ai/components/wa-page.md +13 -4
  85. package/ai/components/wa-pagination.md +1 -0
  86. package/ai/components/wa-popover.md +11 -5
  87. package/ai/components/wa-popup.md +11 -4
  88. package/ai/components/wa-progress-bar.md +11 -4
  89. package/ai/components/wa-progress-ring.md +11 -4
  90. package/ai/components/wa-qr-code.md +1 -0
  91. package/ai/components/wa-radio-group.md +12 -4
  92. package/ai/components/wa-radio.md +10 -4
  93. package/ai/components/wa-random-content.md +1 -0
  94. package/ai/components/wa-rating.md +1 -0
  95. package/ai/components/wa-relative-time.md +1 -0
  96. package/ai/components/wa-resize-observer.md +1 -0
  97. package/ai/components/wa-scroller.md +12 -4
  98. package/ai/components/wa-select.md +7 -5
  99. package/ai/components/wa-skeleton.md +10 -3
  100. package/ai/components/wa-slider.md +11 -5
  101. package/ai/components/wa-spinner.md +7 -5
  102. package/ai/components/wa-split-panel.md +7 -5
  103. package/ai/components/wa-step.md +56 -0
  104. package/ai/components/wa-stepper.md +56 -0
  105. package/ai/components/wa-switch.md +10 -3
  106. package/ai/components/wa-tab-group.md +8 -6
  107. package/ai/components/wa-tab-panel.md +7 -5
  108. package/ai/components/wa-tab.md +8 -6
  109. package/ai/components/wa-tag-input.md +62 -0
  110. package/ai/components/wa-tag.md +9 -6
  111. package/ai/components/wa-textarea.md +10 -3
  112. package/ai/components/wa-time-input.md +1 -0
  113. package/ai/components/wa-toast-item.md +9 -7
  114. package/ai/components/wa-toast.md +9 -7
  115. package/ai/components/wa-tooltip.md +11 -5
  116. package/ai/components/wa-tree-item.md +2 -1
  117. package/ai/components/wa-tree.md +2 -1
  118. package/ai/components/wa-zoomable-frame.md +2 -1
  119. package/ai/components/workbench-dialog.md +90 -0
  120. package/ai/public-api-signatures-v1.md +1577 -245
  121. package/ai/skill.md +83 -50
  122. package/ai/webawesome-jsx-signatures-v1.md +4 -1
  123. package/dist/badge.d.ts +9 -1
  124. package/dist/badge.js +1 -1
  125. package/dist/browser/button.js +5 -0
  126. package/dist/browser/catalog.js +3 -2
  127. package/dist/browser/{icon-button.js → checkbox.js} +2 -2
  128. package/dist/browser/color-field.js +4 -0
  129. package/dist/browser/color-picker.js +5 -0
  130. package/dist/browser/color-swatches.js +3 -0
  131. package/dist/browser/disclosure.js +5 -0
  132. package/dist/browser/list-action-row.js +1 -0
  133. package/dist/browser/list-detail-dialog.js +14 -0
  134. package/dist/browser/message-composer.js +5 -0
  135. package/dist/browser/popup-menu.js +1 -0
  136. package/dist/browser/progress-bar.js +3 -0
  137. package/dist/browser/progress-ring.js +3 -0
  138. package/dist/browser/radio-group.js +3 -0
  139. package/dist/browser/search-field.js +4 -0
  140. package/dist/browser/slider.js +3 -0
  141. package/dist/browser/surface-scaffold.js +1 -0
  142. package/dist/browser/switch.js +3 -0
  143. package/dist/browser/tab-bar-item.js +4 -0
  144. package/dist/browser/tag-field.js +5 -0
  145. package/dist/browser/text-field.js +4 -0
  146. package/dist/browser/workbench-dialog.js +15 -0
  147. package/dist/button.d.ts +108 -0
  148. package/dist/button.js +7 -0
  149. package/dist/button.js.map +1 -0
  150. package/dist/catalog-resources.d.ts +1 -1
  151. package/dist/catalog.d.ts +3 -3
  152. package/dist/catalog.js +57 -27
  153. package/dist/catalog.js.map +1 -1
  154. package/dist/checkbox.d.ts +45 -0
  155. package/dist/checkbox.js +6 -0
  156. package/dist/checkbox.js.map +1 -0
  157. package/dist/choice-chips.d.ts +49 -15
  158. package/dist/choice-chips.js +1 -1
  159. package/dist/chunk-23PPPNH6.js +93 -0
  160. package/dist/chunk-23PPPNH6.js.map +1 -0
  161. package/dist/{chunk-FNZQOUZ5.js → chunk-2FW7D4IG.js} +2 -2
  162. package/dist/{chunk-FNZQOUZ5.js.map → chunk-2FW7D4IG.js.map} +1 -1
  163. package/dist/{chunk-ZYU5WRC3.js → chunk-3GLYIIFR.js} +2 -2
  164. package/dist/{chunk-ZYU5WRC3.js.map → chunk-3GLYIIFR.js.map} +1 -1
  165. package/dist/{chunk-5NQF35VO.js → chunk-4RECPEHI.js} +2 -2
  166. package/dist/{chunk-5NQF35VO.js.map → chunk-4RECPEHI.js.map} +1 -1
  167. package/dist/{chunk-7IUEBNCO.js → chunk-5USKCWGL.js} +8 -3
  168. package/dist/chunk-5USKCWGL.js.map +1 -0
  169. package/dist/chunk-6VVIW7VB.js +69 -0
  170. package/dist/chunk-6VVIW7VB.js.map +1 -0
  171. package/dist/{chunk-LL45C7BB.js → chunk-7K6U6FCN.js} +1 -1
  172. package/dist/chunk-7K6U6FCN.js.map +1 -0
  173. package/dist/{chunk-HQZYKJ56.js → chunk-7W3GKMN4.js} +110 -74
  174. package/dist/chunk-7W3GKMN4.js.map +1 -0
  175. package/dist/chunk-ACUKTVS3.js +371 -0
  176. package/dist/chunk-ACUKTVS3.js.map +1 -0
  177. package/dist/{chunk-YQ2AC4E2.js → chunk-AMIHGFLP.js} +2 -2
  178. package/dist/{chunk-YQ2AC4E2.js.map → chunk-AMIHGFLP.js.map} +1 -1
  179. package/dist/chunk-ATGAJVZ6.js +268 -0
  180. package/dist/chunk-ATGAJVZ6.js.map +1 -0
  181. package/dist/chunk-AYPGXR2E.js +20 -0
  182. package/dist/chunk-AYPGXR2E.js.map +1 -0
  183. package/dist/{chunk-ETCWQLJV.js → chunk-BKUMG2KB.js} +38 -28
  184. package/dist/chunk-BKUMG2KB.js.map +1 -0
  185. package/dist/chunk-C26Q6P4Q.js +76 -0
  186. package/dist/chunk-C26Q6P4Q.js.map +1 -0
  187. package/dist/chunk-C3RLKKFQ.js +452 -0
  188. package/dist/chunk-C3RLKKFQ.js.map +1 -0
  189. package/dist/{chunk-IM3GKYOG.js → chunk-CIAUILRR.js} +52 -32
  190. package/dist/chunk-CIAUILRR.js.map +1 -0
  191. package/dist/chunk-CNM6ZWP2.js +38 -0
  192. package/dist/chunk-CNM6ZWP2.js.map +1 -0
  193. package/dist/{chunk-LPHU44S3.js → chunk-CTQUDCY5.js} +3 -1
  194. package/dist/chunk-CTQUDCY5.js.map +1 -0
  195. package/dist/{chunk-MXNIVEVL.js → chunk-D4MXSAMI.js} +5 -3
  196. package/dist/chunk-D4MXSAMI.js.map +1 -0
  197. package/dist/{chunk-YBWQR2OK.js → chunk-DDSCVEO5.js} +10 -9
  198. package/dist/chunk-DDSCVEO5.js.map +1 -0
  199. package/dist/{chunk-SIW64V65.js → chunk-DF2YKGIX.js} +3 -3
  200. package/dist/{chunk-SIW64V65.js.map → chunk-DF2YKGIX.js.map} +1 -1
  201. package/dist/{chunk-3SKAEPPZ.js → chunk-ECFCAKWE.js} +4 -4
  202. package/dist/{chunk-3SKAEPPZ.js.map → chunk-ECFCAKWE.js.map} +1 -1
  203. package/dist/chunk-EKBMUXFV.js +298 -0
  204. package/dist/chunk-EKBMUXFV.js.map +1 -0
  205. package/dist/{chunk-IXLUZHGT.js → chunk-FG6U7KQQ.js} +5 -5
  206. package/dist/{chunk-IXLUZHGT.js.map → chunk-FG6U7KQQ.js.map} +1 -1
  207. package/dist/chunk-FKKJHGN5.js +147 -0
  208. package/dist/chunk-FKKJHGN5.js.map +1 -0
  209. package/dist/{chunk-FDZNYD4C.js → chunk-GCAK23PU.js} +34 -3
  210. package/dist/chunk-GCAK23PU.js.map +1 -0
  211. package/dist/chunk-GXSX6Q6O.js +42 -0
  212. package/dist/chunk-GXSX6Q6O.js.map +1 -0
  213. package/dist/{chunk-LOSRXZAH.js → chunk-HJXVVFBT.js} +14 -6
  214. package/dist/chunk-HJXVVFBT.js.map +1 -0
  215. package/dist/{chunk-M5KZ26VV.js → chunk-HQZG3OFL.js} +11 -1
  216. package/dist/chunk-HQZG3OFL.js.map +1 -0
  217. package/dist/{chunk-ELCMSQNJ.js → chunk-HTERKONR.js} +8 -8
  218. package/dist/chunk-HTERKONR.js.map +1 -0
  219. package/dist/chunk-HYORKKYP.js +8 -0
  220. package/dist/chunk-HYORKKYP.js.map +1 -0
  221. package/dist/chunk-IO27YTL3.js +73 -0
  222. package/dist/chunk-IO27YTL3.js.map +1 -0
  223. package/dist/chunk-ITUQC4FW.js +163 -0
  224. package/dist/chunk-ITUQC4FW.js.map +1 -0
  225. package/dist/chunk-K57NINLH.js +137 -0
  226. package/dist/chunk-K57NINLH.js.map +1 -0
  227. package/dist/chunk-KC6WUSNS.js +34 -0
  228. package/dist/chunk-KC6WUSNS.js.map +1 -0
  229. package/dist/{chunk-W4IK7AWD.js → chunk-KDQZ3E5C.js} +3 -1
  230. package/dist/chunk-KDQZ3E5C.js.map +1 -0
  231. package/dist/{chunk-2MSPNRWJ.js → chunk-KK3S5OTW.js} +27 -11
  232. package/dist/chunk-KK3S5OTW.js.map +1 -0
  233. package/dist/chunk-LTBVP6VN.js +59 -0
  234. package/dist/chunk-LTBVP6VN.js.map +1 -0
  235. package/dist/chunk-OHPYT2BH.js +82 -0
  236. package/dist/chunk-OHPYT2BH.js.map +1 -0
  237. package/dist/{chunk-HZPHCSCS.js → chunk-OY2MXIBB.js} +8 -2
  238. package/dist/chunk-OY2MXIBB.js.map +1 -0
  239. package/dist/chunk-PE2KPZDW.js +85 -0
  240. package/dist/chunk-PE2KPZDW.js.map +1 -0
  241. package/dist/{chunk-QTSMHH5J.js → chunk-QPTJ5DOO.js} +5 -3
  242. package/dist/chunk-QPTJ5DOO.js.map +1 -0
  243. package/dist/{chunk-JOR5LGYE.js → chunk-RFLW4FPL.js} +1 -1
  244. package/dist/chunk-RFLW4FPL.js.map +1 -0
  245. package/dist/{chunk-U6QYTMDB.js → chunk-RMWNO6BA.js} +6 -2
  246. package/dist/chunk-RMWNO6BA.js.map +1 -0
  247. package/dist/{chunk-TDMHA7C3.js → chunk-SQ2Q3OQI.js} +112 -63
  248. package/dist/chunk-SQ2Q3OQI.js.map +1 -0
  249. package/dist/{chunk-K4AT3V3J.js → chunk-T74YB76U.js} +13 -11
  250. package/dist/chunk-T74YB76U.js.map +1 -0
  251. package/dist/{chunk-BYFTHA4I.js → chunk-TAHR457X.js} +53 -6
  252. package/dist/chunk-TAHR457X.js.map +1 -0
  253. package/dist/{chunk-3VXDSIBJ.js → chunk-TKNVL53O.js} +2 -2
  254. package/dist/{chunk-3VXDSIBJ.js.map → chunk-TKNVL53O.js.map} +1 -1
  255. package/dist/chunk-TNJLNLVE.js +115 -0
  256. package/dist/chunk-TNJLNLVE.js.map +1 -0
  257. package/dist/chunk-TUID42UE.js +15 -0
  258. package/dist/chunk-TUID42UE.js.map +1 -0
  259. package/dist/{chunk-PKL6QJKK.js → chunk-UMNHJSIO.js} +93 -80
  260. package/dist/chunk-UMNHJSIO.js.map +1 -0
  261. package/dist/chunk-UTCAOOXU.js +116 -0
  262. package/dist/chunk-UTCAOOXU.js.map +1 -0
  263. package/dist/{chunk-MF6ZUUJZ.js → chunk-VEME3D7K.js} +38 -40
  264. package/dist/chunk-VEME3D7K.js.map +1 -0
  265. package/dist/{chunk-HLDRH23D.js → chunk-WJKHLOP5.js} +2 -2
  266. package/dist/{chunk-HLDRH23D.js.map → chunk-WJKHLOP5.js.map} +1 -1
  267. package/dist/chunk-WU57BYYM.js +115 -0
  268. package/dist/chunk-WU57BYYM.js.map +1 -0
  269. package/dist/{chunk-TGLUDQP2.js → chunk-ZCDRLN3B.js} +11 -11
  270. package/dist/chunk-ZCDRLN3B.js.map +1 -0
  271. package/dist/chunk-ZX2QQJXD.js +249 -0
  272. package/dist/chunk-ZX2QQJXD.js.map +1 -0
  273. package/dist/{chunk-6E2H2E5A.js → chunk-ZXZAECHZ.js} +6 -6
  274. package/dist/{chunk-6E2H2E5A.js.map → chunk-ZXZAECHZ.js.map} +1 -1
  275. package/dist/collapsible-panel.js +3 -3
  276. package/dist/color-field.d.ts +51 -0
  277. package/dist/color-field.js +92 -0
  278. package/dist/color-field.js.map +1 -0
  279. package/dist/color-picker.d.ts +88 -0
  280. package/dist/color-picker.js +8 -0
  281. package/dist/color-picker.js.map +1 -0
  282. package/dist/color-swatches.d.ts +56 -0
  283. package/dist/color-swatches.js +4 -0
  284. package/dist/color-swatches.js.map +1 -0
  285. package/dist/combobox.js +1 -1
  286. package/dist/content-item.d.ts +13 -1
  287. package/dist/content-item.js +1 -1
  288. package/dist/disclosure-arrow.js +1 -1
  289. package/dist/disclosure.d.ts +57 -0
  290. package/dist/disclosure.js +51 -0
  291. package/dist/disclosure.js.map +1 -0
  292. package/dist/file-picker.d.ts +7 -0
  293. package/dist/file-picker.js +1 -1
  294. package/dist/help-tags-register.d.ts +8 -8
  295. package/dist/help-tags-register.js +3 -2
  296. package/dist/help-tags-register.js.map +1 -1
  297. package/dist/index.d.ts +16 -9
  298. package/dist/index.js +58 -46
  299. package/dist/list-action-row.js +4 -1
  300. package/dist/list-detail-dialog.d.ts +117 -0
  301. package/dist/list-detail-dialog.js +165 -0
  302. package/dist/list-detail-dialog.js.map +1 -0
  303. package/dist/list-header.js +1 -1
  304. package/dist/list-item.js +1 -1
  305. package/dist/list.d.ts +17 -2
  306. package/dist/list.js +1 -1
  307. package/dist/lucide-icon.d.ts +9 -1
  308. package/dist/lucide-icon.js +1 -1
  309. package/dist/{composer.d.ts → message-composer.d.ts} +20 -12
  310. package/dist/message-composer.js +6 -0
  311. package/dist/message-composer.js.map +1 -0
  312. package/dist/nav-stack.js +1 -1
  313. package/dist/pane.d.ts +36 -3
  314. package/dist/pane.js +1 -1
  315. package/dist/popup-menu-register.d.ts +6 -5
  316. package/dist/popup-menu-register.js +3 -326
  317. package/dist/popup-menu-register.js.map +1 -1
  318. package/dist/popup-menu.d.ts +41 -23
  319. package/dist/popup-menu.js +5 -1
  320. package/dist/progress-bar.d.ts +52 -0
  321. package/dist/progress-bar.js +68 -0
  322. package/dist/progress-bar.js.map +1 -0
  323. package/dist/progress-ring.d.ts +44 -0
  324. package/dist/progress-ring.js +73 -0
  325. package/dist/progress-ring.js.map +1 -0
  326. package/dist/radio-group.d.ts +62 -0
  327. package/dist/radio-group.js +4 -0
  328. package/dist/radio-group.js.map +1 -0
  329. package/dist/row.js +1 -1
  330. package/dist/{token-search-model-aYR0YAei.d.ts → search-field-CrGTN5sa.d.ts} +67 -43
  331. package/dist/search-field-model.d.ts +3 -0
  332. package/dist/search-field-model.js +3 -0
  333. package/dist/search-field-model.js.map +1 -0
  334. package/dist/search-field.d.ts +3 -0
  335. package/dist/search-field.js +5 -0
  336. package/dist/search-field.js.map +1 -0
  337. package/dist/select-register.d.ts +6 -3
  338. package/dist/select-register.js +383 -241
  339. package/dist/select-register.js.map +1 -1
  340. package/dist/select.d.ts +30 -6
  341. package/dist/select.js +3 -1
  342. package/dist/selection.d.ts +54 -0
  343. package/dist/selection.js +3 -0
  344. package/dist/selection.js.map +1 -0
  345. package/dist/slider.d.ts +74 -0
  346. package/dist/slider.js +103 -0
  347. package/dist/slider.js.map +1 -0
  348. package/dist/split-button.js +1 -1
  349. package/dist/split-view.d.ts +5 -2
  350. package/dist/split-view.js +18 -159
  351. package/dist/split-view.js.map +1 -1
  352. package/dist/state-banner.js +1 -1
  353. package/dist/styles/badge.css +18 -6
  354. package/dist/styles/button.css +230 -0
  355. package/dist/styles/catalog/components/catalog-example.css +13 -4
  356. package/dist/styles/checkbox.css +121 -0
  357. package/dist/styles/choice-chips.css +58 -7
  358. package/dist/styles/color-field.css +125 -0
  359. package/dist/styles/color-picker.css +331 -0
  360. package/dist/styles/color-swatches.css +122 -0
  361. package/dist/styles/combobox.css +7 -5
  362. package/dist/styles/components/actions/button/button.css +230 -0
  363. package/dist/styles/components/actions/popup-menu/popup-menu.css +326 -198
  364. package/dist/styles/components/actions/toolbar/toolbar.css +25 -3
  365. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +67 -104
  366. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +5 -18
  367. package/dist/styles/components/collections/list/list.css +37 -0
  368. package/dist/styles/components/feedback/badge/badge.css +18 -6
  369. package/dist/styles/components/feedback/progress-bar/progress-bar.css +168 -0
  370. package/dist/styles/components/feedback/progress-ring/progress-ring.css +91 -0
  371. package/dist/styles/components/feedback/state-banner/state-banner.css +18 -3
  372. package/dist/styles/components/forms/checkbox/checkbox.css +121 -0
  373. package/dist/styles/components/forms/choice-chips/choice-chips.css +58 -7
  374. package/dist/styles/components/forms/color-field/color-field.css +125 -0
  375. package/dist/styles/components/forms/color-picker/color-picker.css +331 -0
  376. package/dist/styles/components/forms/color-swatches/color-swatches.css +122 -0
  377. package/dist/styles/components/forms/combobox/combobox.css +7 -5
  378. package/dist/styles/components/forms/{composer/composer.css → message-composer/message-composer.css} +17 -33
  379. package/dist/styles/components/forms/radio-group/radio-group.css +156 -0
  380. package/dist/styles/{token-search-field.css → components/forms/search-field/search-field.css} +111 -102
  381. package/dist/styles/components/forms/select/select.css +370 -249
  382. package/dist/styles/components/forms/slider/slider.css +241 -0
  383. package/dist/styles/components/forms/switch/switch.css +132 -0
  384. package/dist/styles/components/forms/tag-field/tag-field.css +8 -0
  385. package/dist/styles/components/forms/text-field/text-field.css +193 -0
  386. package/dist/styles/components/layout/pane/pane.css +254 -0
  387. package/dist/styles/components/layout/resizable-region/resizable-region.css +3 -2
  388. package/dist/styles/components/layout/row/row.css +11 -0
  389. package/dist/styles/components/layout/split-view/split-view.css +25 -0
  390. package/dist/styles/components/layout/workbench/workbench.css +12 -4
  391. package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +20 -0
  392. package/dist/styles/components/navigation/tab-bar/tab-bar.css +7 -7
  393. package/dist/styles/components/navigation/{app-tab/app-tab.css → tab-bar-item/tab-bar-item.css} +95 -90
  394. package/dist/styles/components/surfaces/disclosure/disclosure.css +98 -0
  395. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +263 -116
  396. package/dist/styles/components/typography/text/text.css +14 -12
  397. package/dist/styles/disclosure-arrow.css +20 -0
  398. package/dist/styles/disclosure.css +98 -0
  399. package/dist/styles/foundation.css +6 -4
  400. package/dist/styles/list-detail-dialog.css +11 -0
  401. package/dist/styles/list.css +37 -0
  402. package/dist/styles/{composer.css → message-composer.css} +17 -33
  403. package/dist/styles/overlay-toast.css +149 -0
  404. package/dist/styles/overlay-tooltip.css +55 -0
  405. package/dist/styles/pane.css +254 -0
  406. package/dist/styles/popup-menu.css +326 -198
  407. package/dist/styles/progress-bar.css +168 -0
  408. package/dist/styles/progress-ring.css +91 -0
  409. package/dist/styles/radio-group.css +156 -0
  410. package/dist/styles/resizable-region.css +3 -2
  411. package/dist/styles/row.css +11 -0
  412. package/dist/styles/{components/forms/token-search-field/token-search-field.css → search-field.css} +111 -102
  413. package/dist/styles/select.css +370 -249
  414. package/dist/styles/slider.css +241 -0
  415. package/dist/styles/split-view.css +25 -0
  416. package/dist/styles/state-banner.css +18 -3
  417. package/dist/styles/styles.css +16 -5
  418. package/dist/styles/surface-scaffold.css +263 -116
  419. package/dist/styles/switch.css +132 -0
  420. package/dist/styles/{app-tab.css → tab-bar-item.css} +95 -90
  421. package/dist/styles/tab-bar.css +7 -7
  422. package/dist/styles/tag-field.css +8 -0
  423. package/dist/styles/text-field.css +193 -0
  424. package/dist/styles/text.css +14 -12
  425. package/dist/styles/toolbar-control-group.css +67 -104
  426. package/dist/styles/toolbar-text.css +5 -18
  427. package/dist/styles/toolbar.css +25 -3
  428. package/dist/styles/webawesome.css +9 -0
  429. package/dist/styles/workbench-dialog.css +10 -0
  430. package/dist/styles/workbench.css +12 -4
  431. package/dist/surface-scaffold-register.d.ts +7 -5
  432. package/dist/surface-scaffold-register.js +2 -246
  433. package/dist/surface-scaffold-register.js.map +1 -1
  434. package/dist/surface-scaffold.d.ts +70 -7
  435. package/dist/surface-scaffold.js +5 -1
  436. package/dist/switch.d.ts +38 -0
  437. package/dist/switch.js +4 -0
  438. package/dist/switch.js.map +1 -0
  439. package/dist/{app-tab.d.ts → tab-bar-item.d.ts} +11 -11
  440. package/dist/tab-bar-item.js +6 -0
  441. package/dist/tab-bar-item.js.map +1 -0
  442. package/dist/tab-bar.d.ts +3 -3
  443. package/dist/tab-bar.js +1 -1
  444. package/dist/tab-navigator.js +1 -1
  445. package/dist/tag-field.d.ts +52 -0
  446. package/dist/tag-field.js +6 -0
  447. package/dist/tag-field.js.map +1 -0
  448. package/dist/text-field.d.ts +83 -0
  449. package/dist/text-field.js +6 -0
  450. package/dist/text-field.js.map +1 -0
  451. package/dist/text.d.ts +6 -1
  452. package/dist/text.js +1 -1
  453. package/dist/{types-CVgIwSdq.d.ts → types-DmHWkSd6.d.ts} +19 -1
  454. package/dist/webawesome.d.ts +3 -0
  455. package/dist/wire-catalog.d.ts +8 -2
  456. package/dist/wire-catalog.js +16 -4
  457. package/dist/wire-catalog.js.map +1 -1
  458. package/dist/wire-checkboxes.d.ts +10 -0
  459. package/dist/wire-checkboxes.js +3 -0
  460. package/dist/{wire-composers.js.map → wire-checkboxes.js.map} +1 -1
  461. package/dist/wire-choice-chips.d.ts +17 -0
  462. package/dist/wire-choice-chips.js +4 -0
  463. package/dist/{wire-token-search-fields.js.map → wire-choice-chips.js.map} +1 -1
  464. package/dist/wire-color-fields.d.ts +33 -0
  465. package/dist/wire-color-fields.js +82 -0
  466. package/dist/wire-color-fields.js.map +1 -0
  467. package/dist/wire-color-pickers.d.ts +34 -0
  468. package/dist/wire-color-pickers.js +9 -0
  469. package/dist/wire-color-pickers.js.map +1 -0
  470. package/dist/wire-comboboxes.js +2 -1
  471. package/dist/wire-content-items.d.ts +5 -1
  472. package/dist/wire-content-items.js +84 -15
  473. package/dist/wire-content-items.js.map +1 -1
  474. package/dist/wire-file-pickers.d.ts +3 -2
  475. package/dist/wire-file-pickers.js +1 -1
  476. package/dist/{wire-composers.d.ts → wire-message-composers.d.ts} +5 -4
  477. package/dist/wire-message-composers.js +3 -0
  478. package/dist/wire-message-composers.js.map +1 -0
  479. package/dist/wire-overlay-sheets.js +1 -1
  480. package/dist/wire-pane-chrome.d.ts +21 -0
  481. package/dist/wire-pane-chrome.js +67 -0
  482. package/dist/wire-pane-chrome.js.map +1 -0
  483. package/dist/{wire-token-search-fields.d.ts → wire-search-fields.d.ts} +25 -25
  484. package/dist/wire-search-fields.js +6 -0
  485. package/dist/wire-search-fields.js.map +1 -0
  486. package/dist/wire-sliders.d.ts +12 -0
  487. package/dist/wire-sliders.js +31 -0
  488. package/dist/wire-sliders.js.map +1 -0
  489. package/dist/wire-tab-bars.js +1 -1
  490. package/dist/wire-tag-fields.d.ts +41 -0
  491. package/dist/wire-tag-fields.js +258 -0
  492. package/dist/wire-tag-fields.js.map +1 -0
  493. package/dist/wire-text-fields.d.ts +12 -0
  494. package/dist/wire-text-fields.js +3 -0
  495. package/dist/wire-text-fields.js.map +1 -0
  496. package/dist/workbench-dialog.d.ts +97 -0
  497. package/dist/workbench-dialog.js +124 -0
  498. package/dist/workbench-dialog.js.map +1 -0
  499. package/dist/workbench.d.ts +5 -0
  500. package/dist/workbench.js +1 -1
  501. package/docs/accessibility.md +181 -97
  502. package/docs/anchored-surface.md +8 -7
  503. package/docs/app-layouts.md +28 -0
  504. package/docs/catalog.md +14 -5
  505. package/docs/color-field.md +65 -0
  506. package/docs/color-picker.md +71 -0
  507. package/docs/color-swatches.md +46 -0
  508. package/docs/component-contract.md +31 -32
  509. package/docs/component-selection.md +232 -165
  510. package/docs/design/templates/button/emphasis-dark.svg +1 -0
  511. package/docs/design/templates/button/emphasis.svg +1 -0
  512. package/docs/design/templates/button/icons-dark.svg +1 -0
  513. package/docs/design/templates/button/icons.svg +1 -0
  514. package/docs/design/templates/button/pill-dark.svg +1 -0
  515. package/docs/design/templates/button/pill.svg +1 -0
  516. package/docs/design/templates/button/states-dark.svg +1 -0
  517. package/docs/design/templates/button/states.svg +1 -0
  518. package/docs/design/templates/button/toggles-dark.svg +1 -0
  519. package/docs/design/templates/button/toggles.svg +1 -0
  520. package/docs/design/templates/button/tones-dark.svg +1 -0
  521. package/docs/design/templates/button/tones.svg +1 -0
  522. package/docs/design/templates/button-dark.svg +1 -0
  523. package/docs/design/templates/button.svg +1 -0
  524. package/docs/design/templates/checkbox/compact-dark.svg +1 -0
  525. package/docs/design/templates/checkbox/compact.svg +1 -0
  526. package/docs/design/templates/checkbox/error-dark.svg +1 -0
  527. package/docs/design/templates/checkbox/error.svg +1 -0
  528. package/docs/design/templates/checkbox/mixed-dark.svg +1 -0
  529. package/docs/design/templates/checkbox/mixed.svg +1 -0
  530. package/docs/design/templates/checkbox/states-dark.svg +1 -0
  531. package/docs/design/templates/checkbox/states.svg +1 -0
  532. package/docs/design/templates/checkbox-dark.svg +1 -0
  533. package/docs/design/templates/checkbox.svg +1 -0
  534. package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -1
  535. package/docs/design/templates/choice-chips/color-palette.svg +1 -1
  536. package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -1
  537. package/docs/design/templates/choice-chips/compact-icons.svg +1 -1
  538. package/docs/design/templates/choice-chips/multiple-dark.svg +1 -1
  539. package/docs/design/templates/choice-chips/multiple.svg +1 -1
  540. package/docs/design/templates/choice-chips-dark.svg +1 -1
  541. package/docs/design/templates/choice-chips.svg +1 -1
  542. package/docs/design/templates/color-field/compact-dark.svg +1 -0
  543. package/docs/design/templates/color-field/compact.svg +1 -0
  544. package/docs/design/templates/color-field/error-dark.svg +1 -0
  545. package/docs/design/templates/color-field/error.svg +1 -0
  546. package/docs/design/templates/color-field/hint-dark.svg +1 -0
  547. package/docs/design/templates/color-field/hint.svg +1 -0
  548. package/docs/design/templates/color-field-dark.svg +1 -0
  549. package/docs/design/templates/color-field.svg +1 -0
  550. package/docs/design/templates/color-picker/gray-dark.svg +1 -0
  551. package/docs/design/templates/color-picker/gray.svg +1 -0
  552. package/docs/design/templates/color-picker/rgb-dark.svg +1 -0
  553. package/docs/design/templates/color-picker/rgb.svg +1 -0
  554. package/docs/design/templates/color-picker-dark.svg +1 -0
  555. package/docs/design/templates/color-picker.svg +1 -0
  556. package/docs/design/templates/color-swatches/palette-dark.svg +1 -0
  557. package/docs/design/templates/color-swatches/palette.svg +1 -0
  558. package/docs/design/templates/color-swatches-dark.svg +1 -0
  559. package/docs/design/templates/color-swatches.svg +1 -0
  560. package/docs/design/templates/disclosure/framed-sunken-dark.svg +1 -0
  561. package/docs/design/templates/disclosure/framed-sunken.svg +1 -0
  562. package/docs/design/templates/disclosure/plain-dark.svg +1 -0
  563. package/docs/design/templates/disclosure/plain.svg +1 -0
  564. package/docs/design/templates/disclosure-dark.svg +1 -0
  565. package/docs/design/templates/disclosure.svg +1 -0
  566. package/docs/design/templates/list-header/size-l-dark.svg +1 -1
  567. package/docs/design/templates/list-header/size-l.svg +1 -1
  568. package/docs/design/templates/list-header/size-m-dark.svg +1 -1
  569. package/docs/design/templates/list-header/size-m.svg +1 -1
  570. package/docs/design/templates/list-header/size-xl-dark.svg +1 -1
  571. package/docs/design/templates/list-header/size-xl.svg +1 -1
  572. package/docs/design/templates/list-header-dark.svg +1 -1
  573. package/docs/design/templates/list-header.svg +1 -1
  574. package/docs/design/templates/message-composer/chat-dark.svg +1 -0
  575. package/docs/design/templates/message-composer/chat.svg +1 -0
  576. package/docs/design/templates/{composer → message-composer}/prompt-dark.svg +1 -1
  577. package/docs/design/templates/{composer → message-composer}/prompt.svg +1 -1
  578. package/docs/design/templates/message-composer-dark.svg +1 -0
  579. package/docs/design/templates/message-composer.svg +1 -0
  580. package/docs/design/templates/progress-bar/determinate-dark.svg +1 -0
  581. package/docs/design/templates/progress-bar/determinate.svg +1 -0
  582. package/docs/design/templates/progress-bar/tones-dark.svg +1 -0
  583. package/docs/design/templates/progress-bar/tones.svg +1 -0
  584. package/docs/design/templates/progress-bar-dark.svg +1 -0
  585. package/docs/design/templates/progress-bar.svg +1 -0
  586. package/docs/design/templates/progress-ring/sizes-dark.svg +1 -0
  587. package/docs/design/templates/progress-ring/sizes.svg +1 -0
  588. package/docs/design/templates/progress-ring/tones-dark.svg +1 -0
  589. package/docs/design/templates/progress-ring/tones.svg +1 -0
  590. package/docs/design/templates/progress-ring-dark.svg +1 -0
  591. package/docs/design/templates/progress-ring.svg +1 -0
  592. package/docs/design/templates/radio-group/horizontal-dark.svg +1 -0
  593. package/docs/design/templates/radio-group/horizontal.svg +1 -0
  594. package/docs/design/templates/radio-group/vertical-dark.svg +1 -0
  595. package/docs/design/templates/radio-group/vertical.svg +1 -0
  596. package/docs/design/templates/radio-group-dark.svg +1 -0
  597. package/docs/design/templates/radio-group.svg +1 -0
  598. package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
  599. package/docs/design/templates/segmented-control/equal.svg +1 -1
  600. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
  601. package/docs/design/templates/segmented-control/pill-small.svg +1 -1
  602. package/docs/design/templates/segmented-control-dark.svg +1 -1
  603. package/docs/design/templates/segmented-control.svg +1 -1
  604. package/docs/design/templates/select/compact-dark.svg +1 -0
  605. package/docs/design/templates/select/compact.svg +1 -0
  606. package/docs/design/templates/select/form-dark.svg +1 -0
  607. package/docs/design/templates/select/form.svg +1 -0
  608. package/docs/design/templates/select/icons-dark.svg +1 -0
  609. package/docs/design/templates/select/icons.svg +1 -0
  610. package/docs/design/templates/select-dark.svg +1 -0
  611. package/docs/design/templates/select.svg +1 -0
  612. package/docs/design/templates/slider/compact-dark.svg +1 -0
  613. package/docs/design/templates/slider/compact.svg +1 -0
  614. package/docs/design/templates/slider/readout-dark.svg +1 -0
  615. package/docs/design/templates/slider/readout.svg +1 -0
  616. package/docs/design/templates/slider/ticks-dark.svg +1 -0
  617. package/docs/design/templates/slider/ticks.svg +1 -0
  618. package/docs/design/templates/slider-dark.svg +1 -0
  619. package/docs/design/templates/slider.svg +1 -0
  620. package/docs/design/templates/switch/compact-dark.svg +1 -0
  621. package/docs/design/templates/switch/compact.svg +1 -0
  622. package/docs/design/templates/switch/states-dark.svg +1 -0
  623. package/docs/design/templates/switch/states.svg +1 -0
  624. package/docs/design/templates/switch-dark.svg +1 -0
  625. package/docs/design/templates/switch.svg +1 -0
  626. package/docs/design/templates/tag-field/error-dark.svg +1 -0
  627. package/docs/design/templates/tag-field/error.svg +1 -0
  628. package/docs/design/templates/tag-field/tags-dark.svg +1 -0
  629. package/docs/design/templates/tag-field/tags.svg +1 -0
  630. package/docs/design/templates/tag-field-dark.svg +1 -0
  631. package/docs/design/templates/tag-field.svg +1 -0
  632. package/docs/design/templates/text-field/compact-dark.svg +1 -0
  633. package/docs/design/templates/text-field/compact.svg +1 -0
  634. package/docs/design/templates/text-field/error-dark.svg +1 -0
  635. package/docs/design/templates/text-field/error.svg +1 -0
  636. package/docs/design/templates/text-field/labeled-dark.svg +1 -0
  637. package/docs/design/templates/text-field/labeled.svg +1 -0
  638. package/docs/design/templates/text-field/multiline-dark.svg +1 -0
  639. package/docs/design/templates/text-field/multiline.svg +1 -0
  640. package/docs/design/templates/text-field/search-dark.svg +1 -0
  641. package/docs/design/templates/text-field/search.svg +1 -0
  642. package/docs/design/templates/text-field-dark.svg +1 -0
  643. package/docs/design/templates/text-field.svg +1 -0
  644. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
  645. package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
  646. package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -1
  647. package/docs/design/templates/toolbar/width-visibility-320.svg +1 -1
  648. package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -1
  649. package/docs/design/templates/toolbar/width-visibility-600.svg +1 -1
  650. package/docs/design/templates/toolbar-dark.svg +1 -1
  651. package/docs/design/templates/toolbar.svg +1 -1
  652. package/docs/design/templates/value-table/details-dark.svg +1 -1
  653. package/docs/design/templates/value-table/details.svg +1 -1
  654. package/docs/design/templates/value-table-dark.svg +1 -1
  655. package/docs/design/templates/value-table.svg +1 -1
  656. package/docs/design/templates.md +19 -6
  657. package/docs/design-philosophy.md +6 -6
  658. package/docs/disclosure.md +63 -0
  659. package/docs/examples/component-catalog-extension.json +2 -2
  660. package/docs/layout.md +16 -7
  661. package/docs/list-detail-dialog.md +96 -0
  662. package/docs/manual-test-plan.md +1 -1
  663. package/docs/{composer.md → message-composer.md} +41 -28
  664. package/docs/overlay-toast.md +62 -0
  665. package/docs/overlay-tooltip.md +53 -0
  666. package/docs/progress.md +62 -0
  667. package/docs/recipes.md +15 -21
  668. package/docs/slider.md +64 -0
  669. package/docs/surface-scaffold.md +155 -88
  670. package/docs/tag-field.md +66 -0
  671. package/docs/type-contracts.md +8 -8
  672. package/docs/ui-analyzer.md +1 -1
  673. package/docs/ui-doctor.md +11 -6
  674. package/docs/ux-demo.md +6 -6
  675. package/docs/webawesome-migration.md +80 -0
  676. package/docs/webawesome-theme.md +57 -35
  677. package/docs/workbench-dialog.md +85 -0
  678. package/docs/workbench.md +10 -6
  679. package/docs/writing.md +10 -8
  680. package/doctor/copy-capitalization-checks.mjs +18 -9
  681. package/llms.txt +131 -57
  682. package/package.json +156 -39
  683. package/ux-demo/recipes/composer-form.tsx +18 -19
  684. package/ux-demo/recipes/list-detail-dialog.tsx +55 -162
  685. package/ux-demo/recipes/mount-recipe.ts +7 -6
  686. package/ux-demo/recipes/types.ts +1 -0
  687. package/ai/components/icon-button.md +0 -82
  688. package/ai/components/icon-toggle-button.md +0 -80
  689. package/ai/components/token-search-field.md +0 -107
  690. package/dist/app-tab.js +0 -6
  691. package/dist/app-tab.js.map +0 -1
  692. package/dist/browser/app-tab.js +0 -4
  693. package/dist/browser/composer.js +0 -4
  694. package/dist/browser/icon-toggle-button.js +0 -4
  695. package/dist/browser/token-search-field.js +0 -4
  696. package/dist/chunk-2MSPNRWJ.js.map +0 -1
  697. package/dist/chunk-7IUEBNCO.js.map +0 -1
  698. package/dist/chunk-AV7CPAPT.js +0 -82
  699. package/dist/chunk-AV7CPAPT.js.map +0 -1
  700. package/dist/chunk-BYFTHA4I.js.map +0 -1
  701. package/dist/chunk-CA7LNX3J.js +0 -44
  702. package/dist/chunk-CA7LNX3J.js.map +0 -1
  703. package/dist/chunk-ELCMSQNJ.js.map +0 -1
  704. package/dist/chunk-ETCWQLJV.js.map +0 -1
  705. package/dist/chunk-FDZNYD4C.js.map +0 -1
  706. package/dist/chunk-FR76ZJQC.js +0 -90
  707. package/dist/chunk-FR76ZJQC.js.map +0 -1
  708. package/dist/chunk-HQZYKJ56.js.map +0 -1
  709. package/dist/chunk-HZPHCSCS.js.map +0 -1
  710. package/dist/chunk-IM3GKYOG.js.map +0 -1
  711. package/dist/chunk-JOR5LGYE.js.map +0 -1
  712. package/dist/chunk-K4AT3V3J.js.map +0 -1
  713. package/dist/chunk-LL45C7BB.js.map +0 -1
  714. package/dist/chunk-LOSRXZAH.js.map +0 -1
  715. package/dist/chunk-LPHU44S3.js.map +0 -1
  716. package/dist/chunk-M5KZ26VV.js.map +0 -1
  717. package/dist/chunk-MF6ZUUJZ.js.map +0 -1
  718. package/dist/chunk-MXNIVEVL.js.map +0 -1
  719. package/dist/chunk-NS762OVM.js +0 -222
  720. package/dist/chunk-NS762OVM.js.map +0 -1
  721. package/dist/chunk-PKL6QJKK.js.map +0 -1
  722. package/dist/chunk-QTSMHH5J.js.map +0 -1
  723. package/dist/chunk-TDMHA7C3.js.map +0 -1
  724. package/dist/chunk-TGLUDQP2.js.map +0 -1
  725. package/dist/chunk-U6QYTMDB.js.map +0 -1
  726. package/dist/chunk-VFYO3UGZ.js +0 -45
  727. package/dist/chunk-VFYO3UGZ.js.map +0 -1
  728. package/dist/chunk-W4IK7AWD.js.map +0 -1
  729. package/dist/chunk-YBWQR2OK.js.map +0 -1
  730. package/dist/composer.js +0 -5
  731. package/dist/composer.js.map +0 -1
  732. package/dist/icon-button.d.ts +0 -46
  733. package/dist/icon-button.js +0 -6
  734. package/dist/icon-button.js.map +0 -1
  735. package/dist/icon-toggle-button.d.ts +0 -42
  736. package/dist/icon-toggle-button.js +0 -6
  737. package/dist/icon-toggle-button.js.map +0 -1
  738. package/dist/styles/components/actions/icon-button/icon-button.css +0 -22
  739. package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +0 -83
  740. package/dist/styles/icon-button.css +0 -22
  741. package/dist/styles/icon-toggle-button.css +0 -83
  742. package/dist/token-search-field.d.ts +0 -3
  743. package/dist/token-search-field.js +0 -5
  744. package/dist/token-search-field.js.map +0 -1
  745. package/dist/token-search-model.d.ts +0 -3
  746. package/dist/token-search-model.js +0 -3
  747. package/dist/token-search-model.js.map +0 -1
  748. package/dist/wire-composers.js +0 -3
  749. package/dist/wire-token-search-fields.js +0 -6
  750. package/docs/design/templates/composer/chat-dark.svg +0 -1
  751. package/docs/design/templates/composer/chat.svg +0 -1
  752. package/docs/design/templates/composer-dark.svg +0 -1
  753. package/docs/design/templates/composer.svg +0 -1
  754. /package/docs/design/templates/{token-search-field → search-field}/empty-dark.svg +0 -0
  755. /package/docs/design/templates/{token-search-field → search-field}/empty.svg +0 -0
  756. /package/docs/design/templates/{token-search-field → search-field}/tokens-dark.svg +0 -0
  757. /package/docs/design/templates/{token-search-field → search-field}/tokens.svg +0 -0
  758. /package/docs/design/templates/{token-search-field-dark.svg → search-field-dark.svg} +0 -0
  759. /package/docs/design/templates/{token-search-field.svg → search-field.svg} +0 -0
@@ -1,44 +1,79 @@
1
- .kui-dialog-surface > wa-dialog {
1
+ /* DialogSurface: a native modal <dialog> (the panel) holding Kerf's header,
2
+ body, and footer. The UA rules supply the top layer, the centered placement
3
+ between both viewport insets, and the closed `display: none`; these rules
4
+ only replace the UA chrome. */
5
+ .kui-dialog-surface {
2
6
  --_kui-dialog-surface-width: 35rem;
3
7
  --_kui-dialog-surface-resolved-gutter: max(
4
8
  0px,
5
9
  var(--_kui-dialog-surface-gutter, 1rem)
6
10
  );
7
- --width: min(35rem, calc(100vw - 2rem));
8
11
  /* Concentric with a pill ToolbarControlGroup at the body inset: 22px + 8px
9
12
  compact, 22px + 16px comfortable. */
10
13
  --_kui-dialog-surface-radius: calc(
11
14
  var(--kui-layout-pill-radius, calc(1px + 1.3125rem)) +
12
15
  var(--kui-wa-surface-inset, 0.5rem)
13
16
  );
17
+ box-sizing: border-box;
18
+ width: min(
19
+ var(
20
+ --_kui-dialog-surface-preferred-width,
21
+ var(--_kui-dialog-surface-width)
22
+ ),
23
+ calc(100vw - 2rem)
24
+ );
25
+ max-width: calc(100% - 2.5rem);
26
+ max-height: calc(100% - 2.5rem);
27
+ padding: 0;
28
+ margin: auto;
29
+ color: var(--kui-color-text, inherit);
30
+ border: none;
31
+ border-radius: var(--_kui-dialog-surface-radius);
32
+ background-color: var(--kui-color-surface-raised);
33
+ box-shadow: var(--kui-shadow-l);
34
+ /* Sizes apply at once: a theme's transition on bare dialog elements would
35
+ ease the safe-area, keyboard, and resized sheet heights. */
36
+ transition: none;
37
+ }
38
+ .kui-dialog-surface[open] {
39
+ display: flex;
40
+ flex-direction: column;
41
+ align-items: stretch;
14
42
  }
15
- .kui-dialog-surface[data-body-inset="comfortable"] > wa-dialog {
43
+ .kui-dialog-surface:focus {
44
+ outline: none;
45
+ }
46
+ .kui-dialog-surface::backdrop {
47
+ background-color: var(
48
+ --wa-color-overlay-modal,
49
+ light-dark(rgb(29 29 31 / 0.34), rgb(0 0 0 / 0.6))
50
+ );
51
+ }
52
+ /* Room for phones whose viewport height ignores the browser chrome. */
53
+ @media screen and (max-width: 26.25rem) {
54
+ .kui-dialog-surface {
55
+ max-height: 80vh;
56
+ }
57
+ }
58
+ @media (forced-colors: active) {
59
+ .kui-dialog-surface {
60
+ border: 1px solid CanvasText;
61
+ }
62
+ }
63
+ .kui-dialog-surface[data-body-inset="comfortable"] {
16
64
  --_kui-dialog-surface-radius: calc(
17
65
  var(--kui-layout-pill-radius, calc(1px + 1.3125rem)) +
18
66
  var(--kui-wa-container-inset, 1rem)
19
67
  );
20
68
  }
21
- .kui-dialog-surface > wa-dialog::part(dialog) {
22
- border-radius: var(--_kui-dialog-surface-radius);
23
- }
24
- .kui-dialog-surface[data-size="small"] > wa-dialog {
69
+ .kui-dialog-surface[data-size="small"] {
25
70
  --_kui-dialog-surface-width: 25rem;
26
- --width: min(25rem, calc(100vw - 2rem));
27
71
  }
28
- .kui-dialog-surface[data-size="large"] > wa-dialog {
72
+ .kui-dialog-surface[data-size="large"] {
29
73
  --_kui-dialog-surface-width: 50rem;
30
- --width: min(50rem, calc(100vw - 2rem));
31
74
  }
32
- .kui-dialog-surface[data-presentation="modal"][data-preferred-width]
33
- > wa-dialog {
34
- --width: min(
35
- var(--_kui-dialog-surface-preferred-width),
36
- calc(100vw - 2rem)
37
- );
38
- }
39
- .kui-dialog-surface[data-presentation="modal"][data-viewport-gutter]
40
- > wa-dialog {
41
- --width: min(
75
+ .kui-dialog-surface[data-presentation="modal"][data-viewport-gutter] {
76
+ width: min(
42
77
  var(
43
78
  --_kui-dialog-surface-preferred-width,
44
79
  var(--_kui-dialog-surface-width)
@@ -51,11 +86,6 @@
51
86
  )
52
87
  )
53
88
  );
54
- }
55
- /* Web Awesome has a separate max-width clamp; setting --width alone cannot
56
- provide an 8px phone gutter. Omitted props retain its legacy geometry. */
57
- .kui-dialog-surface[data-presentation="modal"][data-viewport-gutter]
58
- > wa-dialog::part(dialog) {
59
89
  max-width: max(
60
90
  0px,
61
91
  calc(
@@ -64,8 +94,7 @@
64
94
  )
65
95
  );
66
96
  }
67
- .kui-dialog-surface[data-presentation="modal"][data-max-height]
68
- > wa-dialog::part(dialog) {
97
+ .kui-dialog-surface[data-presentation="modal"][data-max-height] {
69
98
  max-height: max(
70
99
  0px,
71
100
  min(
@@ -77,8 +106,7 @@
77
106
  )
78
107
  );
79
108
  }
80
- .kui-dialog-surface[data-presentation="modal"][data-height]
81
- > wa-dialog::part(dialog) {
109
+ .kui-dialog-surface[data-presentation="modal"][data-height] {
82
110
  --_kui-dialog-surface-resolved-height: max(
83
111
  0px,
84
112
  min(
@@ -92,39 +120,125 @@
92
120
  height: var(--_kui-dialog-surface-resolved-height);
93
121
  max-height: var(--_kui-dialog-surface-resolved-height);
94
122
  }
123
+
124
+ /* The header: the title (the label text, inset by the list item step so it
125
+ lines up with the body's text, or the application's heading content), then
126
+ the header actions and the close button. */
127
+ .kui-dialog-surface__header {
128
+ display: flex;
129
+ flex: 0 0 auto;
130
+ flex-wrap: nowrap;
131
+ padding: var(--kui-wa-surface-inset, 0.5rem);
132
+ }
133
+ .kui-dialog-surface__title {
134
+ min-width: 0;
135
+ flex: 1 1 auto;
136
+ align-self: center;
137
+ margin: 0;
138
+ font-family: inherit;
139
+ font-size: var(--kui-font-l, 1.25rem);
140
+ font-weight: 600;
141
+ line-height: 1.2;
142
+ }
143
+ h2.kui-dialog-surface__title {
144
+ padding-inline: calc(var(--kui-layout-item-padding, 0.5rem) + 1px);
145
+ }
146
+ .kui-dialog-surface__header-actions {
147
+ display: flex;
148
+ flex-shrink: 0;
149
+ flex-wrap: wrap;
150
+ align-self: start;
151
+ justify-content: end;
152
+ gap: 0.25rem;
153
+ padding-inline-start: 1.5rem;
154
+ }
155
+ /* The close control matches a borderless single ToolbarControlGroup button:
156
+ a 40px circle with the toolbar's neutral hover fill. */
157
+ .kui-dialog-surface__close {
158
+ display: inline-flex;
159
+ width: 2.5rem;
160
+ height: 2.5rem;
161
+ flex: 0 0 auto;
162
+ align-items: center;
163
+ justify-content: center;
164
+ padding: 0;
165
+ margin: 0;
166
+ color: var(--kui-color-neutral-on-quiet);
167
+ font: inherit;
168
+ border: none;
169
+ border-radius: var(--kui-radius-circle, 50%);
170
+ background: transparent;
171
+ cursor: pointer;
172
+ }
173
+ .kui-dialog-surface__close:hover {
174
+ background-color: var(--kui-color-neutral-fill-normal);
175
+ }
176
+ .kui-dialog-surface__close:focus-visible {
177
+ outline: var(--kui-focus-ring);
178
+ outline-offset: var(--kui-focus-ring-offset, 1px);
179
+ }
180
+ @media (forced-colors: active) {
181
+ .kui-dialog-surface__close {
182
+ color: ButtonText;
183
+ }
184
+ }
185
+
186
+ .kui-dialog-surface__body {
187
+ /* A dialog body starts a new scroll context, so it clears any
188
+ `--kui-scroll-clearance-*` a page region published around the dialog. */
189
+ --kui-scroll-clearance-block-start: 0px;
190
+ --kui-scroll-clearance-block-end: 0px;
191
+ display: block;
192
+ min-height: 0;
193
+ flex: 1 1 auto;
194
+ padding: var(--kui-wa-surface-inset, 0.5rem);
195
+ overflow: auto;
196
+ -webkit-overflow-scrolling: touch;
197
+ }
198
+ .kui-dialog-surface__footer {
199
+ display: flex;
200
+ flex: 0 0 auto;
201
+ flex-wrap: wrap;
202
+ justify-content: flex-end;
203
+ gap: var(--kui-layout-item-gap, 0.5rem);
204
+ padding: var(--kui-wa-container-inset, 1rem);
205
+ }
206
+
95
207
  /* One child owns the body: it gets the body's whole height and its own
96
208
  scrolling (the body itself no longer scrolls). */
97
- .kui-dialog-surface[data-body-layout="fill"] > wa-dialog::part(body) {
209
+ .kui-dialog-surface[data-body-layout="fill"] > .kui-dialog-surface__body {
98
210
  display: grid;
99
211
  overflow: hidden;
100
212
  grid-template-rows: minmax(0, 1fr);
101
213
  }
102
- .kui-dialog-surface[data-body-inset="none"] > wa-dialog::part(body),
103
- .kui-dialog-surface[data-footer-inset="none"] > wa-dialog::part(footer) {
214
+ .kui-dialog-surface[data-body-inset="none"] > .kui-dialog-surface__body,
215
+ .kui-dialog-surface[data-footer-inset="none"] > .kui-dialog-surface__footer {
104
216
  padding: 0;
105
217
  }
106
- .kui-dialog-surface[data-body-inset="compact"] > wa-dialog::part(body),
107
- .kui-dialog-surface[data-footer-inset="compact"] > wa-dialog::part(footer) {
218
+ .kui-dialog-surface[data-body-inset="compact"] > .kui-dialog-surface__body,
219
+ .kui-dialog-surface[data-footer-inset="compact"] > .kui-dialog-surface__footer {
108
220
  padding: var(--kui-wa-surface-inset, 0.5rem);
109
221
  }
110
- .kui-dialog-surface[data-body-inset="comfortable"] > wa-dialog::part(body),
111
- .kui-dialog-surface[data-footer-inset="comfortable"] > wa-dialog::part(footer) {
222
+ .kui-dialog-surface[data-body-inset="comfortable"] > .kui-dialog-surface__body,
223
+ .kui-dialog-surface[data-footer-inset="comfortable"]
224
+ > .kui-dialog-surface__footer {
112
225
  padding: var(--kui-wa-container-inset, 1rem);
113
226
  }
114
227
  /* Fixed rows above one filling row: the leading children keep their natural
115
- height and the last unslotted child (the light-DOM children are the body
116
- slot's flex items) takes the rest and owns its scrolling. */
117
- .kui-dialog-surface[data-body-layout="fill-last"] > wa-dialog::part(body) {
228
+ height and the last child takes the rest and owns its scrolling. */
229
+ .kui-dialog-surface[data-body-layout="fill-last"] > .kui-dialog-surface__body {
118
230
  display: flex;
119
231
  flex-direction: column;
120
232
  overflow: hidden;
121
233
  }
122
- .kui-dialog-surface[data-body-layout="fill-last"] > wa-dialog > :not([slot]) {
234
+ .kui-dialog-surface[data-body-layout="fill-last"]
235
+ > .kui-dialog-surface__body
236
+ > * {
123
237
  flex: none;
124
238
  }
125
239
  .kui-dialog-surface[data-body-layout="fill-last"]
126
- > wa-dialog
127
- > :nth-last-child(1 of :not([slot])) {
240
+ > .kui-dialog-surface__body
241
+ > :last-child {
128
242
  flex: 1 1 0;
129
243
  min-block-size: 0;
130
244
  }
@@ -134,7 +248,7 @@
134
248
  panel, and the body reserves it (plus the offset) after its own inset, so
135
249
  flowing content scrolls beneath the footer and a filling child's scrollport
136
250
  ends above it: the last content is never hidden. */
137
- .kui-dialog-surface[data-footer-presentation="floating"] > wa-dialog {
251
+ .kui-dialog-surface[data-footer-presentation="floating"] {
138
252
  --_kui-dialog-surface-footer-resolved-offset: max(
139
253
  0px,
140
254
  var(
@@ -144,15 +258,15 @@
144
258
  );
145
259
  }
146
260
  .kui-dialog-surface[data-footer-presentation="floating"]
147
- > wa-dialog::part(footer) {
261
+ > .kui-dialog-surface__footer {
148
262
  position: absolute;
263
+ z-index: 1;
149
264
  inset-inline: var(--_kui-dialog-surface-footer-resolved-offset);
150
265
  inset-block-end: var(--_kui-dialog-surface-footer-resolved-offset);
151
- z-index: 1;
152
266
  background: transparent;
153
267
  }
154
268
  .kui-dialog-surface[data-footer-presentation="floating"]
155
- > wa-dialog::part(body) {
269
+ > .kui-dialog-surface__body {
156
270
  --_kui-dialog-surface-footer-clearance: calc(
157
271
  var(--_kui-dialog-surface-footer-block-size, 0px) +
158
272
  var(--_kui-dialog-surface-footer-resolved-offset)
@@ -160,45 +274,39 @@
160
274
  scroll-padding-block-end: var(--_kui-dialog-surface-footer-clearance);
161
275
  }
162
276
  .kui-dialog-surface[data-footer-presentation="floating"][data-body-inset="none"]
163
- > wa-dialog::part(body) {
277
+ > .kui-dialog-surface__body {
164
278
  padding-block-end: var(--_kui-dialog-surface-footer-clearance);
165
279
  }
166
280
  .kui-dialog-surface[data-footer-presentation="floating"][data-body-inset="compact"]
167
- > wa-dialog::part(body) {
281
+ > .kui-dialog-surface__body {
168
282
  padding-block-end: calc(
169
283
  var(--kui-wa-surface-inset, 0.5rem) +
170
284
  var(--_kui-dialog-surface-footer-clearance)
171
285
  );
172
286
  }
173
287
  .kui-dialog-surface[data-footer-presentation="floating"][data-body-inset="comfortable"]
174
- > wa-dialog::part(body) {
288
+ > .kui-dialog-surface__body {
175
289
  padding-block-end: calc(
176
290
  var(--kui-wa-container-inset, 1rem) +
177
291
  var(--_kui-dialog-surface-footer-clearance)
178
292
  );
179
293
  }
180
- /* Scroll clearance. A dialog body starts a new scroll context, so it clears
181
- any `--kui-scroll-clearance-*` a page region published around the dialog.
182
- With a floating footer over a filling child that opts into block-end
294
+ /* With a floating footer over a filling last child that opts into block-end
183
295
  `scrollClearance` (a transcript List or Pane), the body stops reserving the
184
296
  footer below that child: the child reaches the panel's block end, the body
185
297
  publishes the footer's clearance for it, and the child adds it inside its
186
298
  own scroll area, so content scrolls visibly beneath the transparent footer
187
299
  while its last item still comes to rest above it. */
188
- .kui-dialog-surface > wa-dialog::part(body) {
189
- --kui-scroll-clearance-block-start: 0px;
190
- --kui-scroll-clearance-block-end: 0px;
191
- }
192
300
  .kui-dialog-surface[data-footer-presentation="floating"]:is(
193
301
  [data-body-layout="fill"],
194
302
  [data-body-layout="fill-last"]
195
303
  )
196
- > wa-dialog:has(
197
- > :nth-last-child(1 of :not([slot])):is(
304
+ > .kui-dialog-surface__body:has(
305
+ > :last-child:is(
198
306
  [data-scroll-clearance="block-end"],
199
307
  [data-scroll-clearance="both"]
200
308
  )
201
- )::part(body) {
309
+ ) {
202
310
  --kui-scroll-clearance-block-end: var(--_kui-dialog-surface-footer-clearance);
203
311
  padding-block-end: 0;
204
312
  }
@@ -211,8 +319,13 @@
211
319
  again before its own inset (with a matching scroll-padding): flowing
212
320
  content rests below the title bar and scrolls beneath it. Unmeasured, the
213
321
  size resolves to 0px and the header stays docked. */
322
+ .kui-dialog-surface[data-header-presentation="floating"] {
323
+ --_kui-dialog-surface-header-divider-color: var(
324
+ --kui-color-neutral-border-normal
325
+ );
326
+ }
214
327
  .kui-dialog-surface[data-header-presentation="floating"]
215
- > wa-dialog::part(header) {
328
+ > .kui-dialog-surface__header {
216
329
  position: relative;
217
330
  z-index: 1;
218
331
  margin-block-end: calc(
@@ -221,21 +334,14 @@
221
334
  -webkit-backdrop-filter: var(--kui-chrome-material-filter);
222
335
  backdrop-filter: var(--kui-chrome-material-filter);
223
336
  background: var(--kui-chrome-material-raised);
337
+ /* The divider is scroll state: the register publishes it only while
338
+ content is scrolled beneath the header. An inset shadow, so showing it
339
+ never moves the header or the content. */
224
340
  box-shadow: inset 0 -1px
225
341
  var(--_kui-dialog-surface-header-divider, transparent);
226
342
  }
227
- /* The floating header's divider is scroll state, as on a Pane's overlay
228
- header: the register publishes `--_kui-dialog-surface-header-divider` on
229
- the panel (as this color) only while the body, or a filling child that
230
- reaches beneath the header, is scrolled away from its top. The line is an
231
- inset shadow, so showing it never moves the header or the content. */
232
- .kui-dialog-surface[data-header-presentation="floating"] > wa-dialog {
233
- --_kui-dialog-surface-header-divider-color: var(
234
- --kui-color-neutral-border-normal
235
- );
236
- }
237
343
  .kui-dialog-surface[data-header-presentation="floating"]
238
- > wa-dialog::part(body) {
344
+ > .kui-dialog-surface__body {
239
345
  --_kui-dialog-surface-header-clearance: var(
240
346
  --_kui-dialog-surface-header-block-size,
241
347
  0px
@@ -243,18 +349,18 @@
243
349
  scroll-padding-block-start: var(--_kui-dialog-surface-header-clearance);
244
350
  }
245
351
  .kui-dialog-surface[data-header-presentation="floating"][data-body-inset="none"]
246
- > wa-dialog::part(body) {
352
+ > .kui-dialog-surface__body {
247
353
  padding-block-start: var(--_kui-dialog-surface-header-clearance);
248
354
  }
249
355
  .kui-dialog-surface[data-header-presentation="floating"][data-body-inset="compact"]
250
- > wa-dialog::part(body) {
356
+ > .kui-dialog-surface__body {
251
357
  padding-block-start: calc(
252
358
  var(--kui-wa-surface-inset, 0.5rem) +
253
359
  var(--_kui-dialog-surface-header-clearance)
254
360
  );
255
361
  }
256
362
  .kui-dialog-surface[data-header-presentation="floating"][data-body-inset="comfortable"]
257
- > wa-dialog::part(body) {
363
+ > .kui-dialog-surface__body {
258
364
  padding-block-start: calc(
259
365
  var(--kui-wa-container-inset, 1rem) +
260
366
  var(--_kui-dialog-surface-header-clearance)
@@ -270,12 +376,12 @@
270
376
  [data-body-layout="fill"],
271
377
  [data-body-layout="fill-last"]
272
378
  )
273
- > wa-dialog:has(
274
- > :nth-child(1 of :not([slot])):nth-last-child(1 of :not([slot])):is(
379
+ > .kui-dialog-surface__body:has(
380
+ > :only-child:is(
275
381
  [data-scroll-clearance="block-start"],
276
382
  [data-scroll-clearance="both"]
277
383
  )
278
- )::part(body) {
384
+ ) {
279
385
  --kui-scroll-clearance-block-start: var(
280
386
  --_kui-dialog-surface-header-clearance
281
387
  );
@@ -283,14 +389,14 @@
283
389
  }
284
390
  @media (forced-colors: active) {
285
391
  .kui-dialog-surface[data-header-presentation="floating"]
286
- > wa-dialog::part(header) {
392
+ > .kui-dialog-surface__header {
287
393
  -webkit-backdrop-filter: none;
288
394
  backdrop-filter: none;
289
395
  background: Canvas;
290
396
  border-block-end: 1px solid CanvasText;
291
397
  }
292
398
  }
293
- .kui-dialog-surface[data-presentation="side-sheet"] > wa-dialog::part(dialog) {
399
+ .kui-dialog-surface[data-presentation="side-sheet"] {
294
400
  width: min(30rem, 100vw);
295
401
  max-width: 100vw;
296
402
  height: 100dvh;
@@ -299,10 +405,7 @@
299
405
  border-radius: var(--_kui-dialog-surface-radius) 0 0
300
406
  var(--_kui-dialog-surface-radius);
301
407
  }
302
- .kui-dialog-surface[data-presentation="fullscreen"] > wa-dialog {
303
- --width: 100vw;
304
- }
305
- .kui-dialog-surface[data-presentation="fullscreen"] > wa-dialog::part(dialog) {
408
+ .kui-dialog-surface[data-presentation="fullscreen"] {
306
409
  width: 100vw;
307
410
  max-width: 100vw;
308
411
  height: 100dvh;
@@ -317,8 +420,7 @@
317
420
  `env(keyboard-inset-height)`) keeps its content above them. `height`,
318
421
  `minHeight` and `maxHeight` measure that visible content height; the panel
319
422
  is capped at the dynamic viewport minus the top safe area and one gutter. */
320
- .kui-dialog-surface[data-presentation="bottom-sheet"]
321
- > wa-dialog::part(dialog) {
423
+ .kui-dialog-surface[data-presentation="bottom-sheet"] {
322
424
  --_kui-dialog-surface-sheet-clearance: max(
323
425
  var(--kui-safe-area-block-end, env(safe-area-inset-bottom, 0px)),
324
426
  var(--_kui-dialog-surface-keyboard-inset, 0px),
@@ -338,7 +440,6 @@
338
440
  )
339
441
  )
340
442
  );
341
- box-sizing: border-box;
342
443
  width: min(
343
444
  var(
344
445
  --_kui-dialog-surface-preferred-width,
@@ -362,8 +463,7 @@
362
463
  border-radius: var(--_kui-dialog-surface-radius)
363
464
  var(--_kui-dialog-surface-radius) 0 0;
364
465
  }
365
- .kui-dialog-surface[data-presentation="bottom-sheet"][data-height]
366
- > wa-dialog::part(dialog) {
466
+ .kui-dialog-surface[data-presentation="bottom-sheet"][data-height] {
367
467
  height: calc(
368
468
  var(
369
469
  --_kui-dialog-surface-sheet-height,
@@ -372,11 +472,10 @@
372
472
  var(--_kui-dialog-surface-sheet-clearance)
373
473
  );
374
474
  }
375
- /* A resizable sheet keeps a band at its top edge for the grabber the
376
- register injects: a `role="separator"` that resizes the visible height
377
- between `minHeight` (default 160px) and the cap by drag or keyboard. */
378
- .kui-dialog-surface[data-presentation="bottom-sheet"][data-resizable]
379
- > wa-dialog::part(dialog) {
475
+ /* A resizable sheet keeps a band at its top edge for its grabber: a
476
+ `role="separator"` that resizes the visible height between `minHeight`
477
+ (default 160px) and the cap by drag or keyboard. */
478
+ .kui-dialog-surface[data-presentation="bottom-sheet"][data-resizable] {
380
479
  min-height: min(
381
480
  calc(
382
481
  var(--_kui-dialog-surface-min-height, 10rem) +
@@ -386,47 +485,73 @@
386
485
  );
387
486
  padding-block-start: 0.75rem;
388
487
  }
389
- .kui-dialog-surface[data-presentation="bottom-sheet"][data-resizable]
390
- > wa-dialog::part(sheet-handle) {
488
+ .kui-dialog-surface__sheet-handle {
391
489
  position: absolute;
392
490
  z-index: 2;
393
- inset-block-start: 0;
394
- inset-inline: 0;
395
491
  width: 6rem;
396
492
  height: 1.25rem;
397
493
  margin-inline: auto;
398
494
  border-radius: var(--kui-radius-s);
399
495
  cursor: ns-resize;
496
+ inset-block-start: 0;
497
+ inset-inline: 0;
400
498
  touch-action: none;
401
499
  }
402
- .kui-dialog-surface[data-presentation="bottom-sheet"][data-resizable]
403
- > wa-dialog::part(sheet-handle)::before {
500
+ .kui-dialog-surface__sheet-handle::before {
404
501
  position: absolute;
405
- inset-block-start: 0.375rem;
406
- inset-inline: 0;
407
502
  width: 2.25rem;
408
503
  height: 0.3125rem;
409
504
  margin-inline: auto;
410
505
  border-radius: 0.15625rem;
411
506
  background: var(--kui-color-neutral-border-loud);
412
507
  content: "";
508
+ inset-block-start: 0.375rem;
509
+ inset-inline: 0;
413
510
  }
414
- .kui-dialog-surface[data-presentation="bottom-sheet"][data-resizable]
415
- > wa-dialog::part(sheet-handle):focus-visible {
511
+ .kui-dialog-surface__sheet-handle:focus-visible {
416
512
  outline: var(--kui-focus-ring);
417
513
  outline-offset: -3px;
418
514
  }
419
515
  @media (forced-colors: active) {
420
- .kui-dialog-surface[data-presentation="bottom-sheet"][data-resizable]
421
- > wa-dialog::part(sheet-handle)::before {
516
+ .kui-dialog-surface__sheet-handle::before {
422
517
  background: CanvasText;
423
518
  }
424
519
  }
425
- /* The sheet slides up from, and back down to, the bottom edge. Web Awesome
426
- runs its show, hide and pulse animations through one slot, so the register
427
- marks the host only while a show (`enter`) or hide (`exit`) runs, and only
428
- those keyframes change; the hide plays them in reverse. Reduced motion and
429
- the static effects mode keep Web Awesome's own animation. */
520
+
521
+ /* Motion: the controller marks the panel while an enter, exit, or pulse
522
+ runs, and ends each by a timer read from these durations. The panel scales
523
+ and fades in (and back out); a bottom sheet slides up from, and back down
524
+ to, the bottom edge; a refused close pulses. Reduced motion and the static
525
+ effects mode skip it. */
526
+ @keyframes kui-dialog-surface-show {
527
+ from {
528
+ opacity: 0;
529
+ scale: 0.8;
530
+ }
531
+ to {
532
+ opacity: 1;
533
+ scale: 1;
534
+ }
535
+ }
536
+ @keyframes kui-dialog-surface-backdrop {
537
+ from {
538
+ opacity: 0;
539
+ }
540
+ to {
541
+ opacity: 1;
542
+ }
543
+ }
544
+ @keyframes kui-dialog-surface-pulse {
545
+ 0% {
546
+ scale: 1;
547
+ }
548
+ 50% {
549
+ scale: 1.02;
550
+ }
551
+ 100% {
552
+ scale: 1;
553
+ }
554
+ }
430
555
  @keyframes kui-dialog-surface-sheet-slide {
431
556
  from {
432
557
  translate: 0 100%;
@@ -436,19 +561,41 @@
436
561
  }
437
562
  }
438
563
  @media (prefers-reduced-motion: no-preference) {
564
+ :root:not([data-kui-effects="static"])
565
+ .kui-dialog-surface[data-kui-dialog-motion="enter"],
566
+ :root:not([data-kui-effects="static"])
567
+ .kui-dialog-surface[data-kui-dialog-motion="enter"]::backdrop {
568
+ animation: kui-dialog-surface-show 150ms ease;
569
+ }
570
+ :root:not([data-kui-effects="static"])
571
+ .kui-dialog-surface[data-kui-dialog-motion="enter"]::backdrop {
572
+ animation-name: kui-dialog-surface-backdrop;
573
+ }
574
+ :root:not([data-kui-effects="static"])
575
+ .kui-dialog-surface[data-kui-dialog-motion="exit"],
576
+ :root:not([data-kui-effects="static"])
577
+ .kui-dialog-surface[data-kui-dialog-motion="exit"]::backdrop {
578
+ animation: kui-dialog-surface-show 150ms ease reverse forwards;
579
+ }
580
+ :root:not([data-kui-effects="static"])
581
+ .kui-dialog-surface[data-kui-dialog-motion="exit"]::backdrop {
582
+ animation-name: kui-dialog-surface-backdrop;
583
+ }
584
+ :root:not([data-kui-effects="static"])
585
+ .kui-dialog-surface[data-kui-dialog-motion="pulse"] {
586
+ animation: kui-dialog-surface-pulse 250ms ease;
587
+ }
439
588
  :root:not([data-kui-effects="static"])
440
589
  .kui-dialog-surface[data-presentation="bottom-sheet"]:not(
441
590
  [data-enter-motion="standard"]
442
- )
443
- > wa-dialog[data-kui-sheet-motion="enter"]::part(dialog),
591
+ )[data-kui-dialog-motion="enter"],
444
592
  :root:not([data-kui-effects="static"])
445
593
  .kui-dialog-surface[data-presentation="bottom-sheet"]:not(
446
594
  [data-exit-motion="standard"]
447
- )
448
- > wa-dialog[data-kui-sheet-motion="exit"]::part(dialog) {
449
- animation-name: kui-dialog-surface-sheet-slide;
595
+ )[data-kui-dialog-motion="exit"] {
450
596
  /* A full-height travel needs longer than the dialog's 150ms scale. */
451
- animation-duration: var(--wa-transition-slow, 300ms);
597
+ animation-name: kui-dialog-surface-sheet-slide;
598
+ animation-duration: 300ms;
452
599
  animation-timing-function: cubic-bezier(0.32, 0.72, 0, 1);
453
600
  }
454
601
  }