@vielzeug/buildit 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (792) hide show
  1. package/README.md +124 -0
  2. package/dist/accordion-item.cjs +32 -0
  3. package/dist/accordion-item.cjs.map +1 -0
  4. package/dist/accordion-item.js +72 -0
  5. package/dist/accordion-item.js.map +1 -0
  6. package/dist/accordion.cjs +2 -0
  7. package/dist/accordion.cjs.map +1 -0
  8. package/dist/accordion.js +37 -0
  9. package/dist/accordion.js.map +1 -0
  10. package/dist/alert.cjs +31 -0
  11. package/dist/alert.cjs.map +1 -0
  12. package/dist/alert.js +85 -0
  13. package/dist/alert.js.map +1 -0
  14. package/dist/avatar.cjs +37 -0
  15. package/dist/avatar.cjs.map +1 -0
  16. package/dist/avatar.js +123 -0
  17. package/dist/avatar.js.map +1 -0
  18. package/dist/badge.cjs +7 -0
  19. package/dist/badge.cjs.map +1 -0
  20. package/dist/badge.js +60 -0
  21. package/dist/badge.js.map +1 -0
  22. package/dist/box.cjs +2 -0
  23. package/dist/box.cjs.map +1 -0
  24. package/dist/box.js +22 -0
  25. package/dist/box.js.map +1 -0
  26. package/dist/breadcrumb.cjs +21 -0
  27. package/dist/breadcrumb.cjs.map +1 -0
  28. package/dist/breadcrumb.js +58 -0
  29. package/dist/breadcrumb.js.map +1 -0
  30. package/dist/buildit.cjs +1892 -0
  31. package/dist/buildit.cjs.map +1 -0
  32. package/dist/buildit.js +1892 -0
  33. package/dist/buildit.js.map +1 -0
  34. package/dist/button-group.cjs +6 -0
  35. package/dist/button-group.cjs.map +1 -0
  36. package/dist/button-group.js +31 -0
  37. package/dist/button-group.js.map +1 -0
  38. package/dist/button.cjs +30 -0
  39. package/dist/button.cjs.map +1 -0
  40. package/dist/button.js +115 -0
  41. package/dist/button.js.map +1 -0
  42. package/dist/card.cjs +23 -0
  43. package/dist/card.cjs.map +1 -0
  44. package/dist/card.js +99 -0
  45. package/dist/card.js.map +1 -0
  46. package/dist/checkbox-group.cjs +20 -0
  47. package/dist/checkbox-group.cjs.map +1 -0
  48. package/dist/checkbox-group.js +88 -0
  49. package/dist/checkbox-group.js.map +1 -0
  50. package/dist/checkbox.cjs +37 -0
  51. package/dist/checkbox.cjs.map +1 -0
  52. package/dist/checkbox.js +115 -0
  53. package/dist/checkbox.js.map +1 -0
  54. package/dist/chip.cjs +56 -0
  55. package/dist/chip.cjs.map +1 -0
  56. package/dist/chip.js +140 -0
  57. package/dist/chip.js.map +1 -0
  58. package/dist/combobox.cjs +93 -0
  59. package/dist/combobox.cjs.map +1 -0
  60. package/dist/combobox.js +401 -0
  61. package/dist/combobox.js.map +1 -0
  62. package/dist/content/avatar/avatar-group.css?inline.cjs +2 -0
  63. package/dist/content/avatar/avatar-group.css?inline.cjs.map +1 -0
  64. package/dist/content/avatar/avatar-group.css?inline.js +6 -0
  65. package/dist/content/avatar/avatar-group.css?inline.js.map +1 -0
  66. package/dist/content/avatar/avatar.css?inline.cjs +2 -0
  67. package/dist/content/avatar/avatar.css?inline.cjs.map +1 -0
  68. package/dist/content/avatar/avatar.css?inline.js +6 -0
  69. package/dist/content/avatar/avatar.css?inline.js.map +1 -0
  70. package/dist/content/avatar/avatar.d.ts +78 -0
  71. package/dist/content/avatar/avatar.d.ts.map +1 -0
  72. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs +2 -0
  73. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +1 -0
  74. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js +6 -0
  75. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +1 -0
  76. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs +2 -0
  77. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +1 -0
  78. package/dist/content/breadcrumb/breadcrumb.css?inline.js +6 -0
  79. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +1 -0
  80. package/dist/content/breadcrumb/breadcrumb.d.ts +36 -0
  81. package/dist/content/breadcrumb/breadcrumb.d.ts.map +1 -0
  82. package/dist/content/card/card.css?inline.cjs +2 -0
  83. package/dist/content/card/card.css?inline.cjs.map +1 -0
  84. package/dist/content/card/card.css?inline.js +6 -0
  85. package/dist/content/card/card.css?inline.js.map +1 -0
  86. package/dist/content/card/card.d.ts +66 -0
  87. package/dist/content/card/card.d.ts.map +1 -0
  88. package/dist/content/index.cjs +1 -0
  89. package/dist/content/index.d.ts +15 -0
  90. package/dist/content/index.d.ts.map +1 -0
  91. package/dist/content/index.js +7 -0
  92. package/dist/content/pagination/pagination.css?inline.cjs +2 -0
  93. package/dist/content/pagination/pagination.css?inline.cjs.map +1 -0
  94. package/dist/content/pagination/pagination.css?inline.js +6 -0
  95. package/dist/content/pagination/pagination.css?inline.js.map +1 -0
  96. package/dist/content/pagination/pagination.d.ts +56 -0
  97. package/dist/content/pagination/pagination.d.ts.map +1 -0
  98. package/dist/content/separator/separator.css?inline.cjs +2 -0
  99. package/dist/content/separator/separator.css?inline.cjs.map +1 -0
  100. package/dist/content/separator/separator.css?inline.js +6 -0
  101. package/dist/content/separator/separator.css?inline.js.map +1 -0
  102. package/dist/content/separator/separator.d.ts +35 -0
  103. package/dist/content/separator/separator.d.ts.map +1 -0
  104. package/dist/content/table/table.css?inline.cjs +2 -0
  105. package/dist/content/table/table.css?inline.cjs.map +1 -0
  106. package/dist/content/table/table.css?inline.js +6 -0
  107. package/dist/content/table/table.css?inline.js.map +1 -0
  108. package/dist/content/table/table.d.ts +69 -0
  109. package/dist/content/table/table.d.ts.map +1 -0
  110. package/dist/content/text/text.css?inline.cjs +2 -0
  111. package/dist/content/text/text.css?inline.cjs.map +1 -0
  112. package/dist/content/text/text.css?inline.js +6 -0
  113. package/dist/content/text/text.css?inline.js.map +1 -0
  114. package/dist/content/text/text.d.ts +55 -0
  115. package/dist/content/text/text.d.ts.map +1 -0
  116. package/dist/craftit/dist/core/internal.cjs +2 -0
  117. package/dist/craftit/dist/core/internal.cjs.map +1 -0
  118. package/dist/craftit/dist/core/internal.js +25 -0
  119. package/dist/craftit/dist/core/internal.js.map +1 -0
  120. package/dist/craftit/dist/core/runtime-bindings.cjs +2 -0
  121. package/dist/craftit/dist/core/runtime-bindings.cjs.map +1 -0
  122. package/dist/craftit/dist/core/runtime-bindings.js +38 -0
  123. package/dist/craftit/dist/core/runtime-bindings.js.map +1 -0
  124. package/dist/craftit/dist/core/runtime-lifecycle.cjs +2 -0
  125. package/dist/craftit/dist/core/runtime-lifecycle.cjs.map +1 -0
  126. package/dist/craftit/dist/core/runtime-lifecycle.js +68 -0
  127. package/dist/craftit/dist/core/runtime-lifecycle.js.map +1 -0
  128. package/dist/craftit/dist/core/runtime.cjs +1 -0
  129. package/dist/craftit/dist/core/runtime.js +2 -0
  130. package/dist/craftit/dist/core/utilities.cjs +2 -0
  131. package/dist/craftit/dist/core/utilities.cjs.map +1 -0
  132. package/dist/craftit/dist/core/utilities.js +12 -0
  133. package/dist/craftit/dist/core/utilities.js.map +1 -0
  134. package/dist/craftit/dist/directives/attr.cjs +2 -0
  135. package/dist/craftit/dist/directives/attr.cjs.map +1 -0
  136. package/dist/craftit/dist/directives/attr.js +13 -0
  137. package/dist/craftit/dist/directives/attr.js.map +1 -0
  138. package/dist/craftit/dist/directives/bind.cjs +1 -0
  139. package/dist/craftit/dist/directives/bind.js +3 -0
  140. package/dist/craftit/dist/directives/choose.cjs +1 -0
  141. package/dist/craftit/dist/directives/choose.js +1 -0
  142. package/dist/craftit/dist/directives/classes.cjs +2 -0
  143. package/dist/craftit/dist/directives/classes.cjs.map +1 -0
  144. package/dist/craftit/dist/directives/classes.js +12 -0
  145. package/dist/craftit/dist/directives/classes.js.map +1 -0
  146. package/dist/craftit/dist/directives/each.cjs +2 -0
  147. package/dist/craftit/dist/directives/each.cjs.map +1 -0
  148. package/dist/craftit/dist/directives/each.js +96 -0
  149. package/dist/craftit/dist/directives/each.js.map +1 -0
  150. package/dist/craftit/dist/directives/index.cjs +1 -0
  151. package/dist/craftit/dist/directives/index.js +12 -0
  152. package/dist/craftit/dist/directives/match.cjs +1 -0
  153. package/dist/craftit/dist/directives/match.js +1 -0
  154. package/dist/craftit/dist/directives/memo.cjs +1 -0
  155. package/dist/craftit/dist/directives/memo.js +1 -0
  156. package/dist/craftit/dist/directives/raw.cjs +1 -0
  157. package/dist/craftit/dist/directives/raw.js +2 -0
  158. package/dist/craftit/dist/directives/spread.cjs +2 -0
  159. package/dist/craftit/dist/directives/spread.cjs.map +1 -0
  160. package/dist/craftit/dist/directives/spread.js +30 -0
  161. package/dist/craftit/dist/directives/spread.js.map +1 -0
  162. package/dist/craftit/dist/directives/style.cjs +1 -0
  163. package/dist/craftit/dist/directives/style.js +1 -0
  164. package/dist/craftit/dist/directives/until.cjs +1 -0
  165. package/dist/craftit/dist/directives/until.js +1 -0
  166. package/dist/craftit/dist/directives/when.cjs +2 -0
  167. package/dist/craftit/dist/directives/when.cjs.map +1 -0
  168. package/dist/craftit/dist/directives/when.js +14 -0
  169. package/dist/craftit/dist/directives/when.js.map +1 -0
  170. package/dist/craftit/dist/labs/a11y.cjs +2 -0
  171. package/dist/craftit/dist/labs/a11y.cjs.map +1 -0
  172. package/dist/craftit/dist/labs/a11y.js +38 -0
  173. package/dist/craftit/dist/labs/a11y.js.map +1 -0
  174. package/dist/craftit/dist/labs/list.cjs +2 -0
  175. package/dist/craftit/dist/labs/list.cjs.map +1 -0
  176. package/dist/craftit/dist/labs/list.js +87 -0
  177. package/dist/craftit/dist/labs/list.js.map +1 -0
  178. package/dist/craftit/dist/labs/observers.cjs +2 -0
  179. package/dist/craftit/dist/labs/observers.cjs.map +1 -0
  180. package/dist/craftit/dist/labs/observers.js +28 -0
  181. package/dist/craftit/dist/labs/observers.js.map +1 -0
  182. package/dist/craftit/dist/labs/overlay.cjs +2 -0
  183. package/dist/craftit/dist/labs/overlay.cjs.map +1 -0
  184. package/dist/craftit/dist/labs/overlay.js +49 -0
  185. package/dist/craftit/dist/labs/overlay.js.map +1 -0
  186. package/dist/craftit/dist/labs/selectable.cjs +2 -0
  187. package/dist/craftit/dist/labs/selectable.cjs.map +1 -0
  188. package/dist/craftit/dist/labs/selectable.js +29 -0
  189. package/dist/craftit/dist/labs/selectable.js.map +1 -0
  190. package/dist/craftit/dist/labs/selection.cjs +2 -0
  191. package/dist/craftit/dist/labs/selection.cjs.map +1 -0
  192. package/dist/craftit/dist/labs/selection.js +42 -0
  193. package/dist/craftit/dist/labs/selection.js.map +1 -0
  194. package/dist/craftit/dist/labs.cjs +1 -0
  195. package/dist/craftit/dist/labs.js +6 -0
  196. package/dist/custom-elements.json +2321 -0
  197. package/dist/dialog.cjs +33 -0
  198. package/dist/dialog.cjs.map +1 -0
  199. package/dist/dialog.js +94 -0
  200. package/dist/dialog.js.map +1 -0
  201. package/dist/disclosure/accordion/accordion.css?inline.cjs +2 -0
  202. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +1 -0
  203. package/dist/disclosure/accordion/accordion.css?inline.js +6 -0
  204. package/dist/disclosure/accordion/accordion.css?inline.js.map +1 -0
  205. package/dist/disclosure/accordion/accordion.d.ts +47 -0
  206. package/dist/disclosure/accordion/accordion.d.ts.map +1 -0
  207. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs +2 -0
  208. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +1 -0
  209. package/dist/disclosure/accordion-item/accordion-item.css?inline.js +6 -0
  210. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +1 -0
  211. package/dist/disclosure/accordion-item/accordion-item.d.ts +62 -0
  212. package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -0
  213. package/dist/disclosure/index.cjs +1 -0
  214. package/dist/disclosure/index.d.ts +11 -0
  215. package/dist/disclosure/index.d.ts.map +1 -0
  216. package/dist/disclosure/index.js +5 -0
  217. package/dist/disclosure/tab-item/tab-item.css?inline.cjs +2 -0
  218. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +1 -0
  219. package/dist/disclosure/tab-item/tab-item.css?inline.js +6 -0
  220. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +1 -0
  221. package/dist/disclosure/tab-item/tab-item.d.ts +39 -0
  222. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -0
  223. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs +2 -0
  224. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +1 -0
  225. package/dist/disclosure/tab-panel/tab-panel.css?inline.js +6 -0
  226. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +1 -0
  227. package/dist/disclosure/tab-panel/tab-panel.d.ts +30 -0
  228. package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -0
  229. package/dist/disclosure/tabs/tabs.css?inline.cjs +2 -0
  230. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +1 -0
  231. package/dist/disclosure/tabs/tabs.css?inline.js +6 -0
  232. package/dist/disclosure/tabs/tabs.css?inline.js.map +1 -0
  233. package/dist/disclosure/tabs/tabs.d.ts +64 -0
  234. package/dist/disclosure/tabs/tabs.d.ts.map +1 -0
  235. package/dist/drawer.cjs +31 -0
  236. package/dist/drawer.cjs.map +1 -0
  237. package/dist/drawer.js +98 -0
  238. package/dist/drawer.js.map +1 -0
  239. package/dist/feedback/alert/alert.css?inline.cjs +2 -0
  240. package/dist/feedback/alert/alert.css?inline.cjs.map +1 -0
  241. package/dist/feedback/alert/alert.css?inline.js +6 -0
  242. package/dist/feedback/alert/alert.css?inline.js.map +1 -0
  243. package/dist/feedback/alert/alert.d.ts +63 -0
  244. package/dist/feedback/alert/alert.d.ts.map +1 -0
  245. package/dist/feedback/badge/badge.css?inline.cjs +2 -0
  246. package/dist/feedback/badge/badge.css?inline.cjs.map +1 -0
  247. package/dist/feedback/badge/badge.css?inline.js +6 -0
  248. package/dist/feedback/badge/badge.css?inline.js.map +1 -0
  249. package/dist/feedback/badge/badge.d.ts +67 -0
  250. package/dist/feedback/badge/badge.d.ts.map +1 -0
  251. package/dist/feedback/chip/chip.css?inline.cjs +2 -0
  252. package/dist/feedback/chip/chip.css?inline.cjs.map +1 -0
  253. package/dist/feedback/chip/chip.css?inline.js +6 -0
  254. package/dist/feedback/chip/chip.css?inline.js.map +1 -0
  255. package/dist/feedback/chip/chip.d.ts +124 -0
  256. package/dist/feedback/chip/chip.d.ts.map +1 -0
  257. package/dist/feedback/index.cjs +1 -0
  258. package/dist/feedback/index.d.ts +13 -0
  259. package/dist/feedback/index.d.ts.map +1 -0
  260. package/dist/feedback/index.js +6 -0
  261. package/dist/feedback/progress/progress.css?inline.cjs +2 -0
  262. package/dist/feedback/progress/progress.css?inline.cjs.map +1 -0
  263. package/dist/feedback/progress/progress.css?inline.js +6 -0
  264. package/dist/feedback/progress/progress.css?inline.js.map +1 -0
  265. package/dist/feedback/progress/progress.d.ts +64 -0
  266. package/dist/feedback/progress/progress.d.ts.map +1 -0
  267. package/dist/feedback/skeleton/skeleton.css?inline.cjs +2 -0
  268. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +1 -0
  269. package/dist/feedback/skeleton/skeleton.css?inline.js +6 -0
  270. package/dist/feedback/skeleton/skeleton.css?inline.js.map +1 -0
  271. package/dist/feedback/skeleton/skeleton.d.ts +61 -0
  272. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -0
  273. package/dist/feedback/toast/index.d.ts +2 -0
  274. package/dist/feedback/toast/index.d.ts.map +1 -0
  275. package/dist/feedback/toast/toast.css?inline.cjs +2 -0
  276. package/dist/feedback/toast/toast.css?inline.cjs.map +1 -0
  277. package/dist/feedback/toast/toast.css?inline.js +6 -0
  278. package/dist/feedback/toast/toast.css?inline.js.map +1 -0
  279. package/dist/feedback/toast/toast.d.ts +95 -0
  280. package/dist/feedback/toast/toast.d.ts.map +1 -0
  281. package/dist/file-input.cjs +66 -0
  282. package/dist/file-input.cjs.map +1 -0
  283. package/dist/file-input.js +210 -0
  284. package/dist/file-input.js.map +1 -0
  285. package/dist/form.cjs +11 -0
  286. package/dist/form.cjs.map +1 -0
  287. package/dist/form.js +49 -0
  288. package/dist/form.js.map +1 -0
  289. package/dist/grid-item.cjs +2 -0
  290. package/dist/grid-item.cjs.map +1 -0
  291. package/dist/grid-item.js +28 -0
  292. package/dist/grid-item.js.map +1 -0
  293. package/dist/grid.cjs +2 -0
  294. package/dist/grid.cjs.map +1 -0
  295. package/dist/grid.js +90 -0
  296. package/dist/grid.js.map +1 -0
  297. package/dist/icons.cjs +176 -0
  298. package/dist/icons.cjs.map +1 -0
  299. package/dist/icons.d.ts +15 -0
  300. package/dist/icons.d.ts.map +1 -0
  301. package/dist/icons.js +181 -0
  302. package/dist/icons.js.map +1 -0
  303. package/dist/index.cjs +1 -0
  304. package/dist/index.d.ts +9 -0
  305. package/dist/index.d.ts.map +1 -0
  306. package/dist/index.js +53 -0
  307. package/dist/input.cjs +48 -0
  308. package/dist/input.cjs.map +1 -0
  309. package/dist/input.js +182 -0
  310. package/dist/input.js.map +1 -0
  311. package/dist/inputs/button/button.css?inline.cjs +2 -0
  312. package/dist/inputs/button/button.css?inline.cjs.map +1 -0
  313. package/dist/inputs/button/button.css?inline.js +6 -0
  314. package/dist/inputs/button/button.css?inline.js.map +1 -0
  315. package/dist/inputs/button/button.d.ts +73 -0
  316. package/dist/inputs/button/button.d.ts.map +1 -0
  317. package/dist/inputs/button-group/button-group.css?inline.cjs +2 -0
  318. package/dist/inputs/button-group/button-group.css?inline.cjs.map +1 -0
  319. package/dist/inputs/button-group/button-group.css?inline.js +6 -0
  320. package/dist/inputs/button-group/button-group.css?inline.js.map +1 -0
  321. package/dist/inputs/button-group/button-group.d.ts +52 -0
  322. package/dist/inputs/button-group/button-group.d.ts.map +1 -0
  323. package/dist/inputs/checkbox/checkbox.css?inline.cjs +2 -0
  324. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +1 -0
  325. package/dist/inputs/checkbox/checkbox.css?inline.js +6 -0
  326. package/dist/inputs/checkbox/checkbox.css?inline.js.map +1 -0
  327. package/dist/inputs/checkbox/checkbox.d.ts +43 -0
  328. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -0
  329. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs +2 -0
  330. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +1 -0
  331. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js +6 -0
  332. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +1 -0
  333. package/dist/inputs/checkbox-group/checkbox-group.d.ts +56 -0
  334. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -0
  335. package/dist/inputs/combobox/combobox-options.cjs +2 -0
  336. package/dist/inputs/combobox/combobox-options.cjs.map +1 -0
  337. package/dist/inputs/combobox/combobox-options.d.ts +7 -0
  338. package/dist/inputs/combobox/combobox-options.d.ts.map +1 -0
  339. package/dist/inputs/combobox/combobox-options.js +36 -0
  340. package/dist/inputs/combobox/combobox-options.js.map +1 -0
  341. package/dist/inputs/combobox/combobox-virtualizer.cjs +2 -0
  342. package/dist/inputs/combobox/combobox-virtualizer.cjs.map +1 -0
  343. package/dist/inputs/combobox/combobox-virtualizer.d.ts +20 -0
  344. package/dist/inputs/combobox/combobox-virtualizer.d.ts.map +1 -0
  345. package/dist/inputs/combobox/combobox-virtualizer.js +71 -0
  346. package/dist/inputs/combobox/combobox-virtualizer.js.map +1 -0
  347. package/dist/inputs/combobox/combobox.css?inline.cjs +2 -0
  348. package/dist/inputs/combobox/combobox.css?inline.cjs.map +1 -0
  349. package/dist/inputs/combobox/combobox.css?inline.js +6 -0
  350. package/dist/inputs/combobox/combobox.css?inline.js.map +1 -0
  351. package/dist/inputs/combobox/combobox.d.ts +28 -0
  352. package/dist/inputs/combobox/combobox.d.ts.map +1 -0
  353. package/dist/inputs/combobox/combobox.types.d.ts +36 -0
  354. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -0
  355. package/dist/inputs/file-input/file-input.css?inline.cjs +2 -0
  356. package/dist/inputs/file-input/file-input.css?inline.cjs.map +1 -0
  357. package/dist/inputs/file-input/file-input.css?inline.js +6 -0
  358. package/dist/inputs/file-input/file-input.css?inline.js.map +1 -0
  359. package/dist/inputs/file-input/file-input.d.ts +94 -0
  360. package/dist/inputs/file-input/file-input.d.ts.map +1 -0
  361. package/dist/inputs/form/form.css?inline.cjs +2 -0
  362. package/dist/inputs/form/form.css?inline.cjs.map +1 -0
  363. package/dist/inputs/form/form.css?inline.js +6 -0
  364. package/dist/inputs/form/form.css?inline.js.map +1 -0
  365. package/dist/inputs/form/form.d.ts +61 -0
  366. package/dist/inputs/form/form.d.ts.map +1 -0
  367. package/dist/inputs/index.cjs +1 -0
  368. package/dist/inputs/index.d.ts +38 -0
  369. package/dist/inputs/index.d.ts.map +1 -0
  370. package/dist/inputs/index.js +18 -0
  371. package/dist/inputs/input/input.css?inline.cjs +2 -0
  372. package/dist/inputs/input/input.css?inline.cjs.map +1 -0
  373. package/dist/inputs/input/input.css?inline.js +6 -0
  374. package/dist/inputs/input/input.css?inline.js.map +1 -0
  375. package/dist/inputs/input/input.d.ts +82 -0
  376. package/dist/inputs/input/input.d.ts.map +1 -0
  377. package/dist/inputs/number-input/number-input.css?inline.cjs +2 -0
  378. package/dist/inputs/number-input/number-input.css?inline.cjs.map +1 -0
  379. package/dist/inputs/number-input/number-input.css?inline.js +6 -0
  380. package/dist/inputs/number-input/number-input.css?inline.js.map +1 -0
  381. package/dist/inputs/number-input/number-input.d.ts +76 -0
  382. package/dist/inputs/number-input/number-input.d.ts.map +1 -0
  383. package/dist/inputs/otp-input/otp-input.css?inline.cjs +2 -0
  384. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +1 -0
  385. package/dist/inputs/otp-input/otp-input.css?inline.js +6 -0
  386. package/dist/inputs/otp-input/otp-input.css?inline.js.map +1 -0
  387. package/dist/inputs/otp-input/otp-input.d.ts +71 -0
  388. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -0
  389. package/dist/inputs/radio/radio.css?inline.cjs +2 -0
  390. package/dist/inputs/radio/radio.css?inline.cjs.map +1 -0
  391. package/dist/inputs/radio/radio.css?inline.js +6 -0
  392. package/dist/inputs/radio/radio.css?inline.js.map +1 -0
  393. package/dist/inputs/radio/radio.d.ts +41 -0
  394. package/dist/inputs/radio/radio.d.ts.map +1 -0
  395. package/dist/inputs/radio-group/radio-group.css?inline.cjs +2 -0
  396. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +1 -0
  397. package/dist/inputs/radio-group/radio-group.css?inline.js +6 -0
  398. package/dist/inputs/radio-group/radio-group.css?inline.js.map +1 -0
  399. package/dist/inputs/radio-group/radio-group.d.ts +61 -0
  400. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -0
  401. package/dist/inputs/rating/rating.css?inline.cjs +2 -0
  402. package/dist/inputs/rating/rating.css?inline.cjs.map +1 -0
  403. package/dist/inputs/rating/rating.css?inline.js +6 -0
  404. package/dist/inputs/rating/rating.css?inline.js.map +1 -0
  405. package/dist/inputs/rating/rating.d.ts +48 -0
  406. package/dist/inputs/rating/rating.d.ts.map +1 -0
  407. package/dist/inputs/select/select.css?inline.cjs +2 -0
  408. package/dist/inputs/select/select.css?inline.cjs.map +1 -0
  409. package/dist/inputs/select/select.css?inline.js +6 -0
  410. package/dist/inputs/select/select.css?inline.js.map +1 -0
  411. package/dist/inputs/select/select.d.ts +79 -0
  412. package/dist/inputs/select/select.d.ts.map +1 -0
  413. package/dist/inputs/shared/base-props.d.ts +39 -0
  414. package/dist/inputs/shared/base-props.d.ts.map +1 -0
  415. package/dist/inputs/shared/composables/index.cjs +1 -0
  416. package/dist/inputs/shared/composables/index.d.ts +3 -0
  417. package/dist/inputs/shared/composables/index.d.ts.map +1 -0
  418. package/dist/inputs/shared/composables/index.js +2 -0
  419. package/dist/inputs/shared/composables/use-text-field.cjs +2 -0
  420. package/dist/inputs/shared/composables/use-text-field.cjs.map +1 -0
  421. package/dist/inputs/shared/composables/use-text-field.d.ts +33 -0
  422. package/dist/inputs/shared/composables/use-text-field.d.ts.map +1 -0
  423. package/dist/inputs/shared/composables/use-text-field.js +41 -0
  424. package/dist/inputs/shared/composables/use-text-field.js.map +1 -0
  425. package/dist/inputs/shared/composables/use-toggle-field.cjs +2 -0
  426. package/dist/inputs/shared/composables/use-toggle-field.cjs.map +1 -0
  427. package/dist/inputs/shared/composables/use-toggle-field.d.ts +18 -0
  428. package/dist/inputs/shared/composables/use-toggle-field.d.ts.map +1 -0
  429. package/dist/inputs/shared/composables/use-toggle-field.js +26 -0
  430. package/dist/inputs/shared/composables/use-toggle-field.js.map +1 -0
  431. package/dist/inputs/shared/design-presets.cjs +2 -0
  432. package/dist/inputs/shared/design-presets.cjs.map +1 -0
  433. package/dist/inputs/shared/design-presets.d.ts +97 -0
  434. package/dist/inputs/shared/design-presets.d.ts.map +1 -0
  435. package/dist/inputs/shared/design-presets.js +92 -0
  436. package/dist/inputs/shared/design-presets.js.map +1 -0
  437. package/dist/inputs/shared/dom-sync/dropdown.cjs +2 -0
  438. package/dist/inputs/shared/dom-sync/dropdown.cjs.map +1 -0
  439. package/dist/inputs/shared/dom-sync/dropdown.d.ts +7 -0
  440. package/dist/inputs/shared/dom-sync/dropdown.d.ts.map +1 -0
  441. package/dist/inputs/shared/dom-sync/dropdown.js +30 -0
  442. package/dist/inputs/shared/dom-sync/dropdown.js.map +1 -0
  443. package/dist/inputs/shared/dom-sync/field-sync.cjs +2 -0
  444. package/dist/inputs/shared/dom-sync/field-sync.cjs.map +1 -0
  445. package/dist/inputs/shared/dom-sync/field-sync.d.ts +36 -0
  446. package/dist/inputs/shared/dom-sync/field-sync.d.ts.map +1 -0
  447. package/dist/inputs/shared/dom-sync/field-sync.js +37 -0
  448. package/dist/inputs/shared/dom-sync/field-sync.js.map +1 -0
  449. package/dist/inputs/shared/dom-sync/form-context.cjs +2 -0
  450. package/dist/inputs/shared/dom-sync/form-context.cjs.map +1 -0
  451. package/dist/inputs/shared/dom-sync/form-context.d.ts +18 -0
  452. package/dist/inputs/shared/dom-sync/form-context.d.ts.map +1 -0
  453. package/dist/inputs/shared/dom-sync/form-context.js +20 -0
  454. package/dist/inputs/shared/dom-sync/form-context.js.map +1 -0
  455. package/dist/inputs/shared/dom-sync/index.cjs +1 -0
  456. package/dist/inputs/shared/dom-sync/index.d.ts +5 -0
  457. package/dist/inputs/shared/dom-sync/index.d.ts.map +1 -0
  458. package/dist/inputs/shared/dom-sync/index.js +4 -0
  459. package/dist/inputs/shared/dom-sync/label-sync.cjs +2 -0
  460. package/dist/inputs/shared/dom-sync/label-sync.cjs.map +1 -0
  461. package/dist/inputs/shared/dom-sync/label-sync.d.ts +16 -0
  462. package/dist/inputs/shared/dom-sync/label-sync.d.ts.map +1 -0
  463. package/dist/inputs/shared/dom-sync/label-sync.js +12 -0
  464. package/dist/inputs/shared/dom-sync/label-sync.js.map +1 -0
  465. package/dist/inputs/shared/form-context.cjs +2 -0
  466. package/dist/inputs/shared/form-context.cjs.map +1 -0
  467. package/dist/inputs/shared/form-context.d.ts +19 -0
  468. package/dist/inputs/shared/form-context.d.ts.map +1 -0
  469. package/dist/inputs/shared/form-context.js +7 -0
  470. package/dist/inputs/shared/form-context.js.map +1 -0
  471. package/dist/inputs/shared/utils/assistive-text.cjs +2 -0
  472. package/dist/inputs/shared/utils/assistive-text.cjs.map +1 -0
  473. package/dist/inputs/shared/utils/assistive-text.d.ts +24 -0
  474. package/dist/inputs/shared/utils/assistive-text.d.ts.map +1 -0
  475. package/dist/inputs/shared/utils/assistive-text.js +37 -0
  476. package/dist/inputs/shared/utils/assistive-text.js.map +1 -0
  477. package/dist/inputs/shared/utils/choice-change.cjs +2 -0
  478. package/dist/inputs/shared/utils/choice-change.cjs.map +1 -0
  479. package/dist/inputs/shared/utils/choice-change.d.ts +8 -0
  480. package/dist/inputs/shared/utils/choice-change.d.ts.map +1 -0
  481. package/dist/inputs/shared/utils/choice-change.js +13 -0
  482. package/dist/inputs/shared/utils/choice-change.js.map +1 -0
  483. package/dist/inputs/shared/utils/controlled-csv.cjs +2 -0
  484. package/dist/inputs/shared/utils/controlled-csv.cjs.map +1 -0
  485. package/dist/inputs/shared/utils/controlled-csv.d.ts +8 -0
  486. package/dist/inputs/shared/utils/controlled-csv.d.ts.map +1 -0
  487. package/dist/inputs/shared/utils/controlled-csv.js +15 -0
  488. package/dist/inputs/shared/utils/controlled-csv.js.map +1 -0
  489. package/dist/inputs/shared/utils/field-values.cjs +2 -0
  490. package/dist/inputs/shared/utils/field-values.cjs.map +1 -0
  491. package/dist/inputs/shared/utils/field-values.d.ts +5 -0
  492. package/dist/inputs/shared/utils/field-values.d.ts.map +1 -0
  493. package/dist/inputs/shared/utils/field-values.js +13 -0
  494. package/dist/inputs/shared/utils/field-values.js.map +1 -0
  495. package/dist/inputs/shared/utils/index.d.ts +5 -0
  496. package/dist/inputs/shared/utils/index.d.ts.map +1 -0
  497. package/dist/inputs/shared/validation/index.cjs +2 -0
  498. package/dist/inputs/shared/validation/index.cjs.map +1 -0
  499. package/dist/inputs/shared/validation/index.d.ts +14 -0
  500. package/dist/inputs/shared/validation/index.d.ts.map +1 -0
  501. package/dist/inputs/shared/validation/index.js +13 -0
  502. package/dist/inputs/shared/validation/index.js.map +1 -0
  503. package/dist/inputs/slider/slider.css?inline.cjs +2 -0
  504. package/dist/inputs/slider/slider.css?inline.cjs.map +1 -0
  505. package/dist/inputs/slider/slider.css?inline.js +6 -0
  506. package/dist/inputs/slider/slider.css?inline.js.map +1 -0
  507. package/dist/inputs/slider/slider.d.ts +82 -0
  508. package/dist/inputs/slider/slider.d.ts.map +1 -0
  509. package/dist/inputs/switch/switch.css?inline.cjs +2 -0
  510. package/dist/inputs/switch/switch.css?inline.cjs.map +1 -0
  511. package/dist/inputs/switch/switch.css?inline.js +6 -0
  512. package/dist/inputs/switch/switch.css?inline.js.map +1 -0
  513. package/dist/inputs/switch/switch.d.ts +40 -0
  514. package/dist/inputs/switch/switch.d.ts.map +1 -0
  515. package/dist/inputs/textarea/textarea.css?inline.cjs +2 -0
  516. package/dist/inputs/textarea/textarea.css?inline.cjs.map +1 -0
  517. package/dist/inputs/textarea/textarea.css?inline.js +6 -0
  518. package/dist/inputs/textarea/textarea.css?inline.js.map +1 -0
  519. package/dist/inputs/textarea/textarea.d.ts +57 -0
  520. package/dist/inputs/textarea/textarea.d.ts.map +1 -0
  521. package/dist/layout/box/box.css?inline.cjs +2 -0
  522. package/dist/layout/box/box.css?inline.cjs.map +1 -0
  523. package/dist/layout/box/box.css?inline.js +6 -0
  524. package/dist/layout/box/box.css?inline.js.map +1 -0
  525. package/dist/layout/box/box.d.ts +52 -0
  526. package/dist/layout/box/box.d.ts.map +1 -0
  527. package/dist/layout/grid/grid.css?inline.cjs +2 -0
  528. package/dist/layout/grid/grid.css?inline.cjs.map +1 -0
  529. package/dist/layout/grid/grid.css?inline.js +6 -0
  530. package/dist/layout/grid/grid.css?inline.js.map +1 -0
  531. package/dist/layout/grid/grid.d.ts +105 -0
  532. package/dist/layout/grid/grid.d.ts.map +1 -0
  533. package/dist/layout/grid-item/grid-item.css?inline.cjs +2 -0
  534. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +1 -0
  535. package/dist/layout/grid-item/grid-item.css?inline.js +6 -0
  536. package/dist/layout/grid-item/grid-item.css?inline.js.map +1 -0
  537. package/dist/layout/grid-item/grid-item.d.ts +47 -0
  538. package/dist/layout/grid-item/grid-item.d.ts.map +1 -0
  539. package/dist/layout/index.cjs +1 -0
  540. package/dist/layout/index.d.ts +9 -0
  541. package/dist/layout/index.d.ts.map +1 -0
  542. package/dist/layout/index.js +4 -0
  543. package/dist/layout/sidebar/sidebar-group.css?inline.cjs +2 -0
  544. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +1 -0
  545. package/dist/layout/sidebar/sidebar-group.css?inline.js +6 -0
  546. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +1 -0
  547. package/dist/layout/sidebar/sidebar-item.css?inline.cjs +2 -0
  548. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +1 -0
  549. package/dist/layout/sidebar/sidebar-item.css?inline.js +6 -0
  550. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +1 -0
  551. package/dist/layout/sidebar/sidebar.css?inline.cjs +2 -0
  552. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +1 -0
  553. package/dist/layout/sidebar/sidebar.css?inline.js +6 -0
  554. package/dist/layout/sidebar/sidebar.css?inline.js.map +1 -0
  555. package/dist/layout/sidebar/sidebar.d.ts +190 -0
  556. package/dist/layout/sidebar/sidebar.d.ts.map +1 -0
  557. package/dist/menu.cjs +133 -0
  558. package/dist/menu.cjs.map +1 -0
  559. package/dist/menu.js +296 -0
  560. package/dist/menu.js.map +1 -0
  561. package/dist/number-input.cjs +55 -0
  562. package/dist/number-input.cjs.map +1 -0
  563. package/dist/number-input.js +158 -0
  564. package/dist/number-input.js.map +1 -0
  565. package/dist/otp-input.cjs +22 -0
  566. package/dist/otp-input.cjs.map +1 -0
  567. package/dist/otp-input.js +120 -0
  568. package/dist/otp-input.js.map +1 -0
  569. package/dist/overlay/dialog/dialog.css?inline.cjs +2 -0
  570. package/dist/overlay/dialog/dialog.css?inline.cjs.map +1 -0
  571. package/dist/overlay/dialog/dialog.css?inline.js +6 -0
  572. package/dist/overlay/dialog/dialog.css?inline.js.map +1 -0
  573. package/dist/overlay/dialog/dialog.d.ts +98 -0
  574. package/dist/overlay/dialog/dialog.d.ts.map +1 -0
  575. package/dist/overlay/drawer/drawer.css?inline.cjs +2 -0
  576. package/dist/overlay/drawer/drawer.css?inline.cjs.map +1 -0
  577. package/dist/overlay/drawer/drawer.css?inline.js +6 -0
  578. package/dist/overlay/drawer/drawer.css?inline.js.map +1 -0
  579. package/dist/overlay/drawer/drawer.d.ts +98 -0
  580. package/dist/overlay/drawer/drawer.d.ts.map +1 -0
  581. package/dist/overlay/index.cjs +1 -0
  582. package/dist/overlay/index.d.ts +11 -0
  583. package/dist/overlay/index.d.ts.map +1 -0
  584. package/dist/overlay/index.js +5 -0
  585. package/dist/overlay/menu/menu.css?inline.cjs +2 -0
  586. package/dist/overlay/menu/menu.css?inline.cjs.map +1 -0
  587. package/dist/overlay/menu/menu.css?inline.js +6 -0
  588. package/dist/overlay/menu/menu.css?inline.js.map +1 -0
  589. package/dist/overlay/menu/menu.d.ts +45 -0
  590. package/dist/overlay/menu/menu.d.ts.map +1 -0
  591. package/dist/overlay/popover/popover.css?inline.cjs +2 -0
  592. package/dist/overlay/popover/popover.css?inline.cjs.map +1 -0
  593. package/dist/overlay/popover/popover.css?inline.js +6 -0
  594. package/dist/overlay/popover/popover.css?inline.js.map +1 -0
  595. package/dist/overlay/popover/popover.d.ts +56 -0
  596. package/dist/overlay/popover/popover.d.ts.map +1 -0
  597. package/dist/overlay/tooltip/tooltip.css?inline.cjs +2 -0
  598. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +1 -0
  599. package/dist/overlay/tooltip/tooltip.css?inline.js +6 -0
  600. package/dist/overlay/tooltip/tooltip.css?inline.js.map +1 -0
  601. package/dist/overlay/tooltip/tooltip.d.ts +55 -0
  602. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -0
  603. package/dist/pagination.cjs +102 -0
  604. package/dist/pagination.cjs.map +1 -0
  605. package/dist/pagination.js +168 -0
  606. package/dist/pagination.js.map +1 -0
  607. package/dist/popover.cjs +16 -0
  608. package/dist/popover.cjs.map +1 -0
  609. package/dist/popover.js +110 -0
  610. package/dist/popover.js.map +1 -0
  611. package/dist/progress.cjs +51 -0
  612. package/dist/progress.cjs.map +1 -0
  613. package/dist/progress.js +90 -0
  614. package/dist/progress.js.map +1 -0
  615. package/dist/radio-group.cjs +20 -0
  616. package/dist/radio-group.cjs.map +1 -0
  617. package/dist/radio-group.js +104 -0
  618. package/dist/radio-group.js.map +1 -0
  619. package/dist/radio.cjs +16 -0
  620. package/dist/radio.cjs.map +1 -0
  621. package/dist/radio.js +135 -0
  622. package/dist/radio.js.map +1 -0
  623. package/dist/rating.cjs +37 -0
  624. package/dist/rating.cjs.map +1 -0
  625. package/dist/rating.js +123 -0
  626. package/dist/rating.js.map +1 -0
  627. package/dist/select.cjs +77 -0
  628. package/dist/select.cjs.map +1 -0
  629. package/dist/select.js +317 -0
  630. package/dist/select.js.map +1 -0
  631. package/dist/separator.cjs +26 -0
  632. package/dist/separator.cjs.map +1 -0
  633. package/dist/separator.js +46 -0
  634. package/dist/separator.js.map +1 -0
  635. package/dist/sidebar.cjs +69 -0
  636. package/dist/sidebar.cjs.map +1 -0
  637. package/dist/sidebar.js +202 -0
  638. package/dist/sidebar.js.map +1 -0
  639. package/dist/skeleton.cjs +10 -0
  640. package/dist/skeleton.cjs.map +1 -0
  641. package/dist/skeleton.js +56 -0
  642. package/dist/skeleton.js.map +1 -0
  643. package/dist/slider.cjs +24 -0
  644. package/dist/slider.cjs.map +1 -0
  645. package/dist/slider.js +209 -0
  646. package/dist/slider.js.map +1 -0
  647. package/dist/stateit/dist/computed.cjs +2 -0
  648. package/dist/stateit/dist/computed.cjs.map +1 -0
  649. package/dist/stateit/dist/computed.js +65 -0
  650. package/dist/stateit/dist/computed.js.map +1 -0
  651. package/dist/stateit/dist/effect.cjs +2 -0
  652. package/dist/stateit/dist/effect.cjs.map +1 -0
  653. package/dist/stateit/dist/effect.js +53 -0
  654. package/dist/stateit/dist/effect.js.map +1 -0
  655. package/dist/stateit/dist/index.cjs +1 -0
  656. package/dist/stateit/dist/index.js +5 -0
  657. package/dist/stateit/dist/runtime.cjs +2 -0
  658. package/dist/stateit/dist/runtime.cjs.map +1 -0
  659. package/dist/stateit/dist/runtime.js +43 -0
  660. package/dist/stateit/dist/runtime.js.map +1 -0
  661. package/dist/stateit/dist/signal.cjs +2 -0
  662. package/dist/stateit/dist/signal.cjs.map +1 -0
  663. package/dist/stateit/dist/signal.js +27 -0
  664. package/dist/stateit/dist/signal.js.map +1 -0
  665. package/dist/stateit/dist/store.cjs +2 -0
  666. package/dist/stateit/dist/store.cjs.map +1 -0
  667. package/dist/stateit/dist/store.js +17 -0
  668. package/dist/stateit/dist/store.js.map +1 -0
  669. package/dist/stateit/dist/types.cjs +2 -0
  670. package/dist/stateit/dist/types.cjs.map +1 -0
  671. package/dist/stateit/dist/types.js +6 -0
  672. package/dist/stateit/dist/types.js.map +1 -0
  673. package/dist/styles/animation.css +87 -0
  674. package/dist/styles/index.cjs +2 -0
  675. package/dist/styles/index.cjs.map +1 -0
  676. package/dist/styles/index.d.ts +48 -0
  677. package/dist/styles/index.d.ts.map +1 -0
  678. package/dist/styles/index.js +26 -0
  679. package/dist/styles/index.js.map +1 -0
  680. package/dist/styles/layer.css +18 -0
  681. package/dist/styles/mixins/accessibility.css.cjs +15 -0
  682. package/dist/styles/mixins/accessibility.css.cjs.map +1 -0
  683. package/dist/styles/mixins/accessibility.css.d.ts +46 -0
  684. package/dist/styles/mixins/accessibility.css.d.ts.map +1 -0
  685. package/dist/styles/mixins/accessibility.css.js +20 -0
  686. package/dist/styles/mixins/accessibility.css.js.map +1 -0
  687. package/dist/styles/mixins/animation.css.cjs +71 -0
  688. package/dist/styles/mixins/animation.css.cjs.map +1 -0
  689. package/dist/styles/mixins/animation.css.d.ts +22 -0
  690. package/dist/styles/mixins/animation.css.d.ts.map +1 -0
  691. package/dist/styles/mixins/animation.css.js +90 -0
  692. package/dist/styles/mixins/animation.css.js.map +1 -0
  693. package/dist/styles/mixins/shape.css.cjs +72 -0
  694. package/dist/styles/mixins/shape.css.cjs.map +1 -0
  695. package/dist/styles/mixins/shape.css.d.ts +97 -0
  696. package/dist/styles/mixins/shape.css.d.ts.map +1 -0
  697. package/dist/styles/mixins/shape.css.js +104 -0
  698. package/dist/styles/mixins/shape.css.js.map +1 -0
  699. package/dist/styles/mixins/states.css.cjs +18 -0
  700. package/dist/styles/mixins/states.css.cjs.map +1 -0
  701. package/dist/styles/mixins/states.css.d.ts +61 -0
  702. package/dist/styles/mixins/states.css.d.ts.map +1 -0
  703. package/dist/styles/mixins/states.css.js +26 -0
  704. package/dist/styles/mixins/states.css.js.map +1 -0
  705. package/dist/styles/mixins/theme.css.cjs +146 -0
  706. package/dist/styles/mixins/theme.css.cjs.map +1 -0
  707. package/dist/styles/mixins/theme.css.d.ts +93 -0
  708. package/dist/styles/mixins/theme.css.d.ts.map +1 -0
  709. package/dist/styles/mixins/theme.css.js +151 -0
  710. package/dist/styles/mixins/theme.css.js.map +1 -0
  711. package/dist/styles/mixins/variants.css.cjs +84 -0
  712. package/dist/styles/mixins/variants.css.cjs.map +1 -0
  713. package/dist/styles/mixins/variants.css.d.ts +22 -0
  714. package/dist/styles/mixins/variants.css.d.ts.map +1 -0
  715. package/dist/styles/mixins/variants.css.js +89 -0
  716. package/dist/styles/mixins/variants.css.js.map +1 -0
  717. package/dist/styles/preflight.css +237 -0
  718. package/dist/styles/styles.css +5 -0
  719. package/dist/styles/theme.css +457 -0
  720. package/dist/switch.cjs +16 -0
  721. package/dist/switch.cjs.map +1 -0
  722. package/dist/switch.js +82 -0
  723. package/dist/switch.js.map +1 -0
  724. package/dist/tab-item.cjs +17 -0
  725. package/dist/tab-item.cjs.map +1 -0
  726. package/dist/tab-item.js +57 -0
  727. package/dist/tab-item.js.map +1 -0
  728. package/dist/tab-panel.cjs +14 -0
  729. package/dist/tab-panel.cjs.map +1 -0
  730. package/dist/tab-panel.js +51 -0
  731. package/dist/tab-panel.js.map +1 -0
  732. package/dist/table.cjs +2 -0
  733. package/dist/table.cjs.map +1 -0
  734. package/dist/table.js +101 -0
  735. package/dist/table.js.map +1 -0
  736. package/dist/tabs.cjs +17 -0
  737. package/dist/tabs.cjs.map +1 -0
  738. package/dist/tabs.js +98 -0
  739. package/dist/tabs.js.map +1 -0
  740. package/dist/text.cjs +2 -0
  741. package/dist/text.cjs.map +1 -0
  742. package/dist/text.js +30 -0
  743. package/dist/text.js.map +1 -0
  744. package/dist/textarea.cjs +16 -0
  745. package/dist/textarea.cjs.map +1 -0
  746. package/dist/textarea.js +122 -0
  747. package/dist/textarea.js.map +1 -0
  748. package/dist/toast.cjs +63 -0
  749. package/dist/toast.cjs.map +1 -0
  750. package/dist/toast.js +221 -0
  751. package/dist/toast.js.map +1 -0
  752. package/dist/tooltip.cjs +15 -0
  753. package/dist/tooltip.cjs.map +1 -0
  754. package/dist/tooltip.js +111 -0
  755. package/dist/tooltip.js.map +1 -0
  756. package/dist/types/index.d.ts +7 -0
  757. package/dist/types/index.d.ts.map +1 -0
  758. package/dist/types/shared.d.ts +120 -0
  759. package/dist/types/shared.d.ts.map +1 -0
  760. package/dist/utils/animation.cjs +2 -0
  761. package/dist/utils/animation.cjs.map +1 -0
  762. package/dist/utils/animation.d.ts +2 -0
  763. package/dist/utils/animation.d.ts.map +1 -0
  764. package/dist/utils/animation.js +29 -0
  765. package/dist/utils/animation.js.map +1 -0
  766. package/dist/utils/background-lock.cjs +2 -0
  767. package/dist/utils/background-lock.cjs.map +1 -0
  768. package/dist/utils/background-lock.d.ts +20 -0
  769. package/dist/utils/background-lock.d.ts.map +1 -0
  770. package/dist/utils/background-lock.js +21 -0
  771. package/dist/utils/background-lock.js.map +1 -0
  772. package/dist/utils/index.cjs +1 -0
  773. package/dist/utils/index.d.ts +4 -0
  774. package/dist/utils/index.d.ts.map +1 -0
  775. package/dist/utils/index.js +3 -0
  776. package/dist/utils/use-overlay.cjs +2 -0
  777. package/dist/utils/use-overlay.cjs.map +1 -0
  778. package/dist/utils/use-overlay.d.ts +26 -0
  779. package/dist/utils/use-overlay.d.ts.map +1 -0
  780. package/dist/utils/use-overlay.js +34 -0
  781. package/dist/utils/use-overlay.js.map +1 -0
  782. package/dist/virtualit/dist/dom/dom.cjs +2 -0
  783. package/dist/virtualit/dist/dom/dom.cjs.map +1 -0
  784. package/dist/virtualit/dist/dom/dom.js +47 -0
  785. package/dist/virtualit/dist/dom/dom.js.map +1 -0
  786. package/dist/virtualit/dist/dom.cjs +1 -0
  787. package/dist/virtualit/dist/dom.js +2 -0
  788. package/dist/virtualit/dist/virtualit.cjs +2 -0
  789. package/dist/virtualit/dist/virtualit.cjs.map +1 -0
  790. package/dist/virtualit/dist/virtualit.js +129 -0
  791. package/dist/virtualit/dist/virtualit.js.map +1 -0
  792. package/package.json +282 -0
