@vielzeug/refine 1.1.1

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 (1097) hide show
  1. package/README.md +89 -0
  2. package/dist/_dev.cjs +2 -0
  3. package/dist/_dev.cjs.map +1 -0
  4. package/dist/_dev.d.ts +2 -0
  5. package/dist/_dev.d.ts.map +1 -0
  6. package/dist/_dev.js +9 -0
  7. package/dist/_dev.js.map +1 -0
  8. package/dist/_virtual/_rolldown/runtime.cjs +1 -0
  9. package/dist/accordion-item.cjs +26 -0
  10. package/dist/accordion-item.cjs.map +1 -0
  11. package/dist/accordion-item.js +124 -0
  12. package/dist/accordion-item.js.map +1 -0
  13. package/dist/accordion.cjs +2 -0
  14. package/dist/accordion.cjs.map +1 -0
  15. package/dist/accordion.js +47 -0
  16. package/dist/accordion.js.map +1 -0
  17. package/dist/alert.cjs +36 -0
  18. package/dist/alert.cjs.map +1 -0
  19. package/dist/alert.js +93 -0
  20. package/dist/alert.js.map +1 -0
  21. package/dist/async.cjs +55 -0
  22. package/dist/async.cjs.map +1 -0
  23. package/dist/async.js +99 -0
  24. package/dist/async.js.map +1 -0
  25. package/dist/avatar.cjs +18 -0
  26. package/dist/avatar.cjs.map +1 -0
  27. package/dist/avatar.js +108 -0
  28. package/dist/avatar.js.map +1 -0
  29. package/dist/badge.cjs +7 -0
  30. package/dist/badge.cjs.map +1 -0
  31. package/dist/badge.js +65 -0
  32. package/dist/badge.js.map +1 -0
  33. package/dist/box.cjs +2 -0
  34. package/dist/box.cjs.map +1 -0
  35. package/dist/box.js +31 -0
  36. package/dist/box.js.map +1 -0
  37. package/dist/breadcrumb.cjs +21 -0
  38. package/dist/breadcrumb.cjs.map +1 -0
  39. package/dist/breadcrumb.js +57 -0
  40. package/dist/breadcrumb.js.map +1 -0
  41. package/dist/button-group.cjs +6 -0
  42. package/dist/button-group.cjs.map +1 -0
  43. package/dist/button-group.js +33 -0
  44. package/dist/button-group.js.map +1 -0
  45. package/dist/button.cjs +18 -0
  46. package/dist/button.cjs.map +1 -0
  47. package/dist/button.js +124 -0
  48. package/dist/button.js.map +1 -0
  49. package/dist/calendar.cjs +126 -0
  50. package/dist/calendar.cjs.map +1 -0
  51. package/dist/calendar.js +300 -0
  52. package/dist/calendar.js.map +1 -0
  53. package/dist/card.cjs +23 -0
  54. package/dist/card.cjs.map +1 -0
  55. package/dist/card.js +87 -0
  56. package/dist/card.js.map +1 -0
  57. package/dist/carousel.cjs +61 -0
  58. package/dist/carousel.cjs.map +1 -0
  59. package/dist/carousel.js +280 -0
  60. package/dist/carousel.js.map +1 -0
  61. package/dist/checkbox-group.cjs +18 -0
  62. package/dist/checkbox-group.cjs.map +1 -0
  63. package/dist/checkbox-group.js +118 -0
  64. package/dist/checkbox-group.js.map +1 -0
  65. package/dist/checkbox.cjs +11 -0
  66. package/dist/checkbox.cjs.map +1 -0
  67. package/dist/checkbox.js +88 -0
  68. package/dist/checkbox.js.map +1 -0
  69. package/dist/chip.cjs +42 -0
  70. package/dist/chip.cjs.map +1 -0
  71. package/dist/chip.js +133 -0
  72. package/dist/chip.js.map +1 -0
  73. package/dist/code-window.cjs +19 -0
  74. package/dist/code-window.cjs.map +1 -0
  75. package/dist/code-window.js +41 -0
  76. package/dist/code-window.js.map +1 -0
  77. package/dist/combobox.cjs +103 -0
  78. package/dist/combobox.cjs.map +1 -0
  79. package/dist/combobox.js +444 -0
  80. package/dist/combobox.js.map +1 -0
  81. package/dist/content/avatar/avatar-group.css?inline.cjs +2 -0
  82. package/dist/content/avatar/avatar-group.css?inline.cjs.map +1 -0
  83. package/dist/content/avatar/avatar-group.css?inline.js +6 -0
  84. package/dist/content/avatar/avatar-group.css?inline.js.map +1 -0
  85. package/dist/content/avatar/avatar.css?inline.cjs +2 -0
  86. package/dist/content/avatar/avatar.css?inline.cjs.map +1 -0
  87. package/dist/content/avatar/avatar.css?inline.js +6 -0
  88. package/dist/content/avatar/avatar.css?inline.js.map +1 -0
  89. package/dist/content/avatar/avatar.d.ts +88 -0
  90. package/dist/content/avatar/avatar.d.ts.map +1 -0
  91. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs +2 -0
  92. package/dist/content/breadcrumb/breadcrumb-item.css?inline.cjs.map +1 -0
  93. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js +6 -0
  94. package/dist/content/breadcrumb/breadcrumb-item.css?inline.js.map +1 -0
  95. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs +2 -0
  96. package/dist/content/breadcrumb/breadcrumb.css?inline.cjs.map +1 -0
  97. package/dist/content/breadcrumb/breadcrumb.css?inline.js +6 -0
  98. package/dist/content/breadcrumb/breadcrumb.css?inline.js.map +1 -0
  99. package/dist/content/breadcrumb/breadcrumb.d.ts +57 -0
  100. package/dist/content/breadcrumb/breadcrumb.d.ts.map +1 -0
  101. package/dist/content/card/card.css?inline.cjs +2 -0
  102. package/dist/content/card/card.css?inline.cjs.map +1 -0
  103. package/dist/content/card/card.css?inline.js +6 -0
  104. package/dist/content/card/card.css?inline.js.map +1 -0
  105. package/dist/content/card/card.d.ts +74 -0
  106. package/dist/content/card/card.d.ts.map +1 -0
  107. package/dist/content/carousel/carousel-slide.cjs +2 -0
  108. package/dist/content/carousel/carousel-slide.cjs.map +1 -0
  109. package/dist/content/carousel/carousel-slide.css?inline.cjs +2 -0
  110. package/dist/content/carousel/carousel-slide.css?inline.cjs.map +1 -0
  111. package/dist/content/carousel/carousel-slide.css?inline.js +6 -0
  112. package/dist/content/carousel/carousel-slide.css?inline.js.map +1 -0
  113. package/dist/content/carousel/carousel-slide.d.ts +2 -0
  114. package/dist/content/carousel/carousel-slide.d.ts.map +1 -0
  115. package/dist/content/carousel/carousel-slide.js +18 -0
  116. package/dist/content/carousel/carousel-slide.js.map +1 -0
  117. package/dist/content/carousel/carousel.css?inline.cjs +2 -0
  118. package/dist/content/carousel/carousel.css?inline.cjs.map +1 -0
  119. package/dist/content/carousel/carousel.css?inline.js +6 -0
  120. package/dist/content/carousel/carousel.css?inline.js.map +1 -0
  121. package/dist/content/carousel/carousel.d.ts +110 -0
  122. package/dist/content/carousel/carousel.d.ts.map +1 -0
  123. package/dist/content/carousel/index.d.ts +3 -0
  124. package/dist/content/carousel/index.d.ts.map +1 -0
  125. package/dist/content/code-window/code-window.css?inline.cjs +2 -0
  126. package/dist/content/code-window/code-window.css?inline.cjs.map +1 -0
  127. package/dist/content/code-window/code-window.css?inline.js +6 -0
  128. package/dist/content/code-window/code-window.css?inline.js.map +1 -0
  129. package/dist/content/code-window/code-window.d.ts +61 -0
  130. package/dist/content/code-window/code-window.d.ts.map +1 -0
  131. package/dist/content/copy-command/copy-command.css?inline.cjs +2 -0
  132. package/dist/content/copy-command/copy-command.css?inline.cjs.map +1 -0
  133. package/dist/content/copy-command/copy-command.css?inline.js +6 -0
  134. package/dist/content/copy-command/copy-command.css?inline.js.map +1 -0
  135. package/dist/content/copy-command/copy-command.d.ts +66 -0
  136. package/dist/content/copy-command/copy-command.d.ts.map +1 -0
  137. package/dist/content/icon/icon.css?inline.cjs +2 -0
  138. package/dist/content/icon/icon.css?inline.cjs.map +1 -0
  139. package/dist/content/icon/icon.css?inline.js +6 -0
  140. package/dist/content/icon/icon.css?inline.js.map +1 -0
  141. package/dist/content/icon/icon.d.ts +45 -0
  142. package/dist/content/icon/icon.d.ts.map +1 -0
  143. package/dist/content/index.d.ts +23 -0
  144. package/dist/content/index.d.ts.map +1 -0
  145. package/dist/content/pagination/pagination.css?inline.cjs +2 -0
  146. package/dist/content/pagination/pagination.css?inline.cjs.map +1 -0
  147. package/dist/content/pagination/pagination.css?inline.js +6 -0
  148. package/dist/content/pagination/pagination.css?inline.js.map +1 -0
  149. package/dist/content/pagination/pagination.d.ts +61 -0
  150. package/dist/content/pagination/pagination.d.ts.map +1 -0
  151. package/dist/content/separator/separator.css?inline.cjs +2 -0
  152. package/dist/content/separator/separator.css?inline.cjs.map +1 -0
  153. package/dist/content/separator/separator.css?inline.js +6 -0
  154. package/dist/content/separator/separator.css?inline.js.map +1 -0
  155. package/dist/content/separator/separator.d.ts +38 -0
  156. package/dist/content/separator/separator.d.ts.map +1 -0
  157. package/dist/content/table/table.css?inline.cjs +2 -0
  158. package/dist/content/table/table.css?inline.cjs.map +1 -0
  159. package/dist/content/table/table.css?inline.js +6 -0
  160. package/dist/content/table/table.css?inline.js.map +1 -0
  161. package/dist/content/table/table.d.ts +76 -0
  162. package/dist/content/table/table.d.ts.map +1 -0
  163. package/dist/content/text/text.css?inline.cjs +2 -0
  164. package/dist/content/text/text.css?inline.cjs.map +1 -0
  165. package/dist/content/text/text.css?inline.js +6 -0
  166. package/dist/content/text/text.css?inline.js.map +1 -0
  167. package/dist/content/text/text.d.ts +55 -0
  168. package/dist/content/text/text.d.ts.map +1 -0
  169. package/dist/copy-command.cjs +17 -0
  170. package/dist/copy-command.cjs.map +1 -0
  171. package/dist/copy-command.js +55 -0
  172. package/dist/copy-command.js.map +1 -0
  173. package/dist/custom-elements.json +12641 -0
  174. package/dist/datagrid.cjs +435 -0
  175. package/dist/datagrid.cjs.map +1 -0
  176. package/dist/datagrid.js +764 -0
  177. package/dist/datagrid.js.map +1 -0
  178. package/dist/date-picker.cjs +133 -0
  179. package/dist/date-picker.cjs.map +1 -0
  180. package/dist/date-picker.js +315 -0
  181. package/dist/date-picker.js.map +1 -0
  182. package/dist/dialog.cjs +28 -0
  183. package/dist/dialog.cjs.map +1 -0
  184. package/dist/dialog.js +88 -0
  185. package/dist/dialog.js.map +1 -0
  186. package/dist/disclosure/accordion/accordion.css?inline.cjs +2 -0
  187. package/dist/disclosure/accordion/accordion.css?inline.cjs.map +1 -0
  188. package/dist/disclosure/accordion/accordion.css?inline.js +6 -0
  189. package/dist/disclosure/accordion/accordion.css?inline.js.map +1 -0
  190. package/dist/disclosure/accordion/accordion.d.ts +62 -0
  191. package/dist/disclosure/accordion/accordion.d.ts.map +1 -0
  192. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs +2 -0
  193. package/dist/disclosure/accordion-item/accordion-item.css?inline.cjs.map +1 -0
  194. package/dist/disclosure/accordion-item/accordion-item.css?inline.js +6 -0
  195. package/dist/disclosure/accordion-item/accordion-item.css?inline.js.map +1 -0
  196. package/dist/disclosure/accordion-item/accordion-item.d.ts +70 -0
  197. package/dist/disclosure/accordion-item/accordion-item.d.ts.map +1 -0
  198. package/dist/disclosure/index.d.ts +11 -0
  199. package/dist/disclosure/index.d.ts.map +1 -0
  200. package/dist/disclosure/tab-item/tab-item.css?inline.cjs +2 -0
  201. package/dist/disclosure/tab-item/tab-item.css?inline.cjs.map +1 -0
  202. package/dist/disclosure/tab-item/tab-item.css?inline.js +6 -0
  203. package/dist/disclosure/tab-item/tab-item.css?inline.js.map +1 -0
  204. package/dist/disclosure/tab-item/tab-item.d.ts +49 -0
  205. package/dist/disclosure/tab-item/tab-item.d.ts.map +1 -0
  206. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs +2 -0
  207. package/dist/disclosure/tab-panel/tab-panel.css?inline.cjs.map +1 -0
  208. package/dist/disclosure/tab-panel/tab-panel.css?inline.js +6 -0
  209. package/dist/disclosure/tab-panel/tab-panel.css?inline.js.map +1 -0
  210. package/dist/disclosure/tab-panel/tab-panel.d.ts +33 -0
  211. package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -0
  212. package/dist/disclosure/tabs/tabs.css?inline.cjs +2 -0
  213. package/dist/disclosure/tabs/tabs.css?inline.cjs.map +1 -0
  214. package/dist/disclosure/tabs/tabs.css?inline.js +6 -0
  215. package/dist/disclosure/tabs/tabs.css?inline.js.map +1 -0
  216. package/dist/disclosure/tabs/tabs.d.ts +75 -0
  217. package/dist/disclosure/tabs/tabs.d.ts.map +1 -0
  218. package/dist/drawer.cjs +32 -0
  219. package/dist/drawer.cjs.map +1 -0
  220. package/dist/drawer.js +199 -0
  221. package/dist/drawer.js.map +1 -0
  222. package/dist/errors.cjs +2 -0
  223. package/dist/errors.cjs.map +1 -0
  224. package/dist/errors.d.ts +9 -0
  225. package/dist/errors.d.ts.map +1 -0
  226. package/dist/errors.js +13 -0
  227. package/dist/errors.js.map +1 -0
  228. package/dist/feedback/alert/alert.css?inline.cjs +2 -0
  229. package/dist/feedback/alert/alert.css?inline.cjs.map +1 -0
  230. package/dist/feedback/alert/alert.css?inline.js +6 -0
  231. package/dist/feedback/alert/alert.css?inline.js.map +1 -0
  232. package/dist/feedback/alert/alert.d.ts +74 -0
  233. package/dist/feedback/alert/alert.d.ts.map +1 -0
  234. package/dist/feedback/async/async.css?inline.cjs +2 -0
  235. package/dist/feedback/async/async.css?inline.cjs.map +1 -0
  236. package/dist/feedback/async/async.css?inline.js +6 -0
  237. package/dist/feedback/async/async.css?inline.js.map +1 -0
  238. package/dist/feedback/async/async.d.ts +54 -0
  239. package/dist/feedback/async/async.d.ts.map +1 -0
  240. package/dist/feedback/badge/badge.css?inline.cjs +2 -0
  241. package/dist/feedback/badge/badge.css?inline.cjs.map +1 -0
  242. package/dist/feedback/badge/badge.css?inline.js +6 -0
  243. package/dist/feedback/badge/badge.css?inline.js.map +1 -0
  244. package/dist/feedback/badge/badge.d.ts +69 -0
  245. package/dist/feedback/badge/badge.d.ts.map +1 -0
  246. package/dist/feedback/chip/chip.css?inline.cjs +2 -0
  247. package/dist/feedback/chip/chip.css?inline.cjs.map +1 -0
  248. package/dist/feedback/chip/chip.css?inline.js +6 -0
  249. package/dist/feedback/chip/chip.css?inline.js.map +1 -0
  250. package/dist/feedback/chip/chip.d.ts +136 -0
  251. package/dist/feedback/chip/chip.d.ts.map +1 -0
  252. package/dist/feedback/index.d.ts +17 -0
  253. package/dist/feedback/index.d.ts.map +1 -0
  254. package/dist/feedback/password-strength/password-strength.css?inline.cjs +2 -0
  255. package/dist/feedback/password-strength/password-strength.css?inline.cjs.map +1 -0
  256. package/dist/feedback/password-strength/password-strength.css?inline.js +6 -0
  257. package/dist/feedback/password-strength/password-strength.css?inline.js.map +1 -0
  258. package/dist/feedback/password-strength/password-strength.d.ts +66 -0
  259. package/dist/feedback/password-strength/password-strength.d.ts.map +1 -0
  260. package/dist/feedback/progress/progress.css?inline.cjs +2 -0
  261. package/dist/feedback/progress/progress.css?inline.cjs.map +1 -0
  262. package/dist/feedback/progress/progress.css?inline.js +6 -0
  263. package/dist/feedback/progress/progress.css?inline.js.map +1 -0
  264. package/dist/feedback/progress/progress.d.ts +68 -0
  265. package/dist/feedback/progress/progress.d.ts.map +1 -0
  266. package/dist/feedback/skeleton/skeleton.css?inline.cjs +2 -0
  267. package/dist/feedback/skeleton/skeleton.css?inline.cjs.map +1 -0
  268. package/dist/feedback/skeleton/skeleton.css?inline.js +6 -0
  269. package/dist/feedback/skeleton/skeleton.css?inline.js.map +1 -0
  270. package/dist/feedback/skeleton/skeleton.d.ts +63 -0
  271. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -0
  272. package/dist/feedback/toast/index.d.ts +2 -0
  273. package/dist/feedback/toast/index.d.ts.map +1 -0
  274. package/dist/feedback/toast/toast.css?inline.cjs +2 -0
  275. package/dist/feedback/toast/toast.css?inline.cjs.map +1 -0
  276. package/dist/feedback/toast/toast.css?inline.js +6 -0
  277. package/dist/feedback/toast/toast.css?inline.js.map +1 -0
  278. package/dist/feedback/toast/toast.d.ts +127 -0
  279. package/dist/feedback/toast/toast.d.ts.map +1 -0
  280. package/dist/file-input.cjs +70 -0
  281. package/dist/file-input.cjs.map +1 -0
  282. package/dist/file-input.js +209 -0
  283. package/dist/file-input.js.map +1 -0
  284. package/dist/form.cjs +11 -0
  285. package/dist/form.cjs.map +1 -0
  286. package/dist/form.js +56 -0
  287. package/dist/form.js.map +1 -0
  288. package/dist/grid-item.cjs +2 -0
  289. package/dist/grid-item.cjs.map +1 -0
  290. package/dist/grid-item.js +35 -0
  291. package/dist/grid-item.js.map +1 -0
  292. package/dist/grid.cjs +2 -0
  293. package/dist/grid.cjs.map +1 -0
  294. package/dist/grid.js +90 -0
  295. package/dist/grid.js.map +1 -0
  296. package/dist/headless/_internal.d.ts +17 -0
  297. package/dist/headless/_internal.d.ts.map +1 -0
  298. package/dist/headless/announcer.cjs +2 -0
  299. package/dist/headless/announcer.cjs.map +1 -0
  300. package/dist/headless/announcer.d.ts +25 -0
  301. package/dist/headless/announcer.d.ts.map +1 -0
  302. package/dist/headless/announcer.js +24 -0
  303. package/dist/headless/announcer.js.map +1 -0
  304. package/dist/headless/checkable.cjs +2 -0
  305. package/dist/headless/checkable.cjs.map +1 -0
  306. package/dist/headless/checkable.d.ts +42 -0
  307. package/dist/headless/checkable.d.ts.map +1 -0
  308. package/dist/headless/checkable.js +36 -0
  309. package/dist/headless/checkable.js.map +1 -0
  310. package/dist/headless/choice-field.cjs +2 -0
  311. package/dist/headless/choice-field.cjs.map +1 -0
  312. package/dist/headless/choice-field.d.ts +36 -0
  313. package/dist/headless/choice-field.d.ts.map +1 -0
  314. package/dist/headless/choice-field.js +42 -0
  315. package/dist/headless/choice-field.js.map +1 -0
  316. package/dist/headless/datagrid.cjs +2 -0
  317. package/dist/headless/datagrid.cjs.map +1 -0
  318. package/dist/headless/datagrid.d.ts +158 -0
  319. package/dist/headless/datagrid.d.ts.map +1 -0
  320. package/dist/headless/datagrid.js +55 -0
  321. package/dist/headless/datagrid.js.map +1 -0
  322. package/dist/headless/date-picker.cjs +2 -0
  323. package/dist/headless/date-picker.cjs.map +1 -0
  324. package/dist/headless/date-picker.d.ts +114 -0
  325. package/dist/headless/date-picker.d.ts.map +1 -0
  326. package/dist/headless/date-picker.js +184 -0
  327. package/dist/headless/date-picker.js.map +1 -0
  328. package/dist/headless/dialog-focus.cjs +2 -0
  329. package/dist/headless/dialog-focus.cjs.map +1 -0
  330. package/dist/headless/dialog-focus.d.ts +40 -0
  331. package/dist/headless/dialog-focus.d.ts.map +1 -0
  332. package/dist/headless/dialog-focus.js +22 -0
  333. package/dist/headless/dialog-focus.js.map +1 -0
  334. package/dist/headless/direction.cjs +2 -0
  335. package/dist/headless/direction.cjs.map +1 -0
  336. package/dist/headless/direction.d.ts +11 -0
  337. package/dist/headless/direction.d.ts.map +1 -0
  338. package/dist/headless/direction.js +14 -0
  339. package/dist/headless/direction.js.map +1 -0
  340. package/dist/headless/field-base.cjs +2 -0
  341. package/dist/headless/field-base.cjs.map +1 -0
  342. package/dist/headless/field-base.d.ts +148 -0
  343. package/dist/headless/field-base.d.ts.map +1 -0
  344. package/dist/headless/field-base.js +46 -0
  345. package/dist/headless/field-base.js.map +1 -0
  346. package/dist/headless/focus-trap.cjs +2 -0
  347. package/dist/headless/focus-trap.cjs.map +1 -0
  348. package/dist/headless/focus-trap.d.ts +45 -0
  349. package/dist/headless/focus-trap.d.ts.map +1 -0
  350. package/dist/headless/focus-trap.js +51 -0
  351. package/dist/headless/focus-trap.js.map +1 -0
  352. package/dist/headless/focus.cjs +2 -0
  353. package/dist/headless/focus.cjs.map +1 -0
  354. package/dist/headless/focus.d.ts +34 -0
  355. package/dist/headless/focus.d.ts.map +1 -0
  356. package/dist/headless/focus.js +34 -0
  357. package/dist/headless/focus.js.map +1 -0
  358. package/dist/headless/index.d.ts +28 -0
  359. package/dist/headless/index.d.ts.map +1 -0
  360. package/dist/headless/keyboard.cjs +2 -0
  361. package/dist/headless/keyboard.cjs.map +1 -0
  362. package/dist/headless/keyboard.d.ts +52 -0
  363. package/dist/headless/keyboard.d.ts.map +1 -0
  364. package/dist/headless/keyboard.js +29 -0
  365. package/dist/headless/keyboard.js.map +1 -0
  366. package/dist/headless/light-dom.cjs +2 -0
  367. package/dist/headless/light-dom.cjs.map +1 -0
  368. package/dist/headless/light-dom.d.ts +12 -0
  369. package/dist/headless/light-dom.d.ts.map +1 -0
  370. package/dist/headless/light-dom.js +6 -0
  371. package/dist/headless/light-dom.js.map +1 -0
  372. package/dist/headless/nav.cjs +2 -0
  373. package/dist/headless/nav.cjs.map +1 -0
  374. package/dist/headless/nav.d.ts +66 -0
  375. package/dist/headless/nav.d.ts.map +1 -0
  376. package/dist/headless/nav.js +115 -0
  377. package/dist/headless/nav.js.map +1 -0
  378. package/dist/headless/numbers.cjs +2 -0
  379. package/dist/headless/numbers.cjs.map +1 -0
  380. package/dist/headless/numbers.d.ts +14 -0
  381. package/dist/headless/numbers.d.ts.map +1 -0
  382. package/dist/headless/numbers.js +9 -0
  383. package/dist/headless/numbers.js.map +1 -0
  384. package/dist/headless/option-list.cjs +2 -0
  385. package/dist/headless/option-list.cjs.map +1 -0
  386. package/dist/headless/option-list.d.ts +107 -0
  387. package/dist/headless/option-list.d.ts.map +1 -0
  388. package/dist/headless/option-list.js +66 -0
  389. package/dist/headless/option-list.js.map +1 -0
  390. package/dist/headless/ore.cjs +2 -0
  391. package/dist/headless/ore.cjs.map +1 -0
  392. package/dist/headless/ore.d.ts +20 -0
  393. package/dist/headless/ore.d.ts.map +1 -0
  394. package/dist/headless/ore.js +9 -0
  395. package/dist/headless/ore.js.map +1 -0
  396. package/dist/headless/overlay.cjs +2 -0
  397. package/dist/headless/overlay.cjs.map +1 -0
  398. package/dist/headless/overlay.d.ts +62 -0
  399. package/dist/headless/overlay.d.ts.map +1 -0
  400. package/dist/headless/overlay.js +29 -0
  401. package/dist/headless/overlay.js.map +1 -0
  402. package/dist/headless/paginated-list.cjs +2 -0
  403. package/dist/headless/paginated-list.cjs.map +1 -0
  404. package/dist/headless/paginated-list.d.ts +42 -0
  405. package/dist/headless/paginated-list.d.ts.map +1 -0
  406. package/dist/headless/paginated-list.js +34 -0
  407. package/dist/headless/paginated-list.js.map +1 -0
  408. package/dist/headless/parse.cjs +2 -0
  409. package/dist/headless/parse.cjs.map +1 -0
  410. package/dist/headless/parse.d.ts +15 -0
  411. package/dist/headless/parse.d.ts.map +1 -0
  412. package/dist/headless/parse.js +9 -0
  413. package/dist/headless/parse.js.map +1 -0
  414. package/dist/headless/positioner.cjs +2 -0
  415. package/dist/headless/positioner.cjs.map +1 -0
  416. package/dist/headless/positioner.d.ts +40 -0
  417. package/dist/headless/positioner.d.ts.map +1 -0
  418. package/dist/headless/positioner.js +38 -0
  419. package/dist/headless/positioner.js.map +1 -0
  420. package/dist/headless/selection-control.cjs +2 -0
  421. package/dist/headless/selection-control.cjs.map +1 -0
  422. package/dist/headless/selection-control.d.ts +30 -0
  423. package/dist/headless/selection-control.d.ts.map +1 -0
  424. package/dist/headless/selection-control.js +44 -0
  425. package/dist/headless/selection-control.js.map +1 -0
  426. package/dist/headless/signals.cjs +2 -0
  427. package/dist/headless/signals.cjs.map +1 -0
  428. package/dist/headless/signals.d.ts +20 -0
  429. package/dist/headless/signals.d.ts.map +1 -0
  430. package/dist/headless/signals.js +12 -0
  431. package/dist/headless/signals.js.map +1 -0
  432. package/dist/headless/slider.cjs +2 -0
  433. package/dist/headless/slider.cjs.map +1 -0
  434. package/dist/headless/slider.d.ts +28 -0
  435. package/dist/headless/slider.d.ts.map +1 -0
  436. package/dist/headless/slider.js +40 -0
  437. package/dist/headless/slider.js.map +1 -0
  438. package/dist/headless/sort-control.cjs +2 -0
  439. package/dist/headless/sort-control.cjs.map +1 -0
  440. package/dist/headless/sort-control.d.ts +22 -0
  441. package/dist/headless/sort-control.d.ts.map +1 -0
  442. package/dist/headless/sort-control.js +36 -0
  443. package/dist/headless/sort-control.js.map +1 -0
  444. package/dist/headless/spinner.cjs +2 -0
  445. package/dist/headless/spinner.cjs.map +1 -0
  446. package/dist/headless/spinner.d.ts +19 -0
  447. package/dist/headless/spinner.d.ts.map +1 -0
  448. package/dist/headless/spinner.js +52 -0
  449. package/dist/headless/spinner.js.map +1 -0
  450. package/dist/headless/swipe.cjs +2 -0
  451. package/dist/headless/swipe.cjs.map +1 -0
  452. package/dist/headless/swipe.d.ts +38 -0
  453. package/dist/headless/swipe.d.ts.map +1 -0
  454. package/dist/headless/swipe.js +58 -0
  455. package/dist/headless/swipe.js.map +1 -0
  456. package/dist/headless/text-field.cjs +2 -0
  457. package/dist/headless/text-field.cjs.map +1 -0
  458. package/dist/headless/text-field.d.ts +45 -0
  459. package/dist/headless/text-field.d.ts.map +1 -0
  460. package/dist/headless/text-field.js +41 -0
  461. package/dist/headless/text-field.js.map +1 -0
  462. package/dist/headless/typeahead.cjs +2 -0
  463. package/dist/headless/typeahead.cjs.map +1 -0
  464. package/dist/headless/typeahead.d.ts +53 -0
  465. package/dist/headless/typeahead.d.ts.map +1 -0
  466. package/dist/headless/typeahead.js +23 -0
  467. package/dist/headless/typeahead.js.map +1 -0
  468. package/dist/headless.cjs +1 -0
  469. package/dist/headless.js +26 -0
  470. package/dist/icon.cjs +2 -0
  471. package/dist/icon.cjs.map +1 -0
  472. package/dist/icon.js +87 -0
  473. package/dist/icon.js.map +1 -0
  474. package/dist/index.cjs +1 -0
  475. package/dist/index.d.ts +9 -0
  476. package/dist/index.d.ts.map +1 -0
  477. package/dist/index.js +61 -0
  478. package/dist/input.cjs +67 -0
  479. package/dist/input.cjs.map +1 -0
  480. package/dist/input.js +184 -0
  481. package/dist/input.js.map +1 -0
  482. package/dist/inputs/button/button.css?inline.cjs +2 -0
  483. package/dist/inputs/button/button.css?inline.cjs.map +1 -0
  484. package/dist/inputs/button/button.css?inline.js +6 -0
  485. package/dist/inputs/button/button.css?inline.js.map +1 -0
  486. package/dist/inputs/button/button.d.ts +85 -0
  487. package/dist/inputs/button/button.d.ts.map +1 -0
  488. package/dist/inputs/button-group/button-group.css?inline.cjs +2 -0
  489. package/dist/inputs/button-group/button-group.css?inline.cjs.map +1 -0
  490. package/dist/inputs/button-group/button-group.css?inline.js +6 -0
  491. package/dist/inputs/button-group/button-group.css?inline.js.map +1 -0
  492. package/dist/inputs/button-group/button-group.d.ts +64 -0
  493. package/dist/inputs/button-group/button-group.d.ts.map +1 -0
  494. package/dist/inputs/calendar/calendar.css?inline.cjs +2 -0
  495. package/dist/inputs/calendar/calendar.css?inline.cjs.map +1 -0
  496. package/dist/inputs/calendar/calendar.css?inline.js +6 -0
  497. package/dist/inputs/calendar/calendar.css?inline.js.map +1 -0
  498. package/dist/inputs/calendar/calendar.d.ts +134 -0
  499. package/dist/inputs/calendar/calendar.d.ts.map +1 -0
  500. package/dist/inputs/checkbox/checkbox.css?inline.cjs +2 -0
  501. package/dist/inputs/checkbox/checkbox.css?inline.cjs.map +1 -0
  502. package/dist/inputs/checkbox/checkbox.css?inline.js +6 -0
  503. package/dist/inputs/checkbox/checkbox.css?inline.js.map +1 -0
  504. package/dist/inputs/checkbox/checkbox.d.ts +60 -0
  505. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -0
  506. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs +2 -0
  507. package/dist/inputs/checkbox-group/checkbox-group.css?inline.cjs.map +1 -0
  508. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js +6 -0
  509. package/dist/inputs/checkbox-group/checkbox-group.css?inline.js.map +1 -0
  510. package/dist/inputs/checkbox-group/checkbox-group.d.ts +75 -0
  511. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -0
  512. package/dist/inputs/combobox/combobox-options.cjs +2 -0
  513. package/dist/inputs/combobox/combobox-options.cjs.map +1 -0
  514. package/dist/inputs/combobox/combobox-options.d.ts +6 -0
  515. package/dist/inputs/combobox/combobox-options.d.ts.map +1 -0
  516. package/dist/inputs/combobox/combobox-options.js +26 -0
  517. package/dist/inputs/combobox/combobox-options.js.map +1 -0
  518. package/dist/inputs/combobox/combobox.css?inline.cjs +2 -0
  519. package/dist/inputs/combobox/combobox.css?inline.cjs.map +1 -0
  520. package/dist/inputs/combobox/combobox.css?inline.js +6 -0
  521. package/dist/inputs/combobox/combobox.css?inline.js.map +1 -0
  522. package/dist/inputs/combobox/combobox.d.ts +45 -0
  523. package/dist/inputs/combobox/combobox.d.ts.map +1 -0
  524. package/dist/inputs/combobox/combobox.types.d.ts +45 -0
  525. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -0
  526. package/dist/inputs/datagrid/datagrid-column.cjs +2 -0
  527. package/dist/inputs/datagrid/datagrid-column.cjs.map +1 -0
  528. package/dist/inputs/datagrid/datagrid-column.d.ts +7 -0
  529. package/dist/inputs/datagrid/datagrid-column.d.ts.map +1 -0
  530. package/dist/inputs/datagrid/datagrid-column.js +31 -0
  531. package/dist/inputs/datagrid/datagrid-column.js.map +1 -0
  532. package/dist/inputs/datagrid/datagrid-controls.cjs +2 -0
  533. package/dist/inputs/datagrid/datagrid-controls.cjs.map +1 -0
  534. package/dist/inputs/datagrid/datagrid-controls.d.ts +98 -0
  535. package/dist/inputs/datagrid/datagrid-controls.d.ts.map +1 -0
  536. package/dist/inputs/datagrid/datagrid-controls.js +147 -0
  537. package/dist/inputs/datagrid/datagrid-controls.js.map +1 -0
  538. package/dist/inputs/datagrid/datagrid-nav.cjs +2 -0
  539. package/dist/inputs/datagrid/datagrid-nav.cjs.map +1 -0
  540. package/dist/inputs/datagrid/datagrid-nav.d.ts +33 -0
  541. package/dist/inputs/datagrid/datagrid-nav.d.ts.map +1 -0
  542. package/dist/inputs/datagrid/datagrid-nav.js +51 -0
  543. package/dist/inputs/datagrid/datagrid-nav.js.map +1 -0
  544. package/dist/inputs/datagrid/datagrid.css?inline.cjs +2 -0
  545. package/dist/inputs/datagrid/datagrid.css?inline.cjs.map +1 -0
  546. package/dist/inputs/datagrid/datagrid.css?inline.js +6 -0
  547. package/dist/inputs/datagrid/datagrid.css?inline.js.map +1 -0
  548. package/dist/inputs/datagrid/datagrid.d.ts +302 -0
  549. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -0
  550. package/dist/inputs/date-picker/date-picker.css?inline.cjs +2 -0
  551. package/dist/inputs/date-picker/date-picker.css?inline.cjs.map +1 -0
  552. package/dist/inputs/date-picker/date-picker.css?inline.js +6 -0
  553. package/dist/inputs/date-picker/date-picker.css?inline.js.map +1 -0
  554. package/dist/inputs/date-picker/date-picker.d.ts +112 -0
  555. package/dist/inputs/date-picker/date-picker.d.ts.map +1 -0
  556. package/dist/inputs/file-input/file-input.css?inline.cjs +2 -0
  557. package/dist/inputs/file-input/file-input.css?inline.cjs.map +1 -0
  558. package/dist/inputs/file-input/file-input.css?inline.js +6 -0
  559. package/dist/inputs/file-input/file-input.css?inline.js.map +1 -0
  560. package/dist/inputs/file-input/file-input.d.ts +90 -0
  561. package/dist/inputs/file-input/file-input.d.ts.map +1 -0
  562. package/dist/inputs/form/form.css?inline.cjs +2 -0
  563. package/dist/inputs/form/form.css?inline.cjs.map +1 -0
  564. package/dist/inputs/form/form.css?inline.js +6 -0
  565. package/dist/inputs/form/form.css?inline.js.map +1 -0
  566. package/dist/inputs/form/form.d.ts +59 -0
  567. package/dist/inputs/form/form.d.ts.map +1 -0
  568. package/dist/inputs/index.d.ts +47 -0
  569. package/dist/inputs/index.d.ts.map +1 -0
  570. package/dist/inputs/input/input.css?inline.cjs +2 -0
  571. package/dist/inputs/input/input.css?inline.cjs.map +1 -0
  572. package/dist/inputs/input/input.css?inline.js +6 -0
  573. package/dist/inputs/input/input.css?inline.js.map +1 -0
  574. package/dist/inputs/input/input.d.ts +96 -0
  575. package/dist/inputs/input/input.d.ts.map +1 -0
  576. package/dist/inputs/number-input/number-input.css?inline.cjs +2 -0
  577. package/dist/inputs/number-input/number-input.css?inline.cjs.map +1 -0
  578. package/dist/inputs/number-input/number-input.css?inline.js +6 -0
  579. package/dist/inputs/number-input/number-input.css?inline.js.map +1 -0
  580. package/dist/inputs/number-input/number-input.d.ts +102 -0
  581. package/dist/inputs/number-input/number-input.d.ts.map +1 -0
  582. package/dist/inputs/otp-input/otp-input.css?inline.cjs +2 -0
  583. package/dist/inputs/otp-input/otp-input.css?inline.cjs.map +1 -0
  584. package/dist/inputs/otp-input/otp-input.css?inline.js +6 -0
  585. package/dist/inputs/otp-input/otp-input.css?inline.js.map +1 -0
  586. package/dist/inputs/otp-input/otp-input.d.ts +82 -0
  587. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -0
  588. package/dist/inputs/radio/radio.css?inline.cjs +2 -0
  589. package/dist/inputs/radio/radio.css?inline.cjs.map +1 -0
  590. package/dist/inputs/radio/radio.css?inline.js +6 -0
  591. package/dist/inputs/radio/radio.css?inline.js.map +1 -0
  592. package/dist/inputs/radio/radio.d.ts +56 -0
  593. package/dist/inputs/radio/radio.d.ts.map +1 -0
  594. package/dist/inputs/radio-group/radio-group.css?inline.cjs +2 -0
  595. package/dist/inputs/radio-group/radio-group.css?inline.cjs.map +1 -0
  596. package/dist/inputs/radio-group/radio-group.css?inline.js +6 -0
  597. package/dist/inputs/radio-group/radio-group.css?inline.js.map +1 -0
  598. package/dist/inputs/radio-group/radio-group.d.ts +74 -0
  599. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -0
  600. package/dist/inputs/rating/rating.css?inline.cjs +2 -0
  601. package/dist/inputs/rating/rating.css?inline.cjs.map +1 -0
  602. package/dist/inputs/rating/rating.css?inline.js +6 -0
  603. package/dist/inputs/rating/rating.css?inline.js.map +1 -0
  604. package/dist/inputs/rating/rating.d.ts +68 -0
  605. package/dist/inputs/rating/rating.d.ts.map +1 -0
  606. package/dist/inputs/select/select.css?inline.cjs +2 -0
  607. package/dist/inputs/select/select.css?inline.cjs.map +1 -0
  608. package/dist/inputs/select/select.css?inline.js +6 -0
  609. package/dist/inputs/select/select.css?inline.js.map +1 -0
  610. package/dist/inputs/select/select.d.ts +89 -0
  611. package/dist/inputs/select/select.d.ts.map +1 -0
  612. package/dist/inputs/shared/field-binding.cjs +2 -0
  613. package/dist/inputs/shared/field-binding.cjs.map +1 -0
  614. package/dist/inputs/shared/field-binding.d.ts +31 -0
  615. package/dist/inputs/shared/field-binding.d.ts.map +1 -0
  616. package/dist/inputs/shared/field-binding.js +31 -0
  617. package/dist/inputs/shared/field-binding.js.map +1 -0
  618. package/dist/inputs/shared/form-context.cjs +2 -0
  619. package/dist/inputs/shared/form-context.cjs.map +1 -0
  620. package/dist/inputs/shared/form-context.d.ts +49 -0
  621. package/dist/inputs/shared/form-context.d.ts.map +1 -0
  622. package/dist/inputs/shared/form-context.js +15 -0
  623. package/dist/inputs/shared/form-context.js.map +1 -0
  624. package/dist/inputs/shared/index.d.ts +5 -0
  625. package/dist/inputs/shared/index.d.ts.map +1 -0
  626. package/dist/inputs/shared/templates.cjs +11 -0
  627. package/dist/inputs/shared/templates.cjs.map +1 -0
  628. package/dist/inputs/shared/templates.d.ts +13 -0
  629. package/dist/inputs/shared/templates.d.ts.map +1 -0
  630. package/dist/inputs/shared/templates.js +18 -0
  631. package/dist/inputs/shared/templates.js.map +1 -0
  632. package/dist/inputs/shared/use-form-action.cjs +2 -0
  633. package/dist/inputs/shared/use-form-action.cjs.map +1 -0
  634. package/dist/inputs/shared/use-form-action.d.ts +17 -0
  635. package/dist/inputs/shared/use-form-action.d.ts.map +1 -0
  636. package/dist/inputs/shared/use-form-action.js +19 -0
  637. package/dist/inputs/shared/use-form-action.js.map +1 -0
  638. package/dist/inputs/slider/slider.css?inline.cjs +2 -0
  639. package/dist/inputs/slider/slider.css?inline.cjs.map +1 -0
  640. package/dist/inputs/slider/slider.css?inline.js +6 -0
  641. package/dist/inputs/slider/slider.css?inline.js.map +1 -0
  642. package/dist/inputs/slider/slider.d.ts +95 -0
  643. package/dist/inputs/slider/slider.d.ts.map +1 -0
  644. package/dist/inputs/switch/switch.css?inline.cjs +2 -0
  645. package/dist/inputs/switch/switch.css?inline.cjs.map +1 -0
  646. package/dist/inputs/switch/switch.css?inline.js +6 -0
  647. package/dist/inputs/switch/switch.css?inline.js.map +1 -0
  648. package/dist/inputs/switch/switch.d.ts +56 -0
  649. package/dist/inputs/switch/switch.d.ts.map +1 -0
  650. package/dist/inputs/textarea/textarea.css?inline.cjs +2 -0
  651. package/dist/inputs/textarea/textarea.css?inline.cjs.map +1 -0
  652. package/dist/inputs/textarea/textarea.css?inline.js +6 -0
  653. package/dist/inputs/textarea/textarea.css?inline.js.map +1 -0
  654. package/dist/inputs/textarea/textarea.d.ts +91 -0
  655. package/dist/inputs/textarea/textarea.d.ts.map +1 -0
  656. package/dist/inputs/time-picker/time-picker.css?inline.cjs +2 -0
  657. package/dist/inputs/time-picker/time-picker.css?inline.cjs.map +1 -0
  658. package/dist/inputs/time-picker/time-picker.css?inline.js +6 -0
  659. package/dist/inputs/time-picker/time-picker.css?inline.js.map +1 -0
  660. package/dist/inputs/time-picker/time-picker.d.ts +103 -0
  661. package/dist/inputs/time-picker/time-picker.d.ts.map +1 -0
  662. package/dist/layout/box/box.css?inline.cjs +2 -0
  663. package/dist/layout/box/box.css?inline.cjs.map +1 -0
  664. package/dist/layout/box/box.css?inline.js +6 -0
  665. package/dist/layout/box/box.css?inline.js.map +1 -0
  666. package/dist/layout/box/box.d.ts +52 -0
  667. package/dist/layout/box/box.d.ts.map +1 -0
  668. package/dist/layout/grid/grid.css?inline.cjs +2 -0
  669. package/dist/layout/grid/grid.css?inline.cjs.map +1 -0
  670. package/dist/layout/grid/grid.css?inline.js +6 -0
  671. package/dist/layout/grid/grid.css?inline.js.map +1 -0
  672. package/dist/layout/grid/grid.d.ts +105 -0
  673. package/dist/layout/grid/grid.d.ts.map +1 -0
  674. package/dist/layout/grid-item/grid-item.css?inline.cjs +2 -0
  675. package/dist/layout/grid-item/grid-item.css?inline.cjs.map +1 -0
  676. package/dist/layout/grid-item/grid-item.css?inline.js +6 -0
  677. package/dist/layout/grid-item/grid-item.css?inline.js.map +1 -0
  678. package/dist/layout/grid-item/grid-item.d.ts +54 -0
  679. package/dist/layout/grid-item/grid-item.d.ts.map +1 -0
  680. package/dist/layout/index.d.ts +11 -0
  681. package/dist/layout/index.d.ts.map +1 -0
  682. package/dist/layout/navbar/navbar.css?inline.cjs +2 -0
  683. package/dist/layout/navbar/navbar.css?inline.cjs.map +1 -0
  684. package/dist/layout/navbar/navbar.css?inline.js +6 -0
  685. package/dist/layout/navbar/navbar.css?inline.js.map +1 -0
  686. package/dist/layout/navbar/navbar.d.ts +153 -0
  687. package/dist/layout/navbar/navbar.d.ts.map +1 -0
  688. package/dist/layout/sidebar/sidebar-group.css?inline.cjs +2 -0
  689. package/dist/layout/sidebar/sidebar-group.css?inline.cjs.map +1 -0
  690. package/dist/layout/sidebar/sidebar-group.css?inline.js +6 -0
  691. package/dist/layout/sidebar/sidebar-group.css?inline.js.map +1 -0
  692. package/dist/layout/sidebar/sidebar-item.css?inline.cjs +2 -0
  693. package/dist/layout/sidebar/sidebar-item.css?inline.cjs.map +1 -0
  694. package/dist/layout/sidebar/sidebar-item.css?inline.js +6 -0
  695. package/dist/layout/sidebar/sidebar-item.css?inline.js.map +1 -0
  696. package/dist/layout/sidebar/sidebar.css?inline.cjs +2 -0
  697. package/dist/layout/sidebar/sidebar.css?inline.cjs.map +1 -0
  698. package/dist/layout/sidebar/sidebar.css?inline.js +6 -0
  699. package/dist/layout/sidebar/sidebar.css?inline.js.map +1 -0
  700. package/dist/layout/sidebar/sidebar.d.ts +226 -0
  701. package/dist/layout/sidebar/sidebar.d.ts.map +1 -0
  702. package/dist/menu.cjs +30 -0
  703. package/dist/menu.cjs.map +1 -0
  704. package/dist/menu.js +197 -0
  705. package/dist/menu.js.map +1 -0
  706. package/dist/navbar.cjs +68 -0
  707. package/dist/navbar.cjs.map +1 -0
  708. package/dist/navbar.js +283 -0
  709. package/dist/navbar.js.map +1 -0
  710. package/dist/number-input.cjs +40 -0
  711. package/dist/number-input.cjs.map +1 -0
  712. package/dist/number-input.js +141 -0
  713. package/dist/number-input.js.map +1 -0
  714. package/dist/ore/dist/_dev.cjs +2 -0
  715. package/dist/ore/dist/_dev.cjs.map +1 -0
  716. package/dist/ore/dist/_dev.js +12 -0
  717. package/dist/ore/dist/_dev.js.map +1 -0
  718. package/dist/ore/dist/aria.cjs +2 -0
  719. package/dist/ore/dist/aria.cjs.map +1 -0
  720. package/dist/ore/dist/aria.js +37 -0
  721. package/dist/ore/dist/aria.js.map +1 -0
  722. package/dist/ore/dist/base-element.cjs +2 -0
  723. package/dist/ore/dist/base-element.cjs.map +1 -0
  724. package/dist/ore/dist/base-element.js +146 -0
  725. package/dist/ore/dist/base-element.js.map +1 -0
  726. package/dist/ore/dist/context-bag.cjs +2 -0
  727. package/dist/ore/dist/context-bag.cjs.map +1 -0
  728. package/dist/ore/dist/context-bag.js +28 -0
  729. package/dist/ore/dist/context-bag.js.map +1 -0
  730. package/dist/ore/dist/context.cjs +2 -0
  731. package/dist/ore/dist/context.cjs.map +1 -0
  732. package/dist/ore/dist/context.js +38 -0
  733. package/dist/ore/dist/context.js.map +1 -0
  734. package/dist/ore/dist/define.cjs +2 -0
  735. package/dist/ore/dist/define.cjs.map +1 -0
  736. package/dist/ore/dist/define.js +27 -0
  737. package/dist/ore/dist/define.js.map +1 -0
  738. package/dist/ore/dist/directives/classMap.cjs +1 -0
  739. package/dist/ore/dist/directives/classMap.js +1 -0
  740. package/dist/ore/dist/directives/each.cjs +1 -0
  741. package/dist/ore/dist/directives/each.js +5 -0
  742. package/dist/ore/dist/directives/live.cjs +2 -0
  743. package/dist/ore/dist/directives/live.cjs.map +1 -0
  744. package/dist/ore/dist/directives/live.js +6 -0
  745. package/dist/ore/dist/directives/live.js.map +1 -0
  746. package/dist/ore/dist/directives/model.cjs +1 -0
  747. package/dist/ore/dist/directives/model.js +3 -0
  748. package/dist/ore/dist/directives/raw.cjs +2 -0
  749. package/dist/ore/dist/directives/raw.cjs.map +1 -0
  750. package/dist/ore/dist/directives/raw.js +35 -0
  751. package/dist/ore/dist/directives/raw.js.map +1 -0
  752. package/dist/ore/dist/directives/styleMap.cjs +2 -0
  753. package/dist/ore/dist/directives/styleMap.cjs.map +1 -0
  754. package/dist/ore/dist/directives/styleMap.js +20 -0
  755. package/dist/ore/dist/directives/styleMap.js.map +1 -0
  756. package/dist/ore/dist/directives/when.cjs +2 -0
  757. package/dist/ore/dist/directives/when.cjs.map +1 -0
  758. package/dist/ore/dist/directives/when.js +33 -0
  759. package/dist/ore/dist/directives/when.js.map +1 -0
  760. package/dist/ore/dist/directives.cjs +1 -0
  761. package/dist/ore/dist/directives.js +8 -0
  762. package/dist/ore/dist/errors.cjs +3 -0
  763. package/dist/ore/dist/errors.cjs.map +1 -0
  764. package/dist/ore/dist/errors.js +41 -0
  765. package/dist/ore/dist/errors.js.map +1 -0
  766. package/dist/ore/dist/host-bind.cjs +2 -0
  767. package/dist/ore/dist/host-bind.cjs.map +1 -0
  768. package/dist/ore/dist/host-bind.js +60 -0
  769. package/dist/ore/dist/host-bind.js.map +1 -0
  770. package/dist/ore/dist/observers/intersection-observe.cjs +2 -0
  771. package/dist/ore/dist/observers/intersection-observe.cjs.map +1 -0
  772. package/dist/ore/dist/observers/intersection-observe.js +12 -0
  773. package/dist/ore/dist/observers/intersection-observe.js.map +1 -0
  774. package/dist/ore/dist/observers/media-observe.cjs +1 -0
  775. package/dist/ore/dist/observers/media-observe.js +1 -0
  776. package/dist/ore/dist/observers/mutation-observe.cjs +1 -0
  777. package/dist/ore/dist/observers/mutation-observe.js +1 -0
  778. package/dist/ore/dist/observers/resize-observe.cjs +2 -0
  779. package/dist/ore/dist/observers/resize-observe.cjs.map +1 -0
  780. package/dist/ore/dist/observers/resize-observe.js +20 -0
  781. package/dist/ore/dist/observers/resize-observe.js.map +1 -0
  782. package/dist/ore/dist/observers.cjs +1 -0
  783. package/dist/ore/dist/observers.js +5 -0
  784. package/dist/ore/dist/props.cjs +2 -0
  785. package/dist/ore/dist/props.cjs.map +1 -0
  786. package/dist/ore/dist/props.js +54 -0
  787. package/dist/ore/dist/props.js.map +1 -0
  788. package/dist/ore/dist/runtime.cjs +2 -0
  789. package/dist/ore/dist/runtime.cjs.map +1 -0
  790. package/dist/ore/dist/runtime.js +33 -0
  791. package/dist/ore/dist/runtime.js.map +1 -0
  792. package/dist/ore/dist/slots.cjs +2 -0
  793. package/dist/ore/dist/slots.cjs.map +1 -0
  794. package/dist/ore/dist/slots.js +61 -0
  795. package/dist/ore/dist/slots.js.map +1 -0
  796. package/dist/ore/dist/testing/flush.cjs +2 -0
  797. package/dist/ore/dist/testing/flush.cjs.map +1 -0
  798. package/dist/ore/dist/testing/flush.js +11 -0
  799. package/dist/ore/dist/testing/flush.js.map +1 -0
  800. package/dist/ore/dist/testing/mount.cjs +2 -0
  801. package/dist/ore/dist/testing/mount.cjs.map +1 -0
  802. package/dist/ore/dist/testing/mount.js +94 -0
  803. package/dist/ore/dist/testing/mount.js.map +1 -0
  804. package/dist/ore/dist/testing/query.cjs +2 -0
  805. package/dist/ore/dist/testing/query.cjs.map +1 -0
  806. package/dist/ore/dist/testing/query.js +12 -0
  807. package/dist/ore/dist/testing/query.js.map +1 -0
  808. package/dist/ore/dist/testing/render-hook.cjs +1 -0
  809. package/dist/ore/dist/testing/render-hook.js +4 -0
  810. package/dist/ore/dist/testing/testing.cjs +1 -0
  811. package/dist/ore/dist/testing/testing.js +4 -0
  812. package/dist/ore/dist/testing/wait.cjs +1 -0
  813. package/dist/ore/dist/testing/wait.js +1 -0
  814. package/dist/ore/dist/testing.cjs +1 -0
  815. package/dist/ore/dist/testing.js +6 -0
  816. package/dist/ore/dist/types/bindings.cjs +2 -0
  817. package/dist/ore/dist/types/bindings.cjs.map +1 -0
  818. package/dist/ore/dist/types/bindings.js +15 -0
  819. package/dist/ore/dist/types/bindings.js.map +1 -0
  820. package/dist/ore/dist/types.cjs +2 -0
  821. package/dist/ore/dist/types.cjs.map +1 -0
  822. package/dist/ore/dist/types.js +15 -0
  823. package/dist/ore/dist/types.js.map +1 -0
  824. package/dist/ore/dist/utils/aria.cjs +2 -0
  825. package/dist/ore/dist/utils/aria.cjs.map +1 -0
  826. package/dist/ore/dist/utils/aria.js +6 -0
  827. package/dist/ore/dist/utils/aria.js.map +1 -0
  828. package/dist/ore/dist/utils/css.cjs +2 -0
  829. package/dist/ore/dist/utils/css.cjs.map +1 -0
  830. package/dist/ore/dist/utils/css.js +18 -0
  831. package/dist/ore/dist/utils/css.js.map +1 -0
  832. package/dist/ore/dist/utils/dom.cjs +2 -0
  833. package/dist/ore/dist/utils/dom.cjs.map +1 -0
  834. package/dist/ore/dist/utils/dom.js +47 -0
  835. package/dist/ore/dist/utils/dom.js.map +1 -0
  836. package/dist/ore/dist/utils/emit.cjs +2 -0
  837. package/dist/ore/dist/utils/emit.cjs.map +1 -0
  838. package/dist/ore/dist/utils/emit.js +16 -0
  839. package/dist/ore/dist/utils/emit.js.map +1 -0
  840. package/dist/ore/dist/utils/id.cjs +2 -0
  841. package/dist/ore/dist/utils/id.cjs.map +1 -0
  842. package/dist/ore/dist/utils/id.js +4 -0
  843. package/dist/ore/dist/utils/id.js.map +1 -0
  844. package/dist/otp-input.cjs +21 -0
  845. package/dist/otp-input.cjs.map +1 -0
  846. package/dist/otp-input.js +145 -0
  847. package/dist/otp-input.js.map +1 -0
  848. package/dist/overlay/dialog/dialog.css?inline.cjs +2 -0
  849. package/dist/overlay/dialog/dialog.css?inline.cjs.map +1 -0
  850. package/dist/overlay/dialog/dialog.css?inline.js +6 -0
  851. package/dist/overlay/dialog/dialog.css?inline.js.map +1 -0
  852. package/dist/overlay/dialog/dialog.d.ts +108 -0
  853. package/dist/overlay/dialog/dialog.d.ts.map +1 -0
  854. package/dist/overlay/drawer/drawer.css?inline.cjs +2 -0
  855. package/dist/overlay/drawer/drawer.css?inline.cjs.map +1 -0
  856. package/dist/overlay/drawer/drawer.css?inline.js +6 -0
  857. package/dist/overlay/drawer/drawer.css?inline.js.map +1 -0
  858. package/dist/overlay/drawer/drawer.d.ts +111 -0
  859. package/dist/overlay/drawer/drawer.d.ts.map +1 -0
  860. package/dist/overlay/index.d.ts +11 -0
  861. package/dist/overlay/index.d.ts.map +1 -0
  862. package/dist/overlay/menu/menu-item.css?inline.cjs +2 -0
  863. package/dist/overlay/menu/menu-item.css?inline.cjs.map +1 -0
  864. package/dist/overlay/menu/menu-item.css?inline.js +6 -0
  865. package/dist/overlay/menu/menu-item.css?inline.js.map +1 -0
  866. package/dist/overlay/menu/menu-separator.css?inline.cjs +2 -0
  867. package/dist/overlay/menu/menu-separator.css?inline.cjs.map +1 -0
  868. package/dist/overlay/menu/menu-separator.css?inline.js +6 -0
  869. package/dist/overlay/menu/menu-separator.css?inline.js.map +1 -0
  870. package/dist/overlay/menu/menu.css?inline.cjs +2 -0
  871. package/dist/overlay/menu/menu.css?inline.cjs.map +1 -0
  872. package/dist/overlay/menu/menu.css?inline.js +6 -0
  873. package/dist/overlay/menu/menu.css?inline.js.map +1 -0
  874. package/dist/overlay/menu/menu.d.ts +110 -0
  875. package/dist/overlay/menu/menu.d.ts.map +1 -0
  876. package/dist/overlay/popover/popover.css?inline.cjs +2 -0
  877. package/dist/overlay/popover/popover.css?inline.cjs.map +1 -0
  878. package/dist/overlay/popover/popover.css?inline.js +6 -0
  879. package/dist/overlay/popover/popover.css?inline.js.map +1 -0
  880. package/dist/overlay/popover/popover.d.ts +56 -0
  881. package/dist/overlay/popover/popover.d.ts.map +1 -0
  882. package/dist/overlay/shared/await-exit.cjs +2 -0
  883. package/dist/overlay/shared/await-exit.cjs.map +1 -0
  884. package/dist/overlay/shared/await-exit.d.ts +14 -0
  885. package/dist/overlay/shared/await-exit.d.ts.map +1 -0
  886. package/dist/overlay/shared/await-exit.js +18 -0
  887. package/dist/overlay/shared/await-exit.js.map +1 -0
  888. package/dist/overlay/shared/background-lock.cjs +2 -0
  889. package/dist/overlay/shared/background-lock.cjs.map +1 -0
  890. package/dist/overlay/shared/background-lock.d.ts +22 -0
  891. package/dist/overlay/shared/background-lock.d.ts.map +1 -0
  892. package/dist/overlay/shared/background-lock.js +25 -0
  893. package/dist/overlay/shared/background-lock.js.map +1 -0
  894. package/dist/overlay/shared/use-dialog.cjs +2 -0
  895. package/dist/overlay/shared/use-dialog.cjs.map +1 -0
  896. package/dist/overlay/shared/use-dialog.d.ts +76 -0
  897. package/dist/overlay/shared/use-dialog.d.ts.map +1 -0
  898. package/dist/overlay/shared/use-dialog.js +92 -0
  899. package/dist/overlay/shared/use-dialog.js.map +1 -0
  900. package/dist/overlay/shared/use-floating-trigger.cjs +2 -0
  901. package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -0
  902. package/dist/overlay/shared/use-floating-trigger.d.ts +67 -0
  903. package/dist/overlay/shared/use-floating-trigger.d.ts.map +1 -0
  904. package/dist/overlay/shared/use-floating-trigger.js +128 -0
  905. package/dist/overlay/shared/use-floating-trigger.js.map +1 -0
  906. package/dist/overlay/tooltip/tooltip.css?inline.cjs +2 -0
  907. package/dist/overlay/tooltip/tooltip.css?inline.cjs.map +1 -0
  908. package/dist/overlay/tooltip/tooltip.css?inline.js +6 -0
  909. package/dist/overlay/tooltip/tooltip.css?inline.js.map +1 -0
  910. package/dist/overlay/tooltip/tooltip.d.ts +72 -0
  911. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -0
  912. package/dist/pagination.cjs +63 -0
  913. package/dist/pagination.cjs.map +1 -0
  914. package/dist/pagination.js +113 -0
  915. package/dist/pagination.js.map +1 -0
  916. package/dist/password-strength.cjs +19 -0
  917. package/dist/password-strength.cjs.map +1 -0
  918. package/dist/password-strength.js +69 -0
  919. package/dist/password-strength.js.map +1 -0
  920. package/dist/popover.cjs +16 -0
  921. package/dist/popover.cjs.map +1 -0
  922. package/dist/popover.js +81 -0
  923. package/dist/popover.js.map +1 -0
  924. package/dist/progress.cjs +46 -0
  925. package/dist/progress.cjs.map +1 -0
  926. package/dist/progress.js +96 -0
  927. package/dist/progress.js.map +1 -0
  928. package/dist/radio-group.cjs +25 -0
  929. package/dist/radio-group.cjs.map +1 -0
  930. package/dist/radio-group.js +145 -0
  931. package/dist/radio-group.js.map +1 -0
  932. package/dist/radio.cjs +10 -0
  933. package/dist/radio.cjs.map +1 -0
  934. package/dist/radio.js +146 -0
  935. package/dist/radio.js.map +1 -0
  936. package/dist/rating.cjs +28 -0
  937. package/dist/rating.cjs.map +1 -0
  938. package/dist/rating.js +123 -0
  939. package/dist/rating.js.map +1 -0
  940. package/dist/refine.cjs +2705 -0
  941. package/dist/refine.cjs.map +1 -0
  942. package/dist/refine.iife.js +2705 -0
  943. package/dist/refine.iife.js.map +1 -0
  944. package/dist/refine.js +2705 -0
  945. package/dist/refine.js.map +1 -0
  946. package/dist/select.cjs +79 -0
  947. package/dist/select.cjs.map +1 -0
  948. package/dist/select.js +289 -0
  949. package/dist/select.js.map +1 -0
  950. package/dist/separator.cjs +27 -0
  951. package/dist/separator.cjs.map +1 -0
  952. package/dist/separator.js +47 -0
  953. package/dist/separator.js.map +1 -0
  954. package/dist/shared/index.d.ts +14 -0
  955. package/dist/shared/index.d.ts.map +1 -0
  956. package/dist/shared/prop-bundles.cjs +2 -0
  957. package/dist/shared/prop-bundles.cjs.map +1 -0
  958. package/dist/shared/prop-bundles.d.ts +45 -0
  959. package/dist/shared/prop-bundles.d.ts.map +1 -0
  960. package/dist/shared/prop-bundles.js +13 -0
  961. package/dist/shared/prop-bundles.js.map +1 -0
  962. package/dist/shared/size-presets.cjs +2 -0
  963. package/dist/shared/size-presets.cjs.map +1 -0
  964. package/dist/shared/size-presets.d.ts +101 -0
  965. package/dist/shared/size-presets.d.ts.map +1 -0
  966. package/dist/shared/size-presets.js +96 -0
  967. package/dist/shared/size-presets.js.map +1 -0
  968. package/dist/shared/types.d.ts +76 -0
  969. package/dist/shared/types.d.ts.map +1 -0
  970. package/dist/sidebar.cjs +123 -0
  971. package/dist/sidebar.cjs.map +1 -0
  972. package/dist/sidebar.js +344 -0
  973. package/dist/sidebar.js.map +1 -0
  974. package/dist/skeleton.cjs +10 -0
  975. package/dist/skeleton.cjs.map +1 -0
  976. package/dist/skeleton.js +59 -0
  977. package/dist/skeleton.js.map +1 -0
  978. package/dist/slider.cjs +27 -0
  979. package/dist/slider.cjs.map +1 -0
  980. package/dist/slider.js +219 -0
  981. package/dist/slider.js.map +1 -0
  982. package/dist/styles/animation.css +94 -0
  983. package/dist/styles/index.cjs +2 -0
  984. package/dist/styles/index.cjs.map +1 -0
  985. package/dist/styles/index.d.ts +41 -0
  986. package/dist/styles/index.d.ts.map +1 -0
  987. package/dist/styles/index.js +24 -0
  988. package/dist/styles/index.js.map +1 -0
  989. package/dist/styles/layer.css +19 -0
  990. package/dist/styles/mixins/accessibility.css.cjs +51 -0
  991. package/dist/styles/mixins/accessibility.css.cjs.map +1 -0
  992. package/dist/styles/mixins/accessibility.css.d.ts +80 -0
  993. package/dist/styles/mixins/accessibility.css.d.ts.map +1 -0
  994. package/dist/styles/mixins/accessibility.css.js +56 -0
  995. package/dist/styles/mixins/accessibility.css.js.map +1 -0
  996. package/dist/styles/mixins/animation.css.cjs +133 -0
  997. package/dist/styles/mixins/animation.css.cjs.map +1 -0
  998. package/dist/styles/mixins/animation.css.d.ts +43 -0
  999. package/dist/styles/mixins/animation.css.d.ts.map +1 -0
  1000. package/dist/styles/mixins/animation.css.js +166 -0
  1001. package/dist/styles/mixins/animation.css.js.map +1 -0
  1002. package/dist/styles/mixins/shape.css.cjs +66 -0
  1003. package/dist/styles/mixins/shape.css.cjs.map +1 -0
  1004. package/dist/styles/mixins/shape.css.d.ts +96 -0
  1005. package/dist/styles/mixins/shape.css.d.ts.map +1 -0
  1006. package/dist/styles/mixins/shape.css.js +98 -0
  1007. package/dist/styles/mixins/shape.css.js.map +1 -0
  1008. package/dist/styles/mixins/states.css.cjs +37 -0
  1009. package/dist/styles/mixins/states.css.cjs.map +1 -0
  1010. package/dist/styles/mixins/states.css.d.ts +27 -0
  1011. package/dist/styles/mixins/states.css.d.ts.map +1 -0
  1012. package/dist/styles/mixins/states.css.js +44 -0
  1013. package/dist/styles/mixins/states.css.js.map +1 -0
  1014. package/dist/styles/mixins/table-base.css.cjs +94 -0
  1015. package/dist/styles/mixins/table-base.css.cjs.map +1 -0
  1016. package/dist/styles/mixins/table-base.css.d.ts +24 -0
  1017. package/dist/styles/mixins/table-base.css.d.ts.map +1 -0
  1018. package/dist/styles/mixins/table-base.css.js +99 -0
  1019. package/dist/styles/mixins/table-base.css.js.map +1 -0
  1020. package/dist/styles/mixins/theme.css.cjs +80 -0
  1021. package/dist/styles/mixins/theme.css.cjs.map +1 -0
  1022. package/dist/styles/mixins/theme.css.d.ts +77 -0
  1023. package/dist/styles/mixins/theme.css.d.ts.map +1 -0
  1024. package/dist/styles/mixins/theme.css.js +98 -0
  1025. package/dist/styles/mixins/theme.css.js.map +1 -0
  1026. package/dist/styles/mixins/variants.css.cjs +55 -0
  1027. package/dist/styles/mixins/variants.css.cjs.map +1 -0
  1028. package/dist/styles/mixins/variants.css.d.ts +22 -0
  1029. package/dist/styles/mixins/variants.css.d.ts.map +1 -0
  1030. package/dist/styles/mixins/variants.css.js +60 -0
  1031. package/dist/styles/mixins/variants.css.js.map +1 -0
  1032. package/dist/styles/preflight.css +239 -0
  1033. package/dist/styles/styles.css +5 -0
  1034. package/dist/styles/theme.css +553 -0
  1035. package/dist/switch.cjs +10 -0
  1036. package/dist/switch.cjs.map +1 -0
  1037. package/dist/switch.js +79 -0
  1038. package/dist/switch.js.map +1 -0
  1039. package/dist/tab-item.cjs +17 -0
  1040. package/dist/tab-item.cjs.map +1 -0
  1041. package/dist/tab-item.js +62 -0
  1042. package/dist/tab-item.js.map +1 -0
  1043. package/dist/tab-panel.cjs +14 -0
  1044. package/dist/tab-panel.cjs.map +1 -0
  1045. package/dist/tab-panel.js +61 -0
  1046. package/dist/tab-panel.js.map +1 -0
  1047. package/dist/table.cjs +2 -0
  1048. package/dist/table.cjs.map +1 -0
  1049. package/dist/table.js +101 -0
  1050. package/dist/table.js.map +1 -0
  1051. package/dist/tabs.cjs +17 -0
  1052. package/dist/tabs.cjs.map +1 -0
  1053. package/dist/tabs.js +126 -0
  1054. package/dist/tabs.js.map +1 -0
  1055. package/dist/testing/index.d.ts +233 -0
  1056. package/dist/testing/index.d.ts.map +1 -0
  1057. package/dist/testing.cjs +2 -0
  1058. package/dist/testing.cjs.map +1 -0
  1059. package/dist/testing.js +44 -0
  1060. package/dist/testing.js.map +1 -0
  1061. package/dist/text.cjs +2 -0
  1062. package/dist/text.cjs.map +1 -0
  1063. package/dist/text.js +34 -0
  1064. package/dist/text.js.map +1 -0
  1065. package/dist/textarea.cjs +33 -0
  1066. package/dist/textarea.cjs.map +1 -0
  1067. package/dist/textarea.js +137 -0
  1068. package/dist/textarea.js.map +1 -0
  1069. package/dist/time-picker.cjs +98 -0
  1070. package/dist/time-picker.cjs.map +1 -0
  1071. package/dist/time-picker.js +261 -0
  1072. package/dist/time-picker.js.map +1 -0
  1073. package/dist/toast.cjs +69 -0
  1074. package/dist/toast.cjs.map +1 -0
  1075. package/dist/toast.js +316 -0
  1076. package/dist/toast.js.map +1 -0
  1077. package/dist/tooltip.cjs +15 -0
  1078. package/dist/tooltip.cjs.map +1 -0
  1079. package/dist/tooltip.js +121 -0
  1080. package/dist/tooltip.js.map +1 -0
  1081. package/dist/types/index.d.ts +2 -0
  1082. package/dist/types/index.d.ts.map +1 -0
  1083. package/dist/utils/css.cjs +2 -0
  1084. package/dist/utils/css.cjs.map +1 -0
  1085. package/dist/utils/css.d.ts +10 -0
  1086. package/dist/utils/css.d.ts.map +1 -0
  1087. package/dist/utils/css.js +10 -0
  1088. package/dist/utils/css.js.map +1 -0
  1089. package/dist/utils/index.d.ts +3 -0
  1090. package/dist/utils/index.d.ts.map +1 -0
  1091. package/dist/utils/link.cjs +2 -0
  1092. package/dist/utils/link.cjs.map +1 -0
  1093. package/dist/utils/link.d.ts +44 -0
  1094. package/dist/utils/link.d.ts.map +1 -0
  1095. package/dist/utils/link.js +19 -0
  1096. package/dist/utils/link.js.map +1 -0
  1097. package/package.json +464 -0
