@vielzeug/refine 1.7.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (829) hide show
  1. package/README.md +5 -12
  2. package/dist/_dev.cjs +1 -1
  3. package/dist/_dev.cjs.map +1 -1
  4. package/dist/_dev.js +2 -5
  5. package/dist/_dev.js.map +1 -1
  6. package/dist/_virtual/_rolldown/runtime.cjs +1 -1
  7. package/dist/accordion-item.cjs +26 -24
  8. package/dist/accordion-item.cjs.map +1 -1
  9. package/dist/accordion-item.js +53 -51
  10. package/dist/accordion-item.js.map +1 -1
  11. package/dist/accordion.cjs +3 -1
  12. package/dist/accordion.cjs.map +1 -1
  13. package/dist/accordion.js +5 -3
  14. package/dist/accordion.js.map +1 -1
  15. package/dist/alert.cjs +1 -1
  16. package/dist/alert.cjs.map +1 -1
  17. package/dist/alert.js +1 -1
  18. package/dist/alert.js.map +1 -1
  19. package/dist/async.cjs +14 -12
  20. package/dist/async.cjs.map +1 -1
  21. package/dist/async.js +5 -4
  22. package/dist/async.js.map +1 -1
  23. package/dist/avatar-group.cjs +7 -0
  24. package/dist/avatar-group.cjs.map +1 -0
  25. package/dist/avatar-group.js +34 -0
  26. package/dist/avatar-group.js.map +1 -0
  27. package/dist/avatar.cjs +21 -16
  28. package/dist/avatar.cjs.map +1 -1
  29. package/dist/avatar.js +38 -54
  30. package/dist/avatar.js.map +1 -1
  31. package/dist/badge.cjs +4 -2
  32. package/dist/badge.cjs.map +1 -1
  33. package/dist/badge.js +6 -4
  34. package/dist/badge.js.map +1 -1
  35. package/dist/box.cjs +3 -1
  36. package/dist/box.cjs.map +1 -1
  37. package/dist/box.js +24 -18
  38. package/dist/box.js.map +1 -1
  39. package/dist/breadcrumb.cjs +4 -4
  40. package/dist/breadcrumb.cjs.map +1 -1
  41. package/dist/breadcrumb.js +4 -4
  42. package/dist/breadcrumb.js.map +1 -1
  43. package/dist/button-group.cjs +3 -3
  44. package/dist/button-group.cjs.map +1 -1
  45. package/dist/button-group.js +18 -16
  46. package/dist/button-group.js.map +1 -1
  47. package/dist/button.cjs +16 -12
  48. package/dist/button.cjs.map +1 -1
  49. package/dist/button.js +31 -28
  50. package/dist/button.js.map +1 -1
  51. package/dist/calendar.cjs +94 -69
  52. package/dist/calendar.cjs.map +1 -1
  53. package/dist/calendar.js +131 -99
  54. package/dist/calendar.js.map +1 -1
  55. package/dist/card.cjs +7 -7
  56. package/dist/card.cjs.map +1 -1
  57. package/dist/card.js +53 -49
  58. package/dist/card.js.map +1 -1
  59. package/dist/carousel.cjs +65 -57
  60. package/dist/carousel.cjs.map +1 -1
  61. package/dist/carousel.js +157 -201
  62. package/dist/carousel.js.map +1 -1
  63. package/dist/chat-message.cjs +21 -19
  64. package/dist/chat-message.cjs.map +1 -1
  65. package/dist/chat-message.js +18 -15
  66. package/dist/chat-message.js.map +1 -1
  67. package/dist/checkbox-group.cjs +12 -10
  68. package/dist/checkbox-group.cjs.map +1 -1
  69. package/dist/checkbox-group.js +75 -77
  70. package/dist/checkbox-group.js.map +1 -1
  71. package/dist/checkbox.cjs +4 -4
  72. package/dist/checkbox.cjs.map +1 -1
  73. package/dist/checkbox.js +55 -55
  74. package/dist/checkbox.js.map +1 -1
  75. package/dist/chip.cjs +22 -20
  76. package/dist/chip.cjs.map +1 -1
  77. package/dist/chip.js +15 -12
  78. package/dist/chip.js.map +1 -1
  79. package/dist/code-window.cjs +11 -5
  80. package/dist/code-window.cjs.map +1 -1
  81. package/dist/code-window.js +9 -4
  82. package/dist/code-window.js.map +1 -1
  83. package/dist/combobox.cjs +63 -58
  84. package/dist/combobox.cjs.map +1 -1
  85. package/dist/combobox.js +199 -197
  86. package/dist/combobox.js.map +1 -1
  87. package/dist/command-palette.cjs +49 -29
  88. package/dist/command-palette.cjs.map +1 -1
  89. package/dist/command-palette.js +150 -119
  90. package/dist/command-palette.js.map +1 -1
  91. package/dist/content/avatar/avatar-group.d.ts +33 -0
  92. package/dist/content/avatar/avatar-group.d.ts.map +1 -0
  93. package/dist/content/avatar/avatar.d.ts +0 -32
  94. package/dist/content/avatar/avatar.d.ts.map +1 -1
  95. package/dist/content/card/card.css.cjs +1 -1
  96. package/dist/content/card/card.css.cjs.map +1 -1
  97. package/dist/content/card/card.css.js +1 -1
  98. package/dist/content/card/card.css.js.map +1 -1
  99. package/dist/content/card/card.d.ts.map +1 -1
  100. package/dist/content/carousel/carousel-slide.cjs +3 -1
  101. package/dist/content/carousel/carousel-slide.cjs.map +1 -1
  102. package/dist/content/carousel/carousel-slide.css.cjs +1 -1
  103. package/dist/content/carousel/carousel-slide.css.cjs.map +1 -1
  104. package/dist/content/carousel/carousel-slide.css.js +1 -1
  105. package/dist/content/carousel/carousel-slide.css.js.map +1 -1
  106. package/dist/content/carousel/carousel-slide.js +3 -1
  107. package/dist/content/carousel/carousel-slide.js.map +1 -1
  108. package/dist/content/carousel/carousel.css.cjs +1 -1
  109. package/dist/content/carousel/carousel.css.cjs.map +1 -1
  110. package/dist/content/carousel/carousel.css.js +1 -1
  111. package/dist/content/carousel/carousel.css.js.map +1 -1
  112. package/dist/content/carousel/carousel.d.ts +5 -19
  113. package/dist/content/carousel/carousel.d.ts.map +1 -1
  114. package/dist/content/chat-message/chat-message.d.ts.map +1 -1
  115. package/dist/content/code-window/code-window.d.ts.map +1 -1
  116. package/dist/content/icon/icon.d.ts.map +1 -1
  117. package/dist/content/index.d.ts +10 -2
  118. package/dist/content/index.d.ts.map +1 -1
  119. package/dist/content/list/_list-item-reveal.cjs +1 -1
  120. package/dist/content/list/_list-item-reveal.cjs.map +1 -1
  121. package/dist/content/list/_list-item-reveal.d.ts +2 -2
  122. package/dist/content/list/_list-item-reveal.d.ts.map +1 -1
  123. package/dist/content/list/_list-item-reveal.js +2 -2
  124. package/dist/content/list/_list-item-reveal.js.map +1 -1
  125. package/dist/content/list/list.d.ts.map +1 -1
  126. package/dist/content/marquee/index.d.ts +2 -0
  127. package/dist/content/marquee/index.d.ts.map +1 -0
  128. package/dist/content/marquee/marquee.css.cjs +2 -0
  129. package/dist/content/marquee/marquee.css.cjs.map +1 -0
  130. package/dist/content/marquee/marquee.css.js +6 -0
  131. package/dist/content/marquee/marquee.css.js.map +1 -0
  132. package/dist/content/marquee/marquee.d.ts +44 -0
  133. package/dist/content/marquee/marquee.d.ts.map +1 -0
  134. package/dist/content/stepper/_is-step-navigable.cjs +2 -0
  135. package/dist/content/stepper/_is-step-navigable.cjs.map +1 -0
  136. package/dist/content/stepper/_is-step-navigable.d.ts +14 -0
  137. package/dist/content/stepper/_is-step-navigable.d.ts.map +1 -0
  138. package/dist/content/stepper/_is-step-navigable.js +8 -0
  139. package/dist/content/stepper/_is-step-navigable.js.map +1 -0
  140. package/dist/content/stepper/step.css.cjs +2 -0
  141. package/dist/content/stepper/step.css.cjs.map +1 -0
  142. package/dist/content/stepper/step.css.js +6 -0
  143. package/dist/content/stepper/step.css.js.map +1 -0
  144. package/dist/content/stepper/step.d.ts +63 -0
  145. package/dist/content/stepper/step.d.ts.map +1 -0
  146. package/dist/content/stepper/stepper.css.cjs +2 -0
  147. package/dist/content/stepper/stepper.css.cjs.map +1 -0
  148. package/dist/content/stepper/stepper.css.js +6 -0
  149. package/dist/content/stepper/stepper.css.js.map +1 -0
  150. package/dist/content/stepper/stepper.d.ts +88 -0
  151. package/dist/content/stepper/stepper.d.ts.map +1 -0
  152. package/dist/copy-command.cjs +9 -3
  153. package/dist/copy-command.cjs.map +1 -1
  154. package/dist/copy-command.js +9 -3
  155. package/dist/copy-command.js.map +1 -1
  156. package/dist/{headless → core}/_internal.d.ts +3 -5
  157. package/dist/core/_internal.d.ts.map +1 -0
  158. package/dist/core/announcer.cjs.map +1 -0
  159. package/dist/core/announcer.d.ts.map +1 -0
  160. package/dist/{headless → core}/announcer.js +1 -1
  161. package/dist/core/announcer.js.map +1 -0
  162. package/dist/core/aria-reflection.cjs.map +1 -0
  163. package/dist/core/aria-reflection.d.ts.map +1 -0
  164. package/dist/{headless → core}/aria-reflection.js +1 -1
  165. package/dist/core/aria-reflection.js.map +1 -0
  166. package/dist/core/auto-resize.cjs.map +1 -0
  167. package/dist/core/auto-resize.d.ts.map +1 -0
  168. package/dist/{headless → core}/auto-resize.js +1 -1
  169. package/dist/core/auto-resize.js.map +1 -0
  170. package/dist/core/checkable.cjs.map +1 -0
  171. package/dist/core/checkable.d.ts.map +1 -0
  172. package/dist/{headless → core}/checkable.js +1 -1
  173. package/dist/core/checkable.js.map +1 -0
  174. package/dist/core/choice-field.cjs +2 -0
  175. package/dist/core/choice-field.cjs.map +1 -0
  176. package/dist/core/choice-field.d.ts.map +1 -0
  177. package/dist/{headless → core}/choice-field.js +3 -2
  178. package/dist/core/choice-field.js.map +1 -0
  179. package/dist/core/composer.cjs.map +1 -0
  180. package/dist/core/composer.d.ts.map +1 -0
  181. package/dist/{headless → core}/composer.js +1 -1
  182. package/dist/core/composer.js.map +1 -0
  183. package/dist/{headless → core}/date-picker.cjs +1 -1
  184. package/dist/core/date-picker.cjs.map +1 -0
  185. package/dist/core/date-picker.d.ts.map +1 -0
  186. package/dist/{headless → core}/date-picker.js +3 -3
  187. package/dist/core/date-picker.js.map +1 -0
  188. package/dist/core/direction.cjs.map +1 -0
  189. package/dist/core/direction.d.ts.map +1 -0
  190. package/dist/{headless → core}/direction.js +1 -1
  191. package/dist/core/direction.js.map +1 -0
  192. package/dist/core/field-base.cjs +2 -0
  193. package/dist/core/field-base.cjs.map +1 -0
  194. package/dist/{headless → core}/field-base.d.ts +3 -3
  195. package/dist/core/field-base.d.ts.map +1 -0
  196. package/dist/core/field-base.js +66 -0
  197. package/dist/core/field-base.js.map +1 -0
  198. package/dist/core/focus.cjs.map +1 -0
  199. package/dist/core/focus.d.ts.map +1 -0
  200. package/dist/{headless → core}/focus.js +1 -1
  201. package/dist/core/focus.js.map +1 -0
  202. package/dist/{headless → core}/index.d.ts +7 -6
  203. package/dist/core/index.d.ts.map +1 -0
  204. package/dist/{headless → core}/keyboard.cjs +1 -1
  205. package/dist/core/keyboard.cjs.map +1 -0
  206. package/dist/core/keyboard.d.ts.map +1 -0
  207. package/dist/{headless → core}/keyboard.js +2 -2
  208. package/dist/core/keyboard.js.map +1 -0
  209. package/dist/core/light-dom.cjs.map +1 -0
  210. package/dist/core/light-dom.d.ts.map +1 -0
  211. package/dist/{headless → core}/light-dom.js +1 -1
  212. package/dist/core/light-dom.js.map +1 -0
  213. package/dist/core/nav.cjs.map +1 -0
  214. package/dist/core/nav.d.ts.map +1 -0
  215. package/dist/{headless → core}/nav.js +1 -1
  216. package/dist/core/nav.js.map +1 -0
  217. package/dist/core/numbers.cjs.map +1 -0
  218. package/dist/core/numbers.d.ts.map +1 -0
  219. package/dist/{headless → core}/numbers.js +1 -1
  220. package/dist/core/numbers.js.map +1 -0
  221. package/dist/core/option-list.cjs +2 -0
  222. package/dist/core/option-list.cjs.map +1 -0
  223. package/dist/core/option-list.d.ts +49 -0
  224. package/dist/core/option-list.d.ts.map +1 -0
  225. package/dist/core/option-list.js +65 -0
  226. package/dist/core/option-list.js.map +1 -0
  227. package/dist/core/ore.cjs.map +1 -0
  228. package/dist/{headless → core}/ore.d.ts +2 -2
  229. package/dist/core/ore.d.ts.map +1 -0
  230. package/dist/{headless → core}/ore.js +1 -1
  231. package/dist/core/ore.js.map +1 -0
  232. package/dist/core/overlay.cjs +2 -0
  233. package/dist/core/overlay.cjs.map +1 -0
  234. package/dist/core/overlay.d.ts +41 -0
  235. package/dist/core/overlay.d.ts.map +1 -0
  236. package/dist/core/overlay.js +17 -0
  237. package/dist/core/overlay.js.map +1 -0
  238. package/dist/core/paginated-list.d.ts.map +1 -0
  239. package/dist/core/parse.cjs.map +1 -0
  240. package/dist/core/parse.d.ts.map +1 -0
  241. package/dist/{headless → core}/parse.js +1 -1
  242. package/dist/core/parse.js.map +1 -0
  243. package/dist/core/positioner.cjs +2 -0
  244. package/dist/core/positioner.cjs.map +1 -0
  245. package/dist/core/positioner.d.ts.map +1 -0
  246. package/dist/{headless → core}/positioner.js +7 -7
  247. package/dist/core/positioner.js.map +1 -0
  248. package/dist/core/ref-callback.cjs +2 -0
  249. package/dist/core/ref-callback.cjs.map +1 -0
  250. package/dist/core/ref-callback.d.ts.map +1 -0
  251. package/dist/{headless → core}/ref-callback.js +2 -2
  252. package/dist/core/ref-callback.js.map +1 -0
  253. package/dist/core/signals.cjs +2 -0
  254. package/dist/core/signals.cjs.map +1 -0
  255. package/dist/core/signals.d.ts.map +1 -0
  256. package/dist/{headless → core}/signals.js +3 -2
  257. package/dist/core/signals.js.map +1 -0
  258. package/dist/core/slider.cjs +2 -0
  259. package/dist/core/slider.cjs.map +1 -0
  260. package/dist/core/slider.d.ts.map +1 -0
  261. package/dist/{headless → core}/slider.js +3 -3
  262. package/dist/{headless/slider.cjs.map → core/slider.js.map} +1 -1
  263. package/dist/core/spinner.cjs +2 -0
  264. package/dist/core/spinner.cjs.map +1 -0
  265. package/dist/core/spinner.d.ts.map +1 -0
  266. package/dist/{headless → core}/spinner.js +3 -3
  267. package/dist/{headless/spinner.cjs.map → core/spinner.js.map} +1 -1
  268. package/dist/core/swipe.cjs.map +1 -0
  269. package/dist/core/swipe.d.ts.map +1 -0
  270. package/dist/{headless → core}/swipe.js +1 -1
  271. package/dist/core/swipe.js.map +1 -0
  272. package/dist/core/text-field.cjs.map +1 -0
  273. package/dist/core/text-field.d.ts.map +1 -0
  274. package/dist/{headless → core}/text-field.js +1 -1
  275. package/dist/core/text-field.js.map +1 -0
  276. package/dist/core/typeahead.cjs.map +1 -0
  277. package/dist/core/typeahead.d.ts.map +1 -0
  278. package/dist/{headless → core}/typeahead.js +1 -1
  279. package/dist/core/typeahead.js.map +1 -0
  280. package/dist/custom-elements.json +4433 -3949
  281. package/dist/datagrid.cjs +320 -271
  282. package/dist/datagrid.cjs.map +1 -1
  283. package/dist/datagrid.js +489 -435
  284. package/dist/datagrid.js.map +1 -1
  285. package/dist/date-picker.cjs +77 -62
  286. package/dist/date-picker.cjs.map +1 -1
  287. package/dist/date-picker.js +169 -146
  288. package/dist/date-picker.js.map +1 -1
  289. package/dist/dialog.cjs +3 -3
  290. package/dist/dialog.cjs.map +1 -1
  291. package/dist/dialog.js +18 -7
  292. package/dist/dialog.js.map +1 -1
  293. package/dist/disclosure/tab-panel/tab-panel.d.ts.map +1 -1
  294. package/dist/disclosure/tabs/tabs.d.ts.map +1 -1
  295. package/dist/drawer.cjs +5 -5
  296. package/dist/drawer.cjs.map +1 -1
  297. package/dist/drawer.js +52 -47
  298. package/dist/drawer.js.map +1 -1
  299. package/dist/errors.cjs.map +1 -1
  300. package/dist/errors.js.map +1 -1
  301. package/dist/feedback/async/async.d.ts.map +1 -1
  302. package/dist/feedback/chip/chip.d.ts.map +1 -1
  303. package/dist/feedback/progress/progress.d.ts.map +1 -1
  304. package/dist/feedback/skeleton/skeleton.d.ts.map +1 -1
  305. package/dist/feedback/toast/index.d.ts +1 -1
  306. package/dist/feedback/toast/index.d.ts.map +1 -1
  307. package/dist/feedback/toast/toast.d.ts +16 -68
  308. package/dist/feedback/toast/toast.d.ts.map +1 -1
  309. package/dist/feedback/typing-indicator/typing-indicator.d.ts +1 -1
  310. package/dist/file-input.cjs +111 -78
  311. package/dist/file-input.cjs.map +1 -1
  312. package/dist/file-input.js +220 -184
  313. package/dist/file-input.js.map +1 -1
  314. package/dist/grid-item.cjs +3 -1
  315. package/dist/grid-item.cjs.map +1 -1
  316. package/dist/grid-item.js +3 -1
  317. package/dist/grid-item.js.map +1 -1
  318. package/dist/grid.cjs +3 -1
  319. package/dist/grid.cjs.map +1 -1
  320. package/dist/grid.js +6 -5
  321. package/dist/grid.js.map +1 -1
  322. package/dist/icon.cjs +5 -1
  323. package/dist/icon.cjs.map +1 -1
  324. package/dist/icon.js +50 -47
  325. package/dist/icon.js.map +1 -1
  326. package/dist/index.cjs +1 -1
  327. package/dist/index.d.ts +7 -8
  328. package/dist/index.d.ts.map +1 -1
  329. package/dist/index.js +2 -67
  330. package/dist/input.cjs +44 -40
  331. package/dist/input.cjs.map +1 -1
  332. package/dist/input.js +132 -130
  333. package/dist/input.js.map +1 -1
  334. package/dist/inputs/button-group/button-group.css.cjs +1 -1
  335. package/dist/inputs/button-group/button-group.css.cjs.map +1 -1
  336. package/dist/inputs/button-group/button-group.css.js +1 -1
  337. package/dist/inputs/button-group/button-group.css.js.map +1 -1
  338. package/dist/inputs/button-group/button-group.d.ts +6 -3
  339. package/dist/inputs/button-group/button-group.d.ts.map +1 -1
  340. package/dist/inputs/calendar/calendar.d.ts.map +1 -1
  341. package/dist/inputs/checkbox/checkbox.d.ts +6 -5
  342. package/dist/inputs/checkbox/checkbox.d.ts.map +1 -1
  343. package/dist/inputs/checkbox-group/checkbox-group.d.ts +1 -1
  344. package/dist/inputs/checkbox-group/checkbox-group.d.ts.map +1 -1
  345. package/dist/inputs/combobox/combobox.d.ts +4 -2
  346. package/dist/inputs/combobox/combobox.d.ts.map +1 -1
  347. package/dist/inputs/combobox/combobox.types.d.ts +5 -7
  348. package/dist/inputs/combobox/combobox.types.d.ts.map +1 -1
  349. package/dist/inputs/datagrid/datagrid-column.cjs +1 -1
  350. package/dist/inputs/datagrid/datagrid-column.cjs.map +1 -1
  351. package/dist/inputs/datagrid/datagrid-column.d.ts +1 -1
  352. package/dist/inputs/datagrid/datagrid-column.d.ts.map +1 -1
  353. package/dist/inputs/datagrid/datagrid-column.js +5 -5
  354. package/dist/inputs/datagrid/datagrid-column.js.map +1 -1
  355. package/dist/inputs/datagrid/datagrid-model.cjs +2 -0
  356. package/dist/inputs/datagrid/datagrid-model.cjs.map +1 -0
  357. package/dist/inputs/datagrid/datagrid-model.d.ts +101 -0
  358. package/dist/inputs/datagrid/datagrid-model.d.ts.map +1 -0
  359. package/dist/inputs/datagrid/datagrid-model.js +202 -0
  360. package/dist/inputs/datagrid/datagrid-model.js.map +1 -0
  361. package/dist/inputs/datagrid/datagrid-nav.cjs.map +1 -1
  362. package/dist/inputs/datagrid/datagrid.d.ts +44 -45
  363. package/dist/inputs/datagrid/datagrid.d.ts.map +1 -1
  364. package/dist/inputs/date-picker/date-picker.d.ts +4 -4
  365. package/dist/inputs/date-picker/date-picker.d.ts.map +1 -1
  366. package/dist/inputs/file-input/file-input-upload.cjs +1 -1
  367. package/dist/inputs/file-input/file-input-upload.cjs.map +1 -1
  368. package/dist/inputs/file-input/file-input-upload.d.ts.map +1 -1
  369. package/dist/inputs/file-input/file-input-upload.js +6 -3
  370. package/dist/inputs/file-input/file-input-upload.js.map +1 -1
  371. package/dist/inputs/file-input/file-input.d.ts.map +1 -1
  372. package/dist/inputs/index.d.ts +0 -4
  373. package/dist/inputs/index.d.ts.map +1 -1
  374. package/dist/inputs/input/input.d.ts +4 -10
  375. package/dist/inputs/input/input.d.ts.map +1 -1
  376. package/dist/inputs/message-composer/message-composer.d.ts +6 -10
  377. package/dist/inputs/message-composer/message-composer.d.ts.map +1 -1
  378. package/dist/inputs/number-input/number-input.d.ts +4 -10
  379. package/dist/inputs/number-input/number-input.d.ts.map +1 -1
  380. package/dist/inputs/otp-input/otp-input.d.ts +4 -6
  381. package/dist/inputs/otp-input/otp-input.d.ts.map +1 -1
  382. package/dist/inputs/radio/radio.d.ts +4 -3
  383. package/dist/inputs/radio/radio.d.ts.map +1 -1
  384. package/dist/inputs/radio-group/radio-group.d.ts +1 -1
  385. package/dist/inputs/radio-group/radio-group.d.ts.map +1 -1
  386. package/dist/inputs/rating/rating.d.ts +4 -5
  387. package/dist/inputs/rating/rating.d.ts.map +1 -1
  388. package/dist/inputs/select/select.d.ts +7 -9
  389. package/dist/inputs/select/select.d.ts.map +1 -1
  390. package/dist/inputs/shared/field-binding.cjs.map +1 -1
  391. package/dist/inputs/shared/field-binding.d.ts +1 -1
  392. package/dist/inputs/shared/field-binding.js.map +1 -1
  393. package/dist/inputs/shared/index.d.ts +0 -1
  394. package/dist/inputs/shared/index.d.ts.map +1 -1
  395. package/dist/inputs/shared/native-field-event.cjs +2 -0
  396. package/dist/inputs/shared/native-field-event.cjs.map +1 -0
  397. package/dist/inputs/shared/native-field-event.d.ts +6 -0
  398. package/dist/inputs/shared/native-field-event.d.ts.map +1 -0
  399. package/dist/inputs/shared/native-field-event.js +29 -0
  400. package/dist/inputs/shared/native-field-event.js.map +1 -0
  401. package/dist/inputs/shared/templates.cjs +18 -12
  402. package/dist/inputs/shared/templates.cjs.map +1 -1
  403. package/dist/inputs/shared/templates.d.ts +1 -1
  404. package/dist/inputs/shared/templates.d.ts.map +1 -1
  405. package/dist/inputs/shared/templates.js +19 -13
  406. package/dist/inputs/shared/templates.js.map +1 -1
  407. package/dist/inputs/slider/slider.css.cjs +1 -1
  408. package/dist/inputs/slider/slider.css.cjs.map +1 -1
  409. package/dist/inputs/slider/slider.css.js +1 -1
  410. package/dist/inputs/slider/slider.css.js.map +1 -1
  411. package/dist/inputs/slider/slider.d.ts +7 -10
  412. package/dist/inputs/slider/slider.d.ts.map +1 -1
  413. package/dist/inputs/switch/switch.d.ts +4 -3
  414. package/dist/inputs/switch/switch.d.ts.map +1 -1
  415. package/dist/inputs/textarea/textarea.d.ts +4 -10
  416. package/dist/inputs/textarea/textarea.d.ts.map +1 -1
  417. package/dist/inputs/time-picker/time-picker.d.ts +4 -4
  418. package/dist/inputs/time-picker/time-picker.d.ts.map +1 -1
  419. package/dist/layout/box/box.d.ts.map +1 -1
  420. package/dist/layout/navbar/navbar.css.cjs +1 -1
  421. package/dist/layout/navbar/navbar.css.cjs.map +1 -1
  422. package/dist/layout/navbar/navbar.css.js +1 -1
  423. package/dist/layout/navbar/navbar.css.js.map +1 -1
  424. package/dist/layout/navbar/navbar.d.ts +10 -0
  425. package/dist/layout/navbar/navbar.d.ts.map +1 -1
  426. package/dist/layout/sidebar/sidebar-item.css.cjs +1 -1
  427. package/dist/layout/sidebar/sidebar-item.css.cjs.map +1 -1
  428. package/dist/layout/sidebar/sidebar-item.css.js +1 -1
  429. package/dist/layout/sidebar/sidebar-item.css.js.map +1 -1
  430. package/dist/layout/sidebar/sidebar.css.cjs +1 -1
  431. package/dist/layout/sidebar/sidebar.css.cjs.map +1 -1
  432. package/dist/layout/sidebar/sidebar.css.js +1 -1
  433. package/dist/layout/sidebar/sidebar.css.js.map +1 -1
  434. package/dist/layout/sidebar/sidebar.d.ts.map +1 -1
  435. package/dist/list-item.cjs +2 -2
  436. package/dist/list-item.cjs.map +1 -1
  437. package/dist/list-item.js +4 -4
  438. package/dist/list-item.js.map +1 -1
  439. package/dist/list.cjs +3 -1
  440. package/dist/list.cjs.map +1 -1
  441. package/dist/list.js +28 -25
  442. package/dist/list.js.map +1 -1
  443. package/dist/marquee.cjs +32 -0
  444. package/dist/marquee.cjs.map +1 -0
  445. package/dist/marquee.js +93 -0
  446. package/dist/marquee.js.map +1 -0
  447. package/dist/menu.cjs +7 -7
  448. package/dist/menu.cjs.map +1 -1
  449. package/dist/menu.js +135 -103
  450. package/dist/menu.js.map +1 -1
  451. package/dist/message-composer.cjs +33 -31
  452. package/dist/message-composer.cjs.map +1 -1
  453. package/dist/message-composer.js +123 -123
  454. package/dist/message-composer.js.map +1 -1
  455. package/dist/navbar.cjs +17 -15
  456. package/dist/navbar.cjs.map +1 -1
  457. package/dist/navbar.js +108 -89
  458. package/dist/navbar.js.map +1 -1
  459. package/dist/number-input.cjs +19 -19
  460. package/dist/number-input.cjs.map +1 -1
  461. package/dist/number-input.js +94 -97
  462. package/dist/number-input.js.map +1 -1
  463. package/dist/otp-input.cjs +15 -13
  464. package/dist/otp-input.cjs.map +1 -1
  465. package/dist/otp-input.js +83 -82
  466. package/dist/otp-input.js.map +1 -1
  467. package/dist/overlay/command-palette/command-palette.d.ts +2 -2
  468. package/dist/overlay/command-palette/command-palette.d.ts.map +1 -1
  469. package/dist/overlay/command-palette/command-palette.types.d.ts +4 -5
  470. package/dist/overlay/command-palette/command-palette.types.d.ts.map +1 -1
  471. package/dist/overlay/dialog/dialog.d.ts +7 -6
  472. package/dist/overlay/dialog/dialog.d.ts.map +1 -1
  473. package/dist/overlay/drawer/drawer.d.ts +7 -10
  474. package/dist/overlay/drawer/drawer.d.ts.map +1 -1
  475. package/dist/overlay/index.d.ts +1 -1
  476. package/dist/overlay/index.d.ts.map +1 -1
  477. package/dist/overlay/menu/menu.d.ts +9 -7
  478. package/dist/overlay/menu/menu.d.ts.map +1 -1
  479. package/dist/overlay/popover/popover.d.ts +6 -11
  480. package/dist/overlay/popover/popover.d.ts.map +1 -1
  481. package/dist/overlay/shared/await-exit.cjs +1 -1
  482. package/dist/overlay/shared/await-exit.cjs.map +1 -1
  483. package/dist/overlay/shared/await-exit.js +1 -1
  484. package/dist/overlay/shared/await-exit.js.map +1 -1
  485. package/dist/overlay/shared/use-dialog.cjs +1 -1
  486. package/dist/overlay/shared/use-dialog.cjs.map +1 -1
  487. package/dist/overlay/shared/use-dialog.d.ts +13 -3
  488. package/dist/overlay/shared/use-dialog.d.ts.map +1 -1
  489. package/dist/overlay/shared/use-dialog.js +80 -72
  490. package/dist/overlay/shared/use-dialog.js.map +1 -1
  491. package/dist/overlay/shared/use-floating-trigger.cjs +1 -1
  492. package/dist/overlay/shared/use-floating-trigger.cjs.map +1 -1
  493. package/dist/overlay/shared/use-floating-trigger.d.ts +3 -1
  494. package/dist/overlay/shared/use-floating-trigger.d.ts.map +1 -1
  495. package/dist/overlay/shared/use-floating-trigger.js +64 -70
  496. package/dist/overlay/shared/use-floating-trigger.js.map +1 -1
  497. package/dist/overlay/tooltip/tooltip.d.ts +9 -0
  498. package/dist/overlay/tooltip/tooltip.d.ts.map +1 -1
  499. package/dist/pagination.cjs +69 -55
  500. package/dist/pagination.cjs.map +1 -1
  501. package/dist/pagination.js +70 -56
  502. package/dist/pagination.js.map +1 -1
  503. package/dist/password-strength.cjs +6 -4
  504. package/dist/password-strength.cjs.map +1 -1
  505. package/dist/password-strength.js +6 -4
  506. package/dist/password-strength.js.map +1 -1
  507. package/dist/popover.cjs +4 -4
  508. package/dist/popover.cjs.map +1 -1
  509. package/dist/popover.js +28 -17
  510. package/dist/popover.js.map +1 -1
  511. package/dist/progress.cjs +25 -17
  512. package/dist/progress.cjs.map +1 -1
  513. package/dist/progress.js +29 -22
  514. package/dist/progress.js.map +1 -1
  515. package/dist/radio-group.cjs +14 -12
  516. package/dist/radio-group.cjs.map +1 -1
  517. package/dist/radio-group.js +88 -90
  518. package/dist/radio-group.js.map +1 -1
  519. package/dist/radio.cjs +4 -4
  520. package/dist/radio.cjs.map +1 -1
  521. package/dist/radio.js +90 -90
  522. package/dist/radio.js.map +1 -1
  523. package/dist/rating.cjs +18 -16
  524. package/dist/rating.cjs.map +1 -1
  525. package/dist/rating.js +69 -69
  526. package/dist/rating.js.map +1 -1
  527. package/dist/refine.cjs +1670 -1325
  528. package/dist/refine.cjs.map +1 -1
  529. package/dist/refine.iife.js +1673 -1328
  530. package/dist/refine.iife.js.map +1 -1
  531. package/dist/refine.js +1758 -1413
  532. package/dist/refine.js.map +1 -1
  533. package/dist/register.d.ts +21 -0
  534. package/dist/register.d.ts.map +1 -0
  535. package/dist/select.cjs +59 -51
  536. package/dist/select.cjs.map +1 -1
  537. package/dist/select.js +189 -182
  538. package/dist/select.js.map +1 -1
  539. package/dist/separator.cjs +9 -9
  540. package/dist/separator.cjs.map +1 -1
  541. package/dist/separator.js +9 -9
  542. package/dist/separator.js.map +1 -1
  543. package/dist/shared/index.d.ts +1 -1
  544. package/dist/shared/prop-bundles.cjs +1 -1
  545. package/dist/shared/prop-bundles.cjs.map +1 -1
  546. package/dist/shared/prop-bundles.js +4 -2
  547. package/dist/shared/prop-bundles.js.map +1 -1
  548. package/dist/shared/size-presets.cjs +1 -1
  549. package/dist/shared/size-presets.cjs.map +1 -1
  550. package/dist/shared/size-presets.d.ts +3 -0
  551. package/dist/shared/size-presets.d.ts.map +1 -1
  552. package/dist/shared/size-presets.js +4 -1
  553. package/dist/shared/size-presets.js.map +1 -1
  554. package/dist/sidebar.cjs +8 -8
  555. package/dist/sidebar.cjs.map +1 -1
  556. package/dist/sidebar.js +25 -25
  557. package/dist/sidebar.js.map +1 -1
  558. package/dist/skeleton.cjs +4 -6
  559. package/dist/skeleton.cjs.map +1 -1
  560. package/dist/skeleton.js +21 -22
  561. package/dist/skeleton.js.map +1 -1
  562. package/dist/slider.cjs +14 -14
  563. package/dist/slider.cjs.map +1 -1
  564. package/dist/slider.js +160 -168
  565. package/dist/slider.js.map +1 -1
  566. package/dist/step.cjs +47 -0
  567. package/dist/step.cjs.map +1 -0
  568. package/dist/step.js +127 -0
  569. package/dist/step.js.map +1 -0
  570. package/dist/stepper.cjs +8 -0
  571. package/dist/stepper.cjs.map +1 -0
  572. package/dist/stepper.js +101 -0
  573. package/dist/stepper.js.map +1 -0
  574. package/dist/styles/index.d.ts +0 -28
  575. package/dist/styles/index.d.ts.map +1 -1
  576. package/dist/styles/mixins/shape.css.cjs +2 -2
  577. package/dist/styles/mixins/shape.css.cjs.map +1 -1
  578. package/dist/styles/mixins/shape.css.js +6 -6
  579. package/dist/styles/mixins/shape.css.js.map +1 -1
  580. package/dist/styles/tokens.css +4 -0
  581. package/dist/switch.cjs +4 -4
  582. package/dist/switch.cjs.map +1 -1
  583. package/dist/switch.js +44 -44
  584. package/dist/switch.js.map +1 -1
  585. package/dist/tab-item.cjs +3 -3
  586. package/dist/tab-item.cjs.map +1 -1
  587. package/dist/tab-item.js +24 -24
  588. package/dist/tab-item.js.map +1 -1
  589. package/dist/tab-panel.cjs +9 -7
  590. package/dist/tab-panel.cjs.map +1 -1
  591. package/dist/tab-panel.js +15 -14
  592. package/dist/tab-panel.js.map +1 -1
  593. package/dist/table.cjs +3 -1
  594. package/dist/table.cjs.map +1 -1
  595. package/dist/table.js +3 -1
  596. package/dist/table.js.map +1 -1
  597. package/dist/tabs.cjs +6 -6
  598. package/dist/tabs.cjs.map +1 -1
  599. package/dist/tabs.js +30 -29
  600. package/dist/tabs.js.map +1 -1
  601. package/dist/text.cjs +3 -1
  602. package/dist/text.cjs.map +1 -1
  603. package/dist/text.js +3 -1
  604. package/dist/text.js.map +1 -1
  605. package/dist/textarea.cjs +22 -22
  606. package/dist/textarea.cjs.map +1 -1
  607. package/dist/textarea.js +110 -112
  608. package/dist/textarea.js.map +1 -1
  609. package/dist/time-picker.cjs +69 -61
  610. package/dist/time-picker.cjs.map +1 -1
  611. package/dist/time-picker.js +146 -132
  612. package/dist/time-picker.js.map +1 -1
  613. package/dist/toast.cjs +22 -22
  614. package/dist/toast.cjs.map +1 -1
  615. package/dist/toast.js +280 -173
  616. package/dist/toast.js.map +1 -1
  617. package/dist/tooltip.cjs +5 -5
  618. package/dist/tooltip.cjs.map +1 -1
  619. package/dist/tooltip.js +61 -51
  620. package/dist/tooltip.js.map +1 -1
  621. package/dist/typing-indicator.cjs +1 -1
  622. package/dist/typing-indicator.cjs.map +1 -1
  623. package/dist/typing-indicator.js +5 -5
  624. package/dist/typing-indicator.js.map +1 -1
  625. package/dist/utils/link.cjs.map +1 -1
  626. package/dist/utils/link.d.ts +2 -2
  627. package/package.json +36 -117
  628. package/dist/form.cjs +0 -11
  629. package/dist/form.cjs.map +0 -1
  630. package/dist/form.js +0 -59
  631. package/dist/form.js.map +0 -1
  632. package/dist/headless/_internal.d.ts.map +0 -1
  633. package/dist/headless/announcer.cjs.map +0 -1
  634. package/dist/headless/announcer.d.ts.map +0 -1
  635. package/dist/headless/announcer.js.map +0 -1
  636. package/dist/headless/aria-reflection.cjs.map +0 -1
  637. package/dist/headless/aria-reflection.d.ts.map +0 -1
  638. package/dist/headless/aria-reflection.js.map +0 -1
  639. package/dist/headless/auto-resize.cjs.map +0 -1
  640. package/dist/headless/auto-resize.d.ts.map +0 -1
  641. package/dist/headless/auto-resize.js.map +0 -1
  642. package/dist/headless/checkable.cjs.map +0 -1
  643. package/dist/headless/checkable.d.ts.map +0 -1
  644. package/dist/headless/checkable.js.map +0 -1
  645. package/dist/headless/choice-field.cjs +0 -2
  646. package/dist/headless/choice-field.cjs.map +0 -1
  647. package/dist/headless/choice-field.d.ts.map +0 -1
  648. package/dist/headless/choice-field.js.map +0 -1
  649. package/dist/headless/composer.cjs.map +0 -1
  650. package/dist/headless/composer.d.ts.map +0 -1
  651. package/dist/headless/composer.js.map +0 -1
  652. package/dist/headless/datagrid.cjs +0 -2
  653. package/dist/headless/datagrid.cjs.map +0 -1
  654. package/dist/headless/datagrid.d.ts +0 -158
  655. package/dist/headless/datagrid.d.ts.map +0 -1
  656. package/dist/headless/datagrid.js +0 -55
  657. package/dist/headless/datagrid.js.map +0 -1
  658. package/dist/headless/date-picker.cjs.map +0 -1
  659. package/dist/headless/date-picker.d.ts.map +0 -1
  660. package/dist/headless/date-picker.js.map +0 -1
  661. package/dist/headless/direction.cjs.map +0 -1
  662. package/dist/headless/direction.d.ts.map +0 -1
  663. package/dist/headless/direction.js.map +0 -1
  664. package/dist/headless/field-base.cjs +0 -2
  665. package/dist/headless/field-base.cjs.map +0 -1
  666. package/dist/headless/field-base.d.ts.map +0 -1
  667. package/dist/headless/field-base.js +0 -72
  668. package/dist/headless/field-base.js.map +0 -1
  669. package/dist/headless/focus.cjs.map +0 -1
  670. package/dist/headless/focus.d.ts.map +0 -1
  671. package/dist/headless/focus.js.map +0 -1
  672. package/dist/headless/index.d.ts.map +0 -1
  673. package/dist/headless/keyboard.cjs.map +0 -1
  674. package/dist/headless/keyboard.d.ts.map +0 -1
  675. package/dist/headless/keyboard.js.map +0 -1
  676. package/dist/headless/light-dom.cjs.map +0 -1
  677. package/dist/headless/light-dom.d.ts.map +0 -1
  678. package/dist/headless/light-dom.js.map +0 -1
  679. package/dist/headless/nav.cjs.map +0 -1
  680. package/dist/headless/nav.d.ts.map +0 -1
  681. package/dist/headless/nav.js.map +0 -1
  682. package/dist/headless/numbers.cjs.map +0 -1
  683. package/dist/headless/numbers.d.ts.map +0 -1
  684. package/dist/headless/numbers.js.map +0 -1
  685. package/dist/headless/option-list.cjs +0 -2
  686. package/dist/headless/option-list.cjs.map +0 -1
  687. package/dist/headless/option-list.d.ts +0 -107
  688. package/dist/headless/option-list.d.ts.map +0 -1
  689. package/dist/headless/option-list.js +0 -66
  690. package/dist/headless/option-list.js.map +0 -1
  691. package/dist/headless/ore.cjs.map +0 -1
  692. package/dist/headless/ore.d.ts.map +0 -1
  693. package/dist/headless/ore.js.map +0 -1
  694. package/dist/headless/overlay.cjs +0 -2
  695. package/dist/headless/overlay.cjs.map +0 -1
  696. package/dist/headless/overlay.d.ts +0 -64
  697. package/dist/headless/overlay.d.ts.map +0 -1
  698. package/dist/headless/overlay.js +0 -32
  699. package/dist/headless/overlay.js.map +0 -1
  700. package/dist/headless/paginated-list.cjs +0 -2
  701. package/dist/headless/paginated-list.cjs.map +0 -1
  702. package/dist/headless/paginated-list.d.ts.map +0 -1
  703. package/dist/headless/paginated-list.js +0 -34
  704. package/dist/headless/paginated-list.js.map +0 -1
  705. package/dist/headless/parse.cjs.map +0 -1
  706. package/dist/headless/parse.d.ts.map +0 -1
  707. package/dist/headless/parse.js.map +0 -1
  708. package/dist/headless/positioner.cjs +0 -2
  709. package/dist/headless/positioner.cjs.map +0 -1
  710. package/dist/headless/positioner.d.ts.map +0 -1
  711. package/dist/headless/positioner.js.map +0 -1
  712. package/dist/headless/ref-callback.cjs +0 -2
  713. package/dist/headless/ref-callback.cjs.map +0 -1
  714. package/dist/headless/ref-callback.d.ts.map +0 -1
  715. package/dist/headless/ref-callback.js.map +0 -1
  716. package/dist/headless/selection-control.cjs +0 -2
  717. package/dist/headless/selection-control.cjs.map +0 -1
  718. package/dist/headless/selection-control.d.ts +0 -30
  719. package/dist/headless/selection-control.d.ts.map +0 -1
  720. package/dist/headless/selection-control.js +0 -44
  721. package/dist/headless/selection-control.js.map +0 -1
  722. package/dist/headless/signals.cjs +0 -2
  723. package/dist/headless/signals.cjs.map +0 -1
  724. package/dist/headless/signals.d.ts.map +0 -1
  725. package/dist/headless/signals.js.map +0 -1
  726. package/dist/headless/slider.cjs +0 -2
  727. package/dist/headless/slider.d.ts.map +0 -1
  728. package/dist/headless/slider.js.map +0 -1
  729. package/dist/headless/sort-control.cjs +0 -2
  730. package/dist/headless/sort-control.cjs.map +0 -1
  731. package/dist/headless/sort-control.d.ts +0 -22
  732. package/dist/headless/sort-control.d.ts.map +0 -1
  733. package/dist/headless/sort-control.js +0 -36
  734. package/dist/headless/sort-control.js.map +0 -1
  735. package/dist/headless/spinner.cjs +0 -2
  736. package/dist/headless/spinner.d.ts.map +0 -1
  737. package/dist/headless/spinner.js.map +0 -1
  738. package/dist/headless/swipe.cjs.map +0 -1
  739. package/dist/headless/swipe.d.ts.map +0 -1
  740. package/dist/headless/swipe.js.map +0 -1
  741. package/dist/headless/text-field.cjs.map +0 -1
  742. package/dist/headless/text-field.d.ts.map +0 -1
  743. package/dist/headless/text-field.js.map +0 -1
  744. package/dist/headless/typeahead.cjs.map +0 -1
  745. package/dist/headless/typeahead.d.ts.map +0 -1
  746. package/dist/headless/typeahead.js.map +0 -1
  747. package/dist/headless.cjs +0 -1
  748. package/dist/headless.js +0 -30
  749. package/dist/inputs/datagrid/datagrid-controls.cjs +0 -2
  750. package/dist/inputs/datagrid/datagrid-controls.cjs.map +0 -1
  751. package/dist/inputs/datagrid/datagrid-controls.d.ts +0 -98
  752. package/dist/inputs/datagrid/datagrid-controls.d.ts.map +0 -1
  753. package/dist/inputs/datagrid/datagrid-controls.js +0 -147
  754. package/dist/inputs/datagrid/datagrid-controls.js.map +0 -1
  755. package/dist/inputs/form/form.css.cjs +0 -2
  756. package/dist/inputs/form/form.css.cjs.map +0 -1
  757. package/dist/inputs/form/form.css.js +0 -6
  758. package/dist/inputs/form/form.css.js.map +0 -1
  759. package/dist/inputs/form/form.d.ts +0 -59
  760. package/dist/inputs/form/form.d.ts.map +0 -1
  761. package/dist/inputs/shared/form-context.cjs +0 -2
  762. package/dist/inputs/shared/form-context.cjs.map +0 -1
  763. package/dist/inputs/shared/form-context.d.ts +0 -55
  764. package/dist/inputs/shared/form-context.d.ts.map +0 -1
  765. package/dist/inputs/shared/form-context.js +0 -15
  766. package/dist/inputs/shared/form-context.js.map +0 -1
  767. package/dist/keymap/dist/_dev.cjs +0 -2
  768. package/dist/keymap/dist/_dev.cjs.map +0 -1
  769. package/dist/keymap/dist/_dev.js +0 -4
  770. package/dist/keymap/dist/_dev.js.map +0 -1
  771. package/dist/keymap/dist/format.cjs +0 -1
  772. package/dist/keymap/dist/format.js +0 -1
  773. package/dist/keymap/dist/index.cjs +0 -1
  774. package/dist/keymap/dist/index.js +0 -4
  775. package/dist/keymap/dist/keymap.cjs +0 -2
  776. package/dist/keymap/dist/keymap.cjs.map +0 -1
  777. package/dist/keymap/dist/keymap.js +0 -221
  778. package/dist/keymap/dist/keymap.js.map +0 -1
  779. package/dist/keymap/dist/layer.cjs +0 -1
  780. package/dist/keymap/dist/layer.js +0 -1
  781. package/dist/styles/index.cjs +0 -2
  782. package/dist/styles/index.cjs.map +0 -1
  783. package/dist/styles/index.js +0 -25
  784. package/dist/styles/index.js.map +0 -1
  785. package/dist/styles/styles.css +0 -5
  786. package/dist/testing/index.d.ts +0 -233
  787. package/dist/testing/index.d.ts.map +0 -1
  788. package/dist/testing.cjs +0 -2
  789. package/dist/testing.cjs.map +0 -1
  790. package/dist/testing.js +0 -43
  791. package/dist/testing.js.map +0 -1
  792. /package/dist/{headless → core}/announcer.cjs +0 -0
  793. /package/dist/{headless → core}/announcer.d.ts +0 -0
  794. /package/dist/{headless → core}/aria-reflection.cjs +0 -0
  795. /package/dist/{headless → core}/aria-reflection.d.ts +0 -0
  796. /package/dist/{headless → core}/auto-resize.cjs +0 -0
  797. /package/dist/{headless → core}/auto-resize.d.ts +0 -0
  798. /package/dist/{headless → core}/checkable.cjs +0 -0
  799. /package/dist/{headless → core}/checkable.d.ts +0 -0
  800. /package/dist/{headless → core}/choice-field.d.ts +0 -0
  801. /package/dist/{headless → core}/composer.cjs +0 -0
  802. /package/dist/{headless → core}/composer.d.ts +0 -0
  803. /package/dist/{headless → core}/date-picker.d.ts +0 -0
  804. /package/dist/{headless → core}/direction.cjs +0 -0
  805. /package/dist/{headless → core}/direction.d.ts +0 -0
  806. /package/dist/{headless → core}/focus.cjs +0 -0
  807. /package/dist/{headless → core}/focus.d.ts +0 -0
  808. /package/dist/{headless → core}/keyboard.d.ts +0 -0
  809. /package/dist/{headless → core}/light-dom.cjs +0 -0
  810. /package/dist/{headless → core}/light-dom.d.ts +0 -0
  811. /package/dist/{headless → core}/nav.cjs +0 -0
  812. /package/dist/{headless → core}/nav.d.ts +0 -0
  813. /package/dist/{headless → core}/numbers.cjs +0 -0
  814. /package/dist/{headless → core}/numbers.d.ts +0 -0
  815. /package/dist/{headless → core}/ore.cjs +0 -0
  816. /package/dist/{headless → core}/paginated-list.d.ts +0 -0
  817. /package/dist/{headless → core}/parse.cjs +0 -0
  818. /package/dist/{headless → core}/parse.d.ts +0 -0
  819. /package/dist/{headless → core}/positioner.d.ts +0 -0
  820. /package/dist/{headless → core}/ref-callback.d.ts +0 -0
  821. /package/dist/{headless → core}/signals.d.ts +0 -0
  822. /package/dist/{headless → core}/slider.d.ts +0 -0
  823. /package/dist/{headless → core}/spinner.d.ts +0 -0
  824. /package/dist/{headless → core}/swipe.cjs +0 -0
  825. /package/dist/{headless → core}/swipe.d.ts +0 -0
  826. /package/dist/{headless → core}/text-field.cjs +0 -0
  827. /package/dist/{headless → core}/text-field.d.ts +0 -0
  828. /package/dist/{headless → core}/typeahead.cjs +0 -0
  829. /package/dist/{headless → core}/typeahead.d.ts +0 -0
