@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
@@ -0,0 +1,68 @@
1
+ import { filterDataAttributes } from './chunk-KH4KEMSP.js';
2
+ import { jsxs, jsx } from 'kerfjs/jsx-runtime';
3
+
4
+ var PROGRESS_BAR_PROTECTED = /* @__PURE__ */ new Set([
5
+ "data-component",
6
+ "data-tone",
7
+ "data-size",
8
+ "data-indeterminate"
9
+ ]);
10
+ function percent(value, max) {
11
+ return `${Math.round(value / max * 100)}%`;
12
+ }
13
+ function ProgressBar({
14
+ value,
15
+ max = 1,
16
+ valueText,
17
+ showValue = false,
18
+ label,
19
+ ariaLabel,
20
+ tone = "brand",
21
+ size = "default",
22
+ id,
23
+ rootAttributes = {},
24
+ className = "",
25
+ slot
26
+ }) {
27
+ if (!Number.isFinite(max) || max <= 0)
28
+ throw new RangeError("ProgressBar max must be a positive number.");
29
+ if (value !== void 0 && (!Number.isFinite(value) || value < 0))
30
+ throw new RangeError("ProgressBar value must be zero or more.");
31
+ const clamped = value === void 0 ? void 0 : Math.min(value, max);
32
+ const labelId = id === void 0 ? void 0 : `${id}-label`;
33
+ const shownValue = showValue && (valueText ?? (clamped === void 0 ? void 0 : percent(clamped, max)));
34
+ return /* @__PURE__ */ jsxs(
35
+ "div",
36
+ {
37
+ ...filterDataAttributes(rootAttributes, PROGRESS_BAR_PROTECTED),
38
+ id,
39
+ class: `kui-progress-bar ${className}`.trim(),
40
+ "data-component": "progress-bar",
41
+ "data-tone": tone,
42
+ "data-size": size,
43
+ "data-indeterminate": clamped === void 0 ? "" : void 0,
44
+ slot,
45
+ children: [
46
+ label === void 0 && !shownValue ? null : /* @__PURE__ */ jsxs("div", { class: "kui-progress-bar__header", children: [
47
+ label === void 0 ? null : /* @__PURE__ */ jsx("span", { class: "kui-progress-bar__label", id: labelId, children: label }),
48
+ shownValue ? /* @__PURE__ */ jsx("span", { class: "kui-progress-bar__value", "aria-hidden": "true", children: shownValue }) : null
49
+ ] }),
50
+ /* @__PURE__ */ jsx(
51
+ "progress",
52
+ {
53
+ class: "kui-progress-bar__track",
54
+ value: clamped,
55
+ max,
56
+ "aria-label": labelId === void 0 ? label ?? ariaLabel : void 0,
57
+ "aria-labelledby": labelId,
58
+ "aria-valuetext": valueText
59
+ }
60
+ )
61
+ ]
62
+ }
63
+ );
64
+ }
65
+
66
+ export { ProgressBar };
67
+
68
+ //# sourceMappingURL=progress-bar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/progress-bar/progress-bar.tsx"],"names":[],"mappings":";;;AAeA,IAAM,sBAAA,uBAA6B,GAAA,CAAI;AAAA,EACrC,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAC,CAAA;AAqCD,SAAS,OAAA,CAAQ,OAAe,GAAA,EAAqB;AACnD,EAAA,OAAO,GAAG,IAAA,CAAK,KAAA,CAAO,KAAA,GAAQ,GAAA,GAAO,GAAG,CAAC,CAAA,CAAA,CAAA;AAC3C;AASO,SAAS,WAAA,CAAY;AAAA,EAC1B,KAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,SAAA;AAAA,EACA,SAAA,GAAY,KAAA;AAAA,EACZ,KAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,IAAA,GAAO,SAAA;AAAA,EACP,EAAA;AAAA,EACA,iBAAiB,EAAC;AAAA,EAClB,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,EAAqB;AACnB,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,GAAG,KAAK,GAAA,IAAO,CAAA;AAClC,IAAA,MAAM,IAAI,WAAW,4CAA4C,CAAA;AACnE,EAAA,IAAI,UAAU,MAAA,KAAc,CAAC,OAAO,QAAA,CAAS,KAAK,KAAK,KAAA,GAAQ,CAAA,CAAA;AAC7D,IAAA,MAAM,IAAI,WAAW,yCAAyC,CAAA;AAChE,EAAA,MAAM,UAAU,KAAA,KAAU,MAAA,GAAY,SAAY,IAAA,CAAK,GAAA,CAAI,OAAO,GAAG,CAAA;AACrE,EAAA,MAAM,OAAA,GAAU,EAAA,KAAO,MAAA,GAAY,MAAA,GAAY,GAAG,EAAE,CAAA,MAAA,CAAA;AACpD,EAAA,MAAM,UAAA,GACJ,cACC,SAAA,KAAc,OAAA,KAAY,SAAY,MAAA,GAAY,OAAA,CAAQ,SAAS,GAAG,CAAA,CAAA,CAAA;AACzE,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,oBAAA,CAAqB,cAAA,EAAgB,sBAAsB,CAAA;AAAA,MAC/D,EAAA;AAAA,MACA,KAAA,EAAO,CAAA,iBAAA,EAAoB,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MAC5C,gBAAA,EAAe,cAAA;AAAA,MACf,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAW,IAAA;AAAA,MACX,oBAAA,EAAoB,OAAA,KAAY,MAAA,GAAY,EAAA,GAAK,MAAA;AAAA,MACjD,IAAA;AAAA,MAEC,QAAA,EAAA;AAAA,QAAA,KAAA,KAAU,UAAa,CAAC,UAAA,GAAa,uBACpC,IAAA,CAAC,KAAA,EAAA,EAAI,OAAM,0BAAA,EACR,QAAA,EAAA;AAAA,UAAA,KAAA,KAAU,MAAA,GAAY,uBACrB,GAAA,CAAC,MAAA,EAAA,EAAK,OAAM,yBAAA,EAA0B,EAAA,EAAI,SACvC,QAAA,EAAA,KAAA,EACH,CAAA;AAAA,UAED,UAAA,uBACE,MAAA,EAAA,EAAK,KAAA,EAAM,2BAA0B,aAAA,EAAY,MAAA,EAC/C,sBACH,CAAA,GACE;AAAA,SAAA,EACN,CAAA;AAAA,wBAEF,GAAA;AAAA,UAAC,UAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,yBAAA;AAAA,YACN,KAAA,EAAO,OAAA;AAAA,YACP,GAAA;AAAA,YACA,YAAA,EAAY,OAAA,KAAY,MAAA,GAAa,KAAA,IAAS,SAAA,GAAa,MAAA;AAAA,YAC3D,iBAAA,EAAiB,OAAA;AAAA,YACjB,gBAAA,EAAgB;AAAA;AAAA;AAClB;AAAA;AAAA,GACF;AAEJ","file":"progress-bar.js","sourcesContent":["import { filterDataAttributes } from '../../../shared/dom/extension-attributes.js';\n\n/** The fill color: `brand` (default), or a status tone. */\nexport type ProgressTone = 'brand' | 'success' | 'warning' | 'danger';\n/** `default` is a 6px track; `compact` is 4px, for a row or table cell. */\nexport type ProgressBarSize = 'default' | 'compact';\n\n/**\n * Application `data-*` identity on the ProgressBar root, such as `data-key`;\n * its own configuration attributes stay protected.\n */\nexport type ProgressBarRootAttributes = Readonly<\n Record<`data-${string}`, string | undefined>\n>;\n\nconst PROGRESS_BAR_PROTECTED = new Set([\n 'data-component',\n 'data-tone',\n 'data-size',\n 'data-indeterminate',\n]);\n\nexport type ProgressBarProps = {\n /**\n * Work done so far, from 0 to `max`. Omit it for indeterminate progress\n * (work whose size is unknown), which animates instead.\n */\n value?: number;\n /** The amount that means done (default 1). */\n max?: number;\n /**\n * Spoken progress in place of the percentage, such as \"3 of 12 files\". With\n * `showValue` it is also the visible text.\n */\n valueText?: string;\n /** Show the value (or `valueText`) at the end of the label row. */\n showValue?: boolean;\n tone?: ProgressTone;\n size?: ProgressBarSize;\n id?: string;\n rootAttributes?: ProgressBarRootAttributes;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n} & (\n | {\n /** A visible label above the bar that also names it. */\n label: string;\n ariaLabel?: never;\n }\n | {\n label?: never;\n /** The bar's accessible name when it shows no visible label. */\n ariaLabel: string;\n }\n);\n\nfunction percent(value: number, max: number): string {\n return `${Math.round((value / max) * 100)}%`;\n}\n\n/**\n * A linear progress indicator on the native `<progress>` element: determinate\n * (`value` of `max`) or indeterminate (no `value`, an animated sweep), named\n * by a visible `label` or an `ariaLabel`, toned, and in two track sizes. The\n * native element carries the progressbar role and its value to assistive\n * technology; `valueText` replaces the spoken percentage.\n */\nexport function ProgressBar({\n value,\n max = 1,\n valueText,\n showValue = false,\n label,\n ariaLabel,\n tone = 'brand',\n size = 'default',\n id,\n rootAttributes = {},\n className = '',\n slot,\n}: ProgressBarProps) {\n if (!Number.isFinite(max) || max <= 0)\n throw new RangeError('ProgressBar max must be a positive number.');\n if (value !== undefined && (!Number.isFinite(value) || value < 0))\n throw new RangeError('ProgressBar value must be zero or more.');\n const clamped = value === undefined ? undefined : Math.min(value, max);\n const labelId = id === undefined ? undefined : `${id}-label`;\n const shownValue =\n showValue &&\n (valueText ?? (clamped === undefined ? undefined : percent(clamped, max)));\n return (\n <div\n {...filterDataAttributes(rootAttributes, PROGRESS_BAR_PROTECTED)}\n id={id}\n class={`kui-progress-bar ${className}`.trim()}\n data-component=\"progress-bar\"\n data-tone={tone}\n data-size={size}\n data-indeterminate={clamped === undefined ? '' : undefined}\n slot={slot}\n >\n {label === undefined && !shownValue ? null : (\n <div class=\"kui-progress-bar__header\">\n {label === undefined ? null : (\n <span class=\"kui-progress-bar__label\" id={labelId}>\n {label}\n </span>\n )}\n {shownValue ? (\n <span class=\"kui-progress-bar__value\" aria-hidden=\"true\">\n {shownValue}\n </span>\n ) : null}\n </div>\n )}\n <progress\n class=\"kui-progress-bar__track\"\n value={clamped}\n max={max}\n aria-label={labelId === undefined ? (label ?? ariaLabel) : undefined}\n aria-labelledby={labelId}\n aria-valuetext={valueText}\n />\n </div>\n );\n}\n"]}
@@ -0,0 +1,44 @@
1
+ import * as kerfjs from 'kerfjs';
2
+ import { ProgressTone } from './progress-bar.js';
3
+
4
+ /**
5
+ * The ring's diameter: `small` (16px) sits in a line of text, `medium` (24px,
6
+ * the default) beside an icon in a row or toolbar, and `large` (40px) on its
7
+ * own.
8
+ */
9
+ type ProgressRingSize = 'small' | 'medium' | 'large';
10
+ /**
11
+ * Application `data-*` identity on the ProgressRing root, such as `data-key`;
12
+ * its own configuration attributes stay protected.
13
+ */
14
+ type ProgressRingRootAttributes = Readonly<Record<`data-${string}`, string | undefined>>;
15
+ interface ProgressRingProps {
16
+ /**
17
+ * Work done so far, from 0 to `max`. Omit it for indeterminate progress,
18
+ * which spins a short arc instead.
19
+ */
20
+ value?: number;
21
+ /** The amount that means done (default 1). */
22
+ max?: number;
23
+ /** The ring's accessible name, such as "Claim time remaining". */
24
+ label: string;
25
+ /** Spoken progress in place of the percentage, such as "12 minutes left". */
26
+ valueText?: string;
27
+ tone?: ProgressTone;
28
+ size?: ProgressRingSize;
29
+ id?: string;
30
+ rootAttributes?: ProgressRingRootAttributes;
31
+ className?: string;
32
+ /** Native named-slot assignment when composed inside a web component. */
33
+ slot?: string;
34
+ }
35
+ /**
36
+ * A circular progress indicator: an SVG track and arc, determinate (`value`
37
+ * of `max`, filling clockwise from the top) or indeterminate (no `value`, a
38
+ * spinning arc), sized to sit inline in text, a row, or a toolbar. It is a
39
+ * `role="progressbar"` named by `label`, with `aria-valuenow` (as a
40
+ * percentage) or `valueText`.
41
+ */
42
+ declare function ProgressRing({ value, max, label, valueText, tone, size, id, rootAttributes, className, slot, }: ProgressRingProps): kerfjs.SafeHtml;
43
+
44
+ export { ProgressRing, type ProgressRingProps, type ProgressRingRootAttributes, type ProgressRingSize, ProgressTone };
@@ -0,0 +1,73 @@
1
+ import { remify } from './chunk-IQSRHXZR.js';
2
+ import { filterDataAttributes } from './chunk-KH4KEMSP.js';
3
+ import { jsx, jsxs } from 'kerfjs/jsx-runtime';
4
+
5
+ var RING_PIXELS = {
6
+ small: 16,
7
+ medium: 24,
8
+ large: 40
9
+ };
10
+ var PROGRESS_RING_PROTECTED = /* @__PURE__ */ new Set([
11
+ "data-component",
12
+ "data-tone",
13
+ "data-size",
14
+ "data-indeterminate"
15
+ ]);
16
+ var RADIUS = 10.5;
17
+ var CIRCUMFERENCE = 2 * Math.PI * RADIUS;
18
+ function ProgressRing({
19
+ value,
20
+ max = 1,
21
+ label,
22
+ valueText,
23
+ tone = "brand",
24
+ size = "medium",
25
+ id,
26
+ rootAttributes = {},
27
+ className = "",
28
+ slot
29
+ }) {
30
+ if (!Number.isFinite(max) || max <= 0)
31
+ throw new RangeError("ProgressRing max must be a positive number.");
32
+ if (value !== void 0 && (!Number.isFinite(value) || value < 0))
33
+ throw new RangeError("ProgressRing value must be zero or more.");
34
+ const fraction = value === void 0 ? void 0 : Math.min(value, max) / max;
35
+ const dash = fraction === void 0 ? CIRCUMFERENCE * 0.25 : CIRCUMFERENCE * fraction;
36
+ return /* @__PURE__ */ jsx(
37
+ "span",
38
+ {
39
+ ...filterDataAttributes(rootAttributes, PROGRESS_RING_PROTECTED),
40
+ id,
41
+ class: `kui-progress-ring ${className}`.trim(),
42
+ "data-component": "progress-ring",
43
+ "data-tone": tone,
44
+ "data-size": size,
45
+ "data-indeterminate": fraction === void 0 ? "" : void 0,
46
+ role: "progressbar",
47
+ "aria-label": label,
48
+ "aria-valuemin": fraction === void 0 ? void 0 : "0",
49
+ "aria-valuemax": fraction === void 0 ? void 0 : "100",
50
+ "aria-valuenow": fraction === void 0 ? void 0 : String(Math.round(fraction * 100)),
51
+ "aria-valuetext": valueText,
52
+ style: `--_kui-progress-ring-size:${remify(RING_PIXELS[size])}`,
53
+ slot,
54
+ children: /* @__PURE__ */ jsxs("svg", { viewBox: "0 0 24 24", "aria-hidden": "true", children: [
55
+ /* @__PURE__ */ jsx("circle", { class: "kui-progress-ring__track", cx: "12", cy: "12", r: RADIUS }),
56
+ /* @__PURE__ */ jsx(
57
+ "circle",
58
+ {
59
+ class: "kui-progress-ring__arc",
60
+ cx: "12",
61
+ cy: "12",
62
+ r: RADIUS,
63
+ "stroke-dasharray": `${dash.toFixed(3)} ${CIRCUMFERENCE.toFixed(3)}`
64
+ }
65
+ )
66
+ ] })
67
+ }
68
+ );
69
+ }
70
+
71
+ export { ProgressRing };
72
+
73
+ //# sourceMappingURL=progress-ring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/feedback/progress-ring/progress-ring.tsx"],"names":[],"mappings":";;;;AAaA,IAAM,WAAA,GAAgD;AAAA,EACpD,KAAA,EAAO,EAAA;AAAA,EACP,MAAA,EAAQ,EAAA;AAAA,EACR,KAAA,EAAO;AACT,CAAA;AAUA,IAAM,uBAAA,uBAA8B,GAAA,CAAI;AAAA,EACtC,gBAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAC,CAAA;AAwBD,IAAM,MAAA,GAAS,IAAA;AACf,IAAM,aAAA,GAAgB,CAAA,GAAI,IAAA,CAAK,EAAA,GAAK,MAAA;AAS7B,SAAS,YAAA,CAAa;AAAA,EAC3B,KAAA;AAAA,EACA,GAAA,GAAM,CAAA;AAAA,EACN,KAAA;AAAA,EACA,SAAA;AAAA,EACA,IAAA,GAAO,OAAA;AAAA,EACP,IAAA,GAAO,QAAA;AAAA,EACP,EAAA;AAAA,EACA,iBAAiB,EAAC;AAAA,EAClB,SAAA,GAAY,EAAA;AAAA,EACZ;AACF,CAAA,EAAsB;AACpB,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,GAAG,KAAK,GAAA,IAAO,CAAA;AAClC,IAAA,MAAM,IAAI,WAAW,6CAA6C,CAAA;AACpE,EAAA,IAAI,UAAU,MAAA,KAAc,CAAC,OAAO,QAAA,CAAS,KAAK,KAAK,KAAA,GAAQ,CAAA,CAAA;AAC7D,IAAA,MAAM,IAAI,WAAW,0CAA0C,CAAA;AACjE,EAAA,MAAM,QAAA,GAAW,UAAU,MAAA,GAAY,MAAA,GAAY,KAAK,GAAA,CAAI,KAAA,EAAO,GAAG,CAAA,GAAI,GAAA;AAC1E,EAAA,MAAM,IAAA,GACJ,QAAA,KAAa,MAAA,GAAY,aAAA,GAAgB,OAAO,aAAA,GAAgB,QAAA;AAClE,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACE,GAAG,oBAAA,CAAqB,cAAA,EAAgB,uBAAuB,CAAA;AAAA,MAChE,EAAA;AAAA,MACA,KAAA,EAAO,CAAA,kBAAA,EAAqB,SAAS,CAAA,CAAA,CAAG,IAAA,EAAK;AAAA,MAC7C,gBAAA,EAAe,eAAA;AAAA,MACf,WAAA,EAAW,IAAA;AAAA,MACX,WAAA,EAAW,IAAA;AAAA,MACX,oBAAA,EAAoB,QAAA,KAAa,MAAA,GAAY,EAAA,GAAK,MAAA;AAAA,MAClD,IAAA,EAAK,aAAA;AAAA,MACL,YAAA,EAAY,KAAA;AAAA,MACZ,eAAA,EAAe,QAAA,KAAa,MAAA,GAAY,MAAA,GAAY,GAAA;AAAA,MACpD,eAAA,EAAe,QAAA,KAAa,MAAA,GAAY,MAAA,GAAY,KAAA;AAAA,MACpD,eAAA,EACE,aAAa,MAAA,GAAY,MAAA,GAAY,OAAO,IAAA,CAAK,KAAA,CAAM,QAAA,GAAW,GAAG,CAAC,CAAA;AAAA,MAExE,gBAAA,EAAgB,SAAA;AAAA,MAChB,OAAO,CAAA,0BAAA,EAA6B,MAAA,CAAO,WAAA,CAAY,IAAI,CAAC,CAAC,CAAA,CAAA;AAAA,MAC7D,IAAA;AAAA,MAEA,QAAA,kBAAA,IAAA,CAAC,KAAA,EAAA,EAAI,OAAA,EAAQ,WAAA,EAAY,eAAY,MAAA,EACnC,QAAA,EAAA;AAAA,wBAAA,GAAA,CAAC,QAAA,EAAA,EAAO,OAAM,0BAAA,EAA2B,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAG,MAAA,EAAQ,CAAA;AAAA,wBACpE,GAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YACC,KAAA,EAAM,wBAAA;AAAA,YACN,EAAA,EAAG,IAAA;AAAA,YACH,EAAA,EAAG,IAAA;AAAA,YACH,CAAA,EAAG,MAAA;AAAA,YACH,kBAAA,EAAkB,CAAA,EAAG,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAC,CAAA,CAAA,EAAI,aAAA,CAAc,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA;AAAA;AAClE,OAAA,EACF;AAAA;AAAA,GACF;AAEJ","file":"progress-ring.js","sourcesContent":["import { filterDataAttributes } from '../../../shared/dom/extension-attributes.js';\nimport { remify } from '../../../shared/styles/css-values.js';\nimport type { ProgressTone } from '../progress-bar/progress-bar.js';\n\nexport type { ProgressTone } from '../progress-bar/progress-bar.js';\n\n/**\n * The ring's diameter: `small` (16px) sits in a line of text, `medium` (24px,\n * the default) beside an icon in a row or toolbar, and `large` (40px) on its\n * own.\n */\nexport type ProgressRingSize = 'small' | 'medium' | 'large';\n\nconst RING_PIXELS: Record<ProgressRingSize, number> = {\n small: 16,\n medium: 24,\n large: 40,\n};\n\n/**\n * Application `data-*` identity on the ProgressRing root, such as `data-key`;\n * its own configuration attributes stay protected.\n */\nexport type ProgressRingRootAttributes = Readonly<\n Record<`data-${string}`, string | undefined>\n>;\n\nconst PROGRESS_RING_PROTECTED = new Set([\n 'data-component',\n 'data-tone',\n 'data-size',\n 'data-indeterminate',\n]);\n\nexport interface ProgressRingProps {\n /**\n * Work done so far, from 0 to `max`. Omit it for indeterminate progress,\n * which spins a short arc instead.\n */\n value?: number;\n /** The amount that means done (default 1). */\n max?: number;\n /** The ring's accessible name, such as \"Claim time remaining\". */\n label: string;\n /** Spoken progress in place of the percentage, such as \"12 minutes left\". */\n valueText?: string;\n tone?: ProgressTone;\n size?: ProgressRingSize;\n id?: string;\n rootAttributes?: ProgressRingRootAttributes;\n className?: string;\n /** Native named-slot assignment when composed inside a web component. */\n slot?: string;\n}\n\n/** The circle's radius in the 24-unit viewBox, inside a 3-unit stroke. */\nconst RADIUS = 10.5;\nconst CIRCUMFERENCE = 2 * Math.PI * RADIUS;\n\n/**\n * A circular progress indicator: an SVG track and arc, determinate (`value`\n * of `max`, filling clockwise from the top) or indeterminate (no `value`, a\n * spinning arc), sized to sit inline in text, a row, or a toolbar. It is a\n * `role=\"progressbar\"` named by `label`, with `aria-valuenow` (as a\n * percentage) or `valueText`.\n */\nexport function ProgressRing({\n value,\n max = 1,\n label,\n valueText,\n tone = 'brand',\n size = 'medium',\n id,\n rootAttributes = {},\n className = '',\n slot,\n}: ProgressRingProps) {\n if (!Number.isFinite(max) || max <= 0)\n throw new RangeError('ProgressRing max must be a positive number.');\n if (value !== undefined && (!Number.isFinite(value) || value < 0))\n throw new RangeError('ProgressRing value must be zero or more.');\n const fraction = value === undefined ? undefined : Math.min(value, max) / max;\n const dash =\n fraction === undefined ? CIRCUMFERENCE * 0.25 : CIRCUMFERENCE * fraction;\n return (\n <span\n {...filterDataAttributes(rootAttributes, PROGRESS_RING_PROTECTED)}\n id={id}\n class={`kui-progress-ring ${className}`.trim()}\n data-component=\"progress-ring\"\n data-tone={tone}\n data-size={size}\n data-indeterminate={fraction === undefined ? '' : undefined}\n role=\"progressbar\"\n aria-label={label}\n aria-valuemin={fraction === undefined ? undefined : '0'}\n aria-valuemax={fraction === undefined ? undefined : '100'}\n aria-valuenow={\n fraction === undefined ? undefined : String(Math.round(fraction * 100))\n }\n aria-valuetext={valueText}\n style={`--_kui-progress-ring-size:${remify(RING_PIXELS[size])}`}\n slot={slot}\n >\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\">\n <circle class=\"kui-progress-ring__track\" cx=\"12\" cy=\"12\" r={RADIUS} />\n <circle\n class=\"kui-progress-ring__arc\"\n cx=\"12\"\n cy=\"12\"\n r={RADIUS}\n stroke-dasharray={`${dash.toFixed(3)} ${CIRCUMFERENCE.toFixed(3)}`}\n />\n </svg>\n </span>\n );\n}\n"]}
@@ -0,0 +1,62 @@
1
+ import * as kerfjs from 'kerfjs';
2
+
3
+ /** `default` is a 20px circle beside 16px text; `compact` 18px and 14px. */
4
+ type RadioGroupSize = 'default' | 'compact';
5
+ /** `vertical` stacks the choices; `horizontal` lines them up and wraps. */
6
+ type RadioGroupOrientation = 'vertical' | 'horizontal';
7
+ /** Application `data-*` metadata; the RadioGroup's own markers stay protected. */
8
+ type RadioGroupRootAttributes = Readonly<Record<`data-${string}`, string | undefined>>;
9
+ interface RadioGroupChoice<Value extends string = string> {
10
+ value: Value;
11
+ /** Visible label; it is also the radio's accessible name. */
12
+ label: string;
13
+ /** Supporting text under this choice's label, also its description. */
14
+ hint?: string;
15
+ disabled?: boolean;
16
+ }
17
+ /** A group is named by a visible `label` (its legend) or by `ariaLabel`. */
18
+ type RadioGroupName = {
19
+ label: string;
20
+ ariaLabel?: never;
21
+ } | {
22
+ label?: never;
23
+ ariaLabel: string;
24
+ };
25
+ interface RadioGroupOptions<Value extends string = string> {
26
+ /** Native input `name`: the form field the selected value submits under. */
27
+ name: string;
28
+ choices: readonly RadioGroupChoice<Value>[];
29
+ /** The selected value. Omit for no selection. */
30
+ value?: NoInfer<Value>;
31
+ /** Supporting text below the choices, also the group's description. */
32
+ hint?: string;
33
+ /** A validation message: shown in the danger color and marking it invalid. */
34
+ error?: string;
35
+ size?: RadioGroupSize;
36
+ orientation?: RadioGroupOrientation;
37
+ /** Require a selection for native form validation. */
38
+ required?: boolean;
39
+ /** Disable the whole group. */
40
+ disabled?: boolean;
41
+ /** Delegated `data-action` on every radio; listen for `change`. */
42
+ action?: string;
43
+ /** Associate the radios with a form outside their ancestor chain. */
44
+ form?: string;
45
+ /** The fieldset's id. */
46
+ id?: string;
47
+ className?: string;
48
+ /** Safe `data-*` metadata (a `data-key`). */
49
+ rootAttributes?: RadioGroupRootAttributes;
50
+ /** Native named-slot assignment when composed inside a web component. */
51
+ slot?: string;
52
+ }
53
+ type RadioGroupProps<Value extends string = string> = RadioGroupName & RadioGroupOptions<Value>;
54
+ /**
55
+ * One exclusive choice among a few visible options: a native fieldset of
56
+ * radios, each drawn as a Kerf circle beside its label, with the group label
57
+ * above and hint and error text below. The browser owns the interaction: one
58
+ * Tab stop, arrow keys move and select, and the checked value submits.
59
+ */
60
+ declare function RadioGroup<Value extends string>({ label, ariaLabel, name, choices, value, hint, error, size, orientation, required, disabled, action, form, id, className, rootAttributes, slot, }: RadioGroupProps<Value>): kerfjs.SafeHtml;
61
+
62
+ export { RadioGroup, type RadioGroupChoice, type RadioGroupName, type RadioGroupOptions, type RadioGroupOrientation, type RadioGroupProps, type RadioGroupRootAttributes, type RadioGroupSize };
@@ -0,0 +1,4 @@
1
+ export { RadioGroup } from './chunk-OHPYT2BH.js';
2
+
3
+
4
+ //# sourceMappingURL=radio-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"radio-group.js"}
package/dist/row.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Row } from './chunk-YQ2AC4E2.js';
1
+ export { Row } from './chunk-AMIHGFLP.js';
2
2
 
