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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (759) hide show
  1. package/README.md +163 -116
  2. package/ai/application-ui-profile.defaults.json +125 -4
  3. package/ai/compile-time-contracts-v1.json +11 -11
  4. package/ai/component-catalog.json +2606 -627
  5. package/ai/component-composition-rules.json +11 -10
  6. package/ai/component-composition.json +1689 -300
  7. package/ai/components/README.md +66 -48
  8. package/ai/components/application-tabs.md +4 -4
  9. package/ai/components/badge.md +1 -0
  10. package/ai/components/button.md +91 -0
  11. package/ai/components/checkbox.md +89 -0
  12. package/ai/components/choice-chips.md +9 -3
  13. package/ai/components/color-field.md +92 -0
  14. package/ai/components/color-picker.md +90 -0
  15. package/ai/components/color-swatches.md +82 -0
  16. package/ai/components/combobox.md +6 -4
  17. package/ai/components/content-item.md +5 -2
  18. package/ai/components/disclosure.md +83 -0
  19. package/ai/components/file-picker.md +1 -0
  20. package/ai/components/foundation.md +1 -1
  21. package/ai/components/list-action-row.md +3 -3
  22. package/ai/components/list-detail-dialog.md +90 -0
  23. package/ai/components/list.md +2 -0
  24. package/ai/components/lucide-icon.md +2 -0
  25. package/ai/components/{composer.md → message-composer.md} +17 -16
  26. package/ai/components/pane.md +3 -1
  27. package/ai/components/popup-menu.md +12 -9
  28. package/ai/components/progress-bar.md +82 -0
  29. package/ai/components/progress-ring.md +80 -0
  30. package/ai/components/radio-group.md +88 -0
  31. package/ai/components/recipe-list-detail-dialog.md +5 -5
  32. package/ai/components/search-field.md +108 -0
  33. package/ai/components/select.md +15 -13
  34. package/ai/components/slider.md +84 -0
  35. package/ai/components/surface-scaffold.md +16 -13
  36. package/ai/components/switch.md +81 -0
  37. package/ai/components/tab-bar.md +6 -6
  38. package/ai/components/tab-navigator.md +2 -2
  39. package/ai/components/tabs.md +7 -7
  40. package/ai/components/tag-field.md +86 -0
  41. package/ai/components/text-field.md +98 -0
  42. package/ai/components/text.md +1 -0
  43. package/ai/components/toast.md +85 -0
  44. package/ai/components/toolbar-control-group.md +3 -3
  45. package/ai/components/tooltip.md +81 -0
  46. package/ai/components/wa-accordion-item.md +11 -5
  47. package/ai/components/wa-accordion.md +11 -5
  48. package/ai/components/wa-animated-image.md +2 -1
  49. package/ai/components/wa-animation.md +1 -0
  50. package/ai/components/wa-avatar.md +1 -0
  51. package/ai/components/wa-badge.md +10 -3
  52. package/ai/components/wa-breadcrumb-item.md +1 -0
  53. package/ai/components/wa-breadcrumb.md +1 -0
  54. package/ai/components/wa-button-group.md +6 -4
  55. package/ai/components/wa-button.md +7 -5
  56. package/ai/components/wa-callout.md +7 -5
  57. package/ai/components/wa-card.md +12 -4
  58. package/ai/components/wa-carousel-item.md +1 -0
  59. package/ai/components/wa-carousel.md +1 -0
  60. package/ai/components/wa-checkbox-group.md +11 -4
  61. package/ai/components/wa-checkbox.md +10 -4
  62. package/ai/components/wa-color-picker.md +13 -5
  63. package/ai/components/wa-comparison.md +2 -1
  64. package/ai/components/wa-copy-button.md +1 -0
  65. package/ai/components/wa-details.md +11 -5
  66. package/ai/components/wa-dialog.md +10 -4
  67. package/ai/components/wa-divider.md +1 -0
  68. package/ai/components/wa-drawer.md +12 -5
  69. package/ai/components/wa-dropdown-item.md +8 -6
  70. package/ai/components/wa-dropdown.md +8 -6
  71. package/ai/components/wa-format-bytes.md +1 -0
  72. package/ai/components/wa-format-date.md +1 -0
  73. package/ai/components/wa-format-number.md +1 -0
  74. package/ai/components/wa-icon.md +2 -1
  75. package/ai/components/wa-include.md +6 -4
  76. package/ai/components/wa-input.md +9 -6
  77. package/ai/components/wa-intersection-observer.md +1 -0
  78. package/ai/components/wa-known-date.md +1 -0
  79. package/ai/components/wa-markdown.md +1 -0
  80. package/ai/components/wa-mutation-observer.md +1 -0
  81. package/ai/components/wa-number-input.md +1 -0
  82. package/ai/components/wa-option.md +7 -5
  83. package/ai/components/wa-otp-input.md +1 -0
  84. package/ai/components/wa-page.md +13 -4
  85. package/ai/components/wa-pagination.md +1 -0
  86. package/ai/components/wa-popover.md +11 -5
  87. package/ai/components/wa-popup.md +11 -4
  88. package/ai/components/wa-progress-bar.md +11 -4
  89. package/ai/components/wa-progress-ring.md +11 -4
  90. package/ai/components/wa-qr-code.md +1 -0
  91. package/ai/components/wa-radio-group.md +12 -4
  92. package/ai/components/wa-radio.md +10 -4
  93. package/ai/components/wa-random-content.md +1 -0
  94. package/ai/components/wa-rating.md +1 -0
  95. package/ai/components/wa-relative-time.md +1 -0
  96. package/ai/components/wa-resize-observer.md +1 -0
  97. package/ai/components/wa-scroller.md +12 -4
  98. package/ai/components/wa-select.md +7 -5
  99. package/ai/components/wa-skeleton.md +10 -3
  100. package/ai/components/wa-slider.md +11 -5
  101. package/ai/components/wa-spinner.md +7 -5
  102. package/ai/components/wa-split-panel.md +7 -5
  103. package/ai/components/wa-step.md +56 -0
  104. package/ai/components/wa-stepper.md +56 -0
  105. package/ai/components/wa-switch.md +10 -3
  106. package/ai/components/wa-tab-group.md +8 -6
  107. package/ai/components/wa-tab-panel.md +7 -5
  108. package/ai/components/wa-tab.md +8 -6
  109. package/ai/components/wa-tag-input.md +62 -0
  110. package/ai/components/wa-tag.md +9 -6
  111. package/ai/components/wa-textarea.md +10 -3
  112. package/ai/components/wa-time-input.md +1 -0
  113. package/ai/components/wa-toast-item.md +9 -7
  114. package/ai/components/wa-toast.md +9 -7
  115. package/ai/components/wa-tooltip.md +11 -5
  116. package/ai/components/wa-tree-item.md +2 -1
  117. package/ai/components/wa-tree.md +2 -1
  118. package/ai/components/wa-zoomable-frame.md +2 -1
  119. package/ai/components/workbench-dialog.md +90 -0
  120. package/ai/public-api-signatures-v1.md +1577 -245
  121. package/ai/skill.md +83 -50
  122. package/ai/webawesome-jsx-signatures-v1.md +4 -1
  123. package/dist/badge.d.ts +9 -1
  124. package/dist/badge.js +1 -1
  125. package/dist/browser/button.js +5 -0
  126. package/dist/browser/catalog.js +3 -2
  127. package/dist/browser/{icon-button.js → checkbox.js} +2 -2
  128. package/dist/browser/color-field.js +4 -0
  129. package/dist/browser/color-picker.js +5 -0
  130. package/dist/browser/color-swatches.js +3 -0
  131. package/dist/browser/disclosure.js +5 -0
  132. package/dist/browser/list-action-row.js +1 -0
  133. package/dist/browser/list-detail-dialog.js +14 -0
  134. package/dist/browser/message-composer.js +5 -0
  135. package/dist/browser/popup-menu.js +1 -0
  136. package/dist/browser/progress-bar.js +3 -0
  137. package/dist/browser/progress-ring.js +3 -0
  138. package/dist/browser/radio-group.js +3 -0
  139. package/dist/browser/search-field.js +4 -0
  140. package/dist/browser/slider.js +3 -0
  141. package/dist/browser/surface-scaffold.js +1 -0
  142. package/dist/browser/switch.js +3 -0
  143. package/dist/browser/tab-bar-item.js +4 -0
  144. package/dist/browser/tag-field.js +5 -0
  145. package/dist/browser/text-field.js +4 -0
  146. package/dist/browser/workbench-dialog.js +15 -0
  147. package/dist/button.d.ts +108 -0
  148. package/dist/button.js +7 -0
  149. package/dist/button.js.map +1 -0
  150. package/dist/catalog-resources.d.ts +1 -1
  151. package/dist/catalog.d.ts +3 -3
  152. package/dist/catalog.js +57 -27
  153. package/dist/catalog.js.map +1 -1
  154. package/dist/checkbox.d.ts +45 -0
  155. package/dist/checkbox.js +6 -0
  156. package/dist/checkbox.js.map +1 -0
  157. package/dist/choice-chips.d.ts +49 -15
  158. package/dist/choice-chips.js +1 -1
  159. package/dist/chunk-23PPPNH6.js +93 -0
  160. package/dist/chunk-23PPPNH6.js.map +1 -0
  161. package/dist/{chunk-FNZQOUZ5.js → chunk-2FW7D4IG.js} +2 -2
  162. package/dist/{chunk-FNZQOUZ5.js.map → chunk-2FW7D4IG.js.map} +1 -1
  163. package/dist/{chunk-ZYU5WRC3.js → chunk-3GLYIIFR.js} +2 -2
  164. package/dist/{chunk-ZYU5WRC3.js.map → chunk-3GLYIIFR.js.map} +1 -1
  165. package/dist/{chunk-5NQF35VO.js → chunk-4RECPEHI.js} +2 -2
  166. package/dist/{chunk-5NQF35VO.js.map → chunk-4RECPEHI.js.map} +1 -1
  167. package/dist/{chunk-7IUEBNCO.js → chunk-5USKCWGL.js} +8 -3
  168. package/dist/chunk-5USKCWGL.js.map +1 -0
  169. package/dist/chunk-6VVIW7VB.js +69 -0
  170. package/dist/chunk-6VVIW7VB.js.map +1 -0
  171. package/dist/{chunk-LL45C7BB.js → chunk-7K6U6FCN.js} +1 -1
  172. package/dist/chunk-7K6U6FCN.js.map +1 -0
  173. package/dist/{chunk-HQZYKJ56.js → chunk-7W3GKMN4.js} +110 -74
  174. package/dist/chunk-7W3GKMN4.js.map +1 -0
  175. package/dist/chunk-ACUKTVS3.js +371 -0
  176. package/dist/chunk-ACUKTVS3.js.map +1 -0
  177. package/dist/{chunk-YQ2AC4E2.js → chunk-AMIHGFLP.js} +2 -2
  178. package/dist/{chunk-YQ2AC4E2.js.map → chunk-AMIHGFLP.js.map} +1 -1
  179. package/dist/chunk-ATGAJVZ6.js +268 -0
  180. package/dist/chunk-ATGAJVZ6.js.map +1 -0
  181. package/dist/chunk-AYPGXR2E.js +20 -0
  182. package/dist/chunk-AYPGXR2E.js.map +1 -0
  183. package/dist/{chunk-ETCWQLJV.js → chunk-BKUMG2KB.js} +38 -28
  184. package/dist/chunk-BKUMG2KB.js.map +1 -0
  185. package/dist/chunk-C26Q6P4Q.js +76 -0
  186. package/dist/chunk-C26Q6P4Q.js.map +1 -0
  187. package/dist/chunk-C3RLKKFQ.js +452 -0
  188. package/dist/chunk-C3RLKKFQ.js.map +1 -0
  189. package/dist/{chunk-IM3GKYOG.js → chunk-CIAUILRR.js} +52 -32
  190. package/dist/chunk-CIAUILRR.js.map +1 -0
  191. package/dist/chunk-CNM6ZWP2.js +38 -0
  192. package/dist/chunk-CNM6ZWP2.js.map +1 -0
  193. package/dist/{chunk-LPHU44S3.js → chunk-CTQUDCY5.js} +3 -1
  194. package/dist/chunk-CTQUDCY5.js.map +1 -0
  195. package/dist/{chunk-MXNIVEVL.js → chunk-D4MXSAMI.js} +5 -3
  196. package/dist/chunk-D4MXSAMI.js.map +1 -0
  197. package/dist/{chunk-YBWQR2OK.js → chunk-DDSCVEO5.js} +10 -9
  198. package/dist/chunk-DDSCVEO5.js.map +1 -0
  199. package/dist/{chunk-SIW64V65.js → chunk-DF2YKGIX.js} +3 -3
  200. package/dist/{chunk-SIW64V65.js.map → chunk-DF2YKGIX.js.map} +1 -1
  201. package/dist/{chunk-3SKAEPPZ.js → chunk-ECFCAKWE.js} +4 -4
  202. package/dist/{chunk-3SKAEPPZ.js.map → chunk-ECFCAKWE.js.map} +1 -1
  203. package/dist/chunk-EKBMUXFV.js +298 -0
  204. package/dist/chunk-EKBMUXFV.js.map +1 -0
  205. package/dist/{chunk-IXLUZHGT.js → chunk-FG6U7KQQ.js} +5 -5
  206. package/dist/{chunk-IXLUZHGT.js.map → chunk-FG6U7KQQ.js.map} +1 -1
  207. package/dist/chunk-FKKJHGN5.js +147 -0
  208. package/dist/chunk-FKKJHGN5.js.map +1 -0
  209. package/dist/{chunk-FDZNYD4C.js → chunk-GCAK23PU.js} +34 -3
  210. package/dist/chunk-GCAK23PU.js.map +1 -0
  211. package/dist/chunk-GXSX6Q6O.js +42 -0
  212. package/dist/chunk-GXSX6Q6O.js.map +1 -0
  213. package/dist/{chunk-LOSRXZAH.js → chunk-HJXVVFBT.js} +14 -6
  214. package/dist/chunk-HJXVVFBT.js.map +1 -0
  215. package/dist/{chunk-M5KZ26VV.js → chunk-HQZG3OFL.js} +11 -1
  216. package/dist/chunk-HQZG3OFL.js.map +1 -0
  217. package/dist/{chunk-ELCMSQNJ.js → chunk-HTERKONR.js} +8 -8
  218. package/dist/chunk-HTERKONR.js.map +1 -0
  219. package/dist/chunk-HYORKKYP.js +8 -0
  220. package/dist/chunk-HYORKKYP.js.map +1 -0
  221. package/dist/chunk-IO27YTL3.js +73 -0
  222. package/dist/chunk-IO27YTL3.js.map +1 -0
  223. package/dist/chunk-ITUQC4FW.js +163 -0
  224. package/dist/chunk-ITUQC4FW.js.map +1 -0
  225. package/dist/chunk-K57NINLH.js +137 -0
  226. package/dist/chunk-K57NINLH.js.map +1 -0
  227. package/dist/chunk-KC6WUSNS.js +34 -0
  228. package/dist/chunk-KC6WUSNS.js.map +1 -0
  229. package/dist/{chunk-W4IK7AWD.js → chunk-KDQZ3E5C.js} +3 -1
  230. package/dist/chunk-KDQZ3E5C.js.map +1 -0
  231. package/dist/{chunk-2MSPNRWJ.js → chunk-KK3S5OTW.js} +27 -11
  232. package/dist/chunk-KK3S5OTW.js.map +1 -0
  233. package/dist/chunk-LTBVP6VN.js +59 -0
  234. package/dist/chunk-LTBVP6VN.js.map +1 -0
  235. package/dist/chunk-OHPYT2BH.js +82 -0
  236. package/dist/chunk-OHPYT2BH.js.map +1 -0
  237. package/dist/{chunk-HZPHCSCS.js → chunk-OY2MXIBB.js} +8 -2
  238. package/dist/chunk-OY2MXIBB.js.map +1 -0
  239. package/dist/chunk-PE2KPZDW.js +85 -0
  240. package/dist/chunk-PE2KPZDW.js.map +1 -0
  241. package/dist/{chunk-QTSMHH5J.js → chunk-QPTJ5DOO.js} +5 -3
  242. package/dist/chunk-QPTJ5DOO.js.map +1 -0
  243. package/dist/{chunk-JOR5LGYE.js → chunk-RFLW4FPL.js} +1 -1
  244. package/dist/chunk-RFLW4FPL.js.map +1 -0
  245. package/dist/{chunk-U6QYTMDB.js → chunk-RMWNO6BA.js} +6 -2
  246. package/dist/chunk-RMWNO6BA.js.map +1 -0
  247. package/dist/{chunk-TDMHA7C3.js → chunk-SQ2Q3OQI.js} +112 -63
  248. package/dist/chunk-SQ2Q3OQI.js.map +1 -0
  249. package/dist/{chunk-K4AT3V3J.js → chunk-T74YB76U.js} +13 -11
  250. package/dist/chunk-T74YB76U.js.map +1 -0
  251. package/dist/{chunk-BYFTHA4I.js → chunk-TAHR457X.js} +53 -6
  252. package/dist/chunk-TAHR457X.js.map +1 -0
  253. package/dist/{chunk-3VXDSIBJ.js → chunk-TKNVL53O.js} +2 -2
  254. package/dist/{chunk-3VXDSIBJ.js.map → chunk-TKNVL53O.js.map} +1 -1
  255. package/dist/chunk-TNJLNLVE.js +115 -0
  256. package/dist/chunk-TNJLNLVE.js.map +1 -0
  257. package/dist/chunk-TUID42UE.js +15 -0
  258. package/dist/chunk-TUID42UE.js.map +1 -0
  259. package/dist/{chunk-PKL6QJKK.js → chunk-UMNHJSIO.js} +93 -80
  260. package/dist/chunk-UMNHJSIO.js.map +1 -0
  261. package/dist/chunk-UTCAOOXU.js +116 -0
  262. package/dist/chunk-UTCAOOXU.js.map +1 -0
  263. package/dist/{chunk-MF6ZUUJZ.js → chunk-VEME3D7K.js} +38 -40
  264. package/dist/chunk-VEME3D7K.js.map +1 -0
  265. package/dist/{chunk-HLDRH23D.js → chunk-WJKHLOP5.js} +2 -2
  266. package/dist/{chunk-HLDRH23D.js.map → chunk-WJKHLOP5.js.map} +1 -1
  267. package/dist/chunk-WU57BYYM.js +115 -0
  268. package/dist/chunk-WU57BYYM.js.map +1 -0
  269. package/dist/{chunk-TGLUDQP2.js → chunk-ZCDRLN3B.js} +11 -11
  270. package/dist/chunk-ZCDRLN3B.js.map +1 -0
  271. package/dist/chunk-ZX2QQJXD.js +249 -0
  272. package/dist/chunk-ZX2QQJXD.js.map +1 -0
  273. package/dist/{chunk-6E2H2E5A.js → chunk-ZXZAECHZ.js} +6 -6
  274. package/dist/{chunk-6E2H2E5A.js.map → chunk-ZXZAECHZ.js.map} +1 -1
  275. package/dist/collapsible-panel.js +3 -3
  276. package/dist/color-field.d.ts +51 -0
  277. package/dist/color-field.js +92 -0
  278. package/dist/color-field.js.map +1 -0
  279. package/dist/color-picker.d.ts +88 -0
  280. package/dist/color-picker.js +8 -0
  281. package/dist/color-picker.js.map +1 -0
  282. package/dist/color-swatches.d.ts +56 -0
  283. package/dist/color-swatches.js +4 -0
  284. package/dist/color-swatches.js.map +1 -0
  285. package/dist/combobox.js +1 -1
  286. package/dist/content-item.d.ts +13 -1
  287. package/dist/content-item.js +1 -1
  288. package/dist/disclosure-arrow.js +1 -1
  289. package/dist/disclosure.d.ts +57 -0
  290. package/dist/disclosure.js +51 -0
  291. package/dist/disclosure.js.map +1 -0
  292. package/dist/file-picker.d.ts +7 -0
  293. package/dist/file-picker.js +1 -1
  294. package/dist/help-tags-register.d.ts +8 -8
  295. package/dist/help-tags-register.js +3 -2
  296. package/dist/help-tags-register.js.map +1 -1
  297. package/dist/index.d.ts +16 -9
  298. package/dist/index.js +58 -46
  299. package/dist/list-action-row.js +4 -1
  300. package/dist/list-detail-dialog.d.ts +117 -0
  301. package/dist/list-detail-dialog.js +165 -0
  302. package/dist/list-detail-dialog.js.map +1 -0
  303. package/dist/list-header.js +1 -1
  304. package/dist/list-item.js +1 -1
  305. package/dist/list.d.ts +17 -2
  306. package/dist/list.js +1 -1
  307. package/dist/lucide-icon.d.ts +9 -1
  308. package/dist/lucide-icon.js +1 -1
  309. package/dist/{composer.d.ts → message-composer.d.ts} +20 -12
  310. package/dist/message-composer.js +6 -0
  311. package/dist/message-composer.js.map +1 -0
  312. package/dist/nav-stack.js +1 -1
  313. package/dist/pane.d.ts +36 -3
  314. package/dist/pane.js +1 -1
  315. package/dist/popup-menu-register.d.ts +6 -5
  316. package/dist/popup-menu-register.js +3 -326
  317. package/dist/popup-menu-register.js.map +1 -1
  318. package/dist/popup-menu.d.ts +41 -23
  319. package/dist/popup-menu.js +5 -1
  320. package/dist/progress-bar.d.ts +52 -0
  321. package/dist/progress-bar.js +68 -0
  322. package/dist/progress-bar.js.map +1 -0
  323. package/dist/progress-ring.d.ts +44 -0
  324. package/dist/progress-ring.js +73 -0
  325. package/dist/progress-ring.js.map +1 -0
  326. package/dist/radio-group.d.ts +62 -0
  327. package/dist/radio-group.js +4 -0
  328. package/dist/radio-group.js.map +1 -0
  329. package/dist/row.js +1 -1
  330. package/dist/{token-search-model-aYR0YAei.d.ts → search-field-CrGTN5sa.d.ts} +67 -43
  331. package/dist/search-field-model.d.ts +3 -0
  332. package/dist/search-field-model.js +3 -0
  333. package/dist/search-field-model.js.map +1 -0
  334. package/dist/search-field.d.ts +3 -0
  335. package/dist/search-field.js +5 -0
  336. package/dist/search-field.js.map +1 -0
  337. package/dist/select-register.d.ts +6 -3
  338. package/dist/select-register.js +383 -241
  339. package/dist/select-register.js.map +1 -1
  340. package/dist/select.d.ts +30 -6
  341. package/dist/select.js +3 -1
  342. package/dist/selection.d.ts +54 -0
  343. package/dist/selection.js +3 -0
  344. package/dist/selection.js.map +1 -0
  345. package/dist/slider.d.ts +74 -0
  346. package/dist/slider.js +103 -0
  347. package/dist/slider.js.map +1 -0
  348. package/dist/split-button.js +1 -1
  349. package/dist/split-view.d.ts +5 -2
  350. package/dist/split-view.js +18 -159
  351. package/dist/split-view.js.map +1 -1
  352. package/dist/state-banner.js +1 -1
  353. package/dist/styles/badge.css +18 -6
  354. package/dist/styles/button.css +230 -0
  355. package/dist/styles/catalog/components/catalog-example.css +13 -4
  356. package/dist/styles/checkbox.css +121 -0
  357. package/dist/styles/choice-chips.css +58 -7
  358. package/dist/styles/color-field.css +125 -0
  359. package/dist/styles/color-picker.css +331 -0
  360. package/dist/styles/color-swatches.css +122 -0
  361. package/dist/styles/combobox.css +7 -5
  362. package/dist/styles/components/actions/button/button.css +230 -0
  363. package/dist/styles/components/actions/popup-menu/popup-menu.css +326 -198
  364. package/dist/styles/components/actions/toolbar/toolbar.css +25 -3
  365. package/dist/styles/components/actions/toolbar-control-group/toolbar-control-group.css +67 -104
  366. package/dist/styles/components/actions/toolbar-text/toolbar-text.css +5 -18
  367. package/dist/styles/components/collections/list/list.css +37 -0
  368. package/dist/styles/components/feedback/badge/badge.css +18 -6
  369. package/dist/styles/components/feedback/progress-bar/progress-bar.css +168 -0
  370. package/dist/styles/components/feedback/progress-ring/progress-ring.css +91 -0
  371. package/dist/styles/components/feedback/state-banner/state-banner.css +18 -3
  372. package/dist/styles/components/forms/checkbox/checkbox.css +121 -0
  373. package/dist/styles/components/forms/choice-chips/choice-chips.css +58 -7
  374. package/dist/styles/components/forms/color-field/color-field.css +125 -0
  375. package/dist/styles/components/forms/color-picker/color-picker.css +331 -0
  376. package/dist/styles/components/forms/color-swatches/color-swatches.css +122 -0
  377. package/dist/styles/components/forms/combobox/combobox.css +7 -5
  378. package/dist/styles/components/forms/{composer/composer.css → message-composer/message-composer.css} +17 -33
  379. package/dist/styles/components/forms/radio-group/radio-group.css +156 -0
  380. package/dist/styles/{token-search-field.css → components/forms/search-field/search-field.css} +111 -102
  381. package/dist/styles/components/forms/select/select.css +370 -249
  382. package/dist/styles/components/forms/slider/slider.css +241 -0
  383. package/dist/styles/components/forms/switch/switch.css +132 -0
  384. package/dist/styles/components/forms/tag-field/tag-field.css +8 -0
  385. package/dist/styles/components/forms/text-field/text-field.css +193 -0
  386. package/dist/styles/components/layout/pane/pane.css +254 -0
  387. package/dist/styles/components/layout/resizable-region/resizable-region.css +3 -2
  388. package/dist/styles/components/layout/row/row.css +11 -0
  389. package/dist/styles/components/layout/split-view/split-view.css +25 -0
  390. package/dist/styles/components/layout/workbench/workbench.css +12 -4
  391. package/dist/styles/components/navigation/disclosure-arrow/disclosure-arrow.css +20 -0
  392. package/dist/styles/components/navigation/tab-bar/tab-bar.css +7 -7
  393. package/dist/styles/components/navigation/{app-tab/app-tab.css → tab-bar-item/tab-bar-item.css} +95 -90
  394. package/dist/styles/components/surfaces/disclosure/disclosure.css +98 -0
  395. package/dist/styles/components/surfaces/surface-scaffold/surface-scaffold.css +263 -116
  396. package/dist/styles/components/typography/text/text.css +14 -12
  397. package/dist/styles/disclosure-arrow.css +20 -0
  398. package/dist/styles/disclosure.css +98 -0
  399. package/dist/styles/foundation.css +6 -4
  400. package/dist/styles/list-detail-dialog.css +11 -0
  401. package/dist/styles/list.css +37 -0
  402. package/dist/styles/{composer.css → message-composer.css} +17 -33
  403. package/dist/styles/overlay-toast.css +149 -0
  404. package/dist/styles/overlay-tooltip.css +55 -0
  405. package/dist/styles/pane.css +254 -0
  406. package/dist/styles/popup-menu.css +326 -198
  407. package/dist/styles/progress-bar.css +168 -0
  408. package/dist/styles/progress-ring.css +91 -0
  409. package/dist/styles/radio-group.css +156 -0
  410. package/dist/styles/resizable-region.css +3 -2
  411. package/dist/styles/row.css +11 -0
  412. package/dist/styles/{components/forms/token-search-field/token-search-field.css → search-field.css} +111 -102
  413. package/dist/styles/select.css +370 -249
  414. package/dist/styles/slider.css +241 -0
  415. package/dist/styles/split-view.css +25 -0
  416. package/dist/styles/state-banner.css +18 -3
  417. package/dist/styles/styles.css +16 -5
  418. package/dist/styles/surface-scaffold.css +263 -116
  419. package/dist/styles/switch.css +132 -0
  420. package/dist/styles/{app-tab.css → tab-bar-item.css} +95 -90
  421. package/dist/styles/tab-bar.css +7 -7
  422. package/dist/styles/tag-field.css +8 -0
  423. package/dist/styles/text-field.css +193 -0
  424. package/dist/styles/text.css +14 -12
  425. package/dist/styles/toolbar-control-group.css +67 -104
  426. package/dist/styles/toolbar-text.css +5 -18
  427. package/dist/styles/toolbar.css +25 -3
  428. package/dist/styles/webawesome.css +9 -0
  429. package/dist/styles/workbench-dialog.css +10 -0
  430. package/dist/styles/workbench.css +12 -4
  431. package/dist/surface-scaffold-register.d.ts +7 -5
  432. package/dist/surface-scaffold-register.js +2 -246
  433. package/dist/surface-scaffold-register.js.map +1 -1
  434. package/dist/surface-scaffold.d.ts +70 -7
  435. package/dist/surface-scaffold.js +5 -1
  436. package/dist/switch.d.ts +38 -0
  437. package/dist/switch.js +4 -0
  438. package/dist/switch.js.map +1 -0
  439. package/dist/{app-tab.d.ts → tab-bar-item.d.ts} +11 -11
  440. package/dist/tab-bar-item.js +6 -0
  441. package/dist/tab-bar-item.js.map +1 -0
  442. package/dist/tab-bar.d.ts +3 -3
  443. package/dist/tab-bar.js +1 -1
  444. package/dist/tab-navigator.js +1 -1
  445. package/dist/tag-field.d.ts +52 -0
  446. package/dist/tag-field.js +6 -0
  447. package/dist/tag-field.js.map +1 -0
  448. package/dist/text-field.d.ts +83 -0
  449. package/dist/text-field.js +6 -0
  450. package/dist/text-field.js.map +1 -0
  451. package/dist/text.d.ts +6 -1
  452. package/dist/text.js +1 -1
  453. package/dist/{types-CVgIwSdq.d.ts → types-DmHWkSd6.d.ts} +19 -1
  454. package/dist/webawesome.d.ts +3 -0
  455. package/dist/wire-catalog.d.ts +8 -2
  456. package/dist/wire-catalog.js +16 -4
  457. package/dist/wire-catalog.js.map +1 -1
  458. package/dist/wire-checkboxes.d.ts +10 -0
  459. package/dist/wire-checkboxes.js +3 -0
  460. package/dist/{wire-composers.js.map → wire-checkboxes.js.map} +1 -1
  461. package/dist/wire-choice-chips.d.ts +17 -0
  462. package/dist/wire-choice-chips.js +4 -0
  463. package/dist/{wire-token-search-fields.js.map → wire-choice-chips.js.map} +1 -1
  464. package/dist/wire-color-fields.d.ts +33 -0
  465. package/dist/wire-color-fields.js +82 -0
  466. package/dist/wire-color-fields.js.map +1 -0
  467. package/dist/wire-color-pickers.d.ts +34 -0
  468. package/dist/wire-color-pickers.js +9 -0
  469. package/dist/wire-color-pickers.js.map +1 -0
  470. package/dist/wire-comboboxes.js +2 -1
  471. package/dist/wire-content-items.d.ts +5 -1
  472. package/dist/wire-content-items.js +84 -15
  473. package/dist/wire-content-items.js.map +1 -1
  474. package/dist/wire-file-pickers.d.ts +3 -2
  475. package/dist/wire-file-pickers.js +1 -1
  476. package/dist/{wire-composers.d.ts → wire-message-composers.d.ts} +5 -4
  477. package/dist/wire-message-composers.js +3 -0
  478. package/dist/wire-message-composers.js.map +1 -0
  479. package/dist/wire-overlay-sheets.js +1 -1
  480. package/dist/wire-pane-chrome.d.ts +21 -0
  481. package/dist/wire-pane-chrome.js +67 -0
  482. package/dist/wire-pane-chrome.js.map +1 -0
  483. package/dist/{wire-token-search-fields.d.ts → wire-search-fields.d.ts} +25 -25
  484. package/dist/wire-search-fields.js +6 -0
  485. package/dist/wire-search-fields.js.map +1 -0
  486. package/dist/wire-sliders.d.ts +12 -0
  487. package/dist/wire-sliders.js +31 -0
  488. package/dist/wire-sliders.js.map +1 -0
  489. package/dist/wire-tab-bars.js +1 -1
  490. package/dist/wire-tag-fields.d.ts +41 -0
  491. package/dist/wire-tag-fields.js +258 -0
  492. package/dist/wire-tag-fields.js.map +1 -0
  493. package/dist/wire-text-fields.d.ts +12 -0
  494. package/dist/wire-text-fields.js +3 -0
  495. package/dist/wire-text-fields.js.map +1 -0
  496. package/dist/workbench-dialog.d.ts +97 -0
  497. package/dist/workbench-dialog.js +124 -0
  498. package/dist/workbench-dialog.js.map +1 -0
  499. package/dist/workbench.d.ts +5 -0
  500. package/dist/workbench.js +1 -1
  501. package/docs/accessibility.md +181 -97
  502. package/docs/anchored-surface.md +8 -7
  503. package/docs/app-layouts.md +28 -0
  504. package/docs/catalog.md +14 -5
  505. package/docs/color-field.md +65 -0
  506. package/docs/color-picker.md +71 -0
  507. package/docs/color-swatches.md +46 -0
  508. package/docs/component-contract.md +31 -32
  509. package/docs/component-selection.md +232 -165
  510. package/docs/design/templates/button/emphasis-dark.svg +1 -0
  511. package/docs/design/templates/button/emphasis.svg +1 -0
  512. package/docs/design/templates/button/icons-dark.svg +1 -0
  513. package/docs/design/templates/button/icons.svg +1 -0
  514. package/docs/design/templates/button/pill-dark.svg +1 -0
  515. package/docs/design/templates/button/pill.svg +1 -0
  516. package/docs/design/templates/button/states-dark.svg +1 -0
  517. package/docs/design/templates/button/states.svg +1 -0
  518. package/docs/design/templates/button/toggles-dark.svg +1 -0
  519. package/docs/design/templates/button/toggles.svg +1 -0
  520. package/docs/design/templates/button/tones-dark.svg +1 -0
  521. package/docs/design/templates/button/tones.svg +1 -0
  522. package/docs/design/templates/button-dark.svg +1 -0
  523. package/docs/design/templates/button.svg +1 -0
  524. package/docs/design/templates/checkbox/compact-dark.svg +1 -0
  525. package/docs/design/templates/checkbox/compact.svg +1 -0
  526. package/docs/design/templates/checkbox/error-dark.svg +1 -0
  527. package/docs/design/templates/checkbox/error.svg +1 -0
  528. package/docs/design/templates/checkbox/mixed-dark.svg +1 -0
  529. package/docs/design/templates/checkbox/mixed.svg +1 -0
  530. package/docs/design/templates/checkbox/states-dark.svg +1 -0
  531. package/docs/design/templates/checkbox/states.svg +1 -0
  532. package/docs/design/templates/checkbox-dark.svg +1 -0
  533. package/docs/design/templates/checkbox.svg +1 -0
  534. package/docs/design/templates/choice-chips/color-palette-dark.svg +1 -1
  535. package/docs/design/templates/choice-chips/color-palette.svg +1 -1
  536. package/docs/design/templates/choice-chips/compact-icons-dark.svg +1 -1
  537. package/docs/design/templates/choice-chips/compact-icons.svg +1 -1
  538. package/docs/design/templates/choice-chips/multiple-dark.svg +1 -1
  539. package/docs/design/templates/choice-chips/multiple.svg +1 -1
  540. package/docs/design/templates/choice-chips-dark.svg +1 -1
  541. package/docs/design/templates/choice-chips.svg +1 -1
  542. package/docs/design/templates/color-field/compact-dark.svg +1 -0
  543. package/docs/design/templates/color-field/compact.svg +1 -0
  544. package/docs/design/templates/color-field/error-dark.svg +1 -0
  545. package/docs/design/templates/color-field/error.svg +1 -0
  546. package/docs/design/templates/color-field/hint-dark.svg +1 -0
  547. package/docs/design/templates/color-field/hint.svg +1 -0
  548. package/docs/design/templates/color-field-dark.svg +1 -0
  549. package/docs/design/templates/color-field.svg +1 -0
  550. package/docs/design/templates/color-picker/gray-dark.svg +1 -0
  551. package/docs/design/templates/color-picker/gray.svg +1 -0
  552. package/docs/design/templates/color-picker/rgb-dark.svg +1 -0
  553. package/docs/design/templates/color-picker/rgb.svg +1 -0
  554. package/docs/design/templates/color-picker-dark.svg +1 -0
  555. package/docs/design/templates/color-picker.svg +1 -0
  556. package/docs/design/templates/color-swatches/palette-dark.svg +1 -0
  557. package/docs/design/templates/color-swatches/palette.svg +1 -0
  558. package/docs/design/templates/color-swatches-dark.svg +1 -0
  559. package/docs/design/templates/color-swatches.svg +1 -0
  560. package/docs/design/templates/disclosure/framed-sunken-dark.svg +1 -0
  561. package/docs/design/templates/disclosure/framed-sunken.svg +1 -0
  562. package/docs/design/templates/disclosure/plain-dark.svg +1 -0
  563. package/docs/design/templates/disclosure/plain.svg +1 -0
  564. package/docs/design/templates/disclosure-dark.svg +1 -0
  565. package/docs/design/templates/disclosure.svg +1 -0
  566. package/docs/design/templates/list-header/size-l-dark.svg +1 -1
  567. package/docs/design/templates/list-header/size-l.svg +1 -1
  568. package/docs/design/templates/list-header/size-m-dark.svg +1 -1
  569. package/docs/design/templates/list-header/size-m.svg +1 -1
  570. package/docs/design/templates/list-header/size-xl-dark.svg +1 -1
  571. package/docs/design/templates/list-header/size-xl.svg +1 -1
  572. package/docs/design/templates/list-header-dark.svg +1 -1
  573. package/docs/design/templates/list-header.svg +1 -1
  574. package/docs/design/templates/message-composer/chat-dark.svg +1 -0
  575. package/docs/design/templates/message-composer/chat.svg +1 -0
  576. package/docs/design/templates/{composer → message-composer}/prompt-dark.svg +1 -1
  577. package/docs/design/templates/{composer → message-composer}/prompt.svg +1 -1
  578. package/docs/design/templates/message-composer-dark.svg +1 -0
  579. package/docs/design/templates/message-composer.svg +1 -0
  580. package/docs/design/templates/progress-bar/determinate-dark.svg +1 -0
  581. package/docs/design/templates/progress-bar/determinate.svg +1 -0
  582. package/docs/design/templates/progress-bar/tones-dark.svg +1 -0
  583. package/docs/design/templates/progress-bar/tones.svg +1 -0
  584. package/docs/design/templates/progress-bar-dark.svg +1 -0
  585. package/docs/design/templates/progress-bar.svg +1 -0
  586. package/docs/design/templates/progress-ring/sizes-dark.svg +1 -0
  587. package/docs/design/templates/progress-ring/sizes.svg +1 -0
  588. package/docs/design/templates/progress-ring/tones-dark.svg +1 -0
  589. package/docs/design/templates/progress-ring/tones.svg +1 -0
  590. package/docs/design/templates/progress-ring-dark.svg +1 -0
  591. package/docs/design/templates/progress-ring.svg +1 -0
  592. package/docs/design/templates/radio-group/horizontal-dark.svg +1 -0
  593. package/docs/design/templates/radio-group/horizontal.svg +1 -0
  594. package/docs/design/templates/radio-group/vertical-dark.svg +1 -0
  595. package/docs/design/templates/radio-group/vertical.svg +1 -0
  596. package/docs/design/templates/radio-group-dark.svg +1 -0
  597. package/docs/design/templates/radio-group.svg +1 -0
  598. package/docs/design/templates/segmented-control/equal-dark.svg +1 -1
  599. package/docs/design/templates/segmented-control/equal.svg +1 -1
  600. package/docs/design/templates/segmented-control/pill-small-dark.svg +1 -1
  601. package/docs/design/templates/segmented-control/pill-small.svg +1 -1
  602. package/docs/design/templates/segmented-control-dark.svg +1 -1
  603. package/docs/design/templates/segmented-control.svg +1 -1
  604. package/docs/design/templates/select/compact-dark.svg +1 -0
  605. package/docs/design/templates/select/compact.svg +1 -0
  606. package/docs/design/templates/select/form-dark.svg +1 -0
  607. package/docs/design/templates/select/form.svg +1 -0
  608. package/docs/design/templates/select/icons-dark.svg +1 -0
  609. package/docs/design/templates/select/icons.svg +1 -0
  610. package/docs/design/templates/select-dark.svg +1 -0
  611. package/docs/design/templates/select.svg +1 -0
  612. package/docs/design/templates/slider/compact-dark.svg +1 -0
  613. package/docs/design/templates/slider/compact.svg +1 -0
  614. package/docs/design/templates/slider/readout-dark.svg +1 -0
  615. package/docs/design/templates/slider/readout.svg +1 -0
  616. package/docs/design/templates/slider/ticks-dark.svg +1 -0
  617. package/docs/design/templates/slider/ticks.svg +1 -0
  618. package/docs/design/templates/slider-dark.svg +1 -0
  619. package/docs/design/templates/slider.svg +1 -0
  620. package/docs/design/templates/switch/compact-dark.svg +1 -0
  621. package/docs/design/templates/switch/compact.svg +1 -0
  622. package/docs/design/templates/switch/states-dark.svg +1 -0
  623. package/docs/design/templates/switch/states.svg +1 -0
  624. package/docs/design/templates/switch-dark.svg +1 -0
  625. package/docs/design/templates/switch.svg +1 -0
  626. package/docs/design/templates/tag-field/error-dark.svg +1 -0
  627. package/docs/design/templates/tag-field/error.svg +1 -0
  628. package/docs/design/templates/tag-field/tags-dark.svg +1 -0
  629. package/docs/design/templates/tag-field/tags.svg +1 -0
  630. package/docs/design/templates/tag-field-dark.svg +1 -0
  631. package/docs/design/templates/tag-field.svg +1 -0
  632. package/docs/design/templates/text-field/compact-dark.svg +1 -0
  633. package/docs/design/templates/text-field/compact.svg +1 -0
  634. package/docs/design/templates/text-field/error-dark.svg +1 -0
  635. package/docs/design/templates/text-field/error.svg +1 -0
  636. package/docs/design/templates/text-field/labeled-dark.svg +1 -0
  637. package/docs/design/templates/text-field/labeled.svg +1 -0
  638. package/docs/design/templates/text-field/multiline-dark.svg +1 -0
  639. package/docs/design/templates/text-field/multiline.svg +1 -0
  640. package/docs/design/templates/text-field/search-dark.svg +1 -0
  641. package/docs/design/templates/text-field/search.svg +1 -0
  642. package/docs/design/templates/text-field-dark.svg +1 -0
  643. package/docs/design/templates/text-field.svg +1 -0
  644. package/docs/design/templates/toolbar/title-and-actions-dark.svg +1 -1
  645. package/docs/design/templates/toolbar/title-and-actions.svg +1 -1
  646. package/docs/design/templates/toolbar/width-visibility-320-dark.svg +1 -1
  647. package/docs/design/templates/toolbar/width-visibility-320.svg +1 -1
  648. package/docs/design/templates/toolbar/width-visibility-600-dark.svg +1 -1
  649. package/docs/design/templates/toolbar/width-visibility-600.svg +1 -1
  650. package/docs/design/templates/toolbar-dark.svg +1 -1
  651. package/docs/design/templates/toolbar.svg +1 -1
  652. package/docs/design/templates/value-table/details-dark.svg +1 -1
  653. package/docs/design/templates/value-table/details.svg +1 -1
  654. package/docs/design/templates/value-table-dark.svg +1 -1
  655. package/docs/design/templates/value-table.svg +1 -1
  656. package/docs/design/templates.md +19 -6
  657. package/docs/design-philosophy.md +6 -6
  658. package/docs/disclosure.md +63 -0
  659. package/docs/examples/component-catalog-extension.json +2 -2
  660. package/docs/layout.md +16 -7
  661. package/docs/list-detail-dialog.md +96 -0
  662. package/docs/manual-test-plan.md +1 -1
  663. package/docs/{composer.md → message-composer.md} +41 -28
  664. package/docs/overlay-toast.md +62 -0
  665. package/docs/overlay-tooltip.md +53 -0
  666. package/docs/progress.md +62 -0
  667. package/docs/recipes.md +15 -21
  668. package/docs/slider.md +64 -0
  669. package/docs/surface-scaffold.md +155 -88
  670. package/docs/tag-field.md +66 -0
  671. package/docs/type-contracts.md +8 -8
  672. package/docs/ui-analyzer.md +1 -1
  673. package/docs/ui-doctor.md +11 -6
  674. package/docs/ux-demo.md +6 -6
  675. package/docs/webawesome-migration.md +80 -0
  676. package/docs/webawesome-theme.md +57 -35
  677. package/docs/workbench-dialog.md +85 -0
  678. package/docs/workbench.md +10 -6
  679. package/docs/writing.md +10 -8
  680. package/doctor/copy-capitalization-checks.mjs +18 -9
  681. package/llms.txt +131 -57
  682. package/package.json +156 -39
  683. package/ux-demo/recipes/composer-form.tsx +18 -19
  684. package/ux-demo/recipes/list-detail-dialog.tsx +55 -162
  685. package/ux-demo/recipes/mount-recipe.ts +7 -6
  686. package/ux-demo/recipes/types.ts +1 -0
  687. package/ai/components/icon-button.md +0 -82
  688. package/ai/components/icon-toggle-button.md +0 -80
  689. package/ai/components/token-search-field.md +0 -107
  690. package/dist/app-tab.js +0 -6
  691. package/dist/app-tab.js.map +0 -1
  692. package/dist/browser/app-tab.js +0 -4
  693. package/dist/browser/composer.js +0 -4
  694. package/dist/browser/icon-toggle-button.js +0 -4
  695. package/dist/browser/token-search-field.js +0 -4
  696. package/dist/chunk-2MSPNRWJ.js.map +0 -1
  697. package/dist/chunk-7IUEBNCO.js.map +0 -1
  698. package/dist/chunk-AV7CPAPT.js +0 -82
  699. package/dist/chunk-AV7CPAPT.js.map +0 -1
  700. package/dist/chunk-BYFTHA4I.js.map +0 -1
  701. package/dist/chunk-CA7LNX3J.js +0 -44
  702. package/dist/chunk-CA7LNX3J.js.map +0 -1
  703. package/dist/chunk-ELCMSQNJ.js.map +0 -1
  704. package/dist/chunk-ETCWQLJV.js.map +0 -1
  705. package/dist/chunk-FDZNYD4C.js.map +0 -1
  706. package/dist/chunk-FR76ZJQC.js +0 -90
  707. package/dist/chunk-FR76ZJQC.js.map +0 -1
  708. package/dist/chunk-HQZYKJ56.js.map +0 -1
  709. package/dist/chunk-HZPHCSCS.js.map +0 -1
  710. package/dist/chunk-IM3GKYOG.js.map +0 -1
  711. package/dist/chunk-JOR5LGYE.js.map +0 -1
  712. package/dist/chunk-K4AT3V3J.js.map +0 -1
  713. package/dist/chunk-LL45C7BB.js.map +0 -1
  714. package/dist/chunk-LOSRXZAH.js.map +0 -1
  715. package/dist/chunk-LPHU44S3.js.map +0 -1
  716. package/dist/chunk-M5KZ26VV.js.map +0 -1
  717. package/dist/chunk-MF6ZUUJZ.js.map +0 -1
  718. package/dist/chunk-MXNIVEVL.js.map +0 -1
  719. package/dist/chunk-NS762OVM.js +0 -222
  720. package/dist/chunk-NS762OVM.js.map +0 -1
  721. package/dist/chunk-PKL6QJKK.js.map +0 -1
  722. package/dist/chunk-QTSMHH5J.js.map +0 -1
  723. package/dist/chunk-TDMHA7C3.js.map +0 -1
  724. package/dist/chunk-TGLUDQP2.js.map +0 -1
  725. package/dist/chunk-U6QYTMDB.js.map +0 -1
  726. package/dist/chunk-VFYO3UGZ.js +0 -45
  727. package/dist/chunk-VFYO3UGZ.js.map +0 -1
  728. package/dist/chunk-W4IK7AWD.js.map +0 -1
  729. package/dist/chunk-YBWQR2OK.js.map +0 -1
  730. package/dist/composer.js +0 -5
  731. package/dist/composer.js.map +0 -1
  732. package/dist/icon-button.d.ts +0 -46
  733. package/dist/icon-button.js +0 -6
  734. package/dist/icon-button.js.map +0 -1
  735. package/dist/icon-toggle-button.d.ts +0 -42
  736. package/dist/icon-toggle-button.js +0 -6
  737. package/dist/icon-toggle-button.js.map +0 -1
  738. package/dist/styles/components/actions/icon-button/icon-button.css +0 -22
  739. package/dist/styles/components/actions/icon-toggle-button/icon-toggle-button.css +0 -83
  740. package/dist/styles/icon-button.css +0 -22
  741. package/dist/styles/icon-toggle-button.css +0 -83
  742. package/dist/token-search-field.d.ts +0 -3
  743. package/dist/token-search-field.js +0 -5
  744. package/dist/token-search-field.js.map +0 -1
  745. package/dist/token-search-model.d.ts +0 -3
  746. package/dist/token-search-model.js +0 -3
  747. package/dist/token-search-model.js.map +0 -1
  748. package/dist/wire-composers.js +0 -3
  749. package/dist/wire-token-search-fields.js +0 -6
  750. package/docs/design/templates/composer/chat-dark.svg +0 -1
  751. package/docs/design/templates/composer/chat.svg +0 -1
  752. package/docs/design/templates/composer-dark.svg +0 -1
  753. package/docs/design/templates/composer.svg +0 -1
  754. /package/docs/design/templates/{token-search-field → search-field}/empty-dark.svg +0 -0
  755. /package/docs/design/templates/{token-search-field → search-field}/empty.svg +0 -0
  756. /package/docs/design/templates/{token-search-field → search-field}/tokens-dark.svg +0 -0
  757. /package/docs/design/templates/{token-search-field → search-field}/tokens.svg +0 -0
  758. /package/docs/design/templates/{token-search-field-dark.svg → search-field-dark.svg} +0 -0
  759. /package/docs/design/templates/{token-search-field.svg → search-field.svg} +0 -0