package/dist/tabs.js ADDED
@@ -0,0 +1,126 @@
1
+ import { colorThemeMixin as e } from "./styles/mixins/theme.css.js";
2
+ import { sizableBundle as t, themableBundle as n } from "./shared/prop-bundles.js";
3
+ import { createInteraction as r } from "./headless/keyboard.js";
4
+ import { createListControl as i } from "./headless/nav.js";
5
+ import a from "./disclosure/tabs/tabs.css?inline.js";
6
+ import { createContext as o, define as s, html as c, prop as l, ref as u } from "@vielzeug/ore";
7
+ import { computed as d, signal as f, watch as p } from "@vielzeug/ripple";
8
+ //#region src/disclosure/tabs/tabs.ts
9
+ var m = o("TabsContext"), h = "ore-tabs";
10
+ s(h, {
11
+ props: {
12
+ ...n,
13
+ ...t,
14
+ activation: l.oneOf(["auto", "manual"], "auto"),
15
+ label: l.string(),
16
+ orientation: l.oneOf(["horizontal", "vertical"], "horizontal"),
17
+ value: l.string(),
18
+ variant: l.string()
19
+ },
20
+ setup(e, { bind: t, el: n, emit: a, onMounted: o, provide: s }) {
21
+ let l = n.shadowRoot, h = u(), g = u(), _ = f(e.value.value), v = () => e.activation.value === "manual", y = () => e.orientation.value === "vertical";
22
+ t({ attr: { value: () => _.value ?? null } });
23
+ let b = () => [...n.querySelectorAll(":scope > ore-tab-item[slot=\"tabs\"]")], x = () => b().filter((e) => !e.hasAttribute("disabled")), S = (e) => {
24
+ e && (e.shadowRoot?.querySelector("[role=\"tab\"]") ?? e).focus();
25
+ }, C = (e, t = !1) => {
26
+ _.value = e, t && e && a("change", { value: e });
27
+ }, w = () => {
28
+ let e = b();
29
+ if (e.length === 0) return;
30
+ let t = _.value;
31
+ if (t && e.some((e) => e.getAttribute("value") === t && !e.hasAttribute("disabled"))) return;
32
+ let n = e.find((e) => !e.hasAttribute("disabled"))?.getAttribute("value") ?? void 0;
33
+ C(n, !1);
34
+ };
35
+ p(e.value, (e) => {
36
+ _.value = e, w();
37
+ });
38
+ let T = i({
39
+ getItems: () => x(),
40
+ loop: !0,
41
+ onNavigate: (e, t) => {
42
+ let n = x()[t];
43
+ if (S(n), !v()) {
44
+ let e = n?.getAttribute("value");
45
+ e && C(e, !0);
46
+ }
47
+ },
48
+ orientation: () => y() ? "vertical" : "both"
49
+ });
50
+ s(m, {
51
+ color: e.color,
52
+ orientation: d(() => e.orientation.value ?? "horizontal"),
53
+ size: e.size,
54
+ value: _,
55
+ variant: e.variant
56
+ });
57
+ let E = (e) => {
58
+ let t = g.value, n = h.value;
59
+ if (!t || !n || !e) return;
60
+ let r = e.getBoundingClientRect(), i = n.getBoundingClientRect();
61
+ if (y()) {
62
+ let e = r.top - i.top + n.scrollTop;
63
+ t.style.transition = "none", t.style.height = `${r.height}px`, t.style.width = "", t.style.left = "0", t.style.top = "0", t.offsetWidth, t.style.transition = "", t.style.transform = `translateY(${e}px)`;
64
+ } else {
65
+ let e = r.left - i.left + n.scrollLeft;
66
+ t.style.transition = "none", t.style.width = `${r.width}px`, t.style.height = "", t.style.top = "", t.style.left = "0", t.offsetWidth, t.style.transition = "", t.style.transform = `translateX(${e}px)`;
67
+ }
68
+ }, D = () => {
69
+ let e = _.value;
70
+ if (!e) return;
71
+ let t = b().find((t) => t.getAttribute("value") === e);
72
+ E(t);
73
+ };
74
+ p(_, () => {
75
+ requestAnimationFrame(D);
76
+ });
77
+ let O = (e) => {
78
+ let t = e.composedPath().find((e) => e instanceof HTMLElement && e.localName === "ore-tab-item");
79
+ if (!t || t.hasAttribute("disabled") || t.closest("ore-tabs") !== n) return;
80
+ let r = t.getAttribute("value");
81
+ !r || r === _.value || C(r, !0);
82
+ }, k = r({
83
+ disabled: d(() => !v()),
84
+ onPress: () => {
85
+ let e = x().find((e) => e === document.activeElement || e.shadowRoot?.activeElement === document.activeElement)?.getAttribute("value");
86
+ e && e !== _.value && C(e, !0);
87
+ }
88
+ });
89
+ return t({ on: {
90
+ click: O,
91
+ keydown: (e) => {
92
+ let t = x();
93
+ if (t.length === 0) return;
94
+ let n = e.composedPath().find((e) => e instanceof HTMLElement && e.localName === "ore-tab-item") ?? t.find((e) => e.getAttribute("value") === _.value), r = n ? t.indexOf(n) : -1;
95
+ r >= 0 && T.set(r), !T.handleKeydown(e) && k.handleKeydown(e);
96
+ }
97
+ } }), o(() => {
98
+ let e = () => {
99
+ w(), D();
100
+ }, t = l?.querySelector("slot[name=\"tabs\"]");
101
+ return t && t.addEventListener("slotchange", e), e(), requestAnimationFrame(e), () => {
102
+ t && t.removeEventListener("slotchange", e);
103
+ };
104
+ }), c`
105
+ <div class="tablist-wrapper">
106
+ <div
107
+ role="tablist"
108
+ ref="${h}"
109
+ part="tablist"
110
+ aria-orientation="${e.orientation}"
111
+ aria-label="${e.label}">
112
+ <slot name="tabs"></slot>
113
+ </div>
114
+ <div class="indicator" ref="${g}" part="indicator"></div>
115
+ </div>
116
+ <div class="panels" part="panels">
117
+ <slot></slot>
118
+ </div>
119
+ `;
120
+ },
121
+ styles: [e, a]
122
+ });
123
+ //#endregion
124
+ export { m as TABS_CTX, h as TABS_TAG };
125
+
126
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tabs.js","names":[],"sources":["../src/disclosure/tabs/tabs.ts"],"sourcesContent":["import { createContext, define, html, prop, ref } from '@vielzeug/ore';\nimport { computed, type Readable, signal, watch } from '@vielzeug/ripple';\n\nimport type { ComponentSize, SurfaceVariant, ThemeColor } from '../../types';\n\nimport { createInteraction, createListControl } from '../../headless';\nimport { sizableBundle, themableBundle } from '../../shared';\nimport { colorThemeMixin } from '../../styles';\nimport styles from './tabs.css?inline';\n\n/** Context provided by ore-tabs to its ore-tab-item and ore-tab-panel children. */\nexport type TabsContext = {\n color: Readable<ThemeColor | undefined>;\n orientation: Readable<'horizontal' | 'vertical'>;\n size: Readable<ComponentSize | undefined>;\n value: Readable<string | undefined>;\n variant: Readable<SurfaceVariant | undefined>;\n};\n/** Injection key for the tabs context. */\nexport const TABS_CTX = createContext<TabsContext>('TabsContext');\n\nexport type OreTabsEvents = {\n change: { value: string };\n};\n\nexport type OreTabsProps = {\n /**\n * Keyboard activation mode.\n * - `'auto'` (default): Selecting a tab on arrow-key focus immediately activates it (ARIA recommendation for most cases).\n * - `'manual'`: Arrow keys only move focus; the user must press Enter or Space to activate the focused tab.\n */\n activation?: 'auto' | 'manual';\n /** Theme color */\n color?: ThemeColor;\n /** Accessible label for the tablist (passed as aria-label). Use when there is no visible heading labelling the tabs. */\n label?: string;\n /** Tab list orientation */\n orientation?: 'horizontal' | 'vertical';\n /** Component size */\n size?: ComponentSize;\n /** Currently selected tab value */\n value?: string;\n /** Visual style variant */\n variant?: SurfaceVariant;\n};\n\n/**\n * Tabs container. Manages tab selection and syncs state to child tab items and panels.\n *\n * @element ore-tabs\n * @element ore-tab-item - Child element for tab buttons (auto-discovered)\n * @element ore-tab-panel - Child element for tab content (auto-discovered)\n *\n * @attr {string} value - The value of the currently selected tab\n * @attr {string} variant - Visual variant: 'solid' | 'flat' | 'bordered' | 'ghost' | 'glass' | 'frost'\n * @attr {string} size - Size: 'sm' | 'md' | 'lg'\n * @attr {string} color - Theme color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n *\n * @fires change - Emitted when the active tab changes with detail: { value: string }\n *\n * @slot tabs - Place `ore-tab-item` elements here\n * @slot - Place `ore-tab-panel` elements here\n *\n * @cssprop --tabs-radius - Border radius of the tablist container and panels\n * @cssprop --tabs-transition - Transition duration/easing for the active indicator\n * @cssprop --tabs-indicator-color - Color of the sliding active indicator line\n * @cssprop --tabs-bg - Background of the host element (flat variant)\n * @cssprop --tabs-tablist-bg - Tablist container background (solid/glass/frost variants)\n * @cssprop --tabs-tablist-border-color - Tablist container border color\n * @part tablist - Container that holds the slotted tab items\n * @part indicator - Active tab indicator element\n * @part panels - Container that holds tab panel content\n * @example\n * ```html\n * <ore-tabs value=\"tab1\" variant=\"bordered\">\n * <ore-tab-item slot=\"tabs\" value=\"tab1\">Overview</ore-tab-item>\n * <ore-tab-item slot=\"tabs\" value=\"tab2\">Settings</ore-tab-item>\n * <ore-tab-panel value=\"tab1\"><p>Overview content</p></ore-tab-panel>\n * <ore-tab-panel value=\"tab2\"><p>Settings content</p></ore-tab-panel>\n * </ore-tabs>\n * ```\n */\nexport const TABS_TAG = 'ore-tabs' as const;\ndefine<OreTabsProps, OreTabsEvents>(TABS_TAG, {\n props: {\n ...themableBundle,\n ...sizableBundle,\n activation: prop.oneOf(['auto', 'manual'] as const, 'auto'),\n label: prop.string(),\n orientation: prop.oneOf(['horizontal', 'vertical'] as const, 'horizontal'),\n value: prop.string(),\n variant: prop.string<SurfaceVariant>(),\n },\n setup(props, { bind, el, emit, onMounted, provide }) {\n const shadowRoot = el.shadowRoot;\n const tablistRef = ref<HTMLElement>();\n const indicatorRef = ref<HTMLElement>();\n const selectedValue = signal<string | undefined>(props.value.value);\n const isManualActivation = () => props.activation.value === 'manual';\n const isVertical = () => props.orientation.value === 'vertical';\n\n bind({\n attr: {\n value: () => selectedValue.value ?? null,\n },\n });\n\n const getTabs = () => [...el.querySelectorAll<HTMLElement>(':scope > ore-tab-item[slot=\"tabs\"]')];\n const getEnabledTabs = () => getTabs().filter((t) => !t.hasAttribute('disabled'));\n const focusTab = (tab: HTMLElement | undefined) => {\n if (!tab) return;\n\n const focusable = tab.shadowRoot?.querySelector<HTMLElement>('[role=\"tab\"]') ?? tab;\n\n focusable.focus();\n };\n\n // ────────────────────────────────────────────────────────────────\n // Selection State Management\n // ────────────────────────────────────────────────────────────────\n\n const setSelection = (value: string | undefined, shouldEmit = false) => {\n selectedValue.value = value;\n\n if (shouldEmit && value) emit('change', { value });\n };\n\n const ensureSelection = () => {\n const tabs = getTabs();\n\n if (tabs.length === 0) return; // No tabs yet, keep current selection\n\n const current = selectedValue.value;\n const hasCurrent = current\n ? tabs.some((tab) => tab.getAttribute('value') === current && !tab.hasAttribute('disabled'))\n : false;\n\n if (hasCurrent) return;\n\n const firstEnabled = tabs.find((tab) => !tab.hasAttribute('disabled'))?.getAttribute('value') ?? undefined;\n\n setSelection(firstEnabled, false);\n };\n\n watch(props.value, (value) => {\n selectedValue.value = value;\n ensureSelection();\n });\n\n // ────────────────────────────────────────────────────────────────\n // List Control for Keyboard Navigation\n // ────────────────────────────────────────────────────────────────\n\n const listControl = createListControl({\n getItems: () => getEnabledTabs(),\n loop: true,\n onNavigate: (_action, index) => {\n const tabs = getEnabledTabs();\n const nextTab = tabs[index];\n\n focusTab(nextTab);\n\n if (!isManualActivation()) {\n const value = nextTab?.getAttribute('value');\n\n if (value) setSelection(value, true);\n }\n },\n orientation: () => (isVertical() ? 'vertical' : 'both'),\n });\n\n // ────────────────────────────────────────────────────────────────\n // Context & Indicator Management\n // ────────────────────────────────────────────────────────────────\n\n provide(TABS_CTX, {\n color: props.color,\n orientation: computed(() => props.orientation.value ?? 'horizontal'),\n size: props.size,\n value: selectedValue,\n variant: props.variant,\n });\n\n const moveIndicator = (activeTab: HTMLElement | undefined) => {\n const indicator = indicatorRef.value;\n const tablist = tablistRef.value;\n\n if (!indicator || !tablist || !activeTab) return;\n\n const tabRect = activeTab.getBoundingClientRect();\n const listRect = tablist.getBoundingClientRect();\n\n if (isVertical()) {\n const y = tabRect.top - listRect.top + tablist.scrollTop;\n\n indicator.style.transition = 'none';\n indicator.style.height = `${tabRect.height}px`;\n indicator.style.width = '';\n indicator.style.left = '0';\n indicator.style.top = '0';\n void indicator.offsetWidth;\n indicator.style.transition = '';\n indicator.style.transform = `translateY(${y}px)`;\n } else {\n const x = tabRect.left - listRect.left + tablist.scrollLeft;\n\n indicator.style.transition = 'none';\n indicator.style.width = `${tabRect.width}px`;\n indicator.style.height = '';\n indicator.style.top = '';\n indicator.style.left = '0';\n void indicator.offsetWidth;\n indicator.style.transition = '';\n indicator.style.transform = `translateX(${x}px)`;\n }\n };\n\n const updateIndicator = () => {\n const value = selectedValue.value;\n\n if (!value) return;\n\n const activeTab = getTabs().find((t) => t.getAttribute('value') === value);\n\n moveIndicator(activeTab);\n };\n\n watch(selectedValue, () => {\n requestAnimationFrame(updateIndicator);\n });\n\n // ────────────────────────────────────────────────────────────────\n // Event Handlers\n // ────────────────────────────────────────────────────────────────\n\n const handleTabClick = (e: Event) => {\n const tab = e\n .composedPath()\n .find((node): node is HTMLElement => node instanceof HTMLElement && node.localName === 'ore-tab-item');\n\n if (!tab || tab.hasAttribute('disabled')) return;\n\n // Guard: only respond to tab-items that belong to THIS tabs instance\n if (tab.closest('ore-tabs') !== el) return;\n\n const value = tab.getAttribute('value');\n\n if (!value || value === selectedValue.value) return;\n\n setSelection(value, true);\n };\n\n const activateFocusedTab = (): void => {\n const tabs = getEnabledTabs();\n const focusedTab = tabs.find(\n (tab) => tab === document.activeElement || tab.shadowRoot?.activeElement === document.activeElement,\n );\n const focusedValue = focusedTab?.getAttribute('value');\n\n if (focusedValue && focusedValue !== selectedValue.value) setSelection(focusedValue, true);\n };\n\n const manualActivationPress = createInteraction({\n disabled: computed(() => !isManualActivation()),\n onPress: activateFocusedTab,\n });\n\n const handleKeydown = (e: KeyboardEvent) => {\n const tabs = getEnabledTabs();\n\n if (tabs.length === 0) return;\n\n const path = e.composedPath();\n const activeTabFromEvent = path.find(\n (node): node is HTMLElement => node instanceof HTMLElement && node.localName === 'ore-tab-item',\n );\n\n const tabFromEvent = activeTabFromEvent ?? tabs.find((t) => t.getAttribute('value') === selectedValue.value);\n const focused = tabFromEvent ? tabs.indexOf(tabFromEvent) : -1;\n\n if (focused >= 0) listControl.set(focused);\n\n if (listControl.handleKeydown(e)) return;\n\n manualActivationPress.handleKeydown(e);\n };\n\n bind({\n on: {\n click: handleTabClick,\n keydown: handleKeydown,\n },\n });\n\n // ────────────────────────────────────────────────────────────────\n // Lifecycle\n // ────────────────────────────────────────────────────────────────\n\n onMounted(() => {\n const syncSelection = () => {\n ensureSelection();\n updateIndicator();\n };\n\n const tabsSlot = shadowRoot?.querySelector<HTMLSlotElement>('slot[name=\"tabs\"]');\n\n if (tabsSlot) {\n tabsSlot.addEventListener('slotchange', syncSelection);\n }\n\n syncSelection();\n requestAnimationFrame(syncSelection);\n\n return () => {\n if (tabsSlot) {\n tabsSlot.removeEventListener('slotchange', syncSelection);\n }\n };\n });\n\n return html`\n <div class=\"tablist-wrapper\">\n <div\n role=\"tablist\"\n ref=\"${tablistRef}\"\n part=\"tablist\"\n aria-orientation=\"${props.orientation}\"\n aria-label=\"${props.label}\">\n <slot name=\"tabs\"></slot>\n </div>\n <div class=\"indicator\" ref=\"${indicatorRef}\" part=\"indicator\"></div>\n </div>\n <div class=\"panels\" part=\"panels\">\n <slot></slot>\n </div>\n `;\n },\n styles: [colorThemeMixin, styles],\n});\n"],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ /**
2
+ * @vielzeug/refine/testing
3
+ *
4
+ * Testing utilities for refine components. Provides a11y helpers, ARIA query
5
+ * utilities, and convenience wrappers for common patterns in component tests.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { getAriaLabel, getAriaDescribedBy, isAriaInvalid } from '@vielzeug/refine/testing';
10
+ * import { mount } from '@vielzeug/ore/testing';
11
+ *
12
+ * const fixture = mount('<ore-input label="Name"></ore-input>');
13
+ * const input = fixture.query('input')!;
14
+ * expect(isAriaInvalid(input)).toBe(false);
15
+ * ```
16
+ */
17
+ /** Returns whether `aria-invalid="true"` is set on the element. */
18
+ export declare const isAriaInvalid: (el: Element) => boolean;
19
+ /** Returns whether `aria-disabled="true"` is set on the element. */
20
+ export declare const isAriaDisabled: (el: Element) => boolean;
21
+ /** Returns whether `aria-checked="true"` is set on the element. */
22
+ export declare const isAriaChecked: (el: Element) => boolean;
23
+ /** Returns whether `aria-checked="mixed"` is set on the element. */
24
+ export declare const isAriaIndeterminate: (el: Element) => boolean;
25
+ /** Returns whether `aria-expanded="true"` is set on the element. */
26
+ export declare const isAriaExpanded: (el: Element) => boolean;
27
+ /** Returns whether `aria-pressed="true"` is set on the element. */
28
+ export declare const isAriaPressed: (el: Element) => boolean;
29
+ /** Returns whether `aria-required="true"` is set on the element. */
30
+ export declare const isAriaRequired: (el: Element) => boolean;
31
+ /** Returns whether `aria-hidden="true"` is set on the element. */
32
+ export declare const isAriaHidden: (el: Element) => boolean;
33
+ /** Returns the `aria-label` string attribute, or null. */
34
+ export declare const getAriaLabel: (el: Element) => null | string;
35
+ /** Returns the `aria-labelledby` attribute value (space-separated IDs), or null. */
36
+ export declare const getAriaLabelledBy: (el: Element) => null | string;
37
+ /** Returns the `aria-describedby` attribute value (space-separated IDs), or null. */
38
+ export declare const getAriaDescribedBy: (el: Element) => null | string;
39
+ /** Returns the `aria-controls` attribute value, or null. */
40
+ export declare const getAriaControls: (el: Element) => null | string;
41
+ /** Returns the `role` attribute value, or null. */
42
+ export declare const getRole: (el: Element) => null | string;
43
+ /**
44
+ * Queries the shadow root of a custom element for a matching CSS selector.
45
+ * Returns null if the element has no shadow root or no match is found.
46
+ */
47
+ export declare const queryInShadow: <T extends Element = Element>(host: Element, selector: string) => null | T;
48
+ /**
49
+ * Queries all matching elements inside the shadow root of a custom element.
50
+ * Returns an empty array if the element has no shadow root.
51
+ */
52
+ export declare const queryAllInShadow: <T extends Element = Element>(host: Element, selector: string) => T[];
53
+ /**
54
+ * Queries a shadow DOM element by its CSS `part` attribute.
55
+ * Shorthand for `queryInShadow(host, '[part="name"]')`.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * const btn = queryPart(carousel, 'prev-btn');
60
+ * expect(btn).not.toBeNull();
61
+ * ```
62
+ */
63
+ export declare const queryPart: <T extends Element = Element>(host: Element, part: string) => null | T;
64
+ /**
65
+ * Returns an array of light-DOM children assigned to a named slot,
66
+ * or all slotted children if no name is given.
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * const slides = getSlotted(carousel);
71
+ * expect(slides).toHaveLength(3);
72
+ * ```
73
+ */
74
+ export declare const getSlotted: (host: Element, slotName?: string) => Element[];
75
+ /**
76
+ * Dispatches a `PointerEvent` on the given element.
77
+ * Useful for testing hover, drag, and pointer interactions without
78
+ * relying on the fire helper from @vielzeug/ore/testing.
79
+ *
80
+ * @example
81
+ * ```ts
82
+ * dispatchPointer(el, 'enter');
83
+ * dispatchPointer(el, 'leave');
84
+ * ```
85
+ */
86
+ export declare const dispatchPointer: (el: Element, type: "cancel" | "down" | "enter" | "leave" | "move" | "up", init?: PointerEventInit) => void;
87
+ /**
88
+ * Returns the current form value of a form-associated custom element.
89
+ * Uses the ElementInternals-exposed `value` if available, then falls back
90
+ * to the reflected DOM `value` property.
91
+ */
92
+ export declare const getFormValue: (el: HTMLElement & {
93
+ value?: string;
94
+ }) => null | string;
95
+ /**
96
+ * Returns whether a form-associated element is considered valid (no constraint
97
+ * violations reported by the browser or via `setValidity`).
98
+ */
99
+ export declare const isFormValid: (el: HTMLElement & {
100
+ validity?: ValidityState;
101
+ }) => boolean;
102
+ /**
103
+ * Creates a synthetic `KeyboardEvent` with the given key.
104
+ * Useful for testing keyboard navigation in headless controls.
105
+ */
106
+ export declare const keyEvent: (key: string, init?: KeyboardEventInit) => KeyboardEvent;
107
+ /**
108
+ * Returns a Promise that resolves after a microtask tick (one `queueMicrotask`).
109
+ * Use when you need to wait for reactivity (signal effects) to settle without
110
+ * moving into the macrotask queue.
111
+ */
112
+ export declare const nextTick: () => Promise<void>;
113
+ /**
114
+ * Returns a Promise that resolves after `ms` milliseconds.
115
+ * Use sparingly — prefer `nextTick()` for reactive updates.
116
+ */
117
+ export declare const wait: (ms?: number) => Promise<void>;
118
+ /**
119
+ * Resets the headless ID counter to 0. Use in test `beforeEach` hooks when you need
120
+ * deterministic IDs across test runs.
121
+ *
122
+ * @example
123
+ * ```ts
124
+ * import { resetIdCounter } from '@vielzeug/refine/testing';
125
+ * beforeEach(() => resetIdCounter());
126
+ * ```
127
+ */
128
+ export { resetIdCounter } from '@vielzeug/ore';
129
+ /**
130
+ * Returns a snapshot of the most commonly tested ARIA attributes on an element.
131
+ * Useful for concise inline snapshot assertions in component tests.
132
+ *
133
+ * `ariaLabel` and `labelledby` are kept separate because `aria-label` is a
134
+ * direct string while `aria-labelledby` is an ID reference — conflating them
135
+ * masks bugs where the wrong labelling mechanism is used.
136
+ *
137
+ * @example
138
+ * ```ts
139
+ * expect(getAriaState(input)).toMatchObject({ invalid: 'true', required: 'true' });
140
+ * ```
141
+ */
142
+ export declare const getAriaState: (el: Element) => {
143
+ ariaLabel: null | string;
144
+ checked: null | string;
145
+ disabled: null | string;
146
+ expanded: null | string;
147
+ invalid: null | string;
148
+ labelledby: null | string;
149
+ required: null | string;
150
+ role: null | string;
151
+ };
152
+ import type { Fixture } from '@vielzeug/ore/testing';
153
+ import type { OreButtonGroupProps } from '../inputs/button-group/button-group';
154
+ import type { OreButtonProps } from '../inputs/button/button';
155
+ import type { OreCheckboxGroupProps } from '../inputs/checkbox-group/checkbox-group';
156
+ import type { OreCheckboxProps } from '../inputs/checkbox/checkbox';
157
+ import type { OreComboboxProps } from '../inputs/combobox/combobox.types';
158
+ import type { OreFileInputProps } from '../inputs/file-input/file-input';
159
+ import type { OreFormProps } from '../inputs/form/form';
160
+ import type { OreInputProps } from '../inputs/input/input';
161
+ import type { OreNumberInputProps } from '../inputs/number-input/number-input';
162
+ import type { OreOtpInputProps } from '../inputs/otp-input/otp-input';
163
+ import type { OreRadioGroupProps } from '../inputs/radio-group/radio-group';
164
+ import type { OreRadioProps } from '../inputs/radio/radio';
165
+ import type { OreRatingProps } from '../inputs/rating/rating';
166
+ import type { OreSelectProps } from '../inputs/select/select';
167
+ import type { OreSliderProps } from '../inputs/slider/slider';
168
+ import type { OreSwitchProps } from '../inputs/switch/switch';
169
+ import type { OreTextareaProps } from '../inputs/textarea/textarea';
170
+ /**
171
+ * Serializes an attribute map to an HTML attribute string fragment.
172
+ * Values are HTML-escaped to prevent attribute injection.
173
+ *
174
+ * @example
175
+ * ```ts
176
+ * attrsToHtml({ disabled: '', label: 'Name' }); // → 'disabled label="Name"'
177
+ * ```
178
+ */
179
+ export declare const attrsToHtml: (attrs: Record<string, string>) => string;
180
+ /**
181
+ * Converts a props object into an HTML attribute record.
182
+ * - `true` → empty boolean attribute (e.g., `disabled`)
183
+ * - `false` / `null` / `undefined` → attribute omitted
184
+ * - Array of objects → **omitted** (cannot be serialized as an HTML attribute;
185
+ * use `opts.innerHTML` with slotted elements instead)
186
+ * - Array of primitives → comma-joined string
187
+ * - everything else → stringified
188
+ *
189
+ * @example
190
+ * ```ts
191
+ * propsToAttrs({ disabled: true, label: 'Name', value: undefined });
192
+ * // → { disabled: '', label: 'Name' }
193
+ * ```
194
+ */
195
+ export declare const propsToAttrs: (props?: Record<string, unknown>) => Record<string, string>;
196
+ type MountOptions = {
197
+ innerHTML?: string;
198
+ };
199
+ /** Typed mount wrapper for `<ore-input>`. Catch prop name typos at compile time. */
200
+ export declare const mountOreInput: (props?: Partial<OreInputProps>, opts?: MountOptions) => Promise<Fixture>;
201
+ /** Typed mount wrapper for `<ore-textarea>`. */
202
+ export declare const mountOreTextarea: (props?: Partial<OreTextareaProps>, opts?: MountOptions) => Promise<Fixture>;
203
+ /** Typed mount wrapper for `<ore-select>`. */
204
+ export declare const mountOreSelect: (props?: Partial<OreSelectProps>, opts?: MountOptions) => Promise<Fixture>;
205
+ /** Typed mount wrapper for `<ore-combobox>`. */
206
+ export declare const mountOreCombobox: (props?: Partial<OreComboboxProps>, opts?: MountOptions) => Promise<Fixture>;
207
+ /** Typed mount wrapper for `<ore-checkbox>`. */
208
+ export declare const mountOreCheckbox: (props?: Partial<OreCheckboxProps>, opts?: MountOptions) => Promise<Fixture>;
209
+ /** Typed mount wrapper for `<ore-checkbox-group>`. */
210
+ export declare const mountOreCheckboxGroup: (props?: Partial<OreCheckboxGroupProps>, opts?: MountOptions) => Promise<Fixture>;
211
+ /** Typed mount wrapper for `<ore-radio>`. */
212
+ export declare const mountOreRadio: (props?: Partial<OreRadioProps>, opts?: MountOptions) => Promise<Fixture>;
213
+ /** Typed mount wrapper for `<ore-radio-group>`. */
214
+ export declare const mountOreRadioGroup: (props?: Partial<OreRadioGroupProps>, opts?: MountOptions) => Promise<Fixture>;
215
+ /** Typed mount wrapper for `<ore-switch>`. */
216
+ export declare const mountOreSwitch: (props?: Partial<OreSwitchProps>, opts?: MountOptions) => Promise<Fixture>;
217
+ /** Typed mount wrapper for `<ore-button>`. */
218
+ export declare const mountOreButton: (props?: Partial<OreButtonProps>, opts?: MountOptions) => Promise<Fixture>;
219
+ /** Typed mount wrapper for `<ore-button-group>`. */
220
+ export declare const mountOreButtonGroup: (props?: Partial<OreButtonGroupProps>, opts?: MountOptions) => Promise<Fixture>;
221
+ /** Typed mount wrapper for `<ore-file-input>`. */
222
+ export declare const mountOreFileInput: (props?: Partial<OreFileInputProps>, opts?: MountOptions) => Promise<Fixture>;
223
+ /** Typed mount wrapper for `<ore-form>`. */
224
+ export declare const mountOreForm: (props?: Partial<OreFormProps>, opts?: MountOptions) => Promise<Fixture>;
225
+ /** Typed mount wrapper for `<ore-number-input>`. */
226
+ export declare const mountOreNumberInput: (props?: Partial<OreNumberInputProps>, opts?: MountOptions) => Promise<Fixture>;
227
+ /** Typed mount wrapper for `<ore-otp-input>`. */
228
+ export declare const mountOreOtpInput: (props?: Partial<OreOtpInputProps>, opts?: MountOptions) => Promise<Fixture>;
229
+ /** Typed mount wrapper for `<ore-rating>`. */
230
+ export declare const mountOreRating: (props?: Partial<OreRatingProps>, opts?: MountOptions) => Promise<Fixture>;
231
+ /** Typed mount wrapper for `<ore-slider>`. */
232
+ export declare const mountOreSlider: (props?: Partial<OreSliderProps>, opts?: MountOptions) => Promise<Fixture>;
233
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./ore/dist/testing/mount.cjs");require("./ore/dist/testing.cjs");let t=require("@vielzeug/ore");var n=e=>e.getAttribute(`aria-invalid`)===`true`,r=e=>e.getAttribute(`aria-disabled`)===`true`,i=e=>e.getAttribute(`aria-checked`)===`true`,a=e=>e.getAttribute(`aria-checked`)===`mixed`,o=e=>e.getAttribute(`aria-expanded`)===`true`,s=e=>e.getAttribute(`aria-pressed`)===`true`,c=e=>e.getAttribute(`aria-required`)===`true`,l=e=>e.getAttribute(`aria-hidden`)===`true`,u=e=>e.getAttribute(`aria-label`),d=e=>e.getAttribute(`aria-labelledby`),f=e=>e.getAttribute(`aria-describedby`),p=e=>e.getAttribute(`aria-controls`),m=e=>e.getAttribute(`role`),h=(e,t)=>e.shadowRoot?.querySelector(t)??null,g=(e,t)=>Array.from(e.shadowRoot?.querySelectorAll(t)??[]),_=(e,t)=>h(e,`[part="${t}"]`),v=(e,t)=>{let n=t?`[slot="${t}"]`:`:not([slot])`;return Array.from(e.querySelectorAll(`:scope > ${n}`))},y=(e,t,n)=>{e.dispatchEvent(new PointerEvent(`pointer${t}`,{bubbles:!0,composed:!0,...n}))},b=e=>e.value??null,x=e=>e.validity?.valid??!0,S=(e,t)=>new KeyboardEvent(`keydown`,{bubbles:!0,cancelable:!0,key:e,...t}),C=()=>new Promise(e=>{queueMicrotask(e)}),w=(e=0)=>new Promise(t=>{setTimeout(t,e)}),T=e=>({ariaLabel:e.getAttribute(`aria-label`),checked:e.getAttribute(`aria-checked`),disabled:e.getAttribute(`aria-disabled`),expanded:e.getAttribute(`aria-expanded`),invalid:e.getAttribute(`aria-invalid`),labelledby:e.getAttribute(`aria-labelledby`),required:e.getAttribute(`aria-required`),role:e.getAttribute(`role`)}),E=e=>Object.entries(e).map(([e,t])=>t===``?e:`${e}="${t.replace(/"/g,`&quot;`)}"`).join(` `),D=(e={})=>{let t={};for(let[n,r]of Object.entries(e))if(!(r===!1||r==null))if(r===!0)t[n]=``;else if(Array.isArray(r)){if(r.length>0&&typeof r[0]==`object`)continue;t[n]=r.join(`,`)}else t[n]=String(r);return t},O=(t,n)=>e.mount(`<ore-input ${E(D(t))}>${n?.innerHTML??``}</ore-input>`),k=(t,n)=>e.mount(`<ore-textarea ${E(D(t))}>${n?.innerHTML??``}</ore-textarea>`),A=(t,n)=>e.mount(`<ore-select ${E(D(t))}>${n?.innerHTML??``}</ore-select>`),j=(t,n)=>e.mount(`<ore-combobox ${E(D(t))}>${n?.innerHTML??``}</ore-combobox>`),M=(t,n)=>e.mount(`<ore-checkbox ${E(D(t))}>${n?.innerHTML??``}</ore-checkbox>`),N=(t,n)=>e.mount(`<ore-checkbox-group ${E(D(t))}>${n?.innerHTML??``}</ore-checkbox-group>`),P=(t,n)=>e.mount(`<ore-radio ${E(D(t))}>${n?.innerHTML??``}</ore-radio>`),F=(t,n)=>e.mount(`<ore-radio-group ${E(D(t))}>${n?.innerHTML??``}</ore-radio-group>`),I=(t,n)=>e.mount(`<ore-switch ${E(D(t))}>${n?.innerHTML??``}</ore-switch>`),L=(t,n)=>e.mount(`<ore-button ${E(D(t))}>${n?.innerHTML??``}</ore-button>`),R=(t,n)=>e.mount(`<ore-button-group ${E(D(t))}>${n?.innerHTML??``}</ore-button-group>`),z=(t,n)=>e.mount(`<ore-file-input ${E(D(t))}>${n?.innerHTML??``}</ore-file-input>`),B=(t,n)=>e.mount(`<ore-form ${E(D(t))}>${n?.innerHTML??``}</ore-form>`),V=(t,n)=>e.mount(`<ore-number-input ${E(D(t))}>${n?.innerHTML??``}</ore-number-input>`),H=(t,n)=>e.mount(`<ore-otp-input ${E(D(t))}>${n?.innerHTML??``}</ore-otp-input>`),U=(t,n)=>e.mount(`<ore-rating ${E(D(t))}>${n?.innerHTML??``}</ore-rating>`),W=(t,n)=>e.mount(`<ore-slider ${E(D(t))}>${n?.innerHTML??``}</ore-slider>`);exports.attrsToHtml=E,exports.dispatchPointer=y,exports.getAriaControls=p,exports.getAriaDescribedBy=f,exports.getAriaLabel=u,exports.getAriaLabelledBy=d,exports.getAriaState=T,exports.getFormValue=b,exports.getRole=m,exports.getSlotted=v,exports.isAriaChecked=i,exports.isAriaDisabled=r,exports.isAriaExpanded=o,exports.isAriaHidden=l,exports.isAriaIndeterminate=a,exports.isAriaInvalid=n,exports.isAriaPressed=s,exports.isAriaRequired=c,exports.isFormValid=x,exports.keyEvent=S,exports.mountOreButton=L,exports.mountOreButtonGroup=R,exports.mountOreCheckbox=M,exports.mountOreCheckboxGroup=N,exports.mountOreCombobox=j,exports.mountOreFileInput=z,exports.mountOreForm=B,exports.mountOreInput=O,exports.mountOreNumberInput=V,exports.mountOreOtpInput=H,exports.mountOreRadio=P,exports.mountOreRadioGroup=F,exports.mountOreRating=U,exports.mountOreSelect=A,exports.mountOreSlider=W,exports.mountOreSwitch=I,exports.mountOreTextarea=k,exports.nextTick=C,exports.propsToAttrs=D,exports.queryAllInShadow=g,exports.queryInShadow=h,exports.queryPart=_,Object.defineProperty(exports,"resetIdCounter",{enumerable:!0,get:function(){return t.resetIdCounter}}),exports.wait=w;
2
+ //# sourceMappingURL=testing.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.cjs","names":[],"sources":["../src/testing/index.ts"],"sourcesContent":["/**\n * @vielzeug/refine/testing\n *\n * Testing utilities for refine components. Provides a11y helpers, ARIA query\n * utilities, and convenience wrappers for common patterns in component tests.\n *\n * @example\n * ```typescript\n * import { getAriaLabel, getAriaDescribedBy, isAriaInvalid } from '@vielzeug/refine/testing';\n * import { mount } from '@vielzeug/ore/testing';\n *\n * const fixture = mount('<ore-input label=\"Name\"></ore-input>');\n * const input = fixture.query('input')!;\n * expect(isAriaInvalid(input)).toBe(false);\n * ```\n */\n\n// ── ARIA attribute helpers ────────────────────────────────────────────────────\n\n/** Returns whether `aria-invalid=\"true\"` is set on the element. */\nexport const isAriaInvalid = (el: Element): boolean => el.getAttribute('aria-invalid') === 'true';\n\n/** Returns whether `aria-disabled=\"true\"` is set on the element. */\nexport const isAriaDisabled = (el: Element): boolean => el.getAttribute('aria-disabled') === 'true';\n\n/** Returns whether `aria-checked=\"true\"` is set on the element. */\nexport const isAriaChecked = (el: Element): boolean => el.getAttribute('aria-checked') === 'true';\n\n/** Returns whether `aria-checked=\"mixed\"` is set on the element. */\nexport const isAriaIndeterminate = (el: Element): boolean => el.getAttribute('aria-checked') === 'mixed';\n\n/** Returns whether `aria-expanded=\"true\"` is set on the element. */\nexport const isAriaExpanded = (el: Element): boolean => el.getAttribute('aria-expanded') === 'true';\n\n/** Returns whether `aria-pressed=\"true\"` is set on the element. */\nexport const isAriaPressed = (el: Element): boolean => el.getAttribute('aria-pressed') === 'true';\n\n/** Returns whether `aria-required=\"true\"` is set on the element. */\nexport const isAriaRequired = (el: Element): boolean => el.getAttribute('aria-required') === 'true';\n\n/** Returns whether `aria-hidden=\"true\"` is set on the element. */\nexport const isAriaHidden = (el: Element): boolean => el.getAttribute('aria-hidden') === 'true';\n\n/** Returns the `aria-label` string attribute, or null. */\nexport const getAriaLabel = (el: Element): null | string => el.getAttribute('aria-label');\n\n/** Returns the `aria-labelledby` attribute value (space-separated IDs), or null. */\nexport const getAriaLabelledBy = (el: Element): null | string => el.getAttribute('aria-labelledby');\n\n/** Returns the `aria-describedby` attribute value (space-separated IDs), or null. */\nexport const getAriaDescribedBy = (el: Element): null | string => el.getAttribute('aria-describedby');\n\n/** Returns the `aria-controls` attribute value, or null. */\nexport const getAriaControls = (el: Element): null | string => el.getAttribute('aria-controls');\n\n/** Returns the `role` attribute value, or null. */\nexport const getRole = (el: Element): null | string => el.getAttribute('role');\n\n// ── DOM query helpers ─────────────────────────────────────────────────────────\n\n/**\n * Queries the shadow root of a custom element for a matching CSS selector.\n * Returns null if the element has no shadow root or no match is found.\n */\nexport const queryInShadow = <T extends Element = Element>(host: Element, selector: string): null | T => {\n return host.shadowRoot?.querySelector<T>(selector) ?? null;\n};\n\n/**\n * Queries all matching elements inside the shadow root of a custom element.\n * Returns an empty array if the element has no shadow root.\n */\nexport const queryAllInShadow = <T extends Element = Element>(host: Element, selector: string): T[] => {\n return Array.from(host.shadowRoot?.querySelectorAll<T>(selector) ?? []);\n};\n\n/**\n * Queries a shadow DOM element by its CSS `part` attribute.\n * Shorthand for `queryInShadow(host, '[part=\"name\"]')`.\n *\n * @example\n * ```ts\n * const btn = queryPart(carousel, 'prev-btn');\n * expect(btn).not.toBeNull();\n * ```\n */\nexport const queryPart = <T extends Element = Element>(host: Element, part: string): null | T =>\n queryInShadow<T>(host, `[part=\"${part}\"]`);\n\n/**\n * Returns an array of light-DOM children assigned to a named slot,\n * or all slotted children if no name is given.\n *\n * @example\n * ```ts\n * const slides = getSlotted(carousel);\n * expect(slides).toHaveLength(3);\n * ```\n */\nexport const getSlotted = (host: Element, slotName?: string): Element[] => {\n const selector = slotName ? `[slot=\"${slotName}\"]` : ':not([slot])';\n\n return Array.from(host.querySelectorAll(`:scope > ${selector}`));\n};\n\n/**\n * Dispatches a `PointerEvent` on the given element.\n * Useful for testing hover, drag, and pointer interactions without\n * relying on the fire helper from @vielzeug/ore/testing.\n *\n * @example\n * ```ts\n * dispatchPointer(el, 'enter');\n * dispatchPointer(el, 'leave');\n * ```\n */\nexport const dispatchPointer = (\n el: Element,\n type: 'cancel' | 'down' | 'enter' | 'leave' | 'move' | 'up',\n init?: PointerEventInit,\n): void => {\n el.dispatchEvent(new PointerEvent(`pointer${type}`, { bubbles: true, composed: true, ...init }));\n};\n\n// ── Form-associated component helpers ─────────────────────────────────────────\n\n/**\n * Returns the current form value of a form-associated custom element.\n * Uses the ElementInternals-exposed `value` if available, then falls back\n * to the reflected DOM `value` property.\n */\nexport const getFormValue = (el: HTMLElement & { value?: string }): null | string => {\n return el.value ?? null;\n};\n\n/**\n * Returns whether a form-associated element is considered valid (no constraint\n * violations reported by the browser or via `setValidity`).\n */\nexport const isFormValid = (el: HTMLElement & { validity?: ValidityState }): boolean => {\n return el.validity?.valid ?? true;\n};\n\n// ── Event helpers ─────────────────────────────────────────────────────────────\n\n/**\n * Creates a synthetic `KeyboardEvent` with the given key.\n * Useful for testing keyboard navigation in headless controls.\n */\nexport const keyEvent = (key: string, init?: KeyboardEventInit): KeyboardEvent => {\n return new KeyboardEvent('keydown', { bubbles: true, cancelable: true, key, ...init });\n};\n\n/**\n * Returns a Promise that resolves after a microtask tick (one `queueMicrotask`).\n * Use when you need to wait for reactivity (signal effects) to settle without\n * moving into the macrotask queue.\n */\nexport const nextTick = (): Promise<void> =>\n new Promise((resolve) => {\n queueMicrotask(resolve);\n });\n\n/**\n * Returns a Promise that resolves after `ms` milliseconds.\n * Use sparingly — prefer `nextTick()` for reactive updates.\n */\nexport const wait = (ms = 0): Promise<void> =>\n new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n\n// ── ID counter ────────────────────────────────────────────────────────────────\n\n/**\n * Resets the headless ID counter to 0. Use in test `beforeEach` hooks when you need\n * deterministic IDs across test runs.\n *\n * @example\n * ```ts\n * import { resetIdCounter } from '@vielzeug/refine/testing';\n * beforeEach(() => resetIdCounter());\n * ```\n */\nexport { resetIdCounter } from '@vielzeug/ore';\n\n// ── ARIA snapshot helper ───────────────────────────────────────────────────────\n\n/**\n * Returns a snapshot of the most commonly tested ARIA attributes on an element.\n * Useful for concise inline snapshot assertions in component tests.\n *\n * `ariaLabel` and `labelledby` are kept separate because `aria-label` is a\n * direct string while `aria-labelledby` is an ID reference — conflating them\n * masks bugs where the wrong labelling mechanism is used.\n *\n * @example\n * ```ts\n * expect(getAriaState(input)).toMatchObject({ invalid: 'true', required: 'true' });\n * ```\n */\nexport const getAriaState = (\n el: Element,\n): {\n ariaLabel: null | string;\n checked: null | string;\n disabled: null | string;\n expanded: null | string;\n invalid: null | string;\n labelledby: null | string;\n required: null | string;\n role: null | string;\n} => ({\n ariaLabel: el.getAttribute('aria-label'),\n checked: el.getAttribute('aria-checked'),\n disabled: el.getAttribute('aria-disabled'),\n expanded: el.getAttribute('aria-expanded'),\n invalid: el.getAttribute('aria-invalid'),\n labelledby: el.getAttribute('aria-labelledby'),\n required: el.getAttribute('aria-required'),\n role: el.getAttribute('role'),\n});\n\n// ── Typed component mount wrappers (F3) ───────────────────────────────────────\n\nimport type { Fixture } from '@vielzeug/ore/testing';\n\nimport { mount } from '@vielzeug/ore/testing';\n\nimport type { OreButtonGroupProps } from '../inputs/button-group/button-group';\nimport type { OreButtonProps } from '../inputs/button/button';\nimport type { OreCheckboxGroupProps } from '../inputs/checkbox-group/checkbox-group';\nimport type { OreCheckboxProps } from '../inputs/checkbox/checkbox';\nimport type { OreComboboxProps } from '../inputs/combobox/combobox.types';\nimport type { OreFileInputProps } from '../inputs/file-input/file-input';\nimport type { OreFormProps } from '../inputs/form/form';\nimport type { OreInputProps } from '../inputs/input/input';\nimport type { OreNumberInputProps } from '../inputs/number-input/number-input';\nimport type { OreOtpInputProps } from '../inputs/otp-input/otp-input';\nimport type { OreRadioGroupProps } from '../inputs/radio-group/radio-group';\nimport type { OreRadioProps } from '../inputs/radio/radio';\nimport type { OreRatingProps } from '../inputs/rating/rating';\nimport type { OreSelectProps } from '../inputs/select/select';\nimport type { OreSliderProps } from '../inputs/slider/slider';\nimport type { OreSwitchProps } from '../inputs/switch/switch';\nimport type { OreTextareaProps } from '../inputs/textarea/textarea';\n\n/**\n * Serializes an attribute map to an HTML attribute string fragment.\n * Values are HTML-escaped to prevent attribute injection.\n *\n * @example\n * ```ts\n * attrsToHtml({ disabled: '', label: 'Name' }); // → 'disabled label=\"Name\"'\n * ```\n */\nexport const attrsToHtml = (attrs: Record<string, string>): string =>\n Object.entries(attrs)\n .map(([key, value]) => (value === '' ? key : `${key}=\"${value.replace(/\"/g, '&quot;')}\"`))\n .join(' ');\n\n/**\n * Converts a props object into an HTML attribute record.\n * - `true` → empty boolean attribute (e.g., `disabled`)\n * - `false` / `null` / `undefined` → attribute omitted\n * - Array of objects → **omitted** (cannot be serialized as an HTML attribute;\n * use `opts.innerHTML` with slotted elements instead)\n * - Array of primitives → comma-joined string\n * - everything else → stringified\n *\n * @example\n * ```ts\n * propsToAttrs({ disabled: true, label: 'Name', value: undefined });\n * // → { disabled: '', label: 'Name' }\n * ```\n */\nexport const propsToAttrs = (props: Record<string, unknown> = {}): Record<string, string> => {\n const attrs: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(props)) {\n if (value === false || value == null) continue;\n\n if (value === true) {\n attrs[key] = '';\n } else if (Array.isArray(value)) {\n // Object arrays cannot be represented as HTML attributes — skip silently.\n if (value.length > 0 && typeof value[0] === 'object') continue;\n\n attrs[key] = (value as string[]).join(',');\n } else {\n attrs[key] = String(value);\n }\n }\n\n return attrs;\n};\n\ntype MountOptions = { innerHTML?: string };\n\n/** Typed mount wrapper for `<ore-input>`. Catch prop name typos at compile time. */\nexport const mountOreInput = (props?: Partial<OreInputProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-input ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-input>`);\n\n/** Typed mount wrapper for `<ore-textarea>`. */\nexport const mountOreTextarea = (props?: Partial<OreTextareaProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-textarea ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-textarea>`);\n\n/** Typed mount wrapper for `<ore-select>`. */\nexport const mountOreSelect = (props?: Partial<OreSelectProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-select ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-select>`);\n\n/** Typed mount wrapper for `<ore-combobox>`. */\nexport const mountOreCombobox = (props?: Partial<OreComboboxProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-combobox ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-combobox>`);\n\n/** Typed mount wrapper for `<ore-checkbox>`. */\nexport const mountOreCheckbox = (props?: Partial<OreCheckboxProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-checkbox ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-checkbox>`);\n\n/** Typed mount wrapper for `<ore-checkbox-group>`. */\nexport const mountOreCheckboxGroup = (props?: Partial<OreCheckboxGroupProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-checkbox-group ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-checkbox-group>`);\n\n/** Typed mount wrapper for `<ore-radio>`. */\nexport const mountOreRadio = (props?: Partial<OreRadioProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-radio ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-radio>`);\n\n/** Typed mount wrapper for `<ore-radio-group>`. */\nexport const mountOreRadioGroup = (props?: Partial<OreRadioGroupProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-radio-group ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-radio-group>`);\n\n/** Typed mount wrapper for `<ore-switch>`. */\nexport const mountOreSwitch = (props?: Partial<OreSwitchProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-switch ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-switch>`);\n\n/** Typed mount wrapper for `<ore-button>`. */\nexport const mountOreButton = (props?: Partial<OreButtonProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-button ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-button>`);\n\n/** Typed mount wrapper for `<ore-button-group>`. */\nexport const mountOreButtonGroup = (props?: Partial<OreButtonGroupProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-button-group ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-button-group>`);\n\n/** Typed mount wrapper for `<ore-file-input>`. */\nexport const mountOreFileInput = (props?: Partial<OreFileInputProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-file-input ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-file-input>`);\n\n/** Typed mount wrapper for `<ore-form>`. */\nexport const mountOreForm = (props?: Partial<OreFormProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-form ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-form>`);\n\n/** Typed mount wrapper for `<ore-number-input>`. */\nexport const mountOreNumberInput = (props?: Partial<OreNumberInputProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-number-input ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-number-input>`);\n\n/** Typed mount wrapper for `<ore-otp-input>`. */\nexport const mountOreOtpInput = (props?: Partial<OreOtpInputProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-otp-input ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-otp-input>`);\n\n/** Typed mount wrapper for `<ore-rating>`. */\nexport const mountOreRating = (props?: Partial<OreRatingProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-rating ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-rating>`);\n\n/** Typed mount wrapper for `<ore-slider>`. */\nexport const mountOreSlider = (props?: Partial<OreSliderProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-slider ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-slider>`);\n"],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { mount as e } from "./ore/dist/testing/mount.js";
2
+ import "./ore/dist/testing.js";
3
+ import { resetIdCounter as t } from "@vielzeug/ore";
4
+ //#region src/testing/index.ts
5
+ var n = (e) => e.getAttribute("aria-invalid") === "true", r = (e) => e.getAttribute("aria-disabled") === "true", i = (e) => e.getAttribute("aria-checked") === "true", a = (e) => e.getAttribute("aria-checked") === "mixed", o = (e) => e.getAttribute("aria-expanded") === "true", s = (e) => e.getAttribute("aria-pressed") === "true", c = (e) => e.getAttribute("aria-required") === "true", l = (e) => e.getAttribute("aria-hidden") === "true", u = (e) => e.getAttribute("aria-label"), d = (e) => e.getAttribute("aria-labelledby"), f = (e) => e.getAttribute("aria-describedby"), p = (e) => e.getAttribute("aria-controls"), m = (e) => e.getAttribute("role"), h = (e, t) => e.shadowRoot?.querySelector(t) ?? null, g = (e, t) => Array.from(e.shadowRoot?.querySelectorAll(t) ?? []), _ = (e, t) => h(e, `[part="${t}"]`), v = (e, t) => {
6
+ let n = t ? `[slot="${t}"]` : ":not([slot])";
7
+ return Array.from(e.querySelectorAll(`:scope > ${n}`));
8
+ }, y = (e, t, n) => {
9
+ e.dispatchEvent(new PointerEvent(`pointer${t}`, {
10
+ bubbles: !0,
11
+ composed: !0,
12
+ ...n
13
+ }));
14
+ }, b = (e) => e.value ?? null, x = (e) => e.validity?.valid ?? !0, S = (e, t) => new KeyboardEvent("keydown", {
15
+ bubbles: !0,
16
+ cancelable: !0,
17
+ key: e,
18
+ ...t
19
+ }), C = () => new Promise((e) => {
20
+ queueMicrotask(e);
21
+ }), w = (e = 0) => new Promise((t) => {
22
+ setTimeout(t, e);
23
+ }), T = (e) => ({
24
+ ariaLabel: e.getAttribute("aria-label"),
25
+ checked: e.getAttribute("aria-checked"),
26
+ disabled: e.getAttribute("aria-disabled"),
27
+ expanded: e.getAttribute("aria-expanded"),
28
+ invalid: e.getAttribute("aria-invalid"),
29
+ labelledby: e.getAttribute("aria-labelledby"),
30
+ required: e.getAttribute("aria-required"),
31
+ role: e.getAttribute("role")
32
+ }), E = (e) => Object.entries(e).map(([e, t]) => t === "" ? e : `${e}="${t.replace(/"/g, "&quot;")}"`).join(" "), D = (e = {}) => {
33
+ let t = {};
34
+ for (let [n, r] of Object.entries(e)) if (!(r === !1 || r == null)) if (r === !0) t[n] = "";
35
+ else if (Array.isArray(r)) {
36
+ if (r.length > 0 && typeof r[0] == "object") continue;
37
+ t[n] = r.join(",");
38
+ } else t[n] = String(r);
39
+ return t;
40
+ }, O = (t, n) => e(`<ore-input ${E(D(t))}>${n?.innerHTML ?? ""}</ore-input>`), k = (t, n) => e(`<ore-textarea ${E(D(t))}>${n?.innerHTML ?? ""}</ore-textarea>`), A = (t, n) => e(`<ore-select ${E(D(t))}>${n?.innerHTML ?? ""}</ore-select>`), j = (t, n) => e(`<ore-combobox ${E(D(t))}>${n?.innerHTML ?? ""}</ore-combobox>`), M = (t, n) => e(`<ore-checkbox ${E(D(t))}>${n?.innerHTML ?? ""}</ore-checkbox>`), N = (t, n) => e(`<ore-checkbox-group ${E(D(t))}>${n?.innerHTML ?? ""}</ore-checkbox-group>`), P = (t, n) => e(`<ore-radio ${E(D(t))}>${n?.innerHTML ?? ""}</ore-radio>`), F = (t, n) => e(`<ore-radio-group ${E(D(t))}>${n?.innerHTML ?? ""}</ore-radio-group>`), I = (t, n) => e(`<ore-switch ${E(D(t))}>${n?.innerHTML ?? ""}</ore-switch>`), L = (t, n) => e(`<ore-button ${E(D(t))}>${n?.innerHTML ?? ""}</ore-button>`), R = (t, n) => e(`<ore-button-group ${E(D(t))}>${n?.innerHTML ?? ""}</ore-button-group>`), z = (t, n) => e(`<ore-file-input ${E(D(t))}>${n?.innerHTML ?? ""}</ore-file-input>`), B = (t, n) => e(`<ore-form ${E(D(t))}>${n?.innerHTML ?? ""}</ore-form>`), V = (t, n) => e(`<ore-number-input ${E(D(t))}>${n?.innerHTML ?? ""}</ore-number-input>`), H = (t, n) => e(`<ore-otp-input ${E(D(t))}>${n?.innerHTML ?? ""}</ore-otp-input>`), U = (t, n) => e(`<ore-rating ${E(D(t))}>${n?.innerHTML ?? ""}</ore-rating>`), W = (t, n) => e(`<ore-slider ${E(D(t))}>${n?.innerHTML ?? ""}</ore-slider>`);
41
+ //#endregion
42
+ export { E as attrsToHtml, y as dispatchPointer, p as getAriaControls, f as getAriaDescribedBy, u as getAriaLabel, d as getAriaLabelledBy, T as getAriaState, b as getFormValue, m as getRole, v as getSlotted, i as isAriaChecked, r as isAriaDisabled, o as isAriaExpanded, l as isAriaHidden, a as isAriaIndeterminate, n as isAriaInvalid, s as isAriaPressed, c as isAriaRequired, x as isFormValid, S as keyEvent, L as mountOreButton, R as mountOreButtonGroup, M as mountOreCheckbox, N as mountOreCheckboxGroup, j as mountOreCombobox, z as mountOreFileInput, B as mountOreForm, O as mountOreInput, V as mountOreNumberInput, H as mountOreOtpInput, P as mountOreRadio, F as mountOreRadioGroup, U as mountOreRating, A as mountOreSelect, W as mountOreSlider, I as mountOreSwitch, k as mountOreTextarea, C as nextTick, D as propsToAttrs, g as queryAllInShadow, h as queryInShadow, _ as queryPart, t as resetIdCounter, w as wait };
43
+
44
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","names":[],"sources":["../src/testing/index.ts"],"sourcesContent":["/**\n * @vielzeug/refine/testing\n *\n * Testing utilities for refine components. Provides a11y helpers, ARIA query\n * utilities, and convenience wrappers for common patterns in component tests.\n *\n * @example\n * ```typescript\n * import { getAriaLabel, getAriaDescribedBy, isAriaInvalid } from '@vielzeug/refine/testing';\n * import { mount } from '@vielzeug/ore/testing';\n *\n * const fixture = mount('<ore-input label=\"Name\"></ore-input>');\n * const input = fixture.query('input')!;\n * expect(isAriaInvalid(input)).toBe(false);\n * ```\n */\n\n// ── ARIA attribute helpers ────────────────────────────────────────────────────\n\n/** Returns whether `aria-invalid=\"true\"` is set on the element. */\nexport const isAriaInvalid = (el: Element): boolean => el.getAttribute('aria-invalid') === 'true';\n\n/** Returns whether `aria-disabled=\"true\"` is set on the element. */\nexport const isAriaDisabled = (el: Element): boolean => el.getAttribute('aria-disabled') === 'true';\n\n/** Returns whether `aria-checked=\"true\"` is set on the element. */\nexport const isAriaChecked = (el: Element): boolean => el.getAttribute('aria-checked') === 'true';\n\n/** Returns whether `aria-checked=\"mixed\"` is set on the element. */\nexport const isAriaIndeterminate = (el: Element): boolean => el.getAttribute('aria-checked') === 'mixed';\n\n/** Returns whether `aria-expanded=\"true\"` is set on the element. */\nexport const isAriaExpanded = (el: Element): boolean => el.getAttribute('aria-expanded') === 'true';\n\n/** Returns whether `aria-pressed=\"true\"` is set on the element. */\nexport const isAriaPressed = (el: Element): boolean => el.getAttribute('aria-pressed') === 'true';\n\n/** Returns whether `aria-required=\"true\"` is set on the element. */\nexport const isAriaRequired = (el: Element): boolean => el.getAttribute('aria-required') === 'true';\n\n/** Returns whether `aria-hidden=\"true\"` is set on the element. */\nexport const isAriaHidden = (el: Element): boolean => el.getAttribute('aria-hidden') === 'true';\n\n/** Returns the `aria-label` string attribute, or null. */\nexport const getAriaLabel = (el: Element): null | string => el.getAttribute('aria-label');\n\n/** Returns the `aria-labelledby` attribute value (space-separated IDs), or null. */\nexport const getAriaLabelledBy = (el: Element): null | string => el.getAttribute('aria-labelledby');\n\n/** Returns the `aria-describedby` attribute value (space-separated IDs), or null. */\nexport const getAriaDescribedBy = (el: Element): null | string => el.getAttribute('aria-describedby');\n\n/** Returns the `aria-controls` attribute value, or null. */\nexport const getAriaControls = (el: Element): null | string => el.getAttribute('aria-controls');\n\n/** Returns the `role` attribute value, or null. */\nexport const getRole = (el: Element): null | string => el.getAttribute('role');\n\n// ── DOM query helpers ─────────────────────────────────────────────────────────\n\n/**\n * Queries the shadow root of a custom element for a matching CSS selector.\n * Returns null if the element has no shadow root or no match is found.\n */\nexport const queryInShadow = <T extends Element = Element>(host: Element, selector: string): null | T => {\n return host.shadowRoot?.querySelector<T>(selector) ?? null;\n};\n\n/**\n * Queries all matching elements inside the shadow root of a custom element.\n * Returns an empty array if the element has no shadow root.\n */\nexport const queryAllInShadow = <T extends Element = Element>(host: Element, selector: string): T[] => {\n return Array.from(host.shadowRoot?.querySelectorAll<T>(selector) ?? []);\n};\n\n/**\n * Queries a shadow DOM element by its CSS `part` attribute.\n * Shorthand for `queryInShadow(host, '[part=\"name\"]')`.\n *\n * @example\n * ```ts\n * const btn = queryPart(carousel, 'prev-btn');\n * expect(btn).not.toBeNull();\n * ```\n */\nexport const queryPart = <T extends Element = Element>(host: Element, part: string): null | T =>\n queryInShadow<T>(host, `[part=\"${part}\"]`);\n\n/**\n * Returns an array of light-DOM children assigned to a named slot,\n * or all slotted children if no name is given.\n *\n * @example\n * ```ts\n * const slides = getSlotted(carousel);\n * expect(slides).toHaveLength(3);\n * ```\n */\nexport const getSlotted = (host: Element, slotName?: string): Element[] => {\n const selector = slotName ? `[slot=\"${slotName}\"]` : ':not([slot])';\n\n return Array.from(host.querySelectorAll(`:scope > ${selector}`));\n};\n\n/**\n * Dispatches a `PointerEvent` on the given element.\n * Useful for testing hover, drag, and pointer interactions without\n * relying on the fire helper from @vielzeug/ore/testing.\n *\n * @example\n * ```ts\n * dispatchPointer(el, 'enter');\n * dispatchPointer(el, 'leave');\n * ```\n */\nexport const dispatchPointer = (\n el: Element,\n type: 'cancel' | 'down' | 'enter' | 'leave' | 'move' | 'up',\n init?: PointerEventInit,\n): void => {\n el.dispatchEvent(new PointerEvent(`pointer${type}`, { bubbles: true, composed: true, ...init }));\n};\n\n// ── Form-associated component helpers ─────────────────────────────────────────\n\n/**\n * Returns the current form value of a form-associated custom element.\n * Uses the ElementInternals-exposed `value` if available, then falls back\n * to the reflected DOM `value` property.\n */\nexport const getFormValue = (el: HTMLElement & { value?: string }): null | string => {\n return el.value ?? null;\n};\n\n/**\n * Returns whether a form-associated element is considered valid (no constraint\n * violations reported by the browser or via `setValidity`).\n */\nexport const isFormValid = (el: HTMLElement & { validity?: ValidityState }): boolean => {\n return el.validity?.valid ?? true;\n};\n\n// ── Event helpers ─────────────────────────────────────────────────────────────\n\n/**\n * Creates a synthetic `KeyboardEvent` with the given key.\n * Useful for testing keyboard navigation in headless controls.\n */\nexport const keyEvent = (key: string, init?: KeyboardEventInit): KeyboardEvent => {\n return new KeyboardEvent('keydown', { bubbles: true, cancelable: true, key, ...init });\n};\n\n/**\n * Returns a Promise that resolves after a microtask tick (one `queueMicrotask`).\n * Use when you need to wait for reactivity (signal effects) to settle without\n * moving into the macrotask queue.\n */\nexport const nextTick = (): Promise<void> =>\n new Promise((resolve) => {\n queueMicrotask(resolve);\n });\n\n/**\n * Returns a Promise that resolves after `ms` milliseconds.\n * Use sparingly — prefer `nextTick()` for reactive updates.\n */\nexport const wait = (ms = 0): Promise<void> =>\n new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n\n// ── ID counter ────────────────────────────────────────────────────────────────\n\n/**\n * Resets the headless ID counter to 0. Use in test `beforeEach` hooks when you need\n * deterministic IDs across test runs.\n *\n * @example\n * ```ts\n * import { resetIdCounter } from '@vielzeug/refine/testing';\n * beforeEach(() => resetIdCounter());\n * ```\n */\nexport { resetIdCounter } from '@vielzeug/ore';\n\n// ── ARIA snapshot helper ───────────────────────────────────────────────────────\n\n/**\n * Returns a snapshot of the most commonly tested ARIA attributes on an element.\n * Useful for concise inline snapshot assertions in component tests.\n *\n * `ariaLabel` and `labelledby` are kept separate because `aria-label` is a\n * direct string while `aria-labelledby` is an ID reference — conflating them\n * masks bugs where the wrong labelling mechanism is used.\n *\n * @example\n * ```ts\n * expect(getAriaState(input)).toMatchObject({ invalid: 'true', required: 'true' });\n * ```\n */\nexport const getAriaState = (\n el: Element,\n): {\n ariaLabel: null | string;\n checked: null | string;\n disabled: null | string;\n expanded: null | string;\n invalid: null | string;\n labelledby: null | string;\n required: null | string;\n role: null | string;\n} => ({\n ariaLabel: el.getAttribute('aria-label'),\n checked: el.getAttribute('aria-checked'),\n disabled: el.getAttribute('aria-disabled'),\n expanded: el.getAttribute('aria-expanded'),\n invalid: el.getAttribute('aria-invalid'),\n labelledby: el.getAttribute('aria-labelledby'),\n required: el.getAttribute('aria-required'),\n role: el.getAttribute('role'),\n});\n\n// ── Typed component mount wrappers (F3) ───────────────────────────────────────\n\nimport type { Fixture } from '@vielzeug/ore/testing';\n\nimport { mount } from '@vielzeug/ore/testing';\n\nimport type { OreButtonGroupProps } from '../inputs/button-group/button-group';\nimport type { OreButtonProps } from '../inputs/button/button';\nimport type { OreCheckboxGroupProps } from '../inputs/checkbox-group/checkbox-group';\nimport type { OreCheckboxProps } from '../inputs/checkbox/checkbox';\nimport type { OreComboboxProps } from '../inputs/combobox/combobox.types';\nimport type { OreFileInputProps } from '../inputs/file-input/file-input';\nimport type { OreFormProps } from '../inputs/form/form';\nimport type { OreInputProps } from '../inputs/input/input';\nimport type { OreNumberInputProps } from '../inputs/number-input/number-input';\nimport type { OreOtpInputProps } from '../inputs/otp-input/otp-input';\nimport type { OreRadioGroupProps } from '../inputs/radio-group/radio-group';\nimport type { OreRadioProps } from '../inputs/radio/radio';\nimport type { OreRatingProps } from '../inputs/rating/rating';\nimport type { OreSelectProps } from '../inputs/select/select';\nimport type { OreSliderProps } from '../inputs/slider/slider';\nimport type { OreSwitchProps } from '../inputs/switch/switch';\nimport type { OreTextareaProps } from '../inputs/textarea/textarea';\n\n/**\n * Serializes an attribute map to an HTML attribute string fragment.\n * Values are HTML-escaped to prevent attribute injection.\n *\n * @example\n * ```ts\n * attrsToHtml({ disabled: '', label: 'Name' }); // → 'disabled label=\"Name\"'\n * ```\n */\nexport const attrsToHtml = (attrs: Record<string, string>): string =>\n Object.entries(attrs)\n .map(([key, value]) => (value === '' ? key : `${key}=\"${value.replace(/\"/g, '&quot;')}\"`))\n .join(' ');\n\n/**\n * Converts a props object into an HTML attribute record.\n * - `true` → empty boolean attribute (e.g., `disabled`)\n * - `false` / `null` / `undefined` → attribute omitted\n * - Array of objects → **omitted** (cannot be serialized as an HTML attribute;\n * use `opts.innerHTML` with slotted elements instead)\n * - Array of primitives → comma-joined string\n * - everything else → stringified\n *\n * @example\n * ```ts\n * propsToAttrs({ disabled: true, label: 'Name', value: undefined });\n * // → { disabled: '', label: 'Name' }\n * ```\n */\nexport const propsToAttrs = (props: Record<string, unknown> = {}): Record<string, string> => {\n const attrs: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(props)) {\n if (value === false || value == null) continue;\n\n if (value === true) {\n attrs[key] = '';\n } else if (Array.isArray(value)) {\n // Object arrays cannot be represented as HTML attributes — skip silently.\n if (value.length > 0 && typeof value[0] === 'object') continue;\n\n attrs[key] = (value as string[]).join(',');\n } else {\n attrs[key] = String(value);\n }\n }\n\n return attrs;\n};\n\ntype MountOptions = { innerHTML?: string };\n\n/** Typed mount wrapper for `<ore-input>`. Catch prop name typos at compile time. */\nexport const mountOreInput = (props?: Partial<OreInputProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-input ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-input>`);\n\n/** Typed mount wrapper for `<ore-textarea>`. */\nexport const mountOreTextarea = (props?: Partial<OreTextareaProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-textarea ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-textarea>`);\n\n/** Typed mount wrapper for `<ore-select>`. */\nexport const mountOreSelect = (props?: Partial<OreSelectProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-select ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-select>`);\n\n/** Typed mount wrapper for `<ore-combobox>`. */\nexport const mountOreCombobox = (props?: Partial<OreComboboxProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-combobox ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-combobox>`);\n\n/** Typed mount wrapper for `<ore-checkbox>`. */\nexport const mountOreCheckbox = (props?: Partial<OreCheckboxProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-checkbox ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-checkbox>`);\n\n/** Typed mount wrapper for `<ore-checkbox-group>`. */\nexport const mountOreCheckboxGroup = (props?: Partial<OreCheckboxGroupProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-checkbox-group ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-checkbox-group>`);\n\n/** Typed mount wrapper for `<ore-radio>`. */\nexport const mountOreRadio = (props?: Partial<OreRadioProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-radio ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-radio>`);\n\n/** Typed mount wrapper for `<ore-radio-group>`. */\nexport const mountOreRadioGroup = (props?: Partial<OreRadioGroupProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-radio-group ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-radio-group>`);\n\n/** Typed mount wrapper for `<ore-switch>`. */\nexport const mountOreSwitch = (props?: Partial<OreSwitchProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-switch ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-switch>`);\n\n/** Typed mount wrapper for `<ore-button>`. */\nexport const mountOreButton = (props?: Partial<OreButtonProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-button ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-button>`);\n\n/** Typed mount wrapper for `<ore-button-group>`. */\nexport const mountOreButtonGroup = (props?: Partial<OreButtonGroupProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-button-group ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-button-group>`);\n\n/** Typed mount wrapper for `<ore-file-input>`. */\nexport const mountOreFileInput = (props?: Partial<OreFileInputProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-file-input ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-file-input>`);\n\n/** Typed mount wrapper for `<ore-form>`. */\nexport const mountOreForm = (props?: Partial<OreFormProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-form ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-form>`);\n\n/** Typed mount wrapper for `<ore-number-input>`. */\nexport const mountOreNumberInput = (props?: Partial<OreNumberInputProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-number-input ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-number-input>`);\n\n/** Typed mount wrapper for `<ore-otp-input>`. */\nexport const mountOreOtpInput = (props?: Partial<OreOtpInputProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-otp-input ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-otp-input>`);\n\n/** Typed mount wrapper for `<ore-rating>`. */\nexport const mountOreRating = (props?: Partial<OreRatingProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-rating ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-rating>`);\n\n/** Typed mount wrapper for `<ore-slider>`. */\nexport const mountOreSlider = (props?: Partial<OreSliderProps>, opts?: MountOptions): Promise<Fixture> =>\n mount(`<ore-slider ${attrsToHtml(propsToAttrs(props))}>${opts?.innerHTML ?? ''}</ore-slider>`);\n"],"mappings":"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"}
package/dist/text.cjs ADDED
@@ -0,0 +1,2 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./content/text/text.css?inline.cjs");let t=require("@vielzeug/ore");var n=`ore-text`;(0,t.define)(n,{props:{align:t.prop.string(),as:t.prop.string(),color:t.prop.string(),italic:t.prop.bool(),lines:t.prop.number(),size:t.prop.string(),truncate:t.prop.bool(),variant:t.prop.string(),weight:t.prop.string()},setup(e,{bind:n,el:r}){return n({attr:{"aria-level":()=>{let t=/^h([1-6])$/.exec(e.as.value??``);return t?t[1]:null},role:()=>/^h([1-6])$/.test(e.as.value??``)?`heading`:null},style:{"--_lines":()=>e.lines.value==null?null:String(e.lines.value)}}),t.html`<slot></slot>`},styles:[e.default]}),exports.TEXT_TAG=n;
2
+ //# sourceMappingURL=text.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.cjs","names":[],"sources":["../src/content/text/text.ts"],"sourcesContent":["import { define, html, prop } from '@vielzeug/ore';\n\nimport styles from './text.css?inline';\n\n/** Text component properties */\nexport type OreTextProps = {\n /** Text alignment */\n align?: 'left' | 'center' | 'right' | 'justify';\n /** Semantic HTML element to render as — sets the correct ARIA role/level on the host */\n as?: 'span' | 'p' | 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'label' | 'code';\n /** Text color (semantic + theme colors) */\n color?:\n | 'primary'\n | 'secondary'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n | 'heading'\n | 'body'\n | 'muted'\n | 'tertiary'\n | 'disabled'\n | 'contrast';\n /** Italic text style */\n italic?: boolean;\n /** Clamp text to N lines with an ellipsis (multi-line truncation) */\n lines?: number;\n /** Text size — maps to --text-* tokens for body variants and --heading-* tokens for the heading variant */\n size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';\n /** Enable single-line text truncation with ellipsis */\n truncate?: boolean;\n /** Text semantic variant */\n variant?: 'body' | 'heading' | 'label' | 'caption' | 'overline' | 'code';\n /** Font weight */\n weight?: 'normal' | 'medium' | 'semibold' | 'bold';\n};\n\n/**\n * A typography component with semantic variants and responsive sizing.\n *\n * @element ore-text\n *\n * @attr {string} variant - Text variant: 'body' | 'heading' | 'label' | 'caption' | 'overline' | 'code'\n * @attr {string} size - Font size: 'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'. Maps to --text-* tokens for body variants and --heading-* tokens for the heading variant.\n * @attr {string} weight - Font weight: 'normal' | 'medium' | 'semibold' | 'bold'\n * @attr {string} color - Text color: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error' | 'heading' | 'body' | 'muted' | 'tertiary' | 'disabled' | 'contrast'\n * @attr {string} align - Text alignment: 'left' | 'center' | 'right' | 'justify'\n * @attr {boolean} truncate - Truncate text with ellipsis when it overflows (single-line)\n * @attr {number} lines - Clamp to N lines with ellipsis (multi-line truncation)\n * @attr {boolean} italic - Italic text style\n * @attr {string} as - Semantic HTML element: 'span' | 'p' | 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'label' | 'code'\n *\n * @slot - Text content\n *\n * @cssprop --text-size - Font size\n * @cssprop --text-weight - Font weight\n * @cssprop --text-color - Text color\n * @cssprop --text-line-height - Line height\n * @cssprop --text-letter-spacing - Letter spacing\n *\n * @example\n * ```html\n * <ore-text variant=\"heading\" size=\"2xl\" weight=\"bold\">Welcome</ore-text>\n * <ore-text as=\"h2\" variant=\"heading\" size=\"xl\">Section title</ore-text>\n * <ore-text color=\"primary\" weight=\"semibold\">Important notice</ore-text>\n * <ore-text variant=\"code\">npm install</ore-text>\n * <ore-text lines=\"2\">Long paragraph that clamps at two lines…</ore-text>\n * ```\n */\n\nexport const TEXT_TAG = 'ore-text' as const;\ndefine<OreTextProps>(TEXT_TAG, {\n props: {\n align: prop.string<'left' | 'center' | 'right' | 'justify'>(),\n as: prop.string<'span' | 'p' | 'div' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'label' | 'code'>(),\n color: prop.string<\n | 'primary'\n | 'secondary'\n | 'info'\n | 'success'\n | 'warning'\n | 'error'\n | 'heading'\n | 'body'\n | 'muted'\n | 'tertiary'\n | 'disabled'\n | 'contrast'\n >(),\n italic: prop.bool(),\n lines: prop.number(),\n size: prop.string<'xs' | 'sm' | 'md' | 'lg' | 'xl' | '2xl'>(),\n truncate: prop.bool(),\n variant: prop.string<'body' | 'heading' | 'label' | 'caption' | 'overline' | 'code'>(),\n weight: prop.string<'normal' | 'medium' | 'semibold' | 'bold'>(),\n },\n setup(props, { bind, el: _el }) {\n bind({\n attr: {\n 'aria-level': () => {\n const match = /^h([1-6])$/.exec((props.as.value as string) ?? '');\n\n return match ? match[1] : null;\n },\n role: () => (/^h([1-6])$/.test((props.as.value as string) ?? '') ? 'heading' : null),\n },\n style: {\n '--_lines': () => (props.lines.value != null ? String(props.lines.value) : null),\n },\n });\n\n return html`<slot></slot>`;\n },\n styles: [styles],\n});\n"],"mappings":"wJAuEA,IAAa,EAAW,wBACH,EAAU,CAC7B,MAAO,CACL,MAAO,EAAA,KAAK,OAAgD,EAC5D,GAAI,EAAA,KAAK,OAA0F,EACnG,MAAO,EAAA,KAAK,OAaV,EACF,OAAQ,EAAA,KAAK,KAAK,EAClB,MAAO,EAAA,KAAK,OAAO,EACnB,KAAM,EAAA,KAAK,OAAiD,EAC5D,SAAU,EAAA,KAAK,KAAK,EACpB,QAAS,EAAA,KAAK,OAAuE,EACrF,OAAQ,EAAA,KAAK,OAAkD,CACjE,EACA,MAAM,EAAO,CAAE,OAAM,GAAI,GAAO,CAe9B,OAdA,EAAK,CACH,KAAM,CACJ,iBAAoB,CAClB,IAAM,EAAQ,aAAa,KAAM,EAAM,GAAG,OAAoB,EAAE,EAEhE,OAAO,EAAQ,EAAM,GAAK,IAC5B,EACA,SAAa,aAAa,KAAM,EAAM,GAAG,OAAoB,EAAE,EAAI,UAAY,IACjF,EACA,MAAO,CACL,eAAmB,EAAM,MAAM,OAAS,KAAmC,KAA5B,OAAO,EAAM,MAAM,KAAK,CACzE,CACF,CAAC,EAEM,EAAA,IAAI,eACb,EACA,OAAQ,CAAC,EAAA,OAAM,CACjB,CAAC"}