@vielzeug/buildit 2.0.0

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 (792) hide show
  1. package/README.md +124 -0
  2. package/dist/accordion-item.cjs +32 -0
  3. package/dist/accordion-item.cjs.map +1 -0
  4. package/dist/accordion-item.js +72 -0
  5. package/dist/accordion-item.js.map +1 -0
  6. package/dist/accordion.cjs +2 -0
  7. package/dist/accordion.cjs.map +1 -0
  8. package/dist/accordion.js +37 -0
  9. package/dist/accordion.js.map +1 -0
  10. package/dist/alert.cjs +31 -0
  11. package/dist/alert.cjs.map +1 -0
  12. package/dist/alert.js +85 -0
  13. package/dist/alert.js.map +1 -0
  14. package/dist/avatar.cjs +37 -0
  15. package/dist/avatar.cjs.map +1 -0
  16. package/dist/avatar.js +123 -0
  17. package/dist/avatar.js.map +1 -0
  18. package/dist/badge.cjs +7 -0
  19. package/dist/badge.cjs.map +1 -0
  20. package/dist/badge.js +60 -0
  21. package/dist/badge.js.map +1 -0
  22. package/dist/box.cjs +2 -0
  23. package/dist/box.cjs.map +1 -0
  24. package/dist/box.js +22 -0
  25. package/dist/box.js.map +1 -0
  26. package/dist/breadcrumb.cjs +21 -0
  27. package/dist/breadcrumb.cjs.map +1 -0
  28. package/dist/breadcrumb.js +58 -0
  29. package/dist/breadcrumb.js.map +1 -0
  30. package/dist/buildit.cjs +1892 -0
  31. package/dist/buildit.cjs.map +1 -0
  32. package/dist/buildit.js +1892 -0
  33. package/dist/buildit.js.map +1 -0
  34. package/dist/button-group.cjs +6 -0
  35. package/dist/button-group.cjs.map +1 -0
  36. package/dist/button-group.js +31 -0
  37. package/dist/button-group.js.map +1 -0
  38. package/dist/button.cjs +30 -0
  39. package/dist/button.cjs.map +1 -0
  40. package/dist/button.js +115 -0
  41. package/dist/button.js.map +1 -0
  42. package/dist/card.cjs +23 -0
  43. package/dist/card.cjs.map +1 -0
  44. package/dist/card.js +99 -0
  45. package/dist/card.js.map +1 -0
  46. package/dist/checkbox-group.cjs +20 -0
  47. package/dist/checkbox-group.cjs.map +1 -0
  48. package/dist/checkbox-group.js +88 -0
  49. package/dist/checkbox-group.js.map +1 -0
  50. package/dist/checkbox.cjs +37 -0
  51. package/dist/checkbox.cjs.map +1 -0
  52. package/dist/checkbox.js +115 -0
  53. package/dist/checkbox.js.map +1 -0
  54. package/dist/chip.cjs +56 -0
  55. package/dist/chip.cjs.map +1 -0
  56. package/dist/chip.js +140 -0
  57. package/dist/chip.js.map +1 -0
  58. package/dist/combobox.cjs +93 -0
  59. package/dist/combobox.cjs.map +1 -0
  60. package/dist/combobox.js +401 -0
  61. package/dist/combobox.js.map +1 -0
  62. package/dist/content/avatar/avatar-group.css?inline.cjs +2 -0
  63. package/dist/content/avatar/avatar-group.css?inline.cjs.map +1 -0
  64. package/dist/content/avatar/avatar-group.css?inline.js +6 -0
  65. package/dist/content/avatar/avatar-group.css?inline.js.map +1 -0
  66. package/dist/content/avatar/avatar.css?inline.cjs +2 -0
  67. package/dist/content/avatar/avatar.css?inline.cjs.map +1 -0
  68. package/dist/content/avatar/avatar.css?inline.js +6 -0
  69. package/dist/content/avatar/avatar.css?inline.js.map +1 -0
  70. package/dist/content/avatar/avatar.d.ts +78 -0
  71. package/dist/content/avatar/avatar.d.ts.map +1 -0
  72. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs +2 -0
  73. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +1 -0
  74. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js +6 -0
  75. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +1 -0
  76. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs +2 -0
  77. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +1 -0
  78. package/dist/content/breadcrumb/breadcrumb.css?inline.js +6 -0
  79. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +1 -0
  80. package/dist/content/breadcrumb/breadcrumb.d.ts +36 -0
  81. package/dist/content/breadcrumb/breadcrumb.d.ts.map +1 -0
  82. package/dist/content/card/card.css?inline.cjs +2 -0
  83. package/dist/content/card/card.css?inline.cjs.map +1 -0
  84. package/dist/content/card/card.css?inline.js +6 -0
  85. package/dist/content/card/card.css?inline.js.map +1 -0
  86. package/dist/content/card/card.d.ts +66 -0
  87. package/dist/content/card/card.d.ts.map +1 -0
  88. package/dist/content/index.cjs +1 -0
  89. package/dist/content/index.d.ts +15 -0
  90. package/dist/content/index.d.ts.map +1 -0
  91. package/dist/content/index.js +7 -0
  92. package/dist/content/pagination/pagination.css?inline.cjs +2 -0
  93. package/dist/content/pagination/pagination.css?inline.cjs.map +1 -0
  94. package/dist/content/pagination/pagination.css?inline.js +6 -0
  95. package/dist/content/pagination/pagination.css?inline.js.map +1 -0
  96. package/dist/content/pagination/pagination.d.ts +56 -0
  97. package/dist/content/pagination/pagination.d.ts.map +1 -0
  98. package/dist/content/separator/separator.css?inline.cjs +2 -0
  99. package/dist/content/separator/separator.css?inline.cjs.map +1 -0
  100. package/dist/content/separator/separator.css?inline.js +6 -0
  101. package/dist/content/separator/separator.css?inline.js.map +1 -0
  102. package/dist/content/separator/separator.d.ts +35 -0
  103. package/dist/content/separator/separator.d.ts.map +1 -0
  104. package/dist/content/table/table.css?inline.cjs +2 -0
  105. package/dist/content/table/table.css?inline.cjs.map +1 -0
  106. package/dist/content/table/table.css?inline.js +6 -0
  107. package/dist/content/table/table.css?inline.js.map +1 -0
  108. package/dist/content/table/table.d.ts +69 -0
  109. package/dist/content/table/table.d.ts.map +1 -0
  110. package/dist/content/text/text.css?inline.cjs +2 -0
  111. package/dist/content/text/text.css?inline.cjs.map +1 -0
  112. package/dist/content/text/text.css?inline.js +6 -0
  113. package/dist/content/text/text.css?inline.js.map +1 -0
  114. package/dist/content/text/text.d.ts +55 -0
  115. package/dist/content/text/text.d.ts.map +1 -0
  116. package/dist/craftit/dist/core/internal.cjs +2 -0
  117. package/dist/craftit/dist/core/internal.cjs.map +1 -0
  118. package/dist/craftit/dist/core/internal.js +25 -0
  119. package/dist/craftit/dist/core/internal.js.map +1 -0
  120. package/dist/craftit/dist/core/runtime-bindings.cjs +2 -0
  121. package/dist/craftit/dist/core/runtime-bindings.cjs.map +1 -0
  122. package/dist/craftit/dist/core/runtime-bindings.js +38 -0
  123. package/dist/craftit/dist/core/runtime-bindings.js.map +1 -0
  124. package/dist/craftit/dist/core/runtime-lifecycle.cjs +2 -0
  125. package/dist/craftit/dist/core/runtime-lifecycle.cjs.map +1 -0
  126. package/dist/craftit/dist/core/runtime-lifecycle.js +68 -0
  127. package/dist/craftit/dist/core/runtime-lifecycle.js.map +1 -0
  128. package/dist/craftit/dist/core/runtime.cjs +1 -0
  129. package/dist/craftit/dist/core/runtime.js +2 -0
  130. package/dist/craftit/dist/core/utilities.cjs +2 -0
  131. package/dist/craftit/dist/core/utilities.cjs.map +1 -0
  132. package/dist/craftit/dist/core/utilities.js +12 -0
  133. package/dist/craftit/dist/core/utilities.js.map +1 -0
  134. package/dist/craftit/dist/directives/attr.cjs +2 -0
  135. package/dist/craftit/dist/directives/attr.cjs.map +1 -0
  136. package/dist/craftit/dist/directives/attr.js +13 -0
  137. package/dist/craftit/dist/directives/attr.js.map +1 -0
  138. package/dist/craftit/dist/directives/bind.cjs +1 -0
  139. package/dist/craftit/dist/directives/bind.js +3 -0
  140. package/dist/craftit/dist/directives/choose.cjs +1 -0
  141. package/dist/craftit/dist/directives/choose.js +1 -0
  142. package/dist/craftit/dist/directives/classes.cjs +2 -0
  143. package/dist/craftit/dist/directives/classes.cjs.map +1 -0
  144. package/dist/craftit/dist/directives/classes.js +12 -0
  145. package/dist/craftit/dist/directives/classes.js.map +1 -0
  146. package/dist/craftit/dist/directives/each.cjs +2 -0
  147. package/dist/craftit/dist/directives/each.cjs.map +1 -0
  148. package/dist/craftit/dist/directives/each.js +96 -0
  149. package/dist/craftit/dist/directives/each.js.map +1 -0
  150. package/dist/craftit/dist/directives/index.cjs +1 -0
  151. package/dist/craftit/dist/directives/index.js +12 -0
  152. package/dist/craftit/dist/directives/match.cjs +1 -0
  153. package/dist/craftit/dist/directives/match.js +1 -0
  154. package/dist/craftit/dist/directives/memo.cjs +1 -0
  155. package/dist/craftit/dist/directives/memo.js +1 -0
  156. package/dist/craftit/dist/directives/raw.cjs +1 -0
  157. package/dist/craftit/dist/directives/raw.js +2 -0
  158. package/dist/craftit/dist/directives/spread.cjs +2 -0
  159. package/dist/craftit/dist/directives/spread.cjs.map +1 -0
  160. package/dist/craftit/dist/directives/spread.js +30 -0
  161. package/dist/craftit/dist/directives/spread.js.map +1 -0
  162. package/dist/craftit/dist/directives/style.cjs +1 -0
  163. package/dist/craftit/dist/directives/style.js +1 -0
  164. package/dist/craftit/dist/directives/until.cjs +1 -0
  165. package/dist/craftit/dist/directives/until.js +1 -0
  166. package/dist/craftit/dist/directives/when.cjs +2 -0
  167. package/dist/craftit/dist/directives/when.cjs.map +1 -0
  168. package/dist/craftit/dist/directives/when.js +14 -0
  169. package/dist/craftit/dist/directives/when.js.map +1 -0
  170. package/dist/craftit/dist/labs/a11y.cjs +2 -0
  171. package/dist/craftit/dist/labs/a11y.cjs.map +1 -0
  172. package/dist/craftit/dist/labs/a11y.js +38 -0
  173. package/dist/craftit/dist/labs/a11y.js.map +1 -0
  174. package/dist/craftit/dist/labs/list.cjs +2 -0
  175. package/dist/craftit/dist/labs/list.cjs.map +1 -0
  176. package/dist/craftit/dist/labs/list.js +87 -0
  177. package/dist/craftit/dist/labs/list.js.map +1 -0
  178. package/dist/craftit/dist/labs/observers.cjs +2 -0
  179. package/dist/craftit/dist/labs/observers.cjs.map +1 -0
  180. package/dist/craftit/dist/labs/observers.js +28 -0
  181. package/dist/craftit/dist/labs/observers.js.map +1 -0
  182. package/dist/craftit/dist/labs/overlay.cjs +2 -0
  183. package/dist/craftit/dist/labs/overlay.cjs.map +1 -0
  184. package/dist/craftit/dist/labs/overlay.js +49 -0
  185. package/dist/craftit/dist/labs/overlay.js.map +1 -0
  186. package/dist/craftit/dist/labs/selectable.cjs +2 -0
  187. package/dist/craftit/dist/labs/selectable.cjs.map +1 -0
  188. package/dist/craftit/dist/labs/selectable.js +29 -0
  189. package/dist/craftit/dist/labs/selectable.js.map +1 -0
  190. package/dist/craftit/dist/labs/selection.cjs +2 -0
  191. package/dist/craftit/dist/labs/selection.cjs.map +1 -0
  192. package/dist/craftit/dist/labs/selection.js +42 -0
  193. package/dist/craftit/dist/labs/selection.js.map +1 -0
  194. package/dist/craftit/dist/labs.cjs +1 -0
  195. package/dist/craftit/dist/labs.js +6 -0
  196. package/dist/custom-elements.json +2321 -0
  197. package/dist/dialog.cjs +33 -0
  198. package/dist/dialog.cjs.map +1 -0
  199. package/dist/dialog.js +94 -0
  200. package/dist/dialog.js.map +1 -0
  201. package/dist/disclosure/accordion/accordion.css?inline.cjs +2 -0
  202. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +1 -0
  203. package/dist/disclosure/accordion/accordion.css?inline.js +6 -0
  204. package/dist/disclosure/accordion/accordion.css?inline.js.map +1 -0
  205. package/dist/disclosure/accordion/accordion.d.ts +47 -0
  206. package/dist/disclosure/accordion/accordion.d.ts.map +1 -0
  207. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs +2 -0
  208. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +1 -0
  209. package/dist/disclosure/accordion-item/accordion-item.css?inline.js +6 -0
  210. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +1 -0
  211. package/dist/disclosure/accordion-item/accordion-item.d.ts +62 -0
  212. package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -0
  213. package/dist/disclosure/index.cjs +1 -0
  214. package/dist/disclosure/index.d.ts +11 -0
  215. package/dist/disclosure/index.d.ts.map +1 -0
  216. package/dist/disclosure/index.js +5 -0
  217. package/dist/disclosure/tab-item/tab-item.css?inline.cjs +2 -0
  218. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +1 -0
  219. package/dist/disclosure/tab-item/tab-item.css?inline.js +6 -0
  220. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +1 -0
  221. package/dist/disclosure/tab-item/tab-item.d.ts +39 -0
  222. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -0
  223. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs +2 -0
  224. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +1 -0
  225. package/dist/disclosure/tab-panel/tab-panel.css?inline.js +6 -0
  226. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +1 -0
  227. package/dist/disclosure/tab-panel/tab-panel.d.ts +30 -0
  228. package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -0
  229. package/dist/disclosure/tabs/tabs.css?inline.cjs +2 -0
  230. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +1 -0
  231. package/dist/disclosure/tabs/tabs.css?inline.js +6 -0
  232. package/dist/disclosure/tabs/tabs.css?inline.js.map +1 -0
  233. package/dist/disclosure/tabs/tabs.d.ts +64 -0
  234. package/dist/disclosure/tabs/tabs.d.ts.map +1 -0
  235. package/dist/drawer.cjs +31 -0
  236. package/dist/drawer.cjs.map +1 -0
  237. package/dist/drawer.js +98 -0
  238. package/dist/drawer.js.map +1 -0
  239. package/dist/feedback/alert/alert.css?inline.cjs +2 -0
  240. package/dist/feedback/alert/alert.css?inline.cjs.map +1 -0
  241. package/dist/feedback/alert/alert.css?inline.js +6 -0
  242. package/dist/feedback/alert/alert.css?inline.js.map +1 -0
  243. package/dist/feedback/alert/alert.d.ts +63 -0
  244. package/dist/feedback/alert/alert.d.ts.map +1 -0
  245. package/dist/feedback/badge/badge.css?inline.cjs +2 -0
  246. package/dist/feedback/badge/badge.css?inline.cjs.map +1 -0
  247. package/dist/feedback/badge/badge.css?inline.js +6 -0
  248. package/dist/feedback/badge/badge.css?inline.js.map +1 -0
  249. package/dist/feedback/badge/badge.d.ts +67 -0
  250. package/dist/feedback/badge/badge.d.ts.map +1 -0
  251. package/dist/feedback/chip/chip.css?inline.cjs +2 -0
  252. package/dist/feedback/chip/chip.css?inline.cjs.map +1 -0
  253. package/dist/feedback/chip/chip.css?inline.js +6 -0
  254. package/dist/feedback/chip/chip.css?inline.js.map +1 -0
  255. package/dist/feedback/chip/chip.d.ts +124 -0
  256. package/dist/feedback/chip/chip.d.ts.map +1 -0
  257. package/dist/feedback/index.cjs +1 -0
  258. package/dist/feedback/index.d.ts +13 -0
  259. package/dist/feedback/index.d.ts.map +1 -0
  260. package/dist/feedback/index.js +6 -0
  261. package/dist/feedback/progress/progress.css?inline.cjs +2 -0
  262. package/dist/feedback/progress/progress.css?inline.cjs.map +1 -0
  263. package/dist/feedback/progress/progress.css?inline.js +6 -0
  264. package/dist/feedback/progress/progress.css?inline.js.map +1 -0
  265. package/dist/feedback/progress/progress.d.ts +64 -0
  266. package/dist/feedback/progress/progress.d.ts.map +1 -0
  267. package/dist/feedback/skeleton/skeleton.css?inline.cjs +2 -0
  268. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +1 -0
  269. package/dist/feedback/skeleton/skeleton.css?inline.js +6 -0
  270. package/dist/feedback/skeleton/skeleton.css?inline.js.map +1 -0
  271. package/dist/feedback/skeleton/skeleton.d.ts +61 -0
  272. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -0
  273. package/dist/feedback/toast/index.d.ts +2 -0
  274. package/dist/feedback/toast/index.d.ts.map +1 -0
  275. package/dist/feedback/toast/toast.css?inline.cjs +2 -0
  276. package/dist/feedback/toast/toast.css?inline.cjs.map +1 -0
  277. package/dist/feedback/toast/toast.css?inline.js +6 -0
  278. package/dist/feedback/toast/toast.css?inline.js.map +1 -0
  279. package/dist/feedback/toast/toast.d.ts +95 -0
  280. package/dist/feedback/toast/toast.d.ts.map +1 -0
  281. package/dist/file-input.cjs +66 -0
  282. package/dist/file-input.cjs.map +1 -0
  283. package/dist/file-input.js +210 -0
  284. package/dist/file-input.js.map +1 -0
  285. package/dist/form.cjs +11 -0
  286. package/dist/form.cjs.map +1 -0
  287. package/dist/form.js +49 -0
  288. package/dist/form.js.map +1 -0
  289. package/dist/grid-item.cjs +2 -0
  290. package/dist/grid-item.cjs.map +1 -0
  291. package/dist/grid-item.js +28 -0
  292. package/dist/grid-item.js.map +1 -0
  293. package/dist/grid.cjs +2 -0
  294. package/dist/grid.cjs.map +1 -0
  295. package/dist/grid.js +90 -0
  296. package/dist/grid.js.map +1 -0
  297. package/dist/icons.cjs +176 -0
  298. package/dist/icons.cjs.map +1 -0
  299. package/dist/icons.d.ts +15 -0
  300. package/dist/icons.d.ts.map +1 -0
  301. package/dist/icons.js +181 -0
  302. package/dist/icons.js.map +1 -0
  303. package/dist/index.cjs +1 -0
  304. package/dist/index.d.ts +9 -0
  305. package/dist/index.d.ts.map +1 -0
  306. package/dist/index.js +53 -0
  307. package/dist/input.cjs +48 -0
  308. package/dist/input.cjs.map +1 -0
  309. package/dist/input.js +182 -0
  310. package/dist/input.js.map +1 -0
  311. package/dist/inputs/button/button.css?inline.cjs +2 -0
  312. package/dist/inputs/button/button.css?inline.cjs.map +1 -0
  313. package/dist/inputs/button/button.css?inline.js +6 -0
  314. package/dist/inputs/button/button.css?inline.js.map +1 -0
  315. package/dist/inputs/button/button.d.ts +73 -0
  316. package/dist/inputs/button/button.d.ts.map +1 -0
  317. package/dist/inputs/button-group/button-group.css?inline.cjs +2 -0
  318. package/dist/inputs/button-group/button-group.css?inline.cjs.map +1 -0
  319. package/dist/inputs/button-group/button-group.css?inline.js +6 -0
  320. package/dist/inputs/button-group/button-group.css?inline.js.map +1 -0
  321. package/dist/inputs/button-group/button-group.d.ts +52 -0
  322. package/dist/inputs/button-group/button-group.d.ts.map +1 -0
  323. package/dist/inputs/checkbox/checkbox.css?inline.cjs +2 -0
  324. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +1 -0
  325. package/dist/inputs/checkbox/checkbox.css?inline.js +6 -0
  326. package/dist/inputs/checkbox/checkbox.css?inline.js.map +1 -0
  327. package/dist/inputs/checkbox/checkbox.d.ts +43 -0
  328. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -0
  329. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs +2 -0
  330. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +1 -0
  331. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js +6 -0
  332. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +1 -0
  333. package/dist/inputs/checkbox-group/checkbox-group.d.ts +56 -0
  334. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -0
  335. package/dist/inputs/combobox/combobox-options.cjs +2 -0
  336. package/dist/inputs/combobox/combobox-options.cjs.map +1 -0
  337. package/dist/inputs/combobox/combobox-options.d.ts +7 -0
  338. package/dist/inputs/combobox/combobox-options.d.ts.map +1 -0
  339. package/dist/inputs/combobox/combobox-options.js +36 -0
  340. package/dist/inputs/combobox/combobox-options.js.map +1 -0
  341. package/dist/inputs/combobox/combobox-virtualizer.cjs +2 -0
  342. package/dist/inputs/combobox/combobox-virtualizer.cjs.map +1 -0
  343. package/dist/inputs/combobox/combobox-virtualizer.d.ts +20 -0
  344. package/dist/inputs/combobox/combobox-virtualizer.d.ts.map +1 -0
  345. package/dist/inputs/combobox/combobox-virtualizer.js +71 -0
  346. package/dist/inputs/combobox/combobox-virtualizer.js.map +1 -0
  347. package/dist/inputs/combobox/combobox.css?inline.cjs +2 -0
  348. package/dist/inputs/combobox/combobox.css?inline.cjs.map +1 -0
  349. package/dist/inputs/combobox/combobox.css?inline.js +6 -0
  350. package/dist/inputs/combobox/combobox.css?inline.js.map +1 -0
  351. package/dist/inputs/combobox/combobox.d.ts +28 -0
  352. package/dist/inputs/combobox/combobox.d.ts.map +1 -0
  353. package/dist/inputs/combobox/combobox.types.d.ts +36 -0
  354. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -0
  355. package/dist/inputs/file-input/file-input.css?inline.cjs +2 -0
  356. package/dist/inputs/file-input/file-input.css?inline.cjs.map +1 -0
  357. package/dist/inputs/file-input/file-input.css?inline.js +6 -0
  358. package/dist/inputs/file-input/file-input.css?inline.js.map +1 -0
  359. package/dist/inputs/file-input/file-input.d.ts +94 -0
  360. package/dist/inputs/file-input/file-input.d.ts.map +1 -0
  361. package/dist/inputs/form/form.css?inline.cjs +2 -0
  362. package/dist/inputs/form/form.css?inline.cjs.map +1 -0
  363. package/dist/inputs/form/form.css?inline.js +6 -0
  364. package/dist/inputs/form/form.css?inline.js.map +1 -0
  365. package/dist/inputs/form/form.d.ts +61 -0
  366. package/dist/inputs/form/form.d.ts.map +1 -0
  367. package/dist/inputs/index.cjs +1 -0
  368. package/dist/inputs/index.d.ts +38 -0
  369. package/dist/inputs/index.d.ts.map +1 -0
  370. package/dist/inputs/index.js +18 -0
  371. package/dist/inputs/input/input.css?inline.cjs +2 -0
  372. package/dist/inputs/input/input.css?inline.cjs.map +1 -0
  373. package/dist/inputs/input/input.css?inline.js +6 -0
  374. package/dist/inputs/input/input.css?inline.js.map +1 -0
  375. package/dist/inputs/input/input.d.ts +82 -0
  376. package/dist/inputs/input/input.d.ts.map +1 -0
  377. package/dist/inputs/number-input/number-input.css?inline.cjs +2 -0
  378. package/dist/inputs/number-input/number-input.css?inline.cjs.map +1 -0
  379. package/dist/inputs/number-input/number-input.css?inline.js +6 -0
  380. package/dist/inputs/number-input/number-input.css?inline.js.map +1 -0
  381. package/dist/inputs/number-input/number-input.d.ts +76 -0
  382. package/dist/inputs/number-input/number-input.d.ts.map +1 -0
  383. package/dist/inputs/otp-input/otp-input.css?inline.cjs +2 -0
  384. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +1 -0
  385. package/dist/inputs/otp-input/otp-input.css?inline.js +6 -0
  386. package/dist/inputs/otp-input/otp-input.css?inline.js.map +1 -0
  387. package/dist/inputs/otp-input/otp-input.d.ts +71 -0
  388. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -0
  389. package/dist/inputs/radio/radio.css?inline.cjs +2 -0
  390. package/dist/inputs/radio/radio.css?inline.cjs.map +1 -0
  391. package/dist/inputs/radio/radio.css?inline.js +6 -0
  392. package/dist/inputs/radio/radio.css?inline.js.map +1 -0
  393. package/dist/inputs/radio/radio.d.ts +41 -0
  394. package/dist/inputs/radio/radio.d.ts.map +1 -0
  395. package/dist/inputs/radio-group/radio-group.css?inline.cjs +2 -0
  396. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +1 -0
  397. package/dist/inputs/radio-group/radio-group.css?inline.js +6 -0
  398. package/dist/inputs/radio-group/radio-group.css?inline.js.map +1 -0
  399. package/dist/inputs/radio-group/radio-group.d.ts +61 -0
  400. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -0
  401. package/dist/inputs/rating/rating.css?inline.cjs +2 -0
  402. package/dist/inputs/rating/rating.css?inline.cjs.map +1 -0
  403. package/dist/inputs/rating/rating.css?inline.js +6 -0
  404. package/dist/inputs/rating/rating.css?inline.js.map +1 -0
  405. package/dist/inputs/rating/rating.d.ts +48 -0
  406. package/dist/inputs/rating/rating.d.ts.map +1 -0
  407. package/dist/inputs/select/select.css?inline.cjs +2 -0
  408. package/dist/inputs/select/select.css?inline.cjs.map +1 -0
  409. package/dist/inputs/select/select.css?inline.js +6 -0
  410. package/dist/inputs/select/select.css?inline.js.map +1 -0
  411. package/dist/inputs/select/select.d.ts +79 -0
  412. package/dist/inputs/select/select.d.ts.map +1 -0
  413. package/dist/inputs/shared/base-props.d.ts +39 -0
  414. package/dist/inputs/shared/base-props.d.ts.map +1 -0
  415. package/dist/inputs/shared/composables/index.cjs +1 -0
  416. package/dist/inputs/shared/composables/index.d.ts +3 -0
  417. package/dist/inputs/shared/composables/index.d.ts.map +1 -0
  418. package/dist/inputs/shared/composables/index.js +2 -0
  419. package/dist/inputs/shared/composables/use-text-field.cjs +2 -0
  420. package/dist/inputs/shared/composables/use-text-field.cjs.map +1 -0
  421. package/dist/inputs/shared/composables/use-text-field.d.ts +33 -0
  422. package/dist/inputs/shared/composables/use-text-field.d.ts.map +1 -0
  423. package/dist/inputs/shared/composables/use-text-field.js +41 -0
  424. package/dist/inputs/shared/composables/use-text-field.js.map +1 -0
  425. package/dist/inputs/shared/composables/use-toggle-field.cjs +2 -0
  426. package/dist/inputs/shared/composables/use-toggle-field.cjs.map +1 -0
  427. package/dist/inputs/shared/composables/use-toggle-field.d.ts +18 -0
  428. package/dist/inputs/shared/composables/use-toggle-field.d.ts.map +1 -0
  429. package/dist/inputs/shared/composables/use-toggle-field.js +26 -0
  430. package/dist/inputs/shared/composables/use-toggle-field.js.map +1 -0
  431. package/dist/inputs/shared/design-presets.cjs +2 -0
  432. package/dist/inputs/shared/design-presets.cjs.map +1 -0
  433. package/dist/inputs/shared/design-presets.d.ts +97 -0
  434. package/dist/inputs/shared/design-presets.d.ts.map +1 -0
  435. package/dist/inputs/shared/design-presets.js +92 -0
  436. package/dist/inputs/shared/design-presets.js.map +1 -0
  437. package/dist/inputs/shared/dom-sync/dropdown.cjs +2 -0
  438. package/dist/inputs/shared/dom-sync/dropdown.cjs.map +1 -0
  439. package/dist/inputs/shared/dom-sync/dropdown.d.ts +7 -0
  440. package/dist/inputs/shared/dom-sync/dropdown.d.ts.map +1 -0
  441. package/dist/inputs/shared/dom-sync/dropdown.js +30 -0
  442. package/dist/inputs/shared/dom-sync/dropdown.js.map +1 -0
  443. package/dist/inputs/shared/dom-sync/field-sync.cjs +2 -0
  444. package/dist/inputs/shared/dom-sync/field-sync.cjs.map +1 -0
  445. package/dist/inputs/shared/dom-sync/field-sync.d.ts +36 -0
  446. package/dist/inputs/shared/dom-sync/field-sync.d.ts.map +1 -0
  447. package/dist/inputs/shared/dom-sync/field-sync.js +37 -0
  448. package/dist/inputs/shared/dom-sync/field-sync.js.map +1 -0
  449. package/dist/inputs/shared/dom-sync/form-context.cjs +2 -0
  450. package/dist/inputs/shared/dom-sync/form-context.cjs.map +1 -0
  451. package/dist/inputs/shared/dom-sync/form-context.d.ts +18 -0
  452. package/dist/inputs/shared/dom-sync/form-context.d.ts.map +1 -0
  453. package/dist/inputs/shared/dom-sync/form-context.js +20 -0
  454. package/dist/inputs/shared/dom-sync/form-context.js.map +1 -0
  455. package/dist/inputs/shared/dom-sync/index.cjs +1 -0
  456. package/dist/inputs/shared/dom-sync/index.d.ts +5 -0
  457. package/dist/inputs/shared/dom-sync/index.d.ts.map +1 -0
  458. package/dist/inputs/shared/dom-sync/index.js +4 -0
  459. package/dist/inputs/shared/dom-sync/label-sync.cjs +2 -0
  460. package/dist/inputs/shared/dom-sync/label-sync.cjs.map +1 -0
  461. package/dist/inputs/shared/dom-sync/label-sync.d.ts +16 -0
  462. package/dist/inputs/shared/dom-sync/label-sync.d.ts.map +1 -0
  463. package/dist/inputs/shared/dom-sync/label-sync.js +12 -0
  464. package/dist/inputs/shared/dom-sync/label-sync.js.map +1 -0
  465. package/dist/inputs/shared/form-context.cjs +2 -0
  466. package/dist/inputs/shared/form-context.cjs.map +1 -0
  467. package/dist/inputs/shared/form-context.d.ts +19 -0
  468. package/dist/inputs/shared/form-context.d.ts.map +1 -0
  469. package/dist/inputs/shared/form-context.js +7 -0
  470. package/dist/inputs/shared/form-context.js.map +1 -0
  471. package/dist/inputs/shared/utils/assistive-text.cjs +2 -0
  472. package/dist/inputs/shared/utils/assistive-text.cjs.map +1 -0
  473. package/dist/inputs/shared/utils/assistive-text.d.ts +24 -0
  474. package/dist/inputs/shared/utils/assistive-text.d.ts.map +1 -0
  475. package/dist/inputs/shared/utils/assistive-text.js +37 -0
  476. package/dist/inputs/shared/utils/assistive-text.js.map +1 -0
  477. package/dist/inputs/shared/utils/choice-change.cjs +2 -0
  478. package/dist/inputs/shared/utils/choice-change.cjs.map +1 -0
  479. package/dist/inputs/shared/utils/choice-change.d.ts +8 -0
  480. package/dist/inputs/shared/utils/choice-change.d.ts.map +1 -0
  481. package/dist/inputs/shared/utils/choice-change.js +13 -0
  482. package/dist/inputs/shared/utils/choice-change.js.map +1 -0
  483. package/dist/inputs/shared/utils/controlled-csv.cjs +2 -0
  484. package/dist/inputs/shared/utils/controlled-csv.cjs.map +1 -0
  485. package/dist/inputs/shared/utils/controlled-csv.d.ts +8 -0
  486. package/dist/inputs/shared/utils/controlled-csv.d.ts.map +1 -0
  487. package/dist/inputs/shared/utils/controlled-csv.js +15 -0
  488. package/dist/inputs/shared/utils/controlled-csv.js.map +1 -0
  489. package/dist/inputs/shared/utils/field-values.cjs +2 -0
  490. package/dist/inputs/shared/utils/field-values.cjs.map +1 -0
  491. package/dist/inputs/shared/utils/field-values.d.ts +5 -0
  492. package/dist/inputs/shared/utils/field-values.d.ts.map +1 -0
  493. package/dist/inputs/shared/utils/field-values.js +13 -0
  494. package/dist/inputs/shared/utils/field-values.js.map +1 -0
  495. package/dist/inputs/shared/utils/index.d.ts +5 -0
  496. package/dist/inputs/shared/utils/index.d.ts.map +1 -0
  497. package/dist/inputs/shared/validation/index.cjs +2 -0
  498. package/dist/inputs/shared/validation/index.cjs.map +1 -0
  499. package/dist/inputs/shared/validation/index.d.ts +14 -0
  500. package/dist/inputs/shared/validation/index.d.ts.map +1 -0
  501. package/dist/inputs/shared/validation/index.js +13 -0
  502. package/dist/inputs/shared/validation/index.js.map +1 -0
  503. package/dist/inputs/slider/slider.css?inline.cjs +2 -0
  504. package/dist/inputs/slider/slider.css?inline.cjs.map +1 -0
  505. package/dist/inputs/slider/slider.css?inline.js +6 -0
  506. package/dist/inputs/slider/slider.css?inline.js.map +1 -0
  507. package/dist/inputs/slider/slider.d.ts +82 -0
  508. package/dist/inputs/slider/slider.d.ts.map +1 -0
  509. package/dist/inputs/switch/switch.css?inline.cjs +2 -0
  510. package/dist/inputs/switch/switch.css?inline.cjs.map +1 -0
  511. package/dist/inputs/switch/switch.css?inline.js +6 -0
  512. package/dist/inputs/switch/switch.css?inline.js.map +1 -0
  513. package/dist/inputs/switch/switch.d.ts +40 -0
  514. package/dist/inputs/switch/switch.d.ts.map +1 -0
  515. package/dist/inputs/textarea/textarea.css?inline.cjs +2 -0
  516. package/dist/inputs/textarea/textarea.css?inline.cjs.map +1 -0
  517. package/dist/inputs/textarea/textarea.css?inline.js +6 -0
  518. package/dist/inputs/textarea/textarea.css?inline.js.map +1 -0
  519. package/dist/inputs/textarea/textarea.d.ts +57 -0
  520. package/dist/inputs/textarea/textarea.d.ts.map +1 -0
  521. package/dist/layout/box/box.css?inline.cjs +2 -0
  522. package/dist/layout/box/box.css?inline.cjs.map +1 -0
  523. package/dist/layout/box/box.css?inline.js +6 -0
  524. package/dist/layout/box/box.css?inline.js.map +1 -0
  525. package/dist/layout/box/box.d.ts +52 -0
  526. package/dist/layout/box/box.d.ts.map +1 -0
  527. package/dist/layout/grid/grid.css?inline.cjs +2 -0
  528. package/dist/layout/grid/grid.css?inline.cjs.map +1 -0
  529. package/dist/layout/grid/grid.css?inline.js +6 -0
  530. package/dist/layout/grid/grid.css?inline.js.map +1 -0
  531. package/dist/layout/grid/grid.d.ts +105 -0
  532. package/dist/layout/grid/grid.d.ts.map +1 -0
  533. package/dist/layout/grid-item/grid-item.css?inline.cjs +2 -0
  534. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +1 -0
  535. package/dist/layout/grid-item/grid-item.css?inline.js +6 -0
  536. package/dist/layout/grid-item/grid-item.css?inline.js.map +1 -0
  537. package/dist/layout/grid-item/grid-item.d.ts +47 -0
  538. package/dist/layout/grid-item/grid-item.d.ts.map +1 -0
  539. package/dist/layout/index.cjs +1 -0
  540. package/dist/layout/index.d.ts +9 -0
  541. package/dist/layout/index.d.ts.map +1 -0
  542. package/dist/layout/index.js +4 -0
  543. package/dist/layout/sidebar/sidebar-group.css?inline.cjs +2 -0
  544. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +1 -0
  545. package/dist/layout/sidebar/sidebar-group.css?inline.js +6 -0
  546. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +1 -0
  547. package/dist/layout/sidebar/sidebar-item.css?inline.cjs +2 -0
  548. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +1 -0
  549. package/dist/layout/sidebar/sidebar-item.css?inline.js +6 -0
  550. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +1 -0
  551. package/dist/layout/sidebar/sidebar.css?inline.cjs +2 -0
  552. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +1 -0
  553. package/dist/layout/sidebar/sidebar.css?inline.js +6 -0
  554. package/dist/layout/sidebar/sidebar.css?inline.js.map +1 -0
  555. package/dist/layout/sidebar/sidebar.d.ts +190 -0
  556. package/dist/layout/sidebar/sidebar.d.ts.map +1 -0
  557. package/dist/menu.cjs +133 -0
  558. package/dist/menu.cjs.map +1 -0
  559. package/dist/menu.js +296 -0
  560. package/dist/menu.js.map +1 -0
  561. package/dist/number-input.cjs +55 -0
  562. package/dist/number-input.cjs.map +1 -0
  563. package/dist/number-input.js +158 -0
  564. package/dist/number-input.js.map +1 -0
  565. package/dist/otp-input.cjs +22 -0
  566. package/dist/otp-input.cjs.map +1 -0
  567. package/dist/otp-input.js +120 -0
  568. package/dist/otp-input.js.map +1 -0
  569. package/dist/overlay/dialog/dialog.css?inline.cjs +2 -0
  570. package/dist/overlay/dialog/dialog.css?inline.cjs.map +1 -0
  571. package/dist/overlay/dialog/dialog.css?inline.js +6 -0
  572. package/dist/overlay/dialog/dialog.css?inline.js.map +1 -0
  573. package/dist/overlay/dialog/dialog.d.ts +98 -0
  574. package/dist/overlay/dialog/dialog.d.ts.map +1 -0
  575. package/dist/overlay/drawer/drawer.css?inline.cjs +2 -0
  576. package/dist/overlay/drawer/drawer.css?inline.cjs.map +1 -0
  577. package/dist/overlay/drawer/drawer.css?inline.js +6 -0
  578. package/dist/overlay/drawer/drawer.css?inline.js.map +1 -0
  579. package/dist/overlay/drawer/drawer.d.ts +98 -0
  580. package/dist/overlay/drawer/drawer.d.ts.map +1 -0
  581. package/dist/overlay/index.cjs +1 -0
  582. package/dist/overlay/index.d.ts +11 -0
  583. package/dist/overlay/index.d.ts.map +1 -0
  584. package/dist/overlay/index.js +5 -0
  585. package/dist/overlay/menu/menu.css?inline.cjs +2 -0
  586. package/dist/overlay/menu/menu.css?inline.cjs.map +1 -0
  587. package/dist/overlay/menu/menu.css?inline.js +6 -0
  588. package/dist/overlay/menu/menu.css?inline.js.map +1 -0
  589. package/dist/overlay/menu/menu.d.ts +45 -0
  590. package/dist/overlay/menu/menu.d.ts.map +1 -0
  591. package/dist/overlay/popover/popover.css?inline.cjs +2 -0
  592. package/dist/overlay/popover/popover.css?inline.cjs.map +1 -0
  593. package/dist/overlay/popover/popover.css?inline.js +6 -0
  594. package/dist/overlay/popover/popover.css?inline.js.map +1 -0
  595. package/dist/overlay/popover/popover.d.ts +56 -0
  596. package/dist/overlay/popover/popover.d.ts.map +1 -0
  597. package/dist/overlay/tooltip/tooltip.css?inline.cjs +2 -0
  598. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +1 -0
  599. package/dist/overlay/tooltip/tooltip.css?inline.js +6 -0
  600. package/dist/overlay/tooltip/tooltip.css?inline.js.map +1 -0
  601. package/dist/overlay/tooltip/tooltip.d.ts +55 -0
  602. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -0
  603. package/dist/pagination.cjs +102 -0
  604. package/dist/pagination.cjs.map +1 -0
  605. package/dist/pagination.js +168 -0
  606. package/dist/pagination.js.map +1 -0
  607. package/dist/popover.cjs +16 -0
  608. package/dist/popover.cjs.map +1 -0
  609. package/dist/popover.js +110 -0
  610. package/dist/popover.js.map +1 -0
  611. package/dist/progress.cjs +51 -0
  612. package/dist/progress.cjs.map +1 -0
  613. package/dist/progress.js +90 -0
  614. package/dist/progress.js.map +1 -0
  615. package/dist/radio-group.cjs +20 -0
  616. package/dist/radio-group.cjs.map +1 -0
  617. package/dist/radio-group.js +104 -0
  618. package/dist/radio-group.js.map +1 -0
  619. package/dist/radio.cjs +16 -0
  620. package/dist/radio.cjs.map +1 -0
  621. package/dist/radio.js +135 -0
  622. package/dist/radio.js.map +1 -0
  623. package/dist/rating.cjs +37 -0
  624. package/dist/rating.cjs.map +1 -0
  625. package/dist/rating.js +123 -0
  626. package/dist/rating.js.map +1 -0
  627. package/dist/select.cjs +77 -0
  628. package/dist/select.cjs.map +1 -0
  629. package/dist/select.js +317 -0
  630. package/dist/select.js.map +1 -0
  631. package/dist/separator.cjs +26 -0
  632. package/dist/separator.cjs.map +1 -0
  633. package/dist/separator.js +46 -0
  634. package/dist/separator.js.map +1 -0
  635. package/dist/sidebar.cjs +69 -0
  636. package/dist/sidebar.cjs.map +1 -0
  637. package/dist/sidebar.js +202 -0
  638. package/dist/sidebar.js.map +1 -0
  639. package/dist/skeleton.cjs +10 -0
  640. package/dist/skeleton.cjs.map +1 -0
  641. package/dist/skeleton.js +56 -0
  642. package/dist/skeleton.js.map +1 -0
  643. package/dist/slider.cjs +24 -0
  644. package/dist/slider.cjs.map +1 -0
  645. package/dist/slider.js +209 -0
  646. package/dist/slider.js.map +1 -0
  647. package/dist/stateit/dist/computed.cjs +2 -0
  648. package/dist/stateit/dist/computed.cjs.map +1 -0
  649. package/dist/stateit/dist/computed.js +65 -0
  650. package/dist/stateit/dist/computed.js.map +1 -0
  651. package/dist/stateit/dist/effect.cjs +2 -0
  652. package/dist/stateit/dist/effect.cjs.map +1 -0
  653. package/dist/stateit/dist/effect.js +53 -0
  654. package/dist/stateit/dist/effect.js.map +1 -0
  655. package/dist/stateit/dist/index.cjs +1 -0
  656. package/dist/stateit/dist/index.js +5 -0
  657. package/dist/stateit/dist/runtime.cjs +2 -0
  658. package/dist/stateit/dist/runtime.cjs.map +1 -0
  659. package/dist/stateit/dist/runtime.js +43 -0
  660. package/dist/stateit/dist/runtime.js.map +1 -0
  661. package/dist/stateit/dist/signal.cjs +2 -0
  662. package/dist/stateit/dist/signal.cjs.map +1 -0
  663. package/dist/stateit/dist/signal.js +27 -0
  664. package/dist/stateit/dist/signal.js.map +1 -0
  665. package/dist/stateit/dist/store.cjs +2 -0
  666. package/dist/stateit/dist/store.cjs.map +1 -0
  667. package/dist/stateit/dist/store.js +17 -0
  668. package/dist/stateit/dist/store.js.map +1 -0
  669. package/dist/stateit/dist/types.cjs +2 -0
  670. package/dist/stateit/dist/types.cjs.map +1 -0
  671. package/dist/stateit/dist/types.js +6 -0
  672. package/dist/stateit/dist/types.js.map +1 -0
  673. package/dist/styles/animation.css +87 -0
  674. package/dist/styles/index.cjs +2 -0
  675. package/dist/styles/index.cjs.map +1 -0
  676. package/dist/styles/index.d.ts +48 -0
  677. package/dist/styles/index.d.ts.map +1 -0
  678. package/dist/styles/index.js +26 -0
  679. package/dist/styles/index.js.map +1 -0
  680. package/dist/styles/layer.css +18 -0
  681. package/dist/styles/mixins/accessibility.css.cjs +15 -0
  682. package/dist/styles/mixins/accessibility.css.cjs.map +1 -0
  683. package/dist/styles/mixins/accessibility.css.d.ts +46 -0
  684. package/dist/styles/mixins/accessibility.css.d.ts.map +1 -0
  685. package/dist/styles/mixins/accessibility.css.js +20 -0
  686. package/dist/styles/mixins/accessibility.css.js.map +1 -0
  687. package/dist/styles/mixins/animation.css.cjs +71 -0
  688. package/dist/styles/mixins/animation.css.cjs.map +1 -0
  689. package/dist/styles/mixins/animation.css.d.ts +22 -0
  690. package/dist/styles/mixins/animation.css.d.ts.map +1 -0
  691. package/dist/styles/mixins/animation.css.js +90 -0
  692. package/dist/styles/mixins/animation.css.js.map +1 -0
  693. package/dist/styles/mixins/shape.css.cjs +72 -0
  694. package/dist/styles/mixins/shape.css.cjs.map +1 -0
  695. package/dist/styles/mixins/shape.css.d.ts +97 -0
  696. package/dist/styles/mixins/shape.css.d.ts.map +1 -0
  697. package/dist/styles/mixins/shape.css.js +104 -0
  698. package/dist/styles/mixins/shape.css.js.map +1 -0
  699. package/dist/styles/mixins/states.css.cjs +18 -0
  700. package/dist/styles/mixins/states.css.cjs.map +1 -0
  701. package/dist/styles/mixins/states.css.d.ts +61 -0
  702. package/dist/styles/mixins/states.css.d.ts.map +1 -0
  703. package/dist/styles/mixins/states.css.js +26 -0
  704. package/dist/styles/mixins/states.css.js.map +1 -0
  705. package/dist/styles/mixins/theme.css.cjs +146 -0
  706. package/dist/styles/mixins/theme.css.cjs.map +1 -0
  707. package/dist/styles/mixins/theme.css.d.ts +93 -0
  708. package/dist/styles/mixins/theme.css.d.ts.map +1 -0
  709. package/dist/styles/mixins/theme.css.js +151 -0
  710. package/dist/styles/mixins/theme.css.js.map +1 -0
  711. package/dist/styles/mixins/variants.css.cjs +84 -0
  712. package/dist/styles/mixins/variants.css.cjs.map +1 -0
  713. package/dist/styles/mixins/variants.css.d.ts +22 -0
  714. package/dist/styles/mixins/variants.css.d.ts.map +1 -0
  715. package/dist/styles/mixins/variants.css.js +89 -0
  716. package/dist/styles/mixins/variants.css.js.map +1 -0
  717. package/dist/styles/preflight.css +237 -0
  718. package/dist/styles/styles.css +5 -0
  719. package/dist/styles/theme.css +457 -0
  720. package/dist/switch.cjs +16 -0
  721. package/dist/switch.cjs.map +1 -0
  722. package/dist/switch.js +82 -0
  723. package/dist/switch.js.map +1 -0
  724. package/dist/tab-item.cjs +17 -0
  725. package/dist/tab-item.cjs.map +1 -0
  726. package/dist/tab-item.js +57 -0
  727. package/dist/tab-item.js.map +1 -0
  728. package/dist/tab-panel.cjs +14 -0
  729. package/dist/tab-panel.cjs.map +1 -0
  730. package/dist/tab-panel.js +51 -0
  731. package/dist/tab-panel.js.map +1 -0
  732. package/dist/table.cjs +2 -0
  733. package/dist/table.cjs.map +1 -0
  734. package/dist/table.js +101 -0
  735. package/dist/table.js.map +1 -0
  736. package/dist/tabs.cjs +17 -0
  737. package/dist/tabs.cjs.map +1 -0
  738. package/dist/tabs.js +98 -0
  739. package/dist/tabs.js.map +1 -0
  740. package/dist/text.cjs +2 -0
  741. package/dist/text.cjs.map +1 -0
  742. package/dist/text.js +30 -0
  743. package/dist/text.js.map +1 -0
  744. package/dist/textarea.cjs +16 -0
  745. package/dist/textarea.cjs.map +1 -0
  746. package/dist/textarea.js +122 -0
  747. package/dist/textarea.js.map +1 -0
  748. package/dist/toast.cjs +63 -0
  749. package/dist/toast.cjs.map +1 -0
  750. package/dist/toast.js +221 -0
  751. package/dist/toast.js.map +1 -0
  752. package/dist/tooltip.cjs +15 -0
  753. package/dist/tooltip.cjs.map +1 -0
  754. package/dist/tooltip.js +111 -0
  755. package/dist/tooltip.js.map +1 -0
  756. package/dist/types/index.d.ts +7 -0
  757. package/dist/types/index.d.ts.map +1 -0
  758. package/dist/types/shared.d.ts +120 -0
  759. package/dist/types/shared.d.ts.map +1 -0
  760. package/dist/utils/animation.cjs +2 -0
  761. package/dist/utils/animation.cjs.map +1 -0
  762. package/dist/utils/animation.d.ts +2 -0
  763. package/dist/utils/animation.d.ts.map +1 -0
  764. package/dist/utils/animation.js +29 -0
  765. package/dist/utils/animation.js.map +1 -0
  766. package/dist/utils/background-lock.cjs +2 -0
  767. package/dist/utils/background-lock.cjs.map +1 -0
  768. package/dist/utils/background-lock.d.ts +20 -0
  769. package/dist/utils/background-lock.d.ts.map +1 -0
  770. package/dist/utils/background-lock.js +21 -0
  771. package/dist/utils/background-lock.js.map +1 -0
  772. package/dist/utils/index.cjs +1 -0
  773. package/dist/utils/index.d.ts +4 -0
  774. package/dist/utils/index.d.ts.map +1 -0
  775. package/dist/utils/index.js +3 -0
  776. package/dist/utils/use-overlay.cjs +2 -0
  777. package/dist/utils/use-overlay.cjs.map +1 -0
  778. package/dist/utils/use-overlay.d.ts +26 -0
  779. package/dist/utils/use-overlay.d.ts.map +1 -0
  780. package/dist/utils/use-overlay.js +34 -0
  781. package/dist/utils/use-overlay.js.map +1 -0
  782. package/dist/virtualit/dist/dom/dom.cjs +2 -0
  783. package/dist/virtualit/dist/dom/dom.cjs.map +1 -0
  784. package/dist/virtualit/dist/dom/dom.js +47 -0
  785. package/dist/virtualit/dist/dom/dom.js.map +1 -0
  786. package/dist/virtualit/dist/dom.cjs +1 -0
  787. package/dist/virtualit/dist/dom.js +2 -0
  788. package/dist/virtualit/dist/virtualit.cjs +2 -0
  789. package/dist/virtualit/dist/virtualit.cjs.map +1 -0
  790. package/dist/virtualit/dist/virtualit.js +129 -0
  791. package/dist/virtualit/dist/virtualit.js.map +1 -0
  792. package/package.json +282 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox.cjs","names":[],"sources":["../src/inputs/combobox/combobox.ts"],"sourcesContent":["import {\n aria,\n computed,\n createFormIds,\n css,\n defineComponent,\n defineField,\n effect,\n html,\n inject,\n onMount,\n onSlotChange,\n ref,\n signal,\n typed,\n watch,\n} from '@vielzeug/craftit';\nimport {\n createListNavigation,\n createOverlayControl,\n createSelectionControl,\n type ListNavigationResult,\n type OverlayOpenReason,\n} from '@vielzeug/craftit/labs';\n\nimport type { AddEventListeners } from '../../types';\n\nimport '../../feedback/chip/chip';\nimport { checkIconHTML, chevronDownIcon, clearIcon } from '../../icons';\nimport { disabledLoadingMixin, forcedColorsFocusMixin, formFieldMixins, sizeVariantMixin } from '../../styles';\nimport { FIELD_SIZE_PRESET } from '../shared/design-presets';\nimport { createDropdownPositioner, mountLabelSyncStandalone } from '../shared/dom-sync';\nimport { FORM_CTX } from '../shared/form-context';\nimport { computeControlledCsvState, createChoiceChangeDetail, resolveMergedAssistiveText } from '../shared/utils';\nimport { createFieldValidation } from '../shared/validation';\nimport {\n backfillSelectionLabels,\n filterOptions,\n getCreatableLabel,\n makeCreatableValue,\n parseSlottedOptions,\n} from './combobox-options';\nimport { createComboboxVirtualizer } from './combobox-virtualizer';\nimport componentStyles from './combobox.css?inline';\nimport {\n type BitComboboxEvents,\n type BitComboboxProps,\n type ComboboxOptionItem,\n type ComboboxSelectionItem,\n} from './combobox.types';\n\nexport type { BitComboboxEvents, BitComboboxOptionProps, BitComboboxProps } from './combobox.types';\n\n// ============================================\n// Styles\n// ============================================\n\n// ============================================\n// ComboboxOption Component\n// ============================================\n\n/**\n * `bit-combobox-option` — A child element of `<bit-combobox>` that represents one option.\n *\n * @slot - Label text for the option.\n * @slot icon - Optional leading icon or decoration.\n */\nexport const COMBOBOX_OPTION_TAG = defineComponent({\n setup() {\n const optionStyles = /* css */ css`\n @layer buildit.base {\n :host {\n display: none;\n }\n }\n `;\n\n return html`<style>\n ${optionStyles}\n </style>`;\n },\n tag: 'bit-combobox-option',\n});\n\n// ============================================\n// Component\n// ============================================\n\n/**\n * `bit-combobox` — Autocomplete/combobox text input with a filterable listbox.\n *\n * Place `<bit-combobox-option>` elements as children to define the available options.\n * Each option supports a `label` attribute (falls back to text content) and an `icon` named slot.\n *\n * @example\n * ```html\n * <bit-combobox label=\"Country\" placeholder=\"Search\\u2026\">\n * <bit-combobox-option value=\"us\">United States</bit-combobox-option>\n * <bit-combobox-option value=\"gb\">United Kingdom</bit-combobox-option>\n * <bit-combobox-option value=\"de\" disabled>Germany</bit-combobox-option>\n * </bit-combobox>\n * ```\n */\nexport const COMBOBOX_TAG = defineComponent<BitComboboxProps, BitComboboxEvents>({\n formAssociated: true,\n props: {\n clearable: { default: false },\n color: { default: undefined },\n creatable: { default: false },\n disabled: { default: false },\n error: { default: '', omit: true },\n fullwidth: { default: false },\n helper: { default: '' },\n label: { default: '' },\n 'label-placement': { default: 'inset' },\n loading: { default: false },\n multiple: { default: false },\n name: { default: '' },\n 'no-filter': { default: false },\n options: typed<ComboboxOptionItem[] | undefined>(undefined, { reflect: false }),\n placeholder: { default: '' },\n rounded: { default: undefined },\n size: { default: undefined },\n value: { default: '' },\n variant: { default: undefined },\n },\n setup({ emit, host, props }) {\n const { fieldId: comboId, helperId, labelId } = createFormIds('combobox', props.name.value);\n // Label refs\n const labelOutsideRef = ref<HTMLLabelElement>();\n const labelInsetRef = ref<HTMLLabelElement>();\n const formCtx = inject(FORM_CTX, undefined);\n // Signal for the form value\n const formValue = signal(String(props.value.value ?? ''));\n const fd = defineField(\n { disabled: computed(() => Boolean(props.disabled.value) || Boolean(formCtx?.disabled.value)), value: formValue },\n {\n onReset: () => {\n formValue.value = '';\n selectedValues.value = [];\n query.value = '';\n },\n },\n );\n\n const { triggerValidation } = createFieldValidation(formCtx, fd);\n\n // ── State ────────────────────────────────────────────────────────────────\n const isOpen = signal(false);\n const query = signal('');\n const isDisabled = computed(() => Boolean(props.disabled.value));\n const isMultiple = computed(() => Boolean(props.multiple.value));\n const isCreatable = computed(() => Boolean(props.creatable.value));\n const isNoFilter = computed(() => Boolean(props['no-filter'].value));\n\n watch(\n isOpen,\n (value) => {\n host.toggleAttribute('open', ((value) => Boolean(value))(value));\n },\n { immediate: true },\n );\n\n // Multi-value state: always an array; single mode uses at most one entry\n const selectedValues = signal<ComboboxSelectionItem[]>(\n props.value.value ? [{ label: '', value: props.value.value }] : [],\n );\n const focusedIndex = signal(-1);\n const selectionController = createSelectionControl<ComboboxSelectionItem>({\n findByKey: (value) => {\n const existing = selectedValues.value.find((item) => item.value === value);\n\n if (existing) return existing;\n\n // If not found in selection, try to find in all options to get label\n const option = allOptions.value.find((o) => o.value === value);\n\n if (option) return { label: option.label, value: option.value };\n\n // Fallback: key is the value\n return { label: '', value };\n },\n getMode: () => (isMultiple.value ? 'multiple' : 'single'),\n getSelected: () => selectedValues.value,\n keyExtractor: (item) => item.value,\n setSelected: (next) => {\n selectedValues.value = next;\n },\n });\n\n // Sync external value prop changes to selectedValues (controlled mode)\n const syncControlledValue = (nextValue: unknown): void => {\n const state = computeControlledCsvState(String(nextValue ?? ''));\n\n if (state.isEmpty) {\n selectionController.clear();\n query.value = '';\n formValue.value = '';\n\n return;\n }\n\n if (isMultiple.value) {\n selectedValues.value = state.values.map((value) => ({ label: '', value }));\n formValue.value = state.formValue;\n\n return;\n }\n\n // Single mode: one value\n selectedValues.value = [{ label: '', value: state.firstValue }];\n formValue.value = state.firstValue;\n };\n\n watch(props.value, (newValue) => syncControlledValue(newValue), { immediate: true });\n watch(props.multiple, () => syncControlledValue(props.value.value));\n\n // Convenience getter for single-select\n const selectedValue = computed(() => selectedValues.value[0]?.value ?? '');\n const hasValue = computed(() => selectedValues.value.length > 0);\n const hasLabel = computed(() => !!props.label.value);\n let inputEl: HTMLInputElement | null = null;\n let fieldEl: HTMLElement | null = null;\n let dropdownEl: HTMLElement | null = null;\n let listboxEl: HTMLElement | null = null;\n\n function getLiveInput(): HTMLInputElement | null {\n const liveInput = host.shadowRoot?.querySelector<HTMLInputElement>('input[role=\"combobox\"]') ?? null;\n\n if (liveInput) inputEl = liveInput;\n\n return liveInput ?? inputEl;\n }\n\n function focusLiveInput() {\n getLiveInput()?.focus();\n }\n\n // ── Options ──────────────────────────────────────────────────────────────\n const slottedOptions = signal<ComboboxOptionItem[]>([]);\n const createdOptions = signal<ComboboxOptionItem[]>([]);\n const isLoading = computed(() => Boolean(props.loading.value));\n // Merged options: explicit prop value overrides slotted options.\n const allOptions = computed<ComboboxOptionItem[]>(() => {\n const base = props.options.value ?? slottedOptions.value;\n\n if (createdOptions.value.length === 0) return base;\n\n return [...base, ...createdOptions.value];\n });\n\n function readOptions(elements: Element[] = Array.from(host.children)) {\n slottedOptions.value = parseSlottedOptions(elements);\n\n // Backfill labels for any already-selected values that were set before options loaded\n if (selectedValues.value.length > 0) {\n selectedValues.value = backfillSelectionLabels(selectedValues.value, allOptions.value);\n\n // Also sync the query in single mode\n if (!isMultiple.value && selectedValues.value.length === 1) {\n query.value = selectedValues.value[0]?.label ?? '';\n }\n }\n }\n\n const filteredOptions = computed<ComboboxOptionItem[]>(() => {\n return filterOptions(allOptions.value, query.value, isNoFilter.value);\n });\n // \"Create\" option shown when creatable + query doesn't match any existing option\n const creatableLabel = computed(() => {\n return getCreatableLabel(query.value, isCreatable.value, filteredOptions.value);\n });\n const assistiveText = computed(() => resolveMergedAssistiveText(props.error.value, props.helper.value));\n const inputPlaceholder = computed(() =>\n isMultiple.value && selectedValues.value.length > 0 ? '' : props.placeholder.value || '',\n );\n\n const selectedValueItems = computed(() => selectedValues.value.map((s) => s.value));\n const selectedLabelItems = computed(() =>\n selectedValues.value.map((selection) => {\n if (selection.label) return selection.label;\n\n return allOptions.value.find((option) => option.value === selection.value)?.label ?? selection.value;\n }),\n );\n\n function syncMultipleFormValue() {\n formValue.value = selectionController.serialize(',');\n }\n\n function emitChange(originalEvent?: Event) {\n emit('change', createChoiceChangeDetail(selectedValueItems.value, selectedLabelItems.value, originalEvent));\n }\n\n function removeChip(event: Event): void {\n event.stopPropagation();\n\n const value = (event as CustomEvent<{ value?: string }>).detail?.value;\n\n if (value === undefined) return;\n\n selectionController.remove(value);\n syncMultipleFormValue();\n emitChange(event);\n triggerValidation('change');\n }\n\n // ── Positioning (shared positioner) ──────────────────────────────────────\n const positioner = createDropdownPositioner(\n () => fieldEl,\n () => dropdownEl,\n );\n\n const listNavigation = createListNavigation<ComboboxOptionItem>({\n getIndex: () => focusedIndex.value,\n getItems: () => filteredOptions.value,\n isItemDisabled: (option) => option.disabled,\n setIndex: (index) => {\n focusedIndex.value = index;\n scrollFocusedIntoView();\n },\n });\n\n const overlay = createOverlayControl({\n getBoundaryElement: () => host,\n getPanelElement: () => dropdownEl,\n getTriggerElement: () => inputEl,\n isDisabled: () => isDisabled.value,\n isOpen: () => isOpen.value,\n positioner: {\n floating: () => dropdownEl,\n reference: () => fieldEl,\n update: () => positioner.updatePosition(),\n },\n restoreFocus: false,\n setOpen: (next, _context) => {\n isOpen.value = next;\n\n if (!next) listNavigation.reset();\n },\n });\n\n const applyNavigationResult = (result: ListNavigationResult): void => {\n if (result.reason === 'empty' || result.reason === 'no-enabled-item') {\n focusedIndex.value = -1;\n }\n };\n\n // ── Open / Close ─────────────────────────────────────────────────────────\n function open(clearFilter = true, reason: OverlayOpenReason = 'programmatic') {\n if (clearFilter) query.value = '';\n\n overlay.open({ reason });\n }\n\n function close(reason: 'escape' | 'programmatic' | 'outside-click' | 'toggle' = 'programmatic') {\n overlay.close({ reason, restoreFocus: false });\n\n // In single mode restore the query to the selected label (or clear)\n if (!isMultiple.value) {\n const match = allOptions.value.find((o) => o.value === selectedValue.value);\n\n query.value = match?.label ?? '';\n } else {\n query.value = '';\n }\n\n triggerValidation('blur');\n }\n // ── Selection ────────────────────────────────────────────────────────────\n function selectOption(opt: ComboboxOptionItem, originalEvent?: Event) {\n if (opt.disabled) return;\n\n if (isMultiple.value) {\n selectionController.toggle(opt.value);\n syncMultipleFormValue();\n query.value = '';\n emitChange(originalEvent);\n triggerValidation('change');\n // Keep dropdown open in multiple mode\n focusLiveInput();\n requestAnimationFrame(() => focusLiveInput());\n } else {\n selectionController.select(opt.value);\n query.value = opt.label;\n formValue.value = opt.value;\n emitChange(originalEvent);\n triggerValidation('change');\n close();\n focusLiveInput();\n }\n }\n function clearValue(e: Event) {\n e.stopPropagation();\n selectionController.clear();\n query.value = '';\n formValue.value = '';\n emitChange(e);\n triggerValidation('change');\n focusLiveInput();\n }\n function handleInput(e: Event) {\n const target = e.target as HTMLInputElement;\n\n query.value = target.value;\n\n if (!isMultiple.value) selectionController.clear();\n\n applyNavigationResult(listNavigation.first());\n\n if (!isOpen.value) open(false, 'trigger');\n\n emit('search', { query: target.value } as { query: string });\n }\n function handleFocus() {\n if (!isOpen.value) open(false, 'trigger');\n }\n // ── Keyboard Navigation ──────────────────────────────────────────────────\n function handleKeydown(e: KeyboardEvent) {\n if (isDisabled.value) return;\n\n const opts = filteredOptions.value;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n\n if (!isOpen.value) {\n open(true, 'trigger');\n\n applyNavigationResult(listNavigation.first());\n } else {\n applyNavigationResult(listNavigation.next());\n }\n\n break;\n case 'ArrowUp':\n e.preventDefault();\n\n if (!isOpen.value) {\n open(true, 'trigger');\n } else {\n applyNavigationResult(listNavigation.prev());\n }\n\n break;\n case 'Backspace':\n // In multiple mode, remove the last chip when the input is empty\n if (isMultiple.value && !query.value && selectedValues.value.length > 0) {\n selectedValues.value = selectedValues.value.slice(0, -1);\n syncMultipleFormValue();\n emitChange(e);\n triggerValidation('change');\n }\n\n break;\n case 'End':\n if (isOpen.value) {\n e.preventDefault();\n applyNavigationResult(listNavigation.last());\n }\n\n break;\n case 'Enter':\n e.preventDefault();\n\n if (isOpen.value && focusedIndex.value >= 0 && focusedIndex.value < opts.length) {\n selectOption(opts[focusedIndex.value], e);\n } else if (isOpen.value && focusedIndex.value === -1 && creatableLabel.value) {\n // Focused on the \"create\" item\n createOption(creatableLabel.value, e);\n } else if (!isOpen.value) {\n open();\n }\n\n break;\n case 'Escape':\n e.preventDefault();\n\n if (isOpen.value) {\n close('escape');\n }\n\n break;\n case 'Home':\n if (isOpen.value) {\n e.preventDefault();\n applyNavigationResult(listNavigation.first());\n }\n\n break;\n case 'Tab':\n close('programmatic');\n break;\n default:\n break;\n }\n }\n function scrollFocusedIntoView() {\n if (focusedIndex.value >= 0) {\n domVirtualList.scrollToIndex(focusedIndex.value, { align: 'auto' });\n\n return;\n }\n\n if (!listboxEl) return;\n\n const focusedEl = listboxEl.querySelector<HTMLElement>('[data-focused]');\n\n focusedEl?.scrollIntoView({ block: 'nearest' });\n }\n\n // ── Virtualizer ──────────────────────────────────────────────────────────\n const { domVirtualList, setupVirtualizer, updateRenderedItemState } = createComboboxVirtualizer({\n checkIconHTML,\n comboId,\n getDropdownElement: () => dropdownEl,\n getFocusedIndex: () => focusedIndex.peek(),\n getIsMultiple: () => isMultiple.peek(),\n getListboxElement: () => listboxEl,\n getSelectedValue: () => selectedValue.peek(),\n getSelectedValues: () => selectedValues.peek(),\n onSelectOption: selectOption,\n setFocusedIndex: (index) => {\n focusedIndex.value = index;\n },\n });\n\n // ── Create option ────────────────────────────────────────────────────────\n function createOption(label: string, originalEvent?: Event) {\n const value = makeCreatableValue(label);\n const newOpt: ComboboxOptionItem = { disabled: false, iconEl: null, label, value };\n\n createdOptions.value = [...createdOptions.value, newOpt];\n selectOption(newOpt, originalEvent);\n }\n // ── Lifecycle ────────────────────────────────────────────────────────────\n onMount(() => {\n fieldEl = inputEl?.closest('.field') as HTMLElement | null;\n dropdownEl = host.shadowRoot?.querySelector<HTMLElement>('.dropdown') ?? null;\n listboxEl = host.shadowRoot?.querySelector<HTMLElement>('[role=\"listbox\"]') ?? null;\n\n const removeOutsideClick = overlay.bindOutsideClick(document);\n\n onSlotChange('default', readOptions);\n // Ensure initial light-DOM options are available for immediate keyboard interaction.\n readOptions();\n // Rebuild virtualizer when filtered options or open state changes\n effect(() => {\n const opts = filteredOptions.value;\n const open = isOpen.value;\n\n if (open && opts.length > 0) {\n requestAnimationFrame(() => setupVirtualizer(opts, open));\n } else {\n domVirtualList.update(opts, false);\n }\n });\n mountLabelSyncStandalone(labelInsetRef, labelOutsideRef, props);\n effect(() => {\n if (listboxEl) {\n // Remove existing state nodes\n for (const el of Array.from(listboxEl.querySelectorAll('.no-results,.no-results-create,.dropdown-loading')))\n el.remove();\n\n if (isLoading.value) {\n const loadingEl = document.createElement('div');\n\n loadingEl.className = 'dropdown-loading';\n loadingEl.textContent = 'Loading\\u2026';\n listboxEl.prepend(loadingEl);\n } else if (filteredOptions.value.length === 0) {\n if (creatableLabel.value) {\n const createEl = document.createElement('button');\n\n createEl.type = 'button';\n createEl.className = 'no-results-create';\n createEl.textContent = `Create \"${creatableLabel.value}\"`;\n\n // Apply focused state when keyboard nav lands here (focusedIndex === -1 means create row)\n if (focusedIndex.value === -1) createEl.setAttribute('data-focused', '');\n\n createEl.addEventListener('pointerdown', (e: PointerEvent) => {\n e.preventDefault();\n });\n\n createEl.addEventListener('click', (e) => {\n e.stopPropagation();\n createOption(creatableLabel.value, e);\n });\n listboxEl.appendChild(createEl);\n } else {\n const noResults = document.createElement('div');\n\n noResults.className = 'no-results';\n noResults.setAttribute('role', 'presentation');\n noResults.textContent = 'No results found';\n listboxEl.appendChild(noResults);\n }\n }\n\n // Update focused/selected state on already-rendered items without touching\n // the DOM structure. The virtualizer owns full re-renders via onChange.\n updateRenderedItemState();\n }\n });\n // Keep rendered option selected/focused attributes in sync while the popup stays open.\n watch(\n [isOpen, props.multiple, focusedIndex, selectedValues, selectedValue],\n () => {\n if (!isOpen.value) return;\n\n updateRenderedItemState();\n },\n { immediate: true },\n );\n\n return () => {\n domVirtualList.destroy();\n positioner.destroy();\n removeOutsideClick();\n };\n });\n\n return html`\n <slot></slot>\n <div class=\"combobox-wrapper\" part=\"wrapper\">\n <label\n class=\"label-outside\"\n for=\"${comboId}\"\n id=\"${labelId}\"\n ref=${labelOutsideRef}\n hidden\n part=\"label\"></label>\n <div\n class=\"field\"\n part=\"field\"\n @click=\"${() => {\n if (!isOpen.value) open(false, 'trigger');\n\n focusLiveInput();\n }}\">\n <label class=\"label-inset\" for=\"${comboId}\" id=\"${labelId}\" ref=${labelInsetRef} hidden part=\"label\"></label>\n <div class=\"field-row\">\n <div class=\"chips-row\">\n <!-- Keep chip list diffing isolated so input node identity stays stable. -->\n <span class=\"chips-list\">\n ${() =>\n (isMultiple.value ? selectedValues.value : []).map(\n (item) => html`\n <bit-chip\n value=${item.value}\n aria-label=${item.label || item.value}\n mode=\"removable\"\n variant=\"flat\"\n size=\"sm\"\n color=${() => props.color.value}\n @remove=${removeChip}>\n ${item.label || item.value}\n </bit-chip>\n `,\n )}\n </span>\n <input\n ref=${(el: HTMLInputElement | null) => {\n inputEl = el;\n\n if (!el) {\n fieldEl = null;\n\n return;\n }\n\n fieldEl = el.closest('.field') as HTMLElement | null;\n aria(el, {\n activedescendant: () => (focusedIndex.value >= 0 ? `${comboId}-opt-${focusedIndex.value}` : null),\n autocomplete: 'list',\n controls: () => `${comboId}-listbox`,\n describedby: () => (props.error.value || props.helper.value ? helperId : null),\n disabled: () => isDisabled.value,\n expanded: () => (isOpen.value ? 'true' : 'false'),\n invalid: () => !!props.error.value,\n labelledby: () => (hasLabel.value ? labelId : null),\n });\n }}\n class=\"input\"\n part=\"input\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n id=\"${comboId}\"\n name=\"${() => props.name.value}\"\n placeholder=${() => inputPlaceholder.value}\n :disabled=\"${() => isDisabled.value}\"\n @input=${handleInput}\n @keydown=${handleKeydown}\n @focus=${handleFocus}\n .value=${query} />\n </div>\n <button\n class=\"clear-btn\"\n part=\"clear-btn\"\n type=\"button\"\n aria-label=\"Clear\"\n tabindex=\"-1\"\n ?hidden=${() => !hasValue.value}\n @click=\"${clearValue}\">\n ${clearIcon}\n </button>\n <span class=\"chevron\" aria-hidden=\"true\">\n ${chevronDownIcon}\n <span class=\"loader\" aria-label=\"Loading\"></span>\n </span>\n </div>\n </div>\n\n <div class=\"dropdown\" part=\"dropdown\" id=\"${() => `${comboId}-dropdown`}\" ?data-open=${() => isOpen.value}>\n <div\n role=\"listbox\"\n id=\"${() => `${comboId}-listbox`}\"\n aria-label=\"${() => props.label.value || props.placeholder.value || 'Options'}\"></div>\n </div>\n\n <span\n class=\"helper-text\"\n id=\"${helperId}\"\n part=\"helper-text\"\n aria-live=\"polite\"\n ?hidden=${() => assistiveText.value.hidden}\n style=${() => (assistiveText.value.isError ? 'color: var(--color-error);' : '')}\n >${() => assistiveText.value.text}</span\n >\n </div>\n `;\n },\n shadow: { delegatesFocus: true },\n styles: [\n sizeVariantMixin(FIELD_SIZE_PRESET),\n ...formFieldMixins,\n disabledLoadingMixin(),\n forcedColorsFocusMixin('.input'),\n componentStyles,\n ],\n tag: 'bit-combobox',\n}) as unknown as AddEventListeners<BitComboboxEvents>;\n"],"mappings":"ymCAmEA,IAAa,GAAA,EAAA,EAAA,iBAAsC,CACjD,OAAQ,CASN,MAAO,GAAA,IAAI;QARoB,EAAA,GAAG;;;;;;MASjB;eAGnB,IAAK,sBACN,CAAC,CAqBW,GAAA,EAAA,EAAA,iBAAoE,CAC/E,eAAgB,GAChB,MAAO,CACL,UAAW,CAAE,QAAS,GAAO,CAC7B,MAAO,CAAE,QAAS,IAAA,GAAW,CAC7B,UAAW,CAAE,QAAS,GAAO,CAC7B,SAAU,CAAE,QAAS,GAAO,CAC5B,MAAO,CAAE,QAAS,GAAI,KAAM,GAAM,CAClC,UAAW,CAAE,QAAS,GAAO,CAC7B,OAAQ,CAAE,QAAS,GAAI,CACvB,MAAO,CAAE,QAAS,GAAI,CACtB,kBAAmB,CAAE,QAAS,QAAS,CACvC,QAAS,CAAE,QAAS,GAAO,CAC3B,SAAU,CAAE,QAAS,GAAO,CAC5B,KAAM,CAAE,QAAS,GAAI,CACrB,YAAa,CAAE,QAAS,GAAO,CAC/B,SAAA,EAAA,EAAA,OAAiD,IAAA,GAAW,CAAE,QAAS,GAAO,CAAC,CAC/E,YAAa,CAAE,QAAS,GAAI,CAC5B,QAAS,CAAE,QAAS,IAAA,GAAW,CAC/B,KAAM,CAAE,QAAS,IAAA,GAAW,CAC5B,MAAO,CAAE,QAAS,GAAI,CACtB,QAAS,CAAE,QAAS,IAAA,GAAW,CAChC,CACD,MAAM,CAAE,OAAM,OAAM,SAAS,CAC3B,GAAM,CAAE,QAAS,EAAS,WAAU,YAAA,EAAA,EAAA,eAA0B,WAAY,EAAM,KAAK,MAAM,CAErF,GAAA,EAAA,EAAA,MAAyC,CACzC,GAAA,EAAA,EAAA,MAAuC,CACvC,GAAA,EAAA,EAAA,QAAiB,GAAA,SAAU,IAAA,GAAU,CAErC,GAAA,EAAA,EAAA,QAAmB,OAAO,EAAM,MAAM,OAAS,GAAG,CAAC,CAYnD,CAAE,qBAAsB,GAAA,sBAAsB,GAAA,EAAA,EAAA,aAVlD,CAAE,UAAA,EAAA,EAAA,cAAyB,EAAQ,EAAM,SAAS,OAAU,EAAQ,GAAS,SAAS,MAAO,CAAE,MAAO,EAAW,CACjH,CACE,YAAe,CACb,EAAU,MAAQ,GAClB,EAAe,MAAQ,EAAE,CACzB,EAAM,MAAQ,IAEjB,CACF,CAE+D,CAG1D,GAAA,EAAA,EAAA,QAAgB,GAAM,CACtB,GAAA,EAAA,EAAA,QAAe,GAAG,CAClB,GAAA,EAAA,EAAA,cAA4B,EAAQ,EAAM,SAAS,MAAO,CAC1D,GAAA,EAAA,EAAA,cAA4B,EAAQ,EAAM,SAAS,MAAO,CAC1D,IAAA,EAAA,EAAA,cAA6B,EAAQ,EAAM,UAAU,MAAO,CAC5D,GAAA,EAAA,EAAA,cAA4B,EAAQ,EAAM,aAAa,MAAO,EAEpE,EAAA,EAAA,OACE,EACC,GAAU,CACT,EAAK,gBAAgB,QAAU,GAAU,EAAQ,GAAQ,EAAM,CAAC,EAElE,CAAE,UAAW,GAAM,CACpB,CAGD,IAAM,GAAA,EAAA,EAAA,QACJ,EAAM,MAAM,MAAQ,CAAC,CAAE,MAAO,GAAI,MAAO,EAAM,MAAM,MAAO,CAAC,CAAG,EAAE,CACnE,CACK,GAAA,EAAA,EAAA,QAAsB,GAAG,CACzB,EAAsB,EAAA,EAA8C,CACxE,UAAY,GAAU,CACpB,IAAM,EAAW,EAAe,MAAM,KAAM,GAAS,EAAK,QAAU,EAAM,CAE1E,GAAI,EAAU,OAAO,EAGrB,IAAM,EAAS,EAAW,MAAM,KAAM,GAAM,EAAE,QAAU,EAAM,CAK9D,OAHI,EAAe,CAAE,MAAO,EAAO,MAAO,MAAO,EAAO,MAAO,CAGxD,CAAE,MAAO,GAAI,QAAO,EAE7B,YAAgB,EAAW,MAAQ,WAAa,SAChD,gBAAmB,EAAe,MAClC,aAAe,GAAS,EAAK,MAC7B,YAAc,GAAS,CACrB,EAAe,MAAQ,GAE1B,CAAC,CAGI,EAAuB,GAA6B,CACxD,IAAM,EAAQ,GAAA,0BAA0B,OAAO,GAAa,GAAG,CAAC,CAEhE,GAAI,EAAM,QAAS,CACjB,EAAoB,OAAO,CAC3B,EAAM,MAAQ,GACd,EAAU,MAAQ,GAElB,OAGF,GAAI,EAAW,MAAO,CACpB,EAAe,MAAQ,EAAM,OAAO,IAAK,IAAW,CAAE,MAAO,GAAI,QAAO,EAAE,CAC1E,EAAU,MAAQ,EAAM,UAExB,OAIF,EAAe,MAAQ,CAAC,CAAE,MAAO,GAAI,MAAO,EAAM,WAAY,CAAC,CAC/D,EAAU,MAAQ,EAAM,aAG1B,EAAA,EAAA,OAAM,EAAM,MAAQ,GAAa,EAAoB,EAAS,CAAE,CAAE,UAAW,GAAM,CAAC,EACpF,EAAA,EAAA,OAAM,EAAM,aAAgB,EAAoB,EAAM,MAAM,MAAM,CAAC,CAGnE,IAAM,GAAA,EAAA,EAAA,cAA+B,EAAe,MAAM,IAAI,OAAS,GAAG,CACpE,IAAA,EAAA,EAAA,cAA0B,EAAe,MAAM,OAAS,EAAE,CAC1D,IAAA,EAAA,EAAA,cAA0B,CAAC,CAAC,EAAM,MAAM,MAAM,CAChD,EAAmC,KACnC,EAA8B,KAC9B,EAAiC,KACjC,EAAgC,KAEpC,SAAS,IAAwC,CAC/C,IAAM,EAAY,EAAK,YAAY,cAAgC,yBAAyB,EAAI,KAIhG,OAFI,IAAW,EAAU,GAElB,GAAa,EAGtB,SAAS,GAAiB,CACxB,IAAc,EAAE,OAAO,CAIzB,IAAM,GAAA,EAAA,EAAA,QAA8C,EAAE,CAAC,CACjD,GAAA,EAAA,EAAA,QAA8C,EAAE,CAAC,CACjD,IAAA,EAAA,EAAA,cAA2B,EAAQ,EAAM,QAAQ,MAAO,CAExD,GAAA,EAAA,EAAA,cAAkD,CACtD,IAAM,EAAO,EAAM,QAAQ,OAAS,EAAe,MAInD,OAFI,EAAe,MAAM,SAAW,EAAU,EAEvC,CAAC,GAAG,EAAM,GAAG,EAAe,MAAM,EACzC,CAEF,SAAS,EAAY,EAAsB,MAAM,KAAK,EAAK,SAAS,CAAE,CACpE,EAAe,MAAQ,EAAA,oBAAoB,EAAS,CAGhD,EAAe,MAAM,OAAS,IAChC,EAAe,MAAQ,EAAA,wBAAwB,EAAe,MAAO,EAAW,MAAM,CAGlF,CAAC,EAAW,OAAS,EAAe,MAAM,SAAW,IACvD,EAAM,MAAQ,EAAe,MAAM,IAAI,OAAS,KAKtD,IAAM,GAAA,EAAA,EAAA,cACG,EAAA,cAAc,EAAW,MAAO,EAAM,MAAO,EAAW,MAAM,CACrE,CAEI,GAAA,EAAA,EAAA,cACG,EAAA,kBAAkB,EAAM,MAAO,GAAY,MAAO,EAAgB,MAAM,CAC/E,CACI,GAAA,EAAA,EAAA,cAA+B,GAAA,2BAA2B,EAAM,MAAM,MAAO,EAAM,OAAO,MAAM,CAAC,CACjG,GAAA,EAAA,EAAA,cACJ,EAAW,OAAS,EAAe,MAAM,OAAS,EAAI,GAAK,EAAM,YAAY,OAAS,GACvF,CAEK,GAAA,EAAA,EAAA,cAAoC,EAAe,MAAM,IAAK,GAAM,EAAE,MAAM,CAAC,CAC7E,IAAA,EAAA,EAAA,cACJ,EAAe,MAAM,IAAK,GACpB,EAAU,MAAc,EAAU,MAE/B,EAAW,MAAM,KAAM,GAAW,EAAO,QAAU,EAAU,MAAM,EAAE,OAAS,EAAU,MAC/F,CACH,CAED,SAAS,GAAwB,CAC/B,EAAU,MAAQ,EAAoB,UAAU,IAAI,CAGtD,SAAS,EAAW,EAAuB,CACzC,EAAK,SAAU,GAAA,yBAAyB,EAAmB,MAAO,GAAmB,MAAO,EAAc,CAAC,CAG7G,SAAS,GAAW,EAAoB,CACtC,EAAM,iBAAiB,CAEvB,IAAM,EAAS,EAA0C,QAAQ,MAE7D,IAAU,IAAA,KAEd,EAAoB,OAAO,EAAM,CACjC,GAAuB,CACvB,EAAW,EAAM,CACjB,EAAkB,SAAS,EAI7B,IAAM,EAAa,EAAA,6BACX,MACA,EACP,CAEK,EAAiB,GAAA,EAAyC,CAC9D,aAAgB,EAAa,MAC7B,aAAgB,EAAgB,MAChC,eAAiB,GAAW,EAAO,SACnC,SAAW,GAAU,CACnB,EAAa,MAAQ,EACrB,IAAuB,EAE1B,CAAC,CAEI,EAAU,EAAA,EAAqB,CACnC,uBAA0B,EAC1B,oBAAuB,EACvB,sBAAyB,EACzB,eAAkB,EAAW,MAC7B,WAAc,EAAO,MACrB,WAAY,CACV,aAAgB,EAChB,cAAiB,EACjB,WAAc,EAAW,gBAAgB,CAC1C,CACD,aAAc,GACd,SAAU,EAAM,IAAa,CAC3B,EAAO,MAAQ,EAEV,GAAM,EAAe,OAAO,EAEpC,CAAC,CAEI,EAAyB,GAAuC,EAChE,EAAO,SAAW,SAAW,EAAO,SAAW,qBACjD,EAAa,MAAQ,KAKzB,SAAS,EAAK,EAAc,GAAM,EAA4B,eAAgB,CACxE,IAAa,EAAM,MAAQ,IAE/B,EAAQ,KAAK,CAAE,SAAQ,CAAC,CAG1B,SAAS,EAAM,EAAiE,eAAgB,CAC9F,EAAQ,MAAM,CAAE,SAAQ,aAAc,GAAO,CAAC,CAGzC,EAAW,MAKd,EAAM,MAAQ,GAFd,EAAM,MAFQ,EAAW,MAAM,KAAM,GAAM,EAAE,QAAU,EAAc,MAAM,EAEtD,OAAS,GAKhC,EAAkB,OAAO,CAG3B,SAAS,EAAa,EAAyB,EAAuB,CAChE,EAAI,WAEJ,EAAW,OACb,EAAoB,OAAO,EAAI,MAAM,CACrC,GAAuB,CACvB,EAAM,MAAQ,GACd,EAAW,EAAc,CACzB,EAAkB,SAAS,CAE3B,GAAgB,CAChB,0BAA4B,GAAgB,CAAC,GAE7C,EAAoB,OAAO,EAAI,MAAM,CACrC,EAAM,MAAQ,EAAI,MAClB,EAAU,MAAQ,EAAI,MACtB,EAAW,EAAc,CACzB,EAAkB,SAAS,CAC3B,GAAO,CACP,GAAgB,GAGpB,SAAS,GAAW,EAAU,CAC5B,EAAE,iBAAiB,CACnB,EAAoB,OAAO,CAC3B,EAAM,MAAQ,GACd,EAAU,MAAQ,GAClB,EAAW,EAAE,CACb,EAAkB,SAAS,CAC3B,GAAgB,CAElB,SAAS,GAAY,EAAU,CAC7B,IAAM,EAAS,EAAE,OAEjB,EAAM,MAAQ,EAAO,MAEhB,EAAW,OAAO,EAAoB,OAAO,CAElD,EAAsB,EAAe,OAAO,CAAC,CAExC,EAAO,OAAO,EAAK,GAAO,UAAU,CAEzC,EAAK,SAAU,CAAE,MAAO,EAAO,MAAO,CAAsB,CAE9D,SAAS,IAAc,CAChB,EAAO,OAAO,EAAK,GAAO,UAAU,CAG3C,SAAS,GAAc,EAAkB,CACvC,GAAI,EAAW,MAAO,OAEtB,IAAM,EAAO,EAAgB,MAE7B,OAAQ,EAAE,IAAV,CACE,IAAK,YACH,EAAE,gBAAgB,CAEb,EAAO,MAKV,EAAsB,EAAe,MAAM,CAAC,EAJ5C,EAAK,GAAM,UAAU,CAErB,EAAsB,EAAe,OAAO,CAAC,EAK/C,MACF,IAAK,UACH,EAAE,gBAAgB,CAEb,EAAO,MAGV,EAAsB,EAAe,MAAM,CAAC,CAF5C,EAAK,GAAM,UAAU,CAKvB,MACF,IAAK,YAEC,EAAW,OAAS,CAAC,EAAM,OAAS,EAAe,MAAM,OAAS,IACpE,EAAe,MAAQ,EAAe,MAAM,MAAM,EAAG,GAAG,CACxD,GAAuB,CACvB,EAAW,EAAE,CACb,EAAkB,SAAS,EAG7B,MACF,IAAK,MACC,EAAO,QACT,EAAE,gBAAgB,CAClB,EAAsB,EAAe,MAAM,CAAC,EAG9C,MACF,IAAK,QACH,EAAE,gBAAgB,CAEd,EAAO,OAAS,EAAa,OAAS,GAAK,EAAa,MAAQ,EAAK,OACvE,EAAa,EAAK,EAAa,OAAQ,EAAE,CAChC,EAAO,OAAS,EAAa,QAAU,IAAM,EAAe,MAErE,EAAa,EAAe,MAAO,EAAE,CAC3B,EAAO,OACjB,GAAM,CAGR,MACF,IAAK,SACH,EAAE,gBAAgB,CAEd,EAAO,OACT,EAAM,SAAS,CAGjB,MACF,IAAK,OACC,EAAO,QACT,EAAE,gBAAgB,CAClB,EAAsB,EAAe,OAAO,CAAC,EAG/C,MACF,IAAK,MACH,EAAM,eAAe,CACrB,MACF,QACE,OAGN,SAAS,IAAwB,CAC/B,GAAI,EAAa,OAAS,EAAG,CAC3B,EAAe,cAAc,EAAa,MAAO,CAAE,MAAO,OAAQ,CAAC,CAEnE,OAGG,GAEa,EAAU,cAA2B,iBAAiB,EAE7D,eAAe,CAAE,MAAO,UAAW,CAAC,CAIjD,GAAM,CAAE,iBAAgB,oBAAkB,2BAA4B,GAAA,0BAA0B,CAC9F,cAAA,EAAA,cACA,UACA,uBAA0B,EAC1B,oBAAuB,EAAa,MAAM,CAC1C,kBAAqB,EAAW,MAAM,CACtC,sBAAyB,EACzB,qBAAwB,EAAc,MAAM,CAC5C,sBAAyB,EAAe,MAAM,CAC9C,eAAgB,EAChB,gBAAkB,GAAU,CAC1B,EAAa,MAAQ,GAExB,CAAC,CAGF,SAAS,EAAa,EAAe,EAAuB,CAE1D,IAAM,EAA6B,CAAE,SAAU,GAAO,OAAQ,KAAM,QAAO,MAD7D,EAAA,mBAAmB,EAAM,CAC2C,CAElF,EAAe,MAAQ,CAAC,GAAG,EAAe,MAAO,EAAO,CACxD,EAAa,EAAQ,EAAc,CA0FrC,OAvFA,EAAA,EAAA,aAAc,CACZ,EAAU,GAAS,QAAQ,SAAS,CACpC,EAAa,EAAK,YAAY,cAA2B,YAAY,EAAI,KACzE,EAAY,EAAK,YAAY,cAA2B,mBAAmB,EAAI,KAE/E,IAAM,EAAqB,EAAQ,iBAAiB,SAAS,CA2E7D,OAzEA,EAAA,EAAA,cAAa,UAAW,EAAY,CAEpC,GAAa,EAEb,EAAA,EAAA,YAAa,CACX,IAAM,EAAO,EAAgB,MACvB,EAAO,EAAO,MAEhB,GAAQ,EAAK,OAAS,EACxB,0BAA4B,GAAiB,EAAM,EAAK,CAAC,CAEzD,EAAe,OAAO,EAAM,GAAM,EAEpC,CACF,EAAA,yBAAyB,EAAe,EAAiB,EAAM,EAC/D,EAAA,EAAA,YAAa,CACX,GAAI,EAAW,CAEb,IAAK,IAAM,KAAM,MAAM,KAAK,EAAU,iBAAiB,mDAAmD,CAAC,CACzG,EAAG,QAAQ,CAEb,GAAI,GAAU,MAAO,CACnB,IAAM,EAAY,SAAS,cAAc,MAAM,CAE/C,EAAU,UAAY,mBACtB,EAAU,YAAc,WACxB,EAAU,QAAQ,EAAU,SACnB,EAAgB,MAAM,SAAW,EAC1C,GAAI,EAAe,MAAO,CACxB,IAAM,EAAW,SAAS,cAAc,SAAS,CAEjD,EAAS,KAAO,SAChB,EAAS,UAAY,oBACrB,EAAS,YAAc,WAAW,EAAe,MAAM,GAGnD,EAAa,QAAU,IAAI,EAAS,aAAa,eAAgB,GAAG,CAExE,EAAS,iBAAiB,cAAgB,GAAoB,CAC5D,EAAE,gBAAgB,EAClB,CAEF,EAAS,iBAAiB,QAAU,GAAM,CACxC,EAAE,iBAAiB,CACnB,EAAa,EAAe,MAAO,EAAE,EACrC,CACF,EAAU,YAAY,EAAS,KAC1B,CACL,IAAM,EAAY,SAAS,cAAc,MAAM,CAE/C,EAAU,UAAY,aACtB,EAAU,aAAa,OAAQ,eAAe,CAC9C,EAAU,YAAc,mBACxB,EAAU,YAAY,EAAU,CAMpC,GAAyB,GAE3B,EAEF,EAAA,EAAA,OACE,CAAC,EAAQ,EAAM,SAAU,EAAc,EAAgB,EAAc,KAC/D,CACC,EAAO,OAEZ,GAAyB,EAE3B,CAAE,UAAW,GAAM,CACpB,KAEY,CACX,EAAe,SAAS,CACxB,EAAW,SAAS,CACpB,GAAoB,GAEtB,CAEK,EAAA,IAAI;;;;;iBAKE,EAAQ;gBACT,EAAQ;gBACR,EAAgB;;;;;;wBAMN,CACT,EAAO,OAAO,EAAK,GAAO,UAAU,CAEzC,GAAgB,EAChB;4CACgC,EAAQ,QAAQ,EAAQ,QAAQ,EAAc;;;;;uBAMvE,EAAW,MAAQ,EAAe,MAAQ,EAAE,EAAE,IAC5C,GAAS,EAAA,IAAI;;gCAEF,EAAK,MAAM;qCACN,EAAK,OAAS,EAAK,MAAM;;;;oCAIxB,EAAM,MAAM,MAAM;kCACtB,GAAW;0BACnB,EAAK,OAAS,EAAK,MAAM;;sBAGhC,CAAC;;;sBAGG,GAAgC,CAGrC,GAFA,EAAU,EAEN,CAAC,EAAI,CACP,EAAU,KAEV,OAGF,EAAU,EAAG,QAAQ,SAAS,EAC9B,EAAA,EAAA,MAAK,EAAI,CACP,qBAAyB,EAAa,OAAS,EAAI,GAAG,EAAQ,OAAO,EAAa,QAAU,KAC5F,aAAc,OACd,aAAgB,GAAG,EAAQ,UAC3B,gBAAoB,EAAM,MAAM,OAAS,EAAM,OAAO,MAAQ,EAAW,KACzE,aAAgB,EAAW,MAC3B,aAAiB,EAAO,MAAQ,OAAS,QACzC,YAAe,CAAC,CAAC,EAAM,MAAM,MAC7B,eAAmB,GAAS,MAAQ,EAAU,KAC/C,CAAC,EACF;;;;;;;sBAOI,EAAQ;4BACA,EAAM,KAAK,MAAM;kCACX,EAAiB,MAAM;iCACxB,EAAW,MAAM;yBAC3B,GAAY;2BACV,GAAc;yBAChB,GAAY;yBACZ,EAAM;;;;;;;;4BAQD,CAAC,GAAS,MAAM;wBACtB,GAAW;gBACnB,EAAA,UAAU;;;gBAGV,EAAA,gBAAgB;;;;;;wDAM0B,GAAG,EAAQ,WAAW,mBAAqB,EAAO,MAAM;;;sBAG1F,GAAG,EAAQ,UAAU;8BACb,EAAM,MAAM,OAAS,EAAM,YAAY,OAAS,UAAU;;;;;gBAK1E,EAAS;;;wBAGC,EAAc,MAAM,OAAO;sBAC5B,EAAc,MAAM,QAAU,6BAA+B,GAAI;iBACvE,EAAc,MAAM,KAAK;;;OAK1C,OAAQ,CAAE,eAAgB,GAAM,CAChC,OAAQ,CACN,EAAA,iBAAiB,EAAA,kBAAkB,CACnC,GAAG,EAAA,gBACH,EAAA,sBAAsB,CACtB,EAAA,uBAAuB,SAAS,CAChC,EAAA,QACD,CACD,IAAK,eACN,CAAC"}
