@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
package/dist/menu.js ADDED
@@ -0,0 +1,296 @@
1
+ import { coarsePointerMixin as e } from "./styles/mixins/accessibility.css.js";
2
+ import { sizeVariantMixin as t } from "./styles/mixins/shape.css.js";
3
+ import { colorThemeMixin as n, forcedColorsMixin as r } from "./styles/mixins/theme.css.js";
4
+ import "./styles/index.js";
5
+ import { e as i } from "./craftit/dist/labs/list.js";
6
+ import { t as a } from "./craftit/dist/labs/overlay.js";
7
+ import "./craftit/dist/labs.js";
8
+ import o from "./overlay/menu/menu.css?inline.js";
9
+ import { aria as s, computed as c, createId as l, css as u, defineComponent as d, effect as f, handle as p, html as m, onMount as h, onSlotChange as g, signal as _ } from "@vielzeug/craftit";
10
+ import { flip as v, offset as y, positionFloat as b, shift as x } from "@vielzeug/floatit";
11
+ //#region src/overlay/menu/menu.ts
12
+ var S = u`
13
+ ${n}
14
+ ${t}
15
+ ${r}
16
+ `, C = d({
17
+ props: {
18
+ checked: {
19
+ default: !1,
20
+ type: Boolean
21
+ },
22
+ disabled: {
23
+ default: !1,
24
+ type: Boolean
25
+ },
26
+ type: { default: void 0 },
27
+ value: { default: void 0 }
28
+ },
29
+ setup({ props: t }) {
30
+ let n = u`
31
+ @layer buildit.base {
32
+ :host {
33
+ display: block;
34
+ outline: none;
35
+ }
36
+
37
+ .item {
38
+ align-items: center;
39
+ border-radius: 0;
40
+ cursor: pointer;
41
+ display: flex;
42
+ font-size: var(--text-sm);
43
+ gap: var(--size-2);
44
+ line-height: var(--leading-normal);
45
+ padding: var(--size-1-5) var(--size-3);
46
+ transition:
47
+ background var(--transition-fast),
48
+ color var(--transition-fast);
49
+ user-select: none;
50
+ white-space: nowrap;
51
+ }
52
+
53
+ :host(:first-of-type) .item {
54
+ border-radius: var(--rounded-sm) var(--rounded-sm) 0 0;
55
+ }
56
+
57
+ :host(:last-child) .item {
58
+ border-radius: 0 0 var(--rounded-sm) var(--rounded-sm);
59
+ }
60
+
61
+ :host(:first-of-type:last-child) .item {
62
+ border-radius: var(--rounded-sm);
63
+ }
64
+
65
+ :host(:not([disabled])) .item:hover {
66
+ background: var(--color-contrast-100);
67
+ }
68
+
69
+ :host(:focus-visible) .item {
70
+ background: color-mix(in srgb, var(--color-primary) 12%, var(--color-contrast-100));
71
+ color: var(--color-primary);
72
+ }
73
+
74
+ /* Driven by JS via sync() — avoids :host() attribute selector edge-cases */
75
+ .item.is-checkable {
76
+ background: color-mix(in srgb, var(--color-contrast-900) 5%, var(--color-canvas));
77
+ }
78
+
79
+ .item.is-checked {
80
+ background: color-mix(in srgb, var(--color-primary) 18%, var(--color-canvas));
81
+ color: var(--color-primary);
82
+ font-weight: var(--font-medium);
83
+ }
84
+
85
+ :host([disabled]) .item {
86
+ color: var(--color-contrast-400);
87
+ cursor: not-allowed;
88
+ opacity: 0.6;
89
+ pointer-events: none;
90
+ }
91
+
92
+ .icon-slot {
93
+ display: contents;
94
+ }
95
+
96
+ .item-check {
97
+ align-items: center;
98
+ color: currentColor;
99
+ display: inline-flex;
100
+ flex-shrink: 0;
101
+ justify-content: center;
102
+ width: 1.25rem;
103
+ }
104
+
105
+ .item-label {
106
+ flex: 1;
107
+ min-width: 0;
108
+ overflow: hidden;
109
+ text-overflow: ellipsis;
110
+ white-space: nowrap;
111
+ }
112
+ }
113
+ ${e}
114
+ `, r = c(() => t.type.value === "checkbox" || t.type.value === "radio"), i = c(() => r.value && t.checked.value), a = c(() => t.type.value === "checkbox" ? "menuitemcheckbox" : t.type.value === "radio" ? "menuitemradio" : "menuitem"), o = c(() => t.type.value === "checkbox" ? t.checked.value ? "☑" : "☐" : t.type.value === "radio" ? t.checked.value ? "◉" : "◯" : ""), s = c(() => `item${r.value ? " is-checkable" : ""}${i.value ? " is-checked" : ""}`), l = () => m`
115
+ <span class="item-check" aria-hidden="true">${() => o.value}</span>
116
+ <span class="icon-slot"><slot name="icon"></slot></span>
117
+ <span class="item-label"><slot></slot></span>
118
+ `;
119
+ return m`
120
+ <style>
121
+ ${n}
122
+ </style>
123
+ ${() => r.value ? m`
124
+ <div
125
+ class="${() => s.value}"
126
+ tabindex="-1"
127
+ role="${() => a.value}"
128
+ aria-checked="${() => String(i.value)}"
129
+ aria-disabled="${() => String(t.disabled.value)}">
130
+ ${l()}
131
+ </div>
132
+ ` : m`
133
+ <div
134
+ class="${() => s.value}"
135
+ tabindex="-1"
136
+ role="menuitem"
137
+ aria-disabled="${() => String(t.disabled.value)}">
138
+ <span class="icon-slot"><slot name="icon"></slot></span>
139
+ <span class="item-label"><slot></slot></span>
140
+ </div>
141
+ `}
142
+ `;
143
+ },
144
+ tag: "bit-menu-item"
145
+ }), w = d({
146
+ setup() {
147
+ return m`<style>
148
+ @layer buildit.base {
149
+ :host {
150
+ display: block;
151
+ margin: var(--size-1) 0;
152
+ border-top: var(--border) solid var(--color-contrast-200);
153
+ }
154
+ }
155
+ </style>`;
156
+ },
157
+ tag: "bit-menu-separator"
158
+ }), T = d({
159
+ props: {
160
+ color: { default: void 0 },
161
+ disabled: { default: !1 },
162
+ placement: { default: "bottom-start" },
163
+ size: { default: void 0 }
164
+ },
165
+ setup({ emit: e, host: t, props: n }) {
166
+ let r = l("menu"), c = _(!1), u = null, d = null;
167
+ function C() {
168
+ return Array.from(t.querySelectorAll("bit-menu-item:not([disabled])"));
169
+ }
170
+ let w = -1, T = i({
171
+ getIndex: () => w,
172
+ getItems: C,
173
+ isItemDisabled: (e) => e.hasAttribute("disabled"),
174
+ setIndex: (e) => {
175
+ w = e, C()[e]?.focus();
176
+ }
177
+ });
178
+ function E() {
179
+ !d || !u || b(u, d, {
180
+ middleware: [
181
+ y(4),
182
+ v({ padding: 6 }),
183
+ x({ padding: 6 })
184
+ ],
185
+ placement: n.placement.value
186
+ });
187
+ }
188
+ let D = a({
189
+ getBoundaryElement: () => t,
190
+ getPanelElement: () => d,
191
+ getTriggerElement: () => u,
192
+ isDisabled: () => !!n.disabled.value,
193
+ isOpen: () => c.value,
194
+ onClose: (t) => e("close", { reason: t }),
195
+ onOpen: (t) => e("open", { reason: t }),
196
+ positioner: {
197
+ floating: () => d,
198
+ reference: () => u,
199
+ update: E
200
+ },
201
+ setOpen: (e) => {
202
+ c.value = e, e || T.reset();
203
+ }
204
+ }), O = (n) => {
205
+ let r = n.getAttribute("type");
206
+ if (r === "checkbox") n.hasAttribute("checked") ? n.removeAttribute("checked") : n.setAttribute("checked", "");
207
+ else if (r === "radio") {
208
+ for (let e of t.querySelectorAll("bit-menu-item[type=\"radio\"]")) e.removeAttribute("checked");
209
+ n.setAttribute("checked", "");
210
+ }
211
+ let i = n.getAttribute("value") ?? "";
212
+ e("select", {
213
+ checked: r === "checkbox" || r === "radio" ? n.hasAttribute("checked") : void 0,
214
+ value: i
215
+ }), r !== "checkbox" && r !== "radio" && D.close({ reason: "programmatic" });
216
+ };
217
+ function k(e) {
218
+ if (!c.value) {
219
+ (e.key === "Enter" || e.key === " " || e.key === "ArrowDown") && (e.preventDefault(), D.open(), requestAnimationFrame(() => T.first()));
220
+ return;
221
+ }
222
+ switch (e.key) {
223
+ case " ": {
224
+ e.preventDefault();
225
+ let t = T.getActiveItem();
226
+ t && O(t);
227
+ break;
228
+ }
229
+ case "ArrowDown":
230
+ e.preventDefault(), T.next();
231
+ break;
232
+ case "ArrowUp":
233
+ e.preventDefault(), T.prev();
234
+ break;
235
+ case "End":
236
+ e.preventDefault(), T.last();
237
+ break;
238
+ case "Enter": {
239
+ e.preventDefault();
240
+ let t = T.getActiveItem();
241
+ t && O(t);
242
+ break;
243
+ }
244
+ case "Escape":
245
+ e.preventDefault(), D.close({ reason: "escape" });
246
+ break;
247
+ case "Home":
248
+ e.preventDefault(), T.first();
249
+ break;
250
+ case "Tab":
251
+ D.close({ reason: "programmatic" });
252
+ break;
253
+ }
254
+ }
255
+ return h(() => {
256
+ let e = t.shadowRoot?.querySelector("slot[name=\"trigger\"]");
257
+ d = t.shadowRoot?.querySelector(".menu-panel") ?? null;
258
+ let i = null;
259
+ function a() {
260
+ i && (i.removeEventListener("click", o), i.removeEventListener("keydown", k)), u = e?.assignedElements({ flatten: !0 })?.[0] ?? null, i = u, u && (s(u, {
261
+ controls: () => r,
262
+ disabled: () => n.disabled.value,
263
+ expanded: () => c.value ? "true" : "false",
264
+ haspopup: "menu"
265
+ }), u.addEventListener("click", o), u.addEventListener("keydown", k));
266
+ }
267
+ function o() {
268
+ D.toggle();
269
+ }
270
+ g("trigger", a), p(t, "click", ((e) => {
271
+ if (!c.value) return;
272
+ let t = e, n = t.composedPath().find((e) => e instanceof HTMLElement && e.tagName === "BIT-MENU-ITEM") ?? t.target?.closest("bit-menu-item") ?? null;
273
+ !n || n.hasAttribute("disabled") || O(n);
274
+ }));
275
+ let l = D.bindOutsideClick(document);
276
+ return f(() => {
277
+ d?.toggleAttribute("data-open", c.value);
278
+ }), p(d, "keydown", k), () => {
279
+ l(), i && (i.removeEventListener("click", o), i.removeEventListener("keydown", k));
280
+ };
281
+ }), m`
282
+ <style>
283
+ ${o}${S}
284
+ </style>
285
+ <slot name="trigger"></slot>
286
+ <div class="menu-panel" id="${r}" role="menu" aria-orientation="vertical">
287
+ <slot></slot>
288
+ </div>
289
+ `;
290
+ },
291
+ tag: "bit-menu"
292
+ });
293
+ //#endregion
294
+ export { C as MENU_ITEM_TAG, T as MENU_TAG, w as SEPARATOR_TAG };
295
+
296
+ //# sourceMappingURL=menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu.js","names":[],"sources":["../src/overlay/menu/menu.ts"],"sourcesContent":["import {\n aria,\n computed,\n createId,\n css,\n defineComponent,\n effect,\n handle,\n html,\n onMount,\n onSlotChange,\n signal,\n} from '@vielzeug/craftit';\nimport {\n createListNavigation,\n createOverlayControl,\n type OverlayOpenReason,\n type OverlayCloseReason,\n} from '@vielzeug/craftit/labs';\nimport { flip, offset, positionFloat, shift } from '@vielzeug/floatit';\n\nimport type { AddEventListeners, ComponentSize, ThemeColor } from '../../types';\n\nimport { coarsePointerMixin, colorThemeMixin, forcedColorsMixin, sizeVariantMixin } from '../../styles';\n\n// ============================================\n// Types\n// ============================================\n\nexport interface MenuSelectDetail {\n value: string;\n checked?: boolean;\n}\n\nexport type BitMenuItemType = 'checkbox' | 'radio';\n\nexport type BitMenuEvents = {\n close: { reason: OverlayCloseReason };\n open: { reason: OverlayOpenReason };\n select: MenuSelectDetail;\n};\n\nexport type BitMenuItemProps = {\n checked?: boolean;\n disabled?: boolean;\n type?: BitMenuItemType;\n value?: string;\n};\n\nexport type BitMenuProps = {\n color?: ThemeColor;\n disabled?: boolean;\n placement?: 'bottom' | 'bottom-start' | 'bottom-end' | 'top' | 'top-start' | 'top-end';\n size?: ComponentSize;\n};\n\n// ============================================\n// Styles\n// ============================================\n\nimport componentStyles from './menu.css?inline';\n\nconst themeStyles = /* css */ css`\n ${colorThemeMixin}\n ${sizeVariantMixin}\n ${forcedColorsMixin}\n`;\n\n// ============================================\n// Menu Item Component\n// ============================================\n\nexport const MENU_ITEM_TAG = defineComponent<BitMenuItemProps>({\n props: {\n checked: { default: false, type: Boolean },\n disabled: { default: false, type: Boolean },\n type: { default: undefined },\n value: { default: undefined },\n },\n setup({ props }) {\n const itemStyles = /* css */ css`\n @layer buildit.base {\n :host {\n display: block;\n outline: none;\n }\n\n .item {\n align-items: center;\n border-radius: 0;\n cursor: pointer;\n display: flex;\n font-size: var(--text-sm);\n gap: var(--size-2);\n line-height: var(--leading-normal);\n padding: var(--size-1-5) var(--size-3);\n transition:\n background var(--transition-fast),\n color var(--transition-fast);\n user-select: none;\n white-space: nowrap;\n }\n\n :host(:first-of-type) .item {\n border-radius: var(--rounded-sm) var(--rounded-sm) 0 0;\n }\n\n :host(:last-child) .item {\n border-radius: 0 0 var(--rounded-sm) var(--rounded-sm);\n }\n\n :host(:first-of-type:last-child) .item {\n border-radius: var(--rounded-sm);\n }\n\n :host(:not([disabled])) .item:hover {\n background: var(--color-contrast-100);\n }\n\n :host(:focus-visible) .item {\n background: color-mix(in srgb, var(--color-primary) 12%, var(--color-contrast-100));\n color: var(--color-primary);\n }\n\n /* Driven by JS via sync() — avoids :host() attribute selector edge-cases */\n .item.is-checkable {\n background: color-mix(in srgb, var(--color-contrast-900) 5%, var(--color-canvas));\n }\n\n .item.is-checked {\n background: color-mix(in srgb, var(--color-primary) 18%, var(--color-canvas));\n color: var(--color-primary);\n font-weight: var(--font-medium);\n }\n\n :host([disabled]) .item {\n color: var(--color-contrast-400);\n cursor: not-allowed;\n opacity: 0.6;\n pointer-events: none;\n }\n\n .icon-slot {\n display: contents;\n }\n\n .item-check {\n align-items: center;\n color: currentColor;\n display: inline-flex;\n flex-shrink: 0;\n justify-content: center;\n width: 1.25rem;\n }\n\n .item-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n ${coarsePointerMixin}\n `;\n\n const isCheckable = computed(() => props.type.value === 'checkbox' || props.type.value === 'radio');\n const isChecked = computed(() => isCheckable.value && props.checked.value);\n const itemRole = computed(() => {\n if (props.type.value === 'checkbox') return 'menuitemcheckbox';\n\n if (props.type.value === 'radio') return 'menuitemradio';\n\n return 'menuitem';\n });\n const checkIndicator = computed(() => {\n if (props.type.value === 'checkbox') return props.checked.value ? '☑' : '☐';\n\n if (props.type.value === 'radio') return props.checked.value ? '◉' : '◯';\n\n return '';\n });\n const itemClass = computed(\n () => `item${isCheckable.value ? ' is-checkable' : ''}${isChecked.value ? ' is-checked' : ''}`,\n );\n const renderContent = () => html`\n <span class=\"item-check\" aria-hidden=\"true\">${() => checkIndicator.value}</span>\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n `;\n\n return html`\n <style>\n ${itemStyles}\n </style>\n ${() =>\n isCheckable.value\n ? html`\n <div\n class=\"${() => itemClass.value}\"\n tabindex=\"-1\"\n role=\"${() => itemRole.value}\"\n aria-checked=\"${() => String(isChecked.value)}\"\n aria-disabled=\"${() => String(props.disabled.value)}\">\n ${renderContent()}\n </div>\n `\n : html`\n <div\n class=\"${() => itemClass.value}\"\n tabindex=\"-1\"\n role=\"menuitem\"\n aria-disabled=\"${() => String(props.disabled.value)}\">\n <span class=\"icon-slot\"><slot name=\"icon\"></slot></span>\n <span class=\"item-label\"><slot></slot></span>\n </div>\n `}\n `;\n },\n tag: 'bit-menu-item',\n});\n\n// ============================================\n// Menu Separator\n// ============================================\n\nexport const SEPARATOR_TAG = defineComponent({\n setup() {\n return html`<style>\n @layer buildit.base {\n :host {\n display: block;\n margin: var(--size-1) 0;\n border-top: var(--border) solid var(--color-contrast-200);\n }\n }\n </style>`;\n },\n tag: 'bit-menu-separator',\n});\n\n// ============================================\n// Menu Component\n// ============================================\n\n/**\n * `bit-menu` — Action dropdown menu triggered by a slotted trigger element.\n * Nest `<bit-menu-item>` elements inside for menu options.\n *\n * @example\n * ```html\n * <bit-menu>\n * <button slot=\"trigger\">Actions</button>\n * <bit-menu-item value=\"edit\">Edit</bit-menu-item>\n * <bit-menu-item value=\"delete\">Delete</bit-menu-item>\n * </bit-menu>\n * ```\n */\nexport const MENU_TAG = defineComponent<BitMenuProps, BitMenuEvents>({\n props: {\n color: { default: undefined },\n disabled: { default: false },\n placement: { default: 'bottom-start' },\n size: { default: undefined },\n },\n setup({ emit, host, props }) {\n const menuId = createId('menu');\n const isOpen = signal(false);\n let triggerEl: HTMLElement | null = null;\n let panelEl: HTMLElement | null = null;\n\n // ── Helpers ───────────────────────────────────────────────────────────────\n function getItems(): HTMLElement[] {\n return Array.from(host.querySelectorAll<HTMLElement>('bit-menu-item:not([disabled])'));\n }\n\n let focusedIndex = -1;\n\n const listNavigation = createListNavigation<HTMLElement>({\n getIndex: () => focusedIndex,\n getItems,\n isItemDisabled: (item) => item.hasAttribute('disabled'),\n setIndex: (index) => {\n focusedIndex = index;\n getItems()[index]?.focus();\n },\n });\n\n function updatePosition() {\n if (!panelEl || !triggerEl) return;\n\n positionFloat(triggerEl, panelEl, {\n middleware: [offset(4), flip({ padding: 6 }), shift({ padding: 6 })],\n placement: props.placement.value,\n });\n }\n\n const overlay = createOverlayControl({\n getBoundaryElement: () => host,\n getPanelElement: () => panelEl,\n getTriggerElement: () => triggerEl,\n isDisabled: () => Boolean(props.disabled.value),\n isOpen: () => isOpen.value,\n onClose: (reason) => emit('close', { reason }),\n onOpen: (reason) => emit('open', { reason }),\n positioner: {\n floating: () => panelEl,\n reference: () => triggerEl,\n update: updatePosition,\n },\n setOpen: (next) => {\n isOpen.value = next;\n\n if (!next) listNavigation.reset();\n },\n });\n\n const activateItem = (item: HTMLElement): void => {\n const type = item.getAttribute('type');\n\n if (type === 'checkbox') {\n const next = !item.hasAttribute('checked');\n\n if (next) item.setAttribute('checked', '');\n else item.removeAttribute('checked');\n } else if (type === 'radio') {\n for (const radio of host.querySelectorAll<HTMLElement>('bit-menu-item[type=\"radio\"]')) {\n radio.removeAttribute('checked');\n }\n item.setAttribute('checked', '');\n }\n\n const value = item.getAttribute('value') ?? '';\n const checked = type === 'checkbox' || type === 'radio' ? item.hasAttribute('checked') : undefined;\n\n emit('select', { checked, value });\n\n if (type !== 'checkbox' && type !== 'radio') {\n overlay.close({ reason: 'programmatic' });\n }\n };\n\n // ── Keyboard Navigation ───────────────────────────────────────────────────\n function handleMenuKeydown(e: KeyboardEvent) {\n const open = isOpen.value;\n\n // When closed: open on Enter / Space / ArrowDown\n if (!open) {\n if (e.key === 'Enter' || e.key === ' ' || e.key === 'ArrowDown') {\n e.preventDefault();\n overlay.open();\n requestAnimationFrame(() => listNavigation.first());\n }\n\n return;\n }\n\n // When open: navigate and activate\n switch (e.key) {\n case ' ': {\n e.preventDefault();\n\n const focused = listNavigation.getActiveItem();\n\n if (focused) activateItem(focused);\n\n break;\n }\n case 'ArrowDown':\n e.preventDefault();\n listNavigation.next();\n break;\n case 'ArrowUp':\n e.preventDefault();\n listNavigation.prev();\n break;\n case 'End':\n e.preventDefault();\n listNavigation.last();\n break;\n case 'Enter': {\n e.preventDefault();\n\n const focused = listNavigation.getActiveItem();\n\n if (focused) activateItem(focused);\n\n break;\n }\n case 'Escape':\n e.preventDefault();\n overlay.close({ reason: 'escape' });\n break;\n case 'Home':\n e.preventDefault();\n listNavigation.first();\n break;\n case 'Tab':\n overlay.close({ reason: 'programmatic' });\n break;\n }\n }\n\n // ── Lifecycle ─────────────────────────────────────────────────────────────\n onMount(() => {\n const triggerSlot = host.shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"trigger\"]');\n\n panelEl = host.shadowRoot?.querySelector<HTMLElement>('.menu-panel') ?? null;\n\n let prevTriggerEl: HTMLElement | null = null;\n\n function resolveTrigger() {\n if (prevTriggerEl) {\n prevTriggerEl.removeEventListener('click', toggleMenu);\n prevTriggerEl.removeEventListener('keydown', handleMenuKeydown);\n }\n\n const assigned = triggerSlot?.assignedElements({ flatten: true });\n\n triggerEl = (assigned?.[0] as HTMLElement | undefined) ?? null;\n prevTriggerEl = triggerEl;\n\n if (triggerEl) {\n aria(triggerEl, {\n controls: () => menuId,\n disabled: () => props.disabled.value,\n expanded: () => (isOpen.value ? 'true' : 'false'),\n haspopup: 'menu',\n });\n triggerEl.addEventListener('click', toggleMenu);\n triggerEl.addEventListener('keydown', handleMenuKeydown);\n }\n }\n\n function toggleMenu() {\n overlay.toggle();\n }\n\n onSlotChange('trigger', resolveTrigger);\n\n // Item activation via click\n handle(host, 'click', ((e: Event) => {\n if (!isOpen.value) return;\n\n const me = e as MouseEvent;\n const path = me.composedPath();\n const itemFromPath = path.find(\n (node): node is HTMLElement => node instanceof HTMLElement && node.tagName === 'BIT-MENU-ITEM',\n );\n const item = itemFromPath ?? (me.target as HTMLElement | null)?.closest<HTMLElement>('bit-menu-item') ?? null;\n\n if (!item || item.hasAttribute('disabled')) return;\n\n activateItem(item);\n }) as EventListener);\n\n const removeOutsideClick = overlay.bindOutsideClick(document);\n\n effect(() => {\n panelEl?.toggleAttribute('data-open', isOpen.value);\n });\n\n handle(panelEl, 'keydown', handleMenuKeydown as EventListener);\n\n return () => {\n removeOutsideClick();\n\n if (prevTriggerEl) {\n prevTriggerEl.removeEventListener('click', toggleMenu);\n prevTriggerEl.removeEventListener('keydown', handleMenuKeydown);\n }\n };\n });\n\n return html`\n <style>\n ${componentStyles}${themeStyles}\n </style>\n <slot name=\"trigger\"></slot>\n <div class=\"menu-panel\" id=\"${menuId}\" role=\"menu\" aria-orientation=\"vertical\">\n <slot></slot>\n </div>\n `;\n },\n tag: 'bit-menu',\n}) as unknown as AddEventListeners<BitMenuEvents>;\n"],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/states.css.cjs`);require(`./styles/index.cjs`),require(`./button.cjs`);const t=require(`./icons.cjs`);require(`./input.cjs`);const n=require(`./inputs/number-input/number-input.css?inline.cjs`);let r=require(`@vielzeug/craftit`);var i=(0,r.defineComponent)({formAssociated:!0,props:{color:{default:void 0},disabled:{default:!1},fullwidth:{default:!1},label:{default:void 0},"label-placement":{default:`inset`},"large-step":{default:void 0},max:{default:void 0},min:{default:void 0},name:{default:void 0},nullable:{default:!1},placeholder:{default:void 0},readonly:{default:!1},size:{default:void 0},step:{default:1},value:{default:void 0},variant:{default:void 0}},setup({emit:e,host:n,props:i}){let a=(0,r.signal)(i.value.value==null?``:String(i.value.value));(0,r.defineField)({disabled:(0,r.computed)(()=>!!i.disabled.value),value:(0,r.computed)(()=>a.value===``?null:a.value)},{onReset:()=>{a.value=i.value.value==null?``:String(i.value.value)}}),(0,r.watch)(i.value,e=>{let t=e==null?``:String(e);a.value!==t&&(a.value=t)});function o(e){let t=i.min.value,n=i.max.value;return t!=null&&e<Number(t)?Number(t):n!=null&&e>Number(n)?Number(n):e}function s(){let e=a.value.trim();if(!e)return null;let t=Number.parseFloat(e);return Number.isNaN(t)?null:t}function c(t,r){let i=t==null?null:o(t);a.value=i==null?``:String(i),i==null?n.removeAttribute(`value`):n.setAttribute(`value`,String(i)),e(`change`,{originalEvent:r,value:i})}function l(e,t){i.disabled.value||i.readonly.value||c((s()??(i.min.value==null?0:Number(i.min.value)))+e,t)}function u(e){if(i.disabled.value||i.readonly.value)return;let t=Number(i.step.value)||1,n=Number(i[`large-step`].value)||t*10;switch(e.key){case`ArrowDown`:e.preventDefault(),l(-t,e);break;case`ArrowUp`:e.preventDefault(),l(t,e);break;case`End`:i.max.value!=null&&(e.preventDefault(),c(Number(i.max.value),e));break;case`Home`:i.min.value!=null&&(e.preventDefault(),c(Number(i.min.value),e));break;case`PageDown`:e.preventDefault(),l(-n,e);break;case`PageUp`:e.preventDefault(),l(n,e);break}}let d=(0,r.computed)(()=>i.min.value!=null&&s()!=null&&s()<=Number(i.min.value)),f=(0,r.computed)(()=>i.max.value!=null&&s()!=null&&s()>=Number(i.max.value));return r.html`
2
+ <div
3
+ class="wrapper"
4
+ role="spinbutton"
5
+ part="control"
6
+ :aria-valuenow="${()=>s()??null}"
7
+ :aria-valuemin="${()=>i.min.value??null}"
8
+ :aria-valuemax="${()=>i.max.value??null}"
9
+ :aria-label="${()=>i.label.value||null}"
10
+ :aria-disabled="${()=>i.disabled.value?`true`:null}"
11
+ :aria-readonly="${()=>i.readonly.value?`true`:null}"
12
+ @keydown="${u}">
13
+ <bit-button
14
+ icon-only
15
+ type="button"
16
+ part="decrement-btn"
17
+ aria-label="Decrease"
18
+ variant="ghost"
19
+ :size="${()=>i.size.value||null}"
20
+ :color="${()=>i.color.value||null}"
21
+ ?disabled="${()=>i.disabled.value||i.readonly.value||d.value}"
22
+ @click="${e=>l(-(Number(i.step.value)||1),e)}"
23
+ >${t.minusIcon}</bit-button
24
+ >
25
+ <bit-input
26
+ part="input"
27
+ type="text"
28
+ inputmode="decimal"
29
+ aria-hidden="true"
30
+ :value="${()=>a.value}"
31
+ :label="${()=>i.label.value||null}"
32
+ :label-placement="${()=>i[`label-placement`].value}"
33
+ :placeholder="${()=>i.placeholder.value||null}"
34
+ :color="${()=>i.color.value||null}"
35
+ :size="${()=>i.size.value||null}"
36
+ :variant="${()=>i.variant.value||null}"
37
+ ?disabled="${()=>i.disabled.value}"
38
+ ?readonly="${()=>i.readonly.value}"
39
+ @input="${t=>{let n=t.detail?.value;typeof n==`string`&&(a.value=n,e(`input`,{originalEvent:t.detail?.originalEvent??t,value:s()}))}}"
40
+ @change="${e=>{let t=e.detail?.value;if(typeof t!=`string`)return;a.value=t;let n=e.detail?.originalEvent??e;c(s(),n)}}"></bit-input>
41
+ <bit-button
42
+ icon-only
43
+ type="button"
44
+ part="increment-btn"
45
+ aria-label="Increase"
46
+ variant="ghost"
47
+ :size="${()=>i.size.value||null}"
48
+ :color="${()=>i.color.value||null}"
49
+ ?disabled="${()=>i.disabled.value||i.readonly.value||f.value}"
50
+ @click="${e=>l(Number(i.step.value)||1,e)}"
51
+ >${t.plusIcon}</bit-button
52
+ >
53
+ </div>
54
+ `},styles:[e.disabledStateMixin(),n.default],tag:`bit-number-input`});exports.NUMBER_INPUT_TAG=i;
55
+ //# sourceMappingURL=number-input.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-input.cjs","names":[],"sources":["../src/inputs/number-input/number-input.ts"],"sourcesContent":["import { computed, defineComponent, defineField, html, signal, watch } from '@vielzeug/craftit';\n\nimport type { DisablableProps, SizableProps, ThemableProps, VisualVariant } from '../../types';\n\nimport { minusIcon, plusIcon } from '../../icons';\nimport { disabledStateMixin } from '../../styles';\n// Ensure child components are registered\nimport '../button/button';\nimport '../input/input';\nimport styles from './number-input.css?inline';\n\nexport type BitNumberInputEvents = {\n change: { originalEvent?: Event; value: number | null };\n input: { originalEvent?: Event; value: number | null };\n};\n\n/** Number Input props */\nexport type BitNumberInputProps = ThemableProps &\n SizableProps &\n DisablableProps & {\n /** Stretch to full width of container */\n fullwidth?: boolean;\n /** Visible label */\n label?: string;\n /** Label placement: 'inset' renders the label inside the control box, 'outside' renders it above */\n 'label-placement'?: 'inset' | 'outside';\n /** Large step (for Page Up/Down, default: 10 × step) */\n 'large-step'?: number;\n /** Maximum allowed value */\n max?: number;\n /** Minimum allowed value */\n min?: number;\n name?: string;\n /** Allow null/empty value */\n nullable?: boolean;\n /** Form field name */\n\n /** Placeholder text */\n placeholder?: string;\n /** Make the input read-only */\n readonly?: boolean;\n /** Step size for increment/decrement */\n step?: number;\n /** Current numeric value */\n value?: number;\n /** Visual variant */\n variant?: VisualVariant;\n };\n\n/**\n * A numeric spin-button input with +/− controls, min/max clamping, and full keyboard support.\n *\n * @element bit-number-input\n *\n * @attr {number} value - Current value\n * @attr {number} min - Minimum value\n * @attr {number} max - Maximum value\n * @attr {number} step - Increment/decrement step (default: 1)\n * @attr {number} large-step - Step for Page Up/Down (default: 10)\n * @attr {boolean} disabled - Disables the control\n * @attr {boolean} readonly - Read-only mode\n * @attr {string} label - Visible label\n * @attr {string} name - Form field name\n * @attr {string} color - Theme color\n * @attr {string} size - 'sm' | 'md' | 'lg'\n * @attr {string} placeholder - Input placeholder\n *\n * @fires change - On committed value change. detail: { value: number | null, originalEvent?: Event }\n * @fires input - On every keystroke. detail: { value: number | null, originalEvent?: Event }\n *\n * @cssprop --number-input-height - Control height\n * @cssprop --number-input-border-color - Border color\n * @cssprop --number-input-radius - Border radius\n * @cssprop --number-input-bg - Background\n * @cssprop --number-input-btn-bg - Spin button background\n *\n * @example\n * ```html\n * <bit-number-input label=\"Quantity\" value=\"1\" min=\"1\" max=\"99\" step=\"1\"></bit-number-input>\n * ```\n */\nexport const NUMBER_INPUT_TAG = defineComponent<BitNumberInputProps, BitNumberInputEvents>({\n formAssociated: true,\n props: {\n color: { default: undefined },\n disabled: { default: false },\n fullwidth: { default: false },\n label: { default: undefined },\n 'label-placement': { default: 'inset' },\n 'large-step': { default: undefined },\n max: { default: undefined },\n min: { default: undefined },\n name: { default: undefined },\n nullable: { default: false },\n placeholder: { default: undefined },\n readonly: { default: false },\n size: { default: undefined },\n step: { default: 1 },\n value: { default: undefined },\n variant: { default: undefined },\n },\n setup({ emit, host, props }) {\n const inputValue = signal<string>(props.value.value != null ? String(props.value.value) : '');\n\n defineField(\n {\n disabled: computed(() => Boolean(props.disabled.value)),\n value: computed(() => (inputValue.value !== '' ? inputValue.value : null)),\n },\n {\n onReset: () => {\n inputValue.value = props.value.value != null ? String(props.value.value) : '';\n },\n },\n );\n watch(props.value, (v) => {\n const newVal = v != null ? String(v) : '';\n\n if (inputValue.value !== newVal) inputValue.value = newVal;\n });\n function clamp(n: number): number {\n const min = props.min.value;\n const max = props.max.value;\n\n if (min != null && n < Number(min)) return Number(min);\n\n if (max != null && n > Number(max)) return Number(max);\n\n return n;\n }\n function parseValue(): number | null {\n const v = inputValue.value.trim();\n\n if (!v) return null;\n\n const n = Number.parseFloat(v);\n\n return Number.isNaN(n) ? null : n;\n }\n function commit(val: number | null, originalEvent?: Event) {\n const clamped = val != null ? clamp(val) : null;\n\n inputValue.value = clamped != null ? String(clamped) : '';\n\n if (clamped != null) host.setAttribute('value', String(clamped));\n else host.removeAttribute('value');\n\n emit('change', { originalEvent, value: clamped });\n }\n function increment(delta: number, originalEvent?: Event) {\n if (props.disabled.value || props.readonly.value) return;\n\n const current = parseValue() ?? (props.min.value != null ? Number(props.min.value) : 0);\n\n commit(current + delta, originalEvent);\n }\n function handleKeydown(e: KeyboardEvent) {\n if (props.disabled.value || props.readonly.value) return;\n\n const step = Number(props.step.value) || 1;\n const largeStep = Number(props['large-step'].value) || step * 10;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n increment(-step, e);\n break;\n case 'ArrowUp':\n e.preventDefault();\n increment(step, e);\n break;\n case 'End':\n if (props.max.value != null) {\n e.preventDefault();\n commit(Number(props.max.value), e);\n }\n\n break;\n case 'Home':\n if (props.min.value != null) {\n e.preventDefault();\n commit(Number(props.min.value), e);\n }\n\n break;\n case 'PageDown':\n e.preventDefault();\n increment(-largeStep, e);\n break;\n case 'PageUp':\n e.preventDefault();\n increment(largeStep, e);\n break;\n }\n }\n\n const atMin = computed(\n () => props.min.value != null && parseValue() != null && parseValue()! <= Number(props.min.value),\n );\n const atMax = computed(\n () => props.max.value != null && parseValue() != null && parseValue()! >= Number(props.max.value),\n );\n\n return html`\n <div\n class=\"wrapper\"\n role=\"spinbutton\"\n part=\"control\"\n :aria-valuenow=\"${() => parseValue() ?? null}\"\n :aria-valuemin=\"${() => props.min.value ?? null}\"\n :aria-valuemax=\"${() => props.max.value ?? null}\"\n :aria-label=\"${() => props.label.value || null}\"\n :aria-disabled=\"${() => (props.disabled.value ? 'true' : null)}\"\n :aria-readonly=\"${() => (props.readonly.value ? 'true' : null)}\"\n @keydown=\"${handleKeydown}\">\n <bit-button\n icon-only\n type=\"button\"\n part=\"decrement-btn\"\n aria-label=\"Decrease\"\n variant=\"ghost\"\n :size=\"${() => props.size.value || null}\"\n :color=\"${() => props.color.value || null}\"\n ?disabled=\"${() => props.disabled.value || props.readonly.value || atMin.value}\"\n @click=\"${(e: Event) => increment(-(Number(props.step.value) || 1), e)}\"\n >${minusIcon}</bit-button\n >\n <bit-input\n part=\"input\"\n type=\"text\"\n inputmode=\"decimal\"\n aria-hidden=\"true\"\n :value=\"${() => inputValue.value}\"\n :label=\"${() => props.label.value || null}\"\n :label-placement=\"${() => props['label-placement'].value}\"\n :placeholder=\"${() => props.placeholder.value || null}\"\n :color=\"${() => props.color.value || null}\"\n :size=\"${() => props.size.value || null}\"\n :variant=\"${() => props.variant.value || null}\"\n ?disabled=\"${() => props.disabled.value}\"\n ?readonly=\"${() => props.readonly.value}\"\n @input=\"${(e: Event) => {\n const v = (\n e as CustomEvent<{\n value?: string;\n }>\n ).detail?.value;\n\n if (typeof v !== 'string') return;\n\n inputValue.value = v;\n\n const originalEvent = (e as CustomEvent<{ originalEvent?: Event }>).detail?.originalEvent ?? e;\n\n emit('input', { originalEvent, value: parseValue() });\n }}\"\n @change=\"${(e: Event) => {\n const v = (\n e as CustomEvent<{\n value?: string;\n }>\n ).detail?.value;\n\n if (typeof v !== 'string') return;\n\n inputValue.value = v;\n\n const originalEvent = (e as CustomEvent<{ originalEvent?: Event }>).detail?.originalEvent ?? e;\n\n commit(parseValue(), originalEvent);\n }}\"></bit-input>\n <bit-button\n icon-only\n type=\"button\"\n part=\"increment-btn\"\n aria-label=\"Increase\"\n variant=\"ghost\"\n :size=\"${() => props.size.value || null}\"\n :color=\"${() => props.color.value || null}\"\n ?disabled=\"${() => props.disabled.value || props.readonly.value || atMax.value}\"\n @click=\"${(e: Event) => increment(Number(props.step.value) || 1, e)}\"\n >${plusIcon}</bit-button\n >\n </div>\n `;\n },\n styles: [disabledStateMixin(), styles],\n tag: 'bit-number-input',\n});\n"],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ import { disabledStateMixin as e } from "./styles/mixins/states.css.js";
2
+ import "./styles/index.js";
3
+ import "./button.js";
4
+ import { minusIcon as t, plusIcon as n } from "./icons.js";
5
+ import "./input.js";
6
+ import r from "./inputs/number-input/number-input.css?inline.js";
7
+ import { computed as i, defineComponent as a, defineField as o, html as s, signal as c, watch as l } from "@vielzeug/craftit";
8
+ //#region src/inputs/number-input/number-input.ts
9
+ var u = a({
10
+ formAssociated: !0,
11
+ props: {
12
+ color: { default: void 0 },
13
+ disabled: { default: !1 },
14
+ fullwidth: { default: !1 },
15
+ label: { default: void 0 },
16
+ "label-placement": { default: "inset" },
17
+ "large-step": { default: void 0 },
18
+ max: { default: void 0 },
19
+ min: { default: void 0 },
20
+ name: { default: void 0 },
21
+ nullable: { default: !1 },
22
+ placeholder: { default: void 0 },
23
+ readonly: { default: !1 },
24
+ size: { default: void 0 },
25
+ step: { default: 1 },
26
+ value: { default: void 0 },
27
+ variant: { default: void 0 }
28
+ },
29
+ setup({ emit: e, host: r, props: a }) {
30
+ let u = c(a.value.value == null ? "" : String(a.value.value));
31
+ o({
32
+ disabled: i(() => !!a.disabled.value),
33
+ value: i(() => u.value === "" ? null : u.value)
34
+ }, { onReset: () => {
35
+ u.value = a.value.value == null ? "" : String(a.value.value);
36
+ } }), l(a.value, (e) => {
37
+ let t = e == null ? "" : String(e);
38
+ u.value !== t && (u.value = t);
39
+ });
40
+ function d(e) {
41
+ let t = a.min.value, n = a.max.value;
42
+ return t != null && e < Number(t) ? Number(t) : n != null && e > Number(n) ? Number(n) : e;
43
+ }
44
+ function f() {
45
+ let e = u.value.trim();
46
+ if (!e) return null;
47
+ let t = Number.parseFloat(e);
48
+ return Number.isNaN(t) ? null : t;
49
+ }
50
+ function p(t, n) {
51
+ let i = t == null ? null : d(t);
52
+ u.value = i == null ? "" : String(i), i == null ? r.removeAttribute("value") : r.setAttribute("value", String(i)), e("change", {
53
+ originalEvent: n,
54
+ value: i
55
+ });
56
+ }
57
+ function m(e, t) {
58
+ a.disabled.value || a.readonly.value || p((f() ?? (a.min.value == null ? 0 : Number(a.min.value))) + e, t);
59
+ }
60
+ function h(e) {
61
+ if (a.disabled.value || a.readonly.value) return;
62
+ let t = Number(a.step.value) || 1, n = Number(a["large-step"].value) || t * 10;
63
+ switch (e.key) {
64
+ case "ArrowDown":
65
+ e.preventDefault(), m(-t, e);
66
+ break;
67
+ case "ArrowUp":
68
+ e.preventDefault(), m(t, e);
69
+ break;
70
+ case "End":
71
+ a.max.value != null && (e.preventDefault(), p(Number(a.max.value), e));
72
+ break;
73
+ case "Home":
74
+ a.min.value != null && (e.preventDefault(), p(Number(a.min.value), e));
75
+ break;
76
+ case "PageDown":
77
+ e.preventDefault(), m(-n, e);
78
+ break;
79
+ case "PageUp":
80
+ e.preventDefault(), m(n, e);
81
+ break;
82
+ }
83
+ }
84
+ let g = i(() => a.min.value != null && f() != null && f() <= Number(a.min.value)), _ = i(() => a.max.value != null && f() != null && f() >= Number(a.max.value));
85
+ return s`
86
+ <div
87
+ class="wrapper"
88
+ role="spinbutton"
89
+ part="control"
90
+ :aria-valuenow="${() => f() ?? null}"
91
+ :aria-valuemin="${() => a.min.value ?? null}"
92
+ :aria-valuemax="${() => a.max.value ?? null}"
93
+ :aria-label="${() => a.label.value || null}"
94
+ :aria-disabled="${() => a.disabled.value ? "true" : null}"
95
+ :aria-readonly="${() => a.readonly.value ? "true" : null}"
96
+ @keydown="${h}">
97
+ <bit-button
98
+ icon-only
99
+ type="button"
100
+ part="decrement-btn"
101
+ aria-label="Decrease"
102
+ variant="ghost"
103
+ :size="${() => a.size.value || null}"
104
+ :color="${() => a.color.value || null}"
105
+ ?disabled="${() => a.disabled.value || a.readonly.value || g.value}"
106
+ @click="${(e) => m(-(Number(a.step.value) || 1), e)}"
107
+ >${t}</bit-button
108
+ >
109
+ <bit-input
110
+ part="input"
111
+ type="text"
112
+ inputmode="decimal"
113
+ aria-hidden="true"
114
+ :value="${() => u.value}"
115
+ :label="${() => a.label.value || null}"
116
+ :label-placement="${() => a["label-placement"].value}"
117
+ :placeholder="${() => a.placeholder.value || null}"
118
+ :color="${() => a.color.value || null}"
119
+ :size="${() => a.size.value || null}"
120
+ :variant="${() => a.variant.value || null}"
121
+ ?disabled="${() => a.disabled.value}"
122
+ ?readonly="${() => a.readonly.value}"
123
+ @input="${(t) => {
124
+ let n = t.detail?.value;
125
+ typeof n == "string" && (u.value = n, e("input", {
126
+ originalEvent: t.detail?.originalEvent ?? t,
127
+ value: f()
128
+ }));
129
+ }}"
130
+ @change="${(e) => {
131
+ let t = e.detail?.value;
132
+ if (typeof t != "string") return;
133
+ u.value = t;
134
+ let n = e.detail?.originalEvent ?? e;
135
+ p(f(), n);
136
+ }}"></bit-input>
137
+ <bit-button
138
+ icon-only
139
+ type="button"
140
+ part="increment-btn"
141
+ aria-label="Increase"
142
+ variant="ghost"
143
+ :size="${() => a.size.value || null}"
144
+ :color="${() => a.color.value || null}"
145
+ ?disabled="${() => a.disabled.value || a.readonly.value || _.value}"
146
+ @click="${(e) => m(Number(a.step.value) || 1, e)}"
147
+ >${n}</bit-button
148
+ >
149
+ </div>
150
+ `;
151
+ },
152
+ styles: [e(), r],
153
+ tag: "bit-number-input"
154
+ });
155
+ //#endregion
156
+ export { u as NUMBER_INPUT_TAG };
157
+
158
+ //# sourceMappingURL=number-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"number-input.js","names":[],"sources":["../src/inputs/number-input/number-input.ts"],"sourcesContent":["import { computed, defineComponent, defineField, html, signal, watch } from '@vielzeug/craftit';\n\nimport type { DisablableProps, SizableProps, ThemableProps, VisualVariant } from '../../types';\n\nimport { minusIcon, plusIcon } from '../../icons';\nimport { disabledStateMixin } from '../../styles';\n// Ensure child components are registered\nimport '../button/button';\nimport '../input/input';\nimport styles from './number-input.css?inline';\n\nexport type BitNumberInputEvents = {\n change: { originalEvent?: Event; value: number | null };\n input: { originalEvent?: Event; value: number | null };\n};\n\n/** Number Input props */\nexport type BitNumberInputProps = ThemableProps &\n SizableProps &\n DisablableProps & {\n /** Stretch to full width of container */\n fullwidth?: boolean;\n /** Visible label */\n label?: string;\n /** Label placement: 'inset' renders the label inside the control box, 'outside' renders it above */\n 'label-placement'?: 'inset' | 'outside';\n /** Large step (for Page Up/Down, default: 10 × step) */\n 'large-step'?: number;\n /** Maximum allowed value */\n max?: number;\n /** Minimum allowed value */\n min?: number;\n name?: string;\n /** Allow null/empty value */\n nullable?: boolean;\n /** Form field name */\n\n /** Placeholder text */\n placeholder?: string;\n /** Make the input read-only */\n readonly?: boolean;\n /** Step size for increment/decrement */\n step?: number;\n /** Current numeric value */\n value?: number;\n /** Visual variant */\n variant?: VisualVariant;\n };\n\n/**\n * A numeric spin-button input with +/− controls, min/max clamping, and full keyboard support.\n *\n * @element bit-number-input\n *\n * @attr {number} value - Current value\n * @attr {number} min - Minimum value\n * @attr {number} max - Maximum value\n * @attr {number} step - Increment/decrement step (default: 1)\n * @attr {number} large-step - Step for Page Up/Down (default: 10)\n * @attr {boolean} disabled - Disables the control\n * @attr {boolean} readonly - Read-only mode\n * @attr {string} label - Visible label\n * @attr {string} name - Form field name\n * @attr {string} color - Theme color\n * @attr {string} size - 'sm' | 'md' | 'lg'\n * @attr {string} placeholder - Input placeholder\n *\n * @fires change - On committed value change. detail: { value: number | null, originalEvent?: Event }\n * @fires input - On every keystroke. detail: { value: number | null, originalEvent?: Event }\n *\n * @cssprop --number-input-height - Control height\n * @cssprop --number-input-border-color - Border color\n * @cssprop --number-input-radius - Border radius\n * @cssprop --number-input-bg - Background\n * @cssprop --number-input-btn-bg - Spin button background\n *\n * @example\n * ```html\n * <bit-number-input label=\"Quantity\" value=\"1\" min=\"1\" max=\"99\" step=\"1\"></bit-number-input>\n * ```\n */\nexport const NUMBER_INPUT_TAG = defineComponent<BitNumberInputProps, BitNumberInputEvents>({\n formAssociated: true,\n props: {\n color: { default: undefined },\n disabled: { default: false },\n fullwidth: { default: false },\n label: { default: undefined },\n 'label-placement': { default: 'inset' },\n 'large-step': { default: undefined },\n max: { default: undefined },\n min: { default: undefined },\n name: { default: undefined },\n nullable: { default: false },\n placeholder: { default: undefined },\n readonly: { default: false },\n size: { default: undefined },\n step: { default: 1 },\n value: { default: undefined },\n variant: { default: undefined },\n },\n setup({ emit, host, props }) {\n const inputValue = signal<string>(props.value.value != null ? String(props.value.value) : '');\n\n defineField(\n {\n disabled: computed(() => Boolean(props.disabled.value)),\n value: computed(() => (inputValue.value !== '' ? inputValue.value : null)),\n },\n {\n onReset: () => {\n inputValue.value = props.value.value != null ? String(props.value.value) : '';\n },\n },\n );\n watch(props.value, (v) => {\n const newVal = v != null ? String(v) : '';\n\n if (inputValue.value !== newVal) inputValue.value = newVal;\n });\n function clamp(n: number): number {\n const min = props.min.value;\n const max = props.max.value;\n\n if (min != null && n < Number(min)) return Number(min);\n\n if (max != null && n > Number(max)) return Number(max);\n\n return n;\n }\n function parseValue(): number | null {\n const v = inputValue.value.trim();\n\n if (!v) return null;\n\n const n = Number.parseFloat(v);\n\n return Number.isNaN(n) ? null : n;\n }\n function commit(val: number | null, originalEvent?: Event) {\n const clamped = val != null ? clamp(val) : null;\n\n inputValue.value = clamped != null ? String(clamped) : '';\n\n if (clamped != null) host.setAttribute('value', String(clamped));\n else host.removeAttribute('value');\n\n emit('change', { originalEvent, value: clamped });\n }\n function increment(delta: number, originalEvent?: Event) {\n if (props.disabled.value || props.readonly.value) return;\n\n const current = parseValue() ?? (props.min.value != null ? Number(props.min.value) : 0);\n\n commit(current + delta, originalEvent);\n }\n function handleKeydown(e: KeyboardEvent) {\n if (props.disabled.value || props.readonly.value) return;\n\n const step = Number(props.step.value) || 1;\n const largeStep = Number(props['large-step'].value) || step * 10;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n increment(-step, e);\n break;\n case 'ArrowUp':\n e.preventDefault();\n increment(step, e);\n break;\n case 'End':\n if (props.max.value != null) {\n e.preventDefault();\n commit(Number(props.max.value), e);\n }\n\n break;\n case 'Home':\n if (props.min.value != null) {\n e.preventDefault();\n commit(Number(props.min.value), e);\n }\n\n break;\n case 'PageDown':\n e.preventDefault();\n increment(-largeStep, e);\n break;\n case 'PageUp':\n e.preventDefault();\n increment(largeStep, e);\n break;\n }\n }\n\n const atMin = computed(\n () => props.min.value != null && parseValue() != null && parseValue()! <= Number(props.min.value),\n );\n const atMax = computed(\n () => props.max.value != null && parseValue() != null && parseValue()! >= Number(props.max.value),\n );\n\n return html`\n <div\n class=\"wrapper\"\n role=\"spinbutton\"\n part=\"control\"\n :aria-valuenow=\"${() => parseValue() ?? null}\"\n :aria-valuemin=\"${() => props.min.value ?? null}\"\n :aria-valuemax=\"${() => props.max.value ?? null}\"\n :aria-label=\"${() => props.label.value || null}\"\n :aria-disabled=\"${() => (props.disabled.value ? 'true' : null)}\"\n :aria-readonly=\"${() => (props.readonly.value ? 'true' : null)}\"\n @keydown=\"${handleKeydown}\">\n <bit-button\n icon-only\n type=\"button\"\n part=\"decrement-btn\"\n aria-label=\"Decrease\"\n variant=\"ghost\"\n :size=\"${() => props.size.value || null}\"\n :color=\"${() => props.color.value || null}\"\n ?disabled=\"${() => props.disabled.value || props.readonly.value || atMin.value}\"\n @click=\"${(e: Event) => increment(-(Number(props.step.value) || 1), e)}\"\n >${minusIcon}</bit-button\n >\n <bit-input\n part=\"input\"\n type=\"text\"\n inputmode=\"decimal\"\n aria-hidden=\"true\"\n :value=\"${() => inputValue.value}\"\n :label=\"${() => props.label.value || null}\"\n :label-placement=\"${() => props['label-placement'].value}\"\n :placeholder=\"${() => props.placeholder.value || null}\"\n :color=\"${() => props.color.value || null}\"\n :size=\"${() => props.size.value || null}\"\n :variant=\"${() => props.variant.value || null}\"\n ?disabled=\"${() => props.disabled.value}\"\n ?readonly=\"${() => props.readonly.value}\"\n @input=\"${(e: Event) => {\n const v = (\n e as CustomEvent<{\n value?: string;\n }>\n ).detail?.value;\n\n if (typeof v !== 'string') return;\n\n inputValue.value = v;\n\n const originalEvent = (e as CustomEvent<{ originalEvent?: Event }>).detail?.originalEvent ?? e;\n\n emit('input', { originalEvent, value: parseValue() });\n }}\"\n @change=\"${(e: Event) => {\n const v = (\n e as CustomEvent<{\n value?: string;\n }>\n ).detail?.value;\n\n if (typeof v !== 'string') return;\n\n inputValue.value = v;\n\n const originalEvent = (e as CustomEvent<{ originalEvent?: Event }>).detail?.originalEvent ?? e;\n\n commit(parseValue(), originalEvent);\n }}\"></bit-input>\n <bit-button\n icon-only\n type=\"button\"\n part=\"increment-btn\"\n aria-label=\"Increase\"\n variant=\"ghost\"\n :size=\"${() => props.size.value || null}\"\n :color=\"${() => props.color.value || null}\"\n ?disabled=\"${() => props.disabled.value || props.readonly.value || atMax.value}\"\n @click=\"${(e: Event) => increment(Number(props.step.value) || 1, e)}\"\n >${plusIcon}</bit-button\n >\n </div>\n `;\n },\n styles: [disabledStateMixin(), styles],\n tag: 'bit-number-input',\n});\n"],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/shape.css.cjs`),t=require(`./styles/mixins/theme.css.cjs`);require(`./styles/index.cjs`);const n=require(`./inputs/otp-input/otp-input.css?inline.cjs`);let r=require(`@vielzeug/craftit`);var i=(0,r.defineComponent)({props:{color:(0,r.typed)(void 0),disabled:(0,r.typed)(!1),label:(0,r.typed)(`One-time password`),length:(0,r.typed)(6),masked:(0,r.typed)(!1),name:(0,r.typed)(void 0),separator:(0,r.typed)(void 0),size:(0,r.typed)(void 0),type:(0,r.typed)(`numeric`),value:(0,r.typed)(``),variant:(0,r.typed)(void 0)},setup({emit:e,host:t,props:n}){let i=(0,r.computed)(()=>Array.from({length:Number(n.length.value)||6},(e,t)=>t));function a(){return[...t.shadowRoot?.querySelectorAll(`input.cell`)??[]]}function o(){return a().map(e=>e.value).join(``)}function s(e){return n.type.value===`numeric`?/^\d$/.test(e):/^[a-z\d]$/i.test(e)}function c(n,r){let i=n.target,c=i.value;if(c.length>1&&(c=c.slice(-1)),c&&!s(c)){i.value=``;return}i.value=c;let l=a(),u=o(),d=u.length===l.length&&u.split(``).every(Boolean);t.setAttribute(`value`,u),e(`change`,{complete:d,originalEvent:n,value:u}),d&&e(`complete`,{originalEvent:n,value:u}),c&&r<l.length-1&&(l[r+1].focus(),l[r+1].select())}function l(n,r){let i=n.target,s=a();if(n.key===`Backspace`){i.value?i.value=``:r>0&&(s[r-1].focus(),s[r-1].select(),s[r-1].value=``);let a=o();t.setAttribute(`value`,a),e(`change`,{complete:!1,originalEvent:n,value:a}),n.preventDefault()}else n.key===`ArrowLeft`&&r>0?(s[r-1].focus(),n.preventDefault()):n.key===`ArrowRight`&&r<s.length-1?(s[r+1].focus(),n.preventDefault()):n.key===`Home`?(s[0].focus(),n.preventDefault()):n.key===`End`&&(s[s.length-1].focus(),n.preventDefault())}function u(r){r.preventDefault();let i=(r.clipboardData?.getData(`text`)??``).split(``).filter(e=>s(e)).slice(0,Number(n.length.value)||6),c=a();i.forEach((e,t)=>{c[t]&&(c[t].value=e)});let l=o(),u=l.length===c.length&&l.split(``).every(Boolean);t.setAttribute(`value`,l),e(`change`,{complete:u,originalEvent:r,value:l}),u&&e(`complete`,{originalEvent:r,value:l}),c[Math.min(i.length,c.length-1)]?.focus()}(0,r.onMount)(()=>{let e=String(n.value.value||``),t=a();e.split(``).forEach((e,n)=>{t[n]&&(t[n].value=e)})});let d=(0,r.computed)(()=>{let e=Number(n.length.value)||6;return n.separator.value==null?-1:Math.floor(e/2)});return r.html`
2
+ <div class="otp-group" part="group" role="group" :aria-label="${()=>n.label.value}">
3
+ ${()=>i.value.map(e=>r.html`
4
+ ${()=>d.value>0&&e===d.value?r.html`<span class="separator" aria-hidden="true">${()=>n.separator.value||`-`}</span>`:``}
5
+ <input
6
+ class="cell"
7
+ part="cell"
8
+ :type="${()=>n.masked.value?`password`:`text`}"
9
+ :inputmode="${()=>n.type.value===`numeric`?`numeric`:`text`}"
10
+ maxlength="1"
11
+ :autocomplete="${()=>e===0?`one-time-code`:`off`}"
12
+ :aria-label="${()=>`Digit ${e+1} of ${n.length.value}`}"
13
+ :disabled="${()=>n.disabled.value||null}"
14
+ :name="${()=>n.name.value?`${n.name.value}[${e}]`:null}"
15
+ @input="${t=>c(t,e)}"
16
+ @keydown="${t=>l(t,e)}"
17
+ @paste="${t=>e===0?u(t):t.preventDefault()}"
18
+ @focus="${e=>e.target.select()}" />
19
+ `)}
20
+ </div>
21
+ `},styles:[t.colorThemeMixin,e.sizeVariantMixin({}),t.forcedColorsFocusMixin(`.cell`),n.default],tag:`bit-otp-input`});exports.OTP_INPUT_TAG=i;
22
+ //# sourceMappingURL=otp-input.cjs.map