package/dist/carousel.cjs CHANGED
@@ -1,61 +1,69 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./_dev.cjs"),t=require("./headless/swipe.cjs"),n=require("./headless/announcer.cjs"),r=require("./content/carousel/carousel.css.cjs"),i=require("./content/carousel/carousel-slide.cjs");let a=require("@vielzeug/ore"),o=require("@vielzeug/ripple");var s=`ore-carousel`,c=(e,t)=>{let n=e.length;e.forEach((e,r)=>{let i=r===t;e.toggleAttribute(`data-active`,i),e.setAttribute(`aria-hidden`,String(!i)),e.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??`Slide ${r+1} of ${n}`),e.removeAttribute(`data-gallery-visible`),e.toggleAttribute(`data-before`,r<t),e.toggleAttribute(`data-after`,r>t)})},l=(e,t)=>{let n=e.length;e.forEach((e,r)=>{let i=r===t;e.toggleAttribute(`data-active`,i),e.setAttribute(`aria-hidden`,String(!i)),e.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??`Slide ${r+1} of ${n}`),e.removeAttribute(`data-gallery-visible`),e.removeAttribute(`data-before`),e.removeAttribute(`data-after`)})},u=(e,t)=>{let n=e.length;e.forEach((e,r)=>{let i=r===t,a=t>0&&r===t-1,o=t<n-1&&r===t+1;e.toggleAttribute(`data-active`,i),e.setAttribute(`aria-hidden`,String(!i)),e.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??`Slide ${r+1} of ${n}`),e.removeAttribute(`data-before`),e.removeAttribute(`data-after`),e.toggleAttribute(`data-gallery-visible`,i||a||o)})},d=(e,t)=>{e.forEach((e,n)=>{e.toggleAttribute(`data-active`,n===t),e.setAttribute(`aria-hidden`,`false`),e.removeAttribute(`data-before`),e.removeAttribute(`data-after`),e.removeAttribute(`data-gallery-visible`)})};(0,a.define)(s,{props:{autoplay:a.prop.bool(!1),"autoplay-interval":a.prop.number(5e3),color:a.prop.string(),label:a.prop.string(`Carousel`),loop:a.prop.bool(!0),"marquee-duration":a.prop.number(10),orientation:a.prop.string(`horizontal`),"show-controls":a.prop.bool(!0),"show-indicators":a.prop.bool(!0),"slide-index":a.prop.number(0),variant:a.prop.string(`default`)},setup(r){let i=(0,a.getHost)(),s=(0,a.useEmit)(),f=(0,o.signal)(r[`slide-index`].value??0),p=(0,o.computed)(()=>r.variant.value===`marquee`),m=null,h=Array.from(i.querySelectorAll(`:scope > ore-carousel-slide`)),g=(0,o.signal)(h.length),_=()=>{h=Array.from(i.querySelectorAll(`:scope > ore-carousel-slide`)),g.value=h.length},v=(0,o.computed)(()=>r.orientation.value!==`vertical`),y=(0,o.computed)(()=>r.loop.value!==!1),b=(0,o.computed)(()=>r[`show-controls`].value!==!1),x=(0,o.computed)(()=>r[`show-indicators`].value!==!1),S=(0,o.computed)(()=>y.value||f.value>0),C=(0,o.computed)(()=>y.value||f.value<g.value-1),w=null,T=(e,t=!0)=>{let r=g.value;if(r===0)return;let a=y.value?(e%r+r)%r:Math.max(0,Math.min(e,r-1));a!==f.value&&(f.value=a,i.setAttribute(`slide-index`,String(a)),s(`change`,{index:a}),w?.seekTo(a,h),t&&n.announce(h[a]?.getAttribute(`aria-label`)??`Slide ${a+1} of ${r}`))},E=()=>T(f.value-1),D=()=>T(f.value+1);(0,o.watch)(r[`slide-index`],e=>{typeof e==`number`&&e!==f.value&&T(e,!1)});let O=()=>{let e=r.variant.value??`default`,t=r.orientation.value??`horizontal`;h.forEach(n=>{n.setAttribute(`data-variant`,e),n.setAttribute(`data-orientation`,t)})};(0,o.watch)((0,o.computed)(()=>({orientation:r.orientation.value,variant:r.variant.value})),O,{immediate:!0});let k={default:c,fade:c,filmstrip:l,gallery:u,marquee:d},A=()=>{let e=r.variant.value??`default`;k[e](h,f.value)};(0,o.watch)(f,A,{immediate:!0});let j=()=>{m===null&&(m=setInterval(D,r[`autoplay-interval`].value??5e3))},M=()=>{m!==null&&(clearInterval(m),m=null)};(0,o.watch)((0,o.computed)(()=>({enabled:r.autoplay.value,interval:r[`autoplay-interval`].value})),({enabled:e})=>{M(),e&&j()});let N=e=>{let t=v.value,n=t?`ArrowLeft`:`ArrowUp`,r=t?`ArrowRight`:`ArrowDown`;e.key===n?(e.preventDefault(),E()):e.key===r?(e.preventDefault(),D()):e.key===`Home`?(e.preventDefault(),T(0)):e.key===`End`&&(e.preventDefault(),T(g.value-1))},P=t.createSwipeControl({axis:()=>v.value?`x`:`y`,onCommit:e=>{e.distance<0?D():E()},threshold:()=>48});(0,a.bind)({attr:{"aria-label":()=>r.label.value??`Carousel`,"aria-roledescription":()=>`carousel`,orientation:()=>r.orientation.value??`horizontal`,role:()=>`region`,style:()=>`touch-action:${v.value?`pan-y`:`pan-x`}`,variant:()=>r.variant.value??`default`},on:{focusin:()=>{M()},focusout:()=>{r.autoplay.value&&j()},keydown:N,pointercancel:e=>P.handlePointerCancel(e),pointerdown:e=>{e.composedPath().some(e=>e instanceof HTMLElement&&(e.tagName===`BUTTON`||e.tagName===`ORE-BUTTON`||e.tagName===`ORE-PROGRESS`))||P.handlePointerDown(e)},pointerenter:()=>{M()},pointerleave:()=>{r.autoplay.value&&j()},pointermove:e=>P.handlePointerMove(e),pointerup:e=>P.handlePointerUp(e)}});let F=t=>{let n=r.orientation.value??`horizontal`,a=n!==`vertical`;p.value&&r.loop.value===!1&&e.warn(`ore-carousel: loop="false" on the marquee variant stops the scroll animation rather than disabling navigation wrap-around. Navigation in marquee always loops. This is different from loop="false" on other variants.`);let o=h.map(e=>{let r=e.cloneNode(!0);return r.setAttribute(`aria-hidden`,`true`),r.setAttribute(`data-variant`,`marquee`),r.setAttribute(`data-orientation`,n),r.setAttribute(`data-marquee-clone`,``),t.appendChild(r),r});t.style.setProperty(`--_marquee-duration`,`${r[`marquee-duration`].value??10}s`),y.value||t.style.setProperty(`animation-iteration-count`,`1`);let s=!1,c=()=>{s=!0,t.style.setProperty(`animation-play-state`,`paused`)},l=()=>{s=!1,t.style.removeProperty(`animation-play-state`)};i.addEventListener(`mouseenter`,c),i.addEventListener(`mouseleave`,l);let u=null;return{cleanup:()=>{u!==null&&clearTimeout(u),u=null,o.forEach(e=>e.remove()),t.style.removeProperty(`transition`),t.style.removeProperty(`transform`),t.style.removeProperty(`animation`),t.style.removeProperty(`--_marquee-duration`),t.style.removeProperty(`animation-iteration-count`),t.style.removeProperty(`animation-delay`),t.style.removeProperty(`animation-play-state`),i.removeEventListener(`mouseenter`,c),i.removeEventListener(`mouseleave`,l)},seekTo:(e,n)=>{let o=n[e];if(!o)return;let c=a?o.offsetLeft:o.offsetTop,l=a?t.scrollWidth/2:t.scrollHeight/2,d=r[`marquee-duration`].value??10,f=l>0?-(c/l*d):0;if(u!==null&&(clearTimeout(u),u=null,t.style.removeProperty(`transition`)),l===0){t.style.setProperty(`animation-delay`,`${f}s`),s||t.style.removeProperty(`animation-play-state`);return}let p=parseFloat(getComputedStyle(i).getPropertyValue(`--carousel-transition-duration`)||`0.35`)*1e3||350,m=a?`translateX(-${c}px)`:`translateY(-${c}px)`;t.getBoundingClientRect();let h=getComputedStyle(t).transform.match(/matrix\(([^)]+)\)/)?.[1].split(`,`).map(Number),g=a?h?.[4]??0:h?.[5]??0,_=a?`translateX(${g}px)`:`translateY(${g}px)`;t.style.setProperty(`animation`,`none`),t.style.setProperty(`transform`,_),requestAnimationFrame(()=>{t.style.setProperty(`transition`,`transform ${p}ms ease-in-out`),t.style.setProperty(`transform`,m),u=setTimeout(()=>{u=null,t.style.removeProperty(`transition`),t.style.removeProperty(`transform`),t.style.removeProperty(`animation`),t.style.setProperty(`animation-delay`,`${f}s`),s&&t.style.setProperty(`animation-play-state`,`paused`)},p)})}}};(0,a.onMounted)(()=>{let e=i.shadowRoot,t=e.querySelector(`.track`),n=e.querySelector(`slot`),a=()=>{_(),O(),A(),p.value&&(w?.cleanup(),w=F(t))};return n.addEventListener(`slotchange`,a),(0,o.watch)((0,o.computed)(()=>({duration:r[`marquee-duration`].value,isMarquee:p.value,loop:r.loop.value,orientation:r.orientation.value})),({isMarquee:e})=>{w?.cleanup(),w=e?F(t):null},{immediate:!0}),r.autoplay.value&&j(),()=>{M(),P.dispose(),n.removeEventListener(`slotchange`,a),w?.cleanup()}});let I=e=>{(i.shadowRoot?.querySelector(`.indicator[data-index="${e}"]`))?.focus()},L=(e,t)=>{let n=g.value,r;switch(e.key){case`ArrowDown`:case`ArrowRight`:r=(t+1)%n;break;case`ArrowLeft`:case`ArrowUp`:r=(t-1+n)%n;break;case`End`:r=n-1;break;case`Home`:r=0;break;default:return}e.preventDefault(),T(r),I(r)},R=()=>b.value?a.html`<div class="controls" part="controls">
2
- <ore-button
3
- class="nav-btn prev-btn"
4
- part="prev-btn"
5
- variant="ghost"
6
- :color=${()=>r.color.value}
7
- rounded
8
- icon-only
9
- aria-label="Previous slide"
10
- :disabled=${()=>S.value?void 0:!0}
11
- @click=${e=>{e.stopPropagation(),E()}}>
12
- <ore-icon
13
- :name=${()=>v.value?`chevron-left`:`chevron-up`}
14
- size="16"
15
- stroke-width="2"
16
- aria-hidden="true"></ore-icon>
17
- </ore-button>
18
- <ore-button
19
- class="nav-btn next-btn"
20
- part="next-btn"
21
- variant="ghost"
22
- :color=${()=>r.color.value}
23
- rounded
24
- icon-only
25
- aria-label="Next slide"
26
- :disabled=${()=>C.value?void 0:!0}
27
- @click=${e=>{e.stopPropagation(),D()}}>
28
- <ore-icon
29
- :name=${()=>v.value?`chevron-right`:`chevron-down`}
30
- size="16"
31
- stroke-width="2"
32
- aria-hidden="true"></ore-icon>
33
- </ore-button>
34
- </div>`:a.html``;return a.html`
35
- <div class="track" part="track" :aria-live=${()=>r.autoplay.value?`off`:`polite`}>
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("./core/swipe.cjs"),t=require("./core/announcer.cjs"),n=require("./content/carousel/carousel.css.cjs"),r=require("./content/carousel/carousel-slide.cjs");let i=require("@vielzeug/ore"),a=require("@vielzeug/ripple"),o=require("@vielzeug/ripple/watch");var s=`ore-carousel`,c=(e,t)=>{let n=e.length;e.forEach((e,r)=>{let i=r===t;e.toggleAttribute(`data-active`,i),e.setAttribute(`aria-hidden`,String(!i)),e.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??`Slide ${r+1} of ${n}`),e.removeAttribute(`data-gallery-visible`),e.toggleAttribute(`data-before`,r<t),e.toggleAttribute(`data-after`,r>t)})},l=(e,t)=>{let n=e.length;e.forEach((e,r)=>{let i=r===t;e.toggleAttribute(`data-active`,i),e.setAttribute(`aria-hidden`,String(!i)),e.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??`Slide ${r+1} of ${n}`),e.removeAttribute(`data-gallery-visible`),e.removeAttribute(`data-before`),e.removeAttribute(`data-after`)})},u=(e,t)=>{let n=e.length;e.forEach((e,r)=>{let i=r===t,a=t>0&&r===t-1,o=t<n-1&&r===t+1;e.toggleAttribute(`data-active`,i),e.setAttribute(`aria-hidden`,String(!i)),e.setAttribute(`aria-label`,e.getAttribute(`aria-label`)??`Slide ${r+1} of ${n}`),e.removeAttribute(`data-before`),e.removeAttribute(`data-after`),e.toggleAttribute(`data-gallery-visible`,i||a||o)})};(0,i.define)(s,{props:{autoplay:i.prop.bool(!1),"autoplay-interval":i.prop.number(5e3),color:i.prop.string(),label:i.prop.string(`Carousel`),loop:i.prop.bool(!0),orientation:i.prop.string(`horizontal`),"show-controls":i.prop.bool(!0),"show-indicators":i.prop.bool(!0),"slide-index":i.prop.number(0),variant:i.prop.string(`default`)},setup(n){let r=(0,i.getHost)(),s=(0,i.useEmit)(),d=(0,a.signal)(n[`slide-index`].value??0),f=null,p=Array.from(r.querySelectorAll(`:scope > ore-carousel-slide`)),m=(0,a.signal)(p.length),h=()=>{p=Array.from(r.querySelectorAll(`:scope > ore-carousel-slide`)),m.value=p.length},g=(0,a.computed)(()=>n.orientation.value!==`vertical`),_=(0,a.computed)(()=>n.loop.value!==!1),v=(0,a.computed)(()=>n[`show-controls`].value!==!1),y=(0,a.computed)(()=>n[`show-indicators`].value!==!1),b=(0,a.computed)(()=>_.value||d.value>0),x=(0,a.computed)(()=>_.value||d.value<m.value-1),S=(e,n=!0)=>{let i=m.value;if(i===0)return;let a=_.value?(e%i+i)%i:Math.max(0,Math.min(e,i-1));a!==d.value&&(d.value=a,r.setAttribute(`slide-index`,String(a)),s(`change`,{index:a}),n&&t.announce(p[a]?.getAttribute(`aria-label`)??`Slide ${a+1} of ${i}`))},C=()=>S(d.value-1),w=()=>S(d.value+1);(0,o.watch)(n[`slide-index`],e=>{typeof e==`number`&&e!==d.value&&S(e,!1)});let T=()=>{let e=n.variant.value??`default`,t=n.orientation.value??`horizontal`;p.forEach(n=>{n.setAttribute(`data-variant`,e),n.setAttribute(`data-orientation`,t)})};(0,o.watch)((0,a.computed)(()=>({orientation:n.orientation.value,variant:n.variant.value})),T,{immediate:!0});let E={default:c,fade:c,filmstrip:l,gallery:u},D=()=>{let e=n.variant.value??`default`;E[e](p,d.value)};(0,o.watch)(d,D,{immediate:!0});let O=()=>{f===null&&(f=setInterval(w,n[`autoplay-interval`].value??5e3))},k=()=>{f!==null&&(clearInterval(f),f=null)};(0,o.watch)((0,a.computed)(()=>({enabled:n.autoplay.value,interval:n[`autoplay-interval`].value})),({enabled:e})=>{k(),e&&O()});let A=e=>{let t=g.value,n=t?`ArrowLeft`:`ArrowUp`,r=t?`ArrowRight`:`ArrowDown`;e.key===n?(e.preventDefault(),C()):e.key===r?(e.preventDefault(),w()):e.key===`Home`?(e.preventDefault(),S(0)):e.key===`End`&&(e.preventDefault(),S(m.value-1))},j=e.createSwipeControl({axis:()=>g.value?`x`:`y`,onCommit:e=>{e.distance<0?w():C()},threshold:()=>48});(0,i.bind)({attr:{"aria-label":()=>n.label.value??`Carousel`,"aria-roledescription":()=>`carousel`,orientation:()=>n.orientation.value??`horizontal`,role:()=>`region`,style:()=>`touch-action:${g.value?`pan-y`:`pan-x`}`,variant:()=>n.variant.value??`default`},on:{focusin:()=>{k()},focusout:()=>{n.autoplay.value&&O()},keydown:A,pointercancel:e=>j.handlePointerCancel(e),pointerdown:e=>{e.composedPath().some(e=>e instanceof HTMLElement&&(e.tagName===`BUTTON`||e.tagName===`ORE-BUTTON`||e.tagName===`ORE-PROGRESS`))||j.handlePointerDown(e)},pointerenter:()=>{k()},pointerleave:()=>{n.autoplay.value&&O()},pointermove:e=>j.handlePointerMove(e),pointerup:e=>j.handlePointerUp(e)}}),(0,i.onMounted)(()=>{let e=r.shadowRoot.querySelector(`slot`),t=()=>{h(),T(),D()};return e.addEventListener(`slotchange`,t),n.autoplay.value&&O(),()=>{k(),j.dispose(),e.removeEventListener(`slotchange`,t)}});let M=e=>{(r.shadowRoot?.querySelector(`.indicator[data-index="${e}"]`))?.focus()},N=(e,t)=>{let n=m.value,r;switch(e.key){case`ArrowDown`:case`ArrowRight`:r=(t+1)%n;break;case`ArrowLeft`:case`ArrowUp`:r=(t-1+n)%n;break;case`End`:r=n-1;break;case`Home`:r=0;break;default:return}e.preventDefault(),S(r),M(r)},P=()=>v.value?i.html`
2
+ <div class="controls" part="controls">
3
+ <ore-button
4
+ class="nav-btn prev-btn"
5
+ part="prev-btn"
6
+ variant="ghost"
7
+ color=${()=>n.color.value}
8
+ rounded
9
+ icon-only
10
+ aria-label="Previous slide"
11
+ disabled=${()=>!b.value||void 0}
12
+ @click=${e=>{e.stopPropagation(),C()}}>
13
+ <ore-icon
14
+ name=${()=>g.value?`chevron-left`:`chevron-up`}
15
+ size="16"
16
+ stroke-width="2"
17
+ aria-hidden="true"></ore-icon>
18
+ </ore-button>
19
+ <ore-button
20
+ class="nav-btn next-btn"
21
+ part="next-btn"
22
+ variant="ghost"
23
+ color=${()=>n.color.value}
24
+ rounded
25
+ icon-only
26
+ aria-label="Next slide"
27
+ disabled=${()=>!x.value||void 0}
28
+ @click=${e=>{e.stopPropagation(),w()}}>
29
+ <ore-icon
30
+ name=${()=>g.value?`chevron-right`:`chevron-down`}
31
+ size="16"
32
+ stroke-width="2"
33
+ aria-hidden="true"></ore-icon>
34
+ </ore-button>
35
+ </div>
36
+ `:i.html``;return i.html`
37
+ <div class="track" part="track" aria-live=${()=>n.autoplay.value?`off`:`polite`}>
36
38
  <slot></slot>
37
39
  </div>
38
40
 
39
- ${()=>x.value&&g.value>1&&!p.value?a.html`<div class="indicators" part="indicators" role="tablist" aria-label="Slide indicators">
40
- ${()=>Array.from({length:g.value},(e,t)=>a.html`<button
41
- type="button"
42
- role="tab"
43
- data-index="${t}"
44
- :class=${()=>`indicator${!p.value&&t===f.value?` indicator-active`:``}`}
45
- :aria-selected=${()=>String(!p.value&&t===f.value)}
46
- :tabindex=${()=>!p.value&&t===f.value?`0`:`-1`}
47
- aria-label="${`Go to slide ${t+1}`}"
48
- @click=${()=>T(t)}
49
- @keydown=${e=>L(e,t)}>
50
- <ore-progress
51
- aria-hidden="true"
52
- tabindex="-1"
53
- :color=${()=>r.color.value}
54
- :type=${()=>v.value?`linear`:`vertical`}
55
- :value=${()=>!p.value&&t===f.value?100:0}
56
- :style=${()=>{let e=v.value?`carousel-fill`:`carousel-fill-v`;return`--carousel-timeout:${r[`autoplay-interval`].value??5e3};--carousel-animation-name:${!p.value&&t===f.value&&r.autoplay.value?e:`none`}`}}></ore-progress>
57
- </button>`)}
58
- ${R}
59
- </div>`:a.html`${R}`}
60
- `},styles:[r.default]}),exports.CAROUSEL_SLIDE_TAG=i.CAROUSEL_SLIDE_TAG,exports.CAROUSEL_TAG=s;
41
+ ${()=>y.value&&m.value>1?i.html`
42
+ <div class="indicators" part="indicators" role="tablist" aria-label="Slide indicators">
43
+ ${()=>Array.from({length:m.value},(e,t)=>i.html`
44
+ <button
45
+ type="button"
46
+ role="tab"
47
+ data-index="${t}"
48
+ class=${()=>`indicator${t===d.value?` indicator-active`:``}`}
49
+ aria-selected=${()=>String(t===d.value)}
50
+ tabindex=${()=>t===d.value?`0`:`-1`}
51
+ aria-label="${`Go to slide ${t+1}`}"
52
+ @click=${()=>S(t)}
53
+ @keydown=${e=>N(e,t)}>
54
+ <ore-progress
55
+ aria-hidden="true"
56
+ tabindex="-1"
57
+ color=${()=>n.color.value}
58
+ type=${()=>g.value?`linear`:`vertical`}
59
+ value=${()=>t===d.value?100:0}
60
+ style=${()=>{let e=g.value?`carousel-fill`:`carousel-fill-v`;return`--carousel-timeout:${n[`autoplay-interval`].value??5e3};--carousel-animation-name:${t===d.value&&n.autoplay.value?e:`none`}`}}></ore-progress>
61
+ </button>
62
+ `)}
63
+ ${P}
64
+ </div>
65
+ `:i.html`
66
+ ${P}
67
+ `}
68
+ `},styles:[n.default]}),exports.CAROUSEL_SLIDE_TAG=r.CAROUSEL_SLIDE_TAG,exports.CAROUSEL_TAG=s;
61
69
  //# sourceMappingURL=carousel.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.cjs","names":[],"sources":["../src/content/carousel/carousel.ts"],"sourcesContent":["import { define, html, prop, bind, getHost, onMounted, useEmit } from '@vielzeug/ore';\nimport { computed, signal, watch } from '@vielzeug/ripple';\n\nimport type { ThemeColor } from '../../types';\n\nimport { warn } from '../../_dev';\nimport '../../content/icon/icon';\nimport '../../feedback/progress/progress';\nimport { announce, createSwipeControl } from '../../headless';\nimport componentStyles from './carousel.css?inline';\nimport './carousel-slide';\n\nexport { CAROUSEL_SLIDE_TAG } from './carousel-slide';\n\n// ── Types ──────────────────────────────────────────────────────────────────────\n\nexport type CarouselOrientation = 'horizontal' | 'vertical';\nexport type CarouselVariant = 'default' | 'fade' | 'filmstrip' | 'gallery' | 'marquee';\n\nexport type OreCarouselEvents = {\n /** Fired when the active slide changes. */\n change: { index: number };\n};\n\nexport type OreCarouselProps = {\n /**\n * Whether to advance slides automatically. Defaults to `false`.\n * Opt in explicitly — autoplay on by default is a WCAG 2.1 SC 2.2.2 violation for many use cases.\n */\n autoplay?: boolean;\n /** Interval in milliseconds between automatic slide advances. Defaults to `5000`. */\n 'autoplay-interval'?: number;\n /** Theme color passed to the prev/next navigation buttons. */\n color?: ThemeColor;\n /** Accessible label for the carousel region. */\n label?: string;\n /**\n * Whether the carousel loops from the last slide back to the first. Defaults to `true`.\n *\n * > **Note for `marquee` variant:** `loop=\"false\"` runs the scroll animation once then stops,\n * > rather than controlling navigation wrap-around (marquee navigation always loops).\n * > If you intend to stop wrapping navigation in another variant, use `loop` there as expected.\n */\n loop?: boolean;\n /**\n * Duration in seconds for one full marquee loop cycle. Defaults to `10`.\n * Shorter values = faster scroll; longer values = slower scroll.\n */\n 'marquee-duration'?: number;\n /** Carousel orientation. Defaults to `'horizontal'`. */\n orientation?: CarouselOrientation;\n /** Show next/prev navigation buttons. Defaults to `true`. */\n 'show-controls'?: boolean;\n /** Show dot/indicator navigation. Defaults to `true`. */\n 'show-indicators'?: boolean;\n /** Index of the currently active slide (zero-based). Defaults to `0`. */\n 'slide-index'?: number;\n /**\n * Layout variant.\n * - `'default'` — slides translate in/out (default)\n * - `'fade'` — slides crossfade; no movement\n * - `'filmstrip'` — all slides visible side-by-side; active expands\n * - `'gallery'` — active slide fills the majority; adjacent slides show as thumbnails\n * - `'marquee'` — continuous auto-scroll ticker; `loop` controls whether it repeats\n */\n variant?: CarouselVariant;\n};\n\n// ── Internal marquee instance type ────────────────────────────────────────────\n\ntype MarqueeInstance = {\n cleanup: () => void;\n seekTo: (index: number, slideSnapshot: HTMLElement[]) => void;\n};\n\n/**\n * An accessible, keyboard-navigable carousel / slideshow with optional\n * autoplay, swipe support, and indicator dots.\n *\n * Place `<ore-carousel-slide>` elements as direct children.\n *\n * @element ore-carousel\n * @element ore-carousel-slide - Child element for individual slides\n *\n * @attr {string} color - Theme color for navigation buttons: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {boolean} autoplay - Advance slides automatically (default false)\n * @attr {number} autoplay-interval - Milliseconds between automatic advances (default 5000)\n * @attr {string} label - Accessible label for the carousel region\n * @attr {boolean} loop - Loop from last slide to first (default true); in marquee mode: repeat vs run-once\n * @attr {string} orientation - 'horizontal' (default) | 'vertical'\n * @attr {string} variant - 'default' | 'fade' | 'filmstrip' | 'gallery' | 'marquee'\n * @attr {boolean} show-controls - Show prev/next buttons (default true)\n * @attr {boolean} show-indicators - Show indicator dots (default true)\n * @attr {number} slide-index - Active slide index (zero-based, default 0)\n * @attr {number} marquee-duration - Loop cycle duration in seconds for marquee variant (default 10)\n *\n * @fires change - Fires when the active slide changes. detail: { index: number }\n *\n * @slot - Place `<ore-carousel-slide>` elements here\n *\n * @cssprop --carousel-bg - Slide area background\n * @cssprop --carousel-radius - Border radius of the carousel\n * @cssprop --carousel-dot-bg - Inactive indicator color (default: var(--color-contrast-300))\n * @cssprop --carousel-dot-active-bg - Active indicator / fill color (default: var(--color-contrast-700))\n * @cssprop --carousel-transition-duration - Slide transition duration (default 0.35s; 0s under prefers-reduced-motion). Also controls marquee seek animation duration.\n * @cssprop --carousel-min-height - Minimum height when no explicit height is set (default 240px)\n * @cssprop --carousel-filmstrip-inactive - Width (horizontal) or height (vertical) of inactive slides in filmstrip mode\n * @cssprop --carousel-filmstrip-gap - Gap between slides in filmstrip mode\n * @cssprop --carousel-gallery-thumbnail - Width (horizontal) or height (vertical) of thumbnail slides in gallery mode (default var(--size-24))\n * @cssprop --carousel-gallery-gap - Gap between slides in gallery mode (default var(--size-2))\n * @cssprop --carousel-marquee-gap - Gap between slides in marquee mode (default var(--size-4))\n *\n * @part track - The scrolling slide track element\n * @part controls - The prev/next button container\n * @part indicators - The indicator dots container\n * @part prev-btn - The previous-slide button\n * @part next-btn - The next-slide button\n *\n * @example\n * ```html\n * <ore-carousel label=\"Product highlights\" loop>\n * <ore-carousel-slide>Slide 1</ore-carousel-slide>\n * <ore-carousel-slide>Slide 2</ore-carousel-slide>\n * <ore-carousel-slide>Slide 3</ore-carousel-slide>\n * </ore-carousel>\n * ```\n */\nexport const CAROUSEL_TAG = 'ore-carousel' as const;\n\n// ── Slide-state sync helpers ──────────────────────────────────────────────────\n// Each function handles exactly one variant's attribute bookkeeping.\n// Called from a dispatch table in syncActiveState.\n\nconst syncDefaultSlides = (slides: HTMLElement[], current: number): void => {\n const count = slides.length;\n\n slides.forEach((slide, i) => {\n const active = i === current;\n\n slide.toggleAttribute('data-active', active);\n slide.setAttribute('aria-hidden', String(!active));\n slide.setAttribute('aria-label', slide.getAttribute('aria-label') ?? `Slide ${i + 1} of ${count}`);\n slide.removeAttribute('data-gallery-visible');\n slide.toggleAttribute('data-before', i < current);\n slide.toggleAttribute('data-after', i > current);\n });\n};\n\nconst syncFilmstripSlides = (slides: HTMLElement[], current: number): void => {\n const count = slides.length;\n\n slides.forEach((slide, i) => {\n const active = i === current;\n\n slide.toggleAttribute('data-active', active);\n slide.setAttribute('aria-hidden', String(!active));\n slide.setAttribute('aria-label', slide.getAttribute('aria-label') ?? `Slide ${i + 1} of ${count}`);\n slide.removeAttribute('data-gallery-visible');\n slide.removeAttribute('data-before');\n slide.removeAttribute('data-after');\n });\n};\n\nconst syncGallerySlides = (slides: HTMLElement[], current: number): void => {\n const count = slides.length;\n\n slides.forEach((slide, i) => {\n const active = i === current;\n const isPrev = current > 0 && i === current - 1;\n const isNext = current < count - 1 && i === current + 1;\n\n slide.toggleAttribute('data-active', active);\n slide.setAttribute('aria-hidden', String(!active));\n slide.setAttribute('aria-label', slide.getAttribute('aria-label') ?? `Slide ${i + 1} of ${count}`);\n slide.removeAttribute('data-before');\n slide.removeAttribute('data-after');\n slide.toggleAttribute('data-gallery-visible', active || isPrev || isNext);\n });\n};\n\nconst syncMarqueeSlides = (slides: HTMLElement[], current: number): void => {\n slides.forEach((slide, i) => {\n slide.toggleAttribute('data-active', i === current);\n slide.setAttribute('aria-hidden', 'false');\n slide.removeAttribute('data-before');\n slide.removeAttribute('data-after');\n slide.removeAttribute('data-gallery-visible');\n });\n};\n\n// ── ore-carousel ──────────────────────────────────────────────────────────────\n\ndefine<OreCarouselProps>(CAROUSEL_TAG, {\n props: {\n autoplay: prop.bool(false),\n 'autoplay-interval': prop.number(5000),\n color: prop.string<ThemeColor>(),\n label: prop.string('Carousel'),\n loop: prop.bool(true),\n 'marquee-duration': prop.number(10),\n orientation: prop.string<CarouselOrientation>('horizontal'),\n 'show-controls': prop.bool(true),\n 'show-indicators': prop.bool(true),\n 'slide-index': prop.number(0),\n variant: prop.string<CarouselVariant>('default'),\n },\n\n setup(props) {\n const el = getHost();\n const emit = useEmit<OreCarouselEvents>();\n\n // ── State ────────────────────────────────────────────────────────────────\n\n const activeIndex = signal<number>(props['slide-index'].value ?? 0);\n const isMarquee = computed(() => props.variant.value === 'marquee');\n let autoplayTimer: ReturnType<typeof setInterval> | null = null;\n\n // Slide cache — populated immediately, refreshed on slotchange.\n let slides: HTMLElement[] = Array.from(el.querySelectorAll<HTMLElement>(':scope > ore-carousel-slide'));\n const slideCount = signal(slides.length);\n\n const refreshSlides = (): void => {\n slides = Array.from(el.querySelectorAll<HTMLElement>(':scope > ore-carousel-slide'));\n slideCount.value = slides.length;\n };\n\n const isHorizontal = computed(() => props.orientation.value !== 'vertical');\n const looping = computed(() => props.loop.value !== false);\n const showControls = computed(() => props['show-controls'].value !== false);\n const showIndicators = computed(() => props['show-indicators'].value !== false);\n\n const canGoPrev = computed(() => looping.value || activeIndex.value > 0);\n const canGoNext = computed(() => looping.value || activeIndex.value < slideCount.value - 1);\n\n // ── Navigation ───────────────────────────────────────────────────────────\n\n // marqueeInstance is set in onMounted; accessed here via module-level ref\n // stored on the setup closure. No separate side-channel variable needed.\n let marqueeInstance: MarqueeInstance | null = null;\n\n const goTo = (index: number, announce_: boolean = true): void => {\n const count = slideCount.value;\n\n if (count === 0) return;\n\n const next = looping.value ? ((index % count) + count) % count : Math.max(0, Math.min(index, count - 1));\n\n if (next === activeIndex.value) return;\n\n activeIndex.value = next;\n el.setAttribute('slide-index', String(next));\n emit('change', { index: next });\n // Pass current slides snapshot so seekTo never reads a stale closure.\n marqueeInstance?.seekTo(next, slides);\n\n if (announce_) {\n announce(slides[next]?.getAttribute('aria-label') ?? `Slide ${next + 1} of ${count}`);\n }\n };\n\n const prev = (): void => goTo(activeIndex.value - 1);\n const next = (): void => goTo(activeIndex.value + 1);\n\n // ── Sync prop → state ────────────────────────────────────────────────────\n\n watch(props['slide-index'], (v) => {\n if (typeof v === 'number' && v !== activeIndex.value) goTo(v, false);\n });\n\n // ── Sync variant + orientation → slides ──────────────────────────────────\n\n const syncSlideVariants = (): void => {\n const variant = props.variant.value ?? 'default';\n const orientation = props.orientation.value ?? 'horizontal';\n\n slides.forEach((slide) => {\n slide.setAttribute('data-variant', variant);\n slide.setAttribute('data-orientation', orientation);\n });\n };\n\n watch(\n computed(() => ({ orientation: props.orientation.value, variant: props.variant.value })),\n syncSlideVariants,\n { immediate: true },\n );\n\n // ── Sync active index → slides — dispatch table ───────────────────────────\n\n const syncTable: Record<CarouselVariant, (slides: HTMLElement[], current: number) => void> = {\n default: syncDefaultSlides,\n fade: syncDefaultSlides,\n filmstrip: syncFilmstripSlides,\n gallery: syncGallerySlides,\n marquee: syncMarqueeSlides,\n };\n\n const syncActiveState = (): void => {\n const variant = (props.variant.value ?? 'default') as CarouselVariant;\n\n syncTable[variant](slides, activeIndex.value);\n };\n\n watch(activeIndex, syncActiveState, { immediate: true });\n\n // ── Autoplay ─────────────────────────────────────────────────────────────\n\n const startAutoplay = (): void => {\n if (autoplayTimer !== null) return;\n\n autoplayTimer = setInterval(next, props['autoplay-interval'].value ?? 5000);\n };\n\n const stopAutoplay = (): void => {\n if (autoplayTimer !== null) {\n clearInterval(autoplayTimer);\n autoplayTimer = null;\n }\n };\n\n watch(\n computed(() => ({ enabled: props.autoplay.value, interval: props['autoplay-interval'].value })),\n ({ enabled }) => {\n stopAutoplay();\n\n if (enabled) startAutoplay();\n },\n );\n\n // ── Keyboard navigation ──────────────────────────────────────────────────\n\n const handleKeydown = (e: KeyboardEvent): void => {\n const isH = isHorizontal.value;\n const prevKey = isH ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = isH ? 'ArrowRight' : 'ArrowDown';\n\n if (e.key === prevKey) {\n e.preventDefault();\n prev();\n } else if (e.key === nextKey) {\n e.preventDefault();\n next();\n } else if (e.key === 'Home') {\n e.preventDefault();\n goTo(0);\n } else if (e.key === 'End') {\n e.preventDefault();\n goTo(slideCount.value - 1);\n }\n };\n\n // ── Swipe ────────────────────────────────────────────────────────────────\n\n const swipe = createSwipeControl({\n axis: () => (isHorizontal.value ? 'x' : 'y'),\n onCommit: (detail) => {\n if (detail.distance < 0) next();\n else prev();\n },\n threshold: () => 48,\n });\n\n // ── Host bindings ────────────────────────────────────────────────────────\n\n bind({\n attr: {\n 'aria-label': () => props.label.value ?? 'Carousel',\n 'aria-roledescription': () => 'carousel',\n orientation: () => props.orientation.value ?? 'horizontal',\n role: () => 'region',\n style: () => `touch-action:${isHorizontal.value ? 'pan-y' : 'pan-x'}`,\n variant: () => props.variant.value ?? 'default',\n },\n on: {\n focusin: () => {\n stopAutoplay();\n },\n focusout: () => {\n if (props.autoplay.value) startAutoplay();\n },\n keydown: handleKeydown,\n pointercancel: (e: PointerEvent) => swipe.handlePointerCancel(e),\n pointerdown: (e: PointerEvent) => {\n const path = e.composedPath();\n const onButton = path.some(\n (n) =>\n n instanceof HTMLElement &&\n (n.tagName === 'BUTTON' || n.tagName === 'ORE-BUTTON' || n.tagName === 'ORE-PROGRESS'),\n );\n\n if (!onButton) swipe.handlePointerDown(e);\n },\n pointerenter: () => {\n stopAutoplay();\n },\n pointerleave: () => {\n if (props.autoplay.value) startAutoplay();\n },\n pointermove: (e: PointerEvent) => swipe.handlePointerMove(e),\n pointerup: (e: PointerEvent) => swipe.handlePointerUp(e),\n },\n });\n\n // ── Marquee ───────────────────────────────────────────────────────────────\n // Clones slides for a seamless loop. Seek uses WAAPI when available\n // (all modern browsers) so it can be cancelled cleanly. Falls back to\n // instant negative-delay repositioning in environments without WAAPI\n // (e.g. jsdom in tests).\n\n const setupMarquee = (track: HTMLElement): MarqueeInstance => {\n const orientation = props.orientation.value ?? 'horizontal';\n const horizontal = orientation !== 'vertical';\n\n if (isMarquee.value && props.loop.value === false) {\n warn(\n 'ore-carousel: loop=\"false\" on the marquee variant stops the scroll animation rather than ' +\n 'disabling navigation wrap-around. Navigation in marquee always loops. ' +\n 'This is different from loop=\"false\" on other variants.',\n );\n }\n\n const clones = slides.map((s) => {\n const clone = s.cloneNode(true) as HTMLElement;\n\n clone.setAttribute('aria-hidden', 'true');\n clone.setAttribute('data-variant', 'marquee');\n clone.setAttribute('data-orientation', orientation);\n clone.setAttribute('data-marquee-clone', '');\n track.appendChild(clone);\n\n return clone;\n });\n\n track.style.setProperty('--_marquee-duration', `${props['marquee-duration'].value ?? 10}s`);\n\n if (!looping.value) {\n track.style.setProperty('animation-iteration-count', '1');\n }\n\n let isHovered = false;\n\n const pause = (): void => {\n isHovered = true;\n track.style.setProperty('animation-play-state', 'paused');\n };\n\n const resume = (): void => {\n isHovered = false;\n track.style.removeProperty('animation-play-state');\n };\n\n // mouseenter/mouseleave fire only when the pointer crosses the host\n // boundary — never when moving between children (e.g. onto controls).\n // This means clicking buttons never accidentally resumes the animation.\n el.addEventListener('mouseenter', pause);\n el.addEventListener('mouseleave', resume);\n\n // ── Seek ──────────────────────────────────────────────────────────────\n // Smoothly slides to the target position using a CSS transition on the\n // inline transform (the CSS keyframe animation is paused throughout so\n // there is no compositing conflict). On transitionend, switches back to\n // the keyframe animation via a negative animation-delay.\n\n let seekTimer: ReturnType<typeof setTimeout> | null = null;\n\n const seekTo = (index: number, slideSnapshot: HTMLElement[]): void => {\n const slide = slideSnapshot[index];\n\n if (!slide) return;\n\n const targetOffset = horizontal ? slide.offsetLeft : slide.offsetTop;\n const halfSize = horizontal ? track.scrollWidth / 2 : track.scrollHeight / 2;\n const cycleDuration = props['marquee-duration'].value ?? 10;\n const delay = halfSize > 0 ? -((targetOffset / halfSize) * cycleDuration) : 0;\n\n // Cancel any in-flight seek timer.\n if (seekTimer !== null) {\n clearTimeout(seekTimer);\n seekTimer = null;\n // Snap the previous transition to its end state immediately.\n track.style.removeProperty('transition');\n }\n\n // No layout (jsdom): instant seek with no visual transition.\n if (halfSize === 0) {\n track.style.setProperty('animation-delay', `${delay}s`);\n\n if (!isHovered) {\n track.style.removeProperty('animation-play-state');\n }\n\n return;\n }\n\n const seekMs =\n parseFloat(getComputedStyle(el).getPropertyValue('--carousel-transition-duration') || '0.35') * 1000 || 350;\n\n const targetTransform = horizontal ? `translateX(-${targetOffset}px)` : `translateY(-${targetOffset}px)`;\n\n // 1. Read the current visual position from the live animation, then\n // kill the animation entirely so nothing else drives transform.\n // getBoundingClientRect() flushes layout so the matrix is current.\n void track.getBoundingClientRect();\n\n const computedTransform = getComputedStyle(track).transform;\n const matrixValues = computedTransform\n .match(/matrix\\(([^)]+)\\)/)?.[1]\n .split(',')\n .map(Number);\n const frozenOffset = horizontal ? (matrixValues?.[4] ?? 0) : (matrixValues?.[5] ?? 0);\n const frozenTransform = horizontal ? `translateX(${frozenOffset}px)` : `translateY(${frozenOffset}px)`;\n\n // Stop the CSS animation — inline transform is now the sole driver.\n track.style.setProperty('animation', 'none');\n track.style.setProperty('transform', frozenTransform);\n\n // 2. Next frame: apply transition and slide to target.\n requestAnimationFrame(() => {\n track.style.setProperty('transition', `transform ${seekMs}ms ease-in-out`);\n track.style.setProperty('transform', targetTransform);\n\n // 3. After the transition completes, restore the keyframe animation\n // at the correct position via negative animation-delay.\n seekTimer = setTimeout(() => {\n seekTimer = null;\n track.style.removeProperty('transition');\n track.style.removeProperty('transform');\n track.style.removeProperty('animation');\n track.style.setProperty('animation-delay', `${delay}s`);\n\n if (isHovered) {\n track.style.setProperty('animation-play-state', 'paused');\n }\n }, seekMs);\n });\n };\n\n return {\n cleanup: () => {\n if (seekTimer !== null) clearTimeout(seekTimer);\n\n seekTimer = null;\n clones.forEach((c) => c.remove());\n track.style.removeProperty('transition');\n track.style.removeProperty('transform');\n track.style.removeProperty('animation');\n track.style.removeProperty('--_marquee-duration');\n track.style.removeProperty('animation-iteration-count');\n track.style.removeProperty('animation-delay');\n track.style.removeProperty('animation-play-state');\n el.removeEventListener('mouseenter', pause);\n el.removeEventListener('mouseleave', resume);\n },\n seekTo,\n };\n };\n\n // ── Lifecycle ────────────────────────────────────────────────────────────\n\n onMounted(() => {\n const shadowRoot = el.shadowRoot!;\n const track = shadowRoot.querySelector<HTMLElement>('.track')!;\n const slot = shadowRoot.querySelector<HTMLSlotElement>('slot')!;\n\n // slotchange replaces MutationObserver — fires exactly when assigned\n // nodes change, scoped to this component's slot, no polling overhead.\n const onSlotChange = (): void => {\n refreshSlides();\n syncSlideVariants();\n syncActiveState();\n\n if (isMarquee.value) {\n marqueeInstance?.cleanup();\n marqueeInstance = setupMarquee(track);\n }\n };\n\n slot.addEventListener('slotchange', onSlotChange);\n\n watch(\n computed(() => ({\n duration: props['marquee-duration'].value,\n isMarquee: isMarquee.value,\n loop: props.loop.value,\n orientation: props.orientation.value,\n })),\n ({ isMarquee: active }) => {\n marqueeInstance?.cleanup();\n marqueeInstance = active ? setupMarquee(track) : null;\n },\n { immediate: true },\n );\n\n if (props.autoplay.value) {\n startAutoplay();\n }\n\n return () => {\n stopAutoplay();\n swipe.dispose();\n slot.removeEventListener('slotchange', onSlotChange);\n marqueeInstance?.cleanup();\n };\n });\n\n // ── Template ─────────────────────────────────────────────────────────────\n\n const focusIndicator = (index: number): void => {\n const dot = el.shadowRoot?.querySelector<HTMLElement>(`.indicator[data-index=\"${index}\"]`);\n\n dot?.focus();\n };\n\n const handleIndicatorKeydown = (e: KeyboardEvent, i: number): void => {\n const count = slideCount.value;\n let target: number | undefined;\n\n switch (e.key) {\n case 'ArrowDown':\n case 'ArrowRight':\n target = (i + 1) % count;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n target = (i - 1 + count) % count;\n break;\n case 'End':\n target = count - 1;\n break;\n case 'Home':\n target = 0;\n break;\n default:\n return;\n }\n\n e.preventDefault();\n goTo(target);\n focusIndicator(target);\n };\n\n const renderControls = () =>\n showControls.value\n ? html`<div class=\"controls\" part=\"controls\">\n <ore-button\n class=\"nav-btn prev-btn\"\n part=\"prev-btn\"\n variant=\"ghost\"\n :color=${() => props.color.value}\n rounded\n icon-only\n aria-label=\"Previous slide\"\n :disabled=${() => (!canGoPrev.value ? true : undefined)}\n @click=${(e: Event) => {\n e.stopPropagation();\n prev();\n }}>\n <ore-icon\n :name=${() => (isHorizontal.value ? 'chevron-left' : 'chevron-up')}\n size=\"16\"\n stroke-width=\"2\"\n aria-hidden=\"true\"></ore-icon>\n </ore-button>\n <ore-button\n class=\"nav-btn next-btn\"\n part=\"next-btn\"\n variant=\"ghost\"\n :color=${() => props.color.value}\n rounded\n icon-only\n aria-label=\"Next slide\"\n :disabled=${() => (!canGoNext.value ? true : undefined)}\n @click=${(e: Event) => {\n e.stopPropagation();\n next();\n }}>\n <ore-icon\n :name=${() => (isHorizontal.value ? 'chevron-right' : 'chevron-down')}\n size=\"16\"\n stroke-width=\"2\"\n aria-hidden=\"true\"></ore-icon>\n </ore-button>\n </div>`\n : html``;\n\n return html`\n <div class=\"track\" part=\"track\" :aria-live=${() => (props.autoplay.value ? 'off' : 'polite')}>\n <slot></slot>\n </div>\n\n ${() =>\n showIndicators.value && slideCount.value > 1 && !isMarquee.value\n ? html`<div class=\"indicators\" part=\"indicators\" role=\"tablist\" aria-label=\"Slide indicators\">\n ${() =>\n Array.from(\n { length: slideCount.value },\n (_, i) =>\n html`<button\n type=\"button\"\n role=\"tab\"\n data-index=\"${i}\"\n :class=${() =>\n `indicator${!isMarquee.value && i === activeIndex.value ? ' indicator-active' : ''}`}\n :aria-selected=${() => String(!isMarquee.value && i === activeIndex.value)}\n :tabindex=${() => (!isMarquee.value && i === activeIndex.value ? '0' : '-1')}\n aria-label=\"${`Go to slide ${i + 1}`}\"\n @click=${() => goTo(i)}\n @keydown=${(e: KeyboardEvent) => handleIndicatorKeydown(e, i)}>\n <ore-progress\n aria-hidden=\"true\"\n tabindex=\"-1\"\n :color=${() => props.color.value}\n :type=${() => (isHorizontal.value ? 'linear' : 'vertical')}\n :value=${() => (!isMarquee.value && i === activeIndex.value ? 100 : 0)}\n :style=${() => {\n const fillAnim = isHorizontal.value ? 'carousel-fill' : 'carousel-fill-v';\n\n return `--carousel-timeout:${props['autoplay-interval'].value ?? 5000};--carousel-animation-name:${!isMarquee.value && i === activeIndex.value && props.autoplay.value ? fillAnim : 'none'}`;\n }}></ore-progress>\n </button>`,\n )}\n ${renderControls}\n </div>`\n : html`${renderControls}`}\n `;\n },\n styles: [componentStyles],\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"carousel.cjs","names":[],"sources":["../src/content/carousel/carousel.ts"],"sourcesContent":["import { define, html, prop, bind, getHost, onMounted, useEmit } from '@vielzeug/ore';\nimport { computed, signal } from '@vielzeug/ripple';\nimport { watch } from '@vielzeug/ripple/watch';\n\nimport type { ThemeColor } from '../../types';\n\nimport '../../content/icon/icon';\nimport '../../feedback/progress/progress';\nimport { announce, createSwipeControl } from '../../core';\nimport componentStyles from './carousel.css?inline';\nimport './carousel-slide';\n\nexport { CAROUSEL_SLIDE_TAG } from './carousel-slide';\n\n// ── Types ──────────────────────────────────────────────────────────────────────\n\nexport type CarouselOrientation = 'horizontal' | 'vertical';\nexport type CarouselVariant = 'default' | 'fade' | 'filmstrip' | 'gallery';\n\nexport type OreCarouselEvents = {\n /** Fired when the active slide changes. */\n change: { index: number };\n};\n\nexport type OreCarouselProps = {\n /**\n * Whether to advance slides automatically. Defaults to `false`.\n * Opt in explicitly — autoplay on by default is a WCAG 2.1 SC 2.2.2 violation for many use cases.\n */\n autoplay?: boolean;\n /** Interval in milliseconds between automatic slide advances. Defaults to `5000`. */\n 'autoplay-interval'?: number;\n /** Theme color passed to the prev/next navigation buttons. */\n color?: ThemeColor;\n /** Accessible label for the carousel region. */\n label?: string;\n /** Whether the carousel loops from the last slide back to the first. Defaults to `true`. */\n loop?: boolean;\n /** Carousel orientation. Defaults to `'horizontal'`. */\n orientation?: CarouselOrientation;\n /** Show next/prev navigation buttons. Defaults to `true`. */\n 'show-controls'?: boolean;\n /** Show dot/indicator navigation. Defaults to `true`. */\n 'show-indicators'?: boolean;\n /** Index of the currently active slide (zero-based). Defaults to `0`. */\n 'slide-index'?: number;\n /**\n * Layout variant.\n * - `'default'` — slides translate in/out (default)\n * - `'fade'` — slides crossfade; no movement\n * - `'filmstrip'` — all slides visible side-by-side; active expands\n * - `'gallery'` — active slide fills the majority; adjacent slides show as thumbnails\n */\n variant?: CarouselVariant;\n};\n\n/**\n * An accessible, keyboard-navigable carousel / slideshow with optional\n * autoplay, swipe support, and indicator dots.\n *\n * Place `<ore-carousel-slide>` elements as direct children.\n *\n * @element ore-carousel\n * @element ore-carousel-slide - Child element for individual slides\n *\n * @attr {string} color - Theme color for navigation buttons: 'primary' | 'secondary' | 'info' | 'success' | 'warning' | 'error'\n * @attr {boolean} autoplay - Advance slides automatically (default false)\n * @attr {number} autoplay-interval - Milliseconds between automatic advances (default 5000)\n * @attr {string} label - Accessible label for the carousel region\n * @attr {boolean} loop - Loop from last slide to first (default true)\n * @attr {string} orientation - 'horizontal' (default) | 'vertical'\n * @attr {string} variant - 'default' | 'fade' | 'filmstrip' | 'gallery'\n * @attr {boolean} show-controls - Show prev/next buttons (default true)\n * @attr {boolean} show-indicators - Show indicator dots (default true)\n * @attr {number} slide-index - Active slide index (zero-based, default 0)\n *\n * @fires change - Fires when the active slide changes. detail: { index: number }\n *\n * @slot - Place `<ore-carousel-slide>` elements here\n *\n * @cssprop --carousel-bg - Slide area background\n * @cssprop --carousel-radius - Border radius of the carousel\n * @cssprop --carousel-dot-bg - Inactive indicator color (default: var(--color-contrast-300))\n * @cssprop --carousel-dot-active-bg - Active indicator / fill color (default: var(--color-contrast-700))\n * @cssprop --carousel-transition-duration - Slide transition duration (default 0.35s; 0s under prefers-reduced-motion).\n * @cssprop --carousel-min-height - Minimum height when no explicit height is set (default 240px)\n * @cssprop --carousel-filmstrip-inactive - Width (horizontal) or height (vertical) of inactive slides in filmstrip mode\n * @cssprop --carousel-filmstrip-gap - Gap between slides in filmstrip mode\n * @cssprop --carousel-gallery-thumbnail - Width (horizontal) or height (vertical) of thumbnail slides in gallery mode (default var(--size-24))\n * @cssprop --carousel-gallery-gap - Gap between slides in gallery mode (default var(--size-2))\n *\n * @part track - The scrolling slide track element\n * @part controls - The prev/next button container\n * @part indicators - The indicator dots container\n * @part prev-btn - The previous-slide button\n * @part next-btn - The next-slide button\n *\n * @example\n * ```html\n * <ore-carousel label=\"Product highlights\" loop>\n * <ore-carousel-slide>Slide 1</ore-carousel-slide>\n * <ore-carousel-slide>Slide 2</ore-carousel-slide>\n * <ore-carousel-slide>Slide 3</ore-carousel-slide>\n * </ore-carousel>\n * ```\n */\nexport const CAROUSEL_TAG = 'ore-carousel' as const;\n\n// ── Slide-state sync helpers ──────────────────────────────────────────────────\n// Each function handles exactly one variant's attribute bookkeeping.\n// Called from a dispatch table in syncActiveState.\n\nconst syncDefaultSlides = (slides: HTMLElement[], current: number): void => {\n const count = slides.length;\n\n slides.forEach((slide, i) => {\n const active = i === current;\n\n slide.toggleAttribute('data-active', active);\n slide.setAttribute('aria-hidden', String(!active));\n slide.setAttribute('aria-label', slide.getAttribute('aria-label') ?? `Slide ${i + 1} of ${count}`);\n slide.removeAttribute('data-gallery-visible');\n slide.toggleAttribute('data-before', i < current);\n slide.toggleAttribute('data-after', i > current);\n });\n};\n\nconst syncFilmstripSlides = (slides: HTMLElement[], current: number): void => {\n const count = slides.length;\n\n slides.forEach((slide, i) => {\n const active = i === current;\n\n slide.toggleAttribute('data-active', active);\n slide.setAttribute('aria-hidden', String(!active));\n slide.setAttribute('aria-label', slide.getAttribute('aria-label') ?? `Slide ${i + 1} of ${count}`);\n slide.removeAttribute('data-gallery-visible');\n slide.removeAttribute('data-before');\n slide.removeAttribute('data-after');\n });\n};\n\nconst syncGallerySlides = (slides: HTMLElement[], current: number): void => {\n const count = slides.length;\n\n slides.forEach((slide, i) => {\n const active = i === current;\n const isPrev = current > 0 && i === current - 1;\n const isNext = current < count - 1 && i === current + 1;\n\n slide.toggleAttribute('data-active', active);\n slide.setAttribute('aria-hidden', String(!active));\n slide.setAttribute('aria-label', slide.getAttribute('aria-label') ?? `Slide ${i + 1} of ${count}`);\n slide.removeAttribute('data-before');\n slide.removeAttribute('data-after');\n slide.toggleAttribute('data-gallery-visible', active || isPrev || isNext);\n });\n};\n\n// ── ore-carousel ──────────────────────────────────────────────────────────────\n\ndefine<OreCarouselProps>(CAROUSEL_TAG, {\n props: {\n autoplay: prop.bool(false),\n 'autoplay-interval': prop.number(5000),\n color: prop.string<ThemeColor>(),\n label: prop.string('Carousel'),\n loop: prop.bool(true),\n orientation: prop.string<CarouselOrientation>('horizontal'),\n 'show-controls': prop.bool(true),\n 'show-indicators': prop.bool(true),\n 'slide-index': prop.number(0),\n variant: prop.string<CarouselVariant>('default'),\n },\n\n setup(props) {\n const el = getHost();\n const emit = useEmit<OreCarouselEvents>();\n\n // ── State ────────────────────────────────────────────────────────────────\n\n const activeIndex = signal<number>(props['slide-index'].value ?? 0);\n let autoplayTimer: ReturnType<typeof setInterval> | null = null;\n\n // Slide cache — populated immediately, refreshed on slotchange.\n let slides: HTMLElement[] = Array.from(el.querySelectorAll<HTMLElement>(':scope > ore-carousel-slide'));\n const slideCount = signal(slides.length);\n\n const refreshSlides = (): void => {\n slides = Array.from(el.querySelectorAll<HTMLElement>(':scope > ore-carousel-slide'));\n slideCount.value = slides.length;\n };\n\n const isHorizontal = computed(() => props.orientation.value !== 'vertical');\n const looping = computed(() => props.loop.value !== false);\n const showControls = computed(() => props['show-controls'].value !== false);\n const showIndicators = computed(() => props['show-indicators'].value !== false);\n\n const canGoPrev = computed(() => looping.value || activeIndex.value > 0);\n const canGoNext = computed(() => looping.value || activeIndex.value < slideCount.value - 1);\n\n // ── Navigation ───────────────────────────────────────────────────────────\n\n const goTo = (index: number, announce_: boolean = true): void => {\n const count = slideCount.value;\n\n if (count === 0) return;\n\n const next = looping.value ? ((index % count) + count) % count : Math.max(0, Math.min(index, count - 1));\n\n if (next === activeIndex.value) return;\n\n activeIndex.value = next;\n el.setAttribute('slide-index', String(next));\n emit('change', { index: next });\n\n if (announce_) {\n announce(slides[next]?.getAttribute('aria-label') ?? `Slide ${next + 1} of ${count}`);\n }\n };\n\n const prev = (): void => goTo(activeIndex.value - 1);\n const next = (): void => goTo(activeIndex.value + 1);\n\n // ── Sync prop → state ────────────────────────────────────────────────────\n\n watch(props['slide-index'], (v) => {\n if (typeof v === 'number' && v !== activeIndex.value) goTo(v, false);\n });\n\n // ── Sync variant + orientation → slides ──────────────────────────────────\n\n const syncSlideVariants = (): void => {\n const variant = props.variant.value ?? 'default';\n const orientation = props.orientation.value ?? 'horizontal';\n\n slides.forEach((slide) => {\n slide.setAttribute('data-variant', variant);\n slide.setAttribute('data-orientation', orientation);\n });\n };\n\n watch(\n computed(() => ({ orientation: props.orientation.value, variant: props.variant.value })),\n syncSlideVariants,\n { immediate: true },\n );\n\n // ── Sync active index → slides — dispatch table ───────────────────────────\n\n const syncTable: Record<CarouselVariant, (slides: HTMLElement[], current: number) => void> = {\n default: syncDefaultSlides,\n fade: syncDefaultSlides,\n filmstrip: syncFilmstripSlides,\n gallery: syncGallerySlides,\n };\n\n const syncActiveState = (): void => {\n const variant = (props.variant.value ?? 'default') as CarouselVariant;\n\n syncTable[variant](slides, activeIndex.value);\n };\n\n watch(activeIndex, syncActiveState, { immediate: true });\n\n // ── Autoplay ─────────────────────────────────────────────────────────────\n\n const startAutoplay = (): void => {\n if (autoplayTimer !== null) return;\n\n autoplayTimer = setInterval(next, props['autoplay-interval'].value ?? 5000);\n };\n\n const stopAutoplay = (): void => {\n if (autoplayTimer !== null) {\n clearInterval(autoplayTimer);\n autoplayTimer = null;\n }\n };\n\n watch(\n computed(() => ({ enabled: props.autoplay.value, interval: props['autoplay-interval'].value })),\n ({ enabled }) => {\n stopAutoplay();\n\n if (enabled) startAutoplay();\n },\n );\n\n // ── Keyboard navigation ──────────────────────────────────────────────────\n\n const handleKeydown = (e: KeyboardEvent): void => {\n const isH = isHorizontal.value;\n const prevKey = isH ? 'ArrowLeft' : 'ArrowUp';\n const nextKey = isH ? 'ArrowRight' : 'ArrowDown';\n\n if (e.key === prevKey) {\n e.preventDefault();\n prev();\n } else if (e.key === nextKey) {\n e.preventDefault();\n next();\n } else if (e.key === 'Home') {\n e.preventDefault();\n goTo(0);\n } else if (e.key === 'End') {\n e.preventDefault();\n goTo(slideCount.value - 1);\n }\n };\n\n // ── Swipe ────────────────────────────────────────────────────────────────\n\n const swipe = createSwipeControl({\n axis: () => (isHorizontal.value ? 'x' : 'y'),\n onCommit: (detail) => {\n if (detail.distance < 0) next();\n else prev();\n },\n threshold: () => 48,\n });\n\n // ── Host bindings ────────────────────────────────────────────────────────\n\n bind({\n attr: {\n 'aria-label': () => props.label.value ?? 'Carousel',\n 'aria-roledescription': () => 'carousel',\n orientation: () => props.orientation.value ?? 'horizontal',\n role: () => 'region',\n style: () => `touch-action:${isHorizontal.value ? 'pan-y' : 'pan-x'}`,\n variant: () => props.variant.value ?? 'default',\n },\n on: {\n focusin: () => {\n stopAutoplay();\n },\n focusout: () => {\n if (props.autoplay.value) startAutoplay();\n },\n keydown: handleKeydown,\n pointercancel: (e: PointerEvent) => swipe.handlePointerCancel(e),\n pointerdown: (e: PointerEvent) => {\n const path = e.composedPath();\n const onButton = path.some(\n (n) =>\n n instanceof HTMLElement &&\n (n.tagName === 'BUTTON' || n.tagName === 'ORE-BUTTON' || n.tagName === 'ORE-PROGRESS'),\n );\n\n if (!onButton) swipe.handlePointerDown(e);\n },\n pointerenter: () => {\n stopAutoplay();\n },\n pointerleave: () => {\n if (props.autoplay.value) startAutoplay();\n },\n pointermove: (e: PointerEvent) => swipe.handlePointerMove(e),\n pointerup: (e: PointerEvent) => swipe.handlePointerUp(e),\n },\n });\n\n // ── Lifecycle ────────────────────────────────────────────────────────────\n\n onMounted(() => {\n const shadowRoot = el.shadowRoot!;\n const slot = shadowRoot.querySelector<HTMLSlotElement>('slot')!;\n\n // slotchange replaces MutationObserver — fires exactly when assigned\n // nodes change, scoped to this component's slot, no polling overhead.\n const onSlotChange = (): void => {\n refreshSlides();\n syncSlideVariants();\n syncActiveState();\n };\n\n slot.addEventListener('slotchange', onSlotChange);\n\n if (props.autoplay.value) {\n startAutoplay();\n }\n\n return () => {\n stopAutoplay();\n swipe.dispose();\n slot.removeEventListener('slotchange', onSlotChange);\n };\n });\n\n // ── Template ─────────────────────────────────────────────────────────────\n\n const focusIndicator = (index: number): void => {\n const dot = el.shadowRoot?.querySelector<HTMLElement>(`.indicator[data-index=\"${index}\"]`);\n\n dot?.focus();\n };\n\n const handleIndicatorKeydown = (e: KeyboardEvent, i: number): void => {\n const count = slideCount.value;\n let target: number | undefined;\n\n switch (e.key) {\n case 'ArrowDown':\n case 'ArrowRight':\n target = (i + 1) % count;\n break;\n case 'ArrowLeft':\n case 'ArrowUp':\n target = (i - 1 + count) % count;\n break;\n case 'End':\n target = count - 1;\n break;\n case 'Home':\n target = 0;\n break;\n default:\n return;\n }\n\n e.preventDefault();\n goTo(target);\n focusIndicator(target);\n };\n\n const renderControls = () =>\n showControls.value\n ? html`\n <div class=\"controls\" part=\"controls\">\n <ore-button\n class=\"nav-btn prev-btn\"\n part=\"prev-btn\"\n variant=\"ghost\"\n color=${() => props.color.value}\n rounded\n icon-only\n aria-label=\"Previous slide\"\n disabled=${() => (!canGoPrev.value ? true : undefined)}\n @click=${(e: Event) => {\n e.stopPropagation();\n prev();\n }}>\n <ore-icon\n name=${() => (isHorizontal.value ? 'chevron-left' : 'chevron-up')}\n size=\"16\"\n stroke-width=\"2\"\n aria-hidden=\"true\"></ore-icon>\n </ore-button>\n <ore-button\n class=\"nav-btn next-btn\"\n part=\"next-btn\"\n variant=\"ghost\"\n color=${() => props.color.value}\n rounded\n icon-only\n aria-label=\"Next slide\"\n disabled=${() => (!canGoNext.value ? true : undefined)}\n @click=${(e: Event) => {\n e.stopPropagation();\n next();\n }}>\n <ore-icon\n name=${() => (isHorizontal.value ? 'chevron-right' : 'chevron-down')}\n size=\"16\"\n stroke-width=\"2\"\n aria-hidden=\"true\"></ore-icon>\n </ore-button>\n </div>\n `\n : html``;\n\n return html`\n <div class=\"track\" part=\"track\" aria-live=${() => (props.autoplay.value ? 'off' : 'polite')}>\n <slot></slot>\n </div>\n\n ${() =>\n showIndicators.value && slideCount.value > 1\n ? html`\n <div class=\"indicators\" part=\"indicators\" role=\"tablist\" aria-label=\"Slide indicators\">\n ${() =>\n Array.from(\n { length: slideCount.value },\n (_, i) => html`\n <button\n type=\"button\"\n role=\"tab\"\n data-index=\"${i}\"\n class=${() => `indicator${i === activeIndex.value ? ' indicator-active' : ''}`}\n aria-selected=${() => String(i === activeIndex.value)}\n tabindex=${() => (i === activeIndex.value ? '0' : '-1')}\n aria-label=\"${`Go to slide ${i + 1}`}\"\n @click=${() => goTo(i)}\n @keydown=${(e: KeyboardEvent) => handleIndicatorKeydown(e, i)}>\n <ore-progress\n aria-hidden=\"true\"\n tabindex=\"-1\"\n color=${() => props.color.value}\n type=${() => (isHorizontal.value ? 'linear' : 'vertical')}\n value=${() => (i === activeIndex.value ? 100 : 0)}\n style=${() => {\n const fillAnim = isHorizontal.value ? 'carousel-fill' : 'carousel-fill-v';\n\n return `--carousel-timeout:${props['autoplay-interval'].value ?? 5000};--carousel-animation-name:${i === activeIndex.value && props.autoplay.value ? fillAnim : 'none'}`;\n }}></ore-progress>\n </button>\n `,\n )}\n ${renderControls}\n </div>\n `\n : html`\n ${renderControls}\n `}\n `;\n },\n styles: [componentStyles],\n});\n"],"mappings":"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"}