package/dist/select.js ADDED
@@ -0,0 +1,317 @@
1
+ import { sizeVariantMixin as e } from "./styles/mixins/shape.css.js";
2
+ import { disabledLoadingMixin as t } from "./styles/mixins/states.css.js";
3
+ import { forcedColorsFocusMixin as n } from "./styles/mixins/theme.css.js";
4
+ import { formFieldMixins as r } from "./styles/index.js";
5
+ import { checkIcon as i, chevronDownIcon as a } from "./icons.js";
6
+ import "./chip.js";
7
+ import { e as o } from "./craftit/dist/labs/list.js";
8
+ import { t as s } from "./craftit/dist/labs/overlay.js";
9
+ import "./craftit/dist/labs.js";
10
+ import { createDropdownPositioner as c } from "./inputs/shared/dom-sync/dropdown.js";
11
+ import { resolveMergedAssistiveText as l } from "./inputs/shared/utils/assistive-text.js";
12
+ import { createChoiceChangeDetail as u } from "./inputs/shared/utils/choice-change.js";
13
+ import { computeControlledCsvState as ee } from "./inputs/shared/utils/controlled-csv.js";
14
+ import { FORM_CTX as te } from "./inputs/shared/form-context.js";
15
+ import { mountLabelSyncStandalone as d } from "./inputs/shared/dom-sync/label-sync.js";
16
+ import "./inputs/shared/dom-sync/index.js";
17
+ import { createFieldValidation as ne } from "./inputs/shared/validation/index.js";
18
+ import { FIELD_SIZE_PRESET as f } from "./inputs/shared/design-presets.js";
19
+ import p from "./inputs/select/select.css?inline.js";
20
+ import { aria as m, computed as h, createFormIds as re, defineComponent as g, defineField as ie, effect as ae, html as _, inject as v, onMount as y, onSlotChange as b, ref as x, signal as S, typed as C, watch as w } from "@vielzeug/craftit";
21
+ //#region src/inputs/select/select.ts
22
+ var T = g({
23
+ formAssociated: !0,
24
+ props: {
25
+ color: { default: void 0 },
26
+ disabled: { default: !1 },
27
+ error: {
28
+ default: "",
29
+ omit: !0
30
+ },
31
+ fullwidth: { default: !1 },
32
+ helper: { default: "" },
33
+ label: { default: "" },
34
+ "label-placement": { default: "inset" },
35
+ loading: { default: !1 },
36
+ multiple: { default: !1 },
37
+ name: { default: "" },
38
+ options: C(void 0, { reflect: !1 }),
39
+ placeholder: { default: "" },
40
+ required: { default: !1 },
41
+ rounded: { default: void 0 },
42
+ size: { default: void 0 },
43
+ value: { default: "" },
44
+ variant: { default: void 0 }
45
+ },
46
+ setup({ emit: e, host: t, props: n }) {
47
+ let r = S([]), f = S([]), p = S(!1), g = S(-1), C = h(() => !!n.loading.value), T = h(() => {
48
+ let e = n.options.value;
49
+ return e === void 0 ? f.value : e;
50
+ }), E = v(te, void 0), D = h(() => r.value.join(",")), { triggerValidation: O } = ne(E, ie({
51
+ disabled: h(() => !!n.disabled.value || !!E?.disabled.value),
52
+ value: D
53
+ }, { onReset: () => {
54
+ r.value = [];
55
+ } }));
56
+ w(p, (e) => {
57
+ t.toggleAttribute("open", ((e) => !!e)(e));
58
+ }, { immediate: !0 }), w(n.error, (e) => {
59
+ t.toggleAttribute("has-error", ((e) => !!e)(e));
60
+ }, { immediate: !0 });
61
+ let { fieldId: k, labelId: A } = re("select", n.name.value), j = `listbox-${k}`, M = null, N = null, P = x(), F = x();
62
+ function I() {
63
+ let e = t.shadowRoot?.querySelector("slot");
64
+ if (!e) return;
65
+ let n = e.assignedElements({ flatten: !0 }), r = [];
66
+ for (let e of n) if (e.tagName === "OPTION") {
67
+ let t = e;
68
+ r.push({
69
+ disabled: t.disabled,
70
+ label: t.text || t.value,
71
+ value: t.value
72
+ });
73
+ } else if (e.tagName === "OPTGROUP") {
74
+ let t = e, n = t.label;
75
+ for (let e of Array.from(t.querySelectorAll("option"))) {
76
+ let t = e;
77
+ r.push({
78
+ disabled: t.disabled,
79
+ group: n,
80
+ label: t.text || t.value,
81
+ value: t.value
82
+ });
83
+ }
84
+ }
85
+ f.value = r;
86
+ }
87
+ ae(() => {
88
+ r.value = ee(n.value.value).values;
89
+ });
90
+ let L = h(() => {
91
+ if (r.value.length === 0) return "";
92
+ if (n.multiple.value && r.value.length > 1) return `${r.value.length} selected`;
93
+ let e = r.value[0];
94
+ return T.value.find((t) => t.value === e)?.label ?? e;
95
+ }), R = h(() => n.multiple.value ? r.value.map((e) => ({
96
+ label: T.value.find((t) => t.value === e)?.label ?? e,
97
+ value: e
98
+ })) : []), z = h(() => l(n.error.value, n.helper.value)), B = h(() => n.multiple.value && r.value.length > 0), V = h(() => L.value || n.placeholder.value || ""), H = h(() => !!n.label.value);
99
+ function U(e) {
100
+ let t = [], n = /* @__PURE__ */ new Map();
101
+ for (let t of e) {
102
+ let e = t.group;
103
+ n.has(e) || n.set(e, []), n.get(e).push(t);
104
+ }
105
+ let r = 0;
106
+ for (let [e, i] of n) {
107
+ e !== void 0 && t.push({
108
+ label: e,
109
+ type: "group"
110
+ });
111
+ for (let e of i) t.push({
112
+ idx: r++,
113
+ opt: e,
114
+ type: "option"
115
+ });
116
+ }
117
+ return t;
118
+ }
119
+ let W = h(() => U(T.value));
120
+ function G(e) {
121
+ return T.value.find((t) => t.value === e)?.label ?? e;
122
+ }
123
+ function K(t) {
124
+ let n = r.value;
125
+ e("change", u(n, n.map((e) => G(e)), t));
126
+ }
127
+ function q(e) {
128
+ e.stopPropagation();
129
+ let t = e.detail?.value;
130
+ t !== void 0 && (r.value = r.value.filter((e) => e !== t), K(e), O("change"));
131
+ }
132
+ let J = c(() => M, () => N), Y = o({
133
+ getIndex: () => g.value,
134
+ getItems: () => T.value,
135
+ isItemDisabled: (e) => e.disabled,
136
+ setIndex: (e) => {
137
+ g.value = e, oe();
138
+ }
139
+ }), X = s({
140
+ getBoundaryElement: () => t,
141
+ getPanelElement: () => N,
142
+ getTriggerElement: () => M,
143
+ isDisabled: () => !!n.disabled.value,
144
+ isOpen: () => p.value,
145
+ positioner: {
146
+ floating: () => N,
147
+ reference: () => M,
148
+ update: () => J.updatePosition()
149
+ },
150
+ setOpen: (e) => {
151
+ p.value = e, e || Y.reset();
152
+ }
153
+ });
154
+ function Z() {
155
+ X.open(), requestAnimationFrame(() => {
156
+ let e = r.value.length > 0 ? T.value.findIndex((e) => e.value === r.value[0]) : 0;
157
+ Y.set(e >= 0 ? e : 0);
158
+ });
159
+ }
160
+ function Q(e = "programmatic") {
161
+ X.close({ reason: e }), O("blur");
162
+ }
163
+ function $(e, t) {
164
+ e.disabled || (n.multiple.value ? r.value = r.value.includes(e.value) ? r.value.filter((t) => t !== e.value) : [...r.value, e.value] : (r.value = [e.value], Q()), K(t), O("change"));
165
+ }
166
+ function oe() {
167
+ let e = g.value;
168
+ if (e >= 0) {
169
+ (N?.querySelector(`#${k}-opt-${e}`))?.scrollIntoView({ block: "nearest" });
170
+ return;
171
+ }
172
+ N && N.querySelector("[data-focused]")?.scrollIntoView({ block: "nearest" });
173
+ }
174
+ function se(e) {
175
+ if (n.disabled.value) return;
176
+ let t = T.value;
177
+ switch (e.key) {
178
+ case " ":
179
+ case "Enter":
180
+ if (e.preventDefault(), p.value) {
181
+ let n = g.value;
182
+ n >= 0 && n < t.length && $(t[n], e);
183
+ } else Z();
184
+ break;
185
+ case "ArrowDown":
186
+ e.preventDefault(), p.value ? Y.next() : Z();
187
+ break;
188
+ case "ArrowUp":
189
+ e.preventDefault(), p.value ? Y.prev() : Z();
190
+ break;
191
+ case "End":
192
+ p.value && (e.preventDefault(), Y.last());
193
+ break;
194
+ case "Escape":
195
+ e.preventDefault(), Q("escape");
196
+ break;
197
+ case "Home":
198
+ p.value && (e.preventDefault(), Y.first());
199
+ break;
200
+ case "Tab":
201
+ Q();
202
+ break;
203
+ }
204
+ }
205
+ return y(() => {
206
+ b("default", I), I(), d(F, P, n), M && m(M, {
207
+ activedescendant: () => g.value >= 0 ? `${k}-opt-${g.value}` : null,
208
+ disabled: () => n.disabled.value,
209
+ expanded: () => p.value ? "true" : "false",
210
+ invalid: () => !!n.error.value,
211
+ labelledby: () => H.value ? A : null
212
+ });
213
+ let e = X.bindOutsideClick(document);
214
+ return () => {
215
+ J.destroy(), e();
216
+ };
217
+ }), _`<slot style="display:none"></slot>
218
+ <div class="select-wrapper">
219
+ <label class="label-outside" id="${A}" ref=${P} hidden></label>
220
+ <div
221
+ class="field"
222
+ ref=${(e) => {
223
+ M = e;
224
+ }}
225
+ role="combobox"
226
+ tabindex=${() => n.disabled.value ? "-1" : "0"}
227
+ aria-controls="${j}"
228
+ aria-expanded="false"
229
+ aria-labelledby="${A}"
230
+ @click=${(e) => {
231
+ e.stopPropagation(), p.value ? Q() : Z();
232
+ }}
233
+ @keydown=${se}>
234
+ <label class="label-inset" id="${A}" ref=${F} hidden></label>
235
+ <div class="trigger-row">
236
+ <div class="chips-row" ?hidden=${() => !B.value}>
237
+ ${() => R.value.map((e) => _`
238
+ <bit-chip
239
+ value=${e.value}
240
+ aria-label=${e.label}
241
+ mode="removable"
242
+ variant="flat"
243
+ size="sm"
244
+ color=${() => n.color.value}
245
+ @remove=${q}>
246
+ ${e.label}
247
+ </bit-chip>
248
+ `)}
249
+ </div>
250
+ <span
251
+ class="trigger-value ${() => L.value ? "" : "trigger-placeholder"}"
252
+ ?hidden=${() => B.value}
253
+ >${() => V.value}</span
254
+ >
255
+ </div>
256
+ <span class="trigger-icon" aria-hidden="true">
257
+ ${a}
258
+ <span class="loader" aria-label="Loading"></span>
259
+ </span>
260
+ </div>
261
+ <div
262
+ class="helper-text"
263
+ aria-live="polite"
264
+ ?hidden=${() => z.value.hidden}
265
+ style=${() => z.value.isError ? "color: var(--color-error);" : ""}>
266
+ ${() => z.value.text}
267
+ </div>
268
+ </div>
269
+ <div
270
+ class="dropdown"
271
+ ?data-open=${() => p.value}
272
+ role="listbox"
273
+ id="${j}"
274
+ aria-label="Options"
275
+ ref=${(e) => {
276
+ N = e;
277
+ }}>
278
+ <div class="dropdown-loading" ?hidden=${() => !C.value}>Loading…</div>
279
+ <div class="dropdown-empty" ?hidden=${() => C.value || T.value.length > 0}>No options</div>
280
+ <div class="options-list" ?hidden=${() => C.value || T.value.length === 0}>
281
+ ${() => W.value.map((e) => e.type === "group" ? _`<div class="optgroup-label" role="presentation">${e.label}</div>` : _`<div
282
+ class="option"
283
+ role="option"
284
+ id=${`${k}-opt-${e.idx}`}
285
+ data-option-index=${() => String(e.idx)}
286
+ data-option-value=${e.opt.value}
287
+ aria-selected=${() => String(r.value.includes(e.opt.value))}
288
+ aria-disabled=${() => String(e.opt.disabled)}
289
+ ?data-focused=${() => g.value === e.idx}
290
+ ?data-selected=${() => r.value.includes(e.opt.value)}
291
+ ?data-disabled=${() => e.opt.disabled}
292
+ @click=${(t) => {
293
+ t.stopPropagation(), $(e.opt, t);
294
+ }}
295
+ @pointerenter=${() => {
296
+ g.value = e.idx;
297
+ }}>
298
+ <span>${e.opt.label}</span>
299
+ <span class="option-check" aria-hidden="true">${i}</span>
300
+ </div>`)}
301
+ </div>
302
+ </div>`;
303
+ },
304
+ shadow: { delegatesFocus: !0 },
305
+ styles: [
306
+ e(f),
307
+ ...r,
308
+ t(),
309
+ n(".field"),
310
+ p
311
+ ],
312
+ tag: "bit-select"
313
+ });
314
+ //#endregion
315
+ export { T as SELECT_TAG };
316
+
317
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","names":[],"sources":["../src/inputs/select/select.ts"],"sourcesContent":["import {\n aria,\n computed,\n createFormIds,\n defineComponent,\n defineField,\n effect,\n html,\n inject,\n onMount,\n onSlotChange,\n ref,\n signal,\n typed,\n watch,\n} from '@vielzeug/craftit';\nimport { createListNavigation, createOverlayControl } from '@vielzeug/craftit/labs';\n\nimport type { VisualVariant } from '../../types';\n\nimport '../../feedback/chip/chip';\nimport type { SelectableFieldProps } from '../shared/base-props';\n\nimport { checkIcon, chevronDownIcon } from '../../icons';\nimport { disabledLoadingMixin, forcedColorsFocusMixin, formFieldMixins, sizeVariantMixin } from '../../styles';\nimport { FIELD_SIZE_PRESET } from '../shared/design-presets';\nimport { createDropdownPositioner, mountLabelSyncStandalone } from '../shared/dom-sync';\nimport { FORM_CTX } from '../shared/form-context';\nimport {\n type ChoiceChangeDetail,\n computeControlledCsvState,\n createChoiceChangeDetail,\n resolveMergedAssistiveText,\n} from '../shared/utils';\nimport { createFieldValidation } from '../shared/validation';\nimport componentStyles from './select.css?inline';\n\n// ============================================\n// Types\n// ============================================\n\ntype OptionItem = {\n disabled: boolean;\n group?: string;\n label: string;\n value: string;\n};\n\ntype FlatRow =\n | {\n idx: number;\n opt: OptionItem;\n type: 'option';\n }\n | {\n label: string;\n type: 'group';\n };\n\n// ============================================\n// Styles\n// ============================================\n\n// ============================================\n// Component Props\n// ============================================\n\n/** Select component properties */\n\nexport type BitSelectEvents = {\n change: ChoiceChangeDetail;\n};\n\nexport type BitSelectProps = SelectableFieldProps<Exclude<VisualVariant, 'glass' | 'text' | 'frost'>> & {\n /** Show loading state in dropdown */\n loading?: boolean;\n /** Allow selecting multiple options */\n multiple?: boolean;\n /** JS options array (alternative to slotted <option> elements) */\n options?: OptionItem[];\n /** Mark the field as required */\n required?: boolean;\n};\n\n/**\n * A fully custom form-associated select dropdown with keyboard navigation and ARIA support.\n * Reads `<option>` and `<optgroup>` children from the default slot.\n *\n * @element bit-select\n *\n * @attr {string} label - Label text\n * @attr {string} label-placement - 'inset' | 'outside'\n * @attr {string} value - Current selected value(s) (comma-separated for multiple)\n * @attr {string} placeholder - Placeholder when no option selected\n * @attr {string} name - Form field name\n * @attr {boolean} multiple - Enable multi-select\n * @attr {boolean} disabled - Disable the select\n * @attr {boolean} required - Required field\n * @attr {string} helper - Helper text below the select\n * @attr {string} error - Error message\n * @attr {string} color - Theme color\n * @attr {string} variant - Visual variant\n * @attr {string} size - Component size\n * @attr {string} rounded - Border radius\n * @attr {boolean} fullwidth - Expand to full width\n *\n * @fires change - Fired when selection changes. detail: { value: string, values: string[], labels: string[], originalEvent?: Event }\n *\n * @slot - `<option>` and `<optgroup>` elements\n *\n * @cssprop --select-bg - Background\n * @cssprop --select-border-color - Border color\n * @cssprop --select-radius - Border radius\n * @cssprop --select-padding - Padding\n * @cssprop --select-font-size - Font size\n * @cssprop --select-placeholder-color - Placeholder text color\n *\n * @example\n * ```html\n * <bit-select label=\"Role\" value=\"admin\">\n * <option value=\"admin\">Administrator</option>\n * <option value=\"editor\">Editor</option>\n * <option value=\"viewer\">Viewer</option>\n * </bit-select>\n *\n * <bit-select label=\"Tags\" multiple color=\"primary\">\n * <optgroup label=\"Frontend\">\n * <option value=\"react\">React</option>\n * <option value=\"vue\">Vue</option>\n * </optgroup>\n * <optgroup label=\"Backend\">\n * <option value=\"node\">Node.js</option>\n * </optgroup>\n * </bit-select>\n * ```\n */\nexport const SELECT_TAG = defineComponent<BitSelectProps, BitSelectEvents>({\n formAssociated: true,\n props: {\n color: { default: undefined },\n disabled: { default: false },\n error: { default: '', omit: true },\n fullwidth: { default: false },\n helper: { default: '' },\n label: { default: '' },\n 'label-placement': { default: 'inset' },\n loading: { default: false },\n multiple: { default: false },\n name: { default: '' },\n options: typed<OptionItem[] | undefined>(undefined, { reflect: false }),\n placeholder: { default: '' },\n required: { default: false },\n rounded: { default: undefined },\n size: { default: undefined },\n value: { default: '' },\n variant: { default: undefined },\n },\n setup({ emit, host, props }) {\n // ============================================\n // State\n // ============================================\n const selectedValues = signal<string[]>([]);\n const slottedOptions = signal<OptionItem[]>([]);\n const isOpen = signal(false);\n const focusedIndex = signal(-1);\n const isLoading = computed(() => Boolean(props.loading.value));\n // Merged options: explicit prop value overrides slotted options.\n const options = computed(() => {\n const propOptions = props.options.value;\n\n return propOptions !== undefined ? propOptions : slottedOptions.value;\n });\n const formCtx = inject(FORM_CTX, undefined);\n // Form-associated value (comma-separated for multiple)\n const formValue = computed(() => selectedValues.value.join(','));\n const fd = defineField(\n { disabled: computed(() => Boolean(props.disabled.value) || Boolean(formCtx?.disabled.value)), value: formValue },\n {\n onReset: () => {\n selectedValues.value = [];\n },\n },\n );\n\n const { triggerValidation } = createFieldValidation(formCtx, fd);\n\n // Sync host attributes from component state for CSS hooks.\n watch(\n isOpen,\n (value) => {\n host.toggleAttribute('open', ((value) => Boolean(value))(value));\n },\n { immediate: true },\n );\n watch(\n props.error,\n (value) => {\n host.toggleAttribute('has-error', ((value) => Boolean(value))(value));\n },\n { immediate: true },\n );\n\n // Accessibility IDs\n const { fieldId: selectId, labelId } = createFormIds('select', props.name.value);\n const listboxId = `listbox-${selectId}`;\n // DOM refs\n let triggerEl: HTMLElement | null = null;\n let dropdownEl: HTMLElement | null = null;\n // Refs for dynamic content\n const labelOutsideRef = ref<HTMLSpanElement>();\n const labelInsetRef = ref<HTMLSpanElement>();\n\n // ============================================\n // Option reading from slot\n // ============================================\n function readOptions() {\n const slot = host.shadowRoot?.querySelector<HTMLSlotElement>('slot');\n\n if (!slot) return;\n\n const assigned = slot.assignedElements({ flatten: true });\n const items: OptionItem[] = [];\n\n for (const el of assigned) {\n if (el.tagName === 'OPTION') {\n const opt = el as HTMLOptionElement;\n\n items.push({ disabled: opt.disabled, label: opt.text || opt.value, value: opt.value });\n } else if (el.tagName === 'OPTGROUP') {\n const group = el as HTMLOptGroupElement;\n const groupLabel = group.label;\n\n for (const child of Array.from(group.querySelectorAll('option'))) {\n const opt = child as HTMLOptionElement;\n\n items.push({ disabled: opt.disabled, group: groupLabel, label: opt.text || opt.value, value: opt.value });\n }\n }\n }\n slottedOptions.value = items;\n }\n // Initialize selectedValues from prop\n effect(() => {\n selectedValues.value = computeControlledCsvState(props.value.value).values;\n });\n\n // ============================================\n // Display value\n // ============================================\n const displayLabel = computed(() => {\n if (selectedValues.value.length === 0) return '';\n\n if (props.multiple.value && selectedValues.value.length > 1) {\n return `${selectedValues.value.length} selected`;\n }\n\n const first = selectedValues.value[0];\n\n return options.value.find((o) => o.value === first)?.label ?? first;\n });\n const selectedChipItems = computed(() => {\n if (!props.multiple.value) return [];\n\n return selectedValues.value.map((value) => ({\n label: options.value.find((o) => o.value === value)?.label ?? value,\n value,\n }));\n });\n const assistiveText = computed(() => resolveMergedAssistiveText(props.error.value, props.helper.value));\n const showChips = computed(() => props.multiple.value && selectedValues.value.length > 0);\n const triggerText = computed(() => displayLabel.value || props.placeholder.value || '');\n const hasLabel = computed(() => !!props.label.value);\n\n function buildFlatList(opts: OptionItem[]): FlatRow[] {\n const flat: FlatRow[] = [];\n const groups = new Map<string | undefined, OptionItem[]>();\n\n for (const opt of opts) {\n const key = opt.group;\n\n if (!groups.has(key)) groups.set(key, []);\n\n groups.get(key)!.push(opt);\n }\n\n let globalIdx = 0;\n\n for (const [groupLabel, groupOpts] of groups) {\n if (groupLabel !== undefined) flat.push({ label: groupLabel, type: 'group' });\n\n for (const opt of groupOpts) flat.push({ idx: globalIdx++, opt, type: 'option' });\n }\n\n return flat;\n }\n\n const flatRows = computed(() => buildFlatList(options.value));\n\n function getLabelForValue(value: string): string {\n return options.value.find((option) => option.value === value)?.label ?? value;\n }\n\n function emitChange(originalEvent?: Event): void {\n const values = selectedValues.value;\n const labels = values.map((value) => getLabelForValue(value));\n\n emit('change', createChoiceChangeDetail(values, labels, originalEvent));\n }\n\n function removeChip(event: Event): void {\n event.stopPropagation();\n\n const value = (event as CustomEvent<{ value?: string }>).detail?.value;\n\n if (value === undefined) return;\n\n selectedValues.value = selectedValues.value.filter((v) => v !== value);\n emitChange(event);\n triggerValidation('change');\n }\n\n // ============================================\n // Dropdown positioning (shared positioner)\n // ============================================\n const positioner = createDropdownPositioner(\n () => triggerEl,\n () => dropdownEl,\n );\n\n const listNavigation = createListNavigation<OptionItem>({\n getIndex: () => focusedIndex.value,\n getItems: () => options.value,\n isItemDisabled: (option) => option.disabled,\n setIndex: (index) => {\n focusedIndex.value = index;\n scrollFocusedIntoView();\n },\n });\n\n const overlay = createOverlayControl({\n getBoundaryElement: () => host,\n getPanelElement: () => dropdownEl,\n getTriggerElement: () => triggerEl,\n isDisabled: () => Boolean(props.disabled.value),\n isOpen: () => isOpen.value,\n positioner: {\n floating: () => dropdownEl,\n reference: () => triggerEl,\n update: () => positioner.updatePosition(),\n },\n setOpen: (next) => {\n isOpen.value = next;\n\n if (!next) listNavigation.reset();\n },\n });\n\n // ============================================\n // Open / Close\n // ============================================\n function open() {\n overlay.open();\n\n requestAnimationFrame(() => {\n const selectedIndex =\n selectedValues.value.length > 0\n ? options.value.findIndex((option) => option.value === selectedValues.value[0])\n : 0;\n\n listNavigation.set(selectedIndex >= 0 ? selectedIndex : 0);\n });\n }\n\n function close(reason: 'escape' | 'programmatic' = 'programmatic') {\n overlay.close({ reason });\n triggerValidation('blur');\n }\n // ============================================\n // Selection\n // ============================================\n function selectOption(opt: OptionItem, e?: Event) {\n if (opt.disabled) return;\n\n if (props.multiple.value) {\n selectedValues.value = selectedValues.value.includes(opt.value)\n ? selectedValues.value.filter((entry) => entry !== opt.value)\n : [...selectedValues.value, opt.value];\n } else {\n selectedValues.value = [opt.value];\n close();\n }\n\n emitChange(e);\n triggerValidation('change');\n }\n // ============================================\n // Keyboard navigation\n // ============================================\n function scrollFocusedIntoView() {\n const idx = focusedIndex.value;\n\n if (idx >= 0) {\n const focusedOptionEl = dropdownEl?.querySelector<HTMLElement>(`#${selectId}-opt-${idx}`);\n\n focusedOptionEl?.scrollIntoView({ block: 'nearest' });\n\n return;\n }\n\n if (!dropdownEl) return;\n\n const focusedEl = dropdownEl.querySelector<HTMLElement>('[data-focused]');\n\n focusedEl?.scrollIntoView({ block: 'nearest' });\n }\n function handleTriggerKeydown(e: KeyboardEvent) {\n if (props.disabled.value) return;\n\n const opts = options.value;\n\n switch (e.key) {\n case ' ':\n case 'Enter':\n e.preventDefault();\n\n if (isOpen.value) {\n const idx = focusedIndex.value;\n\n if (idx >= 0 && idx < opts.length) selectOption(opts[idx], e);\n } else {\n open();\n }\n\n break;\n case 'ArrowDown':\n e.preventDefault();\n\n if (!isOpen.value) {\n open();\n } else {\n listNavigation.next();\n }\n\n break;\n case 'ArrowUp':\n e.preventDefault();\n\n if (!isOpen.value) {\n open();\n } else {\n listNavigation.prev();\n }\n\n break;\n case 'End':\n if (isOpen.value) {\n e.preventDefault();\n listNavigation.last();\n }\n\n break;\n case 'Escape':\n e.preventDefault();\n close('escape');\n break;\n case 'Home':\n if (isOpen.value) {\n e.preventDefault();\n listNavigation.first();\n }\n\n break;\n case 'Tab':\n close();\n break;\n }\n }\n onMount(() => {\n onSlotChange('default', readOptions);\n // Ensure initial light-DOM <option>/<optgroup> content is available immediately.\n readOptions();\n mountLabelSyncStandalone(labelInsetRef, labelOutsideRef, props);\n\n if (triggerEl) {\n aria(triggerEl, {\n activedescendant: () => (focusedIndex.value >= 0 ? `${selectId}-opt-${focusedIndex.value}` : null),\n disabled: () => props.disabled.value,\n expanded: () => (isOpen.value ? 'true' : 'false'),\n invalid: () => !!props.error.value,\n labelledby: () => (hasLabel.value ? labelId : null),\n });\n }\n\n const removeOutsideClick = overlay.bindOutsideClick(document);\n\n return () => {\n positioner.destroy();\n removeOutsideClick();\n };\n });\n\n return html`<slot style=\"display:none\"></slot>\n <div class=\"select-wrapper\">\n <label class=\"label-outside\" id=\"${labelId}\" ref=${labelOutsideRef} hidden></label>\n <div\n class=\"field\"\n ref=${(el: HTMLElement) => {\n triggerEl = el;\n }}\n role=\"combobox\"\n tabindex=${() => (props.disabled.value ? '-1' : '0')}\n aria-controls=\"${listboxId}\"\n aria-expanded=\"false\"\n aria-labelledby=\"${labelId}\"\n @click=${(e: MouseEvent) => {\n e.stopPropagation();\n\n if (isOpen.value) close();\n else open();\n }}\n @keydown=${handleTriggerKeydown}>\n <label class=\"label-inset\" id=\"${labelId}\" ref=${labelInsetRef} hidden></label>\n <div class=\"trigger-row\">\n <div class=\"chips-row\" ?hidden=${() => !showChips.value}>\n ${() =>\n selectedChipItems.value.map(\n (item) => html`\n <bit-chip\n value=${item.value}\n aria-label=${item.label}\n mode=\"removable\"\n variant=\"flat\"\n size=\"sm\"\n color=${() => props.color.value}\n @remove=${removeChip}>\n ${item.label}\n </bit-chip>\n `,\n )}\n </div>\n <span\n class=\"trigger-value ${() => (displayLabel.value ? '' : 'trigger-placeholder')}\"\n ?hidden=${() => showChips.value}\n >${() => triggerText.value}</span\n >\n </div>\n <span class=\"trigger-icon\" aria-hidden=\"true\">\n ${chevronDownIcon}\n <span class=\"loader\" aria-label=\"Loading\"></span>\n </span>\n </div>\n <div\n class=\"helper-text\"\n aria-live=\"polite\"\n ?hidden=${() => assistiveText.value.hidden}\n style=${() => (assistiveText.value.isError ? 'color: var(--color-error);' : '')}>\n ${() => assistiveText.value.text}\n </div>\n </div>\n <div\n class=\"dropdown\"\n ?data-open=${() => isOpen.value}\n role=\"listbox\"\n id=\"${listboxId}\"\n aria-label=\"Options\"\n ref=${(el: HTMLElement) => {\n dropdownEl = el;\n }}>\n <div class=\"dropdown-loading\" ?hidden=${() => !isLoading.value}>Loading…</div>\n <div class=\"dropdown-empty\" ?hidden=${() => isLoading.value || options.value.length > 0}>No options</div>\n <div class=\"options-list\" ?hidden=${() => isLoading.value || options.value.length === 0}>\n ${() =>\n flatRows.value.map((row) =>\n row.type === 'group'\n ? html`<div class=\"optgroup-label\" role=\"presentation\">${row.label}</div>`\n : html`<div\n class=\"option\"\n role=\"option\"\n id=${`${selectId}-opt-${row.idx}`}\n data-option-index=${() => String(row.idx)}\n data-option-value=${row.opt.value}\n aria-selected=${() => String(selectedValues.value.includes(row.opt.value))}\n aria-disabled=${() => String(row.opt.disabled)}\n ?data-focused=${() => focusedIndex.value === row.idx}\n ?data-selected=${() => selectedValues.value.includes(row.opt.value)}\n ?data-disabled=${() => row.opt.disabled}\n @click=${(e: MouseEvent) => {\n e.stopPropagation();\n selectOption(row.opt, e);\n }}\n @pointerenter=${() => {\n focusedIndex.value = row.idx;\n }}>\n <span>${row.opt.label}</span>\n <span class=\"option-check\" aria-hidden=\"true\">${checkIcon}</span>\n </div>`,\n )}\n </div>\n </div>`;\n },\n shadow: { delegatesFocus: true },\n styles: [\n sizeVariantMixin(FIELD_SIZE_PRESET),\n ...formFieldMixins,\n disabledLoadingMixin(),\n forcedColorsFocusMixin('.field'),\n componentStyles,\n ],\n tag: 'bit-select',\n});\n"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/theme.css.cjs`);require(`./styles/index.cjs`);const t=require(`./content/separator/separator.css?inline.cjs`);let n=require(`@vielzeug/craftit`);var r=(0,n.defineComponent)({props:{color:(0,n.typed)(void 0),decorative:(0,n.typed)(!0),label:(0,n.typed)(void 0),orientation:(0,n.typed)(`horizontal`)},setup({props:e}){return n.html`
2
+ ${()=>e.label.value?n.html`
3
+ <div class="separator-wrapper" part="wrapper">
4
+ <hr
5
+ class="separator"
6
+ part="separator"
7
+ :role="${()=>e.decorative.value?`none`:`separator`}"
8
+ :aria-hidden="${()=>e.decorative.value?`true`:null}"
9
+ :aria-orientation="${()=>e.orientation.value}" />
10
+ <span class="separator-label" part="label">${()=>e.label.value}</span>
11
+ <hr
12
+ class="separator"
13
+ part="separator"
14
+ :role="${()=>e.decorative.value?`none`:`separator`}"
15
+ :aria-hidden="${()=>e.decorative.value?`true`:null}" />
16
+ </div>
17
+ `:n.html`
18
+ <hr
19
+ class="separator"
20
+ part="separator"
21
+ :role="${()=>e.decorative.value?`none`:`separator`}"
22
+ :aria-hidden="${()=>e.decorative.value?`true`:null}"
23
+ :aria-orientation="${()=>e.orientation.value}" />
24
+ `}
25
+ `},styles:[e.colorThemeMixin,t.default],tag:`bit-separator`});exports.SEPARATOR_TAG=r;
26
+ //# sourceMappingURL=separator.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.cjs","names":[],"sources":["../src/content/separator/separator.ts"],"sourcesContent":["import { defineComponent, html, typed } from '@vielzeug/craftit';\n\nimport type { ThemeColor } from '../../types';\n\nimport { colorThemeMixin } from '../../styles';\nimport componentStyles from './separator.css?inline';\n\n/** Separator component properties */\nexport type BitSeparatorProps = {\n /** Theme color tint */\n color?: ThemeColor;\n /** Decorative only (default true) — set to false for semantic separators */\n decorative?: boolean;\n /** Optional label text centered on the separator */\n label?: string;\n /** Orientation of the separator */\n orientation?: 'horizontal' | 'vertical';\n};\n\n/**\n * A simple visual divider between sections of content.\n *\n * @element bit-separator\n *\n * @attr {string} orientation - 'horizontal' (default) | 'vertical'\n * @attr {boolean} decorative - When true (default), aria-hidden is applied\n * @attr {string} label - Optional centered label text\n * @attr {string} color - Theme color\n *\n * @cssprop --separator-color - Line color\n * @cssprop --separator-size - Line thickness\n * @cssprop --separator-spacing - Vertical margin\n *\n * @example\n * ```html\n * <bit-separator></bit-separator>\n * <bit-separator label=\"or\"></bit-separator>\n * <bit-separator orientation=\"vertical\"></bit-separator>\n * ```\n */\nexport const SEPARATOR_TAG = defineComponent<BitSeparatorProps>({\n props: {\n color: typed<BitSeparatorProps['color']>(undefined),\n decorative: typed<boolean>(true),\n label: typed<string | undefined>(undefined),\n orientation: typed<BitSeparatorProps['orientation']>('horizontal'),\n },\n setup({ props }) {\n return html`\n ${() =>\n props.label.value\n ? html`\n <div class=\"separator-wrapper\" part=\"wrapper\">\n <hr\n class=\"separator\"\n part=\"separator\"\n :role=\"${() => (props.decorative.value ? 'none' : 'separator')}\"\n :aria-hidden=\"${() => (props.decorative.value ? 'true' : null)}\"\n :aria-orientation=\"${() => props.orientation.value}\" />\n <span class=\"separator-label\" part=\"label\">${() => props.label.value}</span>\n <hr\n class=\"separator\"\n part=\"separator\"\n :role=\"${() => (props.decorative.value ? 'none' : 'separator')}\"\n :aria-hidden=\"${() => (props.decorative.value ? 'true' : null)}\" />\n </div>\n `\n : html`\n <hr\n class=\"separator\"\n part=\"separator\"\n :role=\"${() => (props.decorative.value ? 'none' : 'separator')}\"\n :aria-hidden=\"${() => (props.decorative.value ? 'true' : null)}\"\n :aria-orientation=\"${() => props.orientation.value}\" />\n `}\n `;\n },\n styles: [colorThemeMixin, componentStyles],\n tag: 'bit-separator',\n});\n"],"mappings":"qPAwCA,IAAa,GAAA,EAAA,EAAA,iBAAmD,CAC9D,MAAO,CACL,OAAA,EAAA,EAAA,OAAyC,IAAA,GAAU,CACnD,YAAA,EAAA,EAAA,OAA2B,GAAK,CAChC,OAAA,EAAA,EAAA,OAAiC,IAAA,GAAU,CAC3C,aAAA,EAAA,EAAA,OAAqD,aAAa,CACnE,CACD,MAAM,CAAE,SAAS,CACf,MAAO,GAAA,IAAI;YAEP,EAAM,MAAM,MACR,EAAA,IAAI;;;;;+BAKkB,EAAM,WAAW,MAAQ,OAAS,YAAa;sCACxC,EAAM,WAAW,MAAQ,OAAS,KAAM;2CACpC,EAAM,YAAY,MAAM;iEACF,EAAM,MAAM,MAAM;;;;+BAInD,EAAM,WAAW,MAAQ,OAAS,YAAa;sCACxC,EAAM,WAAW,MAAQ,OAAS,KAAM;;cAGrE,EAAA,IAAI;;;;6BAIgB,EAAM,WAAW,MAAQ,OAAS,YAAa;oCACxC,EAAM,WAAW,MAAQ,OAAS,KAAM;yCACpC,EAAM,YAAY,MAAM;cACrD;OAGZ,OAAQ,CAAC,EAAA,gBAAiB,EAAA,QAAgB,CAC1C,IAAK,gBACN,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { colorThemeMixin as e } from "./styles/mixins/theme.css.js";
2
+ import "./styles/index.js";
3
+ import t from "./content/separator/separator.css?inline.js";
4
+ import { defineComponent as n, html as r, typed as i } from "@vielzeug/craftit";
5
+ //#region src/content/separator/separator.ts
6
+ var a = n({
7
+ props: {
8
+ color: i(void 0),
9
+ decorative: i(!0),
10
+ label: i(void 0),
11
+ orientation: i("horizontal")
12
+ },
13
+ setup({ props: e }) {
14
+ return r`
15
+ ${() => e.label.value ? r`
16
+ <div class="separator-wrapper" part="wrapper">
17
+ <hr
18
+ class="separator"
19
+ part="separator"
20
+ :role="${() => e.decorative.value ? "none" : "separator"}"
21
+ :aria-hidden="${() => e.decorative.value ? "true" : null}"
22
+ :aria-orientation="${() => e.orientation.value}" />
23
+ <span class="separator-label" part="label">${() => e.label.value}</span>
24
+ <hr
25
+ class="separator"
26
+ part="separator"
27
+ :role="${() => e.decorative.value ? "none" : "separator"}"
28
+ :aria-hidden="${() => e.decorative.value ? "true" : null}" />
29
+ </div>
30
+ ` : r`
31
+ <hr
32
+ class="separator"
33
+ part="separator"
34
+ :role="${() => e.decorative.value ? "none" : "separator"}"
35
+ :aria-hidden="${() => e.decorative.value ? "true" : null}"
36
+ :aria-orientation="${() => e.orientation.value}" />
37
+ `}
38
+ `;
39
+ },
40
+ styles: [e, t],
41
+ tag: "bit-separator"
42
+ });
43
+ //#endregion
44
+ export { a as SEPARATOR_TAG };
45
+
46
+ //# sourceMappingURL=separator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"separator.js","names":[],"sources":["../src/content/separator/separator.ts"],"sourcesContent":["import { defineComponent, html, typed } from '@vielzeug/craftit';\n\nimport type { ThemeColor } from '../../types';\n\nimport { colorThemeMixin } from '../../styles';\nimport componentStyles from './separator.css?inline';\n\n/** Separator component properties */\nexport type BitSeparatorProps = {\n /** Theme color tint */\n color?: ThemeColor;\n /** Decorative only (default true) — set to false for semantic separators */\n decorative?: boolean;\n /** Optional label text centered on the separator */\n label?: string;\n /** Orientation of the separator */\n orientation?: 'horizontal' | 'vertical';\n};\n\n/**\n * A simple visual divider between sections of content.\n *\n * @element bit-separator\n *\n * @attr {string} orientation - 'horizontal' (default) | 'vertical'\n * @attr {boolean} decorative - When true (default), aria-hidden is applied\n * @attr {string} label - Optional centered label text\n * @attr {string} color - Theme color\n *\n * @cssprop --separator-color - Line color\n * @cssprop --separator-size - Line thickness\n * @cssprop --separator-spacing - Vertical margin\n *\n * @example\n * ```html\n * <bit-separator></bit-separator>\n * <bit-separator label=\"or\"></bit-separator>\n * <bit-separator orientation=\"vertical\"></bit-separator>\n * ```\n */\nexport const SEPARATOR_TAG = defineComponent<BitSeparatorProps>({\n props: {\n color: typed<BitSeparatorProps['color']>(undefined),\n decorative: typed<boolean>(true),\n label: typed<string | undefined>(undefined),\n orientation: typed<BitSeparatorProps['orientation']>('horizontal'),\n },\n setup({ props }) {\n return html`\n ${() =>\n props.label.value\n ? html`\n <div class=\"separator-wrapper\" part=\"wrapper\">\n <hr\n class=\"separator\"\n part=\"separator\"\n :role=\"${() => (props.decorative.value ? 'none' : 'separator')}\"\n :aria-hidden=\"${() => (props.decorative.value ? 'true' : null)}\"\n :aria-orientation=\"${() => props.orientation.value}\" />\n <span class=\"separator-label\" part=\"label\">${() => props.label.value}</span>\n <hr\n class=\"separator\"\n part=\"separator\"\n :role=\"${() => (props.decorative.value ? 'none' : 'separator')}\"\n :aria-hidden=\"${() => (props.decorative.value ? 'true' : null)}\" />\n </div>\n `\n : html`\n <hr\n class=\"separator\"\n part=\"separator\"\n :role=\"${() => (props.decorative.value ? 'none' : 'separator')}\"\n :aria-hidden=\"${() => (props.decorative.value ? 'true' : null)}\"\n :aria-orientation=\"${() => props.orientation.value}\" />\n `}\n `;\n },\n styles: [colorThemeMixin, componentStyles],\n tag: 'bit-separator',\n});\n"],"mappings":";;;;;AAwCA,IAAa,IAAgB,EAAmC;CAC9D,OAAO;EACL,OAAO,EAAkC,KAAA,EAAU;EACnD,YAAY,EAAe,GAAK;EAChC,OAAO,EAA0B,KAAA,EAAU;EAC3C,aAAa,EAAwC,aAAa;EACnE;CACD,MAAM,EAAE,YAAS;AACf,SAAO,CAAI;cAEP,EAAM,MAAM,QACR,CAAI;;;;;iCAKkB,EAAM,WAAW,QAAQ,SAAS,YAAa;wCACxC,EAAM,WAAW,QAAQ,SAAS,KAAM;6CACpC,EAAM,YAAY,MAAM;mEACF,EAAM,MAAM,MAAM;;;;iCAInD,EAAM,WAAW,QAAQ,SAAS,YAAa;wCACxC,EAAM,WAAW,QAAQ,SAAS,KAAM;;gBAGrE,CAAI;;;;+BAIgB,EAAM,WAAW,QAAQ,SAAS,YAAa;sCACxC,EAAM,WAAW,QAAQ,SAAS,KAAM;2CACpC,EAAM,YAAY,MAAM;cACrD;;;CAGZ,QAAQ,CAAC,GAAiB,EAAgB;CAC1C,KAAK;CACN,CAAC"}
@@ -0,0 +1,69 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/accessibility.css.cjs`);require(`./styles/index.cjs`);const t=require(`./icons.cjs`),n=require(`./layout/sidebar/sidebar.css?inline.cjs`),r=require(`./layout/sidebar/sidebar-group.css?inline.cjs`),i=require(`./layout/sidebar/sidebar-item.css?inline.cjs`);let a=require(`@vielzeug/craftit`);var o=(0,a.createContext)(`SidebarContext`),s=(0,a.defineComponent)({props:{collapsed:{default:void 0,type:Boolean},collapsible:{default:!1,type:Boolean},"default-collapsed":{default:!1,type:Boolean},label:{default:`Sidebar navigation`},responsive:{default:void 0},variant:{default:void 0}},setup({emit:e,host:n,props:r,slots:i}){let s=(0,a.computed)(()=>i.has(`header`).value),c=(0,a.computed)(()=>i.has(`footer`).value),l=(0,a.signal)(n.hasAttribute(`collapsed`)),u=(0,a.signal)(l.value?n.hasAttribute(`collapsed`):r[`default-collapsed`].value),d=(0,a.computed)(()=>u.value);(0,a.provide)(o,{collapsed:d,variant:r.variant});let f=(t,n)=>{d.value!==t&&(l.value||(u.value=t),e(`collapsed-change`,{collapsed:t,source:n}))},p=()=>{f(!d.value,`toggle`)};return(0,a.effect)(()=>{n.toggleAttribute(`data-collapsed`,d.value)}),(0,a.onMount)(()=>{let e=n;e.setCollapsed=e=>f(!!e,`api`),e.toggle=p;let t,i=new MutationObserver(()=>{!n.hasAttribute(`collapsed`)&&!l.value||(l.value=!0,u.value=n.hasAttribute(`collapsed`))});return i.observe(n,{attributeFilter:[`collapsed`],attributes:!0}),(0,a.watch)(r.responsive,e=>{t?.(),t=void 0;let n=String(e??``).trim();if(!n)return;let r=window.matchMedia(n),i=e=>{f(e.matches,`responsive`)};f(r.matches,`responsive`),r.addEventListener(`change`,i),t=()=>{r.removeEventListener(`change`,i)}},{immediate:!0}),()=>{i.disconnect(),t?.()}}),a.html`
2
+ <nav aria-label="${()=>r.label.value}" part="nav">
3
+ <div class="sidebar-header" part="header" ?hidden=${()=>!s.value&&!r.collapsible.value}>
4
+ <slot name="header"></slot>
5
+ <button
6
+ class="toggle-btn"
7
+ part="toggle-btn"
8
+ type="button"
9
+ ?hidden=${()=>!r.collapsible.value}
10
+ aria-label="${()=>d.value?`Expand sidebar`:`Collapse sidebar`}"
11
+ aria-expanded="${()=>String(!d.value)}"
12
+ @click="${p}">
13
+ <span class="toggle-icon" aria-hidden="true">${t.chevronLeftIcon}</span>
14
+ </button>
15
+ </div>
16
+ <div class="sidebar-content" part="content">
17
+ <slot></slot>
18
+ </div>
19
+ <div class="sidebar-footer" part="footer" ?hidden=${()=>!c.value}>
20
+ <slot name="footer"></slot>
21
+ </div>
22
+ </nav>
23
+ `},styles:[e.coarsePointerMixin,e.reducedMotionMixin,n.default],tag:`bit-sidebar`}),c=(0,a.defineComponent)({props:{collapsible:{default:!1,type:Boolean},"default-open":{default:!0,type:Boolean},label:{default:``},open:{default:void 0,type:Boolean}},setup({emit:e,host:n,props:r,slots:i}){let s=(0,a.computed)(()=>i.has(`icon`).value),c=(0,a.inject)(o,void 0);(0,a.effect)(()=>{n.toggleAttribute(`sidebar-collapsed`,c?.collapsed.value??!1)});let l=(0,a.computed)(()=>r.open.value!==void 0),u=(0,a.signal)(r[`default-open`].value),d=(0,a.computed)(()=>r.collapsible.value?l.value?r.open.value??!1:u.value:!0);return(0,a.watch)(r.open,e=>{e!==void 0&&(u.value=e)}),(0,a.effect)(()=>{n.toggleAttribute(`open`,d.value)}),a.html`
24
+ <details class="group" part="group" ?open=${()=>d.value} @click="${t=>{if(!(t.target instanceof HTMLElement)||!t.target.closest(`.group-header`)||(t.stopPropagation(),t.preventDefault(),!r.collapsible.value))return;let n=!d.value;r.open.value!==n&&(l.value||(u.value=n),e(`open-change`,{open:n}))}}">
25
+ <summary
26
+ class="group-header"
27
+ part="group-header"
28
+ :aria-expanded="${()=>r.collapsible.value?String(r.open.value):null}">
29
+ <span class="group-icon" part="group-icon" ?hidden=${()=>!s.value} aria-hidden="true">
30
+ <slot name="icon"></slot>
31
+ </span>
32
+ <span class="group-label" part="group-label">${()=>r.label.value}</span>
33
+ <span class="chevron" ?hidden=${()=>!r.collapsible.value} aria-hidden="true">${t.chevronRightIcon}</span>
34
+ </summary>
35
+ <div class="group-items" part="group-items" role="list">
36
+ <slot></slot>
37
+ </div>
38
+ </details>
39
+ `},styles:[e.reducedMotionMixin,r.default],tag:`bit-sidebar-group`}),l=(0,a.defineComponent)({props:{active:{default:!1,type:Boolean},disabled:{default:!1,type:Boolean},href:{default:void 0},rel:{default:void 0},target:{default:void 0}},setup({host:e,props:t,slots:n}){let r=(0,a.computed)(()=>n.has(`icon`).value),i=(0,a.computed)(()=>n.has(`end`).value),s=(0,a.inject)(o,void 0);(0,a.effect)(()=>{e.toggleAttribute(`sidebar-collapsed`,s?.collapsed.value??!1)});let c=(0,a.computed)(()=>!!t.href.value&&!t.disabled.value),l=()=>a.html`
40
+ <span class="item-icon" part="item-icon" ?hidden=${()=>!r.value} aria-hidden="true">
41
+ <slot name="icon"></slot>
42
+ </span>
43
+ <span class="item-label" part="item-label"><slot></slot></span>
44
+ <span class="item-end" part="item-end" ?hidden=${()=>!i.value}>
45
+ <slot name="end"></slot>
46
+ </span>
47
+ `;return a.html`
48
+ ${()=>c.value?a.html`
49
+ <a
50
+ class="item"
51
+ part="item"
52
+ href="${()=>t.href.value}"
53
+ :rel="${()=>t.rel.value??null}"
54
+ :target="${()=>t.target.value??null}"
55
+ :aria-current="${()=>t.active.value?`page`:null}">
56
+ ${l()}
57
+ </a>
58
+ `:a.html`
59
+ <button
60
+ class="item"
61
+ part="item"
62
+ type="button"
63
+ :aria-current="${()=>t.active.value?`page`:null}"
64
+ :disabled="${()=>t.disabled.value||null}">
65
+ ${l()}
66
+ </button>
67
+ `}
68
+ `},styles:[e.coarsePointerMixin,i.default],tag:`bit-sidebar-item`});exports.SIDEBAR_CTX=o,exports.SIDEBAR_GROUP_TAG=c,exports.SIDEBAR_ITEM_TAG=l,exports.SIDEBAR_TAG=s;
69
+ //# sourceMappingURL=sidebar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.cjs","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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"}