@vielzeug/buildit 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (792) hide show
  1. package/README.md +124 -0
  2. package/dist/accordion-item.cjs +32 -0
  3. package/dist/accordion-item.cjs.map +1 -0
  4. package/dist/accordion-item.js +72 -0
  5. package/dist/accordion-item.js.map +1 -0
  6. package/dist/accordion.cjs +2 -0
  7. package/dist/accordion.cjs.map +1 -0
  8. package/dist/accordion.js +37 -0
  9. package/dist/accordion.js.map +1 -0
  10. package/dist/alert.cjs +31 -0
  11. package/dist/alert.cjs.map +1 -0
  12. package/dist/alert.js +85 -0
  13. package/dist/alert.js.map +1 -0
  14. package/dist/avatar.cjs +37 -0
  15. package/dist/avatar.cjs.map +1 -0
  16. package/dist/avatar.js +123 -0
  17. package/dist/avatar.js.map +1 -0
  18. package/dist/badge.cjs +7 -0
  19. package/dist/badge.cjs.map +1 -0
  20. package/dist/badge.js +60 -0
  21. package/dist/badge.js.map +1 -0
  22. package/dist/box.cjs +2 -0
  23. package/dist/box.cjs.map +1 -0
  24. package/dist/box.js +22 -0
  25. package/dist/box.js.map +1 -0
  26. package/dist/breadcrumb.cjs +21 -0
  27. package/dist/breadcrumb.cjs.map +1 -0
  28. package/dist/breadcrumb.js +58 -0
  29. package/dist/breadcrumb.js.map +1 -0
  30. package/dist/buildit.cjs +1892 -0
  31. package/dist/buildit.cjs.map +1 -0
  32. package/dist/buildit.js +1892 -0
  33. package/dist/buildit.js.map +1 -0
  34. package/dist/button-group.cjs +6 -0
  35. package/dist/button-group.cjs.map +1 -0
  36. package/dist/button-group.js +31 -0
  37. package/dist/button-group.js.map +1 -0
  38. package/dist/button.cjs +30 -0
  39. package/dist/button.cjs.map +1 -0
  40. package/dist/button.js +115 -0
  41. package/dist/button.js.map +1 -0
  42. package/dist/card.cjs +23 -0
  43. package/dist/card.cjs.map +1 -0
  44. package/dist/card.js +99 -0
  45. package/dist/card.js.map +1 -0
  46. package/dist/checkbox-group.cjs +20 -0
  47. package/dist/checkbox-group.cjs.map +1 -0
  48. package/dist/checkbox-group.js +88 -0
  49. package/dist/checkbox-group.js.map +1 -0
  50. package/dist/checkbox.cjs +37 -0
  51. package/dist/checkbox.cjs.map +1 -0
  52. package/dist/checkbox.js +115 -0
  53. package/dist/checkbox.js.map +1 -0
  54. package/dist/chip.cjs +56 -0
  55. package/dist/chip.cjs.map +1 -0
  56. package/dist/chip.js +140 -0
  57. package/dist/chip.js.map +1 -0
  58. package/dist/combobox.cjs +93 -0
  59. package/dist/combobox.cjs.map +1 -0
  60. package/dist/combobox.js +401 -0
  61. package/dist/combobox.js.map +1 -0
  62. package/dist/content/avatar/avatar-group.css?inline.cjs +2 -0
  63. package/dist/content/avatar/avatar-group.css?inline.cjs.map +1 -0
  64. package/dist/content/avatar/avatar-group.css?inline.js +6 -0
  65. package/dist/content/avatar/avatar-group.css?inline.js.map +1 -0
  66. package/dist/content/avatar/avatar.css?inline.cjs +2 -0
  67. package/dist/content/avatar/avatar.css?inline.cjs.map +1 -0
  68. package/dist/content/avatar/avatar.css?inline.js +6 -0
  69. package/dist/content/avatar/avatar.css?inline.js.map +1 -0
  70. package/dist/content/avatar/avatar.d.ts +78 -0
  71. package/dist/content/avatar/avatar.d.ts.map +1 -0
  72. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs +2 -0
  73. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +1 -0
  74. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js +6 -0
  75. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +1 -0
  76. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs +2 -0
  77. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +1 -0
  78. package/dist/content/breadcrumb/breadcrumb.css?inline.js +6 -0
  79. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +1 -0
  80. package/dist/content/breadcrumb/breadcrumb.d.ts +36 -0
  81. package/dist/content/breadcrumb/breadcrumb.d.ts.map +1 -0
  82. package/dist/content/card/card.css?inline.cjs +2 -0
  83. package/dist/content/card/card.css?inline.cjs.map +1 -0
  84. package/dist/content/card/card.css?inline.js +6 -0
  85. package/dist/content/card/card.css?inline.js.map +1 -0
  86. package/dist/content/card/card.d.ts +66 -0
  87. package/dist/content/card/card.d.ts.map +1 -0
  88. package/dist/content/index.cjs +1 -0
  89. package/dist/content/index.d.ts +15 -0
  90. package/dist/content/index.d.ts.map +1 -0
  91. package/dist/content/index.js +7 -0
  92. package/dist/content/pagination/pagination.css?inline.cjs +2 -0
  93. package/dist/content/pagination/pagination.css?inline.cjs.map +1 -0
  94. package/dist/content/pagination/pagination.css?inline.js +6 -0
  95. package/dist/content/pagination/pagination.css?inline.js.map +1 -0
  96. package/dist/content/pagination/pagination.d.ts +56 -0
  97. package/dist/content/pagination/pagination.d.ts.map +1 -0
  98. package/dist/content/separator/separator.css?inline.cjs +2 -0
  99. package/dist/content/separator/separator.css?inline.cjs.map +1 -0
  100. package/dist/content/separator/separator.css?inline.js +6 -0
  101. package/dist/content/separator/separator.css?inline.js.map +1 -0
  102. package/dist/content/separator/separator.d.ts +35 -0
  103. package/dist/content/separator/separator.d.ts.map +1 -0
  104. package/dist/content/table/table.css?inline.cjs +2 -0
  105. package/dist/content/table/table.css?inline.cjs.map +1 -0
  106. package/dist/content/table/table.css?inline.js +6 -0
  107. package/dist/content/table/table.css?inline.js.map +1 -0
  108. package/dist/content/table/table.d.ts +69 -0
  109. package/dist/content/table/table.d.ts.map +1 -0
  110. package/dist/content/text/text.css?inline.cjs +2 -0
  111. package/dist/content/text/text.css?inline.cjs.map +1 -0
  112. package/dist/content/text/text.css?inline.js +6 -0
  113. package/dist/content/text/text.css?inline.js.map +1 -0
  114. package/dist/content/text/text.d.ts +55 -0
  115. package/dist/content/text/text.d.ts.map +1 -0
  116. package/dist/craftit/dist/core/internal.cjs +2 -0
  117. package/dist/craftit/dist/core/internal.cjs.map +1 -0
  118. package/dist/craftit/dist/core/internal.js +25 -0
  119. package/dist/craftit/dist/core/internal.js.map +1 -0
  120. package/dist/craftit/dist/core/runtime-bindings.cjs +2 -0
  121. package/dist/craftit/dist/core/runtime-bindings.cjs.map +1 -0
  122. package/dist/craftit/dist/core/runtime-bindings.js +38 -0
  123. package/dist/craftit/dist/core/runtime-bindings.js.map +1 -0
  124. package/dist/craftit/dist/core/runtime-lifecycle.cjs +2 -0
  125. package/dist/craftit/dist/core/runtime-lifecycle.cjs.map +1 -0
  126. package/dist/craftit/dist/core/runtime-lifecycle.js +68 -0
  127. package/dist/craftit/dist/core/runtime-lifecycle.js.map +1 -0
  128. package/dist/craftit/dist/core/runtime.cjs +1 -0
  129. package/dist/craftit/dist/core/runtime.js +2 -0
  130. package/dist/craftit/dist/core/utilities.cjs +2 -0
  131. package/dist/craftit/dist/core/utilities.cjs.map +1 -0
  132. package/dist/craftit/dist/core/utilities.js +12 -0
  133. package/dist/craftit/dist/core/utilities.js.map +1 -0
  134. package/dist/craftit/dist/directives/attr.cjs +2 -0
  135. package/dist/craftit/dist/directives/attr.cjs.map +1 -0
  136. package/dist/craftit/dist/directives/attr.js +13 -0
  137. package/dist/craftit/dist/directives/attr.js.map +1 -0
  138. package/dist/craftit/dist/directives/bind.cjs +1 -0
  139. package/dist/craftit/dist/directives/bind.js +3 -0
  140. package/dist/craftit/dist/directives/choose.cjs +1 -0
  141. package/dist/craftit/dist/directives/choose.js +1 -0
  142. package/dist/craftit/dist/directives/classes.cjs +2 -0
  143. package/dist/craftit/dist/directives/classes.cjs.map +1 -0
  144. package/dist/craftit/dist/directives/classes.js +12 -0
  145. package/dist/craftit/dist/directives/classes.js.map +1 -0
  146. package/dist/craftit/dist/directives/each.cjs +2 -0
  147. package/dist/craftit/dist/directives/each.cjs.map +1 -0
  148. package/dist/craftit/dist/directives/each.js +96 -0
  149. package/dist/craftit/dist/directives/each.js.map +1 -0
  150. package/dist/craftit/dist/directives/index.cjs +1 -0
  151. package/dist/craftit/dist/directives/index.js +12 -0
  152. package/dist/craftit/dist/directives/match.cjs +1 -0
  153. package/dist/craftit/dist/directives/match.js +1 -0
  154. package/dist/craftit/dist/directives/memo.cjs +1 -0
  155. package/dist/craftit/dist/directives/memo.js +1 -0
  156. package/dist/craftit/dist/directives/raw.cjs +1 -0
  157. package/dist/craftit/dist/directives/raw.js +2 -0
  158. package/dist/craftit/dist/directives/spread.cjs +2 -0
  159. package/dist/craftit/dist/directives/spread.cjs.map +1 -0
  160. package/dist/craftit/dist/directives/spread.js +30 -0
  161. package/dist/craftit/dist/directives/spread.js.map +1 -0
  162. package/dist/craftit/dist/directives/style.cjs +1 -0
  163. package/dist/craftit/dist/directives/style.js +1 -0
  164. package/dist/craftit/dist/directives/until.cjs +1 -0
  165. package/dist/craftit/dist/directives/until.js +1 -0
  166. package/dist/craftit/dist/directives/when.cjs +2 -0
  167. package/dist/craftit/dist/directives/when.cjs.map +1 -0
  168. package/dist/craftit/dist/directives/when.js +14 -0
  169. package/dist/craftit/dist/directives/when.js.map +1 -0
  170. package/dist/craftit/dist/labs/a11y.cjs +2 -0
  171. package/dist/craftit/dist/labs/a11y.cjs.map +1 -0
  172. package/dist/craftit/dist/labs/a11y.js +38 -0
  173. package/dist/craftit/dist/labs/a11y.js.map +1 -0
  174. package/dist/craftit/dist/labs/list.cjs +2 -0
  175. package/dist/craftit/dist/labs/list.cjs.map +1 -0
  176. package/dist/craftit/dist/labs/list.js +87 -0
  177. package/dist/craftit/dist/labs/list.js.map +1 -0
  178. package/dist/craftit/dist/labs/observers.cjs +2 -0
  179. package/dist/craftit/dist/labs/observers.cjs.map +1 -0
  180. package/dist/craftit/dist/labs/observers.js +28 -0
  181. package/dist/craftit/dist/labs/observers.js.map +1 -0
  182. package/dist/craftit/dist/labs/overlay.cjs +2 -0
  183. package/dist/craftit/dist/labs/overlay.cjs.map +1 -0
  184. package/dist/craftit/dist/labs/overlay.js +49 -0
  185. package/dist/craftit/dist/labs/overlay.js.map +1 -0
  186. package/dist/craftit/dist/labs/selectable.cjs +2 -0
  187. package/dist/craftit/dist/labs/selectable.cjs.map +1 -0
  188. package/dist/craftit/dist/labs/selectable.js +29 -0
  189. package/dist/craftit/dist/labs/selectable.js.map +1 -0
  190. package/dist/craftit/dist/labs/selection.cjs +2 -0
  191. package/dist/craftit/dist/labs/selection.cjs.map +1 -0
  192. package/dist/craftit/dist/labs/selection.js +42 -0
  193. package/dist/craftit/dist/labs/selection.js.map +1 -0
  194. package/dist/craftit/dist/labs.cjs +1 -0
  195. package/dist/craftit/dist/labs.js +6 -0
  196. package/dist/custom-elements.json +2321 -0
  197. package/dist/dialog.cjs +33 -0
  198. package/dist/dialog.cjs.map +1 -0
  199. package/dist/dialog.js +94 -0
  200. package/dist/dialog.js.map +1 -0
  201. package/dist/disclosure/accordion/accordion.css?inline.cjs +2 -0
  202. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +1 -0
  203. package/dist/disclosure/accordion/accordion.css?inline.js +6 -0
  204. package/dist/disclosure/accordion/accordion.css?inline.js.map +1 -0
  205. package/dist/disclosure/accordion/accordion.d.ts +47 -0
  206. package/dist/disclosure/accordion/accordion.d.ts.map +1 -0
  207. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs +2 -0
  208. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +1 -0
  209. package/dist/disclosure/accordion-item/accordion-item.css?inline.js +6 -0
  210. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +1 -0
  211. package/dist/disclosure/accordion-item/accordion-item.d.ts +62 -0
  212. package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -0
  213. package/dist/disclosure/index.cjs +1 -0
  214. package/dist/disclosure/index.d.ts +11 -0
  215. package/dist/disclosure/index.d.ts.map +1 -0
  216. package/dist/disclosure/index.js +5 -0
  217. package/dist/disclosure/tab-item/tab-item.css?inline.cjs +2 -0
  218. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +1 -0
  219. package/dist/disclosure/tab-item/tab-item.css?inline.js +6 -0
  220. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +1 -0
  221. package/dist/disclosure/tab-item/tab-item.d.ts +39 -0
  222. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -0
  223. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs +2 -0
  224. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +1 -0
  225. package/dist/disclosure/tab-panel/tab-panel.css?inline.js +6 -0
  226. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +1 -0
  227. package/dist/disclosure/tab-panel/tab-panel.d.ts +30 -0
  228. package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -0
  229. package/dist/disclosure/tabs/tabs.css?inline.cjs +2 -0
  230. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +1 -0
  231. package/dist/disclosure/tabs/tabs.css?inline.js +6 -0
  232. package/dist/disclosure/tabs/tabs.css?inline.js.map +1 -0
  233. package/dist/disclosure/tabs/tabs.d.ts +64 -0
  234. package/dist/disclosure/tabs/tabs.d.ts.map +1 -0
  235. package/dist/drawer.cjs +31 -0
  236. package/dist/drawer.cjs.map +1 -0
  237. package/dist/drawer.js +98 -0
  238. package/dist/drawer.js.map +1 -0
  239. package/dist/feedback/alert/alert.css?inline.cjs +2 -0
  240. package/dist/feedback/alert/alert.css?inline.cjs.map +1 -0
  241. package/dist/feedback/alert/alert.css?inline.js +6 -0
  242. package/dist/feedback/alert/alert.css?inline.js.map +1 -0
  243. package/dist/feedback/alert/alert.d.ts +63 -0
  244. package/dist/feedback/alert/alert.d.ts.map +1 -0
  245. package/dist/feedback/badge/badge.css?inline.cjs +2 -0
  246. package/dist/feedback/badge/badge.css?inline.cjs.map +1 -0
  247. package/dist/feedback/badge/badge.css?inline.js +6 -0
  248. package/dist/feedback/badge/badge.css?inline.js.map +1 -0
  249. package/dist/feedback/badge/badge.d.ts +67 -0
  250. package/dist/feedback/badge/badge.d.ts.map +1 -0
  251. package/dist/feedback/chip/chip.css?inline.cjs +2 -0
  252. package/dist/feedback/chip/chip.css?inline.cjs.map +1 -0
  253. package/dist/feedback/chip/chip.css?inline.js +6 -0
  254. package/dist/feedback/chip/chip.css?inline.js.map +1 -0
  255. package/dist/feedback/chip/chip.d.ts +124 -0
  256. package/dist/feedback/chip/chip.d.ts.map +1 -0
  257. package/dist/feedback/index.cjs +1 -0
  258. package/dist/feedback/index.d.ts +13 -0
  259. package/dist/feedback/index.d.ts.map +1 -0
  260. package/dist/feedback/index.js +6 -0
  261. package/dist/feedback/progress/progress.css?inline.cjs +2 -0
  262. package/dist/feedback/progress/progress.css?inline.cjs.map +1 -0
  263. package/dist/feedback/progress/progress.css?inline.js +6 -0
  264. package/dist/feedback/progress/progress.css?inline.js.map +1 -0
  265. package/dist/feedback/progress/progress.d.ts +64 -0
  266. package/dist/feedback/progress/progress.d.ts.map +1 -0
  267. package/dist/feedback/skeleton/skeleton.css?inline.cjs +2 -0
  268. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +1 -0
  269. package/dist/feedback/skeleton/skeleton.css?inline.js +6 -0
  270. package/dist/feedback/skeleton/skeleton.css?inline.js.map +1 -0
  271. package/dist/feedback/skeleton/skeleton.d.ts +61 -0
  272. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -0
  273. package/dist/feedback/toast/index.d.ts +2 -0
  274. package/dist/feedback/toast/index.d.ts.map +1 -0
  275. package/dist/feedback/toast/toast.css?inline.cjs +2 -0
  276. package/dist/feedback/toast/toast.css?inline.cjs.map +1 -0
  277. package/dist/feedback/toast/toast.css?inline.js +6 -0
  278. package/dist/feedback/toast/toast.css?inline.js.map +1 -0
  279. package/dist/feedback/toast/toast.d.ts +95 -0
  280. package/dist/feedback/toast/toast.d.ts.map +1 -0
  281. package/dist/file-input.cjs +66 -0
  282. package/dist/file-input.cjs.map +1 -0
  283. package/dist/file-input.js +210 -0
  284. package/dist/file-input.js.map +1 -0
  285. package/dist/form.cjs +11 -0
  286. package/dist/form.cjs.map +1 -0
  287. package/dist/form.js +49 -0
  288. package/dist/form.js.map +1 -0
  289. package/dist/grid-item.cjs +2 -0
  290. package/dist/grid-item.cjs.map +1 -0
  291. package/dist/grid-item.js +28 -0
  292. package/dist/grid-item.js.map +1 -0
  293. package/dist/grid.cjs +2 -0
  294. package/dist/grid.cjs.map +1 -0
  295. package/dist/grid.js +90 -0
  296. package/dist/grid.js.map +1 -0
  297. package/dist/icons.cjs +176 -0
  298. package/dist/icons.cjs.map +1 -0
  299. package/dist/icons.d.ts +15 -0
  300. package/dist/icons.d.ts.map +1 -0
  301. package/dist/icons.js +181 -0
  302. package/dist/icons.js.map +1 -0
  303. package/dist/index.cjs +1 -0
  304. package/dist/index.d.ts +9 -0
  305. package/dist/index.d.ts.map +1 -0
  306. package/dist/index.js +53 -0
  307. package/dist/input.cjs +48 -0
  308. package/dist/input.cjs.map +1 -0
  309. package/dist/input.js +182 -0
  310. package/dist/input.js.map +1 -0
  311. package/dist/inputs/button/button.css?inline.cjs +2 -0
  312. package/dist/inputs/button/button.css?inline.cjs.map +1 -0
  313. package/dist/inputs/button/button.css?inline.js +6 -0
  314. package/dist/inputs/button/button.css?inline.js.map +1 -0
  315. package/dist/inputs/button/button.d.ts +73 -0
  316. package/dist/inputs/button/button.d.ts.map +1 -0
  317. package/dist/inputs/button-group/button-group.css?inline.cjs +2 -0
  318. package/dist/inputs/button-group/button-group.css?inline.cjs.map +1 -0
  319. package/dist/inputs/button-group/button-group.css?inline.js +6 -0
  320. package/dist/inputs/button-group/button-group.css?inline.js.map +1 -0
  321. package/dist/inputs/button-group/button-group.d.ts +52 -0
  322. package/dist/inputs/button-group/button-group.d.ts.map +1 -0
  323. package/dist/inputs/checkbox/checkbox.css?inline.cjs +2 -0
  324. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +1 -0
  325. package/dist/inputs/checkbox/checkbox.css?inline.js +6 -0
  326. package/dist/inputs/checkbox/checkbox.css?inline.js.map +1 -0
  327. package/dist/inputs/checkbox/checkbox.d.ts +43 -0
  328. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -0
  329. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs +2 -0
  330. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +1 -0
  331. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js +6 -0
  332. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +1 -0
  333. package/dist/inputs/checkbox-group/checkbox-group.d.ts +56 -0
  334. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -0
  335. package/dist/inputs/combobox/combobox-options.cjs +2 -0
  336. package/dist/inputs/combobox/combobox-options.cjs.map +1 -0
  337. package/dist/inputs/combobox/combobox-options.d.ts +7 -0
  338. package/dist/inputs/combobox/combobox-options.d.ts.map +1 -0
  339. package/dist/inputs/combobox/combobox-options.js +36 -0
  340. package/dist/inputs/combobox/combobox-options.js.map +1 -0
  341. package/dist/inputs/combobox/combobox-virtualizer.cjs +2 -0
  342. package/dist/inputs/combobox/combobox-virtualizer.cjs.map +1 -0
  343. package/dist/inputs/combobox/combobox-virtualizer.d.ts +20 -0
  344. package/dist/inputs/combobox/combobox-virtualizer.d.ts.map +1 -0
  345. package/dist/inputs/combobox/combobox-virtualizer.js +71 -0
  346. package/dist/inputs/combobox/combobox-virtualizer.js.map +1 -0
  347. package/dist/inputs/combobox/combobox.css?inline.cjs +2 -0
  348. package/dist/inputs/combobox/combobox.css?inline.cjs.map +1 -0
  349. package/dist/inputs/combobox/combobox.css?inline.js +6 -0
  350. package/dist/inputs/combobox/combobox.css?inline.js.map +1 -0
  351. package/dist/inputs/combobox/combobox.d.ts +28 -0
  352. package/dist/inputs/combobox/combobox.d.ts.map +1 -0
  353. package/dist/inputs/combobox/combobox.types.d.ts +36 -0
  354. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -0
  355. package/dist/inputs/file-input/file-input.css?inline.cjs +2 -0
  356. package/dist/inputs/file-input/file-input.css?inline.cjs.map +1 -0
  357. package/dist/inputs/file-input/file-input.css?inline.js +6 -0
  358. package/dist/inputs/file-input/file-input.css?inline.js.map +1 -0
  359. package/dist/inputs/file-input/file-input.d.ts +94 -0
  360. package/dist/inputs/file-input/file-input.d.ts.map +1 -0
  361. package/dist/inputs/form/form.css?inline.cjs +2 -0
  362. package/dist/inputs/form/form.css?inline.cjs.map +1 -0
  363. package/dist/inputs/form/form.css?inline.js +6 -0
  364. package/dist/inputs/form/form.css?inline.js.map +1 -0
  365. package/dist/inputs/form/form.d.ts +61 -0
  366. package/dist/inputs/form/form.d.ts.map +1 -0
  367. package/dist/inputs/index.cjs +1 -0
  368. package/dist/inputs/index.d.ts +38 -0
  369. package/dist/inputs/index.d.ts.map +1 -0
  370. package/dist/inputs/index.js +18 -0
  371. package/dist/inputs/input/input.css?inline.cjs +2 -0
  372. package/dist/inputs/input/input.css?inline.cjs.map +1 -0
  373. package/dist/inputs/input/input.css?inline.js +6 -0
  374. package/dist/inputs/input/input.css?inline.js.map +1 -0
  375. package/dist/inputs/input/input.d.ts +82 -0
  376. package/dist/inputs/input/input.d.ts.map +1 -0
  377. package/dist/inputs/number-input/number-input.css?inline.cjs +2 -0
  378. package/dist/inputs/number-input/number-input.css?inline.cjs.map +1 -0
  379. package/dist/inputs/number-input/number-input.css?inline.js +6 -0
  380. package/dist/inputs/number-input/number-input.css?inline.js.map +1 -0
  381. package/dist/inputs/number-input/number-input.d.ts +76 -0
  382. package/dist/inputs/number-input/number-input.d.ts.map +1 -0
  383. package/dist/inputs/otp-input/otp-input.css?inline.cjs +2 -0
  384. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +1 -0
  385. package/dist/inputs/otp-input/otp-input.css?inline.js +6 -0
  386. package/dist/inputs/otp-input/otp-input.css?inline.js.map +1 -0
  387. package/dist/inputs/otp-input/otp-input.d.ts +71 -0
  388. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -0
  389. package/dist/inputs/radio/radio.css?inline.cjs +2 -0
  390. package/dist/inputs/radio/radio.css?inline.cjs.map +1 -0
  391. package/dist/inputs/radio/radio.css?inline.js +6 -0
  392. package/dist/inputs/radio/radio.css?inline.js.map +1 -0
  393. package/dist/inputs/radio/radio.d.ts +41 -0
  394. package/dist/inputs/radio/radio.d.ts.map +1 -0
  395. package/dist/inputs/radio-group/radio-group.css?inline.cjs +2 -0
  396. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +1 -0
  397. package/dist/inputs/radio-group/radio-group.css?inline.js +6 -0
  398. package/dist/inputs/radio-group/radio-group.css?inline.js.map +1 -0
  399. package/dist/inputs/radio-group/radio-group.d.ts +61 -0
  400. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -0
  401. package/dist/inputs/rating/rating.css?inline.cjs +2 -0
  402. package/dist/inputs/rating/rating.css?inline.cjs.map +1 -0
  403. package/dist/inputs/rating/rating.css?inline.js +6 -0
  404. package/dist/inputs/rating/rating.css?inline.js.map +1 -0
  405. package/dist/inputs/rating/rating.d.ts +48 -0
  406. package/dist/inputs/rating/rating.d.ts.map +1 -0
  407. package/dist/inputs/select/select.css?inline.cjs +2 -0
  408. package/dist/inputs/select/select.css?inline.cjs.map +1 -0
  409. package/dist/inputs/select/select.css?inline.js +6 -0
  410. package/dist/inputs/select/select.css?inline.js.map +1 -0
  411. package/dist/inputs/select/select.d.ts +79 -0
  412. package/dist/inputs/select/select.d.ts.map +1 -0
  413. package/dist/inputs/shared/base-props.d.ts +39 -0
  414. package/dist/inputs/shared/base-props.d.ts.map +1 -0
  415. package/dist/inputs/shared/composables/index.cjs +1 -0
  416. package/dist/inputs/shared/composables/index.d.ts +3 -0
  417. package/dist/inputs/shared/composables/index.d.ts.map +1 -0
  418. package/dist/inputs/shared/composables/index.js +2 -0
  419. package/dist/inputs/shared/composables/use-text-field.cjs +2 -0
  420. package/dist/inputs/shared/composables/use-text-field.cjs.map +1 -0
  421. package/dist/inputs/shared/composables/use-text-field.d.ts +33 -0
  422. package/dist/inputs/shared/composables/use-text-field.d.ts.map +1 -0
  423. package/dist/inputs/shared/composables/use-text-field.js +41 -0
  424. package/dist/inputs/shared/composables/use-text-field.js.map +1 -0
  425. package/dist/inputs/shared/composables/use-toggle-field.cjs +2 -0
  426. package/dist/inputs/shared/composables/use-toggle-field.cjs.map +1 -0
  427. package/dist/inputs/shared/composables/use-toggle-field.d.ts +18 -0
  428. package/dist/inputs/shared/composables/use-toggle-field.d.ts.map +1 -0
  429. package/dist/inputs/shared/composables/use-toggle-field.js +26 -0
  430. package/dist/inputs/shared/composables/use-toggle-field.js.map +1 -0
  431. package/dist/inputs/shared/design-presets.cjs +2 -0
  432. package/dist/inputs/shared/design-presets.cjs.map +1 -0
  433. package/dist/inputs/shared/design-presets.d.ts +97 -0
  434. package/dist/inputs/shared/design-presets.d.ts.map +1 -0
  435. package/dist/inputs/shared/design-presets.js +92 -0
  436. package/dist/inputs/shared/design-presets.js.map +1 -0
  437. package/dist/inputs/shared/dom-sync/dropdown.cjs +2 -0
  438. package/dist/inputs/shared/dom-sync/dropdown.cjs.map +1 -0
  439. package/dist/inputs/shared/dom-sync/dropdown.d.ts +7 -0
  440. package/dist/inputs/shared/dom-sync/dropdown.d.ts.map +1 -0
  441. package/dist/inputs/shared/dom-sync/dropdown.js +30 -0
  442. package/dist/inputs/shared/dom-sync/dropdown.js.map +1 -0
  443. package/dist/inputs/shared/dom-sync/field-sync.cjs +2 -0
  444. package/dist/inputs/shared/dom-sync/field-sync.cjs.map +1 -0
  445. package/dist/inputs/shared/dom-sync/field-sync.d.ts +36 -0
  446. package/dist/inputs/shared/dom-sync/field-sync.d.ts.map +1 -0
  447. package/dist/inputs/shared/dom-sync/field-sync.js +37 -0
  448. package/dist/inputs/shared/dom-sync/field-sync.js.map +1 -0
  449. package/dist/inputs/shared/dom-sync/form-context.cjs +2 -0
  450. package/dist/inputs/shared/dom-sync/form-context.cjs.map +1 -0
  451. package/dist/inputs/shared/dom-sync/form-context.d.ts +18 -0
  452. package/dist/inputs/shared/dom-sync/form-context.d.ts.map +1 -0
  453. package/dist/inputs/shared/dom-sync/form-context.js +20 -0
  454. package/dist/inputs/shared/dom-sync/form-context.js.map +1 -0
  455. package/dist/inputs/shared/dom-sync/index.cjs +1 -0
  456. package/dist/inputs/shared/dom-sync/index.d.ts +5 -0
  457. package/dist/inputs/shared/dom-sync/index.d.ts.map +1 -0
  458. package/dist/inputs/shared/dom-sync/index.js +4 -0
  459. package/dist/inputs/shared/dom-sync/label-sync.cjs +2 -0
  460. package/dist/inputs/shared/dom-sync/label-sync.cjs.map +1 -0
  461. package/dist/inputs/shared/dom-sync/label-sync.d.ts +16 -0
  462. package/dist/inputs/shared/dom-sync/label-sync.d.ts.map +1 -0
  463. package/dist/inputs/shared/dom-sync/label-sync.js +12 -0
  464. package/dist/inputs/shared/dom-sync/label-sync.js.map +1 -0
  465. package/dist/inputs/shared/form-context.cjs +2 -0
  466. package/dist/inputs/shared/form-context.cjs.map +1 -0
  467. package/dist/inputs/shared/form-context.d.ts +19 -0
  468. package/dist/inputs/shared/form-context.d.ts.map +1 -0
  469. package/dist/inputs/shared/form-context.js +7 -0
  470. package/dist/inputs/shared/form-context.js.map +1 -0
  471. package/dist/inputs/shared/utils/assistive-text.cjs +2 -0
  472. package/dist/inputs/shared/utils/assistive-text.cjs.map +1 -0
  473. package/dist/inputs/shared/utils/assistive-text.d.ts +24 -0
  474. package/dist/inputs/shared/utils/assistive-text.d.ts.map +1 -0
  475. package/dist/inputs/shared/utils/assistive-text.js +37 -0
  476. package/dist/inputs/shared/utils/assistive-text.js.map +1 -0
  477. package/dist/inputs/shared/utils/choice-change.cjs +2 -0
  478. package/dist/inputs/shared/utils/choice-change.cjs.map +1 -0
  479. package/dist/inputs/shared/utils/choice-change.d.ts +8 -0
  480. package/dist/inputs/shared/utils/choice-change.d.ts.map +1 -0
  481. package/dist/inputs/shared/utils/choice-change.js +13 -0
  482. package/dist/inputs/shared/utils/choice-change.js.map +1 -0
  483. package/dist/inputs/shared/utils/controlled-csv.cjs +2 -0
  484. package/dist/inputs/shared/utils/controlled-csv.cjs.map +1 -0
  485. package/dist/inputs/shared/utils/controlled-csv.d.ts +8 -0
  486. package/dist/inputs/shared/utils/controlled-csv.d.ts.map +1 -0
  487. package/dist/inputs/shared/utils/controlled-csv.js +15 -0
  488. package/dist/inputs/shared/utils/controlled-csv.js.map +1 -0
  489. package/dist/inputs/shared/utils/field-values.cjs +2 -0
  490. package/dist/inputs/shared/utils/field-values.cjs.map +1 -0
  491. package/dist/inputs/shared/utils/field-values.d.ts +5 -0
  492. package/dist/inputs/shared/utils/field-values.d.ts.map +1 -0
  493. package/dist/inputs/shared/utils/field-values.js +13 -0
  494. package/dist/inputs/shared/utils/field-values.js.map +1 -0
  495. package/dist/inputs/shared/utils/index.d.ts +5 -0
  496. package/dist/inputs/shared/utils/index.d.ts.map +1 -0
  497. package/dist/inputs/shared/validation/index.cjs +2 -0
  498. package/dist/inputs/shared/validation/index.cjs.map +1 -0
  499. package/dist/inputs/shared/validation/index.d.ts +14 -0
  500. package/dist/inputs/shared/validation/index.d.ts.map +1 -0
  501. package/dist/inputs/shared/validation/index.js +13 -0
  502. package/dist/inputs/shared/validation/index.js.map +1 -0
  503. package/dist/inputs/slider/slider.css?inline.cjs +2 -0
  504. package/dist/inputs/slider/slider.css?inline.cjs.map +1 -0
  505. package/dist/inputs/slider/slider.css?inline.js +6 -0
  506. package/dist/inputs/slider/slider.css?inline.js.map +1 -0
  507. package/dist/inputs/slider/slider.d.ts +82 -0
  508. package/dist/inputs/slider/slider.d.ts.map +1 -0
  509. package/dist/inputs/switch/switch.css?inline.cjs +2 -0
  510. package/dist/inputs/switch/switch.css?inline.cjs.map +1 -0
  511. package/dist/inputs/switch/switch.css?inline.js +6 -0
  512. package/dist/inputs/switch/switch.css?inline.js.map +1 -0
  513. package/dist/inputs/switch/switch.d.ts +40 -0
  514. package/dist/inputs/switch/switch.d.ts.map +1 -0
  515. package/dist/inputs/textarea/textarea.css?inline.cjs +2 -0
  516. package/dist/inputs/textarea/textarea.css?inline.cjs.map +1 -0
  517. package/dist/inputs/textarea/textarea.css?inline.js +6 -0
  518. package/dist/inputs/textarea/textarea.css?inline.js.map +1 -0
  519. package/dist/inputs/textarea/textarea.d.ts +57 -0
  520. package/dist/inputs/textarea/textarea.d.ts.map +1 -0
  521. package/dist/layout/box/box.css?inline.cjs +2 -0
  522. package/dist/layout/box/box.css?inline.cjs.map +1 -0
  523. package/dist/layout/box/box.css?inline.js +6 -0
  524. package/dist/layout/box/box.css?inline.js.map +1 -0
  525. package/dist/layout/box/box.d.ts +52 -0
  526. package/dist/layout/box/box.d.ts.map +1 -0
  527. package/dist/layout/grid/grid.css?inline.cjs +2 -0
  528. package/dist/layout/grid/grid.css?inline.cjs.map +1 -0
  529. package/dist/layout/grid/grid.css?inline.js +6 -0
  530. package/dist/layout/grid/grid.css?inline.js.map +1 -0
  531. package/dist/layout/grid/grid.d.ts +105 -0
  532. package/dist/layout/grid/grid.d.ts.map +1 -0
  533. package/dist/layout/grid-item/grid-item.css?inline.cjs +2 -0
  534. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +1 -0
  535. package/dist/layout/grid-item/grid-item.css?inline.js +6 -0
  536. package/dist/layout/grid-item/grid-item.css?inline.js.map +1 -0
  537. package/dist/layout/grid-item/grid-item.d.ts +47 -0
  538. package/dist/layout/grid-item/grid-item.d.ts.map +1 -0
  539. package/dist/layout/index.cjs +1 -0
  540. package/dist/layout/index.d.ts +9 -0
  541. package/dist/layout/index.d.ts.map +1 -0
  542. package/dist/layout/index.js +4 -0
  543. package/dist/layout/sidebar/sidebar-group.css?inline.cjs +2 -0
  544. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +1 -0
  545. package/dist/layout/sidebar/sidebar-group.css?inline.js +6 -0
  546. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +1 -0
  547. package/dist/layout/sidebar/sidebar-item.css?inline.cjs +2 -0
  548. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +1 -0
  549. package/dist/layout/sidebar/sidebar-item.css?inline.js +6 -0
  550. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +1 -0
  551. package/dist/layout/sidebar/sidebar.css?inline.cjs +2 -0
  552. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +1 -0
  553. package/dist/layout/sidebar/sidebar.css?inline.js +6 -0
  554. package/dist/layout/sidebar/sidebar.css?inline.js.map +1 -0
  555. package/dist/layout/sidebar/sidebar.d.ts +190 -0
  556. package/dist/layout/sidebar/sidebar.d.ts.map +1 -0
  557. package/dist/menu.cjs +133 -0
  558. package/dist/menu.cjs.map +1 -0
  559. package/dist/menu.js +296 -0
  560. package/dist/menu.js.map +1 -0
  561. package/dist/number-input.cjs +55 -0
  562. package/dist/number-input.cjs.map +1 -0
  563. package/dist/number-input.js +158 -0
  564. package/dist/number-input.js.map +1 -0
  565. package/dist/otp-input.cjs +22 -0
  566. package/dist/otp-input.cjs.map +1 -0
  567. package/dist/otp-input.js +120 -0
  568. package/dist/otp-input.js.map +1 -0
  569. package/dist/overlay/dialog/dialog.css?inline.cjs +2 -0
  570. package/dist/overlay/dialog/dialog.css?inline.cjs.map +1 -0
  571. package/dist/overlay/dialog/dialog.css?inline.js +6 -0
  572. package/dist/overlay/dialog/dialog.css?inline.js.map +1 -0
  573. package/dist/overlay/dialog/dialog.d.ts +98 -0
  574. package/dist/overlay/dialog/dialog.d.ts.map +1 -0
  575. package/dist/overlay/drawer/drawer.css?inline.cjs +2 -0
  576. package/dist/overlay/drawer/drawer.css?inline.cjs.map +1 -0
  577. package/dist/overlay/drawer/drawer.css?inline.js +6 -0
  578. package/dist/overlay/drawer/drawer.css?inline.js.map +1 -0
  579. package/dist/overlay/drawer/drawer.d.ts +98 -0
  580. package/dist/overlay/drawer/drawer.d.ts.map +1 -0
  581. package/dist/overlay/index.cjs +1 -0
  582. package/dist/overlay/index.d.ts +11 -0
  583. package/dist/overlay/index.d.ts.map +1 -0
  584. package/dist/overlay/index.js +5 -0
  585. package/dist/overlay/menu/menu.css?inline.cjs +2 -0
  586. package/dist/overlay/menu/menu.css?inline.cjs.map +1 -0
  587. package/dist/overlay/menu/menu.css?inline.js +6 -0
  588. package/dist/overlay/menu/menu.css?inline.js.map +1 -0
  589. package/dist/overlay/menu/menu.d.ts +45 -0
  590. package/dist/overlay/menu/menu.d.ts.map +1 -0
  591. package/dist/overlay/popover/popover.css?inline.cjs +2 -0
  592. package/dist/overlay/popover/popover.css?inline.cjs.map +1 -0
  593. package/dist/overlay/popover/popover.css?inline.js +6 -0
  594. package/dist/overlay/popover/popover.css?inline.js.map +1 -0
  595. package/dist/overlay/popover/popover.d.ts +56 -0
  596. package/dist/overlay/popover/popover.d.ts.map +1 -0
  597. package/dist/overlay/tooltip/tooltip.css?inline.cjs +2 -0
  598. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +1 -0
  599. package/dist/overlay/tooltip/tooltip.css?inline.js +6 -0
  600. package/dist/overlay/tooltip/tooltip.css?inline.js.map +1 -0
  601. package/dist/overlay/tooltip/tooltip.d.ts +55 -0
  602. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -0
  603. package/dist/pagination.cjs +102 -0
  604. package/dist/pagination.cjs.map +1 -0
  605. package/dist/pagination.js +168 -0
  606. package/dist/pagination.js.map +1 -0
  607. package/dist/popover.cjs +16 -0
  608. package/dist/popover.cjs.map +1 -0
  609. package/dist/popover.js +110 -0
  610. package/dist/popover.js.map +1 -0
  611. package/dist/progress.cjs +51 -0
  612. package/dist/progress.cjs.map +1 -0
  613. package/dist/progress.js +90 -0
  614. package/dist/progress.js.map +1 -0
  615. package/dist/radio-group.cjs +20 -0
  616. package/dist/radio-group.cjs.map +1 -0
  617. package/dist/radio-group.js +104 -0
  618. package/dist/radio-group.js.map +1 -0
  619. package/dist/radio.cjs +16 -0
  620. package/dist/radio.cjs.map +1 -0
  621. package/dist/radio.js +135 -0
  622. package/dist/radio.js.map +1 -0
  623. package/dist/rating.cjs +37 -0
  624. package/dist/rating.cjs.map +1 -0
  625. package/dist/rating.js +123 -0
  626. package/dist/rating.js.map +1 -0
  627. package/dist/select.cjs +77 -0
  628. package/dist/select.cjs.map +1 -0
  629. package/dist/select.js +317 -0
  630. package/dist/select.js.map +1 -0
  631. package/dist/separator.cjs +26 -0
  632. package/dist/separator.cjs.map +1 -0
  633. package/dist/separator.js +46 -0
  634. package/dist/separator.js.map +1 -0
  635. package/dist/sidebar.cjs +69 -0
  636. package/dist/sidebar.cjs.map +1 -0
  637. package/dist/sidebar.js +202 -0
  638. package/dist/sidebar.js.map +1 -0
  639. package/dist/skeleton.cjs +10 -0
  640. package/dist/skeleton.cjs.map +1 -0
  641. package/dist/skeleton.js +56 -0
  642. package/dist/skeleton.js.map +1 -0
  643. package/dist/slider.cjs +24 -0
  644. package/dist/slider.cjs.map +1 -0
  645. package/dist/slider.js +209 -0
  646. package/dist/slider.js.map +1 -0
  647. package/dist/stateit/dist/computed.cjs +2 -0
  648. package/dist/stateit/dist/computed.cjs.map +1 -0
  649. package/dist/stateit/dist/computed.js +65 -0
  650. package/dist/stateit/dist/computed.js.map +1 -0
  651. package/dist/stateit/dist/effect.cjs +2 -0
  652. package/dist/stateit/dist/effect.cjs.map +1 -0
  653. package/dist/stateit/dist/effect.js +53 -0
  654. package/dist/stateit/dist/effect.js.map +1 -0
  655. package/dist/stateit/dist/index.cjs +1 -0
  656. package/dist/stateit/dist/index.js +5 -0
  657. package/dist/stateit/dist/runtime.cjs +2 -0
  658. package/dist/stateit/dist/runtime.cjs.map +1 -0
  659. package/dist/stateit/dist/runtime.js +43 -0
  660. package/dist/stateit/dist/runtime.js.map +1 -0
  661. package/dist/stateit/dist/signal.cjs +2 -0
  662. package/dist/stateit/dist/signal.cjs.map +1 -0
  663. package/dist/stateit/dist/signal.js +27 -0
  664. package/dist/stateit/dist/signal.js.map +1 -0
  665. package/dist/stateit/dist/store.cjs +2 -0
  666. package/dist/stateit/dist/store.cjs.map +1 -0
  667. package/dist/stateit/dist/store.js +17 -0
  668. package/dist/stateit/dist/store.js.map +1 -0
  669. package/dist/stateit/dist/types.cjs +2 -0
  670. package/dist/stateit/dist/types.cjs.map +1 -0
  671. package/dist/stateit/dist/types.js +6 -0
  672. package/dist/stateit/dist/types.js.map +1 -0
  673. package/dist/styles/animation.css +87 -0
  674. package/dist/styles/index.cjs +2 -0
  675. package/dist/styles/index.cjs.map +1 -0
  676. package/dist/styles/index.d.ts +48 -0
  677. package/dist/styles/index.d.ts.map +1 -0
  678. package/dist/styles/index.js +26 -0
  679. package/dist/styles/index.js.map +1 -0
  680. package/dist/styles/layer.css +18 -0
  681. package/dist/styles/mixins/accessibility.css.cjs +15 -0
  682. package/dist/styles/mixins/accessibility.css.cjs.map +1 -0
  683. package/dist/styles/mixins/accessibility.css.d.ts +46 -0
  684. package/dist/styles/mixins/accessibility.css.d.ts.map +1 -0
  685. package/dist/styles/mixins/accessibility.css.js +20 -0
  686. package/dist/styles/mixins/accessibility.css.js.map +1 -0
  687. package/dist/styles/mixins/animation.css.cjs +71 -0
  688. package/dist/styles/mixins/animation.css.cjs.map +1 -0
  689. package/dist/styles/mixins/animation.css.d.ts +22 -0
  690. package/dist/styles/mixins/animation.css.d.ts.map +1 -0
  691. package/dist/styles/mixins/animation.css.js +90 -0
  692. package/dist/styles/mixins/animation.css.js.map +1 -0
  693. package/dist/styles/mixins/shape.css.cjs +72 -0
  694. package/dist/styles/mixins/shape.css.cjs.map +1 -0
  695. package/dist/styles/mixins/shape.css.d.ts +97 -0
  696. package/dist/styles/mixins/shape.css.d.ts.map +1 -0
  697. package/dist/styles/mixins/shape.css.js +104 -0
  698. package/dist/styles/mixins/shape.css.js.map +1 -0
  699. package/dist/styles/mixins/states.css.cjs +18 -0
  700. package/dist/styles/mixins/states.css.cjs.map +1 -0
  701. package/dist/styles/mixins/states.css.d.ts +61 -0
  702. package/dist/styles/mixins/states.css.d.ts.map +1 -0
  703. package/dist/styles/mixins/states.css.js +26 -0
  704. package/dist/styles/mixins/states.css.js.map +1 -0
  705. package/dist/styles/mixins/theme.css.cjs +146 -0
  706. package/dist/styles/mixins/theme.css.cjs.map +1 -0
  707. package/dist/styles/mixins/theme.css.d.ts +93 -0
  708. package/dist/styles/mixins/theme.css.d.ts.map +1 -0
  709. package/dist/styles/mixins/theme.css.js +151 -0
  710. package/dist/styles/mixins/theme.css.js.map +1 -0
  711. package/dist/styles/mixins/variants.css.cjs +84 -0
  712. package/dist/styles/mixins/variants.css.cjs.map +1 -0
  713. package/dist/styles/mixins/variants.css.d.ts +22 -0
  714. package/dist/styles/mixins/variants.css.d.ts.map +1 -0
  715. package/dist/styles/mixins/variants.css.js +89 -0
  716. package/dist/styles/mixins/variants.css.js.map +1 -0
  717. package/dist/styles/preflight.css +237 -0
  718. package/dist/styles/styles.css +5 -0
  719. package/dist/styles/theme.css +457 -0
  720. package/dist/switch.cjs +16 -0
  721. package/dist/switch.cjs.map +1 -0
  722. package/dist/switch.js +82 -0
  723. package/dist/switch.js.map +1 -0
  724. package/dist/tab-item.cjs +17 -0
  725. package/dist/tab-item.cjs.map +1 -0
  726. package/dist/tab-item.js +57 -0
  727. package/dist/tab-item.js.map +1 -0
  728. package/dist/tab-panel.cjs +14 -0
  729. package/dist/tab-panel.cjs.map +1 -0
  730. package/dist/tab-panel.js +51 -0
  731. package/dist/tab-panel.js.map +1 -0
  732. package/dist/table.cjs +2 -0
  733. package/dist/table.cjs.map +1 -0
  734. package/dist/table.js +101 -0
  735. package/dist/table.js.map +1 -0
  736. package/dist/tabs.cjs +17 -0
  737. package/dist/tabs.cjs.map +1 -0
  738. package/dist/tabs.js +98 -0
  739. package/dist/tabs.js.map +1 -0
  740. package/dist/text.cjs +2 -0
  741. package/dist/text.cjs.map +1 -0
  742. package/dist/text.js +30 -0
  743. package/dist/text.js.map +1 -0
  744. package/dist/textarea.cjs +16 -0
  745. package/dist/textarea.cjs.map +1 -0
  746. package/dist/textarea.js +122 -0
  747. package/dist/textarea.js.map +1 -0
  748. package/dist/toast.cjs +63 -0
  749. package/dist/toast.cjs.map +1 -0
  750. package/dist/toast.js +221 -0
  751. package/dist/toast.js.map +1 -0
  752. package/dist/tooltip.cjs +15 -0
  753. package/dist/tooltip.cjs.map +1 -0
  754. package/dist/tooltip.js +111 -0
  755. package/dist/tooltip.js.map +1 -0
  756. package/dist/types/index.d.ts +7 -0
  757. package/dist/types/index.d.ts.map +1 -0
  758. package/dist/types/shared.d.ts +120 -0
  759. package/dist/types/shared.d.ts.map +1 -0
  760. package/dist/utils/animation.cjs +2 -0
  761. package/dist/utils/animation.cjs.map +1 -0
  762. package/dist/utils/animation.d.ts +2 -0
  763. package/dist/utils/animation.d.ts.map +1 -0
  764. package/dist/utils/animation.js +29 -0
  765. package/dist/utils/animation.js.map +1 -0
  766. package/dist/utils/background-lock.cjs +2 -0
  767. package/dist/utils/background-lock.cjs.map +1 -0
  768. package/dist/utils/background-lock.d.ts +20 -0
  769. package/dist/utils/background-lock.d.ts.map +1 -0
  770. package/dist/utils/background-lock.js +21 -0
  771. package/dist/utils/background-lock.js.map +1 -0
  772. package/dist/utils/index.cjs +1 -0
  773. package/dist/utils/index.d.ts +4 -0
  774. package/dist/utils/index.d.ts.map +1 -0
  775. package/dist/utils/index.js +3 -0
  776. package/dist/utils/use-overlay.cjs +2 -0
  777. package/dist/utils/use-overlay.cjs.map +1 -0
  778. package/dist/utils/use-overlay.d.ts +26 -0
  779. package/dist/utils/use-overlay.d.ts.map +1 -0
  780. package/dist/utils/use-overlay.js +34 -0
  781. package/dist/utils/use-overlay.js.map +1 -0
  782. package/dist/virtualit/dist/dom/dom.cjs +2 -0
  783. package/dist/virtualit/dist/dom/dom.cjs.map +1 -0
  784. package/dist/virtualit/dist/dom/dom.js +47 -0
  785. package/dist/virtualit/dist/dom/dom.js.map +1 -0
  786. package/dist/virtualit/dist/dom.cjs +1 -0
  787. package/dist/virtualit/dist/dom.js +2 -0
  788. package/dist/virtualit/dist/virtualit.cjs +2 -0
  789. package/dist/virtualit/dist/virtualit.cjs.map +1 -0
  790. package/dist/virtualit/dist/virtualit.js +129 -0
  791. package/dist/virtualit/dist/virtualit.js.map +1 -0
  792. package/package.json +282 -0