@@ -1,11 +1,11 @@
1
- import { readTokenSearchField, placeTokenSearchCaret } from './chunk-MF6ZUUJZ.js';
1
+ import { readSearchField, placeSearchFieldCaret } from './chunk-VEME3D7K.js';
2
2
  import { autoUpdate, computePosition, offset, flip, shift, size } from '@floating-ui/dom';
3
3
  import { delegate, delegateCapture, signal } from 'kerfjs';
4
4
 
5
5
  function editorFromEvent(root, event) {
6
6
  const target = event.target;
7
7
  if (!(target instanceof Element)) return;
8
- const editor = target.closest("[data-token-search-editor]");
8
+ const editor = target.closest("[data-search-field-editor]");
9
9
  return editor && root.contains(editor) ? editor : void 0;
10
10
  }
11
11
  function caretQueryOffset(editor) {
@@ -18,15 +18,15 @@ function caretQueryOffset(editor) {
18
18
  prefixRange.setEnd(selectionRange.startContainer, selectionRange.startOffset);
19
19
  const prefix = editor.ownerDocument.createElement("div");
20
20
  prefix.append(prefixRange.cloneContents());
21
- return readTokenSearchField(prefix).query.length;
21
+ return readSearchField(prefix).query.length;
22
22
  }
23
23
  function replacementEditor(root, id) {
24
24
  return [
25
- ...root.querySelectorAll("[data-token-search-editor]")
26
- ].find((editor) => editor.dataset.tokenSearchEditor === id);
25
+ ...root.querySelectorAll("[data-search-field-editor]")
26
+ ].find((editor) => editor.dataset.searchFieldEditor === id);
27
27
  }
