@vielzeug/buildit 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (792) hide show
  1. package/README.md +124 -0
  2. package/dist/accordion-item.cjs +32 -0
  3. package/dist/accordion-item.cjs.map +1 -0
  4. package/dist/accordion-item.js +72 -0
  5. package/dist/accordion-item.js.map +1 -0
  6. package/dist/accordion.cjs +2 -0
  7. package/dist/accordion.cjs.map +1 -0
  8. package/dist/accordion.js +37 -0
  9. package/dist/accordion.js.map +1 -0
  10. package/dist/alert.cjs +31 -0
  11. package/dist/alert.cjs.map +1 -0
  12. package/dist/alert.js +85 -0
  13. package/dist/alert.js.map +1 -0
  14. package/dist/avatar.cjs +37 -0
  15. package/dist/avatar.cjs.map +1 -0
  16. package/dist/avatar.js +123 -0
  17. package/dist/avatar.js.map +1 -0
  18. package/dist/badge.cjs +7 -0
  19. package/dist/badge.cjs.map +1 -0
  20. package/dist/badge.js +60 -0
  21. package/dist/badge.js.map +1 -0
  22. package/dist/box.cjs +2 -0
  23. package/dist/box.cjs.map +1 -0
  24. package/dist/box.js +22 -0
  25. package/dist/box.js.map +1 -0
  26. package/dist/breadcrumb.cjs +21 -0
  27. package/dist/breadcrumb.cjs.map +1 -0
  28. package/dist/breadcrumb.js +58 -0
  29. package/dist/breadcrumb.js.map +1 -0
  30. package/dist/buildit.cjs +1892 -0
  31. package/dist/buildit.cjs.map +1 -0
  32. package/dist/buildit.js +1892 -0
  33. package/dist/buildit.js.map +1 -0
  34. package/dist/button-group.cjs +6 -0
  35. package/dist/button-group.cjs.map +1 -0
  36. package/dist/button-group.js +31 -0
  37. package/dist/button-group.js.map +1 -0
  38. package/dist/button.cjs +30 -0
  39. package/dist/button.cjs.map +1 -0
  40. package/dist/button.js +115 -0
  41. package/dist/button.js.map +1 -0
  42. package/dist/card.cjs +23 -0
  43. package/dist/card.cjs.map +1 -0
  44. package/dist/card.js +99 -0
  45. package/dist/card.js.map +1 -0
  46. package/dist/checkbox-group.cjs +20 -0
  47. package/dist/checkbox-group.cjs.map +1 -0
  48. package/dist/checkbox-group.js +88 -0
  49. package/dist/checkbox-group.js.map +1 -0
  50. package/dist/checkbox.cjs +37 -0
  51. package/dist/checkbox.cjs.map +1 -0
  52. package/dist/checkbox.js +115 -0
  53. package/dist/checkbox.js.map +1 -0
  54. package/dist/chip.cjs +56 -0
  55. package/dist/chip.cjs.map +1 -0
  56. package/dist/chip.js +140 -0
  57. package/dist/chip.js.map +1 -0
  58. package/dist/combobox.cjs +93 -0
  59. package/dist/combobox.cjs.map +1 -0
  60. package/dist/combobox.js +401 -0
  61. package/dist/combobox.js.map +1 -0
  62. package/dist/content/avatar/avatar-group.css?inline.cjs +2 -0
  63. package/dist/content/avatar/avatar-group.css?inline.cjs.map +1 -0
  64. package/dist/content/avatar/avatar-group.css?inline.js +6 -0
  65. package/dist/content/avatar/avatar-group.css?inline.js.map +1 -0
  66. package/dist/content/avatar/avatar.css?inline.cjs +2 -0
  67. package/dist/content/avatar/avatar.css?inline.cjs.map +1 -0
  68. package/dist/content/avatar/avatar.css?inline.js +6 -0
  69. package/dist/content/avatar/avatar.css?inline.js.map +1 -0
  70. package/dist/content/avatar/avatar.d.ts +78 -0
  71. package/dist/content/avatar/avatar.d.ts.map +1 -0
  72. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs +2 -0
  73. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +1 -0
  74. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js +6 -0
  75. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +1 -0
  76. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs +2 -0
  77. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +1 -0
  78. package/dist/content/breadcrumb/breadcrumb.css?inline.js +6 -0
  79. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +1 -0
  80. package/dist/content/breadcrumb/breadcrumb.d.ts +36 -0
  81. package/dist/content/breadcrumb/breadcrumb.d.ts.map +1 -0
  82. package/dist/content/card/card.css?inline.cjs +2 -0
  83. package/dist/content/card/card.css?inline.cjs.map +1 -0
  84. package/dist/content/card/card.css?inline.js +6 -0
  85. package/dist/content/card/card.css?inline.js.map +1 -0
  86. package/dist/content/card/card.d.ts +66 -0
  87. package/dist/content/card/card.d.ts.map +1 -0
  88. package/dist/content/index.cjs +1 -0
  89. package/dist/content/index.d.ts +15 -0
  90. package/dist/content/index.d.ts.map +1 -0
  91. package/dist/content/index.js +7 -0
  92. package/dist/content/pagination/pagination.css?inline.cjs +2 -0
  93. package/dist/content/pagination/pagination.css?inline.cjs.map +1 -0
  94. package/dist/content/pagination/pagination.css?inline.js +6 -0
  95. package/dist/content/pagination/pagination.css?inline.js.map +1 -0
  96. package/dist/content/pagination/pagination.d.ts +56 -0
  97. package/dist/content/pagination/pagination.d.ts.map +1 -0
  98. package/dist/content/separator/separator.css?inline.cjs +2 -0
  99. package/dist/content/separator/separator.css?inline.cjs.map +1 -0
  100. package/dist/content/separator/separator.css?inline.js +6 -0
  101. package/dist/content/separator/separator.css?inline.js.map +1 -0
  102. package/dist/content/separator/separator.d.ts +35 -0
  103. package/dist/content/separator/separator.d.ts.map +1 -0
  104. package/dist/content/table/table.css?inline.cjs +2 -0
  105. package/dist/content/table/table.css?inline.cjs.map +1 -0
  106. package/dist/content/table/table.css?inline.js +6 -0
  107. package/dist/content/table/table.css?inline.js.map +1 -0
  108. package/dist/content/table/table.d.ts +69 -0
  109. package/dist/content/table/table.d.ts.map +1 -0
  110. package/dist/content/text/text.css?inline.cjs +2 -0
  111. package/dist/content/text/text.css?inline.cjs.map +1 -0
  112. package/dist/content/text/text.css?inline.js +6 -0
  113. package/dist/content/text/text.css?inline.js.map +1 -0
  114. package/dist/content/text/text.d.ts +55 -0
  115. package/dist/content/text/text.d.ts.map +1 -0
  116. package/dist/craftit/dist/core/internal.cjs +2 -0
  117. package/dist/craftit/dist/core/internal.cjs.map +1 -0
  118. package/dist/craftit/dist/core/internal.js +25 -0
  119. package/dist/craftit/dist/core/internal.js.map +1 -0
  120. package/dist/craftit/dist/core/runtime-bindings.cjs +2 -0
  121. package/dist/craftit/dist/core/runtime-bindings.cjs.map +1 -0
  122. package/dist/craftit/dist/core/runtime-bindings.js +38 -0
  123. package/dist/craftit/dist/core/runtime-bindings.js.map +1 -0
  124. package/dist/craftit/dist/core/runtime-lifecycle.cjs +2 -0
  125. package/dist/craftit/dist/core/runtime-lifecycle.cjs.map +1 -0
  126. package/dist/craftit/dist/core/runtime-lifecycle.js +68 -0
  127. package/dist/craftit/dist/core/runtime-lifecycle.js.map +1 -0
  128. package/dist/craftit/dist/core/runtime.cjs +1 -0
  129. package/dist/craftit/dist/core/runtime.js +2 -0
  130. package/dist/craftit/dist/core/utilities.cjs +2 -0
  131. package/dist/craftit/dist/core/utilities.cjs.map +1 -0
  132. package/dist/craftit/dist/core/utilities.js +12 -0
  133. package/dist/craftit/dist/core/utilities.js.map +1 -0
  134. package/dist/craftit/dist/directives/attr.cjs +2 -0
  135. package/dist/craftit/dist/directives/attr.cjs.map +1 -0
  136. package/dist/craftit/dist/directives/attr.js +13 -0
  137. package/dist/craftit/dist/directives/attr.js.map +1 -0
  138. package/dist/craftit/dist/directives/bind.cjs +1 -0
  139. package/dist/craftit/dist/directives/bind.js +3 -0
  140. package/dist/craftit/dist/directives/choose.cjs +1 -0
  141. package/dist/craftit/dist/directives/choose.js +1 -0
  142. package/dist/craftit/dist/directives/classes.cjs +2 -0
  143. package/dist/craftit/dist/directives/classes.cjs.map +1 -0
  144. package/dist/craftit/dist/directives/classes.js +12 -0
  145. package/dist/craftit/dist/directives/classes.js.map +1 -0
  146. package/dist/craftit/dist/directives/each.cjs +2 -0
  147. package/dist/craftit/dist/directives/each.cjs.map +1 -0
  148. package/dist/craftit/dist/directives/each.js +96 -0
  149. package/dist/craftit/dist/directives/each.js.map +1 -0
  150. package/dist/craftit/dist/directives/index.cjs +1 -0
  151. package/dist/craftit/dist/directives/index.js +12 -0
  152. package/dist/craftit/dist/directives/match.cjs +1 -0
  153. package/dist/craftit/dist/directives/match.js +1 -0
  154. package/dist/craftit/dist/directives/memo.cjs +1 -0
  155. package/dist/craftit/dist/directives/memo.js +1 -0
  156. package/dist/craftit/dist/directives/raw.cjs +1 -0
  157. package/dist/craftit/dist/directives/raw.js +2 -0
  158. package/dist/craftit/dist/directives/spread.cjs +2 -0
  159. package/dist/craftit/dist/directives/spread.cjs.map +1 -0
  160. package/dist/craftit/dist/directives/spread.js +30 -0
  161. package/dist/craftit/dist/directives/spread.js.map +1 -0
  162. package/dist/craftit/dist/directives/style.cjs +1 -0
  163. package/dist/craftit/dist/directives/style.js +1 -0
  164. package/dist/craftit/dist/directives/until.cjs +1 -0
  165. package/dist/craftit/dist/directives/until.js +1 -0
  166. package/dist/craftit/dist/directives/when.cjs +2 -0
  167. package/dist/craftit/dist/directives/when.cjs.map +1 -0
  168. package/dist/craftit/dist/directives/when.js +14 -0
  169. package/dist/craftit/dist/directives/when.js.map +1 -0
  170. package/dist/craftit/dist/labs/a11y.cjs +2 -0
  171. package/dist/craftit/dist/labs/a11y.cjs.map +1 -0
  172. package/dist/craftit/dist/labs/a11y.js +38 -0
  173. package/dist/craftit/dist/labs/a11y.js.map +1 -0
  174. package/dist/craftit/dist/labs/list.cjs +2 -0
  175. package/dist/craftit/dist/labs/list.cjs.map +1 -0
  176. package/dist/craftit/dist/labs/list.js +87 -0
  177. package/dist/craftit/dist/labs/list.js.map +1 -0
  178. package/dist/craftit/dist/labs/observers.cjs +2 -0
  179. package/dist/craftit/dist/labs/observers.cjs.map +1 -0
  180. package/dist/craftit/dist/labs/observers.js +28 -0
  181. package/dist/craftit/dist/labs/observers.js.map +1 -0
  182. package/dist/craftit/dist/labs/overlay.cjs +2 -0
  183. package/dist/craftit/dist/labs/overlay.cjs.map +1 -0
  184. package/dist/craftit/dist/labs/overlay.js +49 -0
  185. package/dist/craftit/dist/labs/overlay.js.map +1 -0
  186. package/dist/craftit/dist/labs/selectable.cjs +2 -0
  187. package/dist/craftit/dist/labs/selectable.cjs.map +1 -0
  188. package/dist/craftit/dist/labs/selectable.js +29 -0
  189. package/dist/craftit/dist/labs/selectable.js.map +1 -0
  190. package/dist/craftit/dist/labs/selection.cjs +2 -0
  191. package/dist/craftit/dist/labs/selection.cjs.map +1 -0
  192. package/dist/craftit/dist/labs/selection.js +42 -0
  193. package/dist/craftit/dist/labs/selection.js.map +1 -0
  194. package/dist/craftit/dist/labs.cjs +1 -0
  195. package/dist/craftit/dist/labs.js +6 -0
  196. package/dist/custom-elements.json +2321 -0
  197. package/dist/dialog.cjs +33 -0
  198. package/dist/dialog.cjs.map +1 -0
  199. package/dist/dialog.js +94 -0
  200. package/dist/dialog.js.map +1 -0
  201. package/dist/disclosure/accordion/accordion.css?inline.cjs +2 -0
  202. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +1 -0
  203. package/dist/disclosure/accordion/accordion.css?inline.js +6 -0
  204. package/dist/disclosure/accordion/accordion.css?inline.js.map +1 -0
  205. package/dist/disclosure/accordion/accordion.d.ts +47 -0
  206. package/dist/disclosure/accordion/accordion.d.ts.map +1 -0
  207. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs +2 -0
  208. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +1 -0
  209. package/dist/disclosure/accordion-item/accordion-item.css?inline.js +6 -0
  210. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +1 -0
  211. package/dist/disclosure/accordion-item/accordion-item.d.ts +62 -0
  212. package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -0
  213. package/dist/disclosure/index.cjs +1 -0
  214. package/dist/disclosure/index.d.ts +11 -0
  215. package/dist/disclosure/index.d.ts.map +1 -0
  216. package/dist/disclosure/index.js +5 -0
  217. package/dist/disclosure/tab-item/tab-item.css?inline.cjs +2 -0
  218. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +1 -0
  219. package/dist/disclosure/tab-item/tab-item.css?inline.js +6 -0
  220. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +1 -0
  221. package/dist/disclosure/tab-item/tab-item.d.ts +39 -0
  222. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -0
  223. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs +2 -0
  224. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +1 -0
  225. package/dist/disclosure/tab-panel/tab-panel.css?inline.js +6 -0
  226. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +1 -0
  227. package/dist/disclosure/tab-panel/tab-panel.d.ts +30 -0
  228. package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -0
  229. package/dist/disclosure/tabs/tabs.css?inline.cjs +2 -0
  230. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +1 -0
  231. package/dist/disclosure/tabs/tabs.css?inline.js +6 -0
  232. package/dist/disclosure/tabs/tabs.css?inline.js.map +1 -0
  233. package/dist/disclosure/tabs/tabs.d.ts +64 -0
  234. package/dist/disclosure/tabs/tabs.d.ts.map +1 -0
  235. package/dist/drawer.cjs +31 -0
  236. package/dist/drawer.cjs.map +1 -0
  237. package/dist/drawer.js +98 -0
  238. package/dist/drawer.js.map +1 -0
  239. package/dist/feedback/alert/alert.css?inline.cjs +2 -0
  240. package/dist/feedback/alert/alert.css?inline.cjs.map +1 -0
  241. package/dist/feedback/alert/alert.css?inline.js +6 -0
  242. package/dist/feedback/alert/alert.css?inline.js.map +1 -0
  243. package/dist/feedback/alert/alert.d.ts +63 -0
  244. package/dist/feedback/alert/alert.d.ts.map +1 -0
  245. package/dist/feedback/badge/badge.css?inline.cjs +2 -0
  246. package/dist/feedback/badge/badge.css?inline.cjs.map +1 -0
  247. package/dist/feedback/badge/badge.css?inline.js +6 -0
  248. package/dist/feedback/badge/badge.css?inline.js.map +1 -0
  249. package/dist/feedback/badge/badge.d.ts +67 -0
  250. package/dist/feedback/badge/badge.d.ts.map +1 -0
  251. package/dist/feedback/chip/chip.css?inline.cjs +2 -0
  252. package/dist/feedback/chip/chip.css?inline.cjs.map +1 -0
  253. package/dist/feedback/chip/chip.css?inline.js +6 -0
  254. package/dist/feedback/chip/chip.css?inline.js.map +1 -0
  255. package/dist/feedback/chip/chip.d.ts +124 -0
  256. package/dist/feedback/chip/chip.d.ts.map +1 -0
  257. package/dist/feedback/index.cjs +1 -0
  258. package/dist/feedback/index.d.ts +13 -0
  259. package/dist/feedback/index.d.ts.map +1 -0
  260. package/dist/feedback/index.js +6 -0
  261. package/dist/feedback/progress/progress.css?inline.cjs +2 -0
  262. package/dist/feedback/progress/progress.css?inline.cjs.map +1 -0
  263. package/dist/feedback/progress/progress.css?inline.js +6 -0
  264. package/dist/feedback/progress/progress.css?inline.js.map +1 -0
  265. package/dist/feedback/progress/progress.d.ts +64 -0
  266. package/dist/feedback/progress/progress.d.ts.map +1 -0
  267. package/dist/feedback/skeleton/skeleton.css?inline.cjs +2 -0
  268. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +1 -0
  269. package/dist/feedback/skeleton/skeleton.css?inline.js +6 -0
  270. package/dist/feedback/skeleton/skeleton.css?inline.js.map +1 -0
  271. package/dist/feedback/skeleton/skeleton.d.ts +61 -0
  272. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -0
  273. package/dist/feedback/toast/index.d.ts +2 -0
  274. package/dist/feedback/toast/index.d.ts.map +1 -0
  275. package/dist/feedback/toast/toast.css?inline.cjs +2 -0
  276. package/dist/feedback/toast/toast.css?inline.cjs.map +1 -0
  277. package/dist/feedback/toast/toast.css?inline.js +6 -0
  278. package/dist/feedback/toast/toast.css?inline.js.map +1 -0
  279. package/dist/feedback/toast/toast.d.ts +95 -0
  280. package/dist/feedback/toast/toast.d.ts.map +1 -0
  281. package/dist/file-input.cjs +66 -0
  282. package/dist/file-input.cjs.map +1 -0
  283. package/dist/file-input.js +210 -0
  284. package/dist/file-input.js.map +1 -0
  285. package/dist/form.cjs +11 -0
  286. package/dist/form.cjs.map +1 -0
  287. package/dist/form.js +49 -0
  288. package/dist/form.js.map +1 -0
  289. package/dist/grid-item.cjs +2 -0
  290. package/dist/grid-item.cjs.map +1 -0
  291. package/dist/grid-item.js +28 -0
  292. package/dist/grid-item.js.map +1 -0
  293. package/dist/grid.cjs +2 -0
  294. package/dist/grid.cjs.map +1 -0
  295. package/dist/grid.js +90 -0
  296. package/dist/grid.js.map +1 -0
  297. package/dist/icons.cjs +176 -0
  298. package/dist/icons.cjs.map +1 -0
  299. package/dist/icons.d.ts +15 -0
  300. package/dist/icons.d.ts.map +1 -0
  301. package/dist/icons.js +181 -0
  302. package/dist/icons.js.map +1 -0
  303. package/dist/index.cjs +1 -0
  304. package/dist/index.d.ts +9 -0
  305. package/dist/index.d.ts.map +1 -0
  306. package/dist/index.js +53 -0
  307. package/dist/input.cjs +48 -0
  308. package/dist/input.cjs.map +1 -0
  309. package/dist/input.js +182 -0
  310. package/dist/input.js.map +1 -0
  311. package/dist/inputs/button/button.css?inline.cjs +2 -0
  312. package/dist/inputs/button/button.css?inline.cjs.map +1 -0
  313. package/dist/inputs/button/button.css?inline.js +6 -0
  314. package/dist/inputs/button/button.css?inline.js.map +1 -0
  315. package/dist/inputs/button/button.d.ts +73 -0
  316. package/dist/inputs/button/button.d.ts.map +1 -0
  317. package/dist/inputs/button-group/button-group.css?inline.cjs +2 -0
  318. package/dist/inputs/button-group/button-group.css?inline.cjs.map +1 -0
  319. package/dist/inputs/button-group/button-group.css?inline.js +6 -0
  320. package/dist/inputs/button-group/button-group.css?inline.js.map +1 -0
  321. package/dist/inputs/button-group/button-group.d.ts +52 -0
  322. package/dist/inputs/button-group/button-group.d.ts.map +1 -0
  323. package/dist/inputs/checkbox/checkbox.css?inline.cjs +2 -0
  324. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +1 -0
  325. package/dist/inputs/checkbox/checkbox.css?inline.js +6 -0
  326. package/dist/inputs/checkbox/checkbox.css?inline.js.map +1 -0
  327. package/dist/inputs/checkbox/checkbox.d.ts +43 -0
  328. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -0
  329. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs +2 -0
  330. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +1 -0
  331. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js +6 -0
  332. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +1 -0
  333. package/dist/inputs/checkbox-group/checkbox-group.d.ts +56 -0
  334. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -0
  335. package/dist/inputs/combobox/combobox-options.cjs +2 -0
  336. package/dist/inputs/combobox/combobox-options.cjs.map +1 -0
  337. package/dist/inputs/combobox/combobox-options.d.ts +7 -0
  338. package/dist/inputs/combobox/combobox-options.d.ts.map +1 -0
  339. package/dist/inputs/combobox/combobox-options.js +36 -0
  340. package/dist/inputs/combobox/combobox-options.js.map +1 -0
  341. package/dist/inputs/combobox/combobox-virtualizer.cjs +2 -0
  342. package/dist/inputs/combobox/combobox-virtualizer.cjs.map +1 -0
  343. package/dist/inputs/combobox/combobox-virtualizer.d.ts +20 -0
  344. package/dist/inputs/combobox/combobox-virtualizer.d.ts.map +1 -0
  345. package/dist/inputs/combobox/combobox-virtualizer.js +71 -0
  346. package/dist/inputs/combobox/combobox-virtualizer.js.map +1 -0
  347. package/dist/inputs/combobox/combobox.css?inline.cjs +2 -0
  348. package/dist/inputs/combobox/combobox.css?inline.cjs.map +1 -0
  349. package/dist/inputs/combobox/combobox.css?inline.js +6 -0
  350. package/dist/inputs/combobox/combobox.css?inline.js.map +1 -0
  351. package/dist/inputs/combobox/combobox.d.ts +28 -0
  352. package/dist/inputs/combobox/combobox.d.ts.map +1 -0
  353. package/dist/inputs/combobox/combobox.types.d.ts +36 -0
  354. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -0
  355. package/dist/inputs/file-input/file-input.css?inline.cjs +2 -0
  356. package/dist/inputs/file-input/file-input.css?inline.cjs.map +1 -0
  357. package/dist/inputs/file-input/file-input.css?inline.js +6 -0
  358. package/dist/inputs/file-input/file-input.css?inline.js.map +1 -0
  359. package/dist/inputs/file-input/file-input.d.ts +94 -0
  360. package/dist/inputs/file-input/file-input.d.ts.map +1 -0
  361. package/dist/inputs/form/form.css?inline.cjs +2 -0
  362. package/dist/inputs/form/form.css?inline.cjs.map +1 -0
  363. package/dist/inputs/form/form.css?inline.js +6 -0
  364. package/dist/inputs/form/form.css?inline.js.map +1 -0
  365. package/dist/inputs/form/form.d.ts +61 -0
  366. package/dist/inputs/form/form.d.ts.map +1 -0
  367. package/dist/inputs/index.cjs +1 -0
  368. package/dist/inputs/index.d.ts +38 -0
  369. package/dist/inputs/index.d.ts.map +1 -0
  370. package/dist/inputs/index.js +18 -0
  371. package/dist/inputs/input/input.css?inline.cjs +2 -0
  372. package/dist/inputs/input/input.css?inline.cjs.map +1 -0
  373. package/dist/inputs/input/input.css?inline.js +6 -0
  374. package/dist/inputs/input/input.css?inline.js.map +1 -0
  375. package/dist/inputs/input/input.d.ts +82 -0
  376. package/dist/inputs/input/input.d.ts.map +1 -0
  377. package/dist/inputs/number-input/number-input.css?inline.cjs +2 -0
  378. package/dist/inputs/number-input/number-input.css?inline.cjs.map +1 -0
  379. package/dist/inputs/number-input/number-input.css?inline.js +6 -0
  380. package/dist/inputs/number-input/number-input.css?inline.js.map +1 -0
  381. package/dist/inputs/number-input/number-input.d.ts +76 -0
  382. package/dist/inputs/number-input/number-input.d.ts.map +1 -0
  383. package/dist/inputs/otp-input/otp-input.css?inline.cjs +2 -0
  384. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +1 -0
  385. package/dist/inputs/otp-input/otp-input.css?inline.js +6 -0
  386. package/dist/inputs/otp-input/otp-input.css?inline.js.map +1 -0
  387. package/dist/inputs/otp-input/otp-input.d.ts +71 -0
  388. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -0
  389. package/dist/inputs/radio/radio.css?inline.cjs +2 -0
  390. package/dist/inputs/radio/radio.css?inline.cjs.map +1 -0
  391. package/dist/inputs/radio/radio.css?inline.js +6 -0
  392. package/dist/inputs/radio/radio.css?inline.js.map +1 -0
  393. package/dist/inputs/radio/radio.d.ts +41 -0
  394. package/dist/inputs/radio/radio.d.ts.map +1 -0
  395. package/dist/inputs/radio-group/radio-group.css?inline.cjs +2 -0
  396. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +1 -0
  397. package/dist/inputs/radio-group/radio-group.css?inline.js +6 -0
  398. package/dist/inputs/radio-group/radio-group.css?inline.js.map +1 -0
  399. package/dist/inputs/radio-group/radio-group.d.ts +61 -0
  400. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -0
  401. package/dist/inputs/rating/rating.css?inline.cjs +2 -0
  402. package/dist/inputs/rating/rating.css?inline.cjs.map +1 -0
  403. package/dist/inputs/rating/rating.css?inline.js +6 -0
  404. package/dist/inputs/rating/rating.css?inline.js.map +1 -0
  405. package/dist/inputs/rating/rating.d.ts +48 -0
  406. package/dist/inputs/rating/rating.d.ts.map +1 -0
  407. package/dist/inputs/select/select.css?inline.cjs +2 -0
  408. package/dist/inputs/select/select.css?inline.cjs.map +1 -0
  409. package/dist/inputs/select/select.css?inline.js +6 -0
  410. package/dist/inputs/select/select.css?inline.js.map +1 -0
  411. package/dist/inputs/select/select.d.ts +79 -0
  412. package/dist/inputs/select/select.d.ts.map +1 -0
  413. package/dist/inputs/shared/base-props.d.ts +39 -0
  414. package/dist/inputs/shared/base-props.d.ts.map +1 -0
  415. package/dist/inputs/shared/composables/index.cjs +1 -0
  416. package/dist/inputs/shared/composables/index.d.ts +3 -0
  417. package/dist/inputs/shared/composables/index.d.ts.map +1 -0
  418. package/dist/inputs/shared/composables/index.js +2 -0
  419. package/dist/inputs/shared/composables/use-text-field.cjs +2 -0
  420. package/dist/inputs/shared/composables/use-text-field.cjs.map +1 -0
  421. package/dist/inputs/shared/composables/use-text-field.d.ts +33 -0
  422. package/dist/inputs/shared/composables/use-text-field.d.ts.map +1 -0
  423. package/dist/inputs/shared/composables/use-text-field.js +41 -0
  424. package/dist/inputs/shared/composables/use-text-field.js.map +1 -0
  425. package/dist/inputs/shared/composables/use-toggle-field.cjs +2 -0
  426. package/dist/inputs/shared/composables/use-toggle-field.cjs.map +1 -0
  427. package/dist/inputs/shared/composables/use-toggle-field.d.ts +18 -0
  428. package/dist/inputs/shared/composables/use-toggle-field.d.ts.map +1 -0
  429. package/dist/inputs/shared/composables/use-toggle-field.js +26 -0
  430. package/dist/inputs/shared/composables/use-toggle-field.js.map +1 -0
  431. package/dist/inputs/shared/design-presets.cjs +2 -0
  432. package/dist/inputs/shared/design-presets.cjs.map +1 -0
  433. package/dist/inputs/shared/design-presets.d.ts +97 -0
  434. package/dist/inputs/shared/design-presets.d.ts.map +1 -0
  435. package/dist/inputs/shared/design-presets.js +92 -0
  436. package/dist/inputs/shared/design-presets.js.map +1 -0
  437. package/dist/inputs/shared/dom-sync/dropdown.cjs +2 -0
  438. package/dist/inputs/shared/dom-sync/dropdown.cjs.map +1 -0
  439. package/dist/inputs/shared/dom-sync/dropdown.d.ts +7 -0
  440. package/dist/inputs/shared/dom-sync/dropdown.d.ts.map +1 -0
  441. package/dist/inputs/shared/dom-sync/dropdown.js +30 -0
  442. package/dist/inputs/shared/dom-sync/dropdown.js.map +1 -0
  443. package/dist/inputs/shared/dom-sync/field-sync.cjs +2 -0
  444. package/dist/inputs/shared/dom-sync/field-sync.cjs.map +1 -0
  445. package/dist/inputs/shared/dom-sync/field-sync.d.ts +36 -0
  446. package/dist/inputs/shared/dom-sync/field-sync.d.ts.map +1 -0
  447. package/dist/inputs/shared/dom-sync/field-sync.js +37 -0
  448. package/dist/inputs/shared/dom-sync/field-sync.js.map +1 -0
  449. package/dist/inputs/shared/dom-sync/form-context.cjs +2 -0
  450. package/dist/inputs/shared/dom-sync/form-context.cjs.map +1 -0
  451. package/dist/inputs/shared/dom-sync/form-context.d.ts +18 -0
  452. package/dist/inputs/shared/dom-sync/form-context.d.ts.map +1 -0
  453. package/dist/inputs/shared/dom-sync/form-context.js +20 -0
  454. package/dist/inputs/shared/dom-sync/form-context.js.map +1 -0
  455. package/dist/inputs/shared/dom-sync/index.cjs +1 -0
  456. package/dist/inputs/shared/dom-sync/index.d.ts +5 -0
  457. package/dist/inputs/shared/dom-sync/index.d.ts.map +1 -0
  458. package/dist/inputs/shared/dom-sync/index.js +4 -0
  459. package/dist/inputs/shared/dom-sync/label-sync.cjs +2 -0
  460. package/dist/inputs/shared/dom-sync/label-sync.cjs.map +1 -0
  461. package/dist/inputs/shared/dom-sync/label-sync.d.ts +16 -0
  462. package/dist/inputs/shared/dom-sync/label-sync.d.ts.map +1 -0
  463. package/dist/inputs/shared/dom-sync/label-sync.js +12 -0
  464. package/dist/inputs/shared/dom-sync/label-sync.js.map +1 -0
  465. package/dist/inputs/shared/form-context.cjs +2 -0
  466. package/dist/inputs/shared/form-context.cjs.map +1 -0
  467. package/dist/inputs/shared/form-context.d.ts +19 -0
  468. package/dist/inputs/shared/form-context.d.ts.map +1 -0
  469. package/dist/inputs/shared/form-context.js +7 -0
  470. package/dist/inputs/shared/form-context.js.map +1 -0
  471. package/dist/inputs/shared/utils/assistive-text.cjs +2 -0
  472. package/dist/inputs/shared/utils/assistive-text.cjs.map +1 -0
  473. package/dist/inputs/shared/utils/assistive-text.d.ts +24 -0
  474. package/dist/inputs/shared/utils/assistive-text.d.ts.map +1 -0
  475. package/dist/inputs/shared/utils/assistive-text.js +37 -0
  476. package/dist/inputs/shared/utils/assistive-text.js.map +1 -0
  477. package/dist/inputs/shared/utils/choice-change.cjs +2 -0
  478. package/dist/inputs/shared/utils/choice-change.cjs.map +1 -0
  479. package/dist/inputs/shared/utils/choice-change.d.ts +8 -0
  480. package/dist/inputs/shared/utils/choice-change.d.ts.map +1 -0
  481. package/dist/inputs/shared/utils/choice-change.js +13 -0
  482. package/dist/inputs/shared/utils/choice-change.js.map +1 -0
  483. package/dist/inputs/shared/utils/controlled-csv.cjs +2 -0
  484. package/dist/inputs/shared/utils/controlled-csv.cjs.map +1 -0
  485. package/dist/inputs/shared/utils/controlled-csv.d.ts +8 -0
  486. package/dist/inputs/shared/utils/controlled-csv.d.ts.map +1 -0
  487. package/dist/inputs/shared/utils/controlled-csv.js +15 -0
  488. package/dist/inputs/shared/utils/controlled-csv.js.map +1 -0
  489. package/dist/inputs/shared/utils/field-values.cjs +2 -0
  490. package/dist/inputs/shared/utils/field-values.cjs.map +1 -0
  491. package/dist/inputs/shared/utils/field-values.d.ts +5 -0
  492. package/dist/inputs/shared/utils/field-values.d.ts.map +1 -0
  493. package/dist/inputs/shared/utils/field-values.js +13 -0
  494. package/dist/inputs/shared/utils/field-values.js.map +1 -0
  495. package/dist/inputs/shared/utils/index.d.ts +5 -0
  496. package/dist/inputs/shared/utils/index.d.ts.map +1 -0
  497. package/dist/inputs/shared/validation/index.cjs +2 -0
  498. package/dist/inputs/shared/validation/index.cjs.map +1 -0
  499. package/dist/inputs/shared/validation/index.d.ts +14 -0
  500. package/dist/inputs/shared/validation/index.d.ts.map +1 -0
  501. package/dist/inputs/shared/validation/index.js +13 -0
  502. package/dist/inputs/shared/validation/index.js.map +1 -0
  503. package/dist/inputs/slider/slider.css?inline.cjs +2 -0
  504. package/dist/inputs/slider/slider.css?inline.cjs.map +1 -0
  505. package/dist/inputs/slider/slider.css?inline.js +6 -0
  506. package/dist/inputs/slider/slider.css?inline.js.map +1 -0
  507. package/dist/inputs/slider/slider.d.ts +82 -0
  508. package/dist/inputs/slider/slider.d.ts.map +1 -0
  509. package/dist/inputs/switch/switch.css?inline.cjs +2 -0
  510. package/dist/inputs/switch/switch.css?inline.cjs.map +1 -0
  511. package/dist/inputs/switch/switch.css?inline.js +6 -0
  512. package/dist/inputs/switch/switch.css?inline.js.map +1 -0
  513. package/dist/inputs/switch/switch.d.ts +40 -0
  514. package/dist/inputs/switch/switch.d.ts.map +1 -0
  515. package/dist/inputs/textarea/textarea.css?inline.cjs +2 -0
  516. package/dist/inputs/textarea/textarea.css?inline.cjs.map +1 -0
  517. package/dist/inputs/textarea/textarea.css?inline.js +6 -0
  518. package/dist/inputs/textarea/textarea.css?inline.js.map +1 -0
  519. package/dist/inputs/textarea/textarea.d.ts +57 -0
  520. package/dist/inputs/textarea/textarea.d.ts.map +1 -0
  521. package/dist/layout/box/box.css?inline.cjs +2 -0
  522. package/dist/layout/box/box.css?inline.cjs.map +1 -0
  523. package/dist/layout/box/box.css?inline.js +6 -0
  524. package/dist/layout/box/box.css?inline.js.map +1 -0
  525. package/dist/layout/box/box.d.ts +52 -0
  526. package/dist/layout/box/box.d.ts.map +1 -0
  527. package/dist/layout/grid/grid.css?inline.cjs +2 -0
  528. package/dist/layout/grid/grid.css?inline.cjs.map +1 -0
  529. package/dist/layout/grid/grid.css?inline.js +6 -0
  530. package/dist/layout/grid/grid.css?inline.js.map +1 -0
  531. package/dist/layout/grid/grid.d.ts +105 -0
  532. package/dist/layout/grid/grid.d.ts.map +1 -0
  533. package/dist/layout/grid-item/grid-item.css?inline.cjs +2 -0
  534. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +1 -0
  535. package/dist/layout/grid-item/grid-item.css?inline.js +6 -0
  536. package/dist/layout/grid-item/grid-item.css?inline.js.map +1 -0
  537. package/dist/layout/grid-item/grid-item.d.ts +47 -0
  538. package/dist/layout/grid-item/grid-item.d.ts.map +1 -0
  539. package/dist/layout/index.cjs +1 -0
  540. package/dist/layout/index.d.ts +9 -0
  541. package/dist/layout/index.d.ts.map +1 -0
  542. package/dist/layout/index.js +4 -0
  543. package/dist/layout/sidebar/sidebar-group.css?inline.cjs +2 -0
  544. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +1 -0
  545. package/dist/layout/sidebar/sidebar-group.css?inline.js +6 -0
  546. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +1 -0
  547. package/dist/layout/sidebar/sidebar-item.css?inline.cjs +2 -0
  548. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +1 -0
  549. package/dist/layout/sidebar/sidebar-item.css?inline.js +6 -0
  550. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +1 -0
  551. package/dist/layout/sidebar/sidebar.css?inline.cjs +2 -0
  552. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +1 -0
  553. package/dist/layout/sidebar/sidebar.css?inline.js +6 -0
  554. package/dist/layout/sidebar/sidebar.css?inline.js.map +1 -0
  555. package/dist/layout/sidebar/sidebar.d.ts +190 -0
  556. package/dist/layout/sidebar/sidebar.d.ts.map +1 -0
  557. package/dist/menu.cjs +133 -0
  558. package/dist/menu.cjs.map +1 -0
  559. package/dist/menu.js +296 -0
  560. package/dist/menu.js.map +1 -0
  561. package/dist/number-input.cjs +55 -0
  562. package/dist/number-input.cjs.map +1 -0
  563. package/dist/number-input.js +158 -0
  564. package/dist/number-input.js.map +1 -0
  565. package/dist/otp-input.cjs +22 -0
  566. package/dist/otp-input.cjs.map +1 -0
  567. package/dist/otp-input.js +120 -0
  568. package/dist/otp-input.js.map +1 -0
  569. package/dist/overlay/dialog/dialog.css?inline.cjs +2 -0
  570. package/dist/overlay/dialog/dialog.css?inline.cjs.map +1 -0
  571. package/dist/overlay/dialog/dialog.css?inline.js +6 -0
  572. package/dist/overlay/dialog/dialog.css?inline.js.map +1 -0
  573. package/dist/overlay/dialog/dialog.d.ts +98 -0
  574. package/dist/overlay/dialog/dialog.d.ts.map +1 -0
  575. package/dist/overlay/drawer/drawer.css?inline.cjs +2 -0
  576. package/dist/overlay/drawer/drawer.css?inline.cjs.map +1 -0
  577. package/dist/overlay/drawer/drawer.css?inline.js +6 -0
  578. package/dist/overlay/drawer/drawer.css?inline.js.map +1 -0
  579. package/dist/overlay/drawer/drawer.d.ts +98 -0
  580. package/dist/overlay/drawer/drawer.d.ts.map +1 -0
  581. package/dist/overlay/index.cjs +1 -0
  582. package/dist/overlay/index.d.ts +11 -0
  583. package/dist/overlay/index.d.ts.map +1 -0
  584. package/dist/overlay/index.js +5 -0
  585. package/dist/overlay/menu/menu.css?inline.cjs +2 -0
  586. package/dist/overlay/menu/menu.css?inline.cjs.map +1 -0
  587. package/dist/overlay/menu/menu.css?inline.js +6 -0
  588. package/dist/overlay/menu/menu.css?inline.js.map +1 -0
  589. package/dist/overlay/menu/menu.d.ts +45 -0
  590. package/dist/overlay/menu/menu.d.ts.map +1 -0
  591. package/dist/overlay/popover/popover.css?inline.cjs +2 -0
  592. package/dist/overlay/popover/popover.css?inline.cjs.map +1 -0
  593. package/dist/overlay/popover/popover.css?inline.js +6 -0
  594. package/dist/overlay/popover/popover.css?inline.js.map +1 -0
  595. package/dist/overlay/popover/popover.d.ts +56 -0
  596. package/dist/overlay/popover/popover.d.ts.map +1 -0
  597. package/dist/overlay/tooltip/tooltip.css?inline.cjs +2 -0
  598. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +1 -0
  599. package/dist/overlay/tooltip/tooltip.css?inline.js +6 -0
  600. package/dist/overlay/tooltip/tooltip.css?inline.js.map +1 -0
  601. package/dist/overlay/tooltip/tooltip.d.ts +55 -0
  602. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -0
  603. package/dist/pagination.cjs +102 -0
  604. package/dist/pagination.cjs.map +1 -0
  605. package/dist/pagination.js +168 -0
  606. package/dist/pagination.js.map +1 -0
  607. package/dist/popover.cjs +16 -0
  608. package/dist/popover.cjs.map +1 -0
  609. package/dist/popover.js +110 -0
  610. package/dist/popover.js.map +1 -0
  611. package/dist/progress.cjs +51 -0
  612. package/dist/progress.cjs.map +1 -0
  613. package/dist/progress.js +90 -0
  614. package/dist/progress.js.map +1 -0
  615. package/dist/radio-group.cjs +20 -0
  616. package/dist/radio-group.cjs.map +1 -0
  617. package/dist/radio-group.js +104 -0
  618. package/dist/radio-group.js.map +1 -0
  619. package/dist/radio.cjs +16 -0
  620. package/dist/radio.cjs.map +1 -0
  621. package/dist/radio.js +135 -0
  622. package/dist/radio.js.map +1 -0
  623. package/dist/rating.cjs +37 -0
  624. package/dist/rating.cjs.map +1 -0
  625. package/dist/rating.js +123 -0
  626. package/dist/rating.js.map +1 -0
  627. package/dist/select.cjs +77 -0
  628. package/dist/select.cjs.map +1 -0
  629. package/dist/select.js +317 -0
  630. package/dist/select.js.map +1 -0
  631. package/dist/separator.cjs +26 -0
  632. package/dist/separator.cjs.map +1 -0
  633. package/dist/separator.js +46 -0
  634. package/dist/separator.js.map +1 -0
  635. package/dist/sidebar.cjs +69 -0
  636. package/dist/sidebar.cjs.map +1 -0
  637. package/dist/sidebar.js +202 -0
  638. package/dist/sidebar.js.map +1 -0
  639. package/dist/skeleton.cjs +10 -0
  640. package/dist/skeleton.cjs.map +1 -0
  641. package/dist/skeleton.js +56 -0
  642. package/dist/skeleton.js.map +1 -0
  643. package/dist/slider.cjs +24 -0
  644. package/dist/slider.cjs.map +1 -0
  645. package/dist/slider.js +209 -0
  646. package/dist/slider.js.map +1 -0
  647. package/dist/stateit/dist/computed.cjs +2 -0
  648. package/dist/stateit/dist/computed.cjs.map +1 -0
  649. package/dist/stateit/dist/computed.js +65 -0
  650. package/dist/stateit/dist/computed.js.map +1 -0
  651. package/dist/stateit/dist/effect.cjs +2 -0
  652. package/dist/stateit/dist/effect.cjs.map +1 -0
  653. package/dist/stateit/dist/effect.js +53 -0
  654. package/dist/stateit/dist/effect.js.map +1 -0
  655. package/dist/stateit/dist/index.cjs +1 -0
  656. package/dist/stateit/dist/index.js +5 -0
  657. package/dist/stateit/dist/runtime.cjs +2 -0
  658. package/dist/stateit/dist/runtime.cjs.map +1 -0
  659. package/dist/stateit/dist/runtime.js +43 -0
  660. package/dist/stateit/dist/runtime.js.map +1 -0
  661. package/dist/stateit/dist/signal.cjs +2 -0
  662. package/dist/stateit/dist/signal.cjs.map +1 -0
  663. package/dist/stateit/dist/signal.js +27 -0
  664. package/dist/stateit/dist/signal.js.map +1 -0
  665. package/dist/stateit/dist/store.cjs +2 -0
  666. package/dist/stateit/dist/store.cjs.map +1 -0
  667. package/dist/stateit/dist/store.js +17 -0
  668. package/dist/stateit/dist/store.js.map +1 -0
  669. package/dist/stateit/dist/types.cjs +2 -0
  670. package/dist/stateit/dist/types.cjs.map +1 -0
  671. package/dist/stateit/dist/types.js +6 -0
  672. package/dist/stateit/dist/types.js.map +1 -0
  673. package/dist/styles/animation.css +87 -0
  674. package/dist/styles/index.cjs +2 -0
  675. package/dist/styles/index.cjs.map +1 -0
  676. package/dist/styles/index.d.ts +48 -0
  677. package/dist/styles/index.d.ts.map +1 -0
  678. package/dist/styles/index.js +26 -0
  679. package/dist/styles/index.js.map +1 -0
  680. package/dist/styles/layer.css +18 -0
  681. package/dist/styles/mixins/accessibility.css.cjs +15 -0
  682. package/dist/styles/mixins/accessibility.css.cjs.map +1 -0
  683. package/dist/styles/mixins/accessibility.css.d.ts +46 -0
  684. package/dist/styles/mixins/accessibility.css.d.ts.map +1 -0
  685. package/dist/styles/mixins/accessibility.css.js +20 -0
  686. package/dist/styles/mixins/accessibility.css.js.map +1 -0
  687. package/dist/styles/mixins/animation.css.cjs +71 -0
  688. package/dist/styles/mixins/animation.css.cjs.map +1 -0
  689. package/dist/styles/mixins/animation.css.d.ts +22 -0
  690. package/dist/styles/mixins/animation.css.d.ts.map +1 -0
  691. package/dist/styles/mixins/animation.css.js +90 -0
  692. package/dist/styles/mixins/animation.css.js.map +1 -0
  693. package/dist/styles/mixins/shape.css.cjs +72 -0
  694. package/dist/styles/mixins/shape.css.cjs.map +1 -0
  695. package/dist/styles/mixins/shape.css.d.ts +97 -0
  696. package/dist/styles/mixins/shape.css.d.ts.map +1 -0
  697. package/dist/styles/mixins/shape.css.js +104 -0
  698. package/dist/styles/mixins/shape.css.js.map +1 -0
  699. package/dist/styles/mixins/states.css.cjs +18 -0
  700. package/dist/styles/mixins/states.css.cjs.map +1 -0
  701. package/dist/styles/mixins/states.css.d.ts +61 -0
  702. package/dist/styles/mixins/states.css.d.ts.map +1 -0
  703. package/dist/styles/mixins/states.css.js +26 -0
  704. package/dist/styles/mixins/states.css.js.map +1 -0
  705. package/dist/styles/mixins/theme.css.cjs +146 -0
  706. package/dist/styles/mixins/theme.css.cjs.map +1 -0
  707. package/dist/styles/mixins/theme.css.d.ts +93 -0
  708. package/dist/styles/mixins/theme.css.d.ts.map +1 -0
  709. package/dist/styles/mixins/theme.css.js +151 -0
  710. package/dist/styles/mixins/theme.css.js.map +1 -0
  711. package/dist/styles/mixins/variants.css.cjs +84 -0
  712. package/dist/styles/mixins/variants.css.cjs.map +1 -0
  713. package/dist/styles/mixins/variants.css.d.ts +22 -0
  714. package/dist/styles/mixins/variants.css.d.ts.map +1 -0
  715. package/dist/styles/mixins/variants.css.js +89 -0
  716. package/dist/styles/mixins/variants.css.js.map +1 -0
  717. package/dist/styles/preflight.css +237 -0
  718. package/dist/styles/styles.css +5 -0
  719. package/dist/styles/theme.css +457 -0
  720. package/dist/switch.cjs +16 -0
  721. package/dist/switch.cjs.map +1 -0
  722. package/dist/switch.js +82 -0
  723. package/dist/switch.js.map +1 -0
  724. package/dist/tab-item.cjs +17 -0
  725. package/dist/tab-item.cjs.map +1 -0
  726. package/dist/tab-item.js +57 -0
  727. package/dist/tab-item.js.map +1 -0
  728. package/dist/tab-panel.cjs +14 -0
  729. package/dist/tab-panel.cjs.map +1 -0
  730. package/dist/tab-panel.js +51 -0
  731. package/dist/tab-panel.js.map +1 -0
  732. package/dist/table.cjs +2 -0
  733. package/dist/table.cjs.map +1 -0
  734. package/dist/table.js +101 -0
  735. package/dist/table.js.map +1 -0
  736. package/dist/tabs.cjs +17 -0
  737. package/dist/tabs.cjs.map +1 -0
  738. package/dist/tabs.js +98 -0
  739. package/dist/tabs.js.map +1 -0
  740. package/dist/text.cjs +2 -0
  741. package/dist/text.cjs.map +1 -0
  742. package/dist/text.js +30 -0
  743. package/dist/text.js.map +1 -0
  744. package/dist/textarea.cjs +16 -0
  745. package/dist/textarea.cjs.map +1 -0
  746. package/dist/textarea.js +122 -0
  747. package/dist/textarea.js.map +1 -0
  748. package/dist/toast.cjs +63 -0
  749. package/dist/toast.cjs.map +1 -0
  750. package/dist/toast.js +221 -0
  751. package/dist/toast.js.map +1 -0
  752. package/dist/tooltip.cjs +15 -0
  753. package/dist/tooltip.cjs.map +1 -0
  754. package/dist/tooltip.js +111 -0
  755. package/dist/tooltip.js.map +1 -0
  756. package/dist/types/index.d.ts +7 -0
  757. package/dist/types/index.d.ts.map +1 -0
  758. package/dist/types/shared.d.ts +120 -0
  759. package/dist/types/shared.d.ts.map +1 -0
  760. package/dist/utils/animation.cjs +2 -0
  761. package/dist/utils/animation.cjs.map +1 -0
  762. package/dist/utils/animation.d.ts +2 -0
  763. package/dist/utils/animation.d.ts.map +1 -0
  764. package/dist/utils/animation.js +29 -0
  765. package/dist/utils/animation.js.map +1 -0
  766. package/dist/utils/background-lock.cjs +2 -0
  767. package/dist/utils/background-lock.cjs.map +1 -0
  768. package/dist/utils/background-lock.d.ts +20 -0
  769. package/dist/utils/background-lock.d.ts.map +1 -0
  770. package/dist/utils/background-lock.js +21 -0
  771. package/dist/utils/background-lock.js.map +1 -0
  772. package/dist/utils/index.cjs +1 -0
  773. package/dist/utils/index.d.ts +4 -0
  774. package/dist/utils/index.d.ts.map +1 -0
  775. package/dist/utils/index.js +3 -0
  776. package/dist/utils/use-overlay.cjs +2 -0
  777. package/dist/utils/use-overlay.cjs.map +1 -0
  778. package/dist/utils/use-overlay.d.ts +26 -0
  779. package/dist/utils/use-overlay.d.ts.map +1 -0
  780. package/dist/utils/use-overlay.js +34 -0
  781. package/dist/utils/use-overlay.js.map +1 -0
  782. package/dist/virtualit/dist/dom/dom.cjs +2 -0
  783. package/dist/virtualit/dist/dom/dom.cjs.map +1 -0
  784. package/dist/virtualit/dist/dom/dom.js +47 -0
  785. package/dist/virtualit/dist/dom/dom.js.map +1 -0
  786. package/dist/virtualit/dist/dom.cjs +1 -0
  787. package/dist/virtualit/dist/dom.js +2 -0
  788. package/dist/virtualit/dist/virtualit.cjs +2 -0
  789. package/dist/virtualit/dist/virtualit.cjs.map +1 -0
  790. package/dist/virtualit/dist/virtualit.js +129 -0
  791. package/dist/virtualit/dist/virtualit.js.map +1 -0
  792. package/package.json +282 -0
