@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,262 +1,404 @@
1
- import { installHelpTags } from './chunk-TDMHA7C3.js';
2
- import '@awesome.me/webawesome/dist/components/button/button.js';
3
- import '@awesome.me/webawesome/dist/components/divider/divider.js';
4
- import '@awesome.me/webawesome/dist/components/dropdown/dropdown.js';
5
- import '@awesome.me/webawesome/dist/components/dropdown-item/dropdown-item.js';
6
- import '@awesome.me/webawesome/dist/components/tooltip/tooltip.js';
7
- import WaOption from '@awesome.me/webawesome/dist/components/option/option.js';
8
- import WaSelect from '@awesome.me/webawesome/dist/components/select/select.js';
9
- import { WaAfterHideEvent } from '@awesome.me/webawesome/dist/events/after-hide.js';
10
- import { WaAfterShowEvent } from '@awesome.me/webawesome/dist/events/after-show.js';
11
- import { WaHideEvent } from '@awesome.me/webawesome/dist/events/hide.js';
12
- import { WaShowEvent } from '@awesome.me/webawesome/dist/events/show.js';
1
+ import { installPopupMenus } from './chunk-C3RLKKFQ.js';
2
+ import { installHelpTags } from './chunk-SQ2Q3OQI.js';
3
+ import { summarizeSelection } from './chunk-TUID42UE.js';
4
+ import { followAnchor, positionPopup } from './chunk-PE2KPZDW.js';
13
5
 