28
28
  function editorIsEmpty(editor) {
29
- const value = readTokenSearchField(editor);
29
+ const value = readSearchField(editor);
30
30
  return value.query.length === 0 && value.tokens.length === 0;
31
31
  }
32
32
  function selectionCoversEditor(editor) {
@@ -35,14 +35,14 @@ function selectionCoversEditor(editor) {
35
35
  return false;
36
36
  const selectedHost = editor.ownerDocument.createElement("div");
37
37
  selectedHost.append(selected.cloneContents());
38
- const fullValue = readTokenSearchField(editor);
39
- const selectedValue = readTokenSearchField(selectedHost);
38
+ const fullValue = readSearchField(editor);
39
+ const selectedValue = readSearchField(selectedHost);
40
40
  return selectedValue.query === fullValue.query && selectedValue.tokens.length === fullValue.tokens.length && selectedValue.tokens.every(
41
41
  (token, index) => token.value === fullValue.tokens[index]?.value
42
42
  );
43
43
  }
44
- var TOKEN_SELECTOR = '[data-component="token-search-token"]';
45
- var TEXT_SELECTOR = "[data-token-search-text]";
44
+ var TOKEN_SELECTOR = '[data-component="search-field-token"]';
45
+ var TEXT_SELECTOR = "[data-search-field-text]";
46
46
  var stripZwsp = (text) => text.replaceAll("\u200B", "");
47
47
  function normalizeEmptiedEditor(editor, selectedAll = false) {
48
48
  const lineBreaks = editor.querySelectorAll("br");
@@ -52,7 +52,7 @@ function normalizeEmptiedEditor(editor, selectedAll = false) {
52
52
  if (!selectedAll && stripZwsp(editor.textContent ?? "") !== "") return;
53
53
  const doc = editor.ownerDocument;
54
54
  const span = doc.createElement("span");
55
- span.setAttribute("data-token-search-text", "");
55
+ span.setAttribute("data-search-field-text", "");
56
56
  span.setAttribute("data-empty", "true");
57
57
  editor.replaceChildren(span);
58
58
  if (doc.activeElement !== editor) return;
@@ -121,7 +121,7 @@ function placeCaretAfterToken(editor, chip) {
121
121
  selection.addRange(range);
122
122
  editor.focus({ preventScroll: true });
123
123
  }
124
- function wireTokenSearchFields(root, {
124
+ function wireSearchFields(root, {
125
125
  models = {},
126
126
  onSubmit,
127
127
  onEdit,
@@ -149,7 +149,7 @@ function wireTokenSearchFields(root, {
149
149
  const positionedSuggestions = /* @__PURE__ */ new Map();
150
150
  const syncSuggestions = () => {
151
151
  const current = new Set(
152
- root.querySelectorAll(".kui-token-search__suggestions")
152
+ root.querySelectorAll(".kui-search-field__suggestions")
153
153
  );
154
154
  for (const [popup, stop] of positionedSuggestions) {
155
155
  if (current.has(popup)) continue;
@@ -159,7 +159,7 @@ function wireTokenSearchFields(root, {
159
159
  for (const popup of current) {
160
160
  if (positionedSuggestions.has(popup)) continue;
161
161
  const field = popup.closest(
162
- '[data-component="token-search-field"]'
162
+ '[data-component="search-field"]'
163
163
  );
164
164
  if (!field) continue;
165
165
  let active = true;
@@ -217,10 +217,26 @@ function wireTokenSearchFields(root, {
217
217
  };
218
218
  const suggestionsObserver = new MutationObserver(syncSuggestions);
219
219
  suggestionsObserver.observe(root, { childList: true, subtree: true });
220
+ const placeholderObserver = new MutationObserver((records) => {
221
+ for (const record of records) {
222
+ const field = record.target;
223
+ if (field.dataset.placeholderVisible !== "true") continue;
224
+ const editor = field.querySelector(
225
+ ":scope > .kui-search-field__editor"
226
+ );
227
+ if (editor && (editor.querySelector(TOKEN_SELECTOR) || readSearchField(editor).query.length > 0))
228
+ field.dataset.placeholderVisible = "false";
229
+ }
230
+ });
231
+ placeholderObserver.observe(root, {
232
+ attributes: true,
233
+ attributeFilter: ["data-placeholder-visible"],
234
+ subtree: true
235
+ });
220
236
  syncSuggestions();
221
237
  const isExemptTarget = (element) => {
222
238
  if (!element) return false;
223
- if (element.closest("[data-token-search-keep-open]")) return true;
239
+ if (element.closest("[data-search-field-keep-open]")) return true;
224
240
  return keepOpenOn ? keepOpenOn(element) : false;
225
241
  };
226
242
  const trackPointerActivation = (event) => {
@@ -291,7 +307,7 @@ function wireTokenSearchFields(root, {
291
307
  const restore = () => {
292
308
  if (disposed) return stop();
293
309
  const field = root.querySelector(
294
- `[data-component="token-search-field"][data-token-search-id="${CSS.escape(id)}"]`
310
+ `[data-component="search-field"][data-search-field-id="${CSS.escape(id)}"]`
295
311
  );
296
312
  const target = field?.querySelector(selector);
297
313
  if (!field || !target) return;
@@ -299,8 +315,8 @@ function wireTokenSearchFields(root, {
299
315
  if (guardMovedFocus && active !== field.ownerDocument.body && active !== target && !field.contains(active))
300
316
  return stop();
301
317
  stop();
302
- if (target.matches("[data-token-search-editor]"))
303
- placeTokenSearchCaret(target);
318
+ if (target.matches("[data-search-field-editor]"))
319
+ placeSearchFieldCaret(target);
304
320
  else target.focus();
305
321
  };
306
322
  const observer = new MutationObserver(restore);
@@ -315,24 +331,24 @@ function wireTokenSearchFields(root, {
315
331
  };
316
332
  const openField = (id) => {
317
333
  setExpanded(id, true);
318
- if (manageFocus) focusAfterRender(id, "[data-token-search-editor]");
334
+ if (manageFocus) focusAfterRender(id, "[data-search-field-editor]");
319
335
  };
320
336
  const closeField = (id) => {
321
337
  setExpanded(id, false);
322
- if (manageFocus) focusAfterRender(id, ".kui-token-search__expand");
338
+ if (manageFocus) focusAfterRender(id, ".kui-search-field__expand");
323
339
  };
324
340
  const clearing = /* @__PURE__ */ new Map();
325
341
  const focusAtClearPress = /* @__PURE__ */ new WeakMap();
326
342
  const pending = /* @__PURE__ */ new Map();
327
343
  const deleting = /* @__PURE__ */ new Map();
328
344
  const selectAllIntents = /* @__PURE__ */ new WeakSet();
329
- const intentId = (editor) => editor.dataset.tokenSearchEditor;
345
+ const intentId = (editor) => editor.dataset.searchFieldEditor;
330
346
  const captureDeletion = (editor, selectedAll) => {
331
347
  if (editor.ownerDocument.activeElement !== editor) return;
332
348
  const field = editor.closest(
333
- '[data-component="token-search-field"]'
349
+ '[data-component="search-field"]'
334
350
  );
335
- const id = field?.dataset.tokenSearchId;
351
+ const id = field?.dataset.searchFieldId;
336
352
  const offset2 = selectedAll ? 0 : caretQueryOffset(editor);
337
353
  if (!id || offset2 === void 0 || field?.dataset.disabled === "true")
338
354
  return;
@@ -340,7 +356,7 @@ function wireTokenSearchFields(root, {
340
356
  id,
341
357
  offset: offset2,
342
358
  tokenCount: editor.querySelectorAll(
343
- '[data-component="token-search-token"]'
359
+ '[data-component="search-field-token"]'
344
360
  ).length,
345
361
  selectedAll: selectedAll ?? selectionCoversEditor(editor)
346
362
  });
@@ -364,7 +380,7 @@ function wireTokenSearchFields(root, {
364
380
  const active = replacement.ownerDocument.activeElement;
365
381
  if (active !== editor && active !== replacement && active !== replacement.ownerDocument.body)
366
382
  return;
367
- placeTokenSearchCaret(
383
+ placeSearchFieldCaret(
368
384
  replacement,
369
385
  typeof deletion.offset === "number" ? deletion.offset : deletion.offset(replacement)
370
386
  );
@@ -378,12 +394,12 @@ function wireTokenSearchFields(root, {
378
394
  if (editor.ownerDocument.activeElement !== editor) return;
379
395
  const offset2 = caretQueryOffset(editor);
380
396
  if (offset2 === void 0) return;
381
- const before = readTokenSearchField(editor).query.length;
397
+ const before = readSearchField(editor).query.length;
382
398
  restoreDeletion(editor, {
383
399
  id,
384
400
  offset: (replacement) => {
385
401
  if (offset2 >= before) return void 0;
386
- const after = readTokenSearchField(replacement).query.length;
402
+ const after = readSearchField(replacement).query.length;
387
403
  return Math.min(after, Math.max(0, offset2 - (before - after)));
388
404
  }
389
405
  });
@@ -400,27 +416,27 @@ function wireTokenSearchFields(root, {
400
416
  const restore = deletion && (deletion.selectedAll || editor.querySelectorAll(TOKEN_SELECTOR).length < deletion.tokenCount);
401
417
  if (restore) {
402
418
  restoreDeletion(editor, deletion);
403
- if (manageFocus && editor.closest('[data-component="token-search-field"]')?.dataset.collapsible === "true")
419
+ if (manageFocus && editor.closest('[data-component="search-field"]')?.dataset.collapsible === "true")
404
420
  setExpanded(editorId, true);
405
421
  }
406
422
  const field = editor.closest(
407
- '[data-component="token-search-field"]'
423
+ '[data-component="search-field"]'
408
424
  );
409
425
  if (field)
410
426
  field.dataset.placeholderVisible = String(
411
- !editor.querySelector(TOKEN_SELECTOR) && readTokenSearchField(editor).query.length === 0
427
+ !editor.querySelector(TOKEN_SELECTOR) && readSearchField(editor).query.length === 0
412
428
  );
413
- const id = field?.dataset.tokenSearchId;
429
+ const id = field?.dataset.searchFieldId;
414
430
  if (id && field?.dataset.disabled !== "true") {
415
431
  const model = models[id];
416
432
  if (model) {
417
433
  const before = editor.querySelectorAll(TOKEN_SELECTOR).length;
418
- const current = readTokenSearchField(editor, model.state.value.tokens);
434
+ const current = readSearchField(editor, model.state.value.tokens);
419
435
  const input = event;
420
436
  const commit = typeof input.data === "string" && /\s$/.test(input.data) || input.inputType === "insertFromPaste" && /\s$/.test(current.query);
421
437
  model.edit(current, commit);
422
438
  if (model.state.value.tokens.length > before)
423
- focusAfterRender(id, "[data-token-search-editor]", true);
439
+ focusAfterRender(id, "[data-search-field-editor]", true);
424
440
  }
425
441
  if (onEdit) {
426
442
  if (!restore && !model && !deleting.has(id)) handOffAppEdit(editor, id);
@@ -477,13 +493,13 @@ function wireTokenSearchFields(root, {
477
493
  delegate(
478
494
  root,
479
495
  "click",
480
- "[data-token-search-form-label]",
496
+ "[data-search-field-form-label]",
481
497
  (_event, label) => {
482
498
  const field = label.parentElement?.querySelector(
483
- '[data-component="token-search-field"]'
499
+ '[data-component="search-field"]'
484
500
  );
485
501
  if (field?.dataset.disabled === "true") return;
486
- field?.querySelector("[data-token-search-editor]")?.focus();
502
+ field?.querySelector("[data-search-field-editor]")?.focus();
487
503
  }
488
504
  )
489
505
  );
@@ -491,30 +507,28 @@ function wireTokenSearchFields(root, {
491
507
  delegate(
492
508
  root,
493
509
  "keydown",
494
- "[data-token-search-editor]",
510
+ "[data-search-field-editor]",
495
511
  (event, element) => {
496
512
  const keyboardEvent = event;
497
513
  const editor = element;
498
514
  if (keyboardEvent.isComposing) return;
499
515
  const field = editor.closest(
500
- '[data-component="token-search-field"]'
516
+ '[data-component="search-field"]'
501
517
  );
502
- const id = field?.dataset.tokenSearchId;
518
+ const id = field?.dataset.searchFieldId;
503
519
  if (!id || field?.dataset.disabled === "true") return;
504
- const keyboardForField = keyboard !== false || Boolean(models[id]);
520
+ const keyboardForField = !editor.closest('[data-component="tag-field"]') && (keyboard !== false || Boolean(models[id]));
505
521
  if (keyboardEvent.key === "Enter") {
506
522
  keyboardEvent.preventDefault();
507
523
  const model = models[id];
508
524
  if (model)
509
- model.submit(
510
- readTokenSearchField(editor, model.state.value.tokens)
511
- );
525
+ model.submit(readSearchField(editor, model.state.value.tokens));
512
526
  onSubmit?.({ id, editor });
513
527
  return;
514
528
  }
515
529
  if (models[id] && keyboardEvent.key === "ArrowDown") {
516
530
  const first = field.querySelector(
517
- "[data-token-search-suggestion]"
531
+ "[data-search-field-suggestion]"
518
532
  );
519
533
  if (first) {
520
534
  keyboardEvent.preventDefault();
@@ -561,19 +575,19 @@ function wireTokenSearchFields(root, {
561
575
  delegate(
562
576
  root,
563
577
  "keydown",
564
- "[data-token-search-suggestion]",
578
+ "[data-search-field-suggestion]",
565
579
  (event, element) => {
566
580
  const keyboard2 = event;
567
581
  const button = element;
568
582
  const buttons = [
569
583
  ...button.parentElement.querySelectorAll(
570
- "[data-token-search-suggestion]"
584
+ "[data-search-field-suggestion]"
571
585
  )
572
586
  ];
573
587
  const index = buttons.indexOf(button);
574
588
  if (keyboard2.key === "Escape") {
575
589
  keyboard2.preventDefault();
576
- button.closest('[data-component="token-search-field"]')?.querySelector("[data-token-search-editor]")?.focus();
590
+ button.closest('[data-component="search-field"]')?.querySelector("[data-search-field-editor]")?.focus();
577
591
  } else if (keyboard2.key === "ArrowDown" || keyboard2.key === "ArrowUp") {
578
592
  keyboard2.preventDefault();
579
593
  buttons[(index + (keyboard2.key === "ArrowDown" ? 1 : buttons.length - 1)) % buttons.length]?.focus();
@@ -583,53 +597,53 @@ function wireTokenSearchFields(root, {
583
597
  delegate(
584
598
  root,
585
599
  "click",
586
- "[data-token-search-suggestion]",
600
+ "[data-search-field-suggestion]",
587
601
  (_event, element) => {
588
602
  const field = element.closest(
589
- '[data-component="token-search-field"]'
603
+ '[data-component="search-field"]'
590
604
  );
591
- const id = field?.dataset.tokenSearchId;
592
- const value = element.dataset.tokenSearchSuggestion;
605
+ const id = field?.dataset.searchFieldId;
606
+ const value = element.dataset.searchFieldSuggestion;
593
607
  if (!id || !value || field?.dataset.disabled === "true") return;
594
608
  models[id]?.choose(value);
595
- focusAfterRender(id, "[data-token-search-editor]", true);
609
+ focusAfterRender(id, "[data-search-field-editor]", true);
596
610
  }
597
611
  ),
598
612
  delegate(
599
613
  root,
600
614
  "click",
601
- ".kui-token-search__token-edit",
615
+ ".kui-search-field__token-edit",
602
616
  (_event, element) => {
603
617
  const field = element.closest(
604
- '[data-component="token-search-field"]'
618
+ '[data-component="search-field"]'
605
619
  );
606
- const id = field?.dataset.tokenSearchId;
620
+ const id = field?.dataset.searchFieldId;
607
621
  const value = element.dataset.tokenValue;
608
622
  if (!id || !value || field?.dataset.disabled === "true" || !models[id])
609
623
  return;
610
624
  models[id].expandToken(value);
611
- focusAfterRender(id, "[data-token-search-editor]", true);
625
+ focusAfterRender(id, "[data-search-field-editor]", true);
612
626
  }
613
627
  ),
614
628
  delegate(
615
629
  root,
616
630
  "click",
617
- ".kui-token-search__token-remove",
631
+ ".kui-search-field__token-remove",
618
632
  (_event, element) => {
619
633
  const field = element.closest(
620
- '[data-component="token-search-field"]'
634
+ '[data-component="search-field"]'
621
635
  );
622
- const id = field?.dataset.tokenSearchId;
636
+ const id = field?.dataset.searchFieldId;
623
637
  const value = element.dataset.tokenValue;
624
638
  if (id && value && field?.dataset.disabled !== "true")
625
639
  models[id]?.remove(value);
626
640
  }
627
641
  ),
628
- delegate(root, "click", ".kui-token-search__clear", (_event, element) => {
642
+ delegate(root, "click", ".kui-search-field__clear", (_event, element) => {
629
643
  const field = element.closest(
630
- '[data-component="token-search-field"]'
644
+ '[data-component="search-field"]'
631
645
  );
632
- const id = field?.dataset.tokenSearchId;
646
+ const id = field?.dataset.searchFieldId;
633
647
  if (id && field?.dataset.disabled !== "true") models[id]?.clear();
634
648
  })
635
649
  );
@@ -639,12 +653,12 @@ function wireTokenSearchFields(root, {
639
653
  delegate(
640
654
  root,
641
655
  "click",
642
- ".kui-token-search__expand",
656
+ ".kui-search-field__expand",
643
657
  (_event, element) => {
644
658
  const field = element.closest(
645
- '[data-component="token-search-field"]'
659
+ '[data-component="search-field"]'
646
660
  );
647
- const id = field?.dataset.tokenSearchId;
661
+ const id = field?.dataset.searchFieldId;
648
662
  if (id && field?.dataset.disabled !== "true") openField(id);
649
663
  }
650
664
  )
@@ -658,11 +672,9 @@ function wireTokenSearchFields(root, {
658
672
  delegateCapture(
659
673
  root,
660
674
  "pointerdown",
661
- ".kui-token-search__clear",
675
+ ".kui-search-field__clear",
662
676
  (_event, element) => {
663
- const field = element.closest(
664
- '[data-component="token-search-field"]'
665
- );
677
+ const field = element.closest('[data-component="search-field"]');
666
678
  focusAtClearPress.set(
667
679
  element,
668
680
  !!field?.contains(root.ownerDocument.activeElement)
@@ -672,12 +684,12 @@ function wireTokenSearchFields(root, {
672
684
  delegateCapture(
673
685
  root,
674
686
  "click",
675
- ".kui-token-search__clear",
687
+ ".kui-search-field__clear",
676
688
  (_event, element) => {
677
689
  const field = element.closest(
678
- '[data-component="token-search-field"]'
690
+ '[data-component="search-field"]'
679
691
  );
680
- const id = field?.dataset.tokenSearchId;
692
+ const id = field?.dataset.searchFieldId;
681
693
  if (!id || field.dataset.collapsible !== "true" && !models[id] || field.dataset.disabled === "true")
682
694
  return;
683
695
  const editor = replacementEditor(root, id);
@@ -704,7 +716,7 @@ function wireTokenSearchFields(root, {
704
716
  if (!replacement || replacement === editor) return;
705
717
  stop();
706
718
  if (!focusedBefore) collapseIfEmpty();
707
- else if (ownsFocus(replacement)) placeTokenSearchCaret(replacement);
719
+ else if (ownsFocus(replacement)) placeSearchFieldCaret(replacement);
708
720
  });
709
721
  observer.observe(root, { childList: true, subtree: true });
710
722
  const timeout = view().setTimeout(() => {
@@ -715,7 +727,7 @@ function wireTokenSearchFields(root, {
715
727
  if (!focusedBefore) return;
716
728
  if (field.dataset.collapsible === "true") setExpanded(id, true);
717
729
  const current = replacementEditor(root, id);
718
- if (current && ownsFocus(current)) placeTokenSearchCaret(current);
730
+ if (current && ownsFocus(current)) placeSearchFieldCaret(current);
719
731
  }
720
732
  )
721
733
  );
@@ -767,7 +779,7 @@ function wireTokenSearchFields(root, {
767
779
  delegate(
768
780
  root,
769
781
  "mousedown",
770
- '[data-component="token-search-field"][data-collapsible="true"] button',
782
+ '[data-component="search-field"][data-collapsible="true"] button',
771
783
  (event) => {
772
784
  event.preventDefault();
773
785
  }
@@ -777,13 +789,13 @@ function wireTokenSearchFields(root, {
777
789
  delegate(
778
790
  root,
779
791
  "focusout",
780
- "[data-token-search-editor]",
792
+ "[data-search-field-editor]",
781
793
  (event, element) => {
782
794
  const editor = element;
783
795
  const field = editor.closest(
784
- '[data-component="token-search-field"]'
796
+ '[data-component="search-field"]'
785
797
  );
786
- const id = field?.dataset.tokenSearchId;
798
+ const id = field?.dataset.searchFieldId;
787
799
  if (!id || field?.dataset.collapsible !== "true" || field.dataset.disabled === "true")
788
800
  return;
789
801
  const relatedTarget = event.relatedTarget;
@@ -813,6 +825,7 @@ function wireTokenSearchFields(root, {
813
825
  view().removeEventListener("click", flushAfterClickDispatch);
814
826
  pendingPointerBlurCollapses.clear();
815
827
  suggestionsObserver.disconnect();
828
+ placeholderObserver.disconnect();
816
829
  for (const stop of positionedSuggestions.values()) stop();
817
830
  positionedSuggestions.clear();
818
831
  for (const stop of focusing.values()) stop();
@@ -830,6 +843,6 @@ function wireTokenSearchFields(root, {
830
843
  return handle;
831
844
  }
832
845
 
833
- export { wireTokenSearchFields };
846
+ export { wireSearchFields };
834
847
 
835
- //# sourceMappingURL=chunk-PKL6QJKK.js.map
848
+ //# sourceMappingURL=chunk-UMNHJSIO.js.map