@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,6 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./inputs/button-group/button-group.css?inline.cjs`);let t=require(`@vielzeug/craftit`);var n=(0,t.createContext)(`ButtonGroupContext`),r=(0,t.defineComponent)({props:{attached:{default:!1},color:{default:void 0},fullwidth:{default:!1},label:{default:void 0},orientation:{default:void 0},size:{default:void 0},variant:{default:void 0}},setup({props:e}){return(0,t.provide)(n,{color:e.color,size:e.size,variant:e.variant}),t.html`
2
+ <div class="button-group" part="group" role="group" :aria-label="${()=>e.label.value??null}">
3
+ <slot></slot>
4
+ </div>
5
+ `},styles:[e.default],tag:`bit-button-group`});exports.BUTTON_GROUP_CTX=n,exports.BUTTON_GROUP_TAG=r;
6
+ //# sourceMappingURL=button-group.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-group.cjs","names":[],"sources":["../src/inputs/button-group/button-group.ts"],"sourcesContent":["import { createContext, defineComponent, html, provide, type ReadonlySignal } from '@vielzeug/craftit';\n\nimport type { ComponentSize, ThemeColor, VisualVariant } from '../../types';\n\n/** Context provided by bit-button-group to its bit-button children. */\nexport type ButtonGroupContext = {\n color: ReadonlySignal<ThemeColor | undefined>;\n size: ReadonlySignal<ComponentSize | undefined>;\n variant: ReadonlySignal<Exclude<VisualVariant, 'glass'> | undefined>;\n};\n/** Injection key for the button-group context. */\nexport const BUTTON_GROUP_CTX = createContext<ButtonGroupContext>('ButtonGroupContext');\n\nimport styles from './button-group.css?inline';\n\n/** Button group component properties */\nexport type BitButtonGroupProps = {\n /** Attach buttons together (no gap, rounded only on edges) */\n attached?: boolean;\n /** Button color for all children (propagated) */\n color?: ThemeColor;\n /** Make all buttons full width */\n fullwidth?: boolean;\n /** Accessible group label */\n label?: string;\n /** Group orientation */\n orientation?: 'horizontal' | 'vertical';\n /** Button size for all children (propagated) */\n size?: ComponentSize;\n /** Button variant for all children (propagated) */\n variant?: Exclude<VisualVariant, 'glass'>;\n};\n\n// -------------------- Component Definition --------------------\n/**\n * A container for grouping buttons with coordinated styling and layout.\n *\n * @element bit-button-group\n *\n * @attr {string} size - Button size: 'sm' | 'md' | 'lg'\n * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'frost'\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} orientation - Group orientation: 'horizontal' | 'vertical'\n * @attr {boolean} attached - Attach buttons together (no gap, rounded only on edges)\n * @attr {boolean} fullwidth - Make all buttons full width\n * @attr {string} label - Accessible group label\n *\n * @slot - Button elements (bit-button)\n *\n * @cssprop --group-gap - Gap between buttons\n * @cssprop --group-radius - Border radius for edge buttons\n *\n * @example\n * ```html\n * <bit-button-group><bit-button>First</bit-button><bit-button>Second</bit-button></bit-button-group>\n * ```\n */\nexport const BUTTON_GROUP_TAG = defineComponent<BitButtonGroupProps>({\n props: {\n attached: { default: false },\n color: { default: undefined },\n fullwidth: { default: false },\n label: { default: undefined },\n orientation: { default: undefined },\n size: { default: undefined },\n variant: { default: undefined },\n },\n setup({ props }) {\n provide(BUTTON_GROUP_CTX, {\n color: props.color,\n size: props.size,\n variant: props.variant,\n });\n\n return html`\n <div class=\"button-group\" part=\"group\" role=\"group\" :aria-label=\"${() => props.label.value ?? null}\">\n <slot></slot>\n </div>\n `;\n },\n styles: [styles],\n tag: 'bit-button-group',\n});\n"],"mappings":"2KAWA,IAAa,GAAA,EAAA,EAAA,eAAqD,qBAAqB,CA8C1E,GAAA,EAAA,EAAA,iBAAwD,CACnE,MAAO,CACL,SAAU,CAAE,QAAS,GAAO,CAC5B,MAAO,CAAE,QAAS,IAAA,GAAW,CAC7B,UAAW,CAAE,QAAS,GAAO,CAC7B,MAAO,CAAE,QAAS,IAAA,GAAW,CAC7B,YAAa,CAAE,QAAS,IAAA,GAAW,CACnC,KAAM,CAAE,QAAS,IAAA,GAAW,CAC5B,QAAS,CAAE,QAAS,IAAA,GAAW,CAChC,CACD,MAAM,CAAE,SAAS,CAOf,OANA,EAAA,EAAA,SAAQ,EAAkB,CACxB,MAAO,EAAM,MACb,KAAM,EAAM,KACZ,QAAS,EAAM,QAChB,CAAC,CAEK,EAAA,IAAI;6EACgE,EAAM,MAAM,OAAS,KAAK;;;OAKvG,OAAQ,CAAC,EAAA,QAAO,CAChB,IAAK,mBACN,CAAC"}
@@ -0,0 +1,31 @@
1
+ import e from "./inputs/button-group/button-group.css?inline.js";
2
+ import { createContext as t, defineComponent as n, html as r, provide as i } from "@vielzeug/craftit";
3
+ //#region src/inputs/button-group/button-group.ts
4
+ var a = t("ButtonGroupContext"), o = n({
5
+ props: {
6
+ attached: { default: !1 },
7
+ color: { default: void 0 },
8
+ fullwidth: { default: !1 },
9
+ label: { default: void 0 },
10
+ orientation: { default: void 0 },
11
+ size: { default: void 0 },
12
+ variant: { default: void 0 }
13
+ },
14
+ setup({ props: e }) {
15
+ return i(a, {
16
+ color: e.color,
17
+ size: e.size,
18
+ variant: e.variant
19
+ }), r`
20
+ <div class="button-group" part="group" role="group" :aria-label="${() => e.label.value ?? null}">
21
+ <slot></slot>
22
+ </div>
23
+ `;
24
+ },
25
+ styles: [e],
26
+ tag: "bit-button-group"
27
+ });
28
+ //#endregion
29
+ export { a as BUTTON_GROUP_CTX, o as BUTTON_GROUP_TAG };
30
+
31
+ //# sourceMappingURL=button-group.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button-group.js","names":[],"sources":["../src/inputs/button-group/button-group.ts"],"sourcesContent":["import { createContext, defineComponent, html, provide, type ReadonlySignal } from '@vielzeug/craftit';\n\nimport type { ComponentSize, ThemeColor, VisualVariant } from '../../types';\n\n/** Context provided by bit-button-group to its bit-button children. */\nexport type ButtonGroupContext = {\n color: ReadonlySignal<ThemeColor | undefined>;\n size: ReadonlySignal<ComponentSize | undefined>;\n variant: ReadonlySignal<Exclude<VisualVariant, 'glass'> | undefined>;\n};\n/** Injection key for the button-group context. */\nexport const BUTTON_GROUP_CTX = createContext<ButtonGroupContext>('ButtonGroupContext');\n\nimport styles from './button-group.css?inline';\n\n/** Button group component properties */\nexport type BitButtonGroupProps = {\n /** Attach buttons together (no gap, rounded only on edges) */\n attached?: boolean;\n /** Button color for all children (propagated) */\n color?: ThemeColor;\n /** Make all buttons full width */\n fullwidth?: boolean;\n /** Accessible group label */\n label?: string;\n /** Group orientation */\n orientation?: 'horizontal' | 'vertical';\n /** Button size for all children (propagated) */\n size?: ComponentSize;\n /** Button variant for all children (propagated) */\n variant?: Exclude<VisualVariant, 'glass'>;\n};\n\n// -------------------- Component Definition --------------------\n/**\n * A container for grouping buttons with coordinated styling and layout.\n *\n * @element bit-button-group\n *\n * @attr {string} size - Button size: 'sm' | 'md' | 'lg'\n * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'frost'\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} orientation - Group orientation: 'horizontal' | 'vertical'\n * @attr {boolean} attached - Attach buttons together (no gap, rounded only on edges)\n * @attr {boolean} fullwidth - Make all buttons full width\n * @attr {string} label - Accessible group label\n *\n * @slot - Button elements (bit-button)\n *\n * @cssprop --group-gap - Gap between buttons\n * @cssprop --group-radius - Border radius for edge buttons\n *\n * @example\n * ```html\n * <bit-button-group><bit-button>First</bit-button><bit-button>Second</bit-button></bit-button-group>\n * ```\n */\nexport const BUTTON_GROUP_TAG = defineComponent<BitButtonGroupProps>({\n props: {\n attached: { default: false },\n color: { default: undefined },\n fullwidth: { default: false },\n label: { default: undefined },\n orientation: { default: undefined },\n size: { default: undefined },\n variant: { default: undefined },\n },\n setup({ props }) {\n provide(BUTTON_GROUP_CTX, {\n color: props.color,\n size: props.size,\n variant: props.variant,\n });\n\n return html`\n <div class=\"button-group\" part=\"group\" role=\"group\" :aria-label=\"${() => props.label.value ?? null}\">\n <slot></slot>\n </div>\n `;\n },\n styles: [styles],\n tag: 'bit-button-group',\n});\n"],"mappings":";;;AAWA,IAAa,IAAmB,EAAkC,qBAAqB,EA8C1E,IAAmB,EAAqC;CACnE,OAAO;EACL,UAAU,EAAE,SAAS,IAAO;EAC5B,OAAO,EAAE,SAAS,KAAA,GAAW;EAC7B,WAAW,EAAE,SAAS,IAAO;EAC7B,OAAO,EAAE,SAAS,KAAA,GAAW;EAC7B,aAAa,EAAE,SAAS,KAAA,GAAW;EACnC,MAAM,EAAE,SAAS,KAAA,GAAW;EAC5B,SAAS,EAAE,SAAS,KAAA,GAAW;EAChC;CACD,MAAM,EAAE,YAAS;AAOf,SANA,EAAQ,GAAkB;GACxB,OAAO,EAAM;GACb,MAAM,EAAM;GACZ,SAAS,EAAM;GAChB,CAAC,EAEK,CAAI;+EACgE,EAAM,MAAM,SAAS,KAAK;;;;;CAKvG,QAAQ,CAAC,EAAO;CAChB,KAAK;CACN,CAAC"}
@@ -0,0 +1,30 @@
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/mixins/animation.css.cjs`),i=require(`./styles/mixins/variants.css.cjs`),a=require(`./styles/index.cjs`),o=require(`./craftit/dist/directives/when.cjs`);require(`./craftit/dist/directives/index.cjs`);const s=require(`./button-group.cjs`),c=require(`./inputs/button/button.css?inline.cjs`);let l=require(`@vielzeug/craftit`);var u=(0,l.defineComponent)({formAssociated:!0,props:{color:{default:void 0},disabled:{default:!1},fullwidth:{default:!1},href:{default:void 0},iconOnly:{default:!1},label:{default:void 0},loading:{default:!1},rainbow:{default:!1},rel:{default:void 0},rounded:{default:void 0},size:{default:void 0},target:{default:void 0},type:{default:`button`},variant:{default:`solid`}},setup({host:e,props:t}){(0,l.syncContextProps)((0,l.inject)(s.BUTTON_GROUP_CTX,void 0),t,[`color`,`size`,`variant`]);let n=(0,l.computed)(()=>t.disabled.value||t.loading.value||!1),r=(0,l.computed)(()=>!!t.href.value),i=(0,l.defineField)({disabled:n,toFormValue:()=>null,value:(0,l.computed)(()=>``)}),a=t=>{if(n.value){t.preventDefault(),t.stopPropagation();return}t.stopPropagation(),l.fire.mouse(e,t.type,t)},c=r=>{if(n.value)return;r.stopPropagation();let a=i.internals.form;a&&(t.type.value===`submit`?a.requestSubmit():t.type.value===`reset`&&a.reset()),l.fire.mouse(e,r.type,r)};return l.html`
2
+ ${o.t(r,()=>l.html`<a
3
+ part="button"
4
+ :href="${()=>t.href.value??null}"
5
+ :target="${()=>t.target.value??null}"
6
+ :rel="${()=>t.rel.value??null}"
7
+ :aria-label="${()=>t.label.value??null}"
8
+ :aria-disabled="${()=>n.value?`true`:null}"
9
+ :aria-busy="${()=>t.loading.value?`true`:null}"
10
+ role="button"
11
+ @click="${a}">
12
+ <span class="loader" part="loader" aria-label="Loading" ?hidden=${()=>!t.loading.value}></span>
13
+ <slot name="prefix"></slot>
14
+ <span class="content" part="content"><slot></slot></span>
15
+ <slot name="suffix"></slot>
16
+ </a>`,()=>l.html`<button
17
+ part="button"
18
+ type="button"
19
+ ?disabled=${n}
20
+ :aria-label="${()=>t.label.value??null}"
21
+ :aria-disabled="${()=>n.value?`true`:null}"
22
+ :aria-busy="${()=>t.loading.value?`true`:null}"
23
+ @click="${c}">
24
+ <span class="loader" part="loader" aria-label="Loading" ?hidden=${()=>!t.loading.value}></span>
25
+ <slot name="prefix"></slot>
26
+ <span class="content" part="content"><slot></slot></span>
27
+ <slot name="suffix"></slot>
28
+ </button>`)}
29
+ `},shadow:{delegatesFocus:!0},styles:[...a.formFieldMixins,n.forcedColorsMixin,e.sizeVariantMixin({lg:{fontSize:`var(--text-base)`,gap:`var(--size-2-5)`,height:`var(--size-12)`,iconSize:`var(--size-6)`,lineHeight:`var(--leading-relaxed)`,padding:`var(--size-2-5) var(--size-5)`},sm:{fontSize:`var(--text-sm)`,gap:`var(--size-1-5)`,height:`var(--size-8)`,iconSize:`var(--size-4)`,lineHeight:`var(--leading-tight)`,padding:`var(--size-1-5) var(--size-3)`}}),i.frostVariantMixin(`button`),r.rainbowEffectMixin(`button`),t.disabledLoadingMixin(`button`),c.default],tag:`bit-button`});exports.BUTTON_TAG=u;
30
+ //# sourceMappingURL=button.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.cjs","names":[],"sources":["../src/inputs/button/button.ts"],"sourcesContent":["import { computed, defineComponent, defineField, fire, html, inject, syncContextProps } from '@vielzeug/craftit';\nimport { when } from '@vielzeug/craftit/directives';\n\nimport type { ButtonType, DisablableProps, RoundedSize, SizableProps, ThemableProps, VisualVariant } from '../../types';\n\nimport {\n disabledLoadingMixin,\n forcedColorsMixin,\n formFieldMixins,\n frostVariantMixin,\n rainbowEffectMixin,\n sizeVariantMixin,\n} from '../../styles';\nimport { BUTTON_GROUP_CTX } from '../button-group/button-group';\nimport componentStyles from './button.css?inline';\n\n/** Button component properties */\nexport type BitButtonProps = ThemableProps &\n SizableProps &\n DisablableProps & {\n /** Full width button (100% of container) */\n fullwidth?: boolean;\n /** When set, renders an `<a>` instead of `<button>` */\n href?: string;\n /** Icon-only mode (square aspect ratio, no padding) */\n iconOnly?: boolean;\n /** Accessible label for the inner button — required for icon-only buttons */\n label?: string;\n /** Show loading state with spinner */\n loading?: boolean;\n /** Enable animated rainbow border effect */\n rainbow?: boolean;\n /** Link rel attribute (requires href) */\n rel?: string;\n /** Border radius size */\n rounded?: RoundedSize;\n /** Link target (requires href) */\n target?: '_blank' | '_self' | '_parent' | '_top';\n /** HTML button type attribute */\n type?: ButtonType;\n /** Visual style variant */\n variant?: Exclude<VisualVariant, 'glass'>;\n };\n\n/**\n * A customizable button component with multiple variants, sizes, and states.\n * Supports icons, loading states, and special effects like frost and rainbow.\n *\n * @element bit-button\n *\n * @attr {string} type - HTML button type: 'button' | 'submit' | 'reset'\n * @attr {boolean} disabled - Disable button interaction\n * @attr {boolean} loading - Show loading state with spinner\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'frost'\n * @attr {string} size - Button size: 'sm' | 'md' | 'lg'\n * @attr {string} rounded - Border radius: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'\n * @attr {boolean} rainbow - Enable animated rainbow border effect\n * @attr {boolean} icon-only - Icon-only mode (square aspect ratio, no padding)\n * @attr {boolean} fullwidth - Full width button (100% of container)\n *\n * @fires click - Emitted when button is clicked (unless disabled/loading)\n *\n * @slot - Button content (text, icons, etc.)\n * @slot prefix - Content before the button text (e.g., icons)\n * @slot suffix - Content after the button text (e.g., icons, badges)\n *\n * @part button - The button element\n * @part loader - The loading spinner element\n * @part content - The button content wrapper\n *\n * @cssprop --button-bg - Background color\n * @cssprop --button-color - Text color\n * @cssprop --button-hover-bg - Hover background\n * @cssprop --button-active-bg - Active/pressed background\n * @cssprop --button-border - Border width\n * @cssprop --button-border-color - Border color\n * @cssprop --button-radius - Border radius\n * @cssprop --button-padding - Inner padding\n * @cssprop --button-gap - Gap between icon and text\n * @cssprop --button-font-size - Font size\n *\n * @example\n * ```html\n * <bit-button variant=\"solid\" color=\"primary\">Click me</bit-button>\n * <bit-button loading color=\"success\">Processing...</bit-button>\n * <bit-button variant=\"frost\" rainbow>Special Button</bit-button>\n * ```\n */\nexport const BUTTON_TAG = defineComponent<BitButtonProps>({\n formAssociated: true,\n props: {\n color: { default: undefined },\n disabled: { default: false },\n fullwidth: { default: false },\n href: { default: undefined },\n iconOnly: { default: false },\n label: { default: undefined },\n loading: { default: false },\n rainbow: { default: false },\n rel: { default: undefined },\n rounded: { default: undefined },\n size: { default: undefined },\n target: { default: undefined },\n type: { default: 'button' },\n variant: { default: 'solid' },\n },\n setup({ host, props }) {\n // Reactively inherit size/variant/color from a parent bit-button-group when present.\n syncContextProps(inject(BUTTON_GROUP_CTX, undefined), props, ['color', 'size', 'variant']);\n\n const isDisabled = computed(() => props.disabled.value || props.loading.value || false);\n const isLink = computed(() => !!props.href.value);\n // Form association: relay submit/reset clicks to the associated form.\n // The inner <button> always has type=\"button\" so shadow DOM never drives native form actions.\n const formField = defineField({\n disabled: isDisabled,\n toFormValue: () => null,\n value: computed(() => ''),\n });\n // Prevent navigation on disabled links; native <button disabled> handles the button case.\n const handleLinkClick = (e: MouseEvent) => {\n if (isDisabled.value) {\n e.preventDefault();\n e.stopPropagation();\n\n return;\n }\n\n // Relay to host as a proper MouseEvent. stopPropagation prevents double-dispatch in\n // browsers where shadow DOM already retargets the event to the host.\n e.stopPropagation();\n fire.mouse(host, e.type, e);\n };\n const handleButtonClick = (e: MouseEvent) => {\n if (isDisabled.value) return;\n\n // Relay to host, handle form submission, and stop inner bubble in one place.\n e.stopPropagation();\n\n const form = formField.internals.form;\n\n if (form) {\n if (props.type.value === 'submit') form.requestSubmit();\n else if (props.type.value === 'reset') form.reset();\n }\n\n fire.mouse(host, e.type, e);\n };\n\n return html`\n ${when(\n isLink,\n () =>\n html`<a\n part=\"button\"\n :href=\"${() => props.href.value ?? null}\"\n :target=\"${() => props.target.value ?? null}\"\n :rel=\"${() => props.rel.value ?? null}\"\n :aria-label=\"${() => props.label.value ?? null}\"\n :aria-disabled=\"${() => (isDisabled.value ? 'true' : null)}\"\n :aria-busy=\"${() => (props.loading.value ? 'true' : null)}\"\n role=\"button\"\n @click=\"${handleLinkClick}\">\n <span class=\"loader\" part=\"loader\" aria-label=\"Loading\" ?hidden=${() => !props.loading.value}></span>\n <slot name=\"prefix\"></slot>\n <span class=\"content\" part=\"content\"><slot></slot></span>\n <slot name=\"suffix\"></slot>\n </a>`,\n () =>\n html`<button\n part=\"button\"\n type=\"button\"\n ?disabled=${isDisabled}\n :aria-label=\"${() => props.label.value ?? null}\"\n :aria-disabled=\"${() => (isDisabled.value ? 'true' : null)}\"\n :aria-busy=\"${() => (props.loading.value ? 'true' : null)}\"\n @click=\"${handleButtonClick}\">\n <span class=\"loader\" part=\"loader\" aria-label=\"Loading\" ?hidden=${() => !props.loading.value}></span>\n <slot name=\"prefix\"></slot>\n <span class=\"content\" part=\"content\"><slot></slot></span>\n <slot name=\"suffix\"></slot>\n </button>`,\n )}\n `;\n },\n shadow: { delegatesFocus: true },\n styles: [\n ...formFieldMixins,\n forcedColorsMixin,\n sizeVariantMixin({\n lg: {\n fontSize: 'var(--text-base)',\n gap: 'var(--size-2-5)',\n height: 'var(--size-12)',\n iconSize: 'var(--size-6)',\n lineHeight: 'var(--leading-relaxed)',\n padding: 'var(--size-2-5) var(--size-5)',\n },\n sm: {\n fontSize: 'var(--text-sm)',\n gap: 'var(--size-1-5)',\n height: 'var(--size-8)',\n iconSize: 'var(--size-4)',\n lineHeight: 'var(--leading-tight)',\n padding: 'var(--size-1-5) var(--size-3)',\n },\n }),\n frostVariantMixin('button'),\n rainbowEffectMixin('button'),\n disabledLoadingMixin('button'),\n componentStyles,\n ],\n tag: 'bit-button',\n});\n"],"mappings":"miBAyFA,IAAa,GAAA,EAAA,EAAA,iBAA6C,CACxD,eAAgB,GAChB,MAAO,CACL,MAAO,CAAE,QAAS,IAAA,GAAW,CAC7B,SAAU,CAAE,QAAS,GAAO,CAC5B,UAAW,CAAE,QAAS,GAAO,CAC7B,KAAM,CAAE,QAAS,IAAA,GAAW,CAC5B,SAAU,CAAE,QAAS,GAAO,CAC5B,MAAO,CAAE,QAAS,IAAA,GAAW,CAC7B,QAAS,CAAE,QAAS,GAAO,CAC3B,QAAS,CAAE,QAAS,GAAO,CAC3B,IAAK,CAAE,QAAS,IAAA,GAAW,CAC3B,QAAS,CAAE,QAAS,IAAA,GAAW,CAC/B,KAAM,CAAE,QAAS,IAAA,GAAW,CAC5B,OAAQ,CAAE,QAAS,IAAA,GAAW,CAC9B,KAAM,CAAE,QAAS,SAAU,CAC3B,QAAS,CAAE,QAAS,QAAS,CAC9B,CACD,MAAM,CAAE,OAAM,SAAS,EAErB,EAAA,EAAA,mBAAA,EAAA,EAAA,QAAwB,EAAA,iBAAkB,IAAA,GAAU,CAAE,EAAO,CAAC,QAAS,OAAQ,UAAU,CAAC,CAE1F,IAAM,GAAA,EAAA,EAAA,cAA4B,EAAM,SAAS,OAAS,EAAM,QAAQ,OAAS,GAAM,CACjF,GAAA,EAAA,EAAA,cAAwB,CAAC,CAAC,EAAM,KAAK,MAAM,CAG3C,GAAA,EAAA,EAAA,aAAwB,CAC5B,SAAU,EACV,gBAAmB,KACnB,OAAA,EAAA,EAAA,cAAsB,GAAG,CAC1B,CAAC,CAEI,EAAmB,GAAkB,CACzC,GAAI,EAAW,MAAO,CACpB,EAAE,gBAAgB,CAClB,EAAE,iBAAiB,CAEnB,OAKF,EAAE,iBAAiB,CACnB,EAAA,KAAK,MAAM,EAAM,EAAE,KAAM,EAAE,EAEvB,EAAqB,GAAkB,CAC3C,GAAI,EAAW,MAAO,OAGtB,EAAE,iBAAiB,CAEnB,IAAM,EAAO,EAAU,UAAU,KAE7B,IACE,EAAM,KAAK,QAAU,SAAU,EAAK,eAAe,CAC9C,EAAM,KAAK,QAAU,SAAS,EAAK,OAAO,EAGrD,EAAA,KAAK,MAAM,EAAM,EAAE,KAAM,EAAE,EAG7B,MAAO,GAAA,IAAI;QACP,EAAA,EACA,MAEE,EAAA,IAAI;;yBAEa,EAAM,KAAK,OAAS,KAAK;2BACvB,EAAM,OAAO,OAAS,KAAK;wBAC9B,EAAM,IAAI,OAAS,KAAK;+BACjB,EAAM,MAAM,OAAS,KAAK;kCACtB,EAAW,MAAQ,OAAS,KAAM;8BACtC,EAAM,QAAQ,MAAQ,OAAS,KAAM;;sBAEhD,EAAgB;kFAC8C,CAAC,EAAM,QAAQ,MAAM;;;;oBAM/F,EAAA,IAAI;;;wBAGU,EAAW;+BACF,EAAM,MAAM,OAAS,KAAK;kCACtB,EAAW,MAAQ,OAAS,KAAM;8BACtC,EAAM,QAAQ,MAAQ,OAAS,KAAM;sBAChD,EAAkB;kFAC4C,CAAC,EAAM,QAAQ,MAAM;;;;qBAKlG,CAAC;OAGN,OAAQ,CAAE,eAAgB,GAAM,CAChC,OAAQ,CACN,GAAG,EAAA,gBACH,EAAA,kBACA,EAAA,iBAAiB,CACf,GAAI,CACF,SAAU,mBACV,IAAK,kBACL,OAAQ,iBACR,SAAU,gBACV,WAAY,yBACZ,QAAS,gCACV,CACD,GAAI,CACF,SAAU,iBACV,IAAK,kBACL,OAAQ,gBACR,SAAU,gBACV,WAAY,uBACZ,QAAS,gCACV,CACF,CAAC,CACF,EAAA,kBAAkB,SAAS,CAC3B,EAAA,mBAAmB,SAAS,CAC5B,EAAA,qBAAqB,SAAS,CAC9B,EAAA,QACD,CACD,IAAK,aACN,CAAC"}
package/dist/button.js ADDED
@@ -0,0 +1,115 @@
1
+ import { sizeVariantMixin as e } from "./styles/mixins/shape.css.js";
2
+ import { disabledLoadingMixin as t } from "./styles/mixins/states.css.js";
3
+ import { forcedColorsMixin as n } from "./styles/mixins/theme.css.js";
4
+ import { rainbowEffectMixin as r } from "./styles/mixins/animation.css.js";
5
+ import { frostVariantMixin as i } from "./styles/mixins/variants.css.js";
6
+ import { formFieldMixins as a } from "./styles/index.js";
7
+ import { t as o } from "./craftit/dist/directives/when.js";
8
+ import "./craftit/dist/directives/index.js";
9
+ import { BUTTON_GROUP_CTX as s } from "./button-group.js";
10
+ import c from "./inputs/button/button.css?inline.js";
11
+ import { computed as l, defineComponent as u, defineField as d, fire as f, html as p, inject as m, syncContextProps as h } from "@vielzeug/craftit";
12
+ //#region src/inputs/button/button.ts
13
+ var g = u({
14
+ formAssociated: !0,
15
+ props: {
16
+ color: { default: void 0 },
17
+ disabled: { default: !1 },
18
+ fullwidth: { default: !1 },
19
+ href: { default: void 0 },
20
+ iconOnly: { default: !1 },
21
+ label: { default: void 0 },
22
+ loading: { default: !1 },
23
+ rainbow: { default: !1 },
24
+ rel: { default: void 0 },
25
+ rounded: { default: void 0 },
26
+ size: { default: void 0 },
27
+ target: { default: void 0 },
28
+ type: { default: "button" },
29
+ variant: { default: "solid" }
30
+ },
31
+ setup({ host: e, props: t }) {
32
+ h(m(s, void 0), t, [
33
+ "color",
34
+ "size",
35
+ "variant"
36
+ ]);
37
+ let n = l(() => t.disabled.value || t.loading.value || !1), r = l(() => !!t.href.value), i = d({
38
+ disabled: n,
39
+ toFormValue: () => null,
40
+ value: l(() => "")
41
+ }), a = (t) => {
42
+ if (n.value) {
43
+ t.preventDefault(), t.stopPropagation();
44
+ return;
45
+ }
46
+ t.stopPropagation(), f.mouse(e, t.type, t);
47
+ }, c = (r) => {
48
+ if (n.value) return;
49
+ r.stopPropagation();
50
+ let a = i.internals.form;
51
+ a && (t.type.value === "submit" ? a.requestSubmit() : t.type.value === "reset" && a.reset()), f.mouse(e, r.type, r);
52
+ };
53
+ return p`
54
+ ${o(r, () => p`<a
55
+ part="button"
56
+ :href="${() => t.href.value ?? null}"
57
+ :target="${() => t.target.value ?? null}"
58
+ :rel="${() => t.rel.value ?? null}"
59
+ :aria-label="${() => t.label.value ?? null}"
60
+ :aria-disabled="${() => n.value ? "true" : null}"
61
+ :aria-busy="${() => t.loading.value ? "true" : null}"
62
+ role="button"
63
+ @click="${a}">
64
+ <span class="loader" part="loader" aria-label="Loading" ?hidden=${() => !t.loading.value}></span>
65
+ <slot name="prefix"></slot>
66
+ <span class="content" part="content"><slot></slot></span>
67
+ <slot name="suffix"></slot>
68
+ </a>`, () => p`<button
69
+ part="button"
70
+ type="button"
71
+ ?disabled=${n}
72
+ :aria-label="${() => t.label.value ?? null}"
73
+ :aria-disabled="${() => n.value ? "true" : null}"
74
+ :aria-busy="${() => t.loading.value ? "true" : null}"
75
+ @click="${c}">
76
+ <span class="loader" part="loader" aria-label="Loading" ?hidden=${() => !t.loading.value}></span>
77
+ <slot name="prefix"></slot>
78
+ <span class="content" part="content"><slot></slot></span>
79
+ <slot name="suffix"></slot>
80
+ </button>`)}
81
+ `;
82
+ },
83
+ shadow: { delegatesFocus: !0 },
84
+ styles: [
85
+ ...a,
86
+ n,
87
+ e({
88
+ lg: {
89
+ fontSize: "var(--text-base)",
90
+ gap: "var(--size-2-5)",
91
+ height: "var(--size-12)",
92
+ iconSize: "var(--size-6)",
93
+ lineHeight: "var(--leading-relaxed)",
94
+ padding: "var(--size-2-5) var(--size-5)"
95
+ },
96
+ sm: {
97
+ fontSize: "var(--text-sm)",
98
+ gap: "var(--size-1-5)",
99
+ height: "var(--size-8)",
100
+ iconSize: "var(--size-4)",
101
+ lineHeight: "var(--leading-tight)",
102
+ padding: "var(--size-1-5) var(--size-3)"
103
+ }
104
+ }),
105
+ i("button"),
106
+ r("button"),
107
+ t("button"),
108
+ c
109
+ ],
110
+ tag: "bit-button"
111
+ });
112
+ //#endregion
113
+ export { g as BUTTON_TAG };
114
+
115
+ //# sourceMappingURL=button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"button.js","names":[],"sources":["../src/inputs/button/button.ts"],"sourcesContent":["import { computed, defineComponent, defineField, fire, html, inject, syncContextProps } from '@vielzeug/craftit';\nimport { when } from '@vielzeug/craftit/directives';\n\nimport type { ButtonType, DisablableProps, RoundedSize, SizableProps, ThemableProps, VisualVariant } from '../../types';\n\nimport {\n disabledLoadingMixin,\n forcedColorsMixin,\n formFieldMixins,\n frostVariantMixin,\n rainbowEffectMixin,\n sizeVariantMixin,\n} from '../../styles';\nimport { BUTTON_GROUP_CTX } from '../button-group/button-group';\nimport componentStyles from './button.css?inline';\n\n/** Button component properties */\nexport type BitButtonProps = ThemableProps &\n SizableProps &\n DisablableProps & {\n /** Full width button (100% of container) */\n fullwidth?: boolean;\n /** When set, renders an `<a>` instead of `<button>` */\n href?: string;\n /** Icon-only mode (square aspect ratio, no padding) */\n iconOnly?: boolean;\n /** Accessible label for the inner button — required for icon-only buttons */\n label?: string;\n /** Show loading state with spinner */\n loading?: boolean;\n /** Enable animated rainbow border effect */\n rainbow?: boolean;\n /** Link rel attribute (requires href) */\n rel?: string;\n /** Border radius size */\n rounded?: RoundedSize;\n /** Link target (requires href) */\n target?: '_blank' | '_self' | '_parent' | '_top';\n /** HTML button type attribute */\n type?: ButtonType;\n /** Visual style variant */\n variant?: Exclude<VisualVariant, 'glass'>;\n };\n\n/**\n * A customizable button component with multiple variants, sizes, and states.\n * Supports icons, loading states, and special effects like frost and rainbow.\n *\n * @element bit-button\n *\n * @attr {string} type - HTML button type: 'button' | 'submit' | 'reset'\n * @attr {boolean} disabled - Disable button interaction\n * @attr {boolean} loading - Show loading state with spinner\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'frost'\n * @attr {string} size - Button size: 'sm' | 'md' | 'lg'\n * @attr {string} rounded - Border radius: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl' | '3xl' | 'full'\n * @attr {boolean} rainbow - Enable animated rainbow border effect\n * @attr {boolean} icon-only - Icon-only mode (square aspect ratio, no padding)\n * @attr {boolean} fullwidth - Full width button (100% of container)\n *\n * @fires click - Emitted when button is clicked (unless disabled/loading)\n *\n * @slot - Button content (text, icons, etc.)\n * @slot prefix - Content before the button text (e.g., icons)\n * @slot suffix - Content after the button text (e.g., icons, badges)\n *\n * @part button - The button element\n * @part loader - The loading spinner element\n * @part content - The button content wrapper\n *\n * @cssprop --button-bg - Background color\n * @cssprop --button-color - Text color\n * @cssprop --button-hover-bg - Hover background\n * @cssprop --button-active-bg - Active/pressed background\n * @cssprop --button-border - Border width\n * @cssprop --button-border-color - Border color\n * @cssprop --button-radius - Border radius\n * @cssprop --button-padding - Inner padding\n * @cssprop --button-gap - Gap between icon and text\n * @cssprop --button-font-size - Font size\n *\n * @example\n * ```html\n * <bit-button variant=\"solid\" color=\"primary\">Click me</bit-button>\n * <bit-button loading color=\"success\">Processing...</bit-button>\n * <bit-button variant=\"frost\" rainbow>Special Button</bit-button>\n * ```\n */\nexport const BUTTON_TAG = defineComponent<BitButtonProps>({\n formAssociated: true,\n props: {\n color: { default: undefined },\n disabled: { default: false },\n fullwidth: { default: false },\n href: { default: undefined },\n iconOnly: { default: false },\n label: { default: undefined },\n loading: { default: false },\n rainbow: { default: false },\n rel: { default: undefined },\n rounded: { default: undefined },\n size: { default: undefined },\n target: { default: undefined },\n type: { default: 'button' },\n variant: { default: 'solid' },\n },\n setup({ host, props }) {\n // Reactively inherit size/variant/color from a parent bit-button-group when present.\n syncContextProps(inject(BUTTON_GROUP_CTX, undefined), props, ['color', 'size', 'variant']);\n\n const isDisabled = computed(() => props.disabled.value || props.loading.value || false);\n const isLink = computed(() => !!props.href.value);\n // Form association: relay submit/reset clicks to the associated form.\n // The inner <button> always has type=\"button\" so shadow DOM never drives native form actions.\n const formField = defineField({\n disabled: isDisabled,\n toFormValue: () => null,\n value: computed(() => ''),\n });\n // Prevent navigation on disabled links; native <button disabled> handles the button case.\n const handleLinkClick = (e: MouseEvent) => {\n if (isDisabled.value) {\n e.preventDefault();\n e.stopPropagation();\n\n return;\n }\n\n // Relay to host as a proper MouseEvent. stopPropagation prevents double-dispatch in\n // browsers where shadow DOM already retargets the event to the host.\n e.stopPropagation();\n fire.mouse(host, e.type, e);\n };\n const handleButtonClick = (e: MouseEvent) => {\n if (isDisabled.value) return;\n\n // Relay to host, handle form submission, and stop inner bubble in one place.\n e.stopPropagation();\n\n const form = formField.internals.form;\n\n if (form) {\n if (props.type.value === 'submit') form.requestSubmit();\n else if (props.type.value === 'reset') form.reset();\n }\n\n fire.mouse(host, e.type, e);\n };\n\n return html`\n ${when(\n isLink,\n () =>\n html`<a\n part=\"button\"\n :href=\"${() => props.href.value ?? null}\"\n :target=\"${() => props.target.value ?? null}\"\n :rel=\"${() => props.rel.value ?? null}\"\n :aria-label=\"${() => props.label.value ?? null}\"\n :aria-disabled=\"${() => (isDisabled.value ? 'true' : null)}\"\n :aria-busy=\"${() => (props.loading.value ? 'true' : null)}\"\n role=\"button\"\n @click=\"${handleLinkClick}\">\n <span class=\"loader\" part=\"loader\" aria-label=\"Loading\" ?hidden=${() => !props.loading.value}></span>\n <slot name=\"prefix\"></slot>\n <span class=\"content\" part=\"content\"><slot></slot></span>\n <slot name=\"suffix\"></slot>\n </a>`,\n () =>\n html`<button\n part=\"button\"\n type=\"button\"\n ?disabled=${isDisabled}\n :aria-label=\"${() => props.label.value ?? null}\"\n :aria-disabled=\"${() => (isDisabled.value ? 'true' : null)}\"\n :aria-busy=\"${() => (props.loading.value ? 'true' : null)}\"\n @click=\"${handleButtonClick}\">\n <span class=\"loader\" part=\"loader\" aria-label=\"Loading\" ?hidden=${() => !props.loading.value}></span>\n <slot name=\"prefix\"></slot>\n <span class=\"content\" part=\"content\"><slot></slot></span>\n <slot name=\"suffix\"></slot>\n </button>`,\n )}\n `;\n },\n shadow: { delegatesFocus: true },\n styles: [\n ...formFieldMixins,\n forcedColorsMixin,\n sizeVariantMixin({\n lg: {\n fontSize: 'var(--text-base)',\n gap: 'var(--size-2-5)',\n height: 'var(--size-12)',\n iconSize: 'var(--size-6)',\n lineHeight: 'var(--leading-relaxed)',\n padding: 'var(--size-2-5) var(--size-5)',\n },\n sm: {\n fontSize: 'var(--text-sm)',\n gap: 'var(--size-1-5)',\n height: 'var(--size-8)',\n iconSize: 'var(--size-4)',\n lineHeight: 'var(--leading-tight)',\n padding: 'var(--size-1-5) var(--size-3)',\n },\n }),\n frostVariantMixin('button'),\n rainbowEffectMixin('button'),\n disabledLoadingMixin('button'),\n componentStyles,\n ],\n tag: 'bit-button',\n});\n"],"mappings":";;;;;;;;;;;;AAyFA,IAAa,IAAa,EAAgC;CACxD,gBAAgB;CAChB,OAAO;EACL,OAAO,EAAE,SAAS,KAAA,GAAW;EAC7B,UAAU,EAAE,SAAS,IAAO;EAC5B,WAAW,EAAE,SAAS,IAAO;EAC7B,MAAM,EAAE,SAAS,KAAA,GAAW;EAC5B,UAAU,EAAE,SAAS,IAAO;EAC5B,OAAO,EAAE,SAAS,KAAA,GAAW;EAC7B,SAAS,EAAE,SAAS,IAAO;EAC3B,SAAS,EAAE,SAAS,IAAO;EAC3B,KAAK,EAAE,SAAS,KAAA,GAAW;EAC3B,SAAS,EAAE,SAAS,KAAA,GAAW;EAC/B,MAAM,EAAE,SAAS,KAAA,GAAW;EAC5B,QAAQ,EAAE,SAAS,KAAA,GAAW;EAC9B,MAAM,EAAE,SAAS,UAAU;EAC3B,SAAS,EAAE,SAAS,SAAS;EAC9B;CACD,MAAM,EAAE,SAAM,YAAS;AAErB,IAAiB,EAAO,GAAkB,KAAA,EAAU,EAAE,GAAO;GAAC;GAAS;GAAQ;GAAU,CAAC;EAE1F,IAAM,IAAa,QAAe,EAAM,SAAS,SAAS,EAAM,QAAQ,SAAS,GAAM,EACjF,IAAS,QAAe,CAAC,CAAC,EAAM,KAAK,MAAM,EAG3C,IAAY,EAAY;GAC5B,UAAU;GACV,mBAAmB;GACnB,OAAO,QAAe,GAAG;GAC1B,CAAC,EAEI,KAAmB,MAAkB;AACzC,OAAI,EAAW,OAAO;AAEpB,IADA,EAAE,gBAAgB,EAClB,EAAE,iBAAiB;AAEnB;;AAMF,GADA,EAAE,iBAAiB,EACnB,EAAK,MAAM,GAAM,EAAE,MAAM,EAAE;KAEvB,KAAqB,MAAkB;AAC3C,OAAI,EAAW,MAAO;AAGtB,KAAE,iBAAiB;GAEnB,IAAM,IAAO,EAAU,UAAU;AAOjC,GALI,MACE,EAAM,KAAK,UAAU,WAAU,EAAK,eAAe,GAC9C,EAAM,KAAK,UAAU,WAAS,EAAK,OAAO,GAGrD,EAAK,MAAM,GAAM,EAAE,MAAM,EAAE;;AAG7B,SAAO,CAAI;QACP,EACA,SAEE,CAAI;;2BAEa,EAAM,KAAK,SAAS,KAAK;6BACvB,EAAM,OAAO,SAAS,KAAK;0BAC9B,EAAM,IAAI,SAAS,KAAK;iCACjB,EAAM,MAAM,SAAS,KAAK;oCACtB,EAAW,QAAQ,SAAS,KAAM;gCACtC,EAAM,QAAQ,QAAQ,SAAS,KAAM;;sBAEhD,EAAgB;oFAC8C,CAAC,EAAM,QAAQ,MAAM;;;;uBAM/F,CAAI;;;wBAGU,EAAW;iCACF,EAAM,MAAM,SAAS,KAAK;oCACtB,EAAW,QAAQ,SAAS,KAAM;gCACtC,EAAM,QAAQ,QAAQ,SAAS,KAAM;sBAChD,EAAkB;oFAC4C,CAAC,EAAM,QAAQ,MAAM;;;;qBAKlG,CAAC;;;CAGN,QAAQ,EAAE,gBAAgB,IAAM;CAChC,QAAQ;EACN,GAAG;EACH;EACA,EAAiB;GACf,IAAI;IACF,UAAU;IACV,KAAK;IACL,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,SAAS;IACV;GACD,IAAI;IACF,UAAU;IACV,KAAK;IACL,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,SAAS;IACV;GACF,CAAC;EACF,EAAkB,SAAS;EAC3B,EAAmB,SAAS;EAC5B,EAAqB,SAAS;EAC9B;EACD;CACD,KAAK;CACN,CAAC"}
package/dist/card.cjs ADDED
@@ -0,0 +1,23 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/accessibility.css.cjs`),t=require(`./styles/mixins/variants.css.cjs`),n=require(`./styles/index.cjs`),r=require(`./content/card/card.css?inline.cjs`);let i=require(`@vielzeug/craftit`);var a=`button, a[href], input, select, textarea, summary, [role="button"], [role="link"], [contenteditable=""], [contenteditable="true"]`;function o(e){return e?e.assignedNodes({flatten:!0}).some(e=>e.nodeType===Node.ELEMENT_NODE?!0:e.nodeType===Node.TEXT_NODE?!!e.textContent?.trim():!1):!1}function s(e,t){for(let n of t.composedPath())if(n instanceof HTMLElement){if(n===e)return!1;if(n.matches(a)||n.closest(a))return!0}return!1}var c=(0,i.defineComponent)({props:{color:{default:void 0},disabled:{default:!1,type:Boolean},elevation:{default:void 0},interactive:{default:!1,type:Boolean},loading:{default:!1,type:Boolean},orientation:{default:void 0},padding:{default:void 0},variant:{default:void 0}},setup({emit:e,host:t,props:n}){let r=(0,i.ref)(),a=(0,i.ref)(),c=(0,i.ref)(),l=(0,i.ref)(),u=(0,i.ref)(),d=(0,i.signal)(!1),f=(0,i.signal)(!1),p=(0,i.signal)(!1),m=(0,i.signal)(!1),h=(0,i.signal)(!1);function g(){d.value=o(r.value),f.value=o(a.value),p.value=o(c.value),m.value=o(l.value),h.value=o(u.value)}return(0,i.onMount)(()=>{(0,i.onSlotChange)(`media`,g),(0,i.onSlotChange)(`header`,g),(0,i.onSlotChange)(`default`,g),(0,i.onSlotChange)(`footer`,g),(0,i.onSlotChange)(`actions`,g)}),(0,i.watch)([n.interactive,n.disabled,n.loading,n.variant,n.color,n.padding,n.orientation],()=>{n.interactive.value?(t.setAttribute(`role`,`button`),t.setAttribute(`tabindex`,n.disabled.value?`-1`:`0`),t.setAttribute(`aria-disabled`,String(n.disabled.value))):(t.removeAttribute(`role`),t.removeAttribute(`tabindex`),t.removeAttribute(`aria-disabled`)),t.setAttribute(`aria-busy`,n.loading.value?`true`:`false`)},{immediate:!0}),(0,i.handle)(t,`click`,r=>{!n.interactive.value||n.disabled.value||s(t,r)||e(`activate`,{originalEvent:r,trigger:`pointer`})}),(0,i.handle)(t,`keydown`,t=>{!n.interactive.value||n.disabled.value||(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),e(`activate`,{originalEvent:t,trigger:`keyboard`}))}),i.html`
2
+ <div class="card" part="card">
3
+ <div class="loading-bar" part="loading-bar"></div>
4
+ <div class="card-media" part="media" ?hidden="${()=>!d.value}">
5
+ <slot ref=${r} name="media"></slot>
6
+ </div>
7
+ <div class="card-body" part="body">
8
+ <div class="card-header" part="header" ?hidden="${()=>!f.value}">
9
+ <slot ref=${a} name="header"></slot>
10
+ </div>
11
+ <div class="card-content" part="content" ?hidden="${()=>!p.value}">
12
+ <slot ref=${c}></slot>
13
+ </div>
14
+ <div class="card-footer" part="footer" ?hidden="${()=>!m.value}">
15
+ <slot ref=${l} name="footer"></slot>
16
+ </div>
17
+ <div class="card-actions" part="actions" ?hidden="${()=>!h.value}">
18
+ <slot ref=${u} name="actions"></slot>
19
+ </div>
20
+ </div>
21
+ </div>
22
+ `},styles:[...n.surfaceMixins,t.frostVariantMixin(`.card`),e.reducedMotionMixin,r.default],tag:`bit-card`});exports.CARD_TAG=c;
23
+ //# sourceMappingURL=card.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.cjs","names":[],"sources":["../src/content/card/card.ts"],"sourcesContent":["import { defineComponent, handle, html, onMount, onSlotChange, ref, signal, watch } from '@vielzeug/craftit';\n\nimport type { ElevationLevel, PaddingSize, ThemeColor } from '../../types';\n\nimport { frostVariantMixin, reducedMotionMixin, surfaceMixins } from '../../styles';\n\nconst INTERACTIVE_DESCENDANT_SELECTOR =\n 'button, a[href], input, select, textarea, summary, [role=\"button\"], [role=\"link\"], [contenteditable=\"\"], [contenteditable=\"true\"]';\n\nfunction slotHasMeaningfulContent(slot: HTMLSlotElement | null | undefined): boolean {\n if (!slot) return false;\n\n return slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) return true;\n\n if (node.nodeType === Node.TEXT_NODE) return !!node.textContent?.trim();\n\n return false;\n });\n}\n\nfunction isNestedInteractiveTarget(host: HTMLElement, event: Event): boolean {\n for (const node of event.composedPath()) {\n if (!(node instanceof HTMLElement)) continue;\n\n if (node === host) return false;\n\n if (node.matches(INTERACTIVE_DESCENDANT_SELECTOR) || !!node.closest(INTERACTIVE_DESCENDANT_SELECTOR)) {\n return true;\n }\n }\n\n return false;\n}\n\nimport componentStyles from './card.css?inline';\n\n/** Card component properties */\n\nexport type BitCardEvents = {\n activate: { originalEvent: MouseEvent | KeyboardEvent; trigger: 'pointer' | 'keyboard' };\n};\n\nexport type BitCardProps = {\n /** Theme color */\n color?: ThemeColor;\n /** Disable interaction */\n disabled?: boolean;\n /** Shadow elevation level (0-5) */\n elevation?: `${ElevationLevel}`;\n /** Make the card interactive (role=button, keyboard nav, emits activate) */\n interactive?: boolean;\n /** Show a loading progress bar */\n loading?: boolean;\n /** Card orientation */\n orientation?: 'horizontal';\n /** Internal padding size */\n padding?: PaddingSize;\n /** Visual style variant */\n variant?: 'solid' | 'flat' | 'glass' | 'frost';\n};\n\n/**\n * A versatile card container with semantic slots for media, header, body, footer, and actions.\n *\n * @element bit-card\n *\n * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'glass' | 'frost'\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} padding - Internal padding: 'none' | 'sm' | 'md' | 'lg' | 'xl'\n * @attr {string} elevation - Shadow elevation: '0' | '1' | '2' | '3' | '4' | '5'\n * @attr {string} orientation - Card layout: 'horizontal'\n * @attr {boolean} interactive - Enable pointer/keyboard activation\n * @attr {boolean} disabled - Disable card interaction\n * @attr {boolean} loading - Show loading progress bar\n *\n * @fires activate - Emitted when an interactive card is activated\n *\n * @slot media - Media content displayed at top/left\n * @slot header - Card header (title, subtitle)\n * @slot - Main card content\n * @slot footer - Card footer content\n * @slot actions - Action buttons or links\n *\n * @cssprop --card-bg - Background color\n * @cssprop --card-color - Text color\n * @cssprop --card-border - Border width\n * @cssprop --card-border-color - Border color\n * @cssprop --card-radius - Border radius\n * @cssprop --card-padding - Internal padding\n * @cssprop --card-shadow - Box shadow\n * @cssprop --card-hover-shadow - Shadow on hover\n *\n * @example\n * ```html\n * <bit-card elevation=\"2\"><h3 slot=\"header\">Title</h3><p>Content</p></bit-card>\n * <bit-card interactive color=\"primary\"><h3 slot=\"header\">Click me</h3></bit-card>\n * <bit-card variant=\"frost\" color=\"secondary\">Frosted card</bit-card>\n * ```\n */\nexport const CARD_TAG = defineComponent<BitCardProps, BitCardEvents>({\n props: {\n color: { default: undefined },\n disabled: { default: false, type: Boolean },\n elevation: { default: undefined },\n interactive: { default: false, type: Boolean },\n loading: { default: false, type: Boolean },\n orientation: { default: undefined },\n padding: { default: undefined },\n variant: { default: undefined },\n },\n setup({ emit, host, props }) {\n const mediaSlot = ref<HTMLSlotElement>();\n const headerSlot = ref<HTMLSlotElement>();\n const contentSlot = ref<HTMLSlotElement>();\n const footerSlot = ref<HTMLSlotElement>();\n const actionsSlot = ref<HTMLSlotElement>();\n const hasMedia = signal(false);\n const hasHeader = signal(false);\n const hasContent = signal(false);\n const hasFooter = signal(false);\n const hasActions = signal(false);\n\n function updateSlotState() {\n hasMedia.value = slotHasMeaningfulContent(mediaSlot.value);\n hasHeader.value = slotHasMeaningfulContent(headerSlot.value);\n hasContent.value = slotHasMeaningfulContent(contentSlot.value);\n hasFooter.value = slotHasMeaningfulContent(footerSlot.value);\n hasActions.value = slotHasMeaningfulContent(actionsSlot.value);\n }\n onMount(() => {\n onSlotChange('media', updateSlotState);\n onSlotChange('header', updateSlotState);\n onSlotChange('default', updateSlotState);\n onSlotChange('footer', updateSlotState);\n onSlotChange('actions', updateSlotState);\n });\n watch(\n [props.interactive, props.disabled, props.loading, props.variant, props.color, props.padding, props.orientation],\n () => {\n if (props.interactive.value) {\n host.setAttribute('role', 'button');\n host.setAttribute('tabindex', props.disabled.value ? '-1' : '0');\n host.setAttribute('aria-disabled', String(props.disabled.value));\n } else {\n host.removeAttribute('role');\n host.removeAttribute('tabindex');\n host.removeAttribute('aria-disabled');\n }\n\n host.setAttribute('aria-busy', props.loading.value ? 'true' : 'false');\n },\n { immediate: true },\n );\n\n const handleClick = (e: MouseEvent) => {\n if (!props.interactive.value || props.disabled.value) return;\n\n if (isNestedInteractiveTarget(host, e)) return;\n\n emit('activate', { originalEvent: e, trigger: 'pointer' });\n };\n const handleKeydown = (e: KeyboardEvent) => {\n if (!props.interactive.value || props.disabled.value) return;\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n emit('activate', { originalEvent: e, trigger: 'keyboard' });\n }\n };\n\n handle(host, 'click', handleClick);\n handle(host, 'keydown', handleKeydown);\n\n return html`\n <div class=\"card\" part=\"card\">\n <div class=\"loading-bar\" part=\"loading-bar\"></div>\n <div class=\"card-media\" part=\"media\" ?hidden=\"${() => !hasMedia.value}\">\n <slot ref=${mediaSlot} name=\"media\"></slot>\n </div>\n <div class=\"card-body\" part=\"body\">\n <div class=\"card-header\" part=\"header\" ?hidden=\"${() => !hasHeader.value}\">\n <slot ref=${headerSlot} name=\"header\"></slot>\n </div>\n <div class=\"card-content\" part=\"content\" ?hidden=\"${() => !hasContent.value}\">\n <slot ref=${contentSlot}></slot>\n </div>\n <div class=\"card-footer\" part=\"footer\" ?hidden=\"${() => !hasFooter.value}\">\n <slot ref=${footerSlot} name=\"footer\"></slot>\n </div>\n <div class=\"card-actions\" part=\"actions\" ?hidden=\"${() => !hasActions.value}\">\n <slot ref=${actionsSlot} name=\"actions\"></slot>\n </div>\n </div>\n </div>\n `;\n },\n styles: [...surfaceMixins, frostVariantMixin('.card'), reducedMotionMixin, componentStyles],\n tag: 'bit-card',\n});\n"],"mappings":"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"}
package/dist/card.js ADDED
@@ -0,0 +1,99 @@
1
+ import { reducedMotionMixin as e } from "./styles/mixins/accessibility.css.js";
2
+ import { frostVariantMixin as t } from "./styles/mixins/variants.css.js";
3
+ import { surfaceMixins as n } from "./styles/index.js";
4
+ import r from "./content/card/card.css?inline.js";
5
+ import { defineComponent as i, handle as a, html as o, onMount as s, onSlotChange as c, ref as l, signal as u, watch as d } from "@vielzeug/craftit";
6
+ //#region src/content/card/card.ts
7
+ var f = "button, a[href], input, select, textarea, summary, [role=\"button\"], [role=\"link\"], [contenteditable=\"\"], [contenteditable=\"true\"]";
8
+ function p(e) {
9
+ return e ? e.assignedNodes({ flatten: !0 }).some((e) => e.nodeType === Node.ELEMENT_NODE ? !0 : e.nodeType === Node.TEXT_NODE ? !!e.textContent?.trim() : !1) : !1;
10
+ }
11
+ function m(e, t) {
12
+ for (let n of t.composedPath()) if (n instanceof HTMLElement) {
13
+ if (n === e) return !1;
14
+ if (n.matches(f) || n.closest(f)) return !0;
15
+ }
16
+ return !1;
17
+ }
18
+ var h = i({
19
+ props: {
20
+ color: { default: void 0 },
21
+ disabled: {
22
+ default: !1,
23
+ type: Boolean
24
+ },
25
+ elevation: { default: void 0 },
26
+ interactive: {
27
+ default: !1,
28
+ type: Boolean
29
+ },
30
+ loading: {
31
+ default: !1,
32
+ type: Boolean
33
+ },
34
+ orientation: { default: void 0 },
35
+ padding: { default: void 0 },
36
+ variant: { default: void 0 }
37
+ },
38
+ setup({ emit: e, host: t, props: n }) {
39
+ let r = l(), i = l(), f = l(), h = l(), g = l(), _ = u(!1), v = u(!1), y = u(!1), b = u(!1), x = u(!1);
40
+ function S() {
41
+ _.value = p(r.value), v.value = p(i.value), y.value = p(f.value), b.value = p(h.value), x.value = p(g.value);
42
+ }
43
+ return s(() => {
44
+ c("media", S), c("header", S), c("default", S), c("footer", S), c("actions", S);
45
+ }), d([
46
+ n.interactive,
47
+ n.disabled,
48
+ n.loading,
49
+ n.variant,
50
+ n.color,
51
+ n.padding,
52
+ n.orientation
53
+ ], () => {
54
+ n.interactive.value ? (t.setAttribute("role", "button"), t.setAttribute("tabindex", n.disabled.value ? "-1" : "0"), t.setAttribute("aria-disabled", String(n.disabled.value))) : (t.removeAttribute("role"), t.removeAttribute("tabindex"), t.removeAttribute("aria-disabled")), t.setAttribute("aria-busy", n.loading.value ? "true" : "false");
55
+ }, { immediate: !0 }), a(t, "click", (r) => {
56
+ !n.interactive.value || n.disabled.value || m(t, r) || e("activate", {
57
+ originalEvent: r,
58
+ trigger: "pointer"
59
+ });
60
+ }), a(t, "keydown", (t) => {
61
+ !n.interactive.value || n.disabled.value || (t.key === "Enter" || t.key === " ") && (t.preventDefault(), e("activate", {
62
+ originalEvent: t,
63
+ trigger: "keyboard"
64
+ }));
65
+ }), o`
66
+ <div class="card" part="card">
67
+ <div class="loading-bar" part="loading-bar"></div>
68
+ <div class="card-media" part="media" ?hidden="${() => !_.value}">
69
+ <slot ref=${r} name="media"></slot>
70
+ </div>
71
+ <div class="card-body" part="body">
72
+ <div class="card-header" part="header" ?hidden="${() => !v.value}">
73
+ <slot ref=${i} name="header"></slot>
74
+ </div>
75
+ <div class="card-content" part="content" ?hidden="${() => !y.value}">
76
+ <slot ref=${f}></slot>
77
+ </div>
78
+ <div class="card-footer" part="footer" ?hidden="${() => !b.value}">
79
+ <slot ref=${h} name="footer"></slot>
80
+ </div>
81
+ <div class="card-actions" part="actions" ?hidden="${() => !x.value}">
82
+ <slot ref=${g} name="actions"></slot>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ `;
87
+ },
88
+ styles: [
89
+ ...n,
90
+ t(".card"),
91
+ e,
92
+ r
93
+ ],
94
+ tag: "bit-card"
95
+ });
96
+ //#endregion
97
+ export { h as CARD_TAG };
98
+
99
+ //# sourceMappingURL=card.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"card.js","names":[],"sources":["../src/content/card/card.ts"],"sourcesContent":["import { defineComponent, handle, html, onMount, onSlotChange, ref, signal, watch } from '@vielzeug/craftit';\n\nimport type { ElevationLevel, PaddingSize, ThemeColor } from '../../types';\n\nimport { frostVariantMixin, reducedMotionMixin, surfaceMixins } from '../../styles';\n\nconst INTERACTIVE_DESCENDANT_SELECTOR =\n 'button, a[href], input, select, textarea, summary, [role=\"button\"], [role=\"link\"], [contenteditable=\"\"], [contenteditable=\"true\"]';\n\nfunction slotHasMeaningfulContent(slot: HTMLSlotElement | null | undefined): boolean {\n if (!slot) return false;\n\n return slot.assignedNodes({ flatten: true }).some((node) => {\n if (node.nodeType === Node.ELEMENT_NODE) return true;\n\n if (node.nodeType === Node.TEXT_NODE) return !!node.textContent?.trim();\n\n return false;\n });\n}\n\nfunction isNestedInteractiveTarget(host: HTMLElement, event: Event): boolean {\n for (const node of event.composedPath()) {\n if (!(node instanceof HTMLElement)) continue;\n\n if (node === host) return false;\n\n if (node.matches(INTERACTIVE_DESCENDANT_SELECTOR) || !!node.closest(INTERACTIVE_DESCENDANT_SELECTOR)) {\n return true;\n }\n }\n\n return false;\n}\n\nimport componentStyles from './card.css?inline';\n\n/** Card component properties */\n\nexport type BitCardEvents = {\n activate: { originalEvent: MouseEvent | KeyboardEvent; trigger: 'pointer' | 'keyboard' };\n};\n\nexport type BitCardProps = {\n /** Theme color */\n color?: ThemeColor;\n /** Disable interaction */\n disabled?: boolean;\n /** Shadow elevation level (0-5) */\n elevation?: `${ElevationLevel}`;\n /** Make the card interactive (role=button, keyboard nav, emits activate) */\n interactive?: boolean;\n /** Show a loading progress bar */\n loading?: boolean;\n /** Card orientation */\n orientation?: 'horizontal';\n /** Internal padding size */\n padding?: PaddingSize;\n /** Visual style variant */\n variant?: 'solid' | 'flat' | 'glass' | 'frost';\n};\n\n/**\n * A versatile card container with semantic slots for media, header, body, footer, and actions.\n *\n * @element bit-card\n *\n * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'glass' | 'frost'\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {string} padding - Internal padding: 'none' | 'sm' | 'md' | 'lg' | 'xl'\n * @attr {string} elevation - Shadow elevation: '0' | '1' | '2' | '3' | '4' | '5'\n * @attr {string} orientation - Card layout: 'horizontal'\n * @attr {boolean} interactive - Enable pointer/keyboard activation\n * @attr {boolean} disabled - Disable card interaction\n * @attr {boolean} loading - Show loading progress bar\n *\n * @fires activate - Emitted when an interactive card is activated\n *\n * @slot media - Media content displayed at top/left\n * @slot header - Card header (title, subtitle)\n * @slot - Main card content\n * @slot footer - Card footer content\n * @slot actions - Action buttons or links\n *\n * @cssprop --card-bg - Background color\n * @cssprop --card-color - Text color\n * @cssprop --card-border - Border width\n * @cssprop --card-border-color - Border color\n * @cssprop --card-radius - Border radius\n * @cssprop --card-padding - Internal padding\n * @cssprop --card-shadow - Box shadow\n * @cssprop --card-hover-shadow - Shadow on hover\n *\n * @example\n * ```html\n * <bit-card elevation=\"2\"><h3 slot=\"header\">Title</h3><p>Content</p></bit-card>\n * <bit-card interactive color=\"primary\"><h3 slot=\"header\">Click me</h3></bit-card>\n * <bit-card variant=\"frost\" color=\"secondary\">Frosted card</bit-card>\n * ```\n */\nexport const CARD_TAG = defineComponent<BitCardProps, BitCardEvents>({\n props: {\n color: { default: undefined },\n disabled: { default: false, type: Boolean },\n elevation: { default: undefined },\n interactive: { default: false, type: Boolean },\n loading: { default: false, type: Boolean },\n orientation: { default: undefined },\n padding: { default: undefined },\n variant: { default: undefined },\n },\n setup({ emit, host, props }) {\n const mediaSlot = ref<HTMLSlotElement>();\n const headerSlot = ref<HTMLSlotElement>();\n const contentSlot = ref<HTMLSlotElement>();\n const footerSlot = ref<HTMLSlotElement>();\n const actionsSlot = ref<HTMLSlotElement>();\n const hasMedia = signal(false);\n const hasHeader = signal(false);\n const hasContent = signal(false);\n const hasFooter = signal(false);\n const hasActions = signal(false);\n\n function updateSlotState() {\n hasMedia.value = slotHasMeaningfulContent(mediaSlot.value);\n hasHeader.value = slotHasMeaningfulContent(headerSlot.value);\n hasContent.value = slotHasMeaningfulContent(contentSlot.value);\n hasFooter.value = slotHasMeaningfulContent(footerSlot.value);\n hasActions.value = slotHasMeaningfulContent(actionsSlot.value);\n }\n onMount(() => {\n onSlotChange('media', updateSlotState);\n onSlotChange('header', updateSlotState);\n onSlotChange('default', updateSlotState);\n onSlotChange('footer', updateSlotState);\n onSlotChange('actions', updateSlotState);\n });\n watch(\n [props.interactive, props.disabled, props.loading, props.variant, props.color, props.padding, props.orientation],\n () => {\n if (props.interactive.value) {\n host.setAttribute('role', 'button');\n host.setAttribute('tabindex', props.disabled.value ? '-1' : '0');\n host.setAttribute('aria-disabled', String(props.disabled.value));\n } else {\n host.removeAttribute('role');\n host.removeAttribute('tabindex');\n host.removeAttribute('aria-disabled');\n }\n\n host.setAttribute('aria-busy', props.loading.value ? 'true' : 'false');\n },\n { immediate: true },\n );\n\n const handleClick = (e: MouseEvent) => {\n if (!props.interactive.value || props.disabled.value) return;\n\n if (isNestedInteractiveTarget(host, e)) return;\n\n emit('activate', { originalEvent: e, trigger: 'pointer' });\n };\n const handleKeydown = (e: KeyboardEvent) => {\n if (!props.interactive.value || props.disabled.value) return;\n\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n emit('activate', { originalEvent: e, trigger: 'keyboard' });\n }\n };\n\n handle(host, 'click', handleClick);\n handle(host, 'keydown', handleKeydown);\n\n return html`\n <div class=\"card\" part=\"card\">\n <div class=\"loading-bar\" part=\"loading-bar\"></div>\n <div class=\"card-media\" part=\"media\" ?hidden=\"${() => !hasMedia.value}\">\n <slot ref=${mediaSlot} name=\"media\"></slot>\n </div>\n <div class=\"card-body\" part=\"body\">\n <div class=\"card-header\" part=\"header\" ?hidden=\"${() => !hasHeader.value}\">\n <slot ref=${headerSlot} name=\"header\"></slot>\n </div>\n <div class=\"card-content\" part=\"content\" ?hidden=\"${() => !hasContent.value}\">\n <slot ref=${contentSlot}></slot>\n </div>\n <div class=\"card-footer\" part=\"footer\" ?hidden=\"${() => !hasFooter.value}\">\n <slot ref=${footerSlot} name=\"footer\"></slot>\n </div>\n <div class=\"card-actions\" part=\"actions\" ?hidden=\"${() => !hasActions.value}\">\n <slot ref=${actionsSlot} name=\"actions\"></slot>\n </div>\n </div>\n </div>\n `;\n },\n styles: [...surfaceMixins, frostVariantMixin('.card'), reducedMotionMixin, componentStyles],\n tag: 'bit-card',\n});\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
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(`./inputs/shared/utils/choice-change.cjs`),i=require(`./inputs/shared/utils/field-values.cjs`),a=require(`./inputs/shared/form-context.cjs`),o=require(`./inputs/shared/dom-sync/form-context.cjs`);require(`./inputs/shared/dom-sync/index.cjs`);const s=require(`./inputs/checkbox-group/checkbox-group.css?inline.cjs`);let c=require(`@vielzeug/craftit`);var l=(0,c.createContext)(`CheckboxGroupContext`),u=(0,c.defineComponent)({props:{color:{default:void 0},disabled:{default:!1},error:{default:``},helper:{default:``},label:{default:``},orientation:{default:`vertical`},required:{default:!1},size:{default:void 0},values:{default:``}},setup({emit:e,host:t,props:n}){let s=e=>i.parseCsvValues(e),u=(0,c.signal)(s(n.values.value)),d=()=>Array.from(t.getElementsByTagName(`bit-checkbox`)),f=e=>d().find(t=>(t.getAttribute(`value`)??``)===e)?.textContent?.replace(/\s+/g,` `).trim()||e,p=t=>{let n=u.value;e(`change`,r.createChoiceChangeDetail(n,n.map(f),t))};(0,c.effect)(()=>{u.value=s(n.values.value)});let m=(e,n)=>{let r=u.value,i=r.includes(e)?r.filter(t=>t!==e):[...r,e];u.value=i,t.setAttribute(`values`,i.join(`,`)),p(n)};o.mountFormContextSync(t,(0,c.inject)(a.FORM_CTX,void 0),n),(0,c.provide)(l,{color:n.color,disabled:(0,c.computed)(()=>!!n.disabled.value),size:n.size,toggle:m,values:u});let h=()=>{let e=u.value,r=n.color.value,i=n.size.value,a=n.disabled.value,o=Array.from(t.getElementsByTagName(`bit-checkbox`));for(let t of o){let n=t.getAttribute(`value`)??``;e.includes(n)?t.setAttribute(`checked`,``):t.removeAttribute(`checked`),r?t.setAttribute(`color`,r):t.removeAttribute(`color`),i?t.setAttribute(`size`,i):t.removeAttribute(`size`),a?t.setAttribute(`disabled`,``):t.removeAttribute(`disabled`)}};(0,c.effect)(h),(0,c.onMount)(()=>{(0,c.onSlotChange)(`default`,h),h(),(0,c.handle)(t,`change`,e=>{e.target!==t&&(e.stopPropagation(),m(e.target.getAttribute(`value`)??``,e))})});let g=(0,c.createId)(`checkbox-group-legend`),_=`${g}-error`,v=`${g}-helper`,y=(0,c.computed)(()=>!!n.error.value),b=(0,c.computed)(()=>!!n.helper.value&&!y.value);return c.html`
2
+ <fieldset
3
+ role="group"
4
+ aria-required="${()=>String(!!n.required.value)}"
5
+ aria-invalid="${()=>String(y.value)}"
6
+ aria-errormessage="${()=>y.value?_:null}"
7
+ aria-describedby="${()=>y.value?_:b.value?v:null}">
8
+ <legend id="${g}" ?hidden=${()=>!n.label.value}>
9
+ ${()=>n.label.value}${()=>n.required.value?c.html`<span aria-hidden="true"> *</span>`:``}
10
+ </legend>
11
+ <div class="checkbox-group-items" part="items">
12
+ <slot></slot>
13
+ </div>
14
+ <div class="error-text" id="${_}" role="alert" ?hidden=${()=>!y.value}>
15
+ ${()=>n.error.value}
16
+ </div>
17
+ <div class="helper-text" id="${v}" ?hidden=${()=>!b.value}>${()=>n.helper.value}</div>
18
+ </fieldset>
19
+ `},styles:[n.colorThemeMixin,e.sizeVariantMixin(),t.disabledStateMixin(),s.default],tag:`bit-checkbox-group`});exports.CHECKBOX_GROUP_CTX=l,exports.CHECKBOX_GROUP_TAG=u;
20
+ //# sourceMappingURL=checkbox-group.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkbox-group.cjs","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,88 @@
1
+ import { sizeVariantMixin as e } from "./styles/mixins/shape.css.js";
2
+ import { disabledStateMixin as t } from "./styles/mixins/states.css.js";
3
+ import { colorThemeMixin as n } from "./styles/mixins/theme.css.js";
4
+ import "./styles/index.js";
5
+ import { createChoiceChangeDetail as r } from "./inputs/shared/utils/choice-change.js";
6
+ import { parseCsvValues as i } from "./inputs/shared/utils/field-values.js";
7
+ import { FORM_CTX as a } from "./inputs/shared/form-context.js";
8
+ import { mountFormContextSync as o } from "./inputs/shared/dom-sync/form-context.js";
9
+ import "./inputs/shared/dom-sync/index.js";
10
+ import s from "./inputs/checkbox-group/checkbox-group.css?inline.js";
11
+ import { computed as c, createContext as l, createId as u, defineComponent as d, effect as f, handle as p, html as m, inject as h, onMount as g, onSlotChange as _, provide as v, signal as y } from "@vielzeug/craftit";
12
+ //#region src/inputs/checkbox-group/checkbox-group.ts
13
+ var b = l("CheckboxGroupContext"), x = d({
14
+ props: {
15
+ color: { default: void 0 },
16
+ disabled: { default: !1 },
17
+ error: { default: "" },
18
+ helper: { default: "" },
19
+ label: { default: "" },
20
+ orientation: { default: "vertical" },
21
+ required: { default: !1 },
22
+ size: { default: void 0 },
23
+ values: { default: "" }
24
+ },
25
+ setup({ emit: e, host: t, props: n }) {
26
+ let s = (e) => i(e), l = y(s(n.values.value)), d = () => Array.from(t.getElementsByTagName("bit-checkbox")), x = (e) => d().find((t) => (t.getAttribute("value") ?? "") === e)?.textContent?.replace(/\s+/g, " ").trim() || e, S = (t) => {
27
+ let n = l.value;
28
+ e("change", r(n, n.map(x), t));
29
+ };
30
+ f(() => {
31
+ l.value = s(n.values.value);
32
+ });
33
+ let C = (e, n) => {
34
+ let r = l.value, i = r.includes(e) ? r.filter((t) => t !== e) : [...r, e];
35
+ l.value = i, t.setAttribute("values", i.join(",")), S(n);
36
+ };
37
+ o(t, h(a, void 0), n), v(b, {
38
+ color: n.color,
39
+ disabled: c(() => !!n.disabled.value),
40
+ size: n.size,
41
+ toggle: C,
42
+ values: l
43
+ });
44
+ let w = () => {
45
+ let e = l.value, r = n.color.value, i = n.size.value, a = n.disabled.value, o = Array.from(t.getElementsByTagName("bit-checkbox"));
46
+ for (let t of o) {
47
+ let n = t.getAttribute("value") ?? "";
48
+ e.includes(n) ? t.setAttribute("checked", "") : t.removeAttribute("checked"), r ? t.setAttribute("color", r) : t.removeAttribute("color"), i ? t.setAttribute("size", i) : t.removeAttribute("size"), a ? t.setAttribute("disabled", "") : t.removeAttribute("disabled");
49
+ }
50
+ };
51
+ f(w), g(() => {
52
+ _("default", w), w(), p(t, "change", (e) => {
53
+ e.target !== t && (e.stopPropagation(), C(e.target.getAttribute("value") ?? "", e));
54
+ });
55
+ });
56
+ let T = u("checkbox-group-legend"), E = `${T}-error`, D = `${T}-helper`, O = c(() => !!n.error.value), k = c(() => !!n.helper.value && !O.value);
57
+ return m`
58
+ <fieldset
59
+ role="group"
60
+ aria-required="${() => String(!!n.required.value)}"
61
+ aria-invalid="${() => String(O.value)}"
62
+ aria-errormessage="${() => O.value ? E : null}"
63
+ aria-describedby="${() => O.value ? E : k.value ? D : null}">
64
+ <legend id="${T}" ?hidden=${() => !n.label.value}>
65
+ ${() => n.label.value}${() => n.required.value ? m`<span aria-hidden="true"> *</span>` : ""}
66
+ </legend>
67
+ <div class="checkbox-group-items" part="items">
68
+ <slot></slot>
69
+ </div>
70
+ <div class="error-text" id="${E}" role="alert" ?hidden=${() => !O.value}>
71
+ ${() => n.error.value}
72
+ </div>
73
+ <div class="helper-text" id="${D}" ?hidden=${() => !k.value}>${() => n.helper.value}</div>
74
+ </fieldset>
75
+ `;
76
+ },
77
+ styles: [
78
+ n,
79
+ e(),
80
+ t(),
81
+ s
82
+ ],
83
+ tag: "bit-checkbox-group"
84
+ });
85
+ //#endregion
86
+ export { b as CHECKBOX_GROUP_CTX, x as CHECKBOX_GROUP_TAG };
87
+
88
+ //# sourceMappingURL=checkbox-group.js.map