14
- // src/components/forms/select/internal/install-select-actions.ts
15
- function runSelectAction(host, action) {
16
- if (host.disabled || !host.multiple) return false;
17
- const enabled = host.getAllOptions().filter((option) => !option.disabled);
18
- const next = action === "all" ? enabled : [];
19
- const current = host.selectedOptions;
20
- if (current.length === next.length && current.every((option) => next.includes(option)))
21
- return false;
22
- host.hasInteracted = true;
23
- host.valueHasChanged = true;
24
- host.setSelectedOptions(next);
25
- void host.updateComplete.then(() => {
26
- host.dispatchEvent(
27
- new InputEvent("input", { bubbles: true, composed: true })
28
- );
29
- host.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
30
- });
31
- return true;
6
+
7
+ // src/components/forms/select/internal/select-element.ts
8
+ var OPTION = ".kui-select__option";
9
+ var isDisabled = (option) => option.getAttribute("aria-disabled") === "true";
10
+ var optionValue = (option) => option.getAttribute("data-value");
11
+ var optionLabel = (option) => option.querySelector(".kui-select__option-label").textContent;
12
+ function optionsOf(root) {
13
+ return Array.from(root.querySelectorAll(OPTION));
32
14
  }
33
- var installedDocuments = /* @__PURE__ */ new WeakSet();
34
- function installSelectActions(doc = document) {
35
- if (installedDocuments.has(doc)) return;
36
- installedDocuments.add(doc);
37
- doc.addEventListener("keydown", (event) => {
38
- if (event.key === "Escape" || event.key === "Tab") return;
39
- if (!(event.target instanceof Element)) return;
40
- const button = event.target.closest("button[data-select-action]");
41
- if (button?.closest('wa-select[data-component="select"]'))
42
- event.stopImmediatePropagation();
43
- });
44
- doc.addEventListener("click", (event) => {
45
- if (!(event.target instanceof Element)) return;
46
- const button = event.target.closest(
47
- "button[data-select-action]"
48
- );
49
- if (!button || button.hasAttribute("disabled")) return;
50
- const host = button.closest(
51
- 'wa-select[data-component="select"]'
52
- );
53
- if (!host) return;
54
- const action = button.dataset.selectAction;
55
- if (action === "all" || action === "clear") runSelectAction(host, action);
56
- });
15
+ function chosenOptions(root) {
16
+ return optionsOf(root).filter(
17
+ (option) => option.getAttribute("aria-selected") === "true" && !isDisabled(option)
18
+ );
57
19
  }
58
-
59
- // src/components/forms/select/internal/animate-select-popup.ts
60
- function animateSelectPopup(popup, phase, signal) {
61
- return new Promise((resolve) => {
62
- let settled = false;
63
- let frame = 0;
64
- const finish = () => {
65
- if (settled) return;
66
- settled = true;
67
- window.cancelAnimationFrame(frame);
68
- signal.removeEventListener("abort", finish);
69
- popup.classList.remove(phase);
70
- resolve();
71
- };
72
- signal.addEventListener("abort", finish, { once: true });
73
- popup.classList.add(phase);
74
- frame = window.requestAnimationFrame(() => {
75
- void Promise.all(
76
- popup.getAnimations().map((animation) => animation.finished.catch(() => void 0))
77
- ).then(finish);
78
- });
79
- if (signal.aborted) finish();
80
- });
20
+ function renderSelection(root) {
21
+ const trigger = root.querySelector(
22
+ ":scope > .kui-select__trigger"
23
+ );
24
+ const valueText = trigger.querySelector(".kui-select__value");
25
+ const chosen = chosenOptions(root);
26
+ const multiple = root.hasAttribute("multiple");
27
+ const iconOnly = root.getAttribute("data-selected-presentation") === "icon-only";
28
+ const summary = multiple ? summarizeSelection(chosen.map(optionLabel)) : "";
29
+ const text = multiple ? iconOnly ? "" : summary : chosen[0] ? optionLabel(chosen[0]) : "";
30
+ if (multiple && iconOnly) {
31
+ const base = root.querySelector(".kui-select__listbox").getAttribute("aria-label");
32
+ trigger.setAttribute("aria-label", summary ? `${base}: ${summary}` : base);
33
+ }
34
+ if (root.classList.contains("kui-select--custom-selected")) return;
35
+ if (text) {
36
+ valueText.textContent = text;
37
+ valueText.removeAttribute("data-placeholder");
38
+ } else {
39
+ valueText.textContent = valueText.getAttribute("data-placeholder-text");
40
+ valueText.setAttribute("data-placeholder", "true");
41
+ }
42
+ if (multiple) return;
43
+ trigger.querySelector(":scope > .kui-select__icon--selected")?.remove();
44
+ const icon = chosen[0]?.querySelector(".kui-select__icon");
45
+ if (icon) {
46
+ const copy = icon.cloneNode(true);
47
+ copy.classList.add("kui-select__icon--selected");
48
+ trigger.prepend(copy);
49
+ }
81
50
  }
82
-
83
- // src/components/forms/select/internal/install-select-lifecycle.ts
84
- function releaseClosedPopupOverflow(popup) {
85
- const display = popup.style.getPropertyValue("display");
86
- const priority = popup.style.getPropertyPriority("display");
87
- popup.style.setProperty("display", "block");
88
- void popup.offsetHeight;
89
- if (display) popup.style.setProperty("display", display, priority);
90
- else popup.style.removeProperty("display");
51
+ function setChosen(root, values) {
52
+ const wanted = new Set(values);
53
+ const multiple = root.hasAttribute("multiple");
54
+ let changed = false;
55
+ let found = false;
56
+ for (const option of optionsOf(root)) {
57
+ const next = !isDisabled(option) && wanted.has(optionValue(option)) && (multiple || !found);
58
+ if (next) found = true;
59
+ if (option.getAttribute("aria-selected") === "true" !== next) {
60
+ option.setAttribute("aria-selected", String(next));
61
+ changed = true;
62
+ }
63
+ }
64
+ if (changed) renderSelection(root);
65
+ return changed;
91
66
  }
92
- function installSelectLifecycle(prototype) {
93
- const installed = /* @__PURE__ */ Symbol.for("@kerfjs/ui/select-lifecycle");
94
- if (Object.prototype.hasOwnProperty.call(prototype, installed)) return;
95
- Object.defineProperty(prototype, installed, { value: true });
96
- const original = prototype.handleOpenChange;
97
- const originalDisabled = prototype.handleDisabledChange;
98
- prototype.handleDisabledChange = function() {
99
- const host = this;
100
- const wasOpen = host.open;
101
- originalDisabled.call(this);
102
- if (host.dataset.component === "select" && wasOpen && !host.open) {
103
- void host.handleOpenChange();
67
+ var KuiSelectElement = class extends HTMLElement {
68
+ static formAssociated = true;
69
+ #internals;
70
+ #observer;
71
+ constructor() {
72
+ super();
73
+ this.#internals = typeof this.attachInternals === "function" ? this.attachInternals() : void 0;
74
+ }
75
+ get name() {
76
+ return this.getAttribute("name") ?? "";
77
+ }
78
+ get multiple() {
79
+ return this.hasAttribute("multiple");
80
+ }
81
+ get value() {
82
+ const values = chosenOptions(this).map(optionValue);
83
+ return this.multiple ? values : values[0] ?? "";
84
+ }
85
+ set value(next) {
86
+ setChosen(this, typeof next === "string" ? [next] : next);
87
+ this.syncFormValue();
88
+ }
89
+ /** The form the Select submits with, or null. */
90
+ get form() {
91
+ return this.#internals?.form ?? null;
92
+ }
93
+ connectedCallback() {
94
+ this.syncFormValue();
95
+ this.#observer ??= new MutationObserver(() => this.syncFormValue());
96
+ this.#observer.observe(this, {
97
+ subtree: true,
98
+ childList: true,
99
+ attributes: true,
100
+ attributeFilter: ["aria-selected"]
101
+ });
102
+ }
103
+ disconnectedCallback() {
104
+ this.#observer?.disconnect();
105
+ }
106
+ /** A form reset returns to the rendered (default) choice. */
107
+ formResetCallback() {
108
+ setChosen(
109
+ this,
110
+ optionsOf(this).filter((option) => option.hasAttribute("data-default-selected")).map(optionValue)
111
+ );
112
+ this.syncFormValue();
113
+ }
114
+ /** Publish the current choice as the form value. */
115
+ syncFormValue() {
116
+ const internals = this.#internals;
117
+ if (!internals) return;
118
+ const values = chosenOptions(this).map(optionValue);
119
+ if (!this.multiple) {
120
+ internals.setFormValue(values[0] ?? null);
121
+ return;
104
122
  }
123
+ const data = new FormData();
124
+ for (const value of values) data.append(this.name, value);
125
+ internals.setFormValue(data);
126
+ }
127
+ };
128
+
129
+ // src/components/forms/select/internal/select-controller.ts
130
+ var ROOT = "kui-select.kui-select";
131
+ var TRIGGER = ".kui-select__trigger";
132
+ var POPUP = ".kui-select__popup";
133
+ var SELECT_TYPEAHEAD_RESET = 1e3;
134
+ var isOpen = (popup) => popup.matches(":popover-open");
135
+ var isDisabled2 = (option) => option.getAttribute("aria-disabled") === "true";
136
+ var triggerOf = (root) => root.querySelector(`:scope > ${TRIGGER}`);
137
+ var popupOf = (root) => root.querySelector(`:scope > ${POPUP}`);
138
+ var labelOf = (option) => option.querySelector(".kui-select__option-label").textContent.trim();
139
+ function reveal(option, popup) {
140
+ if (popup.scrollHeight <= popup.clientHeight) return;
141
+ const box = option.getBoundingClientRect();
142
+ const top = popup.getBoundingClientRect().top + popup.clientTop;
143
+ const bottom = top + popup.clientHeight;
144
+ if (box.top < top) popup.scrollTop -= top - box.top;
145
+ else if (box.bottom > bottom) popup.scrollTop += box.bottom - bottom;
146
+ }
147
+ var installed = /* @__PURE__ */ new WeakSet();
148
+ function installSelects(doc = document) {
149
+ if (installed.has(doc)) return;
150
+ installed.add(doc);
151
+ const win = doc.defaultView;
152
+ if (!win.customElements.get("kui-select"))
153
+ win.customElements.define("kui-select", KuiSelectElement);
154
+ const following = /* @__PURE__ */ new WeakMap();
155
+ const openRoots = /* @__PURE__ */ new Set();
156
+ const typeahead = /* @__PURE__ */ new WeakMap();
157
+ const reset = (popup) => {
158
+ following.get(popup)?.();
159
+ following.delete(popup);
160
+ const root = popup.parentElement;
161
+ openRoots.delete(root);
162
+ root.removeAttribute("open");
163
+ triggerOf(root).setAttribute("aria-expanded", "false");
164
+ };
165
+ const announce = (root) => {
166
+ root.syncFormValue?.();
167
+ root.dispatchEvent(
168
+ new InputEvent("input", { bubbles: true, composed: true })
169
+ );
170
+ root.dispatchEvent(new Event("change", { bubbles: true, composed: true }));
171
+ };
172
+ const focusOption = (root, option) => {
173
+ const popup = popupOf(root);
174
+ (option ?? popup).focus({ preventScroll: true });
175
+ if (option) reveal(option, popup);
105
176
  };
106
- const transitions = /* @__PURE__ */ new WeakMap();
107
- const restorations = /* @__PURE__ */ new WeakMap();
108
- prototype.handleOpenChange = async function() {
109
- const host = this;
110
- if (host.dataset.component !== "select") return original.call(this);
111
- const restoring = restorations.get(host)?.open === host.open;
112
- restorations.delete(host);
113
- if (restoring) return;
114
- const transition = new AbortController();
115
- const opening = host.open && !host.disabled;
116
- const current = () => !transition.signal.aborted && host.isConnected && (host.open && !host.disabled) === opening;
117
- try {
118
- if (!host.isConnected) return;
119
- if (opening) {
120
- host.setCurrentOption(host.selectedOptions[0] || host.getFirstOption());
177
+ const open = (root, focus) => {
178
+ const trigger = triggerOf(root);
179
+ const popup = popupOf(root);
180
+ if (trigger.disabled || isOpen(popup)) return;
181
+ popup.showPopover();
182
+ openRoots.add(root);
183
+ root.setAttribute("open", "");
184
+ trigger.setAttribute("aria-expanded", "true");
185
+ const fit = root.classList.contains("kui-select--fit-menu");
186
+ const place = async () => {
187
+ if (!popup.isConnected || !isOpen(popup)) {
188
+ reset(popup);
189
+ return;
121
190
  }
122
- const event = opening ? new WaShowEvent() : new WaHideEvent();
123
- host.dispatchEvent(event);
124
- if (event.defaultPrevented) {
125
- host.open = !opening;
126
- const restoration = { open: host.open };
127
- restorations.set(host, restoration);
128
- void host.updateComplete.then(() => {
129
- if (restorations.get(host) === restoration) restorations.delete(host);
130
- });
191
+ if (fit) popup.style.width = `${trigger.getBoundingClientRect().width}px`;
192
+ await positionPopup(trigger, popup, { placement: "bottom" });
193
+ };
194
+ const stopFollowing = followAnchor(trigger, popup, () => void place());
195
+ let replacing = false;
196
+ const restore = new MutationObserver(() => {
197
+ if (trigger.disabled) {
198
+ close(root, false);
131
199
  return;
132
200
  }
133
- if (!current()) return;
134
- transitions.get(host)?.abort();
135
- transitions.set(host, transition);
136
- if (opening) {
137
- host.addOpenListeners();
138
- host.listbox.hidden = false;
139
- host.popup.sync = host.classList.contains("kui-select--fit-menu") ? "width" : void 0;
140
- host.popup.autoSize = "both";
141
- host.popup.shiftPadding = 10;
142
- host.popup.active = true;
143
- window.requestAnimationFrame(() => {
144
- if (current()) host.setCurrentOption(host.currentOption);
145
- });
146
- } else {
147
- host.removeOpenListeners();
201
+ if (trigger.getAttribute("aria-expanded") !== "true")
202
+ trigger.setAttribute("aria-expanded", "true");
203
+ if (popup.style.top || replacing) return;
204
+ replacing = true;
205
+ void place().finally(() => {
206
+ replacing = false;
207
+ });
208
+ });
209
+ restore.observe(trigger, {
210
+ attributeFilter: ["aria-expanded", "disabled"]
211
+ });
212
+ restore.observe(popup, { attributeFilter: ["style"] });
213
+ following.set(popup, () => {
214
+ restore.disconnect();
215
+ stopFollowing();
216
+ });
217
+ const options = optionsOf(root);
218
+ const target = focus === "last" ? options[options.length - 1] : focus === "first" ? options[0] : chosenOptions(root)[0] ?? options[0];
219
+ focusOption(root, target);
220
+ };
221
+ const close = (root, restoreFocus) => {
222
+ const popup = popupOf(root);
223
+ const focusInside = popup.contains(doc.activeElement);
224
+ popup.hidePopover();
225
+ if (restoreFocus && focusInside)
226
+ triggerOf(root).focus({ preventScroll: true });
227
+ };
228
+ const choose = (root, option) => {
229
+ if (isDisabled2(option) || triggerOf(root).disabled) return;
230
+ const value = optionValue(option);
231
+ const multiple = root.hasAttribute("multiple");
232
+ const values = chosenOptions(root).map(optionValue);
233
+ const next = multiple ? values.includes(value) ? values.filter((candidate) => candidate !== value) : [...values, value] : [value];
234
+ if (setChosen(root, next)) announce(root);
235
+ if (!multiple) close(root, true);
236
+ };
237
+ const runAction = (root, action) => {
238
+ const next = action === "all" ? optionsOf(root).filter((option) => !isDisabled2(option)).map(optionValue) : [];
239
+ if (setChosen(root, next)) announce(root);
240
+ };
241
+ const runTypeahead = (root, key) => {
242
+ const state = typeahead.get(root) ?? { query: "", timer: void 0 };
243
+ typeahead.set(root, state);
244
+ win.clearTimeout(state.timer);
245
+ state.timer = win.setTimeout(() => {
246
+ state.query = "";
247
+ }, SELECT_TYPEAHEAD_RESET);
248
+ state.query = key === "Backspace" ? state.query.slice(0, -1) : state.query + key.toLowerCase();
249
+ const match = optionsOf(root).find(
250
+ (option) => labelOf(option).toLowerCase().startsWith(state.query)
251
+ );
252
+ if (!match) return false;
253
+ focusOption(root, match);
254
+ return true;
255
+ };
256
+ doc.addEventListener(
257
+ "pointerdown",
258
+ (event) => {
259
+ const path = event.composedPath();
260
+ for (const root of [...openRoots]) {
261
+ if (!root.isConnected || !isOpen(popupOf(root))) {
262
+ openRoots.delete(root);
263
+ continue;
264
+ }
265
+ if (!path.includes(root)) close(root, false);
266
+ }
267
+ },
268
+ true
269
+ );
270
+ doc.addEventListener(
271
+ "click",
272
+ (event) => {
273
+ const target = event.target;
274
+ if (!(target instanceof Element)) return;
275
+ const root = target.closest(ROOT);
276
+ if (!root) return;
277
+ const trigger = target.closest(TRIGGER);
278
+ if (trigger?.parentElement === root) {
279
+ const popup = popupOf(root);
280
+ if (popup && isOpen(popup)) close(root, true);
281
+ else open(root, "chosen");
282
+ return;
148
283
  }
149
- await animateSelectPopup(
150
- host.popup.popup,
151
- opening ? "show" : "hide",
152
- transition.signal
153
- );
154
- if (!transition.signal.aborted && !host.isConnected) {
155
- host.removeOpenListeners();
156
- host.listbox.hidden = true;
157
- host.popup.active = false;
284
+ if (target.closest(".kui-select__label")?.parentElement === root) {
285
+ triggerOf(root).focus();
286
+ return;
158
287
  }
159
- if (!current()) return;
160
- if (opening) {
161
- const option = host.currentOption;
162
- if (option) {
163
- const list = host.listbox;
164
- const offset = Math.round(
165
- option.getBoundingClientRect().top - list.getBoundingClientRect().top
166
- );
167
- if (offset < 0)
168
- list.scrollTo({ top: list.scrollTop + offset, behavior: "auto" });
169
- else if (offset + option.clientHeight > list.offsetHeight) {
170
- list.scrollTo({
171
- top: list.scrollTop + offset - list.offsetHeight + option.clientHeight,
172
- behavior: "auto"
173
- });
174
- }
288
+ const action = target.closest("[data-select-action]");
289
+ if (action) {
290
+ runAction(root, action.getAttribute("data-select-action"));
291
+ return;
292
+ }
293
+ const option = target.closest(".kui-select__option");
294
+ if (option) choose(root, option);
295
+ },
296
+ true
297
+ );
298
+ doc.addEventListener(
299
+ "keydown",
300
+ (event) => {
301
+ const target = event.target;
302
+ if (!(target instanceof Element)) return;
303
+ const root = target.closest(ROOT);
304
+ if (!root || event.altKey || event.ctrlKey || event.metaKey) return;
305
+ const popup = popupOf(root);
306
+ const query = typeahead.get(root)?.query ?? "";
307
+ if (target.closest(TRIGGER)?.parentElement === root) {
308
+ if (isOpen(popup)) return;
309
+ switch (event.key) {
310
+ case "Enter":
311
+ case " ":
312
+ case "ArrowDown":
313
+ event.preventDefault();
314
+ open(root, "chosen");
315
+ return;
316
+ case "ArrowUp":
317
+ event.preventDefault();
318
+ open(root, "chosen");
319
+ return;
320
+ case "Home":
321
+ case "End":
322
+ event.preventDefault();
323
+ open(root, event.key === "Home" ? "first" : "last");
324
+ return;
325
+ default:
326
+ if (event.key.length === 1) {
327
+ event.preventDefault();
328
+ open(root, "chosen");
329
+ runTypeahead(root, event.key);
330
+ }
175
331
  }
176
- host.dispatchEvent(new WaAfterShowEvent());
177
- } else {
178
- host.listbox.hidden = true;
179
- host.popup.active = false;
180
- void host.popup.updateComplete.then(() => {
181
- if (!host.open) releaseClosedPopupOverflow(host.popup);
182
- });
183
- host.dispatchEvent(new WaAfterHideEvent());
332
+ return;
184
333
  }
185
- } finally {
186
- if (transitions.get(host) === transition) transitions.delete(host);
187
- }
188
- };
189
- }
190
-
191
- // src/components/forms/select/internal/install-select-multiple.ts
192
- function kerfMultiple(host) {
193
- return host instanceof HTMLElement && host.dataset.component === "select" && host.multiple;
194
- }
195
- function listLocale(host) {
196
- const lang = host.closest("[lang]")?.lang;
197
- return lang || void 0;
198
- }
199
- function summarizeSelection(labels, locale) {
200
- if (labels.length === 0) return "";
201
- try {
202
- return new Intl.ListFormat(locale, {
203
- type: "unit",
204
- style: "short"
205
- }).format(labels);
206
- } catch {
207
- return labels.join(", ");
208
- }
209
- }
210
- function installSelectMultiple(selectPrototype, optionPrototype) {
211
- const installed = /* @__PURE__ */ Symbol.for("@kerfjs/ui/select-multiple");
212
- if (Object.prototype.hasOwnProperty.call(selectPrototype, installed)) return;
213
- Object.defineProperty(selectPrototype, installed, { value: true });
214
- const select = selectPrototype;
215
- const selectionChanged = select.selectionChanged;
216
- select.selectionChanged = function() {
217
- selectionChanged.call(this);
218
- if (!kerfMultiple(this)) return;
219
- const chosen = new Set(this.selectedOptions);
220
- const summary = summarizeSelection(
221
- this.getAllOptions().filter((option2) => chosen.has(option2)).map((option2) => option2.label),
222
- listLocale(this)
223
- );
224
- const nameSummary = this.querySelector(
225
- ':scope > [slot="label"] > .kui-select__name-summary'
226
- );
227
- if (this.dataset.selectedPresentation === "icon-only" && nameSummary) {
228
- nameSummary.textContent = summary ? `: ${summary}` : "";
229
- this.displayLabel = "";
230
- return;
231
- }
232
- this.displayLabel = summary;
233
- };
234
- const tags = Object.getOwnPropertyDescriptor(selectPrototype, "tags");
235
- if (tags?.get) {
236
- const getTags = tags.get;
237
- Object.defineProperty(selectPrototype, "tags", {
238
- configurable: true,
239
- get() {
240
- return kerfMultiple(this) ? [] : getTags.call(this);
334
+ if (!popup.contains(target) || !isOpen(popup)) return;
335
+ const onAction = target.closest("[data-select-action]") !== null;
336
+ const options = optionsOf(root);
337
+ const current = target.closest(".kui-select__option");
338
+ const index = current ? options.indexOf(current) : -1;
339
+ const move = (next) => {
340
+ event.preventDefault();
341
+ event.stopPropagation();
342
+ focusOption(root, next);
343
+ };
344
+ switch (event.key) {
345
+ case "ArrowDown":
346
+ move(
347
+ options[index >= 0 && index < options.length - 1 ? index + 1 : 0]
348
+ );
349
+ return;
350
+ case "ArrowUp":
351
+ move(options[index > 0 ? index - 1 : options.length - 1]);
352
+ return;
353
+ case "Home":
354
+ move(options[0]);
355
+ return;
356
+ case "End":
357
+ move(options[options.length - 1]);
358
+ return;
359
+ case "Escape":
360
+ event.preventDefault();
361
+ event.stopPropagation();
362
+ close(root, true);
363
+ return;
364
+ case "Tab":
365
+ close(root, false);
366
+ triggerOf(root).focus({ preventScroll: true });
367
+ return;
368
+ case "Enter":
369
+ if (onAction || !current) return;
370
+ event.preventDefault();
371
+ choose(root, current);
372
+ return;
373
+ case " ":
374
+ if (onAction || !current) return;
375
+ event.preventDefault();
376
+ if (query) runTypeahead(root, " ");
377
+ else choose(root, current);
378
+ return;
379
+ default:
380
+ if ((event.key.length === 1 || event.key === "Backspace") && !onAction && runTypeahead(root, event.key)) {
381
+ event.preventDefault();
382
+ event.stopPropagation();
383
+ }
241
384
  }
242
- });
243
- }
244
- const option = optionPrototype;
245
- const syncDefaultSelected = option.syncDefaultSelected;
246
- option.syncDefaultSelected = function() {
247
- const host = this.closest('[data-component="select"]');
248
- if (!kerfMultiple(host) || !host.hasUpdated) {
249
- syncDefaultSelected.call(this);
250
- return;
251
- }
252
- host.value = host.getAllOptions().filter((candidate) => candidate.hasAttribute("selected")).map((candidate) => candidate.value);
253
- };
385
+ },
386
+ true
387
+ );
388
+ doc.addEventListener(
389
+ "beforetoggle",
390
+ (event) => {
391
+ const popup = event.target;
392
+ if (popup.matches(POPUP) && event.newState === "closed")
393
+ reset(popup);
394
+ },
395
+ true
396
+ );
254
397
  }
255
398
 
256
399
  // src/components/forms/select/register/select-register.ts
257
- installSelectLifecycle(WaSelect.prototype);
258
- installSelectMultiple(WaSelect.prototype, WaOption.prototype);
259
- installSelectActions();
400
+ installSelects();
401
+ installPopupMenus();
260
402
  installHelpTags();
261
403
  var selectElementsRegistered = true;
262
404