@@ -0,0 +1,202 @@
1
+ import { coarsePointerMixin as e, reducedMotionMixin as t } from "./styles/mixins/accessibility.css.js";
2
+ import "./styles/index.js";
3
+ import { chevronLeftIcon as n, chevronRightIcon as r } from "./icons.js";
4
+ import i from "./layout/sidebar/sidebar.css?inline.js";
5
+ import a from "./layout/sidebar/sidebar-group.css?inline.js";
6
+ import o from "./layout/sidebar/sidebar-item.css?inline.js";
7
+ import { computed as s, createContext as c, defineComponent as l, effect as u, html as d, inject as f, onMount as p, provide as m, signal as h, watch as g } from "@vielzeug/craftit";
8
+ //#region src/layout/sidebar/sidebar.ts
9
+ var _ = c("SidebarContext"), v = l({
10
+ props: {
11
+ collapsed: {
12
+ default: void 0,
13
+ type: Boolean
14
+ },
15
+ collapsible: {
16
+ default: !1,
17
+ type: Boolean
18
+ },
19
+ "default-collapsed": {
20
+ default: !1,
21
+ type: Boolean
22
+ },
23
+ label: { default: "Sidebar navigation" },
24
+ responsive: { default: void 0 },
25
+ variant: { default: void 0 }
26
+ },
27
+ setup({ emit: e, host: t, props: r, slots: i }) {
28
+ let a = s(() => i.has("header").value), o = s(() => i.has("footer").value), c = h(t.hasAttribute("collapsed")), l = h(c.value ? t.hasAttribute("collapsed") : r["default-collapsed"].value), f = s(() => l.value);
29
+ m(_, {
30
+ collapsed: f,
31
+ variant: r.variant
32
+ });
33
+ let v = (t, n) => {
34
+ f.value !== t && (c.value || (l.value = t), e("collapsed-change", {
35
+ collapsed: t,
36
+ source: n
37
+ }));
38
+ }, y = () => {
39
+ v(!f.value, "toggle");
40
+ };
41
+ return u(() => {
42
+ t.toggleAttribute("data-collapsed", f.value);
43
+ }), p(() => {
44
+ let e = t;
45
+ e.setCollapsed = (e) => v(!!e, "api"), e.toggle = y;
46
+ let n, i = new MutationObserver(() => {
47
+ !t.hasAttribute("collapsed") && !c.value || (c.value = !0, l.value = t.hasAttribute("collapsed"));
48
+ });
49
+ return i.observe(t, {
50
+ attributeFilter: ["collapsed"],
51
+ attributes: !0
52
+ }), g(r.responsive, (e) => {
53
+ n?.(), n = void 0;
54
+ let t = String(e ?? "").trim();
55
+ if (!t) return;
56
+ let r = window.matchMedia(t), i = (e) => {
57
+ v(e.matches, "responsive");
58
+ };
59
+ v(r.matches, "responsive"), r.addEventListener("change", i), n = () => {
60
+ r.removeEventListener("change", i);
61
+ };
62
+ }, { immediate: !0 }), () => {
63
+ i.disconnect(), n?.();
64
+ };
65
+ }), d`
66
+ <nav aria-label="${() => r.label.value}" part="nav">
67
+ <div class="sidebar-header" part="header" ?hidden=${() => !a.value && !r.collapsible.value}>
68
+ <slot name="header"></slot>
69
+ <button
70
+ class="toggle-btn"
71
+ part="toggle-btn"
72
+ type="button"
73
+ ?hidden=${() => !r.collapsible.value}
74
+ aria-label="${() => f.value ? "Expand sidebar" : "Collapse sidebar"}"
75
+ aria-expanded="${() => String(!f.value)}"
76
+ @click="${y}">
77
+ <span class="toggle-icon" aria-hidden="true">${n}</span>
78
+ </button>
79
+ </div>
80
+ <div class="sidebar-content" part="content">
81
+ <slot></slot>
82
+ </div>
83
+ <div class="sidebar-footer" part="footer" ?hidden=${() => !o.value}>
84
+ <slot name="footer"></slot>
85
+ </div>
86
+ </nav>
87
+ `;
88
+ },
89
+ styles: [
90
+ e,
91
+ t,
92
+ i
93
+ ],
94
+ tag: "bit-sidebar"
95
+ }), y = l({
96
+ props: {
97
+ collapsible: {
98
+ default: !1,
99
+ type: Boolean
100
+ },
101
+ "default-open": {
102
+ default: !0,
103
+ type: Boolean
104
+ },
105
+ label: { default: "" },
106
+ open: {
107
+ default: void 0,
108
+ type: Boolean
109
+ }
110
+ },
111
+ setup({ emit: e, host: t, props: n, slots: i }) {
112
+ let a = s(() => i.has("icon").value), o = f(_, void 0);
113
+ u(() => {
114
+ t.toggleAttribute("sidebar-collapsed", o?.collapsed.value ?? !1);
115
+ });
116
+ let c = s(() => n.open.value !== void 0), l = h(n["default-open"].value), p = s(() => n.collapsible.value ? c.value ? n.open.value ?? !1 : l.value : !0);
117
+ return g(n.open, (e) => {
118
+ e !== void 0 && (l.value = e);
119
+ }), u(() => {
120
+ t.toggleAttribute("open", p.value);
121
+ }), d`
122
+ <details class="group" part="group" ?open=${() => p.value} @click="${(t) => {
123
+ if (!(t.target instanceof HTMLElement) || !t.target.closest(".group-header") || (t.stopPropagation(), t.preventDefault(), !n.collapsible.value)) return;
124
+ let r = !p.value;
125
+ n.open.value !== r && (c.value || (l.value = r), e("open-change", { open: r }));
126
+ }}">
127
+ <summary
128
+ class="group-header"
129
+ part="group-header"
130
+ :aria-expanded="${() => n.collapsible.value ? String(n.open.value) : null}">
131
+ <span class="group-icon" part="group-icon" ?hidden=${() => !a.value} aria-hidden="true">
132
+ <slot name="icon"></slot>
133
+ </span>
134
+ <span class="group-label" part="group-label">${() => n.label.value}</span>
135
+ <span class="chevron" ?hidden=${() => !n.collapsible.value} aria-hidden="true">${r}</span>
136
+ </summary>
137
+ <div class="group-items" part="group-items" role="list">
138
+ <slot></slot>
139
+ </div>
140
+ </details>
141
+ `;
142
+ },
143
+ styles: [t, a],
144
+ tag: "bit-sidebar-group"
145
+ }), b = l({
146
+ props: {
147
+ active: {
148
+ default: !1,
149
+ type: Boolean
150
+ },
151
+ disabled: {
152
+ default: !1,
153
+ type: Boolean
154
+ },
155
+ href: { default: void 0 },
156
+ rel: { default: void 0 },
157
+ target: { default: void 0 }
158
+ },
159
+ setup({ host: e, props: t, slots: n }) {
160
+ let r = s(() => n.has("icon").value), i = s(() => n.has("end").value), a = f(_, void 0);
161
+ u(() => {
162
+ e.toggleAttribute("sidebar-collapsed", a?.collapsed.value ?? !1);
163
+ });
164
+ let o = s(() => !!t.href.value && !t.disabled.value), c = () => d`
165
+ <span class="item-icon" part="item-icon" ?hidden=${() => !r.value} aria-hidden="true">
166
+ <slot name="icon"></slot>
167
+ </span>
168
+ <span class="item-label" part="item-label"><slot></slot></span>
169
+ <span class="item-end" part="item-end" ?hidden=${() => !i.value}>
170
+ <slot name="end"></slot>
171
+ </span>
172
+ `;
173
+ return d`
174
+ ${() => o.value ? d`
175
+ <a
176
+ class="item"
177
+ part="item"
178
+ href="${() => t.href.value}"
179
+ :rel="${() => t.rel.value ?? null}"
180
+ :target="${() => t.target.value ?? null}"
181
+ :aria-current="${() => t.active.value ? "page" : null}">
182
+ ${c()}
183
+ </a>
184
+ ` : d`
185
+ <button
186
+ class="item"
187
+ part="item"
188
+ type="button"
189
+ :aria-current="${() => t.active.value ? "page" : null}"
190
+ :disabled="${() => t.disabled.value || null}">
191
+ ${c()}
192
+ </button>
193
+ `}
194
+ `;
195
+ },
196
+ styles: [e, o],
197
+ tag: "bit-sidebar-item"
198
+ });
199
+ //#endregion
200
+ export { _ as SIDEBAR_CTX, y as SIDEBAR_GROUP_TAG, b as SIDEBAR_ITEM_TAG, v as SIDEBAR_TAG };
201
+
202
+ //# sourceMappingURL=sidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.js","names":[],"sources":["../src/layout/sidebar/sidebar.ts"],"sourcesContent":["import {\n computed,\n createContext,\n defineComponent,\n effect,\n html,\n inject,\n onMount,\n provide,\n signal,\n type ReadonlySignal,\n watch,\n} from '@vielzeug/craftit';\n\nimport { chevronLeftIcon, chevronRightIcon } from '../../icons';\nimport { coarsePointerMixin, reducedMotionMixin } from '../../styles';\n\n// ─── Types ────────────────────────────────────────────────────────────────\n\ntype SidebarVariant = 'floating' | 'inset';\ntype SidebarCollapseSource = 'api' | 'responsive' | 'toggle';\n\n/** Context provided by `bit-sidebar` to its `bit-sidebar-group` and `bit-sidebar-item` children. */\nexport type SidebarContext = {\n collapsed: ReadonlySignal<boolean>;\n variant: ReadonlySignal<SidebarVariant | undefined>;\n};\n\n/** Injection key for the sidebar context. */\nexport const SIDEBAR_CTX = createContext<SidebarContext>('SidebarContext');\n\n// ─── bit-sidebar styles ──────────────────────────────────────────────────────\n\nimport sidebarStyles from './sidebar.css?inline';\n\n/** bit-sidebar element interface */\nexport type SidebarElement = HTMLElement &\n BitSidebarProps & {\n /** Set collapsed state imperatively. */\n setCollapsed(next: boolean): void;\n /** Toggle between collapsed and expanded. */\n toggle(): void;\n };\n\n/** Sidebar component properties */\n\nexport type BitSidebarEvents = {\n 'collapsed-change': { collapsed: boolean; source: SidebarCollapseSource };\n};\n\nexport type BitSidebarGroupEvents = {\n 'open-change': { open: boolean };\n};\n\nexport type BitSidebarProps = {\n /** Controlled collapsed state */\n collapsed?: boolean;\n /** Whether the sidebar supports collapsing */\n collapsible?: boolean;\n /** Initial collapsed state in uncontrolled mode */\n 'default-collapsed'?: boolean;\n /**\n * Accessible label for the navigation landmark.\n * Use to distinguish multiple navigation regions on a page.\n * @default 'Sidebar navigation'\n */\n label?: string;\n /**\n * CSS media query that, when it matches, automatically collapses the sidebar.\n * Unset by default — no automatic collapse.\n * @example 'responsive=\"(max-width: 768px)\"'\n */\n responsive?: string;\n /** Visual style variant */\n variant?: SidebarVariant;\n};\n\n/**\n * `bit-sidebar` — A collapsible navigation sidebar with group and item support.\n *\n * @element bit-sidebar\n *\n * @attr {boolean} collapsed - Controlled collapsed state\n * @attr {boolean} default-collapsed - Initial collapsed state for uncontrolled sidebars\n * @attr {boolean} collapsible - Show the collapse toggle button\n * @attr {string} variant - Visual variant: 'floating' | 'inset'\n * @attr {string} label - Accessible aria-label for the nav landmark\n *\n * @slot header - Branding or logo content above the nav\n * @slot - Navigation content (bit-sidebar-group / bit-sidebar-item)\n * @slot footer - Footer content below the nav (user info, settings, etc.)\n *\n * @fires collapsed-change - Fired when collapsed state changes\n *\n * @cssprop --sidebar-width - Expanded sidebar width (default: 16rem)\n * @cssprop --sidebar-collapsed-width - Collapsed sidebar width (default: 3.5rem)\n * @cssprop --sidebar-bg - Sidebar background color\n * @cssprop --sidebar-border-color - Border color\n *\n * @attr {string} responsive - CSS media query that auto-collapses the sidebar when it matches (e.g. '(max-width: 768px)')\n *\n * @example\n * ```html\n * <bit-sidebar collapsible label=\"App navigation\">\n * <span slot=\"header\">My App</span>\n * <bit-sidebar-group label=\"Main\">\n * <bit-sidebar-item href=\"/dashboard\" active>Dashboard</bit-sidebar-item>\n * <bit-sidebar-item href=\"/settings\">Settings</bit-sidebar-item>\n * </bit-sidebar-group>\n * </bit-sidebar>\n *\n * <!-- Auto-collapse on mobile -->\n * <bit-sidebar collapsible responsive=\"(max-width: 768px)\">...</bit-sidebar>\n * ```\n */\nexport const SIDEBAR_TAG = defineComponent<BitSidebarProps, BitSidebarEvents>({\n props: {\n collapsed: { default: undefined, type: Boolean },\n collapsible: { default: false, type: Boolean },\n 'default-collapsed': { default: false, type: Boolean },\n label: { default: 'Sidebar navigation' },\n responsive: { default: undefined },\n variant: { default: undefined },\n },\n setup({ emit, host, props, slots }) {\n const hasHeader = computed(() => slots.has('header').value);\n const hasFooter = computed(() => slots.has('footer').value);\n\n const isControlled = signal(host.hasAttribute('collapsed'));\n const collapsedState = signal(\n isControlled.value ? host.hasAttribute('collapsed') : props['default-collapsed'].value,\n );\n\n const isCollapsed = computed(() => collapsedState.value);\n\n provide(SIDEBAR_CTX, {\n collapsed: isCollapsed as ReadonlySignal<boolean>,\n variant: props.variant as ReadonlySignal<SidebarVariant | undefined>,\n });\n\n const setCollapsed = (next: boolean, source: SidebarCollapseSource) => {\n if (isCollapsed.value === next) return;\n\n if (!isControlled.value) {\n collapsedState.value = next;\n }\n\n emit('collapsed-change', { collapsed: next, source });\n };\n const doToggle = () => {\n setCollapsed(!isCollapsed.value, 'toggle');\n };\n\n effect(() => {\n host.toggleAttribute('data-collapsed', isCollapsed.value);\n });\n\n onMount(() => {\n const el = host as SidebarElement;\n\n el.setCollapsed = (next) => setCollapsed(Boolean(next), 'api');\n el.toggle = doToggle;\n\n let mediaCleanup: (() => void) | undefined;\n const observer = new MutationObserver(() => {\n if (!host.hasAttribute('collapsed') && !isControlled.value) return;\n\n isControlled.value = true;\n collapsedState.value = host.hasAttribute('collapsed');\n });\n\n observer.observe(host, {\n attributeFilter: ['collapsed'],\n attributes: true,\n });\n\n watch(\n props.responsive,\n (query) => {\n mediaCleanup?.();\n mediaCleanup = undefined;\n\n const mediaQuery = String(query ?? '').trim();\n\n if (!mediaQuery) return;\n\n const mql = window.matchMedia(mediaQuery);\n const onChange = (event: MediaQueryListEvent) => {\n setCollapsed(event.matches, 'responsive');\n };\n\n setCollapsed(mql.matches, 'responsive');\n mql.addEventListener('change', onChange);\n\n mediaCleanup = () => {\n mql.removeEventListener('change', onChange);\n };\n },\n { immediate: true },\n );\n\n return () => {\n observer.disconnect();\n mediaCleanup?.();\n };\n });\n\n return html`\n <nav aria-label=\"${() => props.label.value}\" part=\"nav\">\n <div class=\"sidebar-header\" part=\"header\" ?hidden=${() => !hasHeader.value && !props.collapsible.value}>\n <slot name=\"header\"></slot>\n <button\n class=\"toggle-btn\"\n part=\"toggle-btn\"\n type=\"button\"\n ?hidden=${() => !props.collapsible.value}\n aria-label=\"${() => (isCollapsed.value ? 'Expand sidebar' : 'Collapse sidebar')}\"\n aria-expanded=\"${() => String(!isCollapsed.value)}\"\n @click=\"${doToggle}\">\n <span class=\"toggle-icon\" aria-hidden=\"true\">${chevronLeftIcon}</span>\n </button>\n </div>\n <div class=\"sidebar-content\" part=\"content\">\n <slot></slot>\n </div>\n <div class=\"sidebar-footer\" part=\"footer\" ?hidden=${() => !hasFooter.value}>\n <slot name=\"footer\"></slot>\n </div>\n </nav>\n `;\n },\n styles: [coarsePointerMixin, reducedMotionMixin, sidebarStyles],\n tag: 'bit-sidebar',\n});\n\n// ─── bit-sidebar-group styles ────────────────────────────────────────────────\n\nimport groupStyles from './sidebar-group.css?inline';\n\n/** Sidebar group properties */\nexport type BitSidebarGroupProps = {\n /** Whether this group can be collapsed */\n collapsible?: boolean;\n /** Initial open state in uncontrolled mode */\n 'default-open'?: boolean;\n /** Accessible label for the group */\n label?: string;\n /** Controlled open state */\n open?: boolean;\n};\n\n/**\n * `bit-sidebar-group` — A labelled section within `bit-sidebar`.\n *\n * @element bit-sidebar-group\n *\n * @attr {string} label - Group label text\n * @attr {boolean} collapsible - Whether this group can be toggled open/closed\n * @attr {boolean} open - Controlled expanded state\n * @attr {boolean} default-open - Initial expanded state in uncontrolled mode\n *\n * @slot - Navigation items (`bit-sidebar-item`)\n * @slot icon - Icon displayed before the label\n *\n * @fires open-change - Fired when the group open state changes (collapsible groups only)\n *\n * @example\n * ```html\n * <bit-sidebar-group label=\"Main\" collapsible open>\n * <bit-sidebar-item href=\"/home\">Home</bit-sidebar-item>\n * </bit-sidebar-group>\n * ```\n */\nexport const SIDEBAR_GROUP_TAG = defineComponent<BitSidebarGroupProps, BitSidebarGroupEvents>({\n props: {\n collapsible: { default: false, type: Boolean },\n 'default-open': { default: true, type: Boolean },\n label: { default: '' },\n open: { default: undefined, type: Boolean },\n },\n setup({ emit, host, props, slots }) {\n const hasIcon = computed(() => slots.has('icon').value);\n const sidebarCtx = inject(SIDEBAR_CTX, undefined);\n\n effect(() => {\n host.toggleAttribute('sidebar-collapsed', sidebarCtx?.collapsed.value ?? false);\n });\n\n const isControlled = computed(() => props.open.value !== undefined);\n const openState = signal(props['default-open'].value);\n const isOpen = computed(() => {\n if (!props.collapsible.value) return true;\n\n if (isControlled.value) return props.open.value ?? false;\n\n return openState.value;\n });\n\n watch(props.open, (value) => {\n if (value === undefined) return;\n\n openState.value = value;\n });\n\n effect(() => {\n host.toggleAttribute('open', isOpen.value);\n });\n\n const handleGroupClick = (e: MouseEvent) => {\n if (!(e.target instanceof HTMLElement) || !e.target.closest('.group-header')) return;\n\n e.stopPropagation();\n e.preventDefault();\n\n if (!props.collapsible.value) {\n return;\n }\n\n const next = !isOpen.value;\n\n if (props.open.value === next) return;\n\n if (!isControlled.value) {\n openState.value = next;\n }\n\n emit('open-change', { open: next });\n };\n\n return html`\n <details class=\"group\" part=\"group\" ?open=${() => isOpen.value} @click=\"${handleGroupClick}\">\n <summary\n class=\"group-header\"\n part=\"group-header\"\n :aria-expanded=\"${() => (props.collapsible.value ? String(props.open.value) : null)}\">\n <span class=\"group-icon\" part=\"group-icon\" ?hidden=${() => !hasIcon.value} aria-hidden=\"true\">\n <slot name=\"icon\"></slot>\n </span>\n <span class=\"group-label\" part=\"group-label\">${() => props.label.value}</span>\n <span class=\"chevron\" ?hidden=${() => !props.collapsible.value} aria-hidden=\"true\">${chevronRightIcon}</span>\n </summary>\n <div class=\"group-items\" part=\"group-items\" role=\"list\">\n <slot></slot>\n </div>\n </details>\n `;\n },\n styles: [reducedMotionMixin, groupStyles],\n tag: 'bit-sidebar-group',\n});\n\n// ─── bit-sidebar-item styles ─────────────────────────────────────────────────\n\nimport itemStyles from './sidebar-item.css?inline';\n\n/** Sidebar item properties */\nexport type BitSidebarItemProps = {\n /** Whether this item represents the current page/section */\n active?: boolean;\n /** Whether this item is disabled */\n disabled?: boolean;\n /** Navigation href — renders an `<a>` when set, otherwise a `<button>` */\n href?: string;\n /**\n * Relationship of the linked URL (`rel` attribute on the inner `<a>`).\n * Only applies when `href` is set.\n */\n rel?: string;\n /**\n * Browsing context for the link (`target` attribute on the inner `<a>`).\n * Only applies when `href` is set.\n */\n target?: string;\n};\n\n/**\n * `bit-sidebar-item` — An individual navigation item in a `bit-sidebar`.\n *\n * Renders as an `<a>` when `href` is provided, otherwise as a `<button>`.\n * Marks the active page via `aria-current=\"page\"` when the `active` attribute is set.\n *\n * @element bit-sidebar-item\n *\n * @attr {string} href - Link URL; renders an anchor when set\n * @attr {boolean} active - Marks the item as the current page\n * @attr {boolean} disabled - Disables the item\n * @attr {string} rel - Anchor `rel` attribute (links only)\n * @attr {string} target - Anchor `target` attribute (links only)\n *\n * @slot - Label text\n * @slot icon - Leading icon\n * @slot end - Trailing content (badge, shortcut, arrow, etc.)\n *\n * @part item - The inner anchor or button element\n * @part item-icon - The icon wrapper\n * @part item-label - The label wrapper\n * @part item-end - The trailing content wrapper\n *\n * @cssprop --sidebar-item-color - Default text color\n * @cssprop --sidebar-item-hover-bg - Hover background\n * @cssprop --sidebar-item-hover-color - Hover text color\n * @cssprop --sidebar-item-active-bg - Active background\n * @cssprop --sidebar-item-active-color - Active text color\n * @cssprop --sidebar-item-indicator - Active indicator bar color\n *\n * @example\n * ```html\n * <bit-sidebar-item href=\"/dashboard\" active>\n * <span slot=\"icon\">🏠</span>\n * Dashboard\n * </bit-sidebar-item>\n *\n * <bit-sidebar-item href=\"/users\">\n * <span slot=\"icon\">👤</span>\n * Users\n * <bit-badge slot=\"end\" color=\"primary\">3</bit-badge>\n * </bit-sidebar-item>\n * ```\n */\nexport const SIDEBAR_ITEM_TAG = defineComponent<BitSidebarItemProps>({\n props: {\n active: { default: false, type: Boolean },\n disabled: { default: false, type: Boolean },\n href: { default: undefined },\n rel: { default: undefined },\n target: { default: undefined },\n },\n setup({ host, props, slots }) {\n const hasIcon = computed(() => slots.has('icon').value);\n const hasEnd = computed(() => slots.has('end').value);\n const sidebarCtx = inject(SIDEBAR_CTX, undefined);\n\n effect(() => {\n host.toggleAttribute('sidebar-collapsed', sidebarCtx?.collapsed.value ?? false);\n });\n\n const isLink = computed(() => !!props.href.value && !props.disabled.value);\n const renderItemContent = () => html`\n <span class=\"item-icon\" part=\"item-icon\" ?hidden=${() => !hasIcon.value} aria-hidden=\"true\">\n <slot name=\"icon\"></slot>\n </span>\n <span class=\"item-label\" part=\"item-label\"><slot></slot></span>\n <span class=\"item-end\" part=\"item-end\" ?hidden=${() => !hasEnd.value}>\n <slot name=\"end\"></slot>\n </span>\n `;\n\n return html`\n ${() =>\n isLink.value\n ? html`\n <a\n class=\"item\"\n part=\"item\"\n href=\"${() => props.href.value}\"\n :rel=\"${() => props.rel.value ?? null}\"\n :target=\"${() => props.target.value ?? null}\"\n :aria-current=\"${() => (props.active.value ? 'page' : null)}\">\n ${renderItemContent()}\n </a>\n `\n : html`\n <button\n class=\"item\"\n part=\"item\"\n type=\"button\"\n :aria-current=\"${() => (props.active.value ? 'page' : null)}\"\n :disabled=\"${() => props.disabled.value || null}\">\n ${renderItemContent()}\n </button>\n `}\n `;\n },\n styles: [coarsePointerMixin, itemStyles],\n tag: 'bit-sidebar-item',\n});\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/accessibility.css.cjs`);require(`./styles/index.cjs`);const t=require(`./craftit/dist/labs/observers.cjs`);require(`./craftit/dist/labs.cjs`);const n=require(`./feedback/skeleton/skeleton.css?inline.cjs`);let r=require(`@vielzeug/craftit`);var i=(0,r.defineComponent)({props:{animated:{default:!0},height:{default:void 0},lines:{default:1},radius:{default:void 0},size:{default:void 0},striped:{default:!1},variant:{default:`rect`},width:{default:void 0}},setup({host:e,props:n}){let i=(0,r.computed)(()=>{let e=Math.floor(Number(n.lines.value));return Number.isFinite(e)&&e>0?e:1}),a=(0,r.computed)(()=>n.variant.value===`text`?i.value:1);return(0,r.watch)([n.width,n.height,n.radius,n.animated],()=>{n.width.value?e.style.setProperty(`--skeleton-width`,n.width.value):e.style.removeProperty(`--skeleton-width`),n.height.value?e.style.setProperty(`--skeleton-height`,n.height.value):e.style.removeProperty(`--skeleton-height`),n.radius.value?e.style.setProperty(`--skeleton-radius`,n.radius.value):e.style.removeProperty(`--skeleton-radius`);let t=e.getAttribute(`animated`)!==`false`&&n.animated.value!==!1;e.setAttribute(`data-animated`,t?`true`:`false`)},{immediate:!0}),(0,r.onMount)(()=>{(0,r.watch)(t.r(e,{threshold:0}),t=>{e.toggleAttribute(`data-paused`,t!==null&&!t.isIntersecting)})}),r.html`
2
+ <div class="stack" part="stack">
3
+ ${()=>Array.from({length:a.value},(e,t)=>{let i=n.variant.value===`text`&&a.value>1&&t===a.value-1;return r.html`<div
4
+ class="bone"
5
+ part="bone"
6
+ aria-hidden="true"
7
+ :data-last="${()=>i?`true`:null}"></div>`})}
8
+ </div>
9
+ `},styles:[e.reducedMotionMixin,n.default],tag:`bit-skeleton`});exports.SKELETON_TAG=i;
10
+ //# sourceMappingURL=skeleton.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.cjs","names":[],"sources":["../src/feedback/skeleton/skeleton.ts"],"sourcesContent":["import { computed, defineComponent, html, onMount, watch } from '@vielzeug/craftit';\nimport { observeIntersection } from '@vielzeug/craftit/labs';\n\nimport type { ComponentSize } from '../../types';\n\nimport { reducedMotionMixin } from '../../styles';\nimport componentStyles from './skeleton.css?inline';\n\n/** Skeleton loader component properties */\nexport type BitSkeletonProps = {\n /** Toggle shimmer animation */\n animated?: boolean;\n /** Height override (e.g. '1rem', '3rem') */\n height?: string;\n /** Number of text lines for `variant='text'` */\n lines?: number;\n /** Radius override (e.g. '9999px', 'var(--rounded-xl)') */\n radius?: string;\n /** Size preset controlling line height and circle size */\n size?: ComponentSize;\n /** Render diagonal stripes instead of the shimmer — useful as a design-mode placeholder */\n striped?: boolean;\n /** Visual variant: 'rect' (default), 'circle', or 'text' */\n variant?: 'rect' | 'circle' | 'text';\n /** Width override (e.g. '12rem', '70%') */\n width?: string;\n};\n\n/**\n * A shimmer placeholder that represents loading content.\n * Control dimensions via the `--skeleton-width` and `--skeleton-height` CSS custom properties,\n * or via `width` / `height` inline styles.\n *\n * @element bit-skeleton\n *\n * @attr {string} variant - Shape: 'rect' (default) | 'circle' | 'text'\n * @attr {string} size - Height/circle preset: 'sm' | 'md' | 'lg'\n * @attr {string} width - Width override (CSS length/percentage)\n * @attr {string} height - Height override (CSS length)\n * @attr {string} radius - Radius override\n * @attr {boolean} animated - Disable with `animated=\"false\"`\n * @attr {number} lines - Text line count (only for `variant='text'`)\n * @attr {boolean} striped - Replace shimmer with diagonal stripes\n *\n * @cssprop --skeleton-bg - Base shimmer color\n * @cssprop --skeleton-highlight - Shimmer highlight color\n * @cssprop --skeleton-radius - Border radius\n * @cssprop --skeleton-size - Circle fallback size\n * @cssprop --skeleton-width - Width (default: 100%)\n * @cssprop --skeleton-height - Height (default: var(--size-4))\n * @cssprop --skeleton-line-gap - Vertical gap between text lines\n * @cssprop --skeleton-last-line-width - Width of the final text line\n * @cssprop --skeleton-duration - Shimmer animation duration\n * @cssprop --skeleton-stripe-size - Width of each diagonal stripe (default: 6px)\n *\n * @example\n * ```html\n * <!-- Paragraph lines -->\n * <bit-skeleton variant=\"text\" lines=\"3\" width=\"100%\"></bit-skeleton>\n *\n * <!-- Avatar -->\n * <bit-skeleton variant=\"circle\" size=\"md\"></bit-skeleton>\n *\n * <!-- Card image -->\n * <bit-skeleton width=\"100%\" height=\"10rem\"></bit-skeleton>\n * ```\n */\nexport const SKELETON_TAG = defineComponent<BitSkeletonProps>({\n props: {\n animated: { default: true },\n height: { default: undefined },\n lines: { default: 1 },\n radius: { default: undefined },\n size: { default: undefined },\n striped: { default: false },\n variant: { default: 'rect' },\n width: { default: undefined },\n },\n setup({ host, props }) {\n const lineCount = computed(() => {\n const value = Math.floor(Number(props.lines.value));\n\n return Number.isFinite(value) && value > 0 ? value : 1;\n });\n const renderLineCount = computed(() => (props.variant.value === 'text' ? lineCount.value : 1));\n\n watch(\n [props.width, props.height, props.radius, props.animated],\n () => {\n if (props.width.value) host.style.setProperty('--skeleton-width', props.width.value);\n else host.style.removeProperty('--skeleton-width');\n\n if (props.height.value) host.style.setProperty('--skeleton-height', props.height.value);\n else host.style.removeProperty('--skeleton-height');\n\n if (props.radius.value) host.style.setProperty('--skeleton-radius', props.radius.value);\n else host.style.removeProperty('--skeleton-radius');\n\n const rawAnimated = host.getAttribute('animated');\n const isAnimated = rawAnimated !== 'false' && props.animated.value !== false;\n\n host.setAttribute('data-animated', isAnimated ? 'true' : 'false');\n },\n { immediate: true },\n );\n onMount(() => {\n const entry = observeIntersection(host, { threshold: 0 });\n\n watch(entry, (e) => {\n host.toggleAttribute('data-paused', e !== null && !e.isIntersecting);\n });\n });\n\n return html`\n <div class=\"stack\" part=\"stack\">\n ${() =>\n Array.from({ length: renderLineCount.value }, (_, index) => {\n const isLastLine =\n props.variant.value === 'text' && renderLineCount.value > 1 && index === renderLineCount.value - 1;\n\n return html`<div\n class=\"bone\"\n part=\"bone\"\n aria-hidden=\"true\"\n :data-last=\"${() => (isLastLine ? 'true' : null)}\"></div>`;\n })}\n </div>\n `;\n },\n styles: [reducedMotionMixin, componentStyles],\n tag: 'bit-skeleton',\n});\n"],"mappings":"oVAmEA,IAAa,GAAA,EAAA,EAAA,iBAAiD,CAC5D,MAAO,CACL,SAAU,CAAE,QAAS,GAAM,CAC3B,OAAQ,CAAE,QAAS,IAAA,GAAW,CAC9B,MAAO,CAAE,QAAS,EAAG,CACrB,OAAQ,CAAE,QAAS,IAAA,GAAW,CAC9B,KAAM,CAAE,QAAS,IAAA,GAAW,CAC5B,QAAS,CAAE,QAAS,GAAO,CAC3B,QAAS,CAAE,QAAS,OAAQ,CAC5B,MAAO,CAAE,QAAS,IAAA,GAAW,CAC9B,CACD,MAAM,CAAE,OAAM,SAAS,CACrB,IAAM,GAAA,EAAA,EAAA,cAA2B,CAC/B,IAAM,EAAQ,KAAK,MAAM,OAAO,EAAM,MAAM,MAAM,CAAC,CAEnD,OAAO,OAAO,SAAS,EAAM,EAAI,EAAQ,EAAI,EAAQ,GACrD,CACI,GAAA,EAAA,EAAA,cAAkC,EAAM,QAAQ,QAAU,OAAS,EAAU,MAAQ,EAAG,CA6B9F,OA3BA,EAAA,EAAA,OACE,CAAC,EAAM,MAAO,EAAM,OAAQ,EAAM,OAAQ,EAAM,SAAS,KACnD,CACA,EAAM,MAAM,MAAO,EAAK,MAAM,YAAY,mBAAoB,EAAM,MAAM,MAAM,CAC/E,EAAK,MAAM,eAAe,mBAAmB,CAE9C,EAAM,OAAO,MAAO,EAAK,MAAM,YAAY,oBAAqB,EAAM,OAAO,MAAM,CAClF,EAAK,MAAM,eAAe,oBAAoB,CAE/C,EAAM,OAAO,MAAO,EAAK,MAAM,YAAY,oBAAqB,EAAM,OAAO,MAAM,CAClF,EAAK,MAAM,eAAe,oBAAoB,CAGnD,IAAM,EADc,EAAK,aAAa,WAAW,GACd,SAAW,EAAM,SAAS,QAAU,GAEvE,EAAK,aAAa,gBAAiB,EAAa,OAAS,QAAQ,EAEnE,CAAE,UAAW,GAAM,CACpB,EACD,EAAA,EAAA,aAAc,EAGZ,EAAA,EAAA,OAFc,EAAA,EAAoB,EAAM,CAAE,UAAW,EAAG,CAAC,CAE3C,GAAM,CAClB,EAAK,gBAAgB,cAAe,IAAM,MAAQ,CAAC,EAAE,eAAe,EACpE,EACF,CAEK,EAAA,IAAI;;cAGL,MAAM,KAAK,CAAE,OAAQ,EAAgB,MAAO,EAAG,EAAG,IAAU,CAC1D,IAAM,EACJ,EAAM,QAAQ,QAAU,QAAU,EAAgB,MAAQ,GAAK,IAAU,EAAgB,MAAQ,EAEnG,MAAO,GAAA,IAAI;;;;gCAIY,EAAa,OAAS,KAAM,WACnD,CAAC;;OAIX,OAAQ,CAAC,EAAA,mBAAoB,EAAA,QAAgB,CAC7C,IAAK,eACN,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { reducedMotionMixin as e } from "./styles/mixins/accessibility.css.js";
2
+ import "./styles/index.js";
3
+ import { r as t } from "./craftit/dist/labs/observers.js";
4
+ import "./craftit/dist/labs.js";
5
+ import n from "./feedback/skeleton/skeleton.css?inline.js";
6
+ import { computed as r, defineComponent as i, html as a, onMount as o, watch as s } from "@vielzeug/craftit";
7
+ //#region src/feedback/skeleton/skeleton.ts
8
+ var c = i({
9
+ props: {
10
+ animated: { default: !0 },
11
+ height: { default: void 0 },
12
+ lines: { default: 1 },
13
+ radius: { default: void 0 },
14
+ size: { default: void 0 },
15
+ striped: { default: !1 },
16
+ variant: { default: "rect" },
17
+ width: { default: void 0 }
18
+ },
19
+ setup({ host: e, props: n }) {
20
+ let i = r(() => {
21
+ let e = Math.floor(Number(n.lines.value));
22
+ return Number.isFinite(e) && e > 0 ? e : 1;
23
+ }), c = r(() => n.variant.value === "text" ? i.value : 1);
24
+ return s([
25
+ n.width,
26
+ n.height,
27
+ n.radius,
28
+ n.animated
29
+ ], () => {
30
+ n.width.value ? e.style.setProperty("--skeleton-width", n.width.value) : e.style.removeProperty("--skeleton-width"), n.height.value ? e.style.setProperty("--skeleton-height", n.height.value) : e.style.removeProperty("--skeleton-height"), n.radius.value ? e.style.setProperty("--skeleton-radius", n.radius.value) : e.style.removeProperty("--skeleton-radius");
31
+ let t = e.getAttribute("animated") !== "false" && n.animated.value !== !1;
32
+ e.setAttribute("data-animated", t ? "true" : "false");
33
+ }, { immediate: !0 }), o(() => {
34
+ s(t(e, { threshold: 0 }), (t) => {
35
+ e.toggleAttribute("data-paused", t !== null && !t.isIntersecting);
36
+ });
37
+ }), a`
38
+ <div class="stack" part="stack">
39
+ ${() => Array.from({ length: c.value }, (e, t) => {
40
+ let r = n.variant.value === "text" && c.value > 1 && t === c.value - 1;
41
+ return a`<div
42
+ class="bone"
43
+ part="bone"
44
+ aria-hidden="true"
45
+ :data-last="${() => r ? "true" : null}"></div>`;
46
+ })}
47
+ </div>
48
+ `;
49
+ },
50
+ styles: [e, n],
51
+ tag: "bit-skeleton"
52
+ });
53
+ //#endregion
54
+ export { c as SKELETON_TAG };
55
+
56
+ //# sourceMappingURL=skeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skeleton.js","names":[],"sources":["../src/feedback/skeleton/skeleton.ts"],"sourcesContent":["import { computed, defineComponent, html, onMount, watch } from '@vielzeug/craftit';\nimport { observeIntersection } from '@vielzeug/craftit/labs';\n\nimport type { ComponentSize } from '../../types';\n\nimport { reducedMotionMixin } from '../../styles';\nimport componentStyles from './skeleton.css?inline';\n\n/** Skeleton loader component properties */\nexport type BitSkeletonProps = {\n /** Toggle shimmer animation */\n animated?: boolean;\n /** Height override (e.g. '1rem', '3rem') */\n height?: string;\n /** Number of text lines for `variant='text'` */\n lines?: number;\n /** Radius override (e.g. '9999px', 'var(--rounded-xl)') */\n radius?: string;\n /** Size preset controlling line height and circle size */\n size?: ComponentSize;\n /** Render diagonal stripes instead of the shimmer — useful as a design-mode placeholder */\n striped?: boolean;\n /** Visual variant: 'rect' (default), 'circle', or 'text' */\n variant?: 'rect' | 'circle' | 'text';\n /** Width override (e.g. '12rem', '70%') */\n width?: string;\n};\n\n/**\n * A shimmer placeholder that represents loading content.\n * Control dimensions via the `--skeleton-width` and `--skeleton-height` CSS custom properties,\n * or via `width` / `height` inline styles.\n *\n * @element bit-skeleton\n *\n * @attr {string} variant - Shape: 'rect' (default) | 'circle' | 'text'\n * @attr {string} size - Height/circle preset: 'sm' | 'md' | 'lg'\n * @attr {string} width - Width override (CSS length/percentage)\n * @attr {string} height - Height override (CSS length)\n * @attr {string} radius - Radius override\n * @attr {boolean} animated - Disable with `animated=\"false\"`\n * @attr {number} lines - Text line count (only for `variant='text'`)\n * @attr {boolean} striped - Replace shimmer with diagonal stripes\n *\n * @cssprop --skeleton-bg - Base shimmer color\n * @cssprop --skeleton-highlight - Shimmer highlight color\n * @cssprop --skeleton-radius - Border radius\n * @cssprop --skeleton-size - Circle fallback size\n * @cssprop --skeleton-width - Width (default: 100%)\n * @cssprop --skeleton-height - Height (default: var(--size-4))\n * @cssprop --skeleton-line-gap - Vertical gap between text lines\n * @cssprop --skeleton-last-line-width - Width of the final text line\n * @cssprop --skeleton-duration - Shimmer animation duration\n * @cssprop --skeleton-stripe-size - Width of each diagonal stripe (default: 6px)\n *\n * @example\n * ```html\n * <!-- Paragraph lines -->\n * <bit-skeleton variant=\"text\" lines=\"3\" width=\"100%\"></bit-skeleton>\n *\n * <!-- Avatar -->\n * <bit-skeleton variant=\"circle\" size=\"md\"></bit-skeleton>\n *\n * <!-- Card image -->\n * <bit-skeleton width=\"100%\" height=\"10rem\"></bit-skeleton>\n * ```\n */\nexport const SKELETON_TAG = defineComponent<BitSkeletonProps>({\n props: {\n animated: { default: true },\n height: { default: undefined },\n lines: { default: 1 },\n radius: { default: undefined },\n size: { default: undefined },\n striped: { default: false },\n variant: { default: 'rect' },\n width: { default: undefined },\n },\n setup({ host, props }) {\n const lineCount = computed(() => {\n const value = Math.floor(Number(props.lines.value));\n\n return Number.isFinite(value) && value > 0 ? value : 1;\n });\n const renderLineCount = computed(() => (props.variant.value === 'text' ? lineCount.value : 1));\n\n watch(\n [props.width, props.height, props.radius, props.animated],\n () => {\n if (props.width.value) host.style.setProperty('--skeleton-width', props.width.value);\n else host.style.removeProperty('--skeleton-width');\n\n if (props.height.value) host.style.setProperty('--skeleton-height', props.height.value);\n else host.style.removeProperty('--skeleton-height');\n\n if (props.radius.value) host.style.setProperty('--skeleton-radius', props.radius.value);\n else host.style.removeProperty('--skeleton-radius');\n\n const rawAnimated = host.getAttribute('animated');\n const isAnimated = rawAnimated !== 'false' && props.animated.value !== false;\n\n host.setAttribute('data-animated', isAnimated ? 'true' : 'false');\n },\n { immediate: true },\n );\n onMount(() => {\n const entry = observeIntersection(host, { threshold: 0 });\n\n watch(entry, (e) => {\n host.toggleAttribute('data-paused', e !== null && !e.isIntersecting);\n });\n });\n\n return html`\n <div class=\"stack\" part=\"stack\">\n ${() =>\n Array.from({ length: renderLineCount.value }, (_, index) => {\n const isLastLine =\n props.variant.value === 'text' && renderLineCount.value > 1 && index === renderLineCount.value - 1;\n\n return html`<div\n class=\"bone\"\n part=\"bone\"\n aria-hidden=\"true\"\n :data-last=\"${() => (isLastLine ? 'true' : null)}\"></div>`;\n })}\n </div>\n `;\n },\n styles: [reducedMotionMixin, componentStyles],\n tag: 'bit-skeleton',\n});\n"],"mappings":";;;;;;;AAmEA,IAAa,IAAe,EAAkC;CAC5D,OAAO;EACL,UAAU,EAAE,SAAS,IAAM;EAC3B,QAAQ,EAAE,SAAS,KAAA,GAAW;EAC9B,OAAO,EAAE,SAAS,GAAG;EACrB,QAAQ,EAAE,SAAS,KAAA,GAAW;EAC9B,MAAM,EAAE,SAAS,KAAA,GAAW;EAC5B,SAAS,EAAE,SAAS,IAAO;EAC3B,SAAS,EAAE,SAAS,QAAQ;EAC5B,OAAO,EAAE,SAAS,KAAA,GAAW;EAC9B;CACD,MAAM,EAAE,SAAM,YAAS;EACrB,IAAM,IAAY,QAAe;GAC/B,IAAM,IAAQ,KAAK,MAAM,OAAO,EAAM,MAAM,MAAM,CAAC;AAEnD,UAAO,OAAO,SAAS,EAAM,IAAI,IAAQ,IAAI,IAAQ;IACrD,EACI,IAAkB,QAAgB,EAAM,QAAQ,UAAU,SAAS,EAAU,QAAQ,EAAG;AA6B9F,SA3BA,EACE;GAAC,EAAM;GAAO,EAAM;GAAQ,EAAM;GAAQ,EAAM;GAAS,QACnD;AAOJ,GANI,EAAM,MAAM,QAAO,EAAK,MAAM,YAAY,oBAAoB,EAAM,MAAM,MAAM,GAC/E,EAAK,MAAM,eAAe,mBAAmB,EAE9C,EAAM,OAAO,QAAO,EAAK,MAAM,YAAY,qBAAqB,EAAM,OAAO,MAAM,GAClF,EAAK,MAAM,eAAe,oBAAoB,EAE/C,EAAM,OAAO,QAAO,EAAK,MAAM,YAAY,qBAAqB,EAAM,OAAO,MAAM,GAClF,EAAK,MAAM,eAAe,oBAAoB;GAGnD,IAAM,IADc,EAAK,aAAa,WAAW,KACd,WAAW,EAAM,SAAS,UAAU;AAEvE,KAAK,aAAa,iBAAiB,IAAa,SAAS,QAAQ;KAEnE,EAAE,WAAW,IAAM,CACpB,EACD,QAAc;AAGZ,KAFc,EAAoB,GAAM,EAAE,WAAW,GAAG,CAAC,GAE3C,MAAM;AAClB,MAAK,gBAAgB,eAAe,MAAM,QAAQ,CAAC,EAAE,eAAe;KACpE;IACF,EAEK,CAAI;;gBAGL,MAAM,KAAK,EAAE,QAAQ,EAAgB,OAAO,GAAG,GAAG,MAAU;GAC1D,IAAM,IACJ,EAAM,QAAQ,UAAU,UAAU,EAAgB,QAAQ,KAAK,MAAU,EAAgB,QAAQ;AAEnG,UAAO,CAAI;;;;kCAIY,IAAa,SAAS,KAAM;IACnD,CAAC;;;;CAIX,QAAQ,CAAC,GAAoB,EAAgB;CAC7C,KAAK;CACN,CAAC"}
@@ -0,0 +1,24 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/accessibility.css.cjs`),t=require(`./styles/mixins/shape.css.cjs`),n=require(`./styles/mixins/states.css.cjs`),r=require(`./styles/mixins/theme.css.cjs`);require(`./styles/index.cjs`);const i=require(`./inputs/shared/form-context.cjs`),a=require(`./inputs/shared/dom-sync/form-context.cjs`);require(`./inputs/shared/dom-sync/index.cjs`);const o=require(`./inputs/shared/validation/index.cjs`),s=require(`./inputs/shared/design-presets.cjs`),c=require(`./inputs/slider/slider.css?inline.cjs`);let l=require(`@vielzeug/craftit`);var u=(0,l.defineComponent)({formAssociated:!0,props:{color:{default:void 0},disabled:{default:!1},from:{default:`0`},"from-value-text":{default:void 0},max:{default:`100`},min:{default:`0`},name:{default:``},range:{default:!1},size:{default:void 0},step:{default:`1`},to:{default:`100`},"to-value-text":{default:void 0},value:{default:`0`},"value-text":{default:void 0}},setup({emit:e,host:t,props:n,slots:r}){let s=n.range.value,c=(e,t)=>{let n=Number(e);return Number.isFinite(n)?n:t},u=e=>{let t=c(n.min.value,0),r=c(n.max.value,100),i=c(n.step.value,1);return Math.max(t,Math.min(r,Math.round(e/i)*i))},d=e=>{let t=c(n.min.value,0),r=c(n.max.value,100);return(e-t)/(r-t)*100},f=(0,l.inject)(i.FORM_CTX,void 0);a.mountFormContextSync(t,f,n);let p,m=(0,l.signal)(`0`);s||(p=(0,l.defineField)({disabled:(0,l.computed)(()=>!!n.disabled.value),value:m},{onReset:()=>{m.value=`0`}}),(0,l.watch)(n.value,e=>{m.value=String(e)},{immediate:!0}),(0,l.aria)({disabled:()=>!!n.disabled.value,valuemax:()=>c(n.max.value,100),valuemin:()=>c(n.min.value,0),valuenow:()=>Number(m.value||0),valuetext:()=>n[`value-text`].value??null}));let h=(0,l.signal)(0),g=(0,l.signal)(100);s&&(p=(0,l.defineField)({disabled:(0,l.computed)(()=>!!n.disabled.value),toFormValue:({from:e,to:t})=>{let r=n.name.value;if(!r)return null;let i=new FormData;return i.append(`${r}[from]`,String(e)),i.append(`${r}[to]`,String(t)),i},value:(0,l.computed)(()=>({from:h.value,to:g.value}))},{onReset:()=>{h.value=u(c(n.from.value,0)),g.value=u(c(n.to.value,100))}}),(0,l.watch)(n.from,e=>{h.value=u(c(e,0))},{immediate:!0}),(0,l.watch)(n.to,e=>{g.value=u(c(e,100))},{immediate:!0}));let _=(0,l.ref)(),v=(0,l.ref)(),y=(0,l.ref)(),b=(0,l.ref)(),x=(0,l.createId)(`slider-start`),S=(0,l.createId)(`slider-end`),C=e=>{let n=d(e);t.style.setProperty(`--_thumb-pos`,`${n}%`),t.style.setProperty(`--_fill-start`,`0%`),t.style.setProperty(`--_fill-width`,`${n}%`)},w=()=>{let e=d(h.value),n=d(g.value);t.style.setProperty(`--_thumb-start`,`${e}%`),t.style.setProperty(`--_thumb-end`,`${n}%`),t.style.setProperty(`--_fill-start`,`${e}%`),t.style.setProperty(`--_fill-width`,`${n-e}%`)},T=(e,t,n,r,i)=>e===`ArrowRight`||e===`ArrowUp`?i+t:e===`ArrowLeft`||e===`ArrowDown`?i-t:e===`Home`?n:e===`End`?r:null,{triggerValidation:E}=o.createFieldValidation(f,{reportValidity:()=>p?.reportValidity()??!1}),D=r=>{w();let i=e=>{let t=r.getBoundingClientRect(),i=c(n.min.value,0),a=c(n.max.value,100);return u(i+Math.max(0,Math.min(1,(e-t.left)/t.width))*(a-i))},a=null,o=t=>{let r=c(n.min.value,0),i=c(n.max.value,100);a===`start`?h.value=Math.min(u(t),g.value):a===`end`&&(g.value=Math.max(u(t),h.value)),h.value=Math.max(r,Math.min(h.value,i)),g.value=Math.max(r,Math.min(g.value,i)),w(),e(`change`,{from:h.value,to:g.value,value:{from:h.value,to:g.value}}),E(`change`)};(0,l.handle)(r,`pointerdown`,(0,l.guard)(()=>!n.disabled.value,e=>{e.preventDefault();let n=i(e.clientX);a=Math.abs(n-h.value)<=Math.abs(n-g.value)?`start`:`end`,t.setAttribute(`data-dragging`,``),e.target.setPointerCapture(e.pointerId),o(n)})),(0,l.handle)(r,`pointermove`,(0,l.guard)(()=>!!a,e=>{e.preventDefault(),o(i(e.clientX))})),(0,l.handle)(r,`pointerup`,(0,l.guard)(()=>!!a,e=>{e.preventDefault(),a=null,t.removeAttribute(`data-dragging`),e.target.releasePointerCapture(e.pointerId)}));let s=(t,r)=>i=>{if(n.disabled.value)return;let a=c(n.step.value,1),o=c(n.min.value,0),s=c(n.max.value,100),l=T(i.key,a,o,s,t());l!==null&&(i.preventDefault(),r(u(Math.max(o,Math.min(s,l)))),w(),e(`change`,{from:h.value,originalEvent:i,to:g.value,value:{from:h.value,to:g.value}}),E(`change`))},d=y.value,f=b.value;d&&(d.addEventListener(`keydown`,s(()=>h.value,e=>{h.value=Math.min(e,g.value)})),(0,l.aria)(d,{label:`Range start`,valuemax:()=>g.value,valuemin:()=>c(n.min.value,0),valuenow:()=>h.value,valuetext:()=>n[`from-value-text`].value??null})),f&&(f.addEventListener(`keydown`,s(()=>g.value,e=>{g.value=Math.max(e,h.value)})),(0,l.aria)(f,{label:`Range end`,valuemax:()=>c(n.max.value,100),valuemin:()=>h.value,valuenow:()=>g.value,valuetext:()=>n[`to-value-text`].value??null}))},O=r=>{t.setAttribute(`role`,`slider`),n.disabled.value||t.setAttribute(`tabindex`,`0`),C(Number(m.value));let i=t=>{if(n.disabled.value)return;let i=r.getBoundingClientRect(),a=c(n.min.value,0),o=c(n.max.value,100),s=c(n.step.value,1),l=Math.max(0,Math.min(1,(t-i.left)/i.width)),u=Math.max(a,Math.min(o,Math.round((a+l*(o-a))/s)*s));Number(m.value)!==u&&(m.value=u.toString(),C(u),e(`change`,{value:u}),E(`change`))},a=!1;(0,l.handle)(r,`pointerdown`,(0,l.guard)(()=>!n.disabled.value,e=>{e.preventDefault(),a=!0,i(e.clientX),e.target.setPointerCapture(e.pointerId)})),(0,l.handle)(r,`pointermove`,(0,l.guard)(()=>a,e=>{e.preventDefault(),t.hasAttribute(`data-dragging`)||t.setAttribute(`data-dragging`,``),i(e.clientX)})),(0,l.handle)(r,`pointerup`,(0,l.guard)(()=>a,e=>{e.preventDefault(),a=!1,t.removeAttribute(`data-dragging`),e.target.releasePointerCapture(e.pointerId)})),(0,l.handle)(t,`keydown`,(0,l.guard)(()=>!n.disabled.value,t=>{let r=c(n.min.value,0),i=c(n.max.value,100),a=c(n.step.value,1),o=Number(m.value||0),s=T(t.key,a,r,i,o);if(s===null)return;t.preventDefault();let l=Math.max(r,Math.min(i,s));l!==o&&(m.value=l.toString(),C(l),e(`change`,{originalEvent:t,value:l}),E(`change`))}))};return(0,l.onMount)(()=>{let e=_.value;if(e){if(r.has(`default`).value&&v.value){let e=(0,l.createId)(`slider-label`);v.value.id=e,s||(0,l.aria)({labelledby:e})}s?D(e):O(e)}}),l.html`
2
+ <div class="slider-container" part="slider" ref=${_}>
3
+ <div class="slider-track" part="track">
4
+ <div class="slider-fill" part="fill"></div>
5
+ <div class="slider-thumb slider-thumb-sole" part="thumb"></div>
6
+ <div
7
+ class="slider-thumb slider-thumb-start"
8
+ part="thumb-start"
9
+ ref=${y}
10
+ role="slider"
11
+ tabindex="${()=>n.disabled.value?`-1`:`0`}"
12
+ id="${x}"></div>
13
+ <div
14
+ class="slider-thumb slider-thumb-end"
15
+ part="thumb-end"
16
+ ref=${b}
17
+ role="slider"
18
+ tabindex="${()=>n.disabled.value?`-1`:`0`}"
19
+ id="${S}"></div>
20
+ </div>
21
+ </div>
22
+ <span class="label" part="label" ref=${v}><slot></slot></span>
23
+ `},styles:[n.disabledStateMixin(),r.colorThemeMixin,t.sizeVariantMixin(s.SLIDER_SIZE_PRESET),c.default,e.coarsePointerMixin],tag:`bit-slider`});exports.SLIDER_TAG=u;
24
+ //# sourceMappingURL=slider.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.cjs","names":[],"sources":["../src/inputs/slider/slider.ts"],"sourcesContent":["import {\n aria,\n computed,\n createId,\n defineComponent,\n defineField,\n guard,\n handle,\n html,\n inject,\n onMount,\n ref,\n signal,\n watch,\n} from '@vielzeug/craftit';\n\nimport type { DisablableProps, SizableProps, ThemableProps } from '../../types';\n\nimport { coarsePointerMixin, colorThemeMixin, disabledStateMixin, sizeVariantMixin } from '../../styles';\nimport { SLIDER_SIZE_PRESET } from '../shared/design-presets';\nimport { mountFormContextSync } from '../shared/dom-sync';\nimport { FORM_CTX } from '../shared/form-context';\nimport { createFieldValidation } from '../shared/validation';\nimport componentStyles from './slider.css?inline';\n\n/** Slider component properties */\n\nexport type BitSliderEvents = {\n change: { from?: number; originalEvent?: Event; to?: number; value: number | { from: number; to: number } };\n};\n\nexport type BitSliderProps = ThemableProps &\n SizableProps &\n DisablableProps & {\n /** Range mode: lower bound */\n from?: number | string;\n /** Range mode a11y label for the start thumb (e.g. \"$20\") */\n 'from-value-text'?: string;\n /** Maximum value */\n max?: number | string;\n /** Minimum value */\n min?: number | string;\n /** Single-value mode: form field name */\n name?: string;\n /** Activate two-thumb range selection */\n range?: boolean;\n /** Step increment */\n step?: number | string;\n /** Range mode: upper bound */\n to?: number | string;\n /** Range mode a11y label for the end thumb (e.g. \"$80\") */\n 'to-value-text'?: string;\n /** Single-value mode: current value */\n value?: number | string;\n /** Single-value mode a11y label override (e.g. \"75%\"). Overrides raw aria-valuenow. */\n 'value-text'?: string;\n };\n\n/**\n * A slider for selecting a single numeric value or a numeric range.\n *\n * Add the boolean `range` attribute to activate two-thumb range mode.\n *\n * @element bit-slider\n *\n * @attr {number} min - Minimum value (default: 0)\n * @attr {number} max - Maximum value (default: 100)\n * @attr {number} step - Step increment (default: 1)\n * @attr {number} value - Current value (single mode)\n * @attr {number} from - Lower bound (range mode)\n * @attr {number} to - Upper bound (range mode)\n * @attr {boolean} range - Activate range mode\n * @attr {boolean} disabled - Disable interaction\n * @attr {string} name - Form field name (single mode)\n * @attr {string} color - Theme color\n * @attr {string} size - 'sm' | 'md' | 'lg'\n *\n * @fires change - detail always includes `value`; single mode: { value: number }, range mode: { value: { from, to }, from, to }, plus optional originalEvent\n *\n * @slot - Slider label text\n *\n * @part slider - Slider container\n * @part track - Track element\n * @part fill - Fill element\n * @part thumb - Single-value thumb\n * @part thumb-start - Range start thumb\n * @part thumb-end - Range end thumb\n * @part label - Label element\n *\n * @cssprop --slider-height - Track height\n * @cssprop --slider-size - Thumb dimensions\n * @cssprop --slider-track - Track background color\n * @cssprop --slider-fill - Fill background color\n * @cssprop --slider-thumb - Thumb background color\n *\n * @example\n * ```html\n * <bit-slider value=\"50\" name=\"volume\">Volume</bit-slider>\n * <bit-slider range from=\"20\" to=\"80\" color=\"primary\">Price range</bit-slider>\n * ```\n */\nexport const SLIDER_TAG = defineComponent<BitSliderProps, BitSliderEvents>({\n formAssociated: true,\n props: {\n color: { default: undefined },\n disabled: { default: false },\n from: { default: '0' },\n 'from-value-text': { default: undefined },\n max: { default: '100' },\n min: { default: '0' },\n name: { default: '' },\n range: { default: false },\n size: { default: undefined },\n step: { default: '1' },\n to: { default: '100' },\n 'to-value-text': { default: undefined },\n value: { default: '0' },\n 'value-text': { default: undefined },\n },\n setup({ emit, host, props, slots }) {\n // Treat `range` as static — determined at first render\n const isRange = props.range.value;\n // ── Shared helpers ────────────────────────────────────────────\n const getNum = (v: string | number | undefined, fallback: number) => {\n const n = Number(v);\n\n return Number.isFinite(n) ? n : fallback;\n };\n const snapVal = (value: number) => {\n const min = getNum(props.min.value, 0);\n const max = getNum(props.max.value, 100);\n const step = getNum(props.step.value, 1);\n\n return Math.max(min, Math.min(max, Math.round(value / step) * step));\n };\n const toPercent = (value: number) => {\n const min = getNum(props.min.value, 0);\n const max = getNum(props.max.value, 100);\n\n return ((value - min) / (max - min)) * 100;\n };\n // ── Single-value state ────────────────────────────────────────\n const formCtx = inject(FORM_CTX, undefined);\n\n mountFormContextSync(host, formCtx, props);\n\n let sliderFd:\n | {\n reportValidity: () => boolean;\n }\n | undefined;\n const valueSignal = signal('0');\n\n if (!isRange) {\n sliderFd = defineField(\n { disabled: computed(() => Boolean(props.disabled.value)), value: valueSignal },\n {\n onReset: () => {\n valueSignal.value = '0';\n },\n },\n );\n watch(\n props.value,\n (v) => {\n valueSignal.value = String(v);\n },\n { immediate: true },\n );\n aria({\n disabled: () => Boolean(props.disabled.value),\n valuemax: () => getNum(props.max.value, 100),\n valuemin: () => getNum(props.min.value, 0),\n valuenow: () => Number(valueSignal.value || 0),\n valuetext: () => props['value-text'].value ?? null,\n });\n }\n\n // ── Range state ───────────────────────────────────────────────\n const startVal = signal(0);\n const endVal = signal(100);\n\n if (isRange) {\n sliderFd = defineField<{\n from: number;\n to: number;\n }>(\n {\n disabled: computed(() => Boolean(props.disabled.value)),\n toFormValue: ({ from, to }) => {\n const name = props.name.value;\n\n if (!name) return null;\n\n const fd = new FormData();\n\n fd.append(`${name}[from]`, String(from));\n fd.append(`${name}[to]`, String(to));\n\n return fd;\n },\n value: computed(() => ({ from: startVal.value, to: endVal.value })),\n },\n {\n onReset: () => {\n startVal.value = snapVal(getNum(props.from.value, 0));\n endVal.value = snapVal(getNum(props.to.value, 100));\n },\n },\n );\n watch(\n props.from,\n (v) => {\n startVal.value = snapVal(getNum(v as string | number | undefined, 0));\n },\n { immediate: true },\n );\n watch(\n props.to,\n (v) => {\n endVal.value = snapVal(getNum(v as string | number | undefined, 100));\n },\n { immediate: true },\n );\n }\n\n // ── Refs ──────────────────────────────────────────────────────\n const containerRef = ref<HTMLDivElement>();\n const labelRef = ref<HTMLSpanElement>();\n const thumbStartRef = ref<HTMLDivElement>();\n const thumbEndRef = ref<HTMLDivElement>();\n const startId = createId('slider-start');\n const endId = createId('slider-end');\n // ── CSS update helpers ────────────────────────────────────────\n const updateSingleCSS = (value: number) => {\n const pct = toPercent(value);\n\n host.style.setProperty('--_thumb-pos', `${pct}%`);\n host.style.setProperty('--_fill-start', '0%');\n host.style.setProperty('--_fill-width', `${pct}%`);\n };\n const updateRangeCSS = () => {\n const s = toPercent(startVal.value);\n const e = toPercent(endVal.value);\n\n host.style.setProperty('--_thumb-start', `${s}%`);\n host.style.setProperty('--_thumb-end', `${e}%`);\n host.style.setProperty('--_fill-start', `${s}%`);\n host.style.setProperty('--_fill-width', `${e - s}%`);\n };\n // ── Key-delta maps (avoids switch complexity) ─────────────────\n const keyDelta = (key: string, step: number, min: number, max: number, current: number): number | null => {\n if (key === 'ArrowRight' || key === 'ArrowUp') return current + step;\n\n if (key === 'ArrowLeft' || key === 'ArrowDown') return current - step;\n\n if (key === 'Home') return min;\n\n if (key === 'End') return max;\n\n return null;\n };\n\n // ── Range mode setup ──────────────────────────────────────────\n const { triggerValidation } = createFieldValidation(formCtx, {\n reportValidity: () => sliderFd?.reportValidity() ?? false,\n });\n\n const setupRangeMode = (container: HTMLDivElement) => {\n updateRangeCSS();\n\n const clientToValue = (clientX: number) => {\n const rect = container.getBoundingClientRect();\n const min = getNum(props.min.value, 0);\n const max = getNum(props.max.value, 100);\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n\n return snapVal(min + pct * (max - min));\n };\n let dragging: 'start' | 'end' | null = null;\n const applyDrag = (val: number) => {\n const min = getNum(props.min.value, 0);\n const max = getNum(props.max.value, 100);\n\n if (dragging === 'start') startVal.value = Math.min(snapVal(val), endVal.value);\n else if (dragging === 'end') endVal.value = Math.max(snapVal(val), startVal.value);\n\n startVal.value = Math.max(min, Math.min(startVal.value, max));\n endVal.value = Math.max(min, Math.min(endVal.value, max));\n updateRangeCSS();\n emit('change', {\n from: startVal.value,\n to: endVal.value,\n value: { from: startVal.value, to: endVal.value },\n });\n triggerValidation('change');\n };\n\n handle(\n container,\n 'pointerdown',\n guard(\n () => !props.disabled.value,\n (e: PointerEvent) => {\n e.preventDefault();\n\n const val = clientToValue(e.clientX);\n\n dragging = Math.abs(val - startVal.value) <= Math.abs(val - endVal.value) ? 'start' : 'end';\n host.setAttribute('data-dragging', '');\n (e.target as Element).setPointerCapture(e.pointerId);\n applyDrag(val);\n },\n ),\n );\n handle(\n container,\n 'pointermove',\n guard(\n () => !!dragging,\n (e: PointerEvent) => {\n e.preventDefault();\n applyDrag(clientToValue(e.clientX));\n },\n ),\n );\n handle(\n container,\n 'pointerup',\n guard(\n () => !!dragging,\n (e: PointerEvent) => {\n e.preventDefault();\n dragging = null;\n host.removeAttribute('data-dragging');\n (e.target as Element).releasePointerCapture(e.pointerId);\n },\n ),\n );\n\n const makeThumbKeydown = (getVal: () => number, setVal: (v: number) => void) => (e: KeyboardEvent) => {\n if (props.disabled.value) return;\n\n const step = getNum(props.step.value, 1);\n const min = getNum(props.min.value, 0);\n const max = getNum(props.max.value, 100);\n const next = keyDelta(e.key, step, min, max, getVal());\n\n if (next === null) return;\n\n e.preventDefault();\n setVal(snapVal(Math.max(min, Math.min(max, next))));\n updateRangeCSS();\n emit('change', {\n from: startVal.value,\n originalEvent: e,\n to: endVal.value,\n value: { from: startVal.value, to: endVal.value },\n });\n triggerValidation('change');\n };\n const thumbStartEl = thumbStartRef.value;\n const thumbEndEl = thumbEndRef.value;\n\n if (thumbStartEl) {\n thumbStartEl.addEventListener(\n 'keydown',\n makeThumbKeydown(\n () => startVal.value,\n (v) => {\n startVal.value = Math.min(v, endVal.value);\n },\n ),\n );\n aria(thumbStartEl, {\n label: 'Range start',\n valuemax: () => endVal.value,\n valuemin: () => getNum(props.min.value, 0),\n valuenow: () => startVal.value,\n valuetext: () => props['from-value-text'].value ?? null,\n });\n }\n\n if (thumbEndEl) {\n thumbEndEl.addEventListener(\n 'keydown',\n makeThumbKeydown(\n () => endVal.value,\n (v) => {\n endVal.value = Math.max(v, startVal.value);\n },\n ),\n );\n aria(thumbEndEl, {\n label: 'Range end',\n valuemax: () => getNum(props.max.value, 100),\n valuemin: () => startVal.value,\n valuenow: () => endVal.value,\n valuetext: () => props['to-value-text'].value ?? null,\n });\n }\n };\n // ── Single-value mode setup ───────────────────────────────────\n const setupSingleMode = (container: HTMLDivElement) => {\n host.setAttribute('role', 'slider');\n\n if (!props.disabled.value) host.setAttribute('tabindex', '0');\n\n updateSingleCSS(Number(valueSignal.value));\n\n const updateValue = (clientX: number) => {\n if (props.disabled.value) return;\n\n const rect = container.getBoundingClientRect();\n const min = getNum(props.min.value, 0);\n const max = getNum(props.max.value, 100);\n const step = getNum(props.step.value, 1);\n const pct = Math.max(0, Math.min(1, (clientX - rect.left) / rect.width));\n const newValue = Math.max(min, Math.min(max, Math.round((min + pct * (max - min)) / step) * step));\n\n if (Number(valueSignal.value) !== newValue) {\n valueSignal.value = newValue.toString();\n updateSingleCSS(newValue);\n emit('change', { value: newValue });\n triggerValidation('change');\n }\n };\n let isDragging = false;\n\n handle(\n container,\n 'pointerdown',\n guard(\n () => !props.disabled.value,\n (e: PointerEvent) => {\n e.preventDefault();\n isDragging = true;\n updateValue(e.clientX);\n (e.target as Element).setPointerCapture(e.pointerId);\n },\n ),\n );\n handle(\n container,\n 'pointermove',\n guard(\n () => isDragging,\n (e: PointerEvent) => {\n e.preventDefault();\n\n if (!host.hasAttribute('data-dragging')) host.setAttribute('data-dragging', '');\n\n updateValue(e.clientX);\n },\n ),\n );\n handle(\n container,\n 'pointerup',\n guard(\n () => isDragging,\n (e: PointerEvent) => {\n e.preventDefault();\n isDragging = false;\n host.removeAttribute('data-dragging');\n (e.target as Element).releasePointerCapture(e.pointerId);\n },\n ),\n );\n handle(\n host,\n 'keydown',\n guard(\n () => !props.disabled.value,\n (e: KeyboardEvent) => {\n const min = getNum(props.min.value, 0);\n const max = getNum(props.max.value, 100);\n const step = getNum(props.step.value, 1);\n const val = Number(valueSignal.value || 0);\n const next = keyDelta(e.key, step, min, max, val);\n\n if (next === null) return;\n\n e.preventDefault();\n\n const newValue = Math.max(min, Math.min(max, next));\n\n if (newValue !== val) {\n valueSignal.value = newValue.toString();\n updateSingleCSS(newValue);\n emit('change', { originalEvent: e, value: newValue });\n triggerValidation('change');\n }\n },\n ),\n );\n };\n\n onMount(() => {\n const container = containerRef.value;\n\n if (!container) return;\n\n if (slots.has('default').value && labelRef.value) {\n const labelId = createId('slider-label');\n\n labelRef.value.id = labelId;\n\n if (!isRange) aria({ labelledby: labelId });\n }\n\n if (isRange) setupRangeMode(container);\n else setupSingleMode(container);\n });\n\n return html`\n <div class=\"slider-container\" part=\"slider\" ref=${containerRef}>\n <div class=\"slider-track\" part=\"track\">\n <div class=\"slider-fill\" part=\"fill\"></div>\n <div class=\"slider-thumb slider-thumb-sole\" part=\"thumb\"></div>\n <div\n class=\"slider-thumb slider-thumb-start\"\n part=\"thumb-start\"\n ref=${thumbStartRef}\n role=\"slider\"\n tabindex=\"${() => (props.disabled.value ? '-1' : '0')}\"\n id=\"${startId}\"></div>\n <div\n class=\"slider-thumb slider-thumb-end\"\n part=\"thumb-end\"\n ref=${thumbEndRef}\n role=\"slider\"\n tabindex=\"${() => (props.disabled.value ? '-1' : '0')}\"\n id=\"${endId}\"></div>\n </div>\n </div>\n <span class=\"label\" part=\"label\" ref=${labelRef}><slot></slot></span>\n `;\n },\n styles: [\n disabledStateMixin(),\n colorThemeMixin,\n sizeVariantMixin(SLIDER_SIZE_PRESET),\n componentStyles,\n coarsePointerMixin,\n ],\n tag: 'bit-slider',\n});\n"],"mappings":"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"}