3
3
 
4
4
 
@@ -1,7 +1,7 @@
1
- import { SafeHtml, Signal } from 'kerfjs';
1
+ import { SafeHtml, Signal, ReadonlySignal } from 'kerfjs';
2
2
  import { K as KerfUiContent } from './semantic-content-BbzjvSu9.js';
3
3
 
4
- interface TokenSearchToken {
4
+ interface SearchFieldToken {
5
5
  value: string;
6
6
  label: string;
7
7
  offset?: number;
@@ -11,12 +11,12 @@ interface TokenSearchToken {
11
11
  * Domain `data-*` metadata for a trailing action button. The component owns
12
12
  * `data-action` (pass `action`) and its state attributes.
13
13
  */
14
- type TokenSearchTrailingActionAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
14
+ type SearchFieldTrailingActionAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
15
15
  'data-action'?: never;
16
16
  'data-component'?: never;
17
17
  'data-key'?: never;
18
18
  }>;
19
- interface TokenSearchTrailingActionBase {
19
+ interface SearchFieldTrailingActionBase {
20
20
  /** Decorative glyph, such as a `LucideIcon`. */
21
21
  icon: SafeHtml;
22
22
  /** Accessible name and tooltip, in title style ("Search Help"). */
@@ -29,35 +29,35 @@ interface TokenSearchTrailingActionBase {
29
29
  /** `aria-haspopup` for a button that opens a dialog, menu, or listbox. */
30
30
  haspopup?: 'dialog' | 'menu' | 'listbox' | 'true';
31
31
  /** Domain `data-*` metadata for the app's delegated handler. */
32
- attributes?: TokenSearchTrailingActionAttributes;
32
+ attributes?: SearchFieldTrailingActionAttributes;
33
33
  }
34
34
  /**
35
35
  * A compact icon button in the field's trailing slot, sized and styled like
36
36
  * the clear button. Pass `expanded` for a disclosure (a help surface it opens)
37
37
  * or `pressed` for a toggle; the button shows the state with its hover fill.
38
38
  */
39
- type TokenSearchTrailingAction = TokenSearchTrailingActionBase & ({
39
+ type SearchFieldTrailingAction = SearchFieldTrailingActionBase & ({
40
40
  expanded?: boolean;
41
41
  pressed?: never;
42
42
  } | {
43
43
  expanded?: never;
44
44
  pressed?: boolean;
45
45
  });
46
- type TokenSearchEditorAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
46
+ type SearchFieldEditorAttributes = Readonly<Record<`data-${string}`, string | undefined> & {
47
47
  'data-component'?: never;
48
48
  'data-key'?: never;
49
49
  'data-morph-skip'?: never;
50
- 'data-token-search-editor'?: never;
50
+ 'data-search-field-editor'?: never;
51
51
  'data-token-count'?: never;
52
52
  'data-placeholder'?: never;
53
53
  }>;
54
- interface TokenSearchFieldBaseProps {
54
+ interface SearchFieldBaseProps {
55
55
  id: string;
56
56
  label: string;
57
57
  query?: string;
58
- tokens?: readonly TokenSearchToken[];
58
+ tokens?: readonly SearchFieldToken[];
59
59
  /** Opt-in grammar, suggestion, and evaluation state. Overrides `query` and `tokens`. */
60
- model?: TokenSearchModel;
60
+ model?: SearchFieldModel;
61
61
  /**
62
62
  * Editor identity for a programmatic text replacement. The editor's text is
63
63
  * DOM-owned between token changes, so a new `query` with the same tokens
@@ -81,18 +81,18 @@ interface TokenSearchFieldBaseProps {
81
81
  /** Icon for the clear button. Default: the Lucide `x` glyph token chips also use. */
82
82
  clearIcon?: SafeHtml;
83
83
  className?: string;
84
- editorAttributes?: TokenSearchEditorAttributes;
84
+ editorAttributes?: SearchFieldEditorAttributes;
85
85
  /** Native named-slot assignment when composed inside a web component. */
86
86
  slot?: string;
87
87
  }
88
- type TokenSearchTrailingProps = {
88
+ type SearchFieldTrailingProps = {
89
89
  trailing?: KerfUiContent;
90
90
  trailingAction?: never;
91
91
  } | {
92
92
  trailing?: never;
93
- trailingAction: TokenSearchTrailingAction;
93
+ trailingAction: SearchFieldTrailingAction;
94
94
  };
95
- type TokenSearchPresentationProps = {
95
+ type SearchFieldPresentationProps = {
96
96
  /** Standalone field chrome or the inset visual layer of a configured toolbar group. */
97
97
  presentation?: 'standalone' | 'toolbar-group';
98
98
  hint?: never;
@@ -104,7 +104,7 @@ type TokenSearchPresentationProps = {
104
104
  /** Marks the editor required; the app validates its value. */
105
105
  required?: boolean;
106
106
  };
107
- type TokenSearchCollapsibleProps = {
107
+ type SearchFieldCollapsibleProps = {
108
108
  /** Allow an empty field to render as one iconic action. */
109
109
  collapsible: true;
110
110
  /** Keep an empty collapsible field open while the application owns focus. */
@@ -117,18 +117,18 @@ type TokenSearchCollapsibleProps = {
117
117
  expandAction?: never;
118
118
  expandLabel?: never;
119
119
  };
120
- type TokenSearchFieldProps = TokenSearchFieldBaseProps & TokenSearchCollapsibleProps & TokenSearchTrailingProps & TokenSearchPresentationProps;
121
- interface TokenSearchFieldValue {
120
+ type SearchFieldProps = SearchFieldBaseProps & SearchFieldCollapsibleProps & SearchFieldTrailingProps & SearchFieldPresentationProps;
121
+ interface SearchFieldValue {
122
122
  query: string;
123
- tokens: TokenSearchToken[];
123
+ tokens: SearchFieldToken[];
124
124
  }
125
- declare function TokenSearchField({ id, label, query, tokens, model, revision, placeholder, tokenPlaceholder, disabled, autofocus, fill, collapsible, expanded, expandAction, expandLabel, leading, trailing, trailingAction, presentation, hint, required, editAction, removeAction, clearAction, clearLabel, clearIcon, className, editorAttributes, slot, }: TokenSearchFieldProps): SafeHtml;
126
- /** Read editable text and ordered token offsets from a rendered TokenSearchField editor. */
127
- declare function readTokenSearchField(editor: HTMLElement, knownTokens?: readonly TokenSearchToken[]): TokenSearchFieldValue;
125
+ declare function SearchField({ id, label, query, tokens, model, revision, placeholder, tokenPlaceholder, disabled, autofocus, fill, collapsible, expanded, expandAction, expandLabel, leading, trailing, trailingAction, presentation, hint, required, editAction, removeAction, clearAction, clearLabel, clearIcon, className, editorAttributes, slot, }: SearchFieldProps): SafeHtml;
126
+ /** Read editable text and ordered token offsets from a rendered SearchField editor. */
127
+ declare function readSearchField(editor: HTMLElement, knownTokens?: readonly SearchFieldToken[]): SearchFieldValue;
128
128
  /** Focus an editor and place its caret at a text offset, skipping atomic token chips. */
129
- declare function placeTokenSearchCaret(editor: HTMLElement, offset?: number): void;
129
+ declare function placeSearchFieldCaret(editor: HTMLElement, offset?: number): void;
130
130
 
131
- interface TokenSearchRule {
131
+ interface SearchFieldRule {
132
132
  /** The word before `:` (for example `tag` or `status`). */
133
133
  name: string;
134
134
  /** Return a canonical value, or undefined to leave invalid input as text. */
@@ -136,33 +136,57 @@ interface TokenSearchRule {
136
136
  /** Label for a committed chip. Defaults to `name:input`. */
137
137
  label?: (value: string, input: string) => string;
138
138
  /** Suggestions for the unfinished value after `name:`, with current committed tokens. */
139
- suggest?: (input: string, state: TokenSearchState) => readonly (string | {
139
+ suggest?: (input: string, state: SearchFieldState) => readonly (string | {
140
140
  value: string;
141
141
  label: string;
142
142
  })[];
143
143
  }
144
- interface TokenSearchResolvedToken extends TokenSearchToken {
144
+ interface SearchFieldResolvedToken extends SearchFieldToken {
145
145
  kind: string;
146
146
  parsedValue: string;
147
147
  }
148
- interface TokenSearchState {
148
+ interface SearchFieldState {
149
149
  query: string;
150
- tokens: TokenSearchResolvedToken[];
150
+ tokens: SearchFieldResolvedToken[];
151
151
  }
152
- interface TokenSearchSuggestion {
152
+ interface SearchFieldSuggestion {
153
153
  value: string;
154
154
  label: string;
155
155
  }
156
- interface TokenSearchModel<Result = unknown> {
157
- state: Signal<TokenSearchState>;
156
+ /**
157
+ * The render-relevant shape of a managed field: everything a host render
158
+ * needs to re-run for. Plain text edits do not change it.
159
+ */
160
+ interface SearchFieldStructure {
161
+ /** Whether the free text is non-empty (drives clear, placeholder, and collapsed state). */
162
+ hasQuery: boolean;
163
+ /** Committed token values in editor order. */
164
+ tokenValues: readonly string[];
165
+ /** The model's editor revision (programmatic text replacement). */
166
+ editorRevision: number;
167
+ }
168
+ interface SearchFieldModel<Result = unknown> {
169
+ /**
170
+ * The live query and tokens. Changes on every keystroke: read it with
171
+ * `.peek()` (or in an event handler) to avoid subscribing a render per key.
172
+ */
173
+ state: Signal<SearchFieldState>;
158
174
  /** Changes when a model action must replace DOM-owned editor text. */
159
175
  editorRevision: Signal<number>;
160
- suggestions: Signal<readonly TokenSearchSuggestion[]>;
176
+ /**
177
+ * Changes only on structural edits (a token committed, removed, or
178
+ * reordered; the text becoming empty or non-empty; an editor revision), and
179
+ * keeps the same reference otherwise. `SearchField` subscribes to this
180
+ * instead of `state`, so typing does not re-run the host render.
181
+ */
182
+ structure: ReadonlySignal<SearchFieldStructure>;
183
+ /** Visible suggestions. Publishes only when the list's content changes. */
184
+ suggestions: Signal<readonly SearchFieldSuggestion[]>;
161
185
  result: Signal<Result | undefined>;
162
- edit(value: TokenSearchFieldValue, commit?: boolean): void;
186
+ edit(value: SearchFieldValue, commit?: boolean): void;
163
187
  /** Replace app-owned search state and rebuild the DOM-owned editor text. */
164
- replace(value: TokenSearchFieldValue): void;
165
- submit(value: TokenSearchFieldValue): void;
188
+ replace(value: SearchFieldValue): void;
189
+ submit(value: SearchFieldValue): void;
166
190
  choose(value: string): void;
167
191
  /** Commit a value for the active `name:` prefix, even when it is not suggested. */
168
192
  commit(value: string): void;
@@ -171,14 +195,14 @@ interface TokenSearchModel<Result = unknown> {
171
195
  clear(): void;
172
196
  dismiss(): void;
173
197
  }
174
- interface TokenSearchModelOptions<Result> {
175
- rules?: readonly TokenSearchRule[];
176
- initial?: TokenSearchFieldValue;
198
+ interface SearchFieldModelOptions<Result> {
199
+ rules?: readonly SearchFieldRule[];
200
+ initial?: SearchFieldValue;
177
201
  /** Runs after every state change, including initial state. */
178
- evaluate?: (state: TokenSearchState) => Result;
179
- onSubmit?: (state: TokenSearchState, result: Result | undefined) => void;
202
+ evaluate?: (state: SearchFieldState) => Result;
203
+ onSubmit?: (state: SearchFieldState, result: Result | undefined) => void;
180
204
  }
181
- /** Opt-in state, token parsing, suggestions, and evaluation for TokenSearchField. */
182
- declare function createTokenSearchModel<Result = unknown>({ rules, initial, evaluate, onSubmit, }?: TokenSearchModelOptions<Result>): TokenSearchModel<Result>;
205
+ /** Opt-in state, token parsing, suggestions, and evaluation for SearchField. */
206
+ declare function createSearchFieldModel<Result = unknown>({ rules, initial, evaluate, onSubmit, }?: SearchFieldModelOptions<Result>): SearchFieldModel<Result>;
183
207
 
184
- export { type TokenSearchEditorAttributes as T, TokenSearchField as a, type TokenSearchFieldProps as b, type TokenSearchFieldValue as c, type TokenSearchModel as d, type TokenSearchModelOptions as e, type TokenSearchResolvedToken as f, type TokenSearchRule as g, type TokenSearchState as h, type TokenSearchSuggestion as i, type TokenSearchToken as j, type TokenSearchTrailingAction as k, type TokenSearchTrailingActionAttributes as l, createTokenSearchModel as m, placeTokenSearchCaret as p, readTokenSearchField as r };
208
+ export { SearchField as S, type SearchFieldEditorAttributes as a, type SearchFieldModel as b, type SearchFieldModelOptions as c, type SearchFieldProps as d, type SearchFieldResolvedToken as e, type SearchFieldRule as f, type SearchFieldState as g, type SearchFieldStructure as h, type SearchFieldSuggestion as i, type SearchFieldToken as j, type SearchFieldTrailingAction as k, type SearchFieldTrailingActionAttributes as l, type SearchFieldValue as m, createSearchFieldModel as n, placeSearchFieldCaret as p, readSearchField as r };
@@ -0,0 +1,3 @@
1
+ export { b as SearchFieldModel, c as SearchFieldModelOptions, e as SearchFieldResolvedToken, f as SearchFieldRule, g as SearchFieldState, h as SearchFieldStructure, i as SearchFieldSuggestion, n as createSearchFieldModel } from './search-field-CrGTN5sa.js';
2
+ import 'kerfjs';
3
+ import './semantic-content-BbzjvSu9.js';
@@ -0,0 +1,3 @@
1
+ export { createSearchFieldModel } from './chunk-CIAUILRR.js';
2
+
3
+ //# sourceMappingURL=search-field-model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"search-field-model.js"}
@@ -0,0 +1,3 @@
1
+ export { S as SearchField, a as SearchFieldEditorAttributes, d as SearchFieldProps, j as SearchFieldToken, k as SearchFieldTrailingAction, l as SearchFieldTrailingActionAttributes, m as SearchFieldValue, p as placeSearchFieldCaret, r as readSearchField } from './search-field-CrGTN5sa.js';
2
+ import 'kerfjs';
3
+ import './semantic-content-BbzjvSu9.js';
@@ -0,0 +1,5 @@
1
+ export { SearchField, placeSearchFieldCaret, readSearchField } from './chunk-VEME3D7K.js';
2
+
3
+
4
+
5
+ //# sourceMappingURL=search-field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"search-field.js"}
@@ -1,7 +1,10 @@
1
1
  /**
2
- * Marker export for tests and tooling; importing this module performs registration.
3
- * Registers both the `Select` elements and the `Catalog` related-entries popup-menu
4
- * elements (`wa-dropdown` / `wa-dropdown-item` / `wa-button`).
2
+ * Marker export for tests and tooling; importing this module defines the
3
+ * `kui-select` root element and wires every `Select` in the document:
4
+ * opening, placement, keyboard navigation and typeahead, choosing, the
5
+ * select-all and clear actions, form participation, and dismissal. It also
6
+ * wires the `Catalog` related-entries `PopupMenu`s and registers the help tag
7
+ * an icon-only trigger shows on hover or keyboard focus.
5
8
  */
6
9
  declare const selectElementsRegistered = true;
7
10