@@ -0,0 +1,33 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`./styles/mixins/accessibility.css.cjs`),t=require(`./styles/mixins/shape.css.cjs`),n=require(`./styles/mixins/theme.css.cjs`);require(`./styles/index.cjs`);const r=require(`./icons.cjs`),i=require(`./utils/animation.cjs`),a=require(`./utils/background-lock.cjs`),o=require(`./utils/use-overlay.cjs`),s=require(`./overlay/dialog/dialog.css?inline.cjs`);let c=require(`@vielzeug/craftit`);var l=(0,c.defineComponent)({props:{backdrop:{default:void 0},dismissible:{default:!1},elevation:{default:void 0},"initial-focus":{default:void 0},label:{default:``},open:{default:!1},padding:{default:void 0},persistent:{default:!1},"return-focus":{default:!0},rounded:{default:void 0},size:{default:`md`}},setup({emit:e,host:t,props:n,slots:s}){let l=(0,c.ref)(),u=(0,c.computed)(()=>s.has(`header`).value||!!n.label.value||n.dismissible.value),d=(0,c.computed)(()=>s.has(`footer`).value),{applyInitialFocus:f,captureReturnFocus:p,closeWithAnimation:m,restoreFocus:h}=o.useOverlay(t,l,()=>l.value?.querySelector(`.panel`),n);return(0,c.onMount)(()=>{let r=l.value;return r?((0,c.watch)(n.open,n=>{n?r.open||(p(),r.showModal(),f(),a.lockBackground(t),e(`open`)):m()},{immediate:!0}),(0,c.handle)(r,`close`,()=>{a.unlockBackground(),t.removeAttribute(`open`),h(),e(`close`)}),(0,c.handle)(r,`click`,e=>{n.persistent.value||e.target===r&&m()}),(0,c.handle)(r,`keydown`,e=>{e.key===`Escape`&&(e.preventDefault(),n.persistent.value||m())}),()=>{r.open&&r.close(),a.unlockBackground()}):void 0}),c.html`
2
+ <dialog
3
+ ref=${l}
4
+ class="dialog"
5
+ part="dialog"
6
+ :aria-label="${()=>n.label.value||null}"
7
+ aria-modal="true">
8
+ <div class="overlay" part="overlay" aria-hidden="true"></div>
9
+ <div class="panel" part="panel" :data-size="${n.size}">
10
+ <div class="header" part="header" ?hidden=${()=>!u.value}>
11
+ <slot name="header">
12
+ <span class="title" part="title">${()=>n.label.value}</span>
13
+ </slot>
14
+ <button
15
+ class="close"
16
+ part="close"
17
+ type="button"
18
+ aria-label="Close dialog"
19
+ ?hidden=${()=>!n.dismissible.value}
20
+ @click=${()=>{let e=l.value;if(!e)return;c.fire.custom(e,`close-request`),e.classList.add(`closing`);let t=e.querySelector(`.panel`),n=()=>{e.classList.remove(`closing`),e.close()};t?i.awaitExit(t,n,`transition`):n()}}>
21
+ ${r.closeIcon}
22
+ </button>
23
+ </div>
24
+ <div class="body" part="body">
25
+ <slot></slot>
26
+ </div>
27
+ <div class="footer" part="footer" ?hidden=${()=>!d.value}>
28
+ <slot name="footer"></slot>
29
+ </div>
30
+ </div>
31
+ </dialog>
32
+ `},styles:[n.elevationMixin,t.roundedVariantMixin,e.coarsePointerMixin,e.reducedMotionMixin,s.default],tag:`bit-dialog`});exports.DIALOG_TAG=l;
33
+ //# sourceMappingURL=dialog.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.cjs","names":[],"sources":["../src/overlay/dialog/dialog.ts"],"sourcesContent":["import { computed, defineComponent, handle, html, onMount, ref, watch, fire } from '@vielzeug/craftit';\n\nimport type { PaddingSize, RoundedSize } from '../../types';\n\nimport { closeIcon } from '../../icons';\nimport { coarsePointerMixin, elevationMixin, reducedMotionMixin, roundedVariantMixin } from '../../styles';\nimport { awaitExit } from '../../utils/animation';\nimport { lockBackground, unlockBackground } from '../../utils/background-lock';\nimport { useOverlay } from '../../utils/use-overlay';\nimport componentStyles from './dialog.css?inline';\n\ntype DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\ntype DialogBackdrop = 'opaque' | 'blur' | 'transparent';\ntype DialogElevation = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/** Dialog component properties */\n\nexport type BitDialogEvents = {\n close: undefined;\n open: undefined;\n};\n\nexport type BitDialogProps = {\n /** Backdrop style — 'blur' (default): dark overlay + blur; 'opaque': dark overlay only; 'transparent': no overlay */\n backdrop?: DialogBackdrop;\n /** Show a close (×) button in the header */\n dismissible?: boolean;\n /** Panel shadow elevation — defaults to 'xl' */\n elevation?: DialogElevation;\n /**\n * CSS selector for the element inside the dialog that should receive focus when the dialog opens.\n * Defaults to the first focusable element (browser default).\n * @example 'input[name=\"email\"]' | '#confirm-btn'\n */\n 'initial-focus'?: string;\n /** Dialog title shown in the header (used as aria-label when no header slot) */\n label?: string;\n /** Controls the open state of the dialog */\n open?: boolean;\n /** Internal padding size */\n padding?: PaddingSize;\n /** When true, clicking the backdrop does not close the dialog */\n persistent?: boolean;\n /**\n * When true (default), focus returns to the element that triggered the dialog after it closes.\n * Set to false if you want to manage focus manually.\n */\n 'return-focus'?: boolean;\n /** Border radius */\n rounded?: RoundedSize | '';\n /** Dialog size */\n size?: DialogSize;\n};\n\n/**\n * A modal dialog that traps focus, blocks page interaction, and dismisses on\n * `Escape`. Built on the native `<dialog>` element for correct top-layer stacking\n * and browser-managed accessibility.\n *\n * @element bit-dialog\n *\n * @attr {boolean} open - Open/close the dialog\n * @attr {string} label - Dialog title (also used as aria-label)\n * @attr {string} size - Size: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n * @attr {boolean} dismissible - Show a close (×) button in the header\n * @attr {boolean} persistent - Prevent backdrop-click from closing\n * @attr {string} rounded - Border radius size\n * @attr {string} backdrop - Backdrop style: 'opaque' (default) | 'blur' | 'transparent'\n * @attr {string} elevation - Panel shadow: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n * @attr {string} padding - Padding: 'none' | 'sm' | 'md' | 'lg' | 'xl'\n *\n * @fires open - Fired when the dialog opens\n * @fires close - Fired when the dialog closes (any trigger)\n *\n * @slot - Dialog body content\n * @slot header - Custom header content (replaces the default title + close layout)\n * @slot footer - Action buttons or additional content at the bottom\n *\n * @cssprop --dialog-bg - Panel background color\n * @cssprop --dialog-border-color - Panel border color\n * @cssprop --dialog-radius - Panel border radius\n * @cssprop --dialog-shadow - Panel drop shadow\n * @cssprop --dialog-padding - Padding for header, body, and footer sections\n * @cssprop --dialog-gap - Gap between footer action buttons\n * @cssprop --dialog-backdrop - Backdrop overlay color\n * @cssprop --dialog-max-width - Maximum panel width (overridden by size prop)\n *\n * @example\n * ```html\n * <bit-dialog label=\"Confirm action\" dismissible>\n * <p>Are you sure you want to delete this item?</p>\n * <div slot=\"footer\">\n * <bit-button variant=\"ghost\" id=\"cancel\">Cancel</bit-button>\n * <bit-button color=\"error\" id=\"confirm\">Delete</bit-button>\n * </div>\n * </bit-dialog>\n *\n * <script type=\"module\">\n * import '@vielzeug/buildit/dialog';\n * const dialog = document.querySelector('bit-dialog');\n * document.querySelector('#open-btn').addEventListener('click', () => {\n * dialog.setAttribute('open', '');\n * });\n * document.querySelector('#cancel').addEventListener('click', () => {\n * dialog.removeAttribute('open');\n * });\n * </script>\n * ```\n */\nexport const DIALOG_TAG = defineComponent<BitDialogProps, BitDialogEvents>({\n props: {\n backdrop: { default: undefined },\n dismissible: { default: false },\n elevation: { default: undefined },\n 'initial-focus': { default: undefined },\n label: { default: '' },\n open: { default: false },\n padding: { default: undefined },\n persistent: { default: false },\n 'return-focus': { default: true },\n rounded: { default: undefined },\n size: { default: 'md' },\n },\n setup({ emit, host, props, slots }) {\n const dialogRef = ref<HTMLDialogElement>();\n const hasHeader = computed(() => slots.has('header').value || !!props.label.value || props.dismissible.value);\n const hasFooter = computed(() => slots.has('footer').value);\n const { applyInitialFocus, captureReturnFocus, closeWithAnimation, restoreFocus } = useOverlay(\n host,\n dialogRef,\n () => dialogRef.value?.querySelector<HTMLElement>('.panel'),\n props,\n );\n\n onMount(() => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n // Sync prop changes → native dialog\n watch(\n props.open,\n (open) => {\n if (open) {\n if (!dialog.open) {\n captureReturnFocus();\n dialog.showModal();\n applyInitialFocus();\n lockBackground(host);\n emit('open');\n }\n } else {\n closeWithAnimation();\n }\n },\n { immediate: true },\n );\n\n // Native dialog 'close' fires after animation finishes or on programmatic .close()\n const handleNativeClose = () => {\n unlockBackground();\n // Sync the open prop back to the host attribute if closed externally\n host.removeAttribute('open');\n // Return focus to the triggering element unless opted out\n restoreFocus();\n emit('close');\n };\n // Intercept Escape to play exit animation first; also enforce persistent mode\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n\n if (!props.persistent.value) {\n closeWithAnimation();\n }\n }\n };\n // Backdrop click: the click target is the <dialog> element itself (not the panel)\n const handleBackdropClick = (e: MouseEvent) => {\n if (props.persistent.value) return;\n\n // When clicking the backdrop, the event target is the <dialog> element itself.\n // Clicks inside the panel bubble up with a more specific target.\n if (e.target === dialog) {\n closeWithAnimation();\n }\n };\n\n handle(dialog, 'close', handleNativeClose);\n handle(dialog, 'click', handleBackdropClick);\n handle(dialog, 'keydown', handleKeydown);\n\n return () => {\n // Ensure the native dialog is closed on unmount to release top-layer\n if (dialog.open) dialog.close();\n\n unlockBackground();\n };\n });\n\n const handleDismiss = () => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n fire.custom(dialog, 'close-request');\n dialog.classList.add('closing');\n\n const panel = dialog.querySelector<HTMLElement>('.panel');\n const finish = () => {\n dialog.classList.remove('closing');\n dialog.close();\n };\n\n if (panel) {\n awaitExit(panel, finish, 'transition');\n } else {\n finish();\n }\n };\n\n return html`\n <dialog\n ref=${dialogRef}\n class=\"dialog\"\n part=\"dialog\"\n :aria-label=\"${() => props.label.value || null}\"\n aria-modal=\"true\">\n <div class=\"overlay\" part=\"overlay\" aria-hidden=\"true\"></div>\n <div class=\"panel\" part=\"panel\" :data-size=\"${props.size}\">\n <div class=\"header\" part=\"header\" ?hidden=${() => !hasHeader.value}>\n <slot name=\"header\">\n <span class=\"title\" part=\"title\">${() => props.label.value}</span>\n </slot>\n <button\n class=\"close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Close dialog\"\n ?hidden=${() => !props.dismissible.value}\n @click=${handleDismiss}>\n ${closeIcon}\n </button>\n </div>\n <div class=\"body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"footer\" part=\"footer\" ?hidden=${() => !hasFooter.value}>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </dialog>\n `;\n },\n styles: [elevationMixin, roundedVariantMixin, coarsePointerMixin, reducedMotionMixin, componentStyles],\n tag: 'bit-dialog',\n});\n"],"mappings":"udA6GA,IAAa,GAAA,EAAA,EAAA,iBAA8D,CACzE,MAAO,CACL,SAAU,CAAE,QAAS,IAAA,GAAW,CAChC,YAAa,CAAE,QAAS,GAAO,CAC/B,UAAW,CAAE,QAAS,IAAA,GAAW,CACjC,gBAAiB,CAAE,QAAS,IAAA,GAAW,CACvC,MAAO,CAAE,QAAS,GAAI,CACtB,KAAM,CAAE,QAAS,GAAO,CACxB,QAAS,CAAE,QAAS,IAAA,GAAW,CAC/B,WAAY,CAAE,QAAS,GAAO,CAC9B,eAAgB,CAAE,QAAS,GAAM,CACjC,QAAS,CAAE,QAAS,IAAA,GAAW,CAC/B,KAAM,CAAE,QAAS,KAAM,CACxB,CACD,MAAM,CAAE,OAAM,OAAM,QAAO,SAAS,CAClC,IAAM,GAAA,EAAA,EAAA,MAAoC,CACpC,GAAA,EAAA,EAAA,cAA2B,EAAM,IAAI,SAAS,CAAC,OAAS,CAAC,CAAC,EAAM,MAAM,OAAS,EAAM,YAAY,MAAM,CACvG,GAAA,EAAA,EAAA,cAA2B,EAAM,IAAI,SAAS,CAAC,MAAM,CACrD,CAAE,oBAAmB,qBAAoB,qBAAoB,gBAAiB,EAAA,WAClF,EACA,MACM,EAAU,OAAO,cAA2B,SAAS,CAC3D,EACD,CAyFD,OAvFA,EAAA,EAAA,aAAc,CACZ,IAAM,EAAS,EAAU,MAyDzB,OAvDK,IAGL,EAAA,EAAA,OACE,EAAM,KACL,GAAS,CACJ,EACG,EAAO,OACV,GAAoB,CACpB,EAAO,WAAW,CAClB,GAAmB,CACnB,EAAA,eAAe,EAAK,CACpB,EAAK,OAAO,EAGd,GAAoB,EAGxB,CAAE,UAAW,GAAM,CACpB,EAgCD,EAAA,EAAA,QAAO,EAAQ,YA7BiB,CAC9B,EAAA,kBAAkB,CAElB,EAAK,gBAAgB,OAAO,CAE5B,GAAc,CACd,EAAK,QAAQ,EAuB2B,EAC1C,EAAA,EAAA,QAAO,EAAQ,QAXc,GAAkB,CACzC,EAAM,WAAW,OAIjB,EAAE,SAAW,GACf,GAAoB,EAKoB,EAC5C,EAAA,EAAA,QAAO,EAAQ,UAtBQ,GAAqB,CACtC,EAAE,MAAQ,WACZ,EAAE,gBAAgB,CAEb,EAAM,WAAW,OACpB,GAAoB,GAiBc,KAE3B,CAEP,EAAO,MAAM,EAAO,OAAO,CAE/B,EAAA,kBAAkB,GA3DP,QA6Db,CAuBK,EAAA,IAAI;;cAED,EAAU;;;2BAGK,EAAM,MAAM,OAAS,KAAK;;;sDAGD,EAAM,KAAK;0DACL,CAAC,EAAU,MAAM;;qDAEtB,EAAM,MAAM,MAAM;;;;;;;4BAO3C,CAAC,EAAM,YAAY,MAAM;2BAvCvB,CAC1B,IAAM,EAAS,EAAU,MAEzB,GAAI,CAAC,EAAQ,OAEb,EAAA,KAAK,OAAO,EAAQ,gBAAgB,CACpC,EAAO,UAAU,IAAI,UAAU,CAE/B,IAAM,EAAQ,EAAO,cAA2B,SAAS,CACnD,MAAe,CACnB,EAAO,UAAU,OAAO,UAAU,CAClC,EAAO,OAAO,EAGZ,EACF,EAAA,UAAU,EAAO,EAAQ,aAAa,CAEtC,GAAQ,EAuBqB;gBACrB,EAAA,UAAU;;;;;;0DAMkC,CAAC,EAAU,MAAM;;;;;OAO3E,OAAQ,CAAC,EAAA,eAAgB,EAAA,oBAAqB,EAAA,mBAAoB,EAAA,mBAAoB,EAAA,QAAgB,CACtG,IAAK,aACN,CAAC"}
package/dist/dialog.js ADDED
@@ -0,0 +1,94 @@
1
+ import { coarsePointerMixin as e, reducedMotionMixin as t } from "./styles/mixins/accessibility.css.js";
2
+ import { roundedVariantMixin as n } from "./styles/mixins/shape.css.js";
3
+ import { elevationMixin as r } from "./styles/mixins/theme.css.js";
4
+ import "./styles/index.js";
5
+ import { closeIcon as i } from "./icons.js";
6
+ import { awaitExit as a } from "./utils/animation.js";
7
+ import { lockBackground as o, unlockBackground as s } from "./utils/background-lock.js";
8
+ import { useOverlay as c } from "./utils/use-overlay.js";
9
+ import l from "./overlay/dialog/dialog.css?inline.js";
10
+ import { computed as u, defineComponent as d, fire as f, handle as p, html as m, onMount as h, ref as g, watch as _ } from "@vielzeug/craftit";
11
+ //#region src/overlay/dialog/dialog.ts
12
+ var v = d({
13
+ props: {
14
+ backdrop: { default: void 0 },
15
+ dismissible: { default: !1 },
16
+ elevation: { default: void 0 },
17
+ "initial-focus": { default: void 0 },
18
+ label: { default: "" },
19
+ open: { default: !1 },
20
+ padding: { default: void 0 },
21
+ persistent: { default: !1 },
22
+ "return-focus": { default: !0 },
23
+ rounded: { default: void 0 },
24
+ size: { default: "md" }
25
+ },
26
+ setup({ emit: e, host: t, props: n, slots: r }) {
27
+ let l = g(), d = u(() => r.has("header").value || !!n.label.value || n.dismissible.value), v = u(() => r.has("footer").value), { applyInitialFocus: y, captureReturnFocus: b, closeWithAnimation: x, restoreFocus: S } = c(t, l, () => l.value?.querySelector(".panel"), n);
28
+ return h(() => {
29
+ let r = l.value;
30
+ return r ? (_(n.open, (n) => {
31
+ n ? r.open || (b(), r.showModal(), y(), o(t), e("open")) : x();
32
+ }, { immediate: !0 }), p(r, "close", () => {
33
+ s(), t.removeAttribute("open"), S(), e("close");
34
+ }), p(r, "click", (e) => {
35
+ n.persistent.value || e.target === r && x();
36
+ }), p(r, "keydown", (e) => {
37
+ e.key === "Escape" && (e.preventDefault(), n.persistent.value || x());
38
+ }), () => {
39
+ r.open && r.close(), s();
40
+ }) : void 0;
41
+ }), m`
42
+ <dialog
43
+ ref=${l}
44
+ class="dialog"
45
+ part="dialog"
46
+ :aria-label="${() => n.label.value || null}"
47
+ aria-modal="true">
48
+ <div class="overlay" part="overlay" aria-hidden="true"></div>
49
+ <div class="panel" part="panel" :data-size="${n.size}">
50
+ <div class="header" part="header" ?hidden=${() => !d.value}>
51
+ <slot name="header">
52
+ <span class="title" part="title">${() => n.label.value}</span>
53
+ </slot>
54
+ <button
55
+ class="close"
56
+ part="close"
57
+ type="button"
58
+ aria-label="Close dialog"
59
+ ?hidden=${() => !n.dismissible.value}
60
+ @click=${() => {
61
+ let e = l.value;
62
+ if (!e) return;
63
+ f.custom(e, "close-request"), e.classList.add("closing");
64
+ let t = e.querySelector(".panel"), n = () => {
65
+ e.classList.remove("closing"), e.close();
66
+ };
67
+ t ? a(t, n, "transition") : n();
68
+ }}>
69
+ ${i}
70
+ </button>
71
+ </div>
72
+ <div class="body" part="body">
73
+ <slot></slot>
74
+ </div>
75
+ <div class="footer" part="footer" ?hidden=${() => !v.value}>
76
+ <slot name="footer"></slot>
77
+ </div>
78
+ </div>
79
+ </dialog>
80
+ `;
81
+ },
82
+ styles: [
83
+ r,
84
+ n,
85
+ e,
86
+ t,
87
+ l
88
+ ],
89
+ tag: "bit-dialog"
90
+ });
91
+ //#endregion
92
+ export { v as DIALOG_TAG };
93
+
94
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","names":[],"sources":["../src/overlay/dialog/dialog.ts"],"sourcesContent":["import { computed, defineComponent, handle, html, onMount, ref, watch, fire } from '@vielzeug/craftit';\n\nimport type { PaddingSize, RoundedSize } from '../../types';\n\nimport { closeIcon } from '../../icons';\nimport { coarsePointerMixin, elevationMixin, reducedMotionMixin, roundedVariantMixin } from '../../styles';\nimport { awaitExit } from '../../utils/animation';\nimport { lockBackground, unlockBackground } from '../../utils/background-lock';\nimport { useOverlay } from '../../utils/use-overlay';\nimport componentStyles from './dialog.css?inline';\n\ntype DialogSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';\ntype DialogBackdrop = 'opaque' | 'blur' | 'transparent';\ntype DialogElevation = 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n\n/** Dialog component properties */\n\nexport type BitDialogEvents = {\n close: undefined;\n open: undefined;\n};\n\nexport type BitDialogProps = {\n /** Backdrop style — 'blur' (default): dark overlay + blur; 'opaque': dark overlay only; 'transparent': no overlay */\n backdrop?: DialogBackdrop;\n /** Show a close (×) button in the header */\n dismissible?: boolean;\n /** Panel shadow elevation — defaults to 'xl' */\n elevation?: DialogElevation;\n /**\n * CSS selector for the element inside the dialog that should receive focus when the dialog opens.\n * Defaults to the first focusable element (browser default).\n * @example 'input[name=\"email\"]' | '#confirm-btn'\n */\n 'initial-focus'?: string;\n /** Dialog title shown in the header (used as aria-label when no header slot) */\n label?: string;\n /** Controls the open state of the dialog */\n open?: boolean;\n /** Internal padding size */\n padding?: PaddingSize;\n /** When true, clicking the backdrop does not close the dialog */\n persistent?: boolean;\n /**\n * When true (default), focus returns to the element that triggered the dialog after it closes.\n * Set to false if you want to manage focus manually.\n */\n 'return-focus'?: boolean;\n /** Border radius */\n rounded?: RoundedSize | '';\n /** Dialog size */\n size?: DialogSize;\n};\n\n/**\n * A modal dialog that traps focus, blocks page interaction, and dismisses on\n * `Escape`. Built on the native `<dialog>` element for correct top-layer stacking\n * and browser-managed accessibility.\n *\n * @element bit-dialog\n *\n * @attr {boolean} open - Open/close the dialog\n * @attr {string} label - Dialog title (also used as aria-label)\n * @attr {string} size - Size: 'sm' | 'md' | 'lg' | 'xl' | 'full'\n * @attr {boolean} dismissible - Show a close (×) button in the header\n * @attr {boolean} persistent - Prevent backdrop-click from closing\n * @attr {string} rounded - Border radius size\n * @attr {string} backdrop - Backdrop style: 'opaque' (default) | 'blur' | 'transparent'\n * @attr {string} elevation - Panel shadow: 'none' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'\n * @attr {string} padding - Padding: 'none' | 'sm' | 'md' | 'lg' | 'xl'\n *\n * @fires open - Fired when the dialog opens\n * @fires close - Fired when the dialog closes (any trigger)\n *\n * @slot - Dialog body content\n * @slot header - Custom header content (replaces the default title + close layout)\n * @slot footer - Action buttons or additional content at the bottom\n *\n * @cssprop --dialog-bg - Panel background color\n * @cssprop --dialog-border-color - Panel border color\n * @cssprop --dialog-radius - Panel border radius\n * @cssprop --dialog-shadow - Panel drop shadow\n * @cssprop --dialog-padding - Padding for header, body, and footer sections\n * @cssprop --dialog-gap - Gap between footer action buttons\n * @cssprop --dialog-backdrop - Backdrop overlay color\n * @cssprop --dialog-max-width - Maximum panel width (overridden by size prop)\n *\n * @example\n * ```html\n * <bit-dialog label=\"Confirm action\" dismissible>\n * <p>Are you sure you want to delete this item?</p>\n * <div slot=\"footer\">\n * <bit-button variant=\"ghost\" id=\"cancel\">Cancel</bit-button>\n * <bit-button color=\"error\" id=\"confirm\">Delete</bit-button>\n * </div>\n * </bit-dialog>\n *\n * <script type=\"module\">\n * import '@vielzeug/buildit/dialog';\n * const dialog = document.querySelector('bit-dialog');\n * document.querySelector('#open-btn').addEventListener('click', () => {\n * dialog.setAttribute('open', '');\n * });\n * document.querySelector('#cancel').addEventListener('click', () => {\n * dialog.removeAttribute('open');\n * });\n * </script>\n * ```\n */\nexport const DIALOG_TAG = defineComponent<BitDialogProps, BitDialogEvents>({\n props: {\n backdrop: { default: undefined },\n dismissible: { default: false },\n elevation: { default: undefined },\n 'initial-focus': { default: undefined },\n label: { default: '' },\n open: { default: false },\n padding: { default: undefined },\n persistent: { default: false },\n 'return-focus': { default: true },\n rounded: { default: undefined },\n size: { default: 'md' },\n },\n setup({ emit, host, props, slots }) {\n const dialogRef = ref<HTMLDialogElement>();\n const hasHeader = computed(() => slots.has('header').value || !!props.label.value || props.dismissible.value);\n const hasFooter = computed(() => slots.has('footer').value);\n const { applyInitialFocus, captureReturnFocus, closeWithAnimation, restoreFocus } = useOverlay(\n host,\n dialogRef,\n () => dialogRef.value?.querySelector<HTMLElement>('.panel'),\n props,\n );\n\n onMount(() => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n // Sync prop changes → native dialog\n watch(\n props.open,\n (open) => {\n if (open) {\n if (!dialog.open) {\n captureReturnFocus();\n dialog.showModal();\n applyInitialFocus();\n lockBackground(host);\n emit('open');\n }\n } else {\n closeWithAnimation();\n }\n },\n { immediate: true },\n );\n\n // Native dialog 'close' fires after animation finishes or on programmatic .close()\n const handleNativeClose = () => {\n unlockBackground();\n // Sync the open prop back to the host attribute if closed externally\n host.removeAttribute('open');\n // Return focus to the triggering element unless opted out\n restoreFocus();\n emit('close');\n };\n // Intercept Escape to play exit animation first; also enforce persistent mode\n const handleKeydown = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n e.preventDefault();\n\n if (!props.persistent.value) {\n closeWithAnimation();\n }\n }\n };\n // Backdrop click: the click target is the <dialog> element itself (not the panel)\n const handleBackdropClick = (e: MouseEvent) => {\n if (props.persistent.value) return;\n\n // When clicking the backdrop, the event target is the <dialog> element itself.\n // Clicks inside the panel bubble up with a more specific target.\n if (e.target === dialog) {\n closeWithAnimation();\n }\n };\n\n handle(dialog, 'close', handleNativeClose);\n handle(dialog, 'click', handleBackdropClick);\n handle(dialog, 'keydown', handleKeydown);\n\n return () => {\n // Ensure the native dialog is closed on unmount to release top-layer\n if (dialog.open) dialog.close();\n\n unlockBackground();\n };\n });\n\n const handleDismiss = () => {\n const dialog = dialogRef.value;\n\n if (!dialog) return;\n\n fire.custom(dialog, 'close-request');\n dialog.classList.add('closing');\n\n const panel = dialog.querySelector<HTMLElement>('.panel');\n const finish = () => {\n dialog.classList.remove('closing');\n dialog.close();\n };\n\n if (panel) {\n awaitExit(panel, finish, 'transition');\n } else {\n finish();\n }\n };\n\n return html`\n <dialog\n ref=${dialogRef}\n class=\"dialog\"\n part=\"dialog\"\n :aria-label=\"${() => props.label.value || null}\"\n aria-modal=\"true\">\n <div class=\"overlay\" part=\"overlay\" aria-hidden=\"true\"></div>\n <div class=\"panel\" part=\"panel\" :data-size=\"${props.size}\">\n <div class=\"header\" part=\"header\" ?hidden=${() => !hasHeader.value}>\n <slot name=\"header\">\n <span class=\"title\" part=\"title\">${() => props.label.value}</span>\n </slot>\n <button\n class=\"close\"\n part=\"close\"\n type=\"button\"\n aria-label=\"Close dialog\"\n ?hidden=${() => !props.dismissible.value}\n @click=${handleDismiss}>\n ${closeIcon}\n </button>\n </div>\n <div class=\"body\" part=\"body\">\n <slot></slot>\n </div>\n <div class=\"footer\" part=\"footer\" ?hidden=${() => !hasFooter.value}>\n <slot name=\"footer\"></slot>\n </div>\n </div>\n </dialog>\n `;\n },\n styles: [elevationMixin, roundedVariantMixin, coarsePointerMixin, reducedMotionMixin, componentStyles],\n tag: 'bit-dialog',\n});\n"],"mappings":";;;;;;;;;;;AA6GA,IAAa,IAAa,EAAiD;CACzE,OAAO;EACL,UAAU,EAAE,SAAS,KAAA,GAAW;EAChC,aAAa,EAAE,SAAS,IAAO;EAC/B,WAAW,EAAE,SAAS,KAAA,GAAW;EACjC,iBAAiB,EAAE,SAAS,KAAA,GAAW;EACvC,OAAO,EAAE,SAAS,IAAI;EACtB,MAAM,EAAE,SAAS,IAAO;EACxB,SAAS,EAAE,SAAS,KAAA,GAAW;EAC/B,YAAY,EAAE,SAAS,IAAO;EAC9B,gBAAgB,EAAE,SAAS,IAAM;EACjC,SAAS,EAAE,SAAS,KAAA,GAAW;EAC/B,MAAM,EAAE,SAAS,MAAM;EACxB;CACD,MAAM,EAAE,SAAM,SAAM,UAAO,YAAS;EAClC,IAAM,IAAY,GAAwB,EACpC,IAAY,QAAe,EAAM,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,EAAM,MAAM,SAAS,EAAM,YAAY,MAAM,EACvG,IAAY,QAAe,EAAM,IAAI,SAAS,CAAC,MAAM,EACrD,EAAE,sBAAmB,uBAAoB,uBAAoB,oBAAiB,EAClF,GACA,SACM,EAAU,OAAO,cAA2B,SAAS,EAC3D,EACD;AAyFD,SAvFA,QAAc;GACZ,IAAM,IAAS,EAAU;AAyDzB,UAvDK,KAGL,EACE,EAAM,OACL,MAAS;AACR,IAAI,IACG,EAAO,SACV,GAAoB,EACpB,EAAO,WAAW,EAClB,GAAmB,EACnB,EAAe,EAAK,EACpB,EAAK,OAAO,IAGd,GAAoB;MAGxB,EAAE,WAAW,IAAM,CACpB,EAgCD,EAAO,GAAQ,eA7BiB;AAM9B,IALA,GAAkB,EAElB,EAAK,gBAAgB,OAAO,EAE5B,GAAc,EACd,EAAK,QAAQ;KAuB2B,EAC1C,EAAO,GAAQ,UAXc,MAAkB;AACzC,MAAM,WAAW,SAIjB,EAAE,WAAW,KACf,GAAoB;KAKoB,EAC5C,EAAO,GAAQ,YAtBQ,MAAqB;AAC1C,IAAI,EAAE,QAAQ,aACZ,EAAE,gBAAgB,EAEb,EAAM,WAAW,SACpB,GAAoB;KAiBc,QAE3B;AAIX,IAFI,EAAO,QAAM,EAAO,OAAO,EAE/B,GAAkB;QA3DP;IA6Db,EAuBK,CAAI;;cAED,EAAU;;;6BAGK,EAAM,MAAM,SAAS,KAAK;;;sDAGD,EAAM,KAAK;4DACL,CAAC,EAAU,MAAM;;uDAEtB,EAAM,MAAM,MAAM;;;;;;;8BAO3C,CAAC,EAAM,YAAY,MAAM;6BAvCvB;GAC1B,IAAM,IAAS,EAAU;AAEzB,OAAI,CAAC,EAAQ;AAGb,GADA,EAAK,OAAO,GAAQ,gBAAgB,EACpC,EAAO,UAAU,IAAI,UAAU;GAE/B,IAAM,IAAQ,EAAO,cAA2B,SAAS,EACnD,UAAe;AAEnB,IADA,EAAO,UAAU,OAAO,UAAU,EAClC,EAAO,OAAO;;AAGhB,GAAI,IACF,EAAU,GAAO,GAAQ,aAAa,GAEtC,GAAQ;IAuBqB;gBACrB,EAAU;;;;;;4DAMkC,CAAC,EAAU,MAAM;;;;;;;CAO3E,QAAQ;EAAC;EAAgB;EAAqB;EAAoB;EAAoB;EAAgB;CACtG,KAAK;CACN,CAAC"}
@@ -0,0 +1,2 @@
1
+ var e=`@layer buildit.base{:host{gap:var(--size-2);flex-direction:column;width:100%;display:flex}::slotted(bit-accordion-item){width:100%}}@layer buildit.variants{:host([variant=bordered]){gap:var(--size-2)}:host([variant=text]){gap:0}:host([variant=text]) ::slotted(bit-accordion-item:not(:last-child)){border-bottom:1px solid var(--color-contrast-200)}:host([variant=solid]),:host([variant=flat]),:host([variant=glass]),:host([variant=frost]){padding:var(--size-2);border-radius:var(--rounded-lg);gap:0}:host([variant=solid]){background:var(--color-contrast-50);border:var(--border) solid var(--color-contrast-200);box-shadow:var(--shadow-xs)}:host([variant=flat]){background:var(--color-contrast-100);border:var(--border) solid var(--color-contrast-200);box-shadow:var(--inset-shadow-xs)}:host([variant=glass]),:host([variant=frost]){box-shadow:var(--shadow-md), var(--inset-shadow-xs);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05);backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05)}:host([variant=glass]){background:color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%)}:host([variant=frost]){background:color-mix(in srgb, var(--color-canvas) 55%, transparent)}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item){border-radius:0}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:first-child){border-radius:var(--rounded-lg) var(--rounded-lg) 0 0}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:last-child){border-radius:0 0 var(--rounded-lg) var(--rounded-lg)}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:only-child){border-radius:var(--rounded-lg)}}`;exports.default=e;
2
+ //# sourceMappingURL=accordion.css?inline.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.css?inline.cjs","names":[],"sources":["../../../src/disclosure/accordion/accordion.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: flex;\n flex-direction: column;\n gap: var(--size-2);\n width: 100%;\n }\n\n ::slotted(bit-accordion-item) {\n width: 100%;\n }\n}\n\n@layer buildit.variants {\n /* ========================================\n Visual Variants\n ======================================== */\n\n /* Bordered variant */\n :host([variant='bordered']) {\n gap: var(--size-2);\n }\n\n /* Text variant - borderless with dividers */\n :host([variant='text']) {\n gap: 0;\n }\n\n :host([variant='text']) ::slotted(bit-accordion-item:not(:last-child)) {\n border-bottom: 1px solid var(--color-contrast-200);\n }\n\n /* Contained variants - grouped appearance */\n :host([variant='solid']),\n :host([variant='flat']),\n :host([variant='glass']),\n :host([variant='frost']) {\n gap: 0;\n padding: var(--size-2);\n border-radius: var(--rounded-lg);\n }\n\n /* Solid variant (default) */\n :host([variant='solid']) {\n background: var(--color-contrast-50);\n border: var(--border) solid var(--color-contrast-200);\n box-shadow: var(--shadow-xs);\n }\n\n /* Flat variant */\n :host([variant='flat']) {\n background: var(--color-contrast-100);\n border: var(--border) solid var(--color-contrast-200);\n box-shadow: var(--inset-shadow-xs);\n }\n\n /* Glass & Frost - Shared styles */\n :host([variant='glass']),\n :host([variant='frost']) {\n box-shadow: var(--shadow-md), var(--inset-shadow-xs);\n backdrop-filter: blur(var(--blur-lg)) saturate(180%) brightness(1.05);\n }\n\n /* Glass variant - translucent with blur */\n :host([variant='glass']) {\n background: color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);\n }\n\n /* Frost variant - canvas-based transparency */\n :host([variant='frost']) {\n background: color-mix(in srgb, var(--color-canvas) 55%, transparent);\n }\n\n /* Nested item border radius for glass and frost variants */\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item) {\n border-radius: 0;\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:first-child) {\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:last-child) {\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:only-child) {\n border-radius: var(--rounded-lg);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/disclosure/accordion/accordion.css?inline
2
+ var e = "@layer buildit.base{:host{gap:var(--size-2);flex-direction:column;width:100%;display:flex}::slotted(bit-accordion-item){width:100%}}@layer buildit.variants{:host([variant=bordered]){gap:var(--size-2)}:host([variant=text]){gap:0}:host([variant=text]) ::slotted(bit-accordion-item:not(:last-child)){border-bottom:1px solid var(--color-contrast-200)}:host([variant=solid]),:host([variant=flat]),:host([variant=glass]),:host([variant=frost]){padding:var(--size-2);border-radius:var(--rounded-lg);gap:0}:host([variant=solid]){background:var(--color-contrast-50);border:var(--border) solid var(--color-contrast-200);box-shadow:var(--shadow-xs)}:host([variant=flat]){background:var(--color-contrast-100);border:var(--border) solid var(--color-contrast-200);box-shadow:var(--inset-shadow-xs)}:host([variant=glass]),:host([variant=frost]){box-shadow:var(--shadow-md), var(--inset-shadow-xs);-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05);backdrop-filter:blur(var(--blur-lg)) saturate(180%) brightness(1.05)}:host([variant=glass]){background:color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%)}:host([variant=frost]){background:color-mix(in srgb, var(--color-canvas) 55%, transparent)}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item){border-radius:0}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:first-child){border-radius:var(--rounded-lg) var(--rounded-lg) 0 0}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:last-child){border-radius:0 0 var(--rounded-lg) var(--rounded-lg)}:host(:is([variant=glass],[variant=frost])) ::slotted(bit-accordion-item:only-child){border-radius:var(--rounded-lg)}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=accordion.css?inline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.css?inline.js","names":[],"sources":["../../../src/disclosure/accordion/accordion.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: flex;\n flex-direction: column;\n gap: var(--size-2);\n width: 100%;\n }\n\n ::slotted(bit-accordion-item) {\n width: 100%;\n }\n}\n\n@layer buildit.variants {\n /* ========================================\n Visual Variants\n ======================================== */\n\n /* Bordered variant */\n :host([variant='bordered']) {\n gap: var(--size-2);\n }\n\n /* Text variant - borderless with dividers */\n :host([variant='text']) {\n gap: 0;\n }\n\n :host([variant='text']) ::slotted(bit-accordion-item:not(:last-child)) {\n border-bottom: 1px solid var(--color-contrast-200);\n }\n\n /* Contained variants - grouped appearance */\n :host([variant='solid']),\n :host([variant='flat']),\n :host([variant='glass']),\n :host([variant='frost']) {\n gap: 0;\n padding: var(--size-2);\n border-radius: var(--rounded-lg);\n }\n\n /* Solid variant (default) */\n :host([variant='solid']) {\n background: var(--color-contrast-50);\n border: var(--border) solid var(--color-contrast-200);\n box-shadow: var(--shadow-xs);\n }\n\n /* Flat variant */\n :host([variant='flat']) {\n background: var(--color-contrast-100);\n border: var(--border) solid var(--color-contrast-200);\n box-shadow: var(--inset-shadow-xs);\n }\n\n /* Glass & Frost - Shared styles */\n :host([variant='glass']),\n :host([variant='frost']) {\n box-shadow: var(--shadow-md), var(--inset-shadow-xs);\n backdrop-filter: blur(var(--blur-lg)) saturate(180%) brightness(1.05);\n }\n\n /* Glass variant - translucent with blur */\n :host([variant='glass']) {\n background: color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);\n }\n\n /* Frost variant - canvas-based transparency */\n :host([variant='frost']) {\n background: color-mix(in srgb, var(--color-canvas) 55%, transparent);\n }\n\n /* Nested item border radius for glass and frost variants */\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item) {\n border-radius: 0;\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:first-child) {\n border-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:last-child) {\n border-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n }\n\n :host(:is([variant='glass'], [variant='frost'])) ::slotted(bit-accordion-item:only-child) {\n border-radius: var(--rounded-lg);\n }\n}\n"],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { type ReadonlySignal } from '@vielzeug/craftit';
2
+ import type { ComponentSize, VisualVariant } from '../../types';
3
+ /** Context provided by bit-accordion to its bit-accordion-item children. */
4
+ export type AccordionContext = {
5
+ notifyExpand: (expandedItem: HTMLElement) => void;
6
+ selectionMode: ReadonlySignal<'single' | 'multiple' | undefined>;
7
+ size: ReadonlySignal<ComponentSize | undefined>;
8
+ variant: ReadonlySignal<VisualVariant | undefined>;
9
+ };
10
+ /** Injection key for the accordion context. */
11
+ export declare const ACCORDION_CTX: import("@vielzeug/craftit").InjectionKey<AccordionContext>;
12
+ /** Accordion component properties */
13
+ export type BitAccordionEvents = {
14
+ change: {
15
+ expandedItem: HTMLElement;
16
+ };
17
+ };
18
+ export type BitAccordionProps = {
19
+ /** Selection mode (single = only one opens, multiple = multiple can be open) */
20
+ selectionMode?: 'single' | 'multiple';
21
+ /** Size for all items (propagated via context) */
22
+ size?: ComponentSize;
23
+ /** Visual variant for all items (propagated via context) */
24
+ variant?: VisualVariant;
25
+ };
26
+ /**
27
+ * A container for accordion items with single or multiple selection modes.
28
+ *
29
+ * @element bit-accordion
30
+ *
31
+ * @attr {string} selection-mode - Selection mode: 'single' | 'multiple'
32
+ * @attr {string} size - Size for all items: 'sm' | 'md' | 'lg' (propagated to children)
33
+ * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'text' | 'glass' | 'frost' (propagated to children)
34
+ *
35
+ * @fires expand - Emitted when an item expands
36
+ * @fires change - Emitted when selection changes (single mode)
37
+ *
38
+ * @slot - Accordion item elements (bit-accordion-item)
39
+ *
40
+ * @example
41
+ * ```html
42
+ * <bit-accordion selection-mode="single"><bit-accordion-item>...</bit-accordion-item></bit-accordion>
43
+ * <bit-accordion variant="frost" size="lg"><bit-accordion-item>...</bit-accordion-item></bit-accordion>
44
+ * ```
45
+ */
46
+ export declare const ACCORDION_TAG: string;
47
+ //# sourceMappingURL=accordion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../../../src/disclosure/accordion/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,cAAc,EACpB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhE,4EAA4E;AAC5E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,CAAC,YAAY,EAAE,WAAW,KAAK,IAAI,CAAC;IAClD,aAAa,EAAE,cAAc,CAAC,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;IACjE,IAAI,EAAE,cAAc,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAChD,OAAO,EAAE,cAAc,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;CACpD,CAAC;AACF,+CAA+C;AAC/C,eAAO,MAAM,aAAa,4DAAsD,CAAC;AAIjF,qCAAqC;AAErC,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE;QAAE,YAAY,EAAE,WAAW,CAAA;KAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gFAAgF;IAChF,aAAa,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IACtC,kDAAkD;IAClD,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,eAAO,MAAM,aAAa,QA4DxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ var e=`@layer buildit.base{:host{color:var(--accordion-item-body-color,var(--text-color-body));--accordion-details-radius:var(--rounded-lg);--accordion-item-transition:var(--transition-normal);display:block}details{border-radius:var(--accordion-item-radius);width:100%;transition:all var(--accordion-item-transition);overflow:hidden}summary{gap:var(--size-4);min-height:var(--_touch-target);padding:var(--accordion-item-details-padding,var(--size-3) var(--size-4));font-size:var(--accordion-item-title);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--accordion-item-bg);border:var(--border) solid var(--accordion-item-border-color);border-radius:var(--accordion-details-radius);transition:all var(--accordion-item-transition);outline:none;align-items:center;list-style:none;display:flex;position:relative}summary::-webkit-details-marker{display:none}summary:focus{outline:none}summary:focus-visible{outline:var(--border-2) solid currentcolor;outline-offset:var(--border-2);box-shadow:0 0 0 3px color-mix(in srgb, currentcolor 20%, transparent)}.header-content{flex-direction:column;flex:1;min-width:0;display:flex}.subtitle{font-size:var(--accordion-item-subtitle-size);line-height:var(--leading-normal);color:var(--accordion-item-subtitle-color,var(--text-color-secondary))}.title{text-overflow:ellipsis;font-weight:var(--font-medium);color:var(--accordion-item-title-color,var(--text-color-heading));white-space:nowrap;overflow:hidden}.content-wrapper{font-size:var(--accordion-item-body);background:var(--accordion-item-bg);border-inline:1px solid var(--accordion-item-border-color);border-bottom:1px solid var(--accordion-item-border-color);border-radius:var(--accordion-summary-radius);transition:grid-template-rows var(--accordion-item-transition);grid-template-rows:0fr;display:grid}details[open] .content-wrapper{grid-template-rows:1fr}.content-inner{padding:var(--accordion-item-summary-padding,var(--size-2) var(--size-4));overflow:hidden}}@layer buildit.variants{:host,:host([variant=solid]){--accordion-item-bg:var(--color-contrast-50);--accordion-item-border-color:transparent}:host summary:hover,:host([variant=solid]) summary:hover{--accordion-item-bg:var(--color-contrast-200)}:host([variant=flat]){--accordion-item-bg:var(--color-contrast-100)}:host([variant=flat]) summary:hover{--accordion-item-bg:var(--color-contrast-200)}:host([variant=bordered]){--accordion-item-bg:var(--color-contrast-100);--accordion-item-border-color:var(--color-contrast-300);box-shadow:var(--inset-shadow-xs), var(--shadow-2xs)}:host([variant=bordered]) summary:hover{background:var(--color-contrast-200)}:host([variant=outline]){--accordion-item-bg:transparent;--accordion-item-border-color:var(--color-contrast-300)}:host([variant=outline]) summary:hover{background:var(--color-contrast-300)}:host([variant=ghost]){--accordion-item-bg:transparent;--accordion-item-border-color:transparent}:host([variant=ghost]) summary:hover{background:var(--color-contrast-200)}:host([variant=text]){--accordion-item-bg:transparent;--accordion-item-border-color:transparent}:host([variant=text]) summary:hover{background:0 0}:host([variant=glass]) details,:host([variant=frost]) details{border-radius:inherit}:host([variant=glass]) summary,:host([variant=frost]) summary{border-radius:inherit;-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%);backdrop-filter:blur(var(--blur-lg)) saturate(180%)}:host([variant=glass]) .content-wrapper,:host([variant=frost]) .content-wrapper{-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%);backdrop-filter:blur(var(--blur-lg)) saturate(180%);border-radius:0}:host([variant=glass]){--accordion-item-bg:color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);--accordion-item-border-color:transparent;--accordion-item-title-color:color-mix(in srgb, var(--color-secondary-contrast) 100%, transparent);--accordion-item-subtitle-color:color-mix(in srgb, var(--color-secondary-contrast) 60%, transparent);--accordion-item-body-color:color-mix(in srgb, var(--color-secondary-contrast) 80%, transparent)}:host([variant=glass]) summary{text-shadow:var(--text-shadow-xs)}:host([variant=glass]) summary:hover{background:color-mix(in srgb, var(--color-secondary) 20%, transparent)}:host([variant=glass]) .content-wrapper{filter:brightness(1.05)}:host([variant=frost]){--accordion-item-bg:color-mix(in srgb, var(--color-canvas) 55%, transparent);--accordion-item-border-color:transparent}:host([variant=frost]) summary{text-shadow:var(--text-shadow-2xs)}:host([variant=frost]) summary:hover{background:color-mix(in srgb, var(--color-canvas) 20%, transparent)}:host([size=sm]){--accordion-item-details-padding:var(--size-2) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-sm);--accordion-item-subtitle-size:var(--text-xs);--accordion-item-body:var(--text-xs)}:host(:not([size])),:host([size=md]){--accordion-item-details-padding:var(--size-3) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-base);--accordion-item-subtitle-size:var(--text-sm);--accordion-item-body:var(--text-sm)}:host([size=lg]){--accordion-item-details-padding:var(--size-4) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-lg);--accordion-item-subtitle-size:var(--text-base);--accordion-item-body:var(--text-base)}:host([disabled]){pointer-events:none;opacity:.6}.chevron{width:var(--size-5);height:var(--size-5);transition:transform var(--accordion-item-transition)}.chevron:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}.chevron:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}details[open] .chevron{transform:rotate(-90deg)}:host([expanded]){--accordion-details-radius:var(--rounded-lg) var(--rounded-lg) 0 0;--accordion-summary-radius:0 0 var(--rounded-lg) var(--rounded-lg)}@media (forced-colors:active){summary{border-color:buttontext}}}`;exports.default=e;
2
+ //# sourceMappingURL=accordion-item.css?inline.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion-item.css?inline.cjs","names":[],"sources":["../../../src/disclosure/accordion-item/accordion-item.css?inline"],"sourcesContent":["@layer buildit.base {\n /* ========================================\n Base Styles & Defaults\n ======================================== */\n\n :host {\n display: block;\n color: var(--accordion-item-body-color, var(--text-color-body));\n\n --accordion-details-radius: var(--rounded-lg);\n --accordion-item-transition: var(--transition-normal);\n }\n\n details {\n width: 100%;\n overflow: hidden;\n border-radius: var(--accordion-item-radius);\n transition: all var(--accordion-item-transition);\n }\n\n summary {\n position: relative;\n display: flex;\n gap: var(--size-4);\n align-items: center;\n min-height: var(--_touch-target);\n padding: var(--accordion-item-details-padding, var(--size-3) var(--size-4));\n font-size: var(--accordion-item-title);\n cursor: pointer;\n user-select: none;\n outline: none;\n list-style: none;\n background: var(--accordion-item-bg);\n border: var(--border) solid var(--accordion-item-border-color);\n border-radius: var(--accordion-details-radius);\n transition: all var(--accordion-item-transition);\n }\n\n summary::-webkit-details-marker {\n display: none;\n }\n\n summary:focus {\n outline: none;\n }\n\n summary:focus-visible {\n outline: var(--border-2) solid currentcolor;\n outline-offset: var(--border-2);\n box-shadow: 0 0 0 3px color-mix(in srgb, currentcolor 20%, transparent);\n }\n\n .header-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n }\n\n .subtitle {\n font-size: var(--accordion-item-subtitle-size);\n line-height: var(--leading-normal);\n color: var(--accordion-item-subtitle-color, var(--text-color-secondary));\n }\n\n .title {\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: var(--font-medium);\n color: var(--accordion-item-title-color, var(--text-color-heading));\n white-space: nowrap;\n }\n\n .content-wrapper {\n display: grid;\n grid-template-rows: 0fr;\n font-size: var(--accordion-item-body);\n background: var(--accordion-item-bg);\n border-inline: 1px solid var(--accordion-item-border-color);\n border-bottom: 1px solid var(--accordion-item-border-color);\n border-radius: var(--accordion-summary-radius);\n transition: grid-template-rows var(--accordion-item-transition);\n }\n\n details[open] .content-wrapper {\n grid-template-rows: 1fr;\n }\n\n .content-inner {\n padding: var(--accordion-item-summary-padding, var(--size-2) var(--size-4));\n overflow: hidden;\n }\n}\n\n@layer buildit.variants {\n /* ========================================\n Visual Variants\n ======================================== */\n\n :host,\n :host([variant='solid']) {\n --accordion-item-bg: var(--color-contrast-50);\n --accordion-item-border-color: transparent;\n }\n\n :host summary:hover,\n :host([variant='solid']) summary:hover {\n --accordion-item-bg: var(--color-contrast-200);\n }\n\n :host([variant='flat']) {\n --accordion-item-bg: var(--color-contrast-100);\n }\n\n :host([variant='flat']) summary:hover {\n --accordion-item-bg: var(--color-contrast-200);\n }\n\n :host([variant='bordered']) {\n --accordion-item-bg: var(--color-contrast-100);\n --accordion-item-border-color: var(--color-contrast-300);\n\n box-shadow: var(--inset-shadow-xs), var(--shadow-2xs);\n }\n\n :host([variant='bordered']) summary:hover {\n background: var(--color-contrast-200);\n }\n\n :host([variant='outline']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: var(--color-contrast-300);\n }\n\n :host([variant='outline']) summary:hover {\n background: var(--color-contrast-300);\n }\n\n :host([variant='ghost']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='ghost']) summary:hover {\n background: var(--color-contrast-200);\n }\n\n :host([variant='text']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='text']) summary:hover {\n background: transparent;\n }\n\n /* Glass & Frost - Shared Styles */\n :host([variant='glass']) details,\n :host([variant='frost']) details {\n border-radius: inherit;\n }\n\n :host([variant='glass']) summary,\n :host([variant='frost']) summary {\n border-radius: inherit;\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n :host([variant='glass']) .content-wrapper,\n :host([variant='frost']) .content-wrapper {\n border-radius: 0;\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n /* Glass */\n :host([variant='glass']) {\n --accordion-item-bg: color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);\n --accordion-item-border-color: transparent;\n --accordion-item-title-color: color-mix(in srgb, var(--color-secondary-contrast) 100%, transparent);\n --accordion-item-subtitle-color: color-mix(in srgb, var(--color-secondary-contrast) 60%, transparent);\n --accordion-item-body-color: color-mix(in srgb, var(--color-secondary-contrast) 80%, transparent);\n }\n\n :host([variant='glass']) summary {\n text-shadow: var(--text-shadow-xs);\n }\n\n :host([variant='glass']) summary:hover {\n background: color-mix(in srgb, var(--color-secondary) 20%, transparent);\n }\n\n :host([variant='glass']) .content-wrapper {\n filter: brightness(1.05);\n }\n\n /* Frost */\n :host([variant='frost']) {\n --accordion-item-bg: color-mix(in srgb, var(--color-canvas) 55%, transparent);\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='frost']) summary {\n text-shadow: var(--text-shadow-2xs);\n }\n\n :host([variant='frost']) summary:hover {\n background: color-mix(in srgb, var(--color-canvas) 20%, transparent);\n }\n\n /* ========================================\n Size Variants\n ======================================== */\n\n :host([size='sm']) {\n --accordion-item-details-padding: var(--size-2) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-sm);\n --accordion-item-subtitle-size: var(--text-xs);\n --accordion-item-body: var(--text-xs);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --accordion-item-details-padding: var(--size-3) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-base);\n --accordion-item-subtitle-size: var(--text-sm);\n --accordion-item-body: var(--text-sm);\n }\n\n :host([size='lg']) {\n --accordion-item-details-padding: var(--size-4) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-lg);\n --accordion-item-subtitle-size: var(--text-base);\n --accordion-item-body: var(--text-base);\n }\n\n /* ========================================\n States\n ======================================== */\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Chevron Animation\n ======================================== */\n\n .chevron {\n width: var(--size-5);\n height: var(--size-5);\n margin-inline-start: auto;\n transition: transform var(--accordion-item-transition);\n }\n\n details[open] .chevron {\n transform: rotate(-90deg);\n }\n\n /* Expanded state - adjust border radius */\n :host([expanded]) {\n --accordion-details-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n --accordion-summary-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n }\n\n @media (forced-colors: active) {\n /* Default variant uses a transparent border — ensure a visible border\n renders in HCM so the summary is distinguishable from the body */\n summary {\n border-color: ButtonText;\n }\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/disclosure/accordion-item/accordion-item.css?inline
2
+ var e = "@layer buildit.base{:host{color:var(--accordion-item-body-color,var(--text-color-body));--accordion-details-radius:var(--rounded-lg);--accordion-item-transition:var(--transition-normal);display:block}details{border-radius:var(--accordion-item-radius);width:100%;transition:all var(--accordion-item-transition);overflow:hidden}summary{gap:var(--size-4);min-height:var(--_touch-target);padding:var(--accordion-item-details-padding,var(--size-3) var(--size-4));font-size:var(--accordion-item-title);cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--accordion-item-bg);border:var(--border) solid var(--accordion-item-border-color);border-radius:var(--accordion-details-radius);transition:all var(--accordion-item-transition);outline:none;align-items:center;list-style:none;display:flex;position:relative}summary::-webkit-details-marker{display:none}summary:focus{outline:none}summary:focus-visible{outline:var(--border-2) solid currentcolor;outline-offset:var(--border-2);box-shadow:0 0 0 3px color-mix(in srgb, currentcolor 20%, transparent)}.header-content{flex-direction:column;flex:1;min-width:0;display:flex}.subtitle{font-size:var(--accordion-item-subtitle-size);line-height:var(--leading-normal);color:var(--accordion-item-subtitle-color,var(--text-color-secondary))}.title{text-overflow:ellipsis;font-weight:var(--font-medium);color:var(--accordion-item-title-color,var(--text-color-heading));white-space:nowrap;overflow:hidden}.content-wrapper{font-size:var(--accordion-item-body);background:var(--accordion-item-bg);border-inline:1px solid var(--accordion-item-border-color);border-bottom:1px solid var(--accordion-item-border-color);border-radius:var(--accordion-summary-radius);transition:grid-template-rows var(--accordion-item-transition);grid-template-rows:0fr;display:grid}details[open] .content-wrapper{grid-template-rows:1fr}.content-inner{padding:var(--accordion-item-summary-padding,var(--size-2) var(--size-4));overflow:hidden}}@layer buildit.variants{:host,:host([variant=solid]){--accordion-item-bg:var(--color-contrast-50);--accordion-item-border-color:transparent}:host summary:hover,:host([variant=solid]) summary:hover{--accordion-item-bg:var(--color-contrast-200)}:host([variant=flat]){--accordion-item-bg:var(--color-contrast-100)}:host([variant=flat]) summary:hover{--accordion-item-bg:var(--color-contrast-200)}:host([variant=bordered]){--accordion-item-bg:var(--color-contrast-100);--accordion-item-border-color:var(--color-contrast-300);box-shadow:var(--inset-shadow-xs), var(--shadow-2xs)}:host([variant=bordered]) summary:hover{background:var(--color-contrast-200)}:host([variant=outline]){--accordion-item-bg:transparent;--accordion-item-border-color:var(--color-contrast-300)}:host([variant=outline]) summary:hover{background:var(--color-contrast-300)}:host([variant=ghost]){--accordion-item-bg:transparent;--accordion-item-border-color:transparent}:host([variant=ghost]) summary:hover{background:var(--color-contrast-200)}:host([variant=text]){--accordion-item-bg:transparent;--accordion-item-border-color:transparent}:host([variant=text]) summary:hover{background:0 0}:host([variant=glass]) details,:host([variant=frost]) details{border-radius:inherit}:host([variant=glass]) summary,:host([variant=frost]) summary{border-radius:inherit;-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%);backdrop-filter:blur(var(--blur-lg)) saturate(180%)}:host([variant=glass]) .content-wrapper,:host([variant=frost]) .content-wrapper{-webkit-backdrop-filter:blur(var(--blur-lg)) saturate(180%);backdrop-filter:blur(var(--blur-lg)) saturate(180%);border-radius:0}:host([variant=glass]){--accordion-item-bg:color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);--accordion-item-border-color:transparent;--accordion-item-title-color:color-mix(in srgb, var(--color-secondary-contrast) 100%, transparent);--accordion-item-subtitle-color:color-mix(in srgb, var(--color-secondary-contrast) 60%, transparent);--accordion-item-body-color:color-mix(in srgb, var(--color-secondary-contrast) 80%, transparent)}:host([variant=glass]) summary{text-shadow:var(--text-shadow-xs)}:host([variant=glass]) summary:hover{background:color-mix(in srgb, var(--color-secondary) 20%, transparent)}:host([variant=glass]) .content-wrapper{filter:brightness(1.05)}:host([variant=frost]){--accordion-item-bg:color-mix(in srgb, var(--color-canvas) 55%, transparent);--accordion-item-border-color:transparent}:host([variant=frost]) summary{text-shadow:var(--text-shadow-2xs)}:host([variant=frost]) summary:hover{background:color-mix(in srgb, var(--color-canvas) 20%, transparent)}:host([size=sm]){--accordion-item-details-padding:var(--size-2) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-sm);--accordion-item-subtitle-size:var(--text-xs);--accordion-item-body:var(--text-xs)}:host(:not([size])),:host([size=md]){--accordion-item-details-padding:var(--size-3) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-base);--accordion-item-subtitle-size:var(--text-sm);--accordion-item-body:var(--text-sm)}:host([size=lg]){--accordion-item-details-padding:var(--size-4) var(--size-4);--accordion-item-summary-padding:var(--size-1) var(--size-5);--accordion-item-title:var(--text-lg);--accordion-item-subtitle-size:var(--text-base);--accordion-item-body:var(--text-base)}:host([disabled]){pointer-events:none;opacity:.6}.chevron{width:var(--size-5);height:var(--size-5);transition:transform var(--accordion-item-transition)}.chevron:not(:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi))){margin-left:auto}.chevron:is(:lang(ae),:lang(ar),:lang(arc),:lang(bcc),:lang(bqi),:lang(ckb),:lang(dv),:lang(fa),:lang(glk),:lang(he),:lang(ku),:lang(mzn),:lang(nqo),:lang(pnb),:lang(ps),:lang(sd),:lang(ug),:lang(ur),:lang(yi)){margin-right:auto}details[open] .chevron{transform:rotate(-90deg)}:host([expanded]){--accordion-details-radius:var(--rounded-lg) var(--rounded-lg) 0 0;--accordion-summary-radius:0 0 var(--rounded-lg) var(--rounded-lg)}@media (forced-colors:active){summary{border-color:buttontext}}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=accordion-item.css?inline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion-item.css?inline.js","names":[],"sources":["../../../src/disclosure/accordion-item/accordion-item.css?inline"],"sourcesContent":["@layer buildit.base {\n /* ========================================\n Base Styles & Defaults\n ======================================== */\n\n :host {\n display: block;\n color: var(--accordion-item-body-color, var(--text-color-body));\n\n --accordion-details-radius: var(--rounded-lg);\n --accordion-item-transition: var(--transition-normal);\n }\n\n details {\n width: 100%;\n overflow: hidden;\n border-radius: var(--accordion-item-radius);\n transition: all var(--accordion-item-transition);\n }\n\n summary {\n position: relative;\n display: flex;\n gap: var(--size-4);\n align-items: center;\n min-height: var(--_touch-target);\n padding: var(--accordion-item-details-padding, var(--size-3) var(--size-4));\n font-size: var(--accordion-item-title);\n cursor: pointer;\n user-select: none;\n outline: none;\n list-style: none;\n background: var(--accordion-item-bg);\n border: var(--border) solid var(--accordion-item-border-color);\n border-radius: var(--accordion-details-radius);\n transition: all var(--accordion-item-transition);\n }\n\n summary::-webkit-details-marker {\n display: none;\n }\n\n summary:focus {\n outline: none;\n }\n\n summary:focus-visible {\n outline: var(--border-2) solid currentcolor;\n outline-offset: var(--border-2);\n box-shadow: 0 0 0 3px color-mix(in srgb, currentcolor 20%, transparent);\n }\n\n .header-content {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-width: 0;\n }\n\n .subtitle {\n font-size: var(--accordion-item-subtitle-size);\n line-height: var(--leading-normal);\n color: var(--accordion-item-subtitle-color, var(--text-color-secondary));\n }\n\n .title {\n overflow: hidden;\n text-overflow: ellipsis;\n font-weight: var(--font-medium);\n color: var(--accordion-item-title-color, var(--text-color-heading));\n white-space: nowrap;\n }\n\n .content-wrapper {\n display: grid;\n grid-template-rows: 0fr;\n font-size: var(--accordion-item-body);\n background: var(--accordion-item-bg);\n border-inline: 1px solid var(--accordion-item-border-color);\n border-bottom: 1px solid var(--accordion-item-border-color);\n border-radius: var(--accordion-summary-radius);\n transition: grid-template-rows var(--accordion-item-transition);\n }\n\n details[open] .content-wrapper {\n grid-template-rows: 1fr;\n }\n\n .content-inner {\n padding: var(--accordion-item-summary-padding, var(--size-2) var(--size-4));\n overflow: hidden;\n }\n}\n\n@layer buildit.variants {\n /* ========================================\n Visual Variants\n ======================================== */\n\n :host,\n :host([variant='solid']) {\n --accordion-item-bg: var(--color-contrast-50);\n --accordion-item-border-color: transparent;\n }\n\n :host summary:hover,\n :host([variant='solid']) summary:hover {\n --accordion-item-bg: var(--color-contrast-200);\n }\n\n :host([variant='flat']) {\n --accordion-item-bg: var(--color-contrast-100);\n }\n\n :host([variant='flat']) summary:hover {\n --accordion-item-bg: var(--color-contrast-200);\n }\n\n :host([variant='bordered']) {\n --accordion-item-bg: var(--color-contrast-100);\n --accordion-item-border-color: var(--color-contrast-300);\n\n box-shadow: var(--inset-shadow-xs), var(--shadow-2xs);\n }\n\n :host([variant='bordered']) summary:hover {\n background: var(--color-contrast-200);\n }\n\n :host([variant='outline']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: var(--color-contrast-300);\n }\n\n :host([variant='outline']) summary:hover {\n background: var(--color-contrast-300);\n }\n\n :host([variant='ghost']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='ghost']) summary:hover {\n background: var(--color-contrast-200);\n }\n\n :host([variant='text']) {\n --accordion-item-bg: transparent;\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='text']) summary:hover {\n background: transparent;\n }\n\n /* Glass & Frost - Shared Styles */\n :host([variant='glass']) details,\n :host([variant='frost']) details {\n border-radius: inherit;\n }\n\n :host([variant='glass']) summary,\n :host([variant='frost']) summary {\n border-radius: inherit;\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n :host([variant='glass']) .content-wrapper,\n :host([variant='frost']) .content-wrapper {\n border-radius: 0;\n backdrop-filter: blur(var(--blur-lg)) saturate(180%);\n }\n\n /* Glass */\n :host([variant='glass']) {\n --accordion-item-bg: color-mix(in srgb, var(--color-secondary) 30%, var(--color-contrast) 10%);\n --accordion-item-border-color: transparent;\n --accordion-item-title-color: color-mix(in srgb, var(--color-secondary-contrast) 100%, transparent);\n --accordion-item-subtitle-color: color-mix(in srgb, var(--color-secondary-contrast) 60%, transparent);\n --accordion-item-body-color: color-mix(in srgb, var(--color-secondary-contrast) 80%, transparent);\n }\n\n :host([variant='glass']) summary {\n text-shadow: var(--text-shadow-xs);\n }\n\n :host([variant='glass']) summary:hover {\n background: color-mix(in srgb, var(--color-secondary) 20%, transparent);\n }\n\n :host([variant='glass']) .content-wrapper {\n filter: brightness(1.05);\n }\n\n /* Frost */\n :host([variant='frost']) {\n --accordion-item-bg: color-mix(in srgb, var(--color-canvas) 55%, transparent);\n --accordion-item-border-color: transparent;\n }\n\n :host([variant='frost']) summary {\n text-shadow: var(--text-shadow-2xs);\n }\n\n :host([variant='frost']) summary:hover {\n background: color-mix(in srgb, var(--color-canvas) 20%, transparent);\n }\n\n /* ========================================\n Size Variants\n ======================================== */\n\n :host([size='sm']) {\n --accordion-item-details-padding: var(--size-2) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-sm);\n --accordion-item-subtitle-size: var(--text-xs);\n --accordion-item-body: var(--text-xs);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --accordion-item-details-padding: var(--size-3) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-base);\n --accordion-item-subtitle-size: var(--text-sm);\n --accordion-item-body: var(--text-sm);\n }\n\n :host([size='lg']) {\n --accordion-item-details-padding: var(--size-4) var(--size-4);\n --accordion-item-summary-padding: var(--size-1) var(--size-5);\n --accordion-item-title: var(--text-lg);\n --accordion-item-subtitle-size: var(--text-base);\n --accordion-item-body: var(--text-base);\n }\n\n /* ========================================\n States\n ======================================== */\n\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.6;\n }\n\n /* ========================================\n Chevron Animation\n ======================================== */\n\n .chevron {\n width: var(--size-5);\n height: var(--size-5);\n margin-inline-start: auto;\n transition: transform var(--accordion-item-transition);\n }\n\n details[open] .chevron {\n transform: rotate(-90deg);\n }\n\n /* Expanded state - adjust border radius */\n :host([expanded]) {\n --accordion-details-radius: var(--rounded-lg) var(--rounded-lg) 0 0;\n --accordion-summary-radius: 0 0 var(--rounded-lg) var(--rounded-lg);\n }\n\n @media (forced-colors: active) {\n /* Default variant uses a transparent border — ensure a visible border\n renders in HCM so the summary is distinguishable from the body */\n summary {\n border-color: ButtonText;\n }\n }\n}\n"],"mappings":""}
@@ -0,0 +1,62 @@
1
+ import type { ComponentSize, VisualVariant } from '../../types';
2
+ /** Accordion item component properties */
3
+ export type BitAccordionItemEvents = {
4
+ collapse: {
5
+ expanded: boolean;
6
+ item: HTMLElement;
7
+ };
8
+ expand: {
9
+ expanded: boolean;
10
+ item: HTMLElement;
11
+ };
12
+ };
13
+ export type BitAccordionItemProps = {
14
+ /** Disable accordion item interaction */
15
+ disabled?: boolean;
16
+ /** Whether the item is expanded/open */
17
+ expanded?: boolean;
18
+ /** Item size */
19
+ size?: ComponentSize;
20
+ /** Visual style variant */
21
+ variant?: VisualVariant;
22
+ };
23
+ /**
24
+ * An individual accordion item with expand/collapse functionality using native details/summary.
25
+ *
26
+ * @element bit-accordion-item
27
+ *
28
+ * @attr {boolean} expanded - Whether the item is expanded/open
29
+ * @attr {boolean} disabled - Disable accordion item interaction
30
+ * @attr {string} size - Item size: 'sm' | 'md' | 'lg'
31
+ * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'outline' | 'ghost' | 'text' | 'glass' | 'frost'
32
+ *
33
+ * @fires expand - Emitted when item expands
34
+ * @fires collapse - Emitted when item collapses
35
+ *
36
+ * @slot prefix - Content before the title (e.g., icons)
37
+ * @slot title - Main accordion item title
38
+ * @slot subtitle - Optional subtitle text
39
+ * @slot suffix - Content after the title (e.g., badges)
40
+ * @slot - Accordion item content (shown when expanded)
41
+ *
42
+ * @cssprop --accordion-item-bg - Background color
43
+ * @cssprop --accordion-item-border-color - Border color
44
+ * @cssprop --accordion-item-title-color - Title text color
45
+ * @cssprop --accordion-item-subtitle-color - Subtitle text color
46
+ * @cssprop --accordion-item-body-color - Body text color
47
+ * @cssprop --accordion-item-radius - Border radius
48
+ * @cssprop --accordion-item-transition - Transition duration
49
+ * @cssprop --accordion-item-title - Title font size
50
+ * @cssprop --accordion-item-subtitle-size - Subtitle font size
51
+ * @cssprop --accordion-item-body - Body font size
52
+ * @cssprop --accordion-item-details-padding - Summary/header padding
53
+ * @cssprop --accordion-item-summary-padding - Content padding
54
+ *
55
+ * @example
56
+ * ```html
57
+ * <bit-accordion-item><span slot="title">Click to expand</span><p>Content</p></bit-accordion-item>
58
+ * <bit-accordion-item expanded variant="bordered"><span slot="title">Title</span><p>Content</p></bit-accordion-item>
59
+ * ```
60
+ */
61
+ export declare const ACCORDION_ITEM_TAG: string;
62
+ //# sourceMappingURL=accordion-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion-item.d.ts","sourceRoot":"","sources":["../../../src/disclosure/accordion-item/accordion-item.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMhE,0CAA0C;AAE1C,MAAM,MAAM,sBAAsB,GAAG;IACnC,QAAQ,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;IACnD,MAAM,EAAE;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,yCAAyC;IACzC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB;IAChB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,eAAO,MAAM,kBAAkB,QAsF7B,CAAC"}
@@ -0,0 +1 @@
1
+ require(`../accordion.cjs`),require(`../tabs.cjs`),require(`../accordion-item.cjs`),require(`../tab-item.cjs`),require(`../tab-panel.cjs`);
@@ -0,0 +1,11 @@
1
+ export { ACCORDION_CTX, ACCORDION_TAG } from './accordion/accordion';
2
+ export type { AccordionContext, BitAccordionEvents, BitAccordionProps } from './accordion/accordion';
3
+ export { TABS_CTX, TABS_TAG } from './tabs/tabs';
4
+ export type { BitTabsEvents, BitTabsProps, TabsContext } from './tabs/tabs';
5
+ export { ACCORDION_ITEM_TAG } from './accordion-item/accordion-item';
6
+ export type { BitAccordionItemEvents, BitAccordionItemProps } from './accordion-item/accordion-item';
7
+ export { TAB_ITEM_TAG } from './tab-item/tab-item';
8
+ export type { BitTabItemProps } from './tab-item/tab-item';
9
+ export { TAB_PANEL_TAG } from './tab-panel/tab-panel';
10
+ export type { BitTabPanelProps } from './tab-panel/tab-panel';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/disclosure/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,YAAY,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import "../accordion.js";
2
+ import "../tabs.js";
3
+ import "../accordion-item.js";
4
+ import "../tab-item.js";
5
+ import "../tab-panel.js";
@@ -0,0 +1,2 @@
1
+ var e=`@layer buildit.base{:host{--tab-item-transition:var(--transition-normal);--tab-item-radius:var(--rounded-lg);outline:none;display:inline-flex}button{gap:var(--size-2);width:100%;min-height:var(--_touch-target);padding:var(--tab-item-padding,var(--size-1-5) var(--size-4));font-family:inherit;font-size:var(--tab-item-font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--tab-item-color,var(--text-color-secondary));white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--tab-item-radius);transition:background var(--tab-item-transition), color var(--tab-item-transition), box-shadow var(--tab-item-transition);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex;position:relative}button:focus{outline:none}:host(:focus-visible) button,button:focus-visible{outline:var(--border-2) solid var(--_theme-focus);outline-offset:2px;box-shadow:0 0 0 3px var(--_theme-shadow)}}@layer buildit.variants{:host button:hover,:host([variant=solid]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([active]) button,:host([variant=solid][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=flat]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([variant=flat][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=bordered]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([variant=bordered][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs)}:host([variant=ghost]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-100)}:host([variant=ghost][active]) button{color:var(--_theme-contrast);background:var(--_theme-base)}:host([variant=glass]) button{color:color-mix(in srgb, var(--color-secondary-contrast) 70%, transparent);text-shadow:var(--text-shadow-2xs)}:host([variant=glass]) button:hover{color:var(--color-secondary-contrast);background:color-mix(in srgb, var(--color-secondary-contrast) 10%, transparent)}:host([variant=glass][active]) button{color:var(--color-secondary-contrast);background:color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent);box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=frost]) button{color:var(--text-color-secondary)}:host([variant=frost]) button:hover{color:var(--text-color-heading);background:color-mix(in srgb, var(--color-contrast) 10%, transparent)}:host([variant=frost][active]) button{color:var(--text-color-heading);background:color-mix(in srgb, var(--color-canvas) 60%, transparent);box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([size=sm]){--tab-item-font-size:var(--text-xs);--tab-item-padding:var(--size-1) var(--size-3)}:host(:not([size])),:host([size=md]){--tab-item-font-size:var(--text-sm);--tab-item-padding:var(--size-1-5) var(--size-4)}:host([size=lg]){--tab-item-font-size:var(--text-base);--tab-item-padding:var(--size-2) var(--size-5)}:host([disabled]){pointer-events:none;opacity:.5}@media (forced-colors:active){button:focus-visible{box-shadow:none;outline:2px solid highlight}:host([active]) button{outline-offset:-2px;outline:2px solid highlight}}}`;exports.default=e;
2
+ //# sourceMappingURL=tab-item.css?inline.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-item.css?inline.cjs","names":[],"sources":["../../../src/disclosure/tab-item/tab-item.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: inline-flex;\n outline: none;\n\n --tab-item-transition: var(--transition-normal);\n --tab-item-radius: var(--rounded-lg);\n }\n\n button {\n position: relative;\n display: inline-flex;\n gap: var(--size-2);\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: var(--_touch-target);\n padding: var(--tab-item-padding, var(--size-1-5) var(--size-4));\n font-family: inherit;\n font-size: var(--tab-item-font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--tab-item-color, var(--text-color-secondary));\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n background: transparent;\n border: none;\n border-radius: var(--tab-item-radius);\n transition:\n background var(--tab-item-transition),\n color var(--tab-item-transition),\n box-shadow var(--tab-item-transition);\n }\n\n button:focus {\n outline: none;\n }\n\n :host(:focus-visible) button,\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-focus);\n outline-offset: 2px;\n box-shadow: 0 0 0 3px var(--_theme-shadow);\n }\n}\n\n@layer buildit.variants {\n /* ─── solid / default ─── */\n :host button:hover,\n :host([variant='solid']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([active]) button,\n :host([variant='solid'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── flat ─── */\n :host([variant='flat']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([variant='flat'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── bordered ─── */\n :host([variant='bordered']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([variant='bordered'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs);\n }\n\n /* ─── ghost ─── */\n :host([variant='ghost']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-100);\n }\n\n :host([variant='ghost'][active]) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n }\n\n /* ─── glass ─── */\n :host([variant='glass']) button {\n color: color-mix(in srgb, var(--color-secondary-contrast) 70%, transparent);\n text-shadow: var(--text-shadow-2xs);\n }\n\n :host([variant='glass']) button:hover {\n color: var(--color-secondary-contrast);\n background: color-mix(in srgb, var(--color-secondary-contrast) 10%, transparent);\n }\n\n :host([variant='glass'][active]) button {\n color: var(--color-secondary-contrast);\n background: color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent);\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── frost ─── */\n :host([variant='frost']) button {\n color: var(--text-color-secondary);\n }\n\n :host([variant='frost']) button:hover {\n color: var(--text-color-heading);\n background: color-mix(in srgb, var(--color-contrast) 10%, transparent);\n }\n\n :host([variant='frost'][active]) button {\n color: var(--text-color-heading);\n background: color-mix(in srgb, var(--color-canvas) 60%, transparent);\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── sizes ─── */\n :host([size='sm']) {\n --tab-item-font-size: var(--text-xs);\n --tab-item-padding: var(--size-1) var(--size-3);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --tab-item-font-size: var(--text-sm);\n --tab-item-padding: var(--size-1-5) var(--size-4);\n }\n\n :host([size='lg']) {\n --tab-item-font-size: var(--text-base);\n --tab-item-padding: var(--size-2) var(--size-5);\n }\n\n /* ─── disabled ─── */\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.5;\n }\n\n @media (forced-colors: active) {\n /* Ensure focus ring is visible regardless of variant theme color */\n button:focus-visible {\n outline: 2px solid Highlight;\n box-shadow: none;\n }\n\n /* Active tab: box-shadow raised indicator is stripped; use outline inste\n ad so the selected tab remains distinguishable */\n :host([active]) button {\n outline: 2px solid Highlight;\n outline-offset: -2px;\n }\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/disclosure/tab-item/tab-item.css?inline
2
+ var e = "@layer buildit.base{:host{--tab-item-transition:var(--transition-normal);--tab-item-radius:var(--rounded-lg);outline:none;display:inline-flex}button{gap:var(--size-2);width:100%;min-height:var(--_touch-target);padding:var(--tab-item-padding,var(--size-1-5) var(--size-4));font-family:inherit;font-size:var(--tab-item-font-size,var(--text-sm));font-weight:var(--font-medium);color:var(--tab-item-color,var(--text-color-secondary));white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:var(--tab-item-radius);transition:background var(--tab-item-transition), color var(--tab-item-transition), box-shadow var(--tab-item-transition);background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex;position:relative}button:focus{outline:none}:host(:focus-visible) button,button:focus-visible{outline:var(--border-2) solid var(--_theme-focus);outline-offset:2px;box-shadow:0 0 0 3px var(--_theme-shadow)}}@layer buildit.variants{:host button:hover,:host([variant=solid]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([active]) button,:host([variant=solid][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=flat]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([variant=flat][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=bordered]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-200)}:host([variant=bordered][active]) button{color:var(--text-color-heading);background:var(--color-contrast-0,var(--color-canvas));box-shadow:var(--shadow-xs)}:host([variant=ghost]) button:hover{color:var(--text-color-heading);background:var(--color-contrast-100)}:host([variant=ghost][active]) button{color:var(--_theme-contrast);background:var(--_theme-base)}:host([variant=glass]) button{color:color-mix(in srgb, var(--color-secondary-contrast) 70%, transparent);text-shadow:var(--text-shadow-2xs)}:host([variant=glass]) button:hover{color:var(--color-secondary-contrast);background:color-mix(in srgb, var(--color-secondary-contrast) 10%, transparent)}:host([variant=glass][active]) button{color:var(--color-secondary-contrast);background:color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent);box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([variant=frost]) button{color:var(--text-color-secondary)}:host([variant=frost]) button:hover{color:var(--text-color-heading);background:color-mix(in srgb, var(--color-contrast) 10%, transparent)}:host([variant=frost][active]) button{color:var(--text-color-heading);background:color-mix(in srgb, var(--color-canvas) 60%, transparent);box-shadow:var(--shadow-xs), var(--inset-shadow-xs)}:host([size=sm]){--tab-item-font-size:var(--text-xs);--tab-item-padding:var(--size-1) var(--size-3)}:host(:not([size])),:host([size=md]){--tab-item-font-size:var(--text-sm);--tab-item-padding:var(--size-1-5) var(--size-4)}:host([size=lg]){--tab-item-font-size:var(--text-base);--tab-item-padding:var(--size-2) var(--size-5)}:host([disabled]){pointer-events:none;opacity:.5}@media (forced-colors:active){button:focus-visible{box-shadow:none;outline:2px solid highlight}:host([active]) button{outline-offset:-2px;outline:2px solid highlight}}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=tab-item.css?inline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-item.css?inline.js","names":[],"sources":["../../../src/disclosure/tab-item/tab-item.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: inline-flex;\n outline: none;\n\n --tab-item-transition: var(--transition-normal);\n --tab-item-radius: var(--rounded-lg);\n }\n\n button {\n position: relative;\n display: inline-flex;\n gap: var(--size-2);\n align-items: center;\n justify-content: center;\n width: 100%;\n min-height: var(--_touch-target);\n padding: var(--tab-item-padding, var(--size-1-5) var(--size-4));\n font-family: inherit;\n font-size: var(--tab-item-font-size, var(--text-sm));\n font-weight: var(--font-medium);\n color: var(--tab-item-color, var(--text-color-secondary));\n white-space: nowrap;\n cursor: pointer;\n user-select: none;\n background: transparent;\n border: none;\n border-radius: var(--tab-item-radius);\n transition:\n background var(--tab-item-transition),\n color var(--tab-item-transition),\n box-shadow var(--tab-item-transition);\n }\n\n button:focus {\n outline: none;\n }\n\n :host(:focus-visible) button,\n button:focus-visible {\n outline: var(--border-2) solid var(--_theme-focus);\n outline-offset: 2px;\n box-shadow: 0 0 0 3px var(--_theme-shadow);\n }\n}\n\n@layer buildit.variants {\n /* ─── solid / default ─── */\n :host button:hover,\n :host([variant='solid']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([active]) button,\n :host([variant='solid'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── flat ─── */\n :host([variant='flat']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([variant='flat'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── bordered ─── */\n :host([variant='bordered']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-200);\n }\n\n :host([variant='bordered'][active]) button {\n color: var(--text-color-heading);\n background: var(--color-contrast-0, var(--color-canvas));\n box-shadow: var(--shadow-xs);\n }\n\n /* ─── ghost ─── */\n :host([variant='ghost']) button:hover {\n color: var(--text-color-heading);\n background: var(--color-contrast-100);\n }\n\n :host([variant='ghost'][active]) button {\n color: var(--_theme-contrast);\n background: var(--_theme-base);\n }\n\n /* ─── glass ─── */\n :host([variant='glass']) button {\n color: color-mix(in srgb, var(--color-secondary-contrast) 70%, transparent);\n text-shadow: var(--text-shadow-2xs);\n }\n\n :host([variant='glass']) button:hover {\n color: var(--color-secondary-contrast);\n background: color-mix(in srgb, var(--color-secondary-contrast) 10%, transparent);\n }\n\n :host([variant='glass'][active]) button {\n color: var(--color-secondary-contrast);\n background: color-mix(in srgb, var(--color-secondary-contrast) 15%, transparent);\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── frost ─── */\n :host([variant='frost']) button {\n color: var(--text-color-secondary);\n }\n\n :host([variant='frost']) button:hover {\n color: var(--text-color-heading);\n background: color-mix(in srgb, var(--color-contrast) 10%, transparent);\n }\n\n :host([variant='frost'][active]) button {\n color: var(--text-color-heading);\n background: color-mix(in srgb, var(--color-canvas) 60%, transparent);\n box-shadow: var(--shadow-xs), var(--inset-shadow-xs);\n }\n\n /* ─── sizes ─── */\n :host([size='sm']) {\n --tab-item-font-size: var(--text-xs);\n --tab-item-padding: var(--size-1) var(--size-3);\n }\n\n :host(:not([size])),\n :host([size='md']) {\n --tab-item-font-size: var(--text-sm);\n --tab-item-padding: var(--size-1-5) var(--size-4);\n }\n\n :host([size='lg']) {\n --tab-item-font-size: var(--text-base);\n --tab-item-padding: var(--size-2) var(--size-5);\n }\n\n /* ─── disabled ─── */\n :host([disabled]) {\n pointer-events: none;\n opacity: 0.5;\n }\n\n @media (forced-colors: active) {\n /* Ensure focus ring is visible regardless of variant theme color */\n button:focus-visible {\n outline: 2px solid Highlight;\n box-shadow: none;\n }\n\n /* Active tab: box-shadow raised indicator is stripped; use outline inste\n ad so the selected tab remains distinguishable */\n :host([active]) button {\n outline: 2px solid Highlight;\n outline-offset: -2px;\n }\n }\n}\n"],"mappings":""}
@@ -0,0 +1,39 @@
1
+ import type { ComponentSize, ThemeColor, VisualVariant } from '../../types';
2
+ export type BitTabItemProps = {
3
+ /** Whether this tab is currently selected (set by bit-tabs) */
4
+ active?: boolean;
5
+ /** Theme color (inherited from bit-tabs) */
6
+ color?: ThemeColor;
7
+ /** Disable this tab */
8
+ disabled?: boolean;
9
+ /** Size (inherited from bit-tabs) */
10
+ size?: ComponentSize;
11
+ /** Unique value identifier — must match a bit-tab-panel value */
12
+ value: string;
13
+ /** Visual variant (inherited from bit-tabs) */
14
+ variant?: VisualVariant;
15
+ };
16
+ /**
17
+ * Individual tab trigger. Must be placed in the `tabs` slot of `bit-tabs`.
18
+ *
19
+ * @element bit-tab-item
20
+ *
21
+ * @attr {string} value - Unique identifier, matches the corresponding bit-tab-panel value
22
+ * @attr {boolean} active - Set by the parent bit-tabs when this tab is selected
23
+ * @attr {boolean} disabled - Prevents selection
24
+ * @attr {string} size - 'sm' | 'md' | 'lg'
25
+ * @attr {string} variant - Inherited from bit-tabs
26
+ * @attr {string} color - Inherited from bit-tabs: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'
27
+ *
28
+ * @slot prefix - Icon or content before the label
29
+ * @slot - Tab label
30
+ * @slot suffix - Badge or count after the label
31
+ *
32
+ * @example
33
+ * ```html
34
+ * <bit-tab-item slot="tabs" value="overview">Overview</bit-tab-item>
35
+ * <bit-tab-item slot="tabs" value="settings" disabled>Settings</bit-tab-item>
36
+ * ```
37
+ */
38
+ export declare const TAB_ITEM_TAG: string;
39
+ //# sourceMappingURL=tab-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-item.d.ts","sourceRoot":"","sources":["../../../src/disclosure/tab-item/tab-item.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5E,MAAM,MAAM,eAAe,GAAG;IAC5B,+DAA+D;IAC/D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qCAAqC;IACrC,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,OAAO,CAAC,EAAE,aAAa,CAAC;CACzB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,YAAY,QAmDvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ var e=`@layer buildit.base{:host{width:100%;display:none}:host([active]){flex-direction:column;flex:1;min-height:0;display:flex}.panel{box-sizing:border-box;height:100%;min-height:0;padding:var(--tab-panel-padding,var(--size-4));font-size:var(--tab-panel-font-size,var(--text-sm));color:var(--text-color-body);animation:var(--_motion-animation,tab-panel-in var(--transition-normal) var(--ease-out) both);flex:1;overflow:auto}}@layer buildit.variants{@keyframes tab-panel-in{0%{opacity:0;translate:0 4px}to{opacity:1;translate:0}}}`;exports.default=e;
2
+ //# sourceMappingURL=tab-panel.css?inline.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-panel.css?inline.cjs","names":[],"sources":["../../../src/disclosure/tab-panel/tab-panel.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: none;\n width: 100%;\n }\n\n :host([active]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .panel {\n box-sizing: border-box;\n flex: 1;\n height: 100%;\n min-height: 0;\n padding: var(--tab-panel-padding, var(--size-4));\n overflow: auto;\n font-size: var(--tab-panel-font-size, var(--text-sm));\n color: var(--text-color-body);\n animation: var(--_motion-animation, tab-panel-in var(--transition-normal) var(--ease-out) both);\n }\n}\n\n@layer buildit.variants {\n @keyframes tab-panel-in {\n from {\n opacity: 0;\n translate: 0 4px;\n }\n\n to {\n opacity: 1;\n translate: 0 0;\n }\n }\n}\n"],"mappings":""}
@@ -0,0 +1,6 @@
1
+ //#region src/disclosure/tab-panel/tab-panel.css?inline
2
+ var e = "@layer buildit.base{:host{width:100%;display:none}:host([active]){flex-direction:column;flex:1;min-height:0;display:flex}.panel{box-sizing:border-box;height:100%;min-height:0;padding:var(--tab-panel-padding,var(--size-4));font-size:var(--tab-panel-font-size,var(--text-sm));color:var(--text-color-body);animation:var(--_motion-animation,tab-panel-in var(--transition-normal) var(--ease-out) both);flex:1;overflow:auto}}@layer buildit.variants{@keyframes tab-panel-in{0%{opacity:0;translate:0 4px}to{opacity:1;translate:0}}}";
3
+ //#endregion
4
+ export { e as default };
5
+
6
+ //# sourceMappingURL=tab-panel.css?inline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tab-panel.css?inline.js","names":[],"sources":["../../../src/disclosure/tab-panel/tab-panel.css?inline"],"sourcesContent":["@layer buildit.base {\n :host {\n display: none;\n width: 100%;\n }\n\n :host([active]) {\n display: flex;\n flex: 1;\n flex-direction: column;\n min-height: 0;\n }\n\n .panel {\n box-sizing: border-box;\n flex: 1;\n height: 100%;\n min-height: 0;\n padding: var(--tab-panel-padding, var(--size-4));\n overflow: auto;\n font-size: var(--tab-panel-font-size, var(--text-sm));\n color: var(--text-color-body);\n animation: var(--_motion-animation, tab-panel-in var(--transition-normal) var(--ease-out) both);\n }\n}\n\n@layer buildit.variants {\n @keyframes tab-panel-in {\n from {\n opacity: 0;\n translate: 0 4px;\n }\n\n to {\n opacity: 1;\n translate: 0 0;\n }\n }\n}\n"],"mappings":""}