@kerfjs/ui 5.0.0-beta.104 → 5.0.0-beta.106

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 (758) hide show
  1. package/README.md +155 -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 -628
  5. package/ai/component-composition-rules.json +10 -10
  6. package/ai/component-composition.json +1688 -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/{token-search-field.md → search-field.md} +23 -23
  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 +1579 -247
  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-T5BJBMW7.js → chunk-CIAUILRR.js} +5 -5
  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-CR5U5FV6.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-ZJC5ND3M.js → chunk-VEME3D7K.js} +35 -35
  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-JA1i8z4D.d.ts → search-field-CrGTN5sa.d.ts} +45 -45
  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 +10 -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 +10 -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 +228 -164
  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 +127 -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/dist/app-tab.js +0 -6
  690. package/dist/app-tab.js.map +0 -1
  691. package/dist/browser/app-tab.js +0 -4
  692. package/dist/browser/composer.js +0 -4
  693. package/dist/browser/icon-toggle-button.js +0 -4
  694. package/dist/browser/token-search-field.js +0 -4
  695. package/dist/chunk-2MSPNRWJ.js.map +0 -1
  696. package/dist/chunk-7IUEBNCO.js.map +0 -1
  697. package/dist/chunk-AV7CPAPT.js +0 -82
  698. package/dist/chunk-AV7CPAPT.js.map +0 -1
  699. package/dist/chunk-BYFTHA4I.js.map +0 -1
  700. package/dist/chunk-CA7LNX3J.js +0 -44
  701. package/dist/chunk-CA7LNX3J.js.map +0 -1
  702. package/dist/chunk-CR5U5FV6.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-JOR5LGYE.js.map +0 -1
  711. package/dist/chunk-K4AT3V3J.js.map +0 -1
  712. package/dist/chunk-LL45C7BB.js.map +0 -1
  713. package/dist/chunk-LOSRXZAH.js.map +0 -1
  714. package/dist/chunk-LPHU44S3.js.map +0 -1
  715. package/dist/chunk-M5KZ26VV.js.map +0 -1
  716. package/dist/chunk-MXNIVEVL.js.map +0 -1
  717. package/dist/chunk-NS762OVM.js +0 -222
  718. package/dist/chunk-NS762OVM.js.map +0 -1
  719. package/dist/chunk-QTSMHH5J.js.map +0 -1
  720. package/dist/chunk-T5BJBMW7.js.map +0 -1
  721. package/dist/chunk-TDMHA7C3.js.map +0 -1
  722. package/dist/chunk-TGLUDQP2.js.map +0 -1
  723. package/dist/chunk-U6QYTMDB.js.map +0 -1
  724. package/dist/chunk-VFYO3UGZ.js +0 -45
  725. package/dist/chunk-VFYO3UGZ.js.map +0 -1
  726. package/dist/chunk-W4IK7AWD.js.map +0 -1
  727. package/dist/chunk-YBWQR2OK.js.map +0 -1
  728. package/dist/chunk-ZJC5ND3M.js.map +0 -1
  729. package/dist/composer.js +0 -5
  730. package/dist/composer.js.map +0 -1
  731. package/dist/icon-button.d.ts +0 -46
  732. package/dist/icon-button.js +0 -6
  733. package/dist/icon-button.js.map +0 -1
  734. package/dist/icon-toggle-button.d.ts +0 -42
  735. package/dist/icon-toggle-button.js +0 -6
  736. package/dist/icon-toggle-button.js.map +0 -1
  737. package/dist/styles/components/actions/icon-button/icon-button.css +0 -22
  738. package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +0 -83
  739. package/dist/styles/icon-button.css +0 -22
  740. package/dist/styles/icon-toggle-button.css +0 -83
  741. package/dist/token-search-field.d.ts +0 -3
  742. package/dist/token-search-field.js +0 -5
  743. package/dist/token-search-field.js.map +0 -1
  744. package/dist/token-search-model.d.ts +0 -3
  745. package/dist/token-search-model.js +0 -3
  746. package/dist/token-search-model.js.map +0 -1
  747. package/dist/wire-composers.js +0 -3
  748. package/dist/wire-token-search-fields.js +0 -6
  749. package/docs/design/templates/composer/chat-dark.svg +0 -1
  750. package/docs/design/templates/composer/chat.svg +0 -1
  751. package/docs/design/templates/composer-dark.svg +0 -1
  752. package/docs/design/templates/composer.svg +0 -1
  753. /package/docs/design/templates/{token-search-field → search-field}/empty-dark.svg +0 -0
  754. /package/docs/design/templates/{token-search-field → search-field}/empty.svg +0 -0
  755. /package/docs/design/templates/{token-search-field → search-field}/tokens-dark.svg +0 -0
  756. /package/docs/design/templates/{token-search-field → search-field}/tokens.svg +0 -0
  757. /package/docs/design/templates/{token-search-field-dark.svg → search-field-dark.svg} +0 -0
  758. /package/docs/design/templates/{token-search-field.svg → search-field.svg} +0 -0
@@ -1,115 +1,203 @@
1
- .kui-select::part(combobox) {
2
- min-height: 2.75rem;
3
- padding-inline: var(--kui-layout-item-padding, 0.5rem);
4
- border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
5
- gap: 0;
1
+ /* The Select: a form label above a 44px rounded control whose trigger shows
2
+ the chosen value and a disclosure caret, with an optional hint below, and a
3
+ listbox that opens in the top layer. The listbox shares the PopupMenu's
4
+ surface, row geometry, check column, current-row fill, group titles, scroll
5
+ cue, and caret motion through the popup-choice contract in foundation.css. */
6
+
7
+ .kui-select {
8
+ --_kui-select-motion: 75ms;
9
+ --_kui-select-height: 2.75rem;
10
+
11
+ display: flex;
12
+ min-width: 0;
13
+ flex-direction: column;
6
14
  }
7
- .kui-select--label-hidden::part(form-control-label) {
8
- position: absolute;
9
- width: 1px;
10
- height: 1px;
11
- padding: 0;
12
- margin: -1px;
15
+ .kui-select[data-size="compact"] {
16
+ --_kui-select-height: 2rem;
17
+ }
18
+
19
+ /* The form label: a ListHeader-style label, inset by the field's border and
20
+ inline padding so it lines up with the value inside the field. */
21
+ .kui-select__label {
22
+ display: block;
23
+ margin-block-end: 0.375rem;
24
+ padding-inline: calc(1px + var(--kui-layout-item-padding, 0.5rem));
25
+ color: var(--kui-color-neutral-on-quiet);
26
+ font-size: var(--kui-font-xs);
27
+ font-weight: 650;
28
+ letter-spacing: 0.04em;
29
+ line-height: 1.2;
30
+ text-transform: uppercase;
31
+ cursor: default;
32
+ }
33
+
34
+ /* The closed control. */
35
+ .kui-select__trigger {
36
+ display: flex;
37
+ position: relative;
38
+ box-sizing: border-box;
39
+ width: 100%;
40
+ height: auto;
41
+ min-width: 0;
42
+ min-height: var(--_kui-select-height);
43
+ align-items: center;
44
+ justify-content: start;
45
+ margin: 0;
46
+ padding: 0 var(--kui-layout-item-padding, 0.5rem);
13
47
  overflow: hidden;
14
- clip-path: inset(50%);
48
+ border: 1px solid var(--kui-color-neutral-border-normal);
49
+ border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
50
+ outline: 3px solid transparent;
51
+ outline-offset: 1px;
52
+ color: var(--kui-color-text);
53
+ background: var(--kui-color-surface);
54
+ font: inherit;
55
+ font-weight: normal;
56
+ line-height: 1.2;
57
+ text-align: start;
15
58
  white-space: nowrap;
16
- border: 0;
59
+ cursor: pointer;
60
+ transform: none;
61
+ transition:
62
+ background-color var(--_kui-select-motion) ease,
63
+ border-color var(--_kui-select-motion) ease,
64
+ outline-color var(--_kui-select-motion) ease;
65
+ }
66
+ .kui-select__trigger:focus {
67
+ outline-color: transparent;
17
68
  }
18
- .kui-select::part(display-input) {
69
+ /* Focus shows on the control (pointer or keyboard), but not while its
70
+ listbox is open: the listbox shows where focus is then. */
71
+ .kui-select:not([open]):focus-within > .kui-select__trigger {
72
+ outline: var(--kui-focus-ring);
73
+ outline-offset: 1px;
74
+ }
75
+ .kui-select__trigger:disabled {
76
+ opacity: 0.5;
77
+ cursor: not-allowed;
78
+ }
79
+
80
+ /* The value: the chosen label (or summary), ellipsized; a placeholder when
81
+ nothing is chosen. */
82
+ /* Like a text field, the value takes a 20-character box (175px at the 16px
83
+ baseline) by default, growing with the control and ellipsizing within it. */
84
+ .kui-select__value {
85
+ width: 10.9375em;
19
86
  min-width: 0;
20
87
  max-width: var(--kui-select-label-max-width, none);
88
+ flex: 1 1 auto;
21
89
  overflow: hidden;
22
- padding: 0;
23
90
  text-overflow: ellipsis;
24
91
  white-space: nowrap;
25
92
  }
26
- /* A multiple Select summarizes its choices in the display text (installed by
27
- select/register) instead of drawing a removable tag per choice. */
28
- .kui-select[multiple]::part(tags) {
29
- display: none;
93
+ .kui-select__value[data-placeholder] {
94
+ color: var(--kui-color-text-quiet);
30
95
  }
31
- .kui-select[data-size="compact"]::part(combobox) {
32
- min-height: 2rem;
96
+
97
+ .kui-select__icon {
98
+ display: inline-flex;
99
+ width: var(--_kui-popup-row-icon-size);
100
+ height: var(--_kui-popup-row-icon-size);
101
+ flex: none;
102
+ }
103
+ .kui-select__icon svg {
104
+ display: block;
105
+ width: 100%;
106
+ height: 100%;
107
+ }
108
+ .kui-select__trigger > .kui-select__icon {
109
+ margin-inline-end: 0.5rem;
110
+ color: var(--kui-color-neutral-on-quiet);
111
+ }
112
+
113
+ /* The disclosure caret: a 20px box at the form-field disclosure scale, turned
114
+ to face the open listbox. */
115
+ .kui-select__caret {
116
+ display: flex;
117
+ width: 1.25em;
118
+ height: 1em;
119
+ flex: none;
120
+ align-items: center;
121
+ justify-content: center;
122
+ color: var(--kui-color-neutral-on-quiet);
123
+ transform: scale(var(--kui-disclosure-icon-scale, 0.5));
124
+ rotate: 0deg;
125
+ transition: var(--_kui-popup-caret-transition);
33
126
  }
34
- .kui-select[data-presentation="toolbar-borderless"]::part(combobox) {
127
+ .kui-select__caret svg {
128
+ width: 0.875em;
129
+ height: 1em;
130
+ flex: none;
131
+ }
132
+ .kui-select[open] .kui-select__caret {
133
+ rotate: var(--_kui-popup-caret-open-rotation);
134
+ }
135
+
136
+ .kui-select__hint {
137
+ display: block;
138
+ margin-block-start: 0.4375rem;
139
+ padding-inline: calc(1px + var(--kui-layout-item-padding, 0.5rem));
140
+ color: var(--kui-color-text-quiet);
141
+ font-size: var(--kui-font-s);
142
+ line-height: 1.6;
143
+ }
144
+
145
+ /* Presentations. */
146
+ .kui-select[data-presentation="toolbar-borderless"] > .kui-select__trigger {
35
147
  border-color: transparent;
36
148
  background: transparent;
37
- box-shadow: none;
38
- }
39
- .kui-select[data-presentation="navigation"] {
40
- width: max-content;
41
- max-width: 100%;
42
149
  }
43
- .kui-select[data-presentation="title"] {
150
+ .kui-select:is(
151
+ [data-presentation="navigation"],
152
+ [data-presentation="title"],
153
+ [data-presentation="inline"]
154
+ ) {
44
155
  width: max-content;
45
156
  max-width: 100%;
46
157
  }
47
- .kui-select[data-presentation="title"]::part(combobox) {
158
+ .kui-select[data-presentation="title"] > .kui-select__trigger {
48
159
  width: max-content;
49
160
  min-height: 2.25rem;
50
161
  padding-inline: 0;
51
162
  border-color: transparent;
52
163
  background: transparent;
53
- box-shadow: none;
54
164
  font-size: var(--kui-font-l, 1.25rem);
55
165
  font-weight: 700;
56
166
  }
57
- .kui-select[data-presentation="title"]::part(display-input) {
58
- field-sizing: content;
167
+ .kui-select[data-presentation="title"] .kui-select__value {
168
+ width: auto;
59
169
  flex: 0 0 auto;
60
170
  }
61
- .kui-select[data-presentation="title"]::part(expand-icon) {
62
- margin-inline-start: 0;
63
- }
64
171
  /* A Toolbar has an 8px inset; ListItem text starts at 17px after its own
65
172
  margin, border, and padding. The group contributes 3px, so the title
66
173
  Select advances 6px to share the list's text edge. */
67
174
  .kui-toolbar-control-group > .kui-select[data-presentation="title"] {
68
175
  margin-inline-start: 0.375rem;
69
176
  }
70
- .kui-select[data-presentation="inline"] {
71
- width: max-content;
72
- max-width: 100%;
73
- }
74
- .kui-select[data-presentation="inline"]::part(combobox) {
177
+ .kui-select[data-presentation="inline"] > .kui-select__trigger {
75
178
  width: max-content;
76
179
  min-height: 0;
77
180
  padding: 0;
78
181
  border-width: 0;
79
182
  background: transparent;
80
183
  }
81
- .kui-select--custom-selected[data-presentation="inline"]::part(start) {
82
- flex: 0 0 auto;
83
- }
84
- .kui-select--custom-selected[data-presentation="inline"]
85
- .kui-select__custom-selected {
86
- margin-inline-end: 0 !important;
87
- }
88
- .kui-select--custom-selected[data-presentation="inline"]
89
- .kui-select__custom-selected-content {
90
- display: flex;
91
- }
92
- .kui-select[data-focus-ring-owner="group"]:focus-within::part(combobox) {
184
+ .kui-select[data-focus-ring-owner="group"] > .kui-select__trigger {
93
185
  outline: none;
94
- box-shadow: none;
95
186
  }
187
+
96
188
  /* An icon-only trigger shows the selected icon and the disclosure caret as one
97
- pill, the same control family as a toolbar popup-menu dropdown (an icon +
98
- caret wa-button): symmetric 8px inline padding, 12px from the icon to the
99
- caret's 20px box, the caret glyph size, and the control height, so the icon
100
- sits left of center to balance the caret. Inside a ToolbarControlGroup the
101
- trigger takes the control-slot height, overlap, and radius the group
102
- provides (`--_kui-toolbar-control-group-slot-*`) so it is inset evenly on
103
- every side, the group sizes to the trigger (wider than tall), and the
104
- group-owned focus ring stays concentric with it. */
189
+ pill, the same control family as a toolbar PopupMenu trigger: symmetric 8px
190
+ inline padding, 12px from the icon to the caret's 20px box, the caret glyph
191
+ size, and the control height, so the icon sits left of center to balance
192
+ the caret. Inside a ToolbarControlGroup the trigger takes the control-slot
193
+ height, overlap, and radius the group provides
194
+ (`--_kui-toolbar-control-group-slot-*`) so it is inset evenly on every side,
195
+ the group sizes to the trigger (wider than tall), and the group-owned focus
196
+ ring stays concentric with it. */
105
197
  .kui-select[data-selected-presentation="icon-only"] {
106
- --_kui-select-height: 2.75rem;
107
198
  width: max-content;
108
199
  }
109
- .kui-select[data-selected-presentation="icon-only"][data-size="compact"] {
110
- --_kui-select-height: 2rem;
111
- }
112
- .kui-select[data-selected-presentation="icon-only"]::part(combobox) {
200
+ .kui-select[data-selected-presentation="icon-only"] > .kui-select__trigger {
113
201
  min-height: var(
114
202
  --_kui-toolbar-control-group-slot-height,
115
203
  var(--_kui-select-height)
@@ -126,59 +214,94 @@
126
214
  .kui-select[data-selected-presentation="icon-only"]:only-child {
127
215
  margin-inline: calc(var(--_kui-toolbar-control-group-slot-overlap, 0px) * -1);
128
216
  }
129
- .kui-select[data-selected-presentation="icon-only"]:only-child::part(combobox) {
217
+ .kui-select[data-selected-presentation="icon-only"]:only-child
218
+ > .kui-select__trigger {
130
219
  border-radius: var(
131
220
  --_kui-toolbar-control-group-slot-radius,
132
221
  var(--kui-layout-rounded-radius, calc(1px + 0.6875rem))
133
222
  );
134
223
  }
224
+ .kui-select[data-selected-presentation="icon-only"]
225
+ > .kui-select__trigger
226
+ > .kui-select__value {
227
+ position: absolute;
228
+ width: 1px;
229
+ height: 1px;
230
+ padding: 0;
231
+ overflow: hidden;
232
+ clip-path: inset(50%);
233
+ }
234
+ .kui-select[data-selected-presentation="icon-only"]
235
+ > .kui-select__trigger
236
+ > :is(.kui-select__icon, .kui-select__custom-selected) {
237
+ margin-inline-end: 0;
238
+ }
239
+ .kui-select[data-selected-presentation="icon-only"]
240
+ > .kui-select__trigger
241
+ > .kui-select__caret {
242
+ width: 1.25em;
243
+ height: 1em;
244
+ margin-inline-start: 0.75rem;
245
+ transform: scale(0.875);
246
+ }
247
+ .kui-select[data-selected-presentation="icon-only"][data-caret="false"]
248
+ > .kui-select__trigger {
249
+ width: var(
250
+ --_kui-toolbar-control-group-slot-height,
251
+ var(--_kui-select-height)
252
+ );
253
+ justify-content: center;
254
+ }
135
255
  /* In a ToolbarControlGroup, a Select beside other controls highlights its own
136
- pill on hover, like its button and dropdown siblings; a lone Select instead
256
+ pill on hover, like its button and menu siblings; a lone Select instead
137
257
  lifts the whole group (toolbar-control-group.css). */
138
258
  .kui-toolbar-control-group:not([data-single="true"])
139
- > .kui-select:not(:only-child):hover::part(combobox) {
259
+ > .kui-select:not(:only-child)
260
+ > .kui-select__trigger:hover {
140
261
  border-color: var(--kui-toolbar-control-border);
141
262
  background: var(--kui-toolbar-control-hover-background);
142
263
  }
143
264
  /* With the group's per-control rings, a composed Select paints its own ring
144
265
  even when it was told the group owns it: nothing else would show focus. It
145
- matches the sibling controls' ring and offset. While its listbox is open the
146
- popup shows focus instead, so the trigger ring stays off, as a PopupMenu
147
- trigger's does. */
266
+ matches the sibling controls' ring and offset. */
148
267
  .kui-toolbar-control-group[data-focus-ring="control"]
149
- > .kui-select:not([open]):focus-within::part(combobox) {
268
+ > .kui-select:not([open]):focus-within
269
+ > .kui-select__trigger {
150
270
  outline: var(--kui-focus-ring);
151
271
  outline-offset: 1px;
152
272
  }
153
- .kui-select[data-focus-ring-inset="true"][data-focus-ring-owner="select"]:focus-within:not(
273
+ .kui-select[data-focus-ring-inset="true"][data-focus-ring-owner="select"]:not(
154
274
  [open]
155
- )::part(combobox) {
275
+ ):focus-within
276
+ > .kui-select__trigger {
156
277
  outline: var(--kui-focus-ring);
157
278
  outline-offset: -3px;
158
279
  }
159
- /* The popup-menu wa-button draws the same chevron glyph at 0.875em inside a
160
- 20px box; match its box, spacing, and glyph size rather than the smaller
161
- form-field disclosure scale. */
162
- .kui-select[data-selected-presentation="icon-only"]::part(expand-icon) {
163
- margin-inline-start: 0.75rem;
164
- transform: scale(0.875);
165
- }
166
- .kui-select[data-caret="false"]::part(expand-icon) {
280
+ .kui-select[data-caret="false"] .kui-select__caret {
167
281
  display: none;
168
282
  }
169
- .kui-select[data-selected-presentation="icon-only"][data-caret="false"]::part(
170
- combobox
171
- ) {
172
- width: var(
173
- --_kui-toolbar-control-group-slot-height,
174
- var(--_kui-select-height)
175
- );
176
- justify-content: center;
283
+
284
+ /* A custom selected rendering takes the value's place in the trigger. */
285
+ .kui-select__custom-selected {
286
+ display: inline-flex;
287
+ box-sizing: content-box;
288
+ min-width: 0;
289
+ flex: 1 1 auto;
290
+ align-items: center;
291
+ padding-inline-end: var(--kui-layout-item-padding, 0.5rem);
292
+ overflow: hidden;
293
+ color: var(--kui-select-selected-color, var(--kui-color-neutral-on-quiet));
294
+ font-size: var(--kui-select-selected-font-size, inherit);
295
+ font-weight: var(--kui-select-selected-font-weight, inherit);
177
296
  }
178
- .kui-select[data-caret="false"] .kui-select__placeholder-chevron {
179
- display: none;
297
+ .kui-select__custom-selected-content {
298
+ display: block;
299
+ min-width: 0;
300
+ overflow: hidden;
301
+ text-overflow: ellipsis;
302
+ white-space: nowrap;
180
303
  }
181
- .kui-select[data-selected-presentation="icon-only"]::part(display-input) {
304
+ .kui-select--custom-selected > .kui-select__trigger > .kui-select__value {
182
305
  position: absolute;
183
306
  width: 1px;
184
307
  height: 1px;
@@ -186,119 +309,154 @@
186
309
  overflow: hidden;
187
310
  clip-path: inset(50%);
188
311
  }
189
- .kui-select[data-selected-presentation="icon-only"]
190
- .kui-select__icon[slot="start"] {
191
- margin-inline-end: 0 !important;
312
+ .kui-select--custom-selected[data-selected-presentation="icon-only"][data-caret="false"]
313
+ .kui-select__custom-selected {
314
+ flex: 0 0 auto;
315
+ padding-inline-end: 0;
192
316
  }
193
- .kui-select::part(start),
194
- .kui-select::part(end),
195
- .kui-select::part(expand-icon) {
196
- margin: 0;
317
+ .kui-select--custom-selected[data-presentation="inline"]
318
+ .kui-select__custom-selected {
319
+ flex: 0 0 auto;
320
+ padding-inline-end: 0;
197
321
  }
198
- .kui-select::part(expand-icon) {
199
- transform: scale(var(--kui-disclosure-icon-scale, 0.5));
322
+ .kui-select--custom-selected[data-presentation="inline"]
323
+ .kui-select__custom-selected-content {
324
+ display: flex;
200
325
  }
201
- .kui-select::part(expand-icon) {
202
- transition: var(--_kui-popup-caret-transition);
326
+
327
+ /* The listbox: a raised surface in the top layer below (or, when short, above)
328
+ the trigger, at least as wide as the trigger and as wide as its content up to
329
+ 20rem, or exactly the trigger's width with `fitMenu`. */
330
+ .kui-select__popup {
331
+ position: fixed;
332
+ inset: auto;
333
+ box-sizing: border-box;
334
+ width: max-content;
335
+ max-width: min(
336
+ 20rem,
337
+ calc(100vw - 1.25rem),
338
+ var(--_kui-popup-available-width, 100vw)
339
+ );
340
+ margin: 0;
341
+ padding: var(--_kui-popup-inset);
342
+ overflow: auto;
343
+ overscroll-behavior: none;
344
+ border: 1px solid var(--kui-color-neutral-border-normal);
345
+ border-radius: var(--kui-radius-m);
346
+ color: var(--kui-color-text);
347
+ background: var(--_kui-popup-scroll-cue);
348
+ box-shadow: var(--kui-shadow-m);
349
+ font: inherit;
350
+ font-weight: normal;
351
+ text-align: start;
352
+ white-space: normal;
353
+ user-select: none;
354
+ opacity: 0;
355
+ transition:
356
+ opacity var(--_kui-select-motion) ease,
357
+ display var(--_kui-select-motion) allow-discrete,
358
+ overlay var(--_kui-select-motion) allow-discrete;
359
+ }
360
+ .kui-select__popup:popover-open {
361
+ display: block;
362
+ opacity: 1;
203
363
  }
204
- .kui-select[open]::part(expand-icon) {
205
- rotate: var(--_kui-popup-caret-open-rotation);
364
+ @starting-style {
365
+ .kui-select__popup:popover-open {
366
+ opacity: 0;
367
+ }
206
368
  }
207
- /* The open listbox already shows where focus is (its current option), so the
208
- trigger drops its focus ring while the popup is visible, as a PopupMenu
209
- trigger does; the ring returns when the popup closes with focus still on
210
- the control. */
211
- .kui-select[open]::part(combobox) {
212
- outline-color: transparent;
369
+ .kui-select__popup:focus {
370
+ outline: none;
213
371
  }
214
- .kui-select::part(listbox) {
215
- padding: var(--_kui-popup-inset);
216
- background: var(--_kui-popup-scroll-cue);
217
- width: max-content;
218
- min-width: 100%;
219
- max-width: min(20rem, calc(100vw - 1.25rem));
372
+ .kui-select--fit-menu > .kui-select__popup {
373
+ max-width: var(--_kui-popup-available-width, none);
220
374
  }
221
- .kui-select--fit-menu::part(listbox) {
222
- width: 100%;
375
+
376
+ .kui-select__listbox,
377
+ .kui-select__group {
378
+ display: flex;
379
+ flex-direction: column;
380
+ gap: var(--_kui-popup-row-gap);
223
381
  }
224
- .kui-select wa-option::part(base) {
225
- align-items: center;
382
+ .kui-select__listbox > *,
383
+ .kui-select__group > * {
384
+ flex: none;
226
385
  }
227
- .kui-select wa-option {
228
- --wa-form-control-activated-color: var(--_kui-popup-row-current-background);
229
- --current-text-color: var(--_kui-popup-row-current-color);
386
+
387
+ .kui-select__option {
388
+ display: flex;
389
+ position: relative;
390
+ box-sizing: border-box;
391
+ align-items: center;
230
392
  padding: var(--_kui-popup-row-padding-block)
231
393
  var(--_kui-popup-row-padding-inline-end) var(--_kui-popup-row-padding-block)
232
394
  var(--_kui-popup-row-padding-inline-start);
395
+ border-radius: var(--kui-radius-s);
396
+ outline: none;
397
+ color: var(--kui-color-text);
398
+ cursor: pointer;
399
+ transition: background-color var(--_kui-select-motion) ease;
233
400
  }
234
- .kui-select wa-option::part(start) {
235
- align-self: center;
236
- margin-inline-end: var(--_kui-popup-row-icon-gap);
237
- margin-top: 0;
401
+ @media (hover: hover) {
402
+ .kui-select__option:not([aria-disabled="true"], :focus):hover {
403
+ color: var(--kui-color-neutral-on-normal);
404
+ background-color: var(--kui-color-neutral-fill-normal);
405
+ }
238
406
  }
239
- .kui-select wa-option::part(label) {
240
- min-width: 0;
241
- padding-block: var(--_kui-popup-row-label-padding-block);
242
- line-height: var(--_kui-popup-row-label-line-height);
243
- overflow-wrap: normal;
244
- word-break: normal;
245
- white-space: normal;
407
+ /* The focused option is the listbox's current row. */
408
+ .kui-select__option:focus {
409
+ color: var(--_kui-popup-row-current-color);
410
+ background-color: var(--_kui-popup-row-current-background);
246
411
  }
247
- .kui-select__icon {
248
- display: inline-flex;
249
- width: var(--_kui-popup-row-icon-size);
250
- height: var(--_kui-popup-row-icon-size);
412
+ .kui-select__option[aria-disabled="true"] {
413
+ opacity: 0.5;
414
+ cursor: not-allowed;
415
+ }
416
+ .kui-select__option[aria-disabled="true"]:focus {
417
+ opacity: 1;
418
+ }
419
+ .kui-select__check {
420
+ display: flex;
421
+ width: 2em;
251
422
  flex: none;
423
+ align-items: center;
424
+ justify-content: center;
425
+ font-size: var(--kui-font-s);
426
+ visibility: hidden;
252
427
  }
253
- .kui-select > .kui-select__icon[slot="start"] {
254
- margin-inline-end: 0.5rem !important;
428
+ .kui-select__check svg {
429
+ width: 1.25em;
430
+ height: 1.25em;
431
+ stroke-width: 2.5;
255
432
  }
256
- .kui-select__icon svg {
257
- display: block;
258
- width: 100%;
259
- height: 100%;
433
+ .kui-select__option[aria-selected="true"] .kui-select__check {
434
+ visibility: visible;
260
435
  }
261
- .kui-select__custom-selected {
262
- display: inline-flex;
263
- min-width: 0;
264
- align-items: center;
265
- overflow: hidden;
266
- color: var(--kui-select-selected-color, inherit);
267
- font-size: var(--kui-select-selected-font-size, inherit);
268
- font-weight: var(--kui-select-selected-font-weight, inherit);
436
+ .kui-select__option > .kui-select__icon {
437
+ margin-inline-end: var(--_kui-popup-row-icon-gap);
269
438
  }
270
- .kui-select__custom-selected-content {
271
- display: block;
272
- min-width: 0;
273
- overflow: hidden;
274
- text-overflow: ellipsis;
275
- white-space: nowrap;
439
+ /* An icon-only Select's listbox keeps its compact icon rows. */
440
+ .kui-select[data-selected-presentation="icon-only"]
441
+ .kui-select__option
442
+ > .kui-select__icon {
443
+ margin-inline-end: 0;
276
444
  }
277
- .kui-select--custom-selected::part(start) {
445
+ .kui-select__option-label {
278
446
  min-width: 0;
279
447
  flex: 1 1 auto;
448
+ margin-inline-start: var(--_kui-popup-row-icon-gap);
449
+ padding-block: var(--_kui-popup-row-label-padding-block);
450
+ line-height: var(--_kui-popup-row-label-line-height);
280
451
  }
281
- /* A label can use the free start-slot width to truncate, but a caret-free
282
- icon must keep its intrinsic width so the combobox can center the glyph. */
283
- .kui-select--custom-selected[data-selected-presentation="icon-only"][data-caret="false"]::part(
284
- start
285
- ) {
286
- flex: 0 0 auto;
287
- }
288
- .kui-select--custom-selected[data-selected-presentation="icon-only"][data-caret="false"]
289
- .kui-select__custom-selected {
290
- margin-inline-end: 0 !important;
291
- }
292
- .kui-select--custom-selected::part(display-input) {
293
- position: absolute;
294
- width: 1px;
295
- height: 1px;
296
- padding: 0;
297
- overflow: hidden;
298
- clip-path: inset(50%);
452
+
453
+ .kui-select__separator {
454
+ margin-block: 0.5em;
455
+ border-top: 1px solid var(--kui-color-neutral-border-normal);
299
456
  }
300
457
  .kui-select__group {
301
- display: grid;
458
+ /* A group's title and choices sit flush, without the row gap. */
459
+ gap: 0;
302
460
  padding: 0.25rem 0;
303
461
  }
304
462
  .kui-select__group--separated {
@@ -318,15 +476,16 @@
318
476
  .kui-select__actions {
319
477
  display: flex;
320
478
  gap: 0.25rem;
321
- margin-block-start: 0.25rem;
479
+ margin-block-start: calc(0.25rem + var(--_kui-popup-row-gap));
322
480
  padding-block-start: 0.5rem;
323
481
  border-block-start: 1px solid var(--kui-color-neutral-border-quiet);
324
482
  }
325
-
326
483
  .kui-select__action {
327
- flex: 1 1 auto;
328
484
  min-width: 0;
329
- min-height: 2.25rem;
485
+ height: auto;
486
+ min-height: 2.75rem;
487
+ flex: 1 1 auto;
488
+ margin: 0;
330
489
  padding-inline: 0.5rem;
331
490
  border: 0;
332
491
  border-radius: var(--kui-radius-s);
@@ -334,40 +493,25 @@
334
493
  background: transparent;
335
494
  font: inherit;
336
495
  cursor: pointer;
496
+ transform: none;
337
497
  }
338
-
339
498
  .kui-select__action:hover {
340
499
  background: var(--kui-color-neutral-fill-quiet);
341
500
  }
342
-
501
+ .kui-select__action:focus {
502
+ outline: none;
503
+ }
343
504
  .kui-select__action:focus-visible {
344
505
  outline: var(--kui-focus-ring);
345
506
  outline-offset: -2px;
346
507
  }
347
508
 
348
- /* Loading placeholder: a static box that mirrors the closed combobox (label
349
- above, a value skeleton and a dormant chevron inside a 44px control box).
350
- Rendered instead of the interactive wa-select, so it needs no registration. */
351
- .kui-select--placeholder {
352
- display: block;
353
- width: 100%;
354
- }
355
- .kui-select__placeholder-label {
356
- /* The live field's top label (see webawesome.css): a ListHeader-style label,
357
- inset by the field's border + inline padding so it lines up with the value. */
358
- display: block;
359
- margin-block-end: 0.375rem;
360
- padding-inline: calc(1px + var(--kui-layout-item-padding, 0.5rem));
361
- color: var(--kui-color-neutral-on-quiet);
362
- font-size: var(--kui-font-xs);
363
- font-weight: 650;
364
- letter-spacing: 0.04em;
365
- line-height: 1.2;
366
- text-transform: uppercase;
367
- }
509
+ /* Loading placeholder: a static box that mirrors the closed control (label
510
+ above, a value skeleton and a dormant caret inside the control box). */
368
511
  .kui-select__placeholder-box {
369
512
  display: flex;
370
- min-height: 2.75rem;
513
+ box-sizing: border-box;
514
+ min-height: var(--_kui-select-height);
371
515
  align-items: center;
372
516
  justify-content: space-between;
373
517
  gap: 0.5rem;
@@ -376,22 +520,11 @@
376
520
  border-radius: var(--kui-layout-rounded-radius, calc(1px + 0.6875rem));
377
521
  background: var(--kui-color-surface);
378
522
  }
379
- .kui-select--placeholder[data-size="compact"] .kui-select__placeholder-box {
380
- min-height: 2rem;
381
- }
382
523
  .kui-select--placeholder[data-presentation="toolbar-borderless"]
383
524
  .kui-select__placeholder-box {
384
525
  border-color: transparent;
385
526
  background: transparent;
386
527
  }
387
- .kui-select--placeholder[data-presentation="navigation"] {
388
- width: max-content;
389
- max-width: 100%;
390
- }
391
- .kui-select--placeholder[data-presentation="title"] {
392
- width: max-content;
393
- max-width: 100%;
394
- }
395
528
  .kui-select--placeholder[data-presentation="title"]
396
529
  .kui-select__placeholder-box {
397
530
  min-height: 2.25rem;
@@ -401,10 +534,6 @@
401
534
  font-size: var(--kui-font-l, 1.25rem);
402
535
  font-weight: 700;
403
536
  }
404
- .kui-select--placeholder[data-presentation="inline"] {
405
- width: max-content;
406
- max-width: 100%;
407
- }
408
537
  .kui-select--placeholder[data-presentation="inline"]
409
538
  .kui-select__placeholder-box {
410
539
  min-height: 0;
@@ -412,32 +541,6 @@
412
541
  border-width: 0;
413
542
  background: transparent;
414
543
  }
415
- .kui-select__placeholder-hint {
416
- /* The live wa-select hint part: small body text at Web Awesome's form-control
417
- hint metrics (1.6 line height, 7px below the box), inset like the value. */
418
- display: block;
419
- margin-block-start: 0.4375rem;
420
- padding-inline: calc(1px + var(--kui-layout-item-padding, 0.5rem));
421
- color: var(--kui-color-text-quiet);
422
- font-size: var(--kui-font-s);
423
- line-height: 1.6;
424
- }
425
- .kui-select__placeholder-chevron {
426
- /* The live control's expand-icon box and scale, with the same glyph. */
427
- display: grid;
428
- width: 1.25rem;
429
- height: 1rem;
430
- flex: none;
431
- place-items: center;
432
- color: var(--kui-color-neutral-on-quiet);
433
- transform: scale(var(--kui-disclosure-icon-scale, 0.5));
434
- }
435
- .kui-select__placeholder-chevron svg {
436
- display: block;
437
- width: auto;
438
- height: 100%;
439
- fill: currentColor;
440
- }
441
544
 
442
545
  /* Explicit width policy applies to both the live control and its loading
443
546
  placeholder; the presentation keeps its existing width when omitted. */
@@ -453,3 +556,21 @@
453
556
  width: max-content;
454
557
  max-width: var(--kui-select-trigger-max-width, 100%);
455
558
  }
559
+ /* `maxTriggerWidth` / `minTriggerWidth` bound the closed trigger under any
560
+ presentation; the value or custom selected content ellipsizes inside. */
561
+ .kui-select[data-trigger-max] {
562
+ max-width: min(var(--_kui-select-trigger-max), 100%);
563
+ }
564
+ .kui-select[data-trigger-min] {
565
+ min-width: var(--_kui-select-trigger-min);
566
+ }
567
+ /* Under a cap, a max-content trigger (title, inline) and its value or custom
568
+ content shrink to fit, so the text ellipsizes before the caret. */
569
+ .kui-select[data-trigger-max] > .kui-select__trigger {
570
+ max-width: 100%;
571
+ }
572
+ .kui-select[data-trigger-max] .kui-select__value,
573
+ .kui-select[data-trigger-max] .kui-select__custom-selected {
574
+ min-width: 0;
575
+ flex-shrink: 1;
576
+ }