@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":"checkbox-group.js","names":[],"sources":["../src/inputs/checkbox-group/checkbox-group.ts"],"sourcesContent":["import {\n computed,\n createContext,\n createId,\n defineComponent,\n effect,\n handle,\n html,\n inject,\n onMount,\n onSlotChange,\n provide,\n type ReadonlySignal,\n signal,\n} from '@vielzeug/craftit';\n\nimport type { ComponentSize, ThemeColor } from '../../types';\n\nimport { colorThemeMixin, disabledStateMixin, sizeVariantMixin } from '../../styles';\nimport { mountFormContextSync } from '../shared/dom-sync';\nimport { FORM_CTX } from '../shared/form-context';\nimport { createChoiceChangeDetail, parseCsvValues, type ChoiceChangeDetail } from '../shared/utils';\nimport componentStyles from './checkbox-group.css?inline';\n\n// ─── Context ──────────────────────────────────────────────────────────────────\n\nexport type CheckboxGroupContext = {\n color: ReadonlySignal<ThemeColor | undefined>;\n disabled: ReadonlySignal<boolean>;\n size: ReadonlySignal<ComponentSize | undefined>;\n toggle: (value: string, originalEvent?: Event) => void;\n values: ReadonlySignal<string[]>;\n};\n\nexport const CHECKBOX_GROUP_CTX = createContext<CheckboxGroupContext>('CheckboxGroupContext');\n\n// ─── Types ────────────────────────────────────────────────────────────────────\n\nexport type BitCheckboxGroupProps = {\n /** Theme color — propagated to all child bit-checkbox elements */\n color?: ThemeColor;\n /** Disable all checkboxes in the group */\n disabled?: boolean;\n /** Error message shown below the group */\n error?: string;\n /** Helper text shown below the group */\n helper?: string;\n /** Legend / label for the fieldset. Required for accessibility. */\n label?: string;\n /** Layout direction of the checkbox options */\n orientation?: 'vertical' | 'horizontal';\n /** Mark the group as required */\n required?: boolean;\n /** Size — propagated to all child bit-checkbox elements */\n size?: ComponentSize;\n /** Comma-separated list of currently checked values */\n values?: string;\n};\n\nexport type BitCheckboxGroupEvents = {\n change: ChoiceChangeDetail;\n};\n\n/**\n * A fieldset wrapper that groups `bit-checkbox` elements, provides shared\n * `color` and `size` via context, and manages multi-value selection state.\n *\n * @element bit-checkbox-group\n *\n * @attr {string} label - Legend text (required for a11y)\n * @attr {string} values - Comma-separated list of checked values\n * @attr {boolean} disabled - Disable all checkboxes in the group\n * @attr {string} error - Error message\n * @attr {string} helper - Helper text\n * @attr {string} color - Theme color\n * @attr {string} size - Component size: 'sm' | 'md' | 'lg'\n * @attr {string} orientation - Layout: 'vertical' | 'horizontal'\n * @attr {boolean} required - Required field\n *\n * @fires change - Emitted when selection changes. detail: { value: string, values: string[], labels: string[], originalEvent?: Event }\n *\n * @slot - Place `bit-checkbox` elements here\n */\nexport const CHECKBOX_GROUP_TAG = defineComponent<BitCheckboxGroupProps, BitCheckboxGroupEvents>({\n props: {\n color: { default: undefined },\n disabled: { default: false },\n error: { default: '' },\n helper: { default: '' },\n label: { default: '' },\n orientation: { default: 'vertical' },\n required: { default: false },\n size: { default: undefined },\n values: { default: '' },\n },\n setup({ emit, host, props }) {\n // Parse comma-separated value string into an array of checked values\n const parseValues = (v: string | undefined): string[] => parseCsvValues(v);\n const checkedValues = signal<string[]>(parseValues(props.values.value));\n\n const getCheckboxes = (): HTMLElement[] => Array.from(host.getElementsByTagName('bit-checkbox')) as HTMLElement[];\n const getLabelForValue = (value: string): string => {\n const checkbox = getCheckboxes().find((item) => (item.getAttribute('value') ?? '') === value);\n\n return checkbox?.textContent?.replace(/\\s+/g, ' ').trim() || value;\n };\n const emitChange = (originalEvent?: Event) => {\n const values = checkedValues.value;\n\n emit('change', createChoiceChangeDetail(values, values.map(getLabelForValue), originalEvent));\n };\n\n // Keep checkedValues in sync when prop changes externally\n effect(() => {\n checkedValues.value = parseValues(props.values.value);\n });\n\n const toggleCheckbox = (val: string, originalEvent?: Event) => {\n const current = checkedValues.value;\n const next = current.includes(val) ? current.filter((v) => v !== val) : [...current, val];\n\n checkedValues.value = next;\n host.setAttribute('values', next.join(','));\n emitChange(originalEvent);\n };\n const formCtx = inject(FORM_CTX, undefined);\n\n mountFormContextSync(host, formCtx, props);\n\n provide(CHECKBOX_GROUP_CTX, {\n color: props.color,\n disabled: computed(() => Boolean(props.disabled.value)),\n size: props.size,\n toggle: toggleCheckbox,\n values: checkedValues,\n });\n\n // Sync checked state + color/size/disabled onto slotted bit-checkbox children\n const syncChildren = () => {\n const values = checkedValues.value;\n const color = props.color.value;\n const size = props.size.value;\n const disabled = props.disabled.value;\n const checkboxes = Array.from(host.getElementsByTagName('bit-checkbox')) as HTMLElement[];\n\n for (const checkbox of checkboxes) {\n const val = checkbox.getAttribute('value') ?? '';\n\n if (values.includes(val)) checkbox.setAttribute('checked', '');\n else checkbox.removeAttribute('checked');\n\n if (color) checkbox.setAttribute('color', color);\n else checkbox.removeAttribute('color');\n\n if (size) checkbox.setAttribute('size', size);\n else checkbox.removeAttribute('size');\n\n if (disabled) checkbox.setAttribute('disabled', '');\n else checkbox.removeAttribute('disabled');\n }\n };\n\n effect(syncChildren);\n\n onMount(() => {\n onSlotChange('default', syncChildren);\n syncChildren();\n\n handle(host, 'change', (e: Event) => {\n if (e.target === host) return;\n\n e.stopPropagation();\n\n const val = (e.target as HTMLElement).getAttribute('value') ?? '';\n\n toggleCheckbox(val, e);\n });\n });\n\n const legendId = createId('checkbox-group-legend');\n const errorId = `${legendId}-error`;\n const helperId = `${legendId}-helper`;\n const hasError = computed(() => Boolean(props.error.value));\n const hasHelper = computed(() => Boolean(props.helper.value) && !hasError.value);\n\n return html`\n <fieldset\n role=\"group\"\n aria-required=\"${() => String(Boolean(props.required.value))}\"\n aria-invalid=\"${() => String(hasError.value)}\"\n aria-errormessage=\"${() => (hasError.value ? errorId : null)}\"\n aria-describedby=\"${() => (hasError.value ? errorId : hasHelper.value ? helperId : null)}\">\n <legend id=\"${legendId}\" ?hidden=${() => !props.label.value}>\n ${() => props.label.value}${() => (props.required.value ? html`<span aria-hidden=\"true\"> *</span>` : '')}\n </legend>\n <div class=\"checkbox-group-items\" part=\"items\">\n <slot></slot>\n </div>\n <div class=\"error-text\" id=\"${errorId}\" role=\"alert\" ?hidden=${() => !hasError.value}>\n ${() => props.error.value}\n </div>\n <div class=\"helper-text\" id=\"${helperId}\" ?hidden=${() => !hasHelper.value}>${() => props.helper.value}</div>\n </fieldset>\n `;\n },\n styles: [colorThemeMixin, sizeVariantMixin(), disabledStateMixin(), componentStyles],\n tag: 'bit-checkbox-group',\n});\n"],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/accessibility.css.cjs`),t=require(`./styles/mixins/shape.css.cjs`),n=require(`./styles/index.cjs`),r=require(`./craftit/dist/labs/a11y.cjs`),i=require(`./craftit/dist/labs/selectable.cjs`);require(`./craftit/dist/labs.cjs`);const a=require(`./inputs/shared/dom-sync/form-context.cjs`);require(`./inputs/shared/dom-sync/index.cjs`);const o=require(`./checkbox-group.cjs`),s=require(`./inputs/shared/composables/use-toggle-field.cjs`);require(`./inputs/shared/composables/index.cjs`);const c=require(`./inputs/shared/design-presets.cjs`),l=require(`./inputs/checkbox/checkbox.css?inline.cjs`);let u=require(`@vielzeug/craftit`);var d=(0,u.defineComponent)({formAssociated:!0,props:{checked:{default:!1},color:{default:void 0},disabled:{default:!1},error:{default:``},helper:{default:``},indeterminate:{default:!1},name:{default:``},size:{default:void 0},value:{default:`on`}},setup({emit:e,host:t,props:n,reflect:c}){let{checkedSignal:l,formCtx:d,triggerValidation:f}=s.useToggleField(n);a.mountFormContextSync(t,d,n);let p=(0,u.signal)(!!n.indeterminate.value);(0,u.watch)(n.indeterminate,e=>{p.value=!!e});let m=(0,u.inject)(o.CHECKBOX_GROUP_CTX,void 0),h=i.t({checked:l,clearIndeterminateFirst:!0,disabled:n.disabled,group:m,indeterminate:p,onToggle:t=>{f(`change`),!m&&e(`change`,h.changePayload(t))},value:n.value}),g=r.r(t,{checked:()=>h.indeterminate.value?`mixed`:h.checked.value?`true`:`false`,helperText:()=>n.error.value||n.helper.value,helperTone:()=>n.error.value?`error`:`default`,invalid:()=>!!n.error.value,role:`checkbox`});return c({checked:()=>h.checked.value,classMap:()=>({"is-checked":h.checked.value,"is-disabled":!!n.disabled.value,"is-indeterminate":h.indeterminate.value}),indeterminate:()=>h.indeterminate.value,onClick:e=>h.toggle(e),onKeydown:e=>{let t=e;(t.key===` `||t.key===`Enter`)&&(t.preventDefault(),h.toggle(e))},tabindex:()=>n.disabled.value?void 0:0}),u.html`
2
+ <div class="checkbox-wrapper" part="checkbox">
3
+ <div class="box" part="box">
4
+ <svg
5
+ class="checkmark"
6
+ viewBox="0 0 24 24"
7
+ fill="none"
8
+ stroke="currentColor"
9
+ stroke-width="2"
10
+ stroke-linecap="round"
11
+ stroke-linejoin="round"
12
+ xmlns="http://www.w3.org/2000/svg">
13
+ <path d="M 20,6 9,17 4,12" />
14
+ </svg>
15
+ <svg
16
+ class="dash"
17
+ viewBox="0 0 24 24"
18
+ fill="none"
19
+ stroke="currentColor"
20
+ stroke-width="2"
21
+ stroke-linecap="round"
22
+ stroke-linejoin="round"
23
+ xmlns="http://www.w3.org/2000/svg">
24
+ <path d="M 5,12 H 19" />
25
+ </svg>
26
+ </div>
27
+ </div>
28
+ <span class="label" part="label" data-a11y-label id="${g.labelId}"><slot></slot></span>
29
+ <div
30
+ class="helper-text"
31
+ part="helper-text"
32
+ data-a11y-helper
33
+ id="${g.helperId}"
34
+ aria-live="polite"
35
+ hidden></div>
36
+ `},styles:[...n.formControlMixins,e.coarsePointerMixin,t.sizeVariantMixin(c.CONTROL_SIZE_PRESET),l.default],tag:`bit-checkbox`});exports.CHECKBOX_TAG=d;
37
+ //# sourceMappingURL=checkbox.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.cjs","names":[],"sources":["../src/inputs/checkbox/checkbox.ts"],"sourcesContent":["import { defineComponent, html, inject, signal, watch } from '@vielzeug/craftit';\nimport { useA11yControl, createCheckableControl } from '@vielzeug/craftit/labs';\n\nimport type { CheckableProps, DisablableProps, SizableProps, ThemableProps } from '../../types';\n\nimport { coarsePointerMixin, formControlMixins, sizeVariantMixin } from '../../styles';\nimport { CHECKBOX_GROUP_CTX } from '../checkbox-group/checkbox-group';\nimport { useToggleField } from '../shared/composables';\nimport { CONTROL_SIZE_PRESET } from '../shared/design-presets';\nimport { mountFormContextSync } from '../shared/dom-sync';\nimport componentStyles from './checkbox.css?inline';\n\nexport type BitCheckboxEvents = {\n change: { checked: boolean; fieldValue: string; originalEvent?: Event; value: boolean };\n};\n\nexport type BitCheckboxProps = CheckableProps &\n ThemableProps &\n SizableProps &\n DisablableProps & {\n /** Error message (marks field as invalid) */\n error?: string;\n /** Helper text displayed below the checkbox */\n helper?: string;\n /** Indeterminate state (partially checked) */\n indeterminate?: boolean;\n };\n\n/**\n * A customizable checkbox component with theme colors, sizes, and indeterminate state support.\n *\n * @element bit-checkbox\n *\n * @attr {boolean} checked - Checked state\n * @attr {boolean} disabled - Disable checkbox interaction\n * @attr {boolean} indeterminate - Indeterminate (partially checked) state\n * @attr {string} value - Field value submitted with forms\n * @attr {string} name - Form field name\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} size - Checkbox size: 'sm' | 'md' | 'lg'\n * @attr {string} error - Error message (marks field as invalid)\n * @attr {string} helper - Helper text displayed below the checkbox\n *\n * @fires change - Emitted when checkbox is toggled. detail: { value: boolean, checked: boolean, fieldValue: string, originalEvent?: Event }\n *\n * @slot - Checkbox label text\n *\n * @part checkbox - The checkbox wrapper element\n * @part box - The visual checkbox box\n * @part label - The label element\n * @part helper-text - The helper/error text element\n */\nexport const CHECKBOX_TAG = defineComponent<BitCheckboxProps, BitCheckboxEvents>({\n formAssociated: true,\n props: {\n checked: { default: false },\n color: { default: undefined },\n disabled: { default: false },\n error: { default: '' },\n helper: { default: '' },\n indeterminate: { default: false },\n name: { default: '' },\n size: { default: undefined },\n value: { default: 'on' },\n },\n setup({ emit, host, props, reflect }) {\n // Form integration — provides checkedSignal and triggerValidation\n const { checkedSignal, formCtx, triggerValidation } = useToggleField(props);\n\n mountFormContextSync(host, formCtx, props);\n\n // Separate writable indeterminate signal, synced from the prop\n const indeterminateSignal = signal(Boolean(props.indeterminate.value));\n\n watch(props.indeterminate, (v) => {\n indeterminateSignal.value = Boolean(v);\n });\n\n const groupCtx = inject(CHECKBOX_GROUP_CTX, undefined);\n\n // Pass the writable checkedSignal directly — toggle() mutates it in place\n const controlHandle = createCheckableControl({\n checked: checkedSignal,\n clearIndeterminateFirst: true,\n disabled: props.disabled,\n group: groupCtx,\n indeterminate: indeterminateSignal,\n onToggle: (e) => {\n triggerValidation('change');\n\n // In a checkbox-group, the group owns change emission/state updates.\n // Emitting here would bubble to the group and toggle a second time.\n if (groupCtx) return;\n\n emit('change', controlHandle.changePayload(e));\n },\n value: props.value,\n });\n\n const a11y = useA11yControl(host, {\n checked: () => {\n if (controlHandle.indeterminate.value) return 'mixed';\n\n return controlHandle.checked.value ? 'true' : 'false';\n },\n helperText: () => props.error.value || props.helper.value,\n helperTone: () => (props.error.value ? 'error' : 'default'),\n invalid: () => !!props.error.value,\n role: 'checkbox',\n });\n\n reflect({\n checked: () => controlHandle.checked.value,\n classMap: () => ({\n 'is-checked': controlHandle.checked.value,\n 'is-disabled': !!props.disabled.value,\n 'is-indeterminate': controlHandle.indeterminate.value,\n }),\n indeterminate: () => controlHandle.indeterminate.value,\n onClick: (e: Event) => controlHandle.toggle(e),\n onKeydown: (e: Event) => {\n const ke = e as KeyboardEvent;\n\n if (ke.key === ' ' || ke.key === 'Enter') {\n ke.preventDefault();\n controlHandle.toggle(e);\n }\n },\n tabindex: () => (props.disabled.value ? undefined : 0),\n });\n\n return html`\n <div class=\"checkbox-wrapper\" part=\"checkbox\">\n <div class=\"box\" part=\"box\">\n <svg\n class=\"checkmark\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M 20,6 9,17 4,12\" />\n </svg>\n <svg\n class=\"dash\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M 5,12 H 19\" />\n </svg>\n </div>\n </div>\n <span class=\"label\" part=\"label\" data-a11y-label id=\"${a11y.labelId}\"><slot></slot></span>\n <div\n class=\"helper-text\"\n part=\"helper-text\"\n data-a11y-helper\n id=\"${a11y.helperId}\"\n aria-live=\"polite\"\n hidden></div>\n `;\n },\n styles: [...formControlMixins, coarsePointerMixin, sizeVariantMixin(CONTROL_SIZE_PRESET), componentStyles],\n tag: 'bit-checkbox',\n});\n"],"mappings":"stBAoDA,IAAa,GAAA,EAAA,EAAA,iBAAoE,CAC/E,eAAgB,GAChB,MAAO,CACL,QAAS,CAAE,QAAS,GAAO,CAC3B,MAAO,CAAE,QAAS,IAAA,GAAW,CAC7B,SAAU,CAAE,QAAS,GAAO,CAC5B,MAAO,CAAE,QAAS,GAAI,CACtB,OAAQ,CAAE,QAAS,GAAI,CACvB,cAAe,CAAE,QAAS,GAAO,CACjC,KAAM,CAAE,QAAS,GAAI,CACrB,KAAM,CAAE,QAAS,IAAA,GAAW,CAC5B,MAAO,CAAE,QAAS,KAAM,CACzB,CACD,MAAM,CAAE,OAAM,OAAM,QAAO,WAAW,CAEpC,GAAM,CAAE,gBAAe,UAAS,qBAAsB,EAAA,eAAe,EAAM,CAE3E,EAAA,qBAAqB,EAAM,EAAS,EAAM,CAG1C,IAAM,GAAA,EAAA,EAAA,QAA6B,EAAQ,EAAM,cAAc,MAAO,EAEtE,EAAA,EAAA,OAAM,EAAM,cAAgB,GAAM,CAChC,EAAoB,MAAQ,EAAQ,GACpC,CAEF,IAAM,GAAA,EAAA,EAAA,QAAkB,EAAA,mBAAoB,IAAA,GAAU,CAGhD,EAAgB,EAAA,EAAuB,CAC3C,QAAS,EACT,wBAAyB,GACzB,SAAU,EAAM,SAChB,MAAO,EACP,cAAe,EACf,SAAW,GAAM,CACf,EAAkB,SAAS,CAIvB,IAEJ,EAAK,SAAU,EAAc,cAAc,EAAE,CAAC,EAEhD,MAAO,EAAM,MACd,CAAC,CAEI,EAAO,EAAA,EAAe,EAAM,CAChC,YACM,EAAc,cAAc,MAAc,QAEvC,EAAc,QAAQ,MAAQ,OAAS,QAEhD,eAAkB,EAAM,MAAM,OAAS,EAAM,OAAO,MACpD,eAAmB,EAAM,MAAM,MAAQ,QAAU,UACjD,YAAe,CAAC,CAAC,EAAM,MAAM,MAC7B,KAAM,WACP,CAAC,CAsBF,OApBA,EAAQ,CACN,YAAe,EAAc,QAAQ,MACrC,cAAiB,CACf,aAAc,EAAc,QAAQ,MACpC,cAAe,CAAC,CAAC,EAAM,SAAS,MAChC,mBAAoB,EAAc,cAAc,MACjD,EACD,kBAAqB,EAAc,cAAc,MACjD,QAAU,GAAa,EAAc,OAAO,EAAE,CAC9C,UAAY,GAAa,CACvB,IAAM,EAAK,GAEP,EAAG,MAAQ,KAAO,EAAG,MAAQ,WAC/B,EAAG,gBAAgB,CACnB,EAAc,OAAO,EAAE,GAG3B,aAAiB,EAAM,SAAS,MAAQ,IAAA,GAAY,EACrD,CAAC,CAEK,EAAA,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;6DA2B8C,EAAK,QAAQ;;;;;cAK5D,EAAK,SAAS;;;OAK1B,OAAQ,CAAC,GAAG,EAAA,kBAAmB,EAAA,mBAAoB,EAAA,iBAAiB,EAAA,oBAAoB,CAAE,EAAA,QAAgB,CAC1G,IAAK,eACN,CAAC"}
@@ -0,0 +1,115 @@
1
+ import { coarsePointerMixin as e } from "./styles/mixins/accessibility.css.js";
2
+ import { sizeVariantMixin as t } from "./styles/mixins/shape.css.js";
3
+ import { formControlMixins as n } from "./styles/index.js";
4
+ import { r } from "./craftit/dist/labs/a11y.js";
5
+ import { t as i } from "./craftit/dist/labs/selectable.js";
6
+ import "./craftit/dist/labs.js";
7
+ import { mountFormContextSync as a } from "./inputs/shared/dom-sync/form-context.js";
8
+ import "./inputs/shared/dom-sync/index.js";
9
+ import { CHECKBOX_GROUP_CTX as o } from "./checkbox-group.js";
10
+ import { useToggleField as s } from "./inputs/shared/composables/use-toggle-field.js";
11
+ import "./inputs/shared/composables/index.js";
12
+ import { CONTROL_SIZE_PRESET as c } from "./inputs/shared/design-presets.js";
13
+ import l from "./inputs/checkbox/checkbox.css?inline.js";
14
+ import { defineComponent as u, html as d, inject as f, signal as p, watch as m } from "@vielzeug/craftit";
15
+ //#region src/inputs/checkbox/checkbox.ts
16
+ var h = u({
17
+ formAssociated: !0,
18
+ props: {
19
+ checked: { default: !1 },
20
+ color: { default: void 0 },
21
+ disabled: { default: !1 },
22
+ error: { default: "" },
23
+ helper: { default: "" },
24
+ indeterminate: { default: !1 },
25
+ name: { default: "" },
26
+ size: { default: void 0 },
27
+ value: { default: "on" }
28
+ },
29
+ setup({ emit: e, host: t, props: n, reflect: c }) {
30
+ let { checkedSignal: l, formCtx: u, triggerValidation: h } = s(n);
31
+ a(t, u, n);
32
+ let g = p(!!n.indeterminate.value);
33
+ m(n.indeterminate, (e) => {
34
+ g.value = !!e;
35
+ });
36
+ let _ = f(o, void 0), v = i({
37
+ checked: l,
38
+ clearIndeterminateFirst: !0,
39
+ disabled: n.disabled,
40
+ group: _,
41
+ indeterminate: g,
42
+ onToggle: (t) => {
43
+ h("change"), !_ && e("change", v.changePayload(t));
44
+ },
45
+ value: n.value
46
+ }), y = r(t, {
47
+ checked: () => v.indeterminate.value ? "mixed" : v.checked.value ? "true" : "false",
48
+ helperText: () => n.error.value || n.helper.value,
49
+ helperTone: () => n.error.value ? "error" : "default",
50
+ invalid: () => !!n.error.value,
51
+ role: "checkbox"
52
+ });
53
+ return c({
54
+ checked: () => v.checked.value,
55
+ classMap: () => ({
56
+ "is-checked": v.checked.value,
57
+ "is-disabled": !!n.disabled.value,
58
+ "is-indeterminate": v.indeterminate.value
59
+ }),
60
+ indeterminate: () => v.indeterminate.value,
61
+ onClick: (e) => v.toggle(e),
62
+ onKeydown: (e) => {
63
+ let t = e;
64
+ (t.key === " " || t.key === "Enter") && (t.preventDefault(), v.toggle(e));
65
+ },
66
+ tabindex: () => n.disabled.value ? void 0 : 0
67
+ }), d`
68
+ <div class="checkbox-wrapper" part="checkbox">
69
+ <div class="box" part="box">
70
+ <svg
71
+ class="checkmark"
72
+ viewBox="0 0 24 24"
73
+ fill="none"
74
+ stroke="currentColor"
75
+ stroke-width="2"
76
+ stroke-linecap="round"
77
+ stroke-linejoin="round"
78
+ xmlns="http://www.w3.org/2000/svg">
79
+ <path d="M 20,6 9,17 4,12" />
80
+ </svg>
81
+ <svg
82
+ class="dash"
83
+ viewBox="0 0 24 24"
84
+ fill="none"
85
+ stroke="currentColor"
86
+ stroke-width="2"
87
+ stroke-linecap="round"
88
+ stroke-linejoin="round"
89
+ xmlns="http://www.w3.org/2000/svg">
90
+ <path d="M 5,12 H 19" />
91
+ </svg>
92
+ </div>
93
+ </div>
94
+ <span class="label" part="label" data-a11y-label id="${y.labelId}"><slot></slot></span>
95
+ <div
96
+ class="helper-text"
97
+ part="helper-text"
98
+ data-a11y-helper
99
+ id="${y.helperId}"
100
+ aria-live="polite"
101
+ hidden></div>
102
+ `;
103
+ },
104
+ styles: [
105
+ ...n,
106
+ e,
107
+ t(c),
108
+ l
109
+ ],
110
+ tag: "bit-checkbox"
111
+ });
112
+ //#endregion
113
+ export { h as CHECKBOX_TAG };
114
+
115
+ //# sourceMappingURL=checkbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox.js","names":[],"sources":["../src/inputs/checkbox/checkbox.ts"],"sourcesContent":["import { defineComponent, html, inject, signal, watch } from '@vielzeug/craftit';\nimport { useA11yControl, createCheckableControl } from '@vielzeug/craftit/labs';\n\nimport type { CheckableProps, DisablableProps, SizableProps, ThemableProps } from '../../types';\n\nimport { coarsePointerMixin, formControlMixins, sizeVariantMixin } from '../../styles';\nimport { CHECKBOX_GROUP_CTX } from '../checkbox-group/checkbox-group';\nimport { useToggleField } from '../shared/composables';\nimport { CONTROL_SIZE_PRESET } from '../shared/design-presets';\nimport { mountFormContextSync } from '../shared/dom-sync';\nimport componentStyles from './checkbox.css?inline';\n\nexport type BitCheckboxEvents = {\n change: { checked: boolean; fieldValue: string; originalEvent?: Event; value: boolean };\n};\n\nexport type BitCheckboxProps = CheckableProps &\n ThemableProps &\n SizableProps &\n DisablableProps & {\n /** Error message (marks field as invalid) */\n error?: string;\n /** Helper text displayed below the checkbox */\n helper?: string;\n /** Indeterminate state (partially checked) */\n indeterminate?: boolean;\n };\n\n/**\n * A customizable checkbox component with theme colors, sizes, and indeterminate state support.\n *\n * @element bit-checkbox\n *\n * @attr {boolean} checked - Checked state\n * @attr {boolean} disabled - Disable checkbox interaction\n * @attr {boolean} indeterminate - Indeterminate (partially checked) state\n * @attr {string} value - Field value submitted with forms\n * @attr {string} name - Form field name\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} size - Checkbox size: 'sm' | 'md' | 'lg'\n * @attr {string} error - Error message (marks field as invalid)\n * @attr {string} helper - Helper text displayed below the checkbox\n *\n * @fires change - Emitted when checkbox is toggled. detail: { value: boolean, checked: boolean, fieldValue: string, originalEvent?: Event }\n *\n * @slot - Checkbox label text\n *\n * @part checkbox - The checkbox wrapper element\n * @part box - The visual checkbox box\n * @part label - The label element\n * @part helper-text - The helper/error text element\n */\nexport const CHECKBOX_TAG = defineComponent<BitCheckboxProps, BitCheckboxEvents>({\n formAssociated: true,\n props: {\n checked: { default: false },\n color: { default: undefined },\n disabled: { default: false },\n error: { default: '' },\n helper: { default: '' },\n indeterminate: { default: false },\n name: { default: '' },\n size: { default: undefined },\n value: { default: 'on' },\n },\n setup({ emit, host, props, reflect }) {\n // Form integration — provides checkedSignal and triggerValidation\n const { checkedSignal, formCtx, triggerValidation } = useToggleField(props);\n\n mountFormContextSync(host, formCtx, props);\n\n // Separate writable indeterminate signal, synced from the prop\n const indeterminateSignal = signal(Boolean(props.indeterminate.value));\n\n watch(props.indeterminate, (v) => {\n indeterminateSignal.value = Boolean(v);\n });\n\n const groupCtx = inject(CHECKBOX_GROUP_CTX, undefined);\n\n // Pass the writable checkedSignal directly — toggle() mutates it in place\n const controlHandle = createCheckableControl({\n checked: checkedSignal,\n clearIndeterminateFirst: true,\n disabled: props.disabled,\n group: groupCtx,\n indeterminate: indeterminateSignal,\n onToggle: (e) => {\n triggerValidation('change');\n\n // In a checkbox-group, the group owns change emission/state updates.\n // Emitting here would bubble to the group and toggle a second time.\n if (groupCtx) return;\n\n emit('change', controlHandle.changePayload(e));\n },\n value: props.value,\n });\n\n const a11y = useA11yControl(host, {\n checked: () => {\n if (controlHandle.indeterminate.value) return 'mixed';\n\n return controlHandle.checked.value ? 'true' : 'false';\n },\n helperText: () => props.error.value || props.helper.value,\n helperTone: () => (props.error.value ? 'error' : 'default'),\n invalid: () => !!props.error.value,\n role: 'checkbox',\n });\n\n reflect({\n checked: () => controlHandle.checked.value,\n classMap: () => ({\n 'is-checked': controlHandle.checked.value,\n 'is-disabled': !!props.disabled.value,\n 'is-indeterminate': controlHandle.indeterminate.value,\n }),\n indeterminate: () => controlHandle.indeterminate.value,\n onClick: (e: Event) => controlHandle.toggle(e),\n onKeydown: (e: Event) => {\n const ke = e as KeyboardEvent;\n\n if (ke.key === ' ' || ke.key === 'Enter') {\n ke.preventDefault();\n controlHandle.toggle(e);\n }\n },\n tabindex: () => (props.disabled.value ? undefined : 0),\n });\n\n return html`\n <div class=\"checkbox-wrapper\" part=\"checkbox\">\n <div class=\"box\" part=\"box\">\n <svg\n class=\"checkmark\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M 20,6 9,17 4,12\" />\n </svg>\n <svg\n class=\"dash\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M 5,12 H 19\" />\n </svg>\n </div>\n </div>\n <span class=\"label\" part=\"label\" data-a11y-label id=\"${a11y.labelId}\"><slot></slot></span>\n <div\n class=\"helper-text\"\n part=\"helper-text\"\n data-a11y-helper\n id=\"${a11y.helperId}\"\n aria-live=\"polite\"\n hidden></div>\n `;\n },\n styles: [...formControlMixins, coarsePointerMixin, sizeVariantMixin(CONTROL_SIZE_PRESET), componentStyles],\n tag: 'bit-checkbox',\n});\n"],"mappings":";;;;;;;;;;;;;;;AAoDA,IAAa,IAAe,EAAqD;CAC/E,gBAAgB;CAChB,OAAO;EACL,SAAS,EAAE,SAAS,IAAO;EAC3B,OAAO,EAAE,SAAS,KAAA,GAAW;EAC7B,UAAU,EAAE,SAAS,IAAO;EAC5B,OAAO,EAAE,SAAS,IAAI;EACtB,QAAQ,EAAE,SAAS,IAAI;EACvB,eAAe,EAAE,SAAS,IAAO;EACjC,MAAM,EAAE,SAAS,IAAI;EACrB,MAAM,EAAE,SAAS,KAAA,GAAW;EAC5B,OAAO,EAAE,SAAS,MAAM;EACzB;CACD,MAAM,EAAE,SAAM,SAAM,UAAO,cAAW;EAEpC,IAAM,EAAE,kBAAe,YAAS,yBAAsB,EAAe,EAAM;AAE3E,IAAqB,GAAM,GAAS,EAAM;EAG1C,IAAM,IAAsB,EAAO,EAAQ,EAAM,cAAc,MAAO;AAEtE,IAAM,EAAM,gBAAgB,MAAM;AAChC,KAAoB,QAAQ,EAAQ;IACpC;EAEF,IAAM,IAAW,EAAO,GAAoB,KAAA,EAAU,EAGhD,IAAgB,EAAuB;GAC3C,SAAS;GACT,yBAAyB;GACzB,UAAU,EAAM;GAChB,OAAO;GACP,eAAe;GACf,WAAW,MAAM;AACf,MAAkB,SAAS,EAIvB,MAEJ,EAAK,UAAU,EAAc,cAAc,EAAE,CAAC;;GAEhD,OAAO,EAAM;GACd,CAAC,EAEI,IAAO,EAAe,GAAM;GAChC,eACM,EAAc,cAAc,QAAc,UAEvC,EAAc,QAAQ,QAAQ,SAAS;GAEhD,kBAAkB,EAAM,MAAM,SAAS,EAAM,OAAO;GACpD,kBAAmB,EAAM,MAAM,QAAQ,UAAU;GACjD,eAAe,CAAC,CAAC,EAAM,MAAM;GAC7B,MAAM;GACP,CAAC;AAsBF,SApBA,EAAQ;GACN,eAAe,EAAc,QAAQ;GACrC,iBAAiB;IACf,cAAc,EAAc,QAAQ;IACpC,eAAe,CAAC,CAAC,EAAM,SAAS;IAChC,oBAAoB,EAAc,cAAc;IACjD;GACD,qBAAqB,EAAc,cAAc;GACjD,UAAU,MAAa,EAAc,OAAO,EAAE;GAC9C,YAAY,MAAa;IACvB,IAAM,IAAK;AAEX,KAAI,EAAG,QAAQ,OAAO,EAAG,QAAQ,aAC/B,EAAG,gBAAgB,EACnB,EAAc,OAAO,EAAE;;GAG3B,gBAAiB,EAAM,SAAS,QAAQ,KAAA,IAAY;GACrD,CAAC,EAEK,CAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;6DA2B8C,EAAK,QAAQ;;;;;cAK5D,EAAK,SAAS;;;;;CAK1B,QAAQ;EAAC,GAAG;EAAmB;EAAoB,EAAiB,EAAoB;EAAE;EAAgB;CAC1G,KAAK;CACN,CAAC"}
package/dist/chip.cjs ADDED
@@ -0,0 +1,56 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/shape.css.cjs`),t=require(`./styles/mixins/states.css.cjs`),n=require(`./styles/mixins/theme.css.cjs`);require(`./styles/index.cjs`);const r=require(`./feedback/chip/chip.css?inline.cjs`);let i=require(`@vielzeug/craftit`);var a=i.html`
2
+ <svg
3
+ xmlns="http://www.w3.org/2000/svg"
4
+ viewBox="0 0 24 24"
5
+ fill="none"
6
+ stroke="currentColor"
7
+ stroke-width="2.5"
8
+ stroke-linecap="round"
9
+ stroke-linejoin="round"
10
+ width="0.75em"
11
+ height="0.75em"
12
+ aria-hidden="true">
13
+ <path d="M18 6 6 18M6 6l12 12" />
14
+ </svg>
15
+ `,o=(0,i.defineComponent)({props:{"aria-label":(0,i.typed)(void 0),checked:(0,i.typed)(void 0,{parse:e=>e==null?void 0:e!==`false`}),color:(0,i.typed)(void 0),"default-checked":(0,i.typed)(!1),disabled:(0,i.typed)(!1),mode:(0,i.typed)(`static`),rounded:(0,i.typed)(void 0),size:(0,i.typed)(void 0),value:(0,i.typed)(void 0),variant:(0,i.typed)(void 0)},setup({emit:e,host:t,props:n}){let r=n.checked,o=n[`aria-label`],s=(0,i.signal)(r.value!==void 0),c=(0,i.signal)(!s.value&&n[`default-checked`].value);(0,i.watch)(r,e=>{e!==void 0&&(s.value=!0)});let l=(0,i.computed)(()=>n.mode.value===`selectable`?s.value?r.value??!1:c.value:!1);(0,i.watch)([l,n.mode],()=>{t.toggleAttribute(`checked`,n.mode.value===`selectable`&&l.value)},{immediate:!0});function u(t){t.stopPropagation(),!n.disabled.value&&e(`remove`,{originalEvent:t,value:n.value.value})}function d(t){if(t.stopPropagation(),n.disabled.value)return;let r=!l.value;s.value||(c.value=r),e(`change`,{checked:r,originalEvent:t,value:n.value.value})}function f(t){t.stopPropagation(),!n.disabled.value&&e(`click`,{originalEvent:t,value:n.value.value})}let p=()=>i.html`
16
+ <slot name="icon"></slot>
17
+ <span class="label"><slot></slot></span>
18
+ `,m=()=>i.html`
19
+ <button
20
+ class="remove-btn"
21
+ part="remove-btn"
22
+ type="button"
23
+ :aria-label="${()=>{let e=o.value||n.value.value;return e?`Remove ${e}`:`Remove`}}"
24
+ ?hidden="${()=>n.mode.value!==`removable`}"
25
+ :disabled="${()=>n.disabled.value}"
26
+ @click="${u}">
27
+ ${a}
28
+ </button>
29
+ `,h=()=>i.html`
30
+ <button
31
+ class="chip-btn"
32
+ part="chip-btn"
33
+ type="button"
34
+ role="checkbox"
35
+ :aria-checked="${()=>String(l.value)}"
36
+ :aria-label="${()=>o.value}"
37
+ :disabled="${()=>n.disabled.value}"
38
+ @click="${d}">
39
+ <span class="chip" part="chip"> ${p()} </span>
40
+ </button>
41
+ `,g=()=>i.html`
42
+ <button
43
+ class="chip-btn"
44
+ part="chip-btn"
45
+ type="button"
46
+ :aria-label="${()=>o.value}"
47
+ :disabled="${()=>n.disabled.value}"
48
+ @click="${f}">
49
+ <span class="chip" part="chip"> ${p()} </span>
50
+ </button>
51
+ `,_=()=>i.html` <span class="chip" part="chip"> ${p()} </span> `,v=()=>i.html`
52
+ <span class="chip" part="chip"> ${p()} ${m()} </span>
53
+ `;return i.html`
54
+ ${()=>{let e=n.mode.value;return e===`selectable`?h():e===`action`?g():e===`removable`?v():_()}}
55
+ `},styles:[n.colorThemeMixin,t.disabledStateMixin(),e.roundedVariantMixin,e.sizeVariantMixin({lg:{"--_font-size":`var(--text-sm)`,"--_gap":`var(--size-1-5)`,"--_padding-x":`var(--size-3)`,"--_padding-y":`var(--size-1)`},sm:{"--_font-size":`var(--text-xs)`,"--_gap":`var(--size-0-5)`,"--_padding-x":`var(--size-2-5)`,"--_padding-y":`var(--size-px)`}}),n.forcedColorsMixin,r.default],tag:`bit-chip`});exports.CHIP_TAG=o;
56
+ //# sourceMappingURL=chip.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chip.cjs","names":[],"sources":["../src/feedback/chip/chip.ts"],"sourcesContent":["import { computed, defineComponent, html, signal, typed, watch } from '@vielzeug/craftit';\n\nimport type { ComponentSize, RoundedSize, ThemeColor, VisualVariant } from '../../types';\n\nimport {\n colorThemeMixin,\n disabledStateMixin,\n forcedColorsMixin,\n roundedVariantMixin,\n sizeVariantMixin,\n} from '../../styles';\n// ============================================\n// Styles\n// ============================================\nimport componentStyles from './chip.css?inline';\n\n// ============================================\n// Icons\n// ============================================\n\n// Small close icon for remove button (relative sizing for chip)\nconst CHIP_CLOSE_ICON = html`\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n width=\"0.75em\"\n height=\"0.75em\"\n aria-hidden=\"true\">\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n`;\n\n// ============================================\n// Types\n// ============================================\n\n/** Chip component properties */\ntype ChipBaseProps = {\n /** Accessible label (required for icon-only chips) */\n 'aria-label'?: string;\n /** Theme color */\n color?: ThemeColor;\n /** Disable interactions */\n disabled?: boolean;\n /** Border radius override */\n rounded?: RoundedSize | '';\n /** Component size */\n size?: ComponentSize;\n /** Value associated with this chip — included in emitted event detail */\n value?: string;\n /** Visual style variant */\n variant?: Exclude<VisualVariant, 'glass' | 'text' | 'frost'>;\n};\n\ntype BitChipMode = 'static' | 'removable' | 'selectable' | 'action';\n\n/** Read-only presentation chip */\ntype StaticChipProps = {\n mode?: Extract<BitChipMode, 'static'>;\n};\n\n/** Removable chip mode */\ntype RemovableChipProps = {\n mode: Extract<BitChipMode, 'removable'>;\n};\n\n/** Selectable chip mode */\ntype SelectableChipProps = {\n /** Controlled checked state for `mode=\"selectable\"` */\n checked?: boolean | undefined;\n /** Initial checked state for uncontrolled `mode=\"selectable\"` */\n 'default-checked'?: boolean;\n mode: Extract<BitChipMode, 'selectable'>;\n};\n\n/** Action chip mode — behaves like a button, fires a click event without maintaining state */\ntype ActionChipProps = {\n mode: Extract<BitChipMode, 'action'>;\n};\n\ntype BitChipComponentProps = ChipBaseProps & {\n checked?: boolean | undefined;\n 'default-checked'?: boolean;\n mode?: BitChipMode;\n};\n\nexport type BitChipEvents = {\n change: { checked: boolean; originalEvent: Event; value: string | undefined };\n click: { originalEvent: MouseEvent; value: string | undefined };\n remove: { originalEvent: MouseEvent; value: string | undefined };\n};\n\nexport type BitChipProps = ChipBaseProps &\n (StaticChipProps | RemovableChipProps | SelectableChipProps | ActionChipProps);\n\n/**\n * A compact, styled label element. Supports icons, a remove button, colors, sizes, and variants.\n * Commonly used to represent tags, filters, or selected options in a multiselect field.\n *\n * @element bit-chip\n *\n * @attr {string} aria-label - Accessible label (required for icon-only chips)\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost'\n * @attr {string} size - Component size: 'sm' | 'md' | 'lg'\n * @attr {string} rounded - Border radius: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'\n * @attr {string} mode - Interaction mode: 'static' | 'removable' | 'selectable' | 'action'\n * @attr {boolean} disabled - Disable the chip\n * @attr {string} value - Value included in emitted event detail\n * @attr {boolean} checked - Controlled checked state for selectable chips\n * @attr {boolean} default-checked - Initial checked state for uncontrolled selectable chips\n *\n * @slot - Chip label text\n * @slot icon - Leading icon or decoration\n *\n * @event remove - Fired when the remove button is clicked, with `detail.value` and `detail.originalEvent`\n * @event change - Fired when a selectable chip toggles, with `detail.checked`, `detail.value`, and `detail.originalEvent`\n * @event click - Fired when an action chip is clicked, with `detail.value` and `detail.originalEvent`\n *\n * @cssprop --chip-bg - Background color\n * @cssprop --chip-color - Text color\n * @cssprop --chip-border-color - Border color\n * @cssprop --chip-radius - Border radius\n * @cssprop --chip-font-size - Font size\n * @cssprop --chip-font-weight - Font weight\n * @cssprop --chip-padding-x - Horizontal padding\n * @cssprop --chip-padding-y - Vertical padding\n * @cssprop --chip-gap - Gap between icon, label and remove button\n *\n * @example\n * ```html\n * <!-- Static chip (read-only) -->\n * <bit-chip color=\"primary\">Design</bit-chip>\n *\n * <!-- Removable chip -->\n * <bit-chip color=\"success\" variant=\"flat\" mode=\"removable\" value=\"ts\">\n * TypeScript\n * </bit-chip>\n *\n * <!-- Selectable chip (controlled) -->\n * <bit-chip color=\"info\" variant=\"flat\" mode=\"selectable\" checked value=\"ui\">\n * UI\n * </bit-chip>\n *\n * <!-- Selectable chip (uncontrolled) -->\n * <bit-chip color=\"info\" variant=\"flat\" mode=\"selectable\" default-checked value=\"ui\">\n * UI\n * </bit-chip>\n *\n * <!-- Action chip (acts like a button) -->\n * <bit-chip color=\"warning\" mode=\"action\" value=\"add\">\n * <svg slot=\"icon\" ...></svg>\n * Add Item\n * </bit-chip>\n *\n * <!-- Icon-only chip -->\n * <bit-chip color=\"error\" mode=\"action\" aria-label=\"Delete\">\n * <svg slot=\"icon\" ...></svg>\n * </bit-chip>\n * ```\n */\nexport const CHIP_TAG = defineComponent<BitChipComponentProps, BitChipEvents>({\n props: {\n 'aria-label': typed<BitChipComponentProps['aria-label']>(undefined),\n checked: typed<BitChipComponentProps['checked']>(undefined, {\n parse: (value) => (value == null ? undefined : value !== 'false'),\n }),\n color: typed<BitChipComponentProps['color']>(undefined),\n 'default-checked': typed<boolean>(false),\n disabled: typed<boolean>(false),\n mode: typed<BitChipMode>('static'),\n rounded: typed<BitChipComponentProps['rounded']>(undefined),\n size: typed<BitChipComponentProps['size']>(undefined),\n value: typed<BitChipComponentProps['value']>(undefined),\n variant: typed<BitChipComponentProps['variant']>(undefined),\n },\n setup({ emit, host, props }) {\n const checkedProp = props.checked;\n const ariaLabelProp = props['aria-label'];\n // ============================================\n // State Management\n // ============================================\n // Once a checked prop is provided, treat the chip as controlled for the rest of its lifecycle.\n const isControlled = signal(checkedProp.value !== undefined);\n // Internal tracking for uncontrolled selectable chips; seeded from default-checked.\n const checkedState = signal(!isControlled.value && props['default-checked'].value);\n\n watch(checkedProp, (value) => {\n if (value !== undefined) {\n isControlled.value = true;\n }\n });\n\n // Effective checked value — reactive to checked prop changes in controlled mode.\n const isChecked = computed(() => {\n if (props.mode.value !== 'selectable') return false;\n\n if (isControlled.value) {\n return checkedProp.value ?? false;\n }\n\n return checkedState.value;\n });\n\n // Sync the [checked] attribute for CSS selectors across controlled and uncontrolled modes.\n watch(\n [isChecked, props.mode],\n () => {\n host.toggleAttribute('checked', props.mode.value === 'selectable' && isChecked.value);\n },\n { immediate: true },\n );\n // ============================================\n // Event Handlers\n // ============================================\n function handleRemove(e: MouseEvent) {\n e.stopPropagation();\n\n if (props.disabled.value) return;\n\n // Button's disabled attribute prevents this from firing when disabled\n emit('remove', { originalEvent: e, value: props.value.value });\n }\n function handleSelectableActivate(e: MouseEvent) {\n e.stopPropagation();\n\n if (props.disabled.value) return;\n\n const nextChecked = !isChecked.value;\n\n if (!isControlled.value) {\n checkedState.value = nextChecked;\n }\n\n emit('change', { checked: nextChecked, originalEvent: e, value: props.value.value });\n }\n function handleActionClick(e: MouseEvent) {\n e.stopPropagation();\n\n if (props.disabled.value) return;\n\n emit('click', { originalEvent: e, value: props.value.value });\n }\n\n // ============================================\n // Template Helpers\n // ============================================\n const renderChipContent = () => html`\n <slot name=\"icon\"></slot>\n <span class=\"label\"><slot></slot></span>\n `;\n const renderRemoveButton = () => html`\n <button\n class=\"remove-btn\"\n part=\"remove-btn\"\n type=\"button\"\n :aria-label=\"${() => {\n const label = ariaLabelProp.value || props.value.value;\n\n return label ? `Remove ${label}` : 'Remove';\n }}\"\n ?hidden=\"${() => props.mode.value !== 'removable'}\"\n :disabled=\"${() => props.disabled.value}\"\n @click=\"${handleRemove}\">\n ${CHIP_CLOSE_ICON}\n </button>\n `;\n const renderSelectableChip = () => html`\n <button\n class=\"chip-btn\"\n part=\"chip-btn\"\n type=\"button\"\n role=\"checkbox\"\n :aria-checked=\"${() => String(isChecked.value)}\"\n :aria-label=\"${() => ariaLabelProp.value}\"\n :disabled=\"${() => props.disabled.value}\"\n @click=\"${handleSelectableActivate}\">\n <span class=\"chip\" part=\"chip\"> ${renderChipContent()} </span>\n </button>\n `;\n const renderActionChip = () => html`\n <button\n class=\"chip-btn\"\n part=\"chip-btn\"\n type=\"button\"\n :aria-label=\"${() => ariaLabelProp.value}\"\n :disabled=\"${() => props.disabled.value}\"\n @click=\"${handleActionClick}\">\n <span class=\"chip\" part=\"chip\"> ${renderChipContent()} </span>\n </button>\n `;\n const renderStaticChip = () => html` <span class=\"chip\" part=\"chip\"> ${renderChipContent()} </span> `;\n const renderRemovableChip = () => html`\n <span class=\"chip\" part=\"chip\"> ${renderChipContent()} ${renderRemoveButton()} </span>\n `;\n\n // ============================================\n // Render\n // ============================================\n return html`\n ${() => {\n const mode = props.mode.value;\n\n if (mode === 'selectable') return renderSelectableChip();\n\n if (mode === 'action') return renderActionChip();\n\n if (mode === 'removable') return renderRemovableChip();\n\n return renderStaticChip();\n }}\n `;\n },\n styles: [\n colorThemeMixin,\n disabledStateMixin(),\n roundedVariantMixin,\n sizeVariantMixin({\n lg: {\n '--_font-size': 'var(--text-sm)',\n '--_gap': 'var(--size-1-5)',\n '--_padding-x': 'var(--size-3)',\n '--_padding-y': 'var(--size-1)',\n },\n sm: {\n '--_font-size': 'var(--text-xs)',\n '--_gap': 'var(--size-0-5)',\n '--_padding-x': 'var(--size-2-5)',\n '--_padding-y': 'var(--size-px)',\n },\n }),\n forcedColorsMixin,\n componentStyles,\n ],\n tag: 'bit-chip',\n});\n"],"mappings":"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"}
package/dist/chip.js ADDED
@@ -0,0 +1,140 @@
1
+ import { roundedVariantMixin as e, sizeVariantMixin as t } from "./styles/mixins/shape.css.js";
2
+ import { disabledStateMixin as n } from "./styles/mixins/states.css.js";
3
+ import { colorThemeMixin as r, forcedColorsMixin as i } from "./styles/mixins/theme.css.js";
4
+ import "./styles/index.js";
5
+ import a from "./feedback/chip/chip.css?inline.js";
6
+ import { computed as o, defineComponent as s, html as c, signal as l, typed as u, watch as d } from "@vielzeug/craftit";
7
+ //#region src/feedback/chip/chip.ts
8
+ var f = c`
9
+ <svg
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ viewBox="0 0 24 24"
12
+ fill="none"
13
+ stroke="currentColor"
14
+ stroke-width="2.5"
15
+ stroke-linecap="round"
16
+ stroke-linejoin="round"
17
+ width="0.75em"
18
+ height="0.75em"
19
+ aria-hidden="true">
20
+ <path d="M18 6 6 18M6 6l12 12" />
21
+ </svg>
22
+ `, p = s({
23
+ props: {
24
+ "aria-label": u(void 0),
25
+ checked: u(void 0, { parse: (e) => e == null ? void 0 : e !== "false" }),
26
+ color: u(void 0),
27
+ "default-checked": u(!1),
28
+ disabled: u(!1),
29
+ mode: u("static"),
30
+ rounded: u(void 0),
31
+ size: u(void 0),
32
+ value: u(void 0),
33
+ variant: u(void 0)
34
+ },
35
+ setup({ emit: e, host: t, props: n }) {
36
+ let r = n.checked, i = n["aria-label"], a = l(r.value !== void 0), s = l(!a.value && n["default-checked"].value);
37
+ d(r, (e) => {
38
+ e !== void 0 && (a.value = !0);
39
+ });
40
+ let u = o(() => n.mode.value === "selectable" ? a.value ? r.value ?? !1 : s.value : !1);
41
+ d([u, n.mode], () => {
42
+ t.toggleAttribute("checked", n.mode.value === "selectable" && u.value);
43
+ }, { immediate: !0 });
44
+ function p(t) {
45
+ t.stopPropagation(), !n.disabled.value && e("remove", {
46
+ originalEvent: t,
47
+ value: n.value.value
48
+ });
49
+ }
50
+ function m(t) {
51
+ if (t.stopPropagation(), n.disabled.value) return;
52
+ let r = !u.value;
53
+ a.value || (s.value = r), e("change", {
54
+ checked: r,
55
+ originalEvent: t,
56
+ value: n.value.value
57
+ });
58
+ }
59
+ function h(t) {
60
+ t.stopPropagation(), !n.disabled.value && e("click", {
61
+ originalEvent: t,
62
+ value: n.value.value
63
+ });
64
+ }
65
+ let g = () => c`
66
+ <slot name="icon"></slot>
67
+ <span class="label"><slot></slot></span>
68
+ `, _ = () => c`
69
+ <button
70
+ class="remove-btn"
71
+ part="remove-btn"
72
+ type="button"
73
+ :aria-label="${() => {
74
+ let e = i.value || n.value.value;
75
+ return e ? `Remove ${e}` : "Remove";
76
+ }}"
77
+ ?hidden="${() => n.mode.value !== "removable"}"
78
+ :disabled="${() => n.disabled.value}"
79
+ @click="${p}">
80
+ ${f}
81
+ </button>
82
+ `, v = () => c`
83
+ <button
84
+ class="chip-btn"
85
+ part="chip-btn"
86
+ type="button"
87
+ role="checkbox"
88
+ :aria-checked="${() => String(u.value)}"
89
+ :aria-label="${() => i.value}"
90
+ :disabled="${() => n.disabled.value}"
91
+ @click="${m}">
92
+ <span class="chip" part="chip"> ${g()} </span>
93
+ </button>
94
+ `, y = () => c`
95
+ <button
96
+ class="chip-btn"
97
+ part="chip-btn"
98
+ type="button"
99
+ :aria-label="${() => i.value}"
100
+ :disabled="${() => n.disabled.value}"
101
+ @click="${h}">
102
+ <span class="chip" part="chip"> ${g()} </span>
103
+ </button>
104
+ `, b = () => c` <span class="chip" part="chip"> ${g()} </span> `, x = () => c`
105
+ <span class="chip" part="chip"> ${g()} ${_()} </span>
106
+ `;
107
+ return c`
108
+ ${() => {
109
+ let e = n.mode.value;
110
+ return e === "selectable" ? v() : e === "action" ? y() : e === "removable" ? x() : b();
111
+ }}
112
+ `;
113
+ },
114
+ styles: [
115
+ r,
116
+ n(),
117
+ e,
118
+ t({
119
+ lg: {
120
+ "--_font-size": "var(--text-sm)",
121
+ "--_gap": "var(--size-1-5)",
122
+ "--_padding-x": "var(--size-3)",
123
+ "--_padding-y": "var(--size-1)"
124
+ },
125
+ sm: {
126
+ "--_font-size": "var(--text-xs)",
127
+ "--_gap": "var(--size-0-5)",
128
+ "--_padding-x": "var(--size-2-5)",
129
+ "--_padding-y": "var(--size-px)"
130
+ }
131
+ }),
132
+ i,
133
+ a
134
+ ],
135
+ tag: "bit-chip"
136
+ });
137
+ //#endregion
138
+ export { p as CHIP_TAG };
139
+
140
+ //# sourceMappingURL=chip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chip.js","names":[],"sources":["../src/feedback/chip/chip.ts"],"sourcesContent":["import { computed, defineComponent, html, signal, typed, watch } from '@vielzeug/craftit';\n\nimport type { ComponentSize, RoundedSize, ThemeColor, VisualVariant } from '../../types';\n\nimport {\n colorThemeMixin,\n disabledStateMixin,\n forcedColorsMixin,\n roundedVariantMixin,\n sizeVariantMixin,\n} from '../../styles';\n// ============================================\n// Styles\n// ============================================\nimport componentStyles from './chip.css?inline';\n\n// ============================================\n// Icons\n// ============================================\n\n// Small close icon for remove button (relative sizing for chip)\nconst CHIP_CLOSE_ICON = html`\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n width=\"0.75em\"\n height=\"0.75em\"\n aria-hidden=\"true\">\n <path d=\"M18 6 6 18M6 6l12 12\" />\n </svg>\n`;\n\n// ============================================\n// Types\n// ============================================\n\n/** Chip component properties */\ntype ChipBaseProps = {\n /** Accessible label (required for icon-only chips) */\n 'aria-label'?: string;\n /** Theme color */\n color?: ThemeColor;\n /** Disable interactions */\n disabled?: boolean;\n /** Border radius override */\n rounded?: RoundedSize | '';\n /** Component size */\n size?: ComponentSize;\n /** Value associated with this chip — included in emitted event detail */\n value?: string;\n /** Visual style variant */\n variant?: Exclude<VisualVariant, 'glass' | 'text' | 'frost'>;\n};\n\ntype BitChipMode = 'static' | 'removable' | 'selectable' | 'action';\n\n/** Read-only presentation chip */\ntype StaticChipProps = {\n mode?: Extract<BitChipMode, 'static'>;\n};\n\n/** Removable chip mode */\ntype RemovableChipProps = {\n mode: Extract<BitChipMode, 'removable'>;\n};\n\n/** Selectable chip mode */\ntype SelectableChipProps = {\n /** Controlled checked state for `mode=\"selectable\"` */\n checked?: boolean | undefined;\n /** Initial checked state for uncontrolled `mode=\"selectable\"` */\n 'default-checked'?: boolean;\n mode: Extract<BitChipMode, 'selectable'>;\n};\n\n/** Action chip mode — behaves like a button, fires a click event without maintaining state */\ntype ActionChipProps = {\n mode: Extract<BitChipMode, 'action'>;\n};\n\ntype BitChipComponentProps = ChipBaseProps & {\n checked?: boolean | undefined;\n 'default-checked'?: boolean;\n mode?: BitChipMode;\n};\n\nexport type BitChipEvents = {\n change: { checked: boolean; originalEvent: Event; value: string | undefined };\n click: { originalEvent: MouseEvent; value: string | undefined };\n remove: { originalEvent: MouseEvent; value: string | undefined };\n};\n\nexport type BitChipProps = ChipBaseProps &\n (StaticChipProps | RemovableChipProps | SelectableChipProps | ActionChipProps);\n\n/**\n * A compact, styled label element. Supports icons, a remove button, colors, sizes, and variants.\n * Commonly used to represent tags, filters, or selected options in a multiselect field.\n *\n * @element bit-chip\n *\n * @attr {string} aria-label - Accessible label (required for icon-only chips)\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost'\n * @attr {string} size - Component size: 'sm' | 'md' | 'lg'\n * @attr {string} rounded - Border radius: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'\n * @attr {string} mode - Interaction mode: 'static' | 'removable' | 'selectable' | 'action'\n * @attr {boolean} disabled - Disable the chip\n * @attr {string} value - Value included in emitted event detail\n * @attr {boolean} checked - Controlled checked state for selectable chips\n * @attr {boolean} default-checked - Initial checked state for uncontrolled selectable chips\n *\n * @slot - Chip label text\n * @slot icon - Leading icon or decoration\n *\n * @event remove - Fired when the remove button is clicked, with `detail.value` and `detail.originalEvent`\n * @event change - Fired when a selectable chip toggles, with `detail.checked`, `detail.value`, and `detail.originalEvent`\n * @event click - Fired when an action chip is clicked, with `detail.value` and `detail.originalEvent`\n *\n * @cssprop --chip-bg - Background color\n * @cssprop --chip-color - Text color\n * @cssprop --chip-border-color - Border color\n * @cssprop --chip-radius - Border radius\n * @cssprop --chip-font-size - Font size\n * @cssprop --chip-font-weight - Font weight\n * @cssprop --chip-padding-x - Horizontal padding\n * @cssprop --chip-padding-y - Vertical padding\n * @cssprop --chip-gap - Gap between icon, label and remove button\n *\n * @example\n * ```html\n * <!-- Static chip (read-only) -->\n * <bit-chip color=\"primary\">Design</bit-chip>\n *\n * <!-- Removable chip -->\n * <bit-chip color=\"success\" variant=\"flat\" mode=\"removable\" value=\"ts\">\n * TypeScript\n * </bit-chip>\n *\n * <!-- Selectable chip (controlled) -->\n * <bit-chip color=\"info\" variant=\"flat\" mode=\"selectable\" checked value=\"ui\">\n * UI\n * </bit-chip>\n *\n * <!-- Selectable chip (uncontrolled) -->\n * <bit-chip color=\"info\" variant=\"flat\" mode=\"selectable\" default-checked value=\"ui\">\n * UI\n * </bit-chip>\n *\n * <!-- Action chip (acts like a button) -->\n * <bit-chip color=\"warning\" mode=\"action\" value=\"add\">\n * <svg slot=\"icon\" ...></svg>\n * Add Item\n * </bit-chip>\n *\n * <!-- Icon-only chip -->\n * <bit-chip color=\"error\" mode=\"action\" aria-label=\"Delete\">\n * <svg slot=\"icon\" ...></svg>\n * </bit-chip>\n * ```\n */\nexport const CHIP_TAG = defineComponent<BitChipComponentProps, BitChipEvents>({\n props: {\n 'aria-label': typed<BitChipComponentProps['aria-label']>(undefined),\n checked: typed<BitChipComponentProps['checked']>(undefined, {\n parse: (value) => (value == null ? undefined : value !== 'false'),\n }),\n color: typed<BitChipComponentProps['color']>(undefined),\n 'default-checked': typed<boolean>(false),\n disabled: typed<boolean>(false),\n mode: typed<BitChipMode>('static'),\n rounded: typed<BitChipComponentProps['rounded']>(undefined),\n size: typed<BitChipComponentProps['size']>(undefined),\n value: typed<BitChipComponentProps['value']>(undefined),\n variant: typed<BitChipComponentProps['variant']>(undefined),\n },\n setup({ emit, host, props }) {\n const checkedProp = props.checked;\n const ariaLabelProp = props['aria-label'];\n // ============================================\n // State Management\n // ============================================\n // Once a checked prop is provided, treat the chip as controlled for the rest of its lifecycle.\n const isControlled = signal(checkedProp.value !== undefined);\n // Internal tracking for uncontrolled selectable chips; seeded from default-checked.\n const checkedState = signal(!isControlled.value && props['default-checked'].value);\n\n watch(checkedProp, (value) => {\n if (value !== undefined) {\n isControlled.value = true;\n }\n });\n\n // Effective checked value — reactive to checked prop changes in controlled mode.\n const isChecked = computed(() => {\n if (props.mode.value !== 'selectable') return false;\n\n if (isControlled.value) {\n return checkedProp.value ?? false;\n }\n\n return checkedState.value;\n });\n\n // Sync the [checked] attribute for CSS selectors across controlled and uncontrolled modes.\n watch(\n [isChecked, props.mode],\n () => {\n host.toggleAttribute('checked', props.mode.value === 'selectable' && isChecked.value);\n },\n { immediate: true },\n );\n // ============================================\n // Event Handlers\n // ============================================\n function handleRemove(e: MouseEvent) {\n e.stopPropagation();\n\n if (props.disabled.value) return;\n\n // Button's disabled attribute prevents this from firing when disabled\n emit('remove', { originalEvent: e, value: props.value.value });\n }\n function handleSelectableActivate(e: MouseEvent) {\n e.stopPropagation();\n\n if (props.disabled.value) return;\n\n const nextChecked = !isChecked.value;\n\n if (!isControlled.value) {\n checkedState.value = nextChecked;\n }\n\n emit('change', { checked: nextChecked, originalEvent: e, value: props.value.value });\n }\n function handleActionClick(e: MouseEvent) {\n e.stopPropagation();\n\n if (props.disabled.value) return;\n\n emit('click', { originalEvent: e, value: props.value.value });\n }\n\n // ============================================\n // Template Helpers\n // ============================================\n const renderChipContent = () => html`\n <slot name=\"icon\"></slot>\n <span class=\"label\"><slot></slot></span>\n `;\n const renderRemoveButton = () => html`\n <button\n class=\"remove-btn\"\n part=\"remove-btn\"\n type=\"button\"\n :aria-label=\"${() => {\n const label = ariaLabelProp.value || props.value.value;\n\n return label ? `Remove ${label}` : 'Remove';\n }}\"\n ?hidden=\"${() => props.mode.value !== 'removable'}\"\n :disabled=\"${() => props.disabled.value}\"\n @click=\"${handleRemove}\">\n ${CHIP_CLOSE_ICON}\n </button>\n `;\n const renderSelectableChip = () => html`\n <button\n class=\"chip-btn\"\n part=\"chip-btn\"\n type=\"button\"\n role=\"checkbox\"\n :aria-checked=\"${() => String(isChecked.value)}\"\n :aria-label=\"${() => ariaLabelProp.value}\"\n :disabled=\"${() => props.disabled.value}\"\n @click=\"${handleSelectableActivate}\">\n <span class=\"chip\" part=\"chip\"> ${renderChipContent()} </span>\n </button>\n `;\n const renderActionChip = () => html`\n <button\n class=\"chip-btn\"\n part=\"chip-btn\"\n type=\"button\"\n :aria-label=\"${() => ariaLabelProp.value}\"\n :disabled=\"${() => props.disabled.value}\"\n @click=\"${handleActionClick}\">\n <span class=\"chip\" part=\"chip\"> ${renderChipContent()} </span>\n </button>\n `;\n const renderStaticChip = () => html` <span class=\"chip\" part=\"chip\"> ${renderChipContent()} </span> `;\n const renderRemovableChip = () => html`\n <span class=\"chip\" part=\"chip\"> ${renderChipContent()} ${renderRemoveButton()} </span>\n `;\n\n // ============================================\n // Render\n // ============================================\n return html`\n ${() => {\n const mode = props.mode.value;\n\n if (mode === 'selectable') return renderSelectableChip();\n\n if (mode === 'action') return renderActionChip();\n\n if (mode === 'removable') return renderRemovableChip();\n\n return renderStaticChip();\n }}\n `;\n },\n styles: [\n colorThemeMixin,\n disabledStateMixin(),\n roundedVariantMixin,\n sizeVariantMixin({\n lg: {\n '--_font-size': 'var(--text-sm)',\n '--_gap': 'var(--size-1-5)',\n '--_padding-x': 'var(--size-3)',\n '--_padding-y': 'var(--size-1)',\n },\n sm: {\n '--_font-size': 'var(--text-xs)',\n '--_gap': 'var(--size-0-5)',\n '--_padding-x': 'var(--size-2-5)',\n '--_padding-y': 'var(--size-px)',\n },\n }),\n forcedColorsMixin,\n componentStyles,\n ],\n tag: 'bit-chip',\n});\n"],"mappings":"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"}
@@ -0,0 +1,93 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/shape.css.cjs`),t=require(`./styles/mixins/states.css.cjs`),n=require(`./styles/mixins/theme.css.cjs`),r=require(`./styles/index.cjs`),i=require(`./icons.cjs`);require(`./chip.cjs`);const ee=require(`./craftit/dist/labs/list.cjs`),a=require(`./craftit/dist/labs/overlay.cjs`),o=require(`./craftit/dist/labs/selection.cjs`);require(`./craftit/dist/labs.cjs`);const s=require(`./inputs/shared/dom-sync/dropdown.cjs`),te=require(`./inputs/shared/utils/assistive-text.cjs`),ne=require(`./inputs/shared/utils/choice-change.cjs`),re=require(`./inputs/shared/utils/controlled-csv.cjs`),ie=require(`./inputs/shared/form-context.cjs`),c=require(`./inputs/shared/dom-sync/label-sync.cjs`);require(`./inputs/shared/dom-sync/index.cjs`);const ae=require(`./inputs/shared/validation/index.cjs`),l=require(`./inputs/shared/design-presets.cjs`),u=require(`./inputs/combobox/combobox-options.cjs`),oe=require(`./inputs/combobox/combobox-virtualizer.cjs`),d=require(`./inputs/combobox/combobox.css?inline.cjs`);let f=require(`@vielzeug/craftit`);var p=(0,f.defineComponent)({setup(){return f.html`<style>
2
+ ${f.css`
3
+ @layer buildit.base {
4
+ :host {
5
+ display: none;
6
+ }
7
+ }
8
+ `}
9
+ </style>`},tag:`bit-combobox-option`}),m=(0,f.defineComponent)({formAssociated:!0,props:{clearable:{default:!1},color:{default:void 0},creatable:{default:!1},disabled:{default:!1},error:{default:``,omit:!0},fullwidth:{default:!1},helper:{default:``},label:{default:``},"label-placement":{default:`inset`},loading:{default:!1},multiple:{default:!1},name:{default:``},"no-filter":{default:!1},options:(0,f.typed)(void 0,{reflect:!1}),placeholder:{default:``},rounded:{default:void 0},size:{default:void 0},value:{default:``},variant:{default:void 0}},setup({emit:e,host:t,props:n}){let{fieldId:r,helperId:l,labelId:d}=(0,f.createFormIds)(`combobox`,n.name.value),p=(0,f.ref)(),m=(0,f.ref)(),h=(0,f.inject)(ie.FORM_CTX,void 0),g=(0,f.signal)(String(n.value.value??``)),{triggerValidation:_}=ae.createFieldValidation(h,(0,f.defineField)({disabled:(0,f.computed)(()=>!!n.disabled.value||!!h?.disabled.value),value:g},{onReset:()=>{g.value=``,C.value=[],y.value=``}})),v=(0,f.signal)(!1),y=(0,f.signal)(``),b=(0,f.computed)(()=>!!n.disabled.value),x=(0,f.computed)(()=>!!n.multiple.value),se=(0,f.computed)(()=>!!n.creatable.value),S=(0,f.computed)(()=>!!n[`no-filter`].value);(0,f.watch)(v,e=>{t.toggleAttribute(`open`,(e=>!!e)(e))},{immediate:!0});let C=(0,f.signal)(n.value.value?[{label:``,value:n.value.value}]:[]),w=(0,f.signal)(-1),T=o.e({findByKey:e=>{let t=C.value.find(t=>t.value===e);if(t)return t;let n=F.value.find(t=>t.value===e);return n?{label:n.label,value:n.value}:{label:``,value:e}},getMode:()=>x.value?`multiple`:`single`,getSelected:()=>C.value,keyExtractor:e=>e.value,setSelected:e=>{C.value=e}}),E=e=>{let t=re.computeControlledCsvState(String(e??``));if(t.isEmpty){T.clear(),y.value=``,g.value=``;return}if(x.value){C.value=t.values.map(e=>({label:``,value:e})),g.value=t.formValue;return}C.value=[{label:``,value:t.firstValue}],g.value=t.firstValue};(0,f.watch)(n.value,e=>E(e),{immediate:!0}),(0,f.watch)(n.multiple,()=>E(n.value.value));let D=(0,f.computed)(()=>C.value[0]?.value??``),ce=(0,f.computed)(()=>C.value.length>0),le=(0,f.computed)(()=>!!n.label.value),O=null,k=null,A=null,j=null;function ue(){let e=t.shadowRoot?.querySelector(`input[role="combobox"]`)??null;return e&&(O=e),e??O}function M(){ue()?.focus()}let N=(0,f.signal)([]),P=(0,f.signal)([]),de=(0,f.computed)(()=>!!n.loading.value),F=(0,f.computed)(()=>{let e=n.options.value??N.value;return P.value.length===0?e:[...e,...P.value]});function I(e=Array.from(t.children)){N.value=u.parseSlottedOptions(e),C.value.length>0&&(C.value=u.backfillSelectionLabels(C.value,F.value),!x.value&&C.value.length===1&&(y.value=C.value[0]?.label??``))}let L=(0,f.computed)(()=>u.filterOptions(F.value,y.value,S.value)),R=(0,f.computed)(()=>u.getCreatableLabel(y.value,se.value,L.value)),z=(0,f.computed)(()=>te.resolveMergedAssistiveText(n.error.value,n.helper.value)),B=(0,f.computed)(()=>x.value&&C.value.length>0?``:n.placeholder.value||``),V=(0,f.computed)(()=>C.value.map(e=>e.value)),fe=(0,f.computed)(()=>C.value.map(e=>e.label?e.label:F.value.find(t=>t.value===e.value)?.label??e.value));function H(){g.value=T.serialize(`,`)}function U(t){e(`change`,ne.createChoiceChangeDetail(V.value,fe.value,t))}function pe(e){e.stopPropagation();let t=e.detail?.value;t!==void 0&&(T.remove(t),H(),U(e),_(`change`))}let W=s.createDropdownPositioner(()=>k,()=>A),G=ee.e({getIndex:()=>w.value,getItems:()=>L.value,isItemDisabled:e=>e.disabled,setIndex:e=>{w.value=e,ve()}}),K=a.t({getBoundaryElement:()=>t,getPanelElement:()=>A,getTriggerElement:()=>O,isDisabled:()=>b.value,isOpen:()=>v.value,positioner:{floating:()=>A,reference:()=>k,update:()=>W.updatePosition()},restoreFocus:!1,setOpen:(e,t)=>{v.value=e,e||G.reset()}}),q=e=>{(e.reason===`empty`||e.reason===`no-enabled-item`)&&(w.value=-1)};function J(e=!0,t=`programmatic`){e&&(y.value=``),K.open({reason:t})}function Y(e=`programmatic`){K.close({reason:e,restoreFocus:!1}),x.value?y.value=``:y.value=F.value.find(e=>e.value===D.value)?.label??``,_(`blur`)}function X(e,t){e.disabled||(x.value?(T.toggle(e.value),H(),y.value=``,U(t),_(`change`),M(),requestAnimationFrame(()=>M())):(T.select(e.value),y.value=e.label,g.value=e.value,U(t),_(`change`),Y(),M()))}function me(e){e.stopPropagation(),T.clear(),y.value=``,g.value=``,U(e),_(`change`),M()}function he(t){let n=t.target;y.value=n.value,x.value||T.clear(),q(G.first()),v.value||J(!1,`trigger`),e(`search`,{query:n.value})}function ge(){v.value||J(!1,`trigger`)}function _e(e){if(b.value)return;let t=L.value;switch(e.key){case`ArrowDown`:e.preventDefault(),v.value?q(G.next()):(J(!0,`trigger`),q(G.first()));break;case`ArrowUp`:e.preventDefault(),v.value?q(G.prev()):J(!0,`trigger`);break;case`Backspace`:x.value&&!y.value&&C.value.length>0&&(C.value=C.value.slice(0,-1),H(),U(e),_(`change`));break;case`End`:v.value&&(e.preventDefault(),q(G.last()));break;case`Enter`:e.preventDefault(),v.value&&w.value>=0&&w.value<t.length?X(t[w.value],e):v.value&&w.value===-1&&R.value?$(R.value,e):v.value||J();break;case`Escape`:e.preventDefault(),v.value&&Y(`escape`);break;case`Home`:v.value&&(e.preventDefault(),q(G.first()));break;case`Tab`:Y(`programmatic`);break;default:break}}function ve(){if(w.value>=0){Z.scrollToIndex(w.value,{align:`auto`});return}j&&j.querySelector(`[data-focused]`)?.scrollIntoView({block:`nearest`})}let{domVirtualList:Z,setupVirtualizer:ye,updateRenderedItemState:Q}=oe.createComboboxVirtualizer({checkIconHTML:i.checkIconHTML,comboId:r,getDropdownElement:()=>A,getFocusedIndex:()=>w.peek(),getIsMultiple:()=>x.peek(),getListboxElement:()=>j,getSelectedValue:()=>D.peek(),getSelectedValues:()=>C.peek(),onSelectOption:X,setFocusedIndex:e=>{w.value=e}});function $(e,t){let n={disabled:!1,iconEl:null,label:e,value:u.makeCreatableValue(e)};P.value=[...P.value,n],X(n,t)}return(0,f.onMount)(()=>{k=O?.closest(`.field`),A=t.shadowRoot?.querySelector(`.dropdown`)??null,j=t.shadowRoot?.querySelector(`[role="listbox"]`)??null;let e=K.bindOutsideClick(document);return(0,f.onSlotChange)(`default`,I),I(),(0,f.effect)(()=>{let e=L.value,t=v.value;t&&e.length>0?requestAnimationFrame(()=>ye(e,t)):Z.update(e,!1)}),c.mountLabelSyncStandalone(m,p,n),(0,f.effect)(()=>{if(j){for(let e of Array.from(j.querySelectorAll(`.no-results,.no-results-create,.dropdown-loading`)))e.remove();if(de.value){let e=document.createElement(`div`);e.className=`dropdown-loading`,e.textContent=`Loading…`,j.prepend(e)}else if(L.value.length===0)if(R.value){let e=document.createElement(`button`);e.type=`button`,e.className=`no-results-create`,e.textContent=`Create "${R.value}"`,w.value===-1&&e.setAttribute(`data-focused`,``),e.addEventListener(`pointerdown`,e=>{e.preventDefault()}),e.addEventListener(`click`,e=>{e.stopPropagation(),$(R.value,e)}),j.appendChild(e)}else{let e=document.createElement(`div`);e.className=`no-results`,e.setAttribute(`role`,`presentation`),e.textContent=`No results found`,j.appendChild(e)}Q()}}),(0,f.watch)([v,n.multiple,w,C,D],()=>{v.value&&Q()},{immediate:!0}),()=>{Z.destroy(),W.destroy(),e()}}),f.html`
10
+ <slot></slot>
11
+ <div class="combobox-wrapper" part="wrapper">
12
+ <label
13
+ class="label-outside"
14
+ for="${r}"
15
+ id="${d}"
16
+ ref=${p}
17
+ hidden
18
+ part="label"></label>
19
+ <div
20
+ class="field"
21
+ part="field"
22
+ @click="${()=>{v.value||J(!1,`trigger`),M()}}">
23
+ <label class="label-inset" for="${r}" id="${d}" ref=${m} hidden part="label"></label>
24
+ <div class="field-row">
25
+ <div class="chips-row">
26
+ <!-- Keep chip list diffing isolated so input node identity stays stable. -->
27
+ <span class="chips-list">
28
+ ${()=>(x.value?C.value:[]).map(e=>f.html`
29
+ <bit-chip
30
+ value=${e.value}
31
+ aria-label=${e.label||e.value}
32
+ mode="removable"
33
+ variant="flat"
34
+ size="sm"
35
+ color=${()=>n.color.value}
36
+ @remove=${pe}>
37
+ ${e.label||e.value}
38
+ </bit-chip>
39
+ `)}
40
+ </span>
41
+ <input
42
+ ref=${e=>{if(O=e,!e){k=null;return}k=e.closest(`.field`),(0,f.aria)(e,{activedescendant:()=>w.value>=0?`${r}-opt-${w.value}`:null,autocomplete:`list`,controls:()=>`${r}-listbox`,describedby:()=>n.error.value||n.helper.value?l:null,disabled:()=>b.value,expanded:()=>v.value?`true`:`false`,invalid:()=>!!n.error.value,labelledby:()=>le.value?d:null})}}
43
+ class="input"
44
+ part="input"
45
+ type="text"
46
+ role="combobox"
47
+ autocomplete="off"
48
+ spellcheck="false"
49
+ id="${r}"
50
+ name="${()=>n.name.value}"
51
+ placeholder=${()=>B.value}
52
+ :disabled="${()=>b.value}"
53
+ @input=${he}
54
+ @keydown=${_e}
55
+ @focus=${ge}
56
+ .value=${y} />
57
+ </div>
58
+ <button
59
+ class="clear-btn"
60
+ part="clear-btn"
61
+ type="button"
62
+ aria-label="Clear"
63
+ tabindex="-1"
64
+ ?hidden=${()=>!ce.value}
65
+ @click="${me}">
66
+ ${i.clearIcon}
67
+ </button>
68
+ <span class="chevron" aria-hidden="true">
69
+ ${i.chevronDownIcon}
70
+ <span class="loader" aria-label="Loading"></span>
71
+ </span>
72
+ </div>
73
+ </div>
74
+
75
+ <div class="dropdown" part="dropdown" id="${()=>`${r}-dropdown`}" ?data-open=${()=>v.value}>
76
+ <div
77
+ role="listbox"
78
+ id="${()=>`${r}-listbox`}"
79
+ aria-label="${()=>n.label.value||n.placeholder.value||`Options`}"></div>
80
+ </div>
81
+
82
+ <span
83
+ class="helper-text"
84
+ id="${l}"
85
+ part="helper-text"
86
+ aria-live="polite"
87
+ ?hidden=${()=>z.value.hidden}
88
+ style=${()=>z.value.isError?`color: var(--color-error);`:``}
89
+ >${()=>z.value.text}</span
90
+ >
91
+ </div>
92
+ `},shadow:{delegatesFocus:!0},styles:[e.sizeVariantMixin(l.FIELD_SIZE_PRESET),...r.formFieldMixins,t.disabledLoadingMixin(),n.forcedColorsFocusMixin(`.input`),d.default],tag:`bit-combobox`});exports.COMBOBOX_OPTION_TAG=p,exports.COMBOBOX_TAG=m;
93
+ //# sourceMappingURL=combobox.cjs.map