@@ -0,0 +1,401 @@
1
+ import { sizeVariantMixin as e } from "./styles/mixins/shape.css.js";
2
+ import { disabledLoadingMixin as t } from "./styles/mixins/states.css.js";
3
+ import { forcedColorsFocusMixin as n } from "./styles/mixins/theme.css.js";
4
+ import { formFieldMixins as r } from "./styles/index.js";
5
+ import { checkIconHTML as ee, chevronDownIcon as te, clearIcon as ne } from "./icons.js";
6
+ import "./chip.js";
7
+ import { e as re } from "./craftit/dist/labs/list.js";
8
+ import { t as ie } from "./craftit/dist/labs/overlay.js";
9
+ import { e as ae } from "./craftit/dist/labs/selection.js";
10
+ import "./craftit/dist/labs.js";
11
+ import { createDropdownPositioner as oe } from "./inputs/shared/dom-sync/dropdown.js";
12
+ import { resolveMergedAssistiveText as se } from "./inputs/shared/utils/assistive-text.js";
13
+ import { createChoiceChangeDetail as ce } from "./inputs/shared/utils/choice-change.js";
14
+ import { computeControlledCsvState as le } from "./inputs/shared/utils/controlled-csv.js";
15
+ import { FORM_CTX as i } from "./inputs/shared/form-context.js";
16
+ import { mountLabelSyncStandalone as ue } from "./inputs/shared/dom-sync/label-sync.js";
17
+ import "./inputs/shared/dom-sync/index.js";
18
+ import { createFieldValidation as de } from "./inputs/shared/validation/index.js";
19
+ import { FIELD_SIZE_PRESET as a } from "./inputs/shared/design-presets.js";
20
+ import { backfillSelectionLabels as fe, filterOptions as pe, getCreatableLabel as me, makeCreatableValue as he, parseSlottedOptions as ge } from "./inputs/combobox/combobox-options.js";
21
+ import { createComboboxVirtualizer as _e } from "./inputs/combobox/combobox-virtualizer.js";
22
+ import o from "./inputs/combobox/combobox.css?inline.js";
23
+ import { aria as s, computed as c, createFormIds as ve, css as l, defineComponent as u, defineField as ye, effect as d, html as f, inject as be, onMount as xe, onSlotChange as Se, ref as p, signal as m, typed as h, watch as g } from "@vielzeug/craftit";
24
+ //#region src/inputs/combobox/combobox.ts
25
+ var _ = u({
26
+ setup() {
27
+ return f`<style>
28
+ ${l`
29
+ @layer buildit.base {
30
+ :host {
31
+ display: none;
32
+ }
33
+ }
34
+ `}
35
+ </style>`;
36
+ },
37
+ tag: "bit-combobox-option"
38
+ }), v = u({
39
+ formAssociated: !0,
40
+ props: {
41
+ clearable: { default: !1 },
42
+ color: { default: void 0 },
43
+ creatable: { default: !1 },
44
+ disabled: { default: !1 },
45
+ error: {
46
+ default: "",
47
+ omit: !0
48
+ },
49
+ fullwidth: { default: !1 },
50
+ helper: { default: "" },
51
+ label: { default: "" },
52
+ "label-placement": { default: "inset" },
53
+ loading: { default: !1 },
54
+ multiple: { default: !1 },
55
+ name: { default: "" },
56
+ "no-filter": { default: !1 },
57
+ options: h(void 0, { reflect: !1 }),
58
+ placeholder: { default: "" },
59
+ rounded: { default: void 0 },
60
+ size: { default: void 0 },
61
+ value: { default: "" },
62
+ variant: { default: void 0 }
63
+ },
64
+ setup({ emit: e, host: t, props: n }) {
65
+ let { fieldId: r, helperId: a, labelId: o } = ve("combobox", n.name.value), l = p(), u = p(), h = be(i, void 0), _ = m(String(n.value.value ?? "")), { triggerValidation: v } = de(h, ye({
66
+ disabled: c(() => !!n.disabled.value || !!h?.disabled.value),
67
+ value: _
68
+ }, { onReset: () => {
69
+ _.value = "", C.value = [], b.value = "";
70
+ } })), y = m(!1), b = m(""), x = c(() => !!n.disabled.value), S = c(() => !!n.multiple.value), Ce = c(() => !!n.creatable.value), we = c(() => !!n["no-filter"].value);
71
+ g(y, (e) => {
72
+ t.toggleAttribute("open", ((e) => !!e)(e));
73
+ }, { immediate: !0 });
74
+ let C = m(n.value.value ? [{
75
+ label: "",
76
+ value: n.value.value
77
+ }] : []), w = m(-1), T = ae({
78
+ findByKey: (e) => {
79
+ let t = C.value.find((t) => t.value === e);
80
+ if (t) return t;
81
+ let n = L.value.find((t) => t.value === e);
82
+ return n ? {
83
+ label: n.label,
84
+ value: n.value
85
+ } : {
86
+ label: "",
87
+ value: e
88
+ };
89
+ },
90
+ getMode: () => S.value ? "multiple" : "single",
91
+ getSelected: () => C.value,
92
+ keyExtractor: (e) => e.value,
93
+ setSelected: (e) => {
94
+ C.value = e;
95
+ }
96
+ }), E = (e) => {
97
+ let t = le(String(e ?? ""));
98
+ if (t.isEmpty) {
99
+ T.clear(), b.value = "", _.value = "";
100
+ return;
101
+ }
102
+ if (S.value) {
103
+ C.value = t.values.map((e) => ({
104
+ label: "",
105
+ value: e
106
+ })), _.value = t.formValue;
107
+ return;
108
+ }
109
+ C.value = [{
110
+ label: "",
111
+ value: t.firstValue
112
+ }], _.value = t.firstValue;
113
+ };
114
+ g(n.value, (e) => E(e), { immediate: !0 }), g(n.multiple, () => E(n.value.value));
115
+ let D = c(() => C.value[0]?.value ?? ""), O = c(() => C.value.length > 0), k = c(() => !!n.label.value), A = null, j = null, M = null, N = null;
116
+ function Te() {
117
+ let e = t.shadowRoot?.querySelector("input[role=\"combobox\"]") ?? null;
118
+ return e && (A = e), e ?? A;
119
+ }
120
+ function P() {
121
+ Te()?.focus();
122
+ }
123
+ let F = m([]), I = m([]), Ee = c(() => !!n.loading.value), L = c(() => {
124
+ let e = n.options.value ?? F.value;
125
+ return I.value.length === 0 ? e : [...e, ...I.value];
126
+ });
127
+ function R(e = Array.from(t.children)) {
128
+ F.value = ge(e), C.value.length > 0 && (C.value = fe(C.value, L.value), !S.value && C.value.length === 1 && (b.value = C.value[0]?.label ?? ""));
129
+ }
130
+ let z = c(() => pe(L.value, b.value, we.value)), B = c(() => me(b.value, Ce.value, z.value)), V = c(() => se(n.error.value, n.helper.value)), De = c(() => S.value && C.value.length > 0 ? "" : n.placeholder.value || ""), Oe = c(() => C.value.map((e) => e.value)), ke = c(() => C.value.map((e) => e.label ? e.label : L.value.find((t) => t.value === e.value)?.label ?? e.value));
131
+ function H() {
132
+ _.value = T.serialize(",");
133
+ }
134
+ function U(t) {
135
+ e("change", ce(Oe.value, ke.value, t));
136
+ }
137
+ function Ae(e) {
138
+ e.stopPropagation();
139
+ let t = e.detail?.value;
140
+ t !== void 0 && (T.remove(t), H(), U(e), v("change"));
141
+ }
142
+ let W = oe(() => j, () => M), G = re({
143
+ getIndex: () => w.value,
144
+ getItems: () => z.value,
145
+ isItemDisabled: (e) => e.disabled,
146
+ setIndex: (e) => {
147
+ w.value = e, Fe();
148
+ }
149
+ }), K = ie({
150
+ getBoundaryElement: () => t,
151
+ getPanelElement: () => M,
152
+ getTriggerElement: () => A,
153
+ isDisabled: () => x.value,
154
+ isOpen: () => y.value,
155
+ positioner: {
156
+ floating: () => M,
157
+ reference: () => j,
158
+ update: () => W.updatePosition()
159
+ },
160
+ restoreFocus: !1,
161
+ setOpen: (e, t) => {
162
+ y.value = e, e || G.reset();
163
+ }
164
+ }), q = (e) => {
165
+ (e.reason === "empty" || e.reason === "no-enabled-item") && (w.value = -1);
166
+ };
167
+ function J(e = !0, t = "programmatic") {
168
+ e && (b.value = ""), K.open({ reason: t });
169
+ }
170
+ function Y(e = "programmatic") {
171
+ K.close({
172
+ reason: e,
173
+ restoreFocus: !1
174
+ }), S.value ? b.value = "" : b.value = L.value.find((e) => e.value === D.value)?.label ?? "", v("blur");
175
+ }
176
+ function X(e, t) {
177
+ e.disabled || (S.value ? (T.toggle(e.value), H(), b.value = "", U(t), v("change"), P(), requestAnimationFrame(() => P())) : (T.select(e.value), b.value = e.label, _.value = e.value, U(t), v("change"), Y(), P()));
178
+ }
179
+ function je(e) {
180
+ e.stopPropagation(), T.clear(), b.value = "", _.value = "", U(e), v("change"), P();
181
+ }
182
+ function Me(t) {
183
+ let n = t.target;
184
+ b.value = n.value, S.value || T.clear(), q(G.first()), y.value || J(!1, "trigger"), e("search", { query: n.value });
185
+ }
186
+ function Ne() {
187
+ y.value || J(!1, "trigger");
188
+ }
189
+ function Pe(e) {
190
+ if (x.value) return;
191
+ let t = z.value;
192
+ switch (e.key) {
193
+ case "ArrowDown":
194
+ e.preventDefault(), y.value ? q(G.next()) : (J(!0, "trigger"), q(G.first()));
195
+ break;
196
+ case "ArrowUp":
197
+ e.preventDefault(), y.value ? q(G.prev()) : J(!0, "trigger");
198
+ break;
199
+ case "Backspace":
200
+ S.value && !b.value && C.value.length > 0 && (C.value = C.value.slice(0, -1), H(), U(e), v("change"));
201
+ break;
202
+ case "End":
203
+ y.value && (e.preventDefault(), q(G.last()));
204
+ break;
205
+ case "Enter":
206
+ e.preventDefault(), y.value && w.value >= 0 && w.value < t.length ? X(t[w.value], e) : y.value && w.value === -1 && B.value ? $(B.value, e) : y.value || J();
207
+ break;
208
+ case "Escape":
209
+ e.preventDefault(), y.value && Y("escape");
210
+ break;
211
+ case "Home":
212
+ y.value && (e.preventDefault(), q(G.first()));
213
+ break;
214
+ case "Tab":
215
+ Y("programmatic");
216
+ break;
217
+ default: break;
218
+ }
219
+ }
220
+ function Fe() {
221
+ if (w.value >= 0) {
222
+ Z.scrollToIndex(w.value, { align: "auto" });
223
+ return;
224
+ }
225
+ N && N.querySelector("[data-focused]")?.scrollIntoView({ block: "nearest" });
226
+ }
227
+ let { domVirtualList: Z, setupVirtualizer: Ie, updateRenderedItemState: Q } = _e({
228
+ checkIconHTML: ee,
229
+ comboId: r,
230
+ getDropdownElement: () => M,
231
+ getFocusedIndex: () => w.peek(),
232
+ getIsMultiple: () => S.peek(),
233
+ getListboxElement: () => N,
234
+ getSelectedValue: () => D.peek(),
235
+ getSelectedValues: () => C.peek(),
236
+ onSelectOption: X,
237
+ setFocusedIndex: (e) => {
238
+ w.value = e;
239
+ }
240
+ });
241
+ function $(e, t) {
242
+ let n = {
243
+ disabled: !1,
244
+ iconEl: null,
245
+ label: e,
246
+ value: he(e)
247
+ };
248
+ I.value = [...I.value, n], X(n, t);
249
+ }
250
+ return xe(() => {
251
+ j = A?.closest(".field"), M = t.shadowRoot?.querySelector(".dropdown") ?? null, N = t.shadowRoot?.querySelector("[role=\"listbox\"]") ?? null;
252
+ let e = K.bindOutsideClick(document);
253
+ return Se("default", R), R(), d(() => {
254
+ let e = z.value, t = y.value;
255
+ t && e.length > 0 ? requestAnimationFrame(() => Ie(e, t)) : Z.update(e, !1);
256
+ }), ue(u, l, n), d(() => {
257
+ if (N) {
258
+ for (let e of Array.from(N.querySelectorAll(".no-results,.no-results-create,.dropdown-loading"))) e.remove();
259
+ if (Ee.value) {
260
+ let e = document.createElement("div");
261
+ e.className = "dropdown-loading", e.textContent = "Loading…", N.prepend(e);
262
+ } else if (z.value.length === 0) if (B.value) {
263
+ let e = document.createElement("button");
264
+ e.type = "button", e.className = "no-results-create", e.textContent = `Create "${B.value}"`, w.value === -1 && e.setAttribute("data-focused", ""), e.addEventListener("pointerdown", (e) => {
265
+ e.preventDefault();
266
+ }), e.addEventListener("click", (e) => {
267
+ e.stopPropagation(), $(B.value, e);
268
+ }), N.appendChild(e);
269
+ } else {
270
+ let e = document.createElement("div");
271
+ e.className = "no-results", e.setAttribute("role", "presentation"), e.textContent = "No results found", N.appendChild(e);
272
+ }
273
+ Q();
274
+ }
275
+ }), g([
276
+ y,
277
+ n.multiple,
278
+ w,
279
+ C,
280
+ D
281
+ ], () => {
282
+ y.value && Q();
283
+ }, { immediate: !0 }), () => {
284
+ Z.destroy(), W.destroy(), e();
285
+ };
286
+ }), f`
287
+ <slot></slot>
288
+ <div class="combobox-wrapper" part="wrapper">
289
+ <label
290
+ class="label-outside"
291
+ for="${r}"
292
+ id="${o}"
293
+ ref=${l}
294
+ hidden
295
+ part="label"></label>
296
+ <div
297
+ class="field"
298
+ part="field"
299
+ @click="${() => {
300
+ y.value || J(!1, "trigger"), P();
301
+ }}">
302
+ <label class="label-inset" for="${r}" id="${o}" ref=${u} hidden part="label"></label>
303
+ <div class="field-row">
304
+ <div class="chips-row">
305
+ <!-- Keep chip list diffing isolated so input node identity stays stable. -->
306
+ <span class="chips-list">
307
+ ${() => (S.value ? C.value : []).map((e) => f`
308
+ <bit-chip
309
+ value=${e.value}
310
+ aria-label=${e.label || e.value}
311
+ mode="removable"
312
+ variant="flat"
313
+ size="sm"
314
+ color=${() => n.color.value}
315
+ @remove=${Ae}>
316
+ ${e.label || e.value}
317
+ </bit-chip>
318
+ `)}
319
+ </span>
320
+ <input
321
+ ref=${(e) => {
322
+ if (A = e, !e) {
323
+ j = null;
324
+ return;
325
+ }
326
+ j = e.closest(".field"), s(e, {
327
+ activedescendant: () => w.value >= 0 ? `${r}-opt-${w.value}` : null,
328
+ autocomplete: "list",
329
+ controls: () => `${r}-listbox`,
330
+ describedby: () => n.error.value || n.helper.value ? a : null,
331
+ disabled: () => x.value,
332
+ expanded: () => y.value ? "true" : "false",
333
+ invalid: () => !!n.error.value,
334
+ labelledby: () => k.value ? o : null
335
+ });
336
+ }}
337
+ class="input"
338
+ part="input"
339
+ type="text"
340
+ role="combobox"
341
+ autocomplete="off"
342
+ spellcheck="false"
343
+ id="${r}"
344
+ name="${() => n.name.value}"
345
+ placeholder=${() => De.value}
346
+ :disabled="${() => x.value}"
347
+ @input=${Me}
348
+ @keydown=${Pe}
349
+ @focus=${Ne}
350
+ .value=${b} />
351
+ </div>
352
+ <button
353
+ class="clear-btn"
354
+ part="clear-btn"
355
+ type="button"
356
+ aria-label="Clear"
357
+ tabindex="-1"
358
+ ?hidden=${() => !O.value}
359
+ @click="${je}">
360
+ ${ne}
361
+ </button>
362
+ <span class="chevron" aria-hidden="true">
363
+ ${te}
364
+ <span class="loader" aria-label="Loading"></span>
365
+ </span>
366
+ </div>
367
+ </div>
368
+
369
+ <div class="dropdown" part="dropdown" id="${() => `${r}-dropdown`}" ?data-open=${() => y.value}>
370
+ <div
371
+ role="listbox"
372
+ id="${() => `${r}-listbox`}"
373
+ aria-label="${() => n.label.value || n.placeholder.value || "Options"}"></div>
374
+ </div>
375
+
376
+ <span
377
+ class="helper-text"
378
+ id="${a}"
379
+ part="helper-text"
380
+ aria-live="polite"
381
+ ?hidden=${() => V.value.hidden}
382
+ style=${() => V.value.isError ? "color: var(--color-error);" : ""}
383
+ >${() => V.value.text}</span
384
+ >
385
+ </div>
386
+ `;
387
+ },
388
+ shadow: { delegatesFocus: !0 },
389
+ styles: [
390
+ e(a),
391
+ ...r,
392
+ t(),
393
+ n(".input"),
394
+ o
395
+ ],
396
+ tag: "bit-combobox"
397
+ });
398
+ //#endregion
399
+ export { _ as COMBOBOX_OPTION_TAG, v as COMBOBOX_TAG };
400
+
401
+ //# sourceMappingURL=combobox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"combobox.js","names":[],"sources":["../src/inputs/combobox/combobox.ts"],"sourcesContent":["import {\n aria,\n computed,\n createFormIds,\n css,\n defineComponent,\n defineField,\n effect,\n html,\n inject,\n onMount,\n onSlotChange,\n ref,\n signal,\n typed,\n watch,\n} from '@vielzeug/craftit';\nimport {\n createListNavigation,\n createOverlayControl,\n createSelectionControl,\n type ListNavigationResult,\n type OverlayOpenReason,\n} from '@vielzeug/craftit/labs';\n\nimport type { AddEventListeners } from '../../types';\n\nimport '../../feedback/chip/chip';\nimport { checkIconHTML, chevronDownIcon, clearIcon } from '../../icons';\nimport { disabledLoadingMixin, forcedColorsFocusMixin, formFieldMixins, sizeVariantMixin } from '../../styles';\nimport { FIELD_SIZE_PRESET } from '../shared/design-presets';\nimport { createDropdownPositioner, mountLabelSyncStandalone } from '../shared/dom-sync';\nimport { FORM_CTX } from '../shared/form-context';\nimport { computeControlledCsvState, createChoiceChangeDetail, resolveMergedAssistiveText } from '../shared/utils';\nimport { createFieldValidation } from '../shared/validation';\nimport {\n backfillSelectionLabels,\n filterOptions,\n getCreatableLabel,\n makeCreatableValue,\n parseSlottedOptions,\n} from './combobox-options';\nimport { createComboboxVirtualizer } from './combobox-virtualizer';\nimport componentStyles from './combobox.css?inline';\nimport {\n type BitComboboxEvents,\n type BitComboboxProps,\n type ComboboxOptionItem,\n type ComboboxSelectionItem,\n} from './combobox.types';\n\nexport type { BitComboboxEvents, BitComboboxOptionProps, BitComboboxProps } from './combobox.types';\n\n// ============================================\n// Styles\n// ============================================\n\n// ============================================\n// ComboboxOption Component\n// ============================================\n\n/**\n * `bit-combobox-option` — A child element of `<bit-combobox>` that represents one option.\n *\n * @slot - Label text for the option.\n * @slot icon - Optional leading icon or decoration.\n */\nexport const COMBOBOX_OPTION_TAG = defineComponent({\n setup() {\n const optionStyles = /* css */ css`\n @layer buildit.base {\n :host {\n display: none;\n }\n }\n `;\n\n return html`<style>\n ${optionStyles}\n </style>`;\n },\n tag: 'bit-combobox-option',\n});\n\n// ============================================\n// Component\n// ============================================\n\n/**\n * `bit-combobox` — Autocomplete/combobox text input with a filterable listbox.\n *\n * Place `<bit-combobox-option>` elements as children to define the available options.\n * Each option supports a `label` attribute (falls back to text content) and an `icon` named slot.\n *\n * @example\n * ```html\n * <bit-combobox label=\"Country\" placeholder=\"Search\\u2026\">\n * <bit-combobox-option value=\"us\">United States</bit-combobox-option>\n * <bit-combobox-option value=\"gb\">United Kingdom</bit-combobox-option>\n * <bit-combobox-option value=\"de\" disabled>Germany</bit-combobox-option>\n * </bit-combobox>\n * ```\n */\nexport const COMBOBOX_TAG = defineComponent<BitComboboxProps, BitComboboxEvents>({\n formAssociated: true,\n props: {\n clearable: { default: false },\n color: { default: undefined },\n creatable: { default: false },\n disabled: { default: false },\n error: { default: '', omit: true },\n fullwidth: { default: false },\n helper: { default: '' },\n label: { default: '' },\n 'label-placement': { default: 'inset' },\n loading: { default: false },\n multiple: { default: false },\n name: { default: '' },\n 'no-filter': { default: false },\n options: typed<ComboboxOptionItem[] | undefined>(undefined, { reflect: false }),\n placeholder: { default: '' },\n rounded: { default: undefined },\n size: { default: undefined },\n value: { default: '' },\n variant: { default: undefined },\n },\n setup({ emit, host, props }) {\n const { fieldId: comboId, helperId, labelId } = createFormIds('combobox', props.name.value);\n // Label refs\n const labelOutsideRef = ref<HTMLLabelElement>();\n const labelInsetRef = ref<HTMLLabelElement>();\n const formCtx = inject(FORM_CTX, undefined);\n // Signal for the form value\n const formValue = signal(String(props.value.value ?? ''));\n const fd = defineField(\n { disabled: computed(() => Boolean(props.disabled.value) || Boolean(formCtx?.disabled.value)), value: formValue },\n {\n onReset: () => {\n formValue.value = '';\n selectedValues.value = [];\n query.value = '';\n },\n },\n );\n\n const { triggerValidation } = createFieldValidation(formCtx, fd);\n\n // ── State ────────────────────────────────────────────────────────────────\n const isOpen = signal(false);\n const query = signal('');\n const isDisabled = computed(() => Boolean(props.disabled.value));\n const isMultiple = computed(() => Boolean(props.multiple.value));\n const isCreatable = computed(() => Boolean(props.creatable.value));\n const isNoFilter = computed(() => Boolean(props['no-filter'].value));\n\n watch(\n isOpen,\n (value) => {\n host.toggleAttribute('open', ((value) => Boolean(value))(value));\n },\n { immediate: true },\n );\n\n // Multi-value state: always an array; single mode uses at most one entry\n const selectedValues = signal<ComboboxSelectionItem[]>(\n props.value.value ? [{ label: '', value: props.value.value }] : [],\n );\n const focusedIndex = signal(-1);\n const selectionController = createSelectionControl<ComboboxSelectionItem>({\n findByKey: (value) => {\n const existing = selectedValues.value.find((item) => item.value === value);\n\n if (existing) return existing;\n\n // If not found in selection, try to find in all options to get label\n const option = allOptions.value.find((o) => o.value === value);\n\n if (option) return { label: option.label, value: option.value };\n\n // Fallback: key is the value\n return { label: '', value };\n },\n getMode: () => (isMultiple.value ? 'multiple' : 'single'),\n getSelected: () => selectedValues.value,\n keyExtractor: (item) => item.value,\n setSelected: (next) => {\n selectedValues.value = next;\n },\n });\n\n // Sync external value prop changes to selectedValues (controlled mode)\n const syncControlledValue = (nextValue: unknown): void => {\n const state = computeControlledCsvState(String(nextValue ?? ''));\n\n if (state.isEmpty) {\n selectionController.clear();\n query.value = '';\n formValue.value = '';\n\n return;\n }\n\n if (isMultiple.value) {\n selectedValues.value = state.values.map((value) => ({ label: '', value }));\n formValue.value = state.formValue;\n\n return;\n }\n\n // Single mode: one value\n selectedValues.value = [{ label: '', value: state.firstValue }];\n formValue.value = state.firstValue;\n };\n\n watch(props.value, (newValue) => syncControlledValue(newValue), { immediate: true });\n watch(props.multiple, () => syncControlledValue(props.value.value));\n\n // Convenience getter for single-select\n const selectedValue = computed(() => selectedValues.value[0]?.value ?? '');\n const hasValue = computed(() => selectedValues.value.length > 0);\n const hasLabel = computed(() => !!props.label.value);\n let inputEl: HTMLInputElement | null = null;\n let fieldEl: HTMLElement | null = null;\n let dropdownEl: HTMLElement | null = null;\n let listboxEl: HTMLElement | null = null;\n\n function getLiveInput(): HTMLInputElement | null {\n const liveInput = host.shadowRoot?.querySelector<HTMLInputElement>('input[role=\"combobox\"]') ?? null;\n\n if (liveInput) inputEl = liveInput;\n\n return liveInput ?? inputEl;\n }\n\n function focusLiveInput() {\n getLiveInput()?.focus();\n }\n\n // ── Options ──────────────────────────────────────────────────────────────\n const slottedOptions = signal<ComboboxOptionItem[]>([]);\n const createdOptions = signal<ComboboxOptionItem[]>([]);\n const isLoading = computed(() => Boolean(props.loading.value));\n // Merged options: explicit prop value overrides slotted options.\n const allOptions = computed<ComboboxOptionItem[]>(() => {\n const base = props.options.value ?? slottedOptions.value;\n\n if (createdOptions.value.length === 0) return base;\n\n return [...base, ...createdOptions.value];\n });\n\n function readOptions(elements: Element[] = Array.from(host.children)) {\n slottedOptions.value = parseSlottedOptions(elements);\n\n // Backfill labels for any already-selected values that were set before options loaded\n if (selectedValues.value.length > 0) {\n selectedValues.value = backfillSelectionLabels(selectedValues.value, allOptions.value);\n\n // Also sync the query in single mode\n if (!isMultiple.value && selectedValues.value.length === 1) {\n query.value = selectedValues.value[0]?.label ?? '';\n }\n }\n }\n\n const filteredOptions = computed<ComboboxOptionItem[]>(() => {\n return filterOptions(allOptions.value, query.value, isNoFilter.value);\n });\n // \"Create\" option shown when creatable + query doesn't match any existing option\n const creatableLabel = computed(() => {\n return getCreatableLabel(query.value, isCreatable.value, filteredOptions.value);\n });\n const assistiveText = computed(() => resolveMergedAssistiveText(props.error.value, props.helper.value));\n const inputPlaceholder = computed(() =>\n isMultiple.value && selectedValues.value.length > 0 ? '' : props.placeholder.value || '',\n );\n\n const selectedValueItems = computed(() => selectedValues.value.map((s) => s.value));\n const selectedLabelItems = computed(() =>\n selectedValues.value.map((selection) => {\n if (selection.label) return selection.label;\n\n return allOptions.value.find((option) => option.value === selection.value)?.label ?? selection.value;\n }),\n );\n\n function syncMultipleFormValue() {\n formValue.value = selectionController.serialize(',');\n }\n\n function emitChange(originalEvent?: Event) {\n emit('change', createChoiceChangeDetail(selectedValueItems.value, selectedLabelItems.value, originalEvent));\n }\n\n function removeChip(event: Event): void {\n event.stopPropagation();\n\n const value = (event as CustomEvent<{ value?: string }>).detail?.value;\n\n if (value === undefined) return;\n\n selectionController.remove(value);\n syncMultipleFormValue();\n emitChange(event);\n triggerValidation('change');\n }\n\n // ── Positioning (shared positioner) ──────────────────────────────────────\n const positioner = createDropdownPositioner(\n () => fieldEl,\n () => dropdownEl,\n );\n\n const listNavigation = createListNavigation<ComboboxOptionItem>({\n getIndex: () => focusedIndex.value,\n getItems: () => filteredOptions.value,\n isItemDisabled: (option) => option.disabled,\n setIndex: (index) => {\n focusedIndex.value = index;\n scrollFocusedIntoView();\n },\n });\n\n const overlay = createOverlayControl({\n getBoundaryElement: () => host,\n getPanelElement: () => dropdownEl,\n getTriggerElement: () => inputEl,\n isDisabled: () => isDisabled.value,\n isOpen: () => isOpen.value,\n positioner: {\n floating: () => dropdownEl,\n reference: () => fieldEl,\n update: () => positioner.updatePosition(),\n },\n restoreFocus: false,\n setOpen: (next, _context) => {\n isOpen.value = next;\n\n if (!next) listNavigation.reset();\n },\n });\n\n const applyNavigationResult = (result: ListNavigationResult): void => {\n if (result.reason === 'empty' || result.reason === 'no-enabled-item') {\n focusedIndex.value = -1;\n }\n };\n\n // ── Open / Close ─────────────────────────────────────────────────────────\n function open(clearFilter = true, reason: OverlayOpenReason = 'programmatic') {\n if (clearFilter) query.value = '';\n\n overlay.open({ reason });\n }\n\n function close(reason: 'escape' | 'programmatic' | 'outside-click' | 'toggle' = 'programmatic') {\n overlay.close({ reason, restoreFocus: false });\n\n // In single mode restore the query to the selected label (or clear)\n if (!isMultiple.value) {\n const match = allOptions.value.find((o) => o.value === selectedValue.value);\n\n query.value = match?.label ?? '';\n } else {\n query.value = '';\n }\n\n triggerValidation('blur');\n }\n // ── Selection ────────────────────────────────────────────────────────────\n function selectOption(opt: ComboboxOptionItem, originalEvent?: Event) {\n if (opt.disabled) return;\n\n if (isMultiple.value) {\n selectionController.toggle(opt.value);\n syncMultipleFormValue();\n query.value = '';\n emitChange(originalEvent);\n triggerValidation('change');\n // Keep dropdown open in multiple mode\n focusLiveInput();\n requestAnimationFrame(() => focusLiveInput());\n } else {\n selectionController.select(opt.value);\n query.value = opt.label;\n formValue.value = opt.value;\n emitChange(originalEvent);\n triggerValidation('change');\n close();\n focusLiveInput();\n }\n }\n function clearValue(e: Event) {\n e.stopPropagation();\n selectionController.clear();\n query.value = '';\n formValue.value = '';\n emitChange(e);\n triggerValidation('change');\n focusLiveInput();\n }\n function handleInput(e: Event) {\n const target = e.target as HTMLInputElement;\n\n query.value = target.value;\n\n if (!isMultiple.value) selectionController.clear();\n\n applyNavigationResult(listNavigation.first());\n\n if (!isOpen.value) open(false, 'trigger');\n\n emit('search', { query: target.value } as { query: string });\n }\n function handleFocus() {\n if (!isOpen.value) open(false, 'trigger');\n }\n // ── Keyboard Navigation ──────────────────────────────────────────────────\n function handleKeydown(e: KeyboardEvent) {\n if (isDisabled.value) return;\n\n const opts = filteredOptions.value;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n\n if (!isOpen.value) {\n open(true, 'trigger');\n\n applyNavigationResult(listNavigation.first());\n } else {\n applyNavigationResult(listNavigation.next());\n }\n\n break;\n case 'ArrowUp':\n e.preventDefault();\n\n if (!isOpen.value) {\n open(true, 'trigger');\n } else {\n applyNavigationResult(listNavigation.prev());\n }\n\n break;\n case 'Backspace':\n // In multiple mode, remove the last chip when the input is empty\n if (isMultiple.value && !query.value && selectedValues.value.length > 0) {\n selectedValues.value = selectedValues.value.slice(0, -1);\n syncMultipleFormValue();\n emitChange(e);\n triggerValidation('change');\n }\n\n break;\n case 'End':\n if (isOpen.value) {\n e.preventDefault();\n applyNavigationResult(listNavigation.last());\n }\n\n break;\n case 'Enter':\n e.preventDefault();\n\n if (isOpen.value && focusedIndex.value >= 0 && focusedIndex.value < opts.length) {\n selectOption(opts[focusedIndex.value], e);\n } else if (isOpen.value && focusedIndex.value === -1 && creatableLabel.value) {\n // Focused on the \"create\" item\n createOption(creatableLabel.value, e);\n } else if (!isOpen.value) {\n open();\n }\n\n break;\n case 'Escape':\n e.preventDefault();\n\n if (isOpen.value) {\n close('escape');\n }\n\n break;\n case 'Home':\n if (isOpen.value) {\n e.preventDefault();\n applyNavigationResult(listNavigation.first());\n }\n\n break;\n case 'Tab':\n close('programmatic');\n break;\n default:\n break;\n }\n }\n function scrollFocusedIntoView() {\n if (focusedIndex.value >= 0) {\n domVirtualList.scrollToIndex(focusedIndex.value, { align: 'auto' });\n\n return;\n }\n\n if (!listboxEl) return;\n\n const focusedEl = listboxEl.querySelector<HTMLElement>('[data-focused]');\n\n focusedEl?.scrollIntoView({ block: 'nearest' });\n }\n\n // ── Virtualizer ──────────────────────────────────────────────────────────\n const { domVirtualList, setupVirtualizer, updateRenderedItemState } = createComboboxVirtualizer({\n checkIconHTML,\n comboId,\n getDropdownElement: () => dropdownEl,\n getFocusedIndex: () => focusedIndex.peek(),\n getIsMultiple: () => isMultiple.peek(),\n getListboxElement: () => listboxEl,\n getSelectedValue: () => selectedValue.peek(),\n getSelectedValues: () => selectedValues.peek(),\n onSelectOption: selectOption,\n setFocusedIndex: (index) => {\n focusedIndex.value = index;\n },\n });\n\n // ── Create option ────────────────────────────────────────────────────────\n function createOption(label: string, originalEvent?: Event) {\n const value = makeCreatableValue(label);\n const newOpt: ComboboxOptionItem = { disabled: false, iconEl: null, label, value };\n\n createdOptions.value = [...createdOptions.value, newOpt];\n selectOption(newOpt, originalEvent);\n }\n // ── Lifecycle ────────────────────────────────────────────────────────────\n onMount(() => {\n fieldEl = inputEl?.closest('.field') as HTMLElement | null;\n dropdownEl = host.shadowRoot?.querySelector<HTMLElement>('.dropdown') ?? null;\n listboxEl = host.shadowRoot?.querySelector<HTMLElement>('[role=\"listbox\"]') ?? null;\n\n const removeOutsideClick = overlay.bindOutsideClick(document);\n\n onSlotChange('default', readOptions);\n // Ensure initial light-DOM options are available for immediate keyboard interaction.\n readOptions();\n // Rebuild virtualizer when filtered options or open state changes\n effect(() => {\n const opts = filteredOptions.value;\n const open = isOpen.value;\n\n if (open && opts.length > 0) {\n requestAnimationFrame(() => setupVirtualizer(opts, open));\n } else {\n domVirtualList.update(opts, false);\n }\n });\n mountLabelSyncStandalone(labelInsetRef, labelOutsideRef, props);\n effect(() => {\n if (listboxEl) {\n // Remove existing state nodes\n for (const el of Array.from(listboxEl.querySelectorAll('.no-results,.no-results-create,.dropdown-loading')))\n el.remove();\n\n if (isLoading.value) {\n const loadingEl = document.createElement('div');\n\n loadingEl.className = 'dropdown-loading';\n loadingEl.textContent = 'Loading\\u2026';\n listboxEl.prepend(loadingEl);\n } else if (filteredOptions.value.length === 0) {\n if (creatableLabel.value) {\n const createEl = document.createElement('button');\n\n createEl.type = 'button';\n createEl.className = 'no-results-create';\n createEl.textContent = `Create \"${creatableLabel.value}\"`;\n\n // Apply focused state when keyboard nav lands here (focusedIndex === -1 means create row)\n if (focusedIndex.value === -1) createEl.setAttribute('data-focused', '');\n\n createEl.addEventListener('pointerdown', (e: PointerEvent) => {\n e.preventDefault();\n });\n\n createEl.addEventListener('click', (e) => {\n e.stopPropagation();\n createOption(creatableLabel.value, e);\n });\n listboxEl.appendChild(createEl);\n } else {\n const noResults = document.createElement('div');\n\n noResults.className = 'no-results';\n noResults.setAttribute('role', 'presentation');\n noResults.textContent = 'No results found';\n listboxEl.appendChild(noResults);\n }\n }\n\n // Update focused/selected state on already-rendered items without touching\n // the DOM structure. The virtualizer owns full re-renders via onChange.\n updateRenderedItemState();\n }\n });\n // Keep rendered option selected/focused attributes in sync while the popup stays open.\n watch(\n [isOpen, props.multiple, focusedIndex, selectedValues, selectedValue],\n () => {\n if (!isOpen.value) return;\n\n updateRenderedItemState();\n },\n { immediate: true },\n );\n\n return () => {\n domVirtualList.destroy();\n positioner.destroy();\n removeOutsideClick();\n };\n });\n\n return html`\n <slot></slot>\n <div class=\"combobox-wrapper\" part=\"wrapper\">\n <label\n class=\"label-outside\"\n for=\"${comboId}\"\n id=\"${labelId}\"\n ref=${labelOutsideRef}\n hidden\n part=\"label\"></label>\n <div\n class=\"field\"\n part=\"field\"\n @click=\"${() => {\n if (!isOpen.value) open(false, 'trigger');\n\n focusLiveInput();\n }}\">\n <label class=\"label-inset\" for=\"${comboId}\" id=\"${labelId}\" ref=${labelInsetRef} hidden part=\"label\"></label>\n <div class=\"field-row\">\n <div class=\"chips-row\">\n <!-- Keep chip list diffing isolated so input node identity stays stable. -->\n <span class=\"chips-list\">\n ${() =>\n (isMultiple.value ? selectedValues.value : []).map(\n (item) => html`\n <bit-chip\n value=${item.value}\n aria-label=${item.label || item.value}\n mode=\"removable\"\n variant=\"flat\"\n size=\"sm\"\n color=${() => props.color.value}\n @remove=${removeChip}>\n ${item.label || item.value}\n </bit-chip>\n `,\n )}\n </span>\n <input\n ref=${(el: HTMLInputElement | null) => {\n inputEl = el;\n\n if (!el) {\n fieldEl = null;\n\n return;\n }\n\n fieldEl = el.closest('.field') as HTMLElement | null;\n aria(el, {\n activedescendant: () => (focusedIndex.value >= 0 ? `${comboId}-opt-${focusedIndex.value}` : null),\n autocomplete: 'list',\n controls: () => `${comboId}-listbox`,\n describedby: () => (props.error.value || props.helper.value ? helperId : null),\n disabled: () => isDisabled.value,\n expanded: () => (isOpen.value ? 'true' : 'false'),\n invalid: () => !!props.error.value,\n labelledby: () => (hasLabel.value ? labelId : null),\n });\n }}\n class=\"input\"\n part=\"input\"\n type=\"text\"\n role=\"combobox\"\n autocomplete=\"off\"\n spellcheck=\"false\"\n id=\"${comboId}\"\n name=\"${() => props.name.value}\"\n placeholder=${() => inputPlaceholder.value}\n :disabled=\"${() => isDisabled.value}\"\n @input=${handleInput}\n @keydown=${handleKeydown}\n @focus=${handleFocus}\n .value=${query} />\n </div>\n <button\n class=\"clear-btn\"\n part=\"clear-btn\"\n type=\"button\"\n aria-label=\"Clear\"\n tabindex=\"-1\"\n ?hidden=${() => !hasValue.value}\n @click=\"${clearValue}\">\n ${clearIcon}\n </button>\n <span class=\"chevron\" aria-hidden=\"true\">\n ${chevronDownIcon}\n <span class=\"loader\" aria-label=\"Loading\"></span>\n </span>\n </div>\n </div>\n\n <div class=\"dropdown\" part=\"dropdown\" id=\"${() => `${comboId}-dropdown`}\" ?data-open=${() => isOpen.value}>\n <div\n role=\"listbox\"\n id=\"${() => `${comboId}-listbox`}\"\n aria-label=\"${() => props.label.value || props.placeholder.value || 'Options'}\"></div>\n </div>\n\n <span\n class=\"helper-text\"\n id=\"${helperId}\"\n part=\"helper-text\"\n aria-live=\"polite\"\n ?hidden=${() => assistiveText.value.hidden}\n style=${() => (assistiveText.value.isError ? 'color: var(--color-error);' : '')}\n >${() => assistiveText.value.text}</span\n >\n </div>\n `;\n },\n shadow: { delegatesFocus: true },\n styles: [\n sizeVariantMixin(FIELD_SIZE_PRESET),\n ...formFieldMixins,\n disabledLoadingMixin(),\n forcedColorsFocusMixin('.input'),\n componentStyles,\n ],\n tag: 'bit-combobox',\n}) as unknown as AddEventListeners<BitComboboxEvents>;\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ var e=`@layer buildit.base{:host{flex-direction:row;display:inline-flex}::slotted(bit-avatar){--avatar-border:var(--border-2) solid var(--color-canvas)}::slotted(bit-avatar):not(:is()){margin-left:calc(var(--avatar-group-overlap,-.75rem))}::slotted(bit-avatar):is(){margin-right:calc(var(--avatar-group-overlap,-.75rem))}::slotted(bit-avatar:first-child):not(:is()){margin-left:0}::slotted(bit-avatar:first-child):is(){margin-right:0}::slotted(bit-avatar[data-avatar-group-hidden]){display:none}.overflow-badge{--_size:var(--avatar-size,var(--size-10));box-sizing:border-box;width:var(--_size);height:var(--_size);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-700);-webkit-user-select:none;user-select:none;background:var(--color-contrast-200);border:var(--border-2) solid var(--color-canvas);border-radius:var(--rounded-full);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.overflow-badge:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:calc(var(--avatar-group-overlap,-.75rem))}.overflow-badge:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:calc(var(--avatar-group-overlap,-.75rem))}}`;exports.default=e;
2
+ //# sourceMappingURL=avatar-group.css?inline.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-group.css?inline.cjs","names":[],"sources":["../../../src/content/avatar/avatar-group.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: inline-flex;\n flex-direction: row;\n }\n\n /* Overlap avatars, latest first */\n ::slotted(bit-avatar) {\n --avatar-border: var(--border-2) solid var(--color-canvas);\n\n margin-inline-start: calc(var(--avatar-group-overlap, -0.75rem));\n }\n\n ::slotted(bit-avatar:first-child) {\n margin-inline-start: 0;\n }\n\n ::slotted(bit-avatar[data-avatar-group-hidden]) {\n display: none;\n }\n\n .overflow-badge {\n --_size: var(--avatar-size, var(--size-10));\n\n box-sizing: border-box;\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--_size);\n height: var(--_size);\n margin-inline-start: calc(var(--avatar-group-overlap, -0.75rem));\n font-size: var(--text-xs);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n user-select: none;\n background: var(--color-contrast-200);\n border: var(--border-2) solid var(--color-canvas);\n border-radius: var(--rounded-full);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/content/avatar/avatar-group.css?inline
2
+ var e = "@layer buildit.base{:host{flex-direction:row;display:inline-flex}::slotted(bit-avatar){--avatar-border:var(--border-2) solid var(--color-canvas)}::slotted(bit-avatar):not(:is()){margin-left:calc(var(--avatar-group-overlap,-.75rem))}::slotted(bit-avatar):is(){margin-right:calc(var(--avatar-group-overlap,-.75rem))}::slotted(bit-avatar:first-child):not(:is()){margin-left:0}::slotted(bit-avatar:first-child):is(){margin-right:0}::slotted(bit-avatar[data-avatar-group-hidden]){display:none}.overflow-badge{--_size:var(--avatar-size,var(--size-10));box-sizing:border-box;width:var(--_size);height:var(--_size);font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-contrast-700);-webkit-user-select:none;user-select:none;background:var(--color-contrast-200);border:var(--border-2) solid var(--color-canvas);border-radius:var(--rounded-full);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.overflow-badge:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:calc(var(--avatar-group-overlap,-.75rem))}.overflow-badge:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:calc(var(--avatar-group-overlap,-.75rem))}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=avatar-group.css?inline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar-group.css?inline.js","names":[],"sources":["../../../src/content/avatar/avatar-group.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: inline-flex;\n flex-direction: row;\n }\n\n /* Overlap avatars, latest first */\n ::slotted(bit-avatar) {\n --avatar-border: var(--border-2) solid var(--color-canvas);\n\n margin-inline-start: calc(var(--avatar-group-overlap, -0.75rem));\n }\n\n ::slotted(bit-avatar:first-child) {\n margin-inline-start: 0;\n }\n\n ::slotted(bit-avatar[data-avatar-group-hidden]) {\n display: none;\n }\n\n .overflow-badge {\n --_size: var(--avatar-size, var(--size-10));\n\n box-sizing: border-box;\n display: inline-flex;\n flex-shrink: 0;\n align-items: center;\n justify-content: center;\n width: var(--_size);\n height: var(--_size);\n margin-inline-start: calc(var(--avatar-group-overlap, -0.75rem));\n font-size: var(--text-xs);\n font-weight: var(--font-semibold);\n color: var(--color-contrast-700);\n user-select: none;\n background: var(--color-contrast-200);\n border: var(--border-2) solid var(--color-canvas);\n border-radius: var(--rounded-full);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,2 @@
1
+ var e=`@layer buildit.base{:host{--_bg:var(--avatar-bg,var(--_theme-backdrop,var(--color-contrast-200)));--_color:var(--avatar-color,var(--_theme-base,var(--color-contrast-700)));--_radius:var(--avatar-radius,var(--rounded-full));--_font-weight:var(--avatar-font-weight,var(--font-semibold));--_border:var(--avatar-border,none);--_border-color:var(--avatar-border-color,var(--color-canvas));--_size:var(--avatar-size,var(--size-10));--_font-size:var(--avatar-font-size,var(--text-sm));flex-shrink:0;display:inline-flex;position:relative}.avatar{box-sizing:border-box;width:var(--_size);height:var(--_size);font-size:var(--_font-size);font-weight:var(--_font-weight);color:var(--_color);text-transform:uppercase;-webkit-user-select:none;user-select:none;background:var(--_bg);border:var(--_border);border-color:var(--_border-color);border-radius:var(--_radius);justify-content:center;align-items:center;line-height:1;display:inline-flex;overflow:hidden}img{object-fit:cover;width:100%;height:100%;display:block}img[hidden]{display:none}.initials{justify-content:center;align-items:center;width:100%;height:100%;display:inline-flex}.icon-fallback{width:100%;height:100%;color:var(--_color);opacity:.6;justify-content:center;align-items:center;display:inline-flex}.status{border:2px solid var(--_border-color,var(--color-canvas));border-radius:var(--rounded-full);width:.75em;height:.75em;position:absolute;bottom:0}.status:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:0}.status:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0}.status[data-status=online]{background:var(--color-success)}.status[data-status=offline]{background:var(--color-contrast-400)}.status[data-status=busy]{background:var(--color-error)}.status[data-status=away]{background:var(--color-warning)}}@media (forced-colors:active){.avatar{forced-color-adjust:none;border:1px solid buttontext}.status{background:highlight;border:2px solid buttontext}}`;exports.default=e;
2
+ //# sourceMappingURL=avatar.css?inline.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.css?inline.cjs","names":[],"sources":["../../../src/content/avatar/avatar.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n --_bg: var(--avatar-bg, var(--_theme-backdrop, var(--color-contrast-200)));\n --_color: var(--avatar-color, var(--_theme-base, var(--color-contrast-700)));\n --_radius: var(--avatar-radius, var(--rounded-full));\n --_font-weight: var(--avatar-font-weight, var(--font-semibold));\n --_border: var(--avatar-border, none);\n --_border-color: var(--avatar-border-color, var(--color-canvas));\n --_size: var(--avatar-size, var(--size-10));\n --_font-size: var(--avatar-font-size, var(--text-sm));\n\n position: relative;\n display: inline-flex;\n flex-shrink: 0;\n }\n\n .avatar {\n box-sizing: border-box;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--_size);\n height: var(--_size);\n overflow: hidden;\n font-size: var(--_font-size);\n font-weight: var(--_font-weight);\n line-height: 1;\n color: var(--_color);\n text-transform: uppercase;\n user-select: none;\n background: var(--_bg);\n border: var(--_border);\n border-color: var(--_border-color);\n border-radius: var(--_radius);\n }\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n img[hidden] {\n display: none;\n }\n\n .initials {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n }\n\n .icon-fallback {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n color: var(--_color);\n opacity: 0.6;\n }\n\n .status {\n position: absolute;\n inset-inline-end: 0;\n bottom: 0;\n width: 0.75em;\n height: 0.75em;\n border: 2px solid var(--_border-color, var(--color-canvas));\n border-radius: var(--rounded-full);\n }\n\n .status[data-status='online'] {\n background: var(--color-success);\n }\n\n .status[data-status='offline'] {\n background: var(--color-contrast-400);\n }\n\n .status[data-status='busy'] {\n background: var(--color-error);\n }\n\n .status[data-status='away'] {\n background: var(--color-warning);\n }\n}\n\n/* forcedColorsMixin targets :host; avatar needs the border on .avatar (different geometry),\n so forced-color rules are kept inline and unlayered to match mixin convention. */\n@media (forced-colors: active) {\n .avatar {\n forced-color-adjust: none;\n border: 1px solid ButtonText;\n }\n\n .status {\n background: Highlight;\n border: 2px solid ButtonText;\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/content/avatar/avatar.css?inline
2
+ var e = "@layer buildit.base{:host{--_bg:var(--avatar-bg,var(--_theme-backdrop,var(--color-contrast-200)));--_color:var(--avatar-color,var(--_theme-base,var(--color-contrast-700)));--_radius:var(--avatar-radius,var(--rounded-full));--_font-weight:var(--avatar-font-weight,var(--font-semibold));--_border:var(--avatar-border,none);--_border-color:var(--avatar-border-color,var(--color-canvas));--_size:var(--avatar-size,var(--size-10));--_font-size:var(--avatar-font-size,var(--text-sm));flex-shrink:0;display:inline-flex;position:relative}.avatar{box-sizing:border-box;width:var(--_size);height:var(--_size);font-size:var(--_font-size);font-weight:var(--_font-weight);color:var(--_color);text-transform:uppercase;-webkit-user-select:none;user-select:none;background:var(--_bg);border:var(--_border);border-color:var(--_border-color);border-radius:var(--_radius);justify-content:center;align-items:center;line-height:1;display:inline-flex;overflow:hidden}img{object-fit:cover;width:100%;height:100%;display:block}img[hidden]{display:none}.initials{justify-content:center;align-items:center;width:100%;height:100%;display:inline-flex}.icon-fallback{width:100%;height:100%;color:var(--_color);opacity:.6;justify-content:center;align-items:center;display:inline-flex}.status{border:2px solid var(--_border-color,var(--color-canvas));border-radius:var(--rounded-full);width:.75em;height:.75em;position:absolute;bottom:0}.status:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){right:0}.status:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){left:0}.status[data-status=online]{background:var(--color-success)}.status[data-status=offline]{background:var(--color-contrast-400)}.status[data-status=busy]{background:var(--color-error)}.status[data-status=away]{background:var(--color-warning)}}@media (forced-colors:active){.avatar{forced-color-adjust:none;border:1px solid buttontext}.status{background:highlight;border:2px solid buttontext}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=avatar.css?inline.js.map