@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.js CHANGED
@@ -1,190 +1,138 @@
1
- import { warn as e } from "./_dev.js";
2
- import { createSwipeControl as t } from "./headless/swipe.js";
3
- import { announce as n } from "./headless/announcer.js";
4
- import r from "./content/carousel/carousel.css.js";
5
- import { CAROUSEL_SLIDE_TAG as i } from "./content/carousel/carousel-slide.js";
6
- import { bind as a, define as o, getHost as s, html as c, onMounted as l, prop as u, useEmit as d } from "@vielzeug/ore";
7
- import { computed as f, signal as p, watch as m } from "@vielzeug/ripple";
1
+ import { createSwipeControl as e } from "./core/swipe.js";
2
+ import { announce as t } from "./core/announcer.js";
3
+ import n from "./content/carousel/carousel.css.js";
4
+ import { CAROUSEL_SLIDE_TAG as r } from "./content/carousel/carousel-slide.js";
5
+ import { bind as i, define as a, getHost as o, html as s, onMounted as c, prop as l, useEmit as u } from "@vielzeug/ore";
6
+ import { computed as d, signal as f } from "@vielzeug/ripple";
7
+ import { watch as p } from "@vielzeug/ripple/watch";
8
8
  //#region src/content/carousel/carousel.ts
9
- var h = "ore-carousel", g = (e, t) => {
9
+ var m = "ore-carousel", h = (e, t) => {
10
10
  let n = e.length;
11
11
  e.forEach((e, r) => {
12
12
  let i = r === t;
13
13
  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);
14
14
  });
15
- }, _ = (e, t) => {
15
+ }, g = (e, t) => {
16
16
  let n = e.length;
17
17
  e.forEach((e, r) => {
18
18
  let i = r === t;
19
19
  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");
20
20
  });
21
- }, v = (e, t) => {
21
+ }, _ = (e, t) => {
22
22
  let n = e.length;
23
23
  e.forEach((e, r) => {
24
24
  let i = r === t, a = t > 0 && r === t - 1, o = t < n - 1 && r === t + 1;
25
25
  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);
26
26
  });
27
- }, y = (e, t) => {
28
- e.forEach((e, n) => {
29
- e.toggleAttribute("data-active", n === t), e.setAttribute("aria-hidden", "false"), e.removeAttribute("data-before"), e.removeAttribute("data-after"), e.removeAttribute("data-gallery-visible");
30
- });
31
27
  };
32
- o(h, {
28
+ a(m, {
33
29
  props: {
34
- autoplay: u.bool(!1),
35
- "autoplay-interval": u.number(5e3),
36
- color: u.string(),
37
- label: u.string("Carousel"),
38
- loop: u.bool(!0),
39
- "marquee-duration": u.number(10),
40
- orientation: u.string("horizontal"),
41
- "show-controls": u.bool(!0),
42
- "show-indicators": u.bool(!0),
43
- "slide-index": u.number(0),
44
- variant: u.string("default")
30
+ autoplay: l.bool(!1),
31
+ "autoplay-interval": l.number(5e3),
32
+ color: l.string(),
33
+ label: l.string("Carousel"),
34
+ loop: l.bool(!0),
35
+ orientation: l.string("horizontal"),
36
+ "show-controls": l.bool(!0),
37
+ "show-indicators": l.bool(!0),
38
+ "slide-index": l.number(0),
39
+ variant: l.string("default")
45
40
  },
46
- setup(r) {
47
- let i = s(), o = d(), u = p(r["slide-index"].value ?? 0), h = f(() => r.variant.value === "marquee"), b = null, x = Array.from(i.querySelectorAll(":scope > ore-carousel-slide")), S = p(x.length), C = () => {
48
- x = Array.from(i.querySelectorAll(":scope > ore-carousel-slide")), S.value = x.length;
49
- }, w = f(() => r.orientation.value !== "vertical"), T = f(() => r.loop.value !== !1), E = f(() => r["show-controls"].value !== !1), D = f(() => r["show-indicators"].value !== !1), O = f(() => T.value || u.value > 0), k = f(() => T.value || u.value < S.value - 1), A = null, j = (e, t = !0) => {
50
- let r = S.value;
51
- if (r === 0) return;
52
- let a = T.value ? (e % r + r) % r : Math.max(0, Math.min(e, r - 1));
53
- a !== u.value && (u.value = a, i.setAttribute("slide-index", String(a)), o("change", { index: a }), A?.seekTo(a, x), t && n(x[a]?.getAttribute("aria-label") ?? `Slide ${a + 1} of ${r}`));
54
- }, M = () => j(u.value - 1), N = () => j(u.value + 1);
55
- m(r["slide-index"], (e) => {
56
- typeof e == "number" && e !== u.value && j(e, !1);
41
+ setup(n) {
42
+ let r = o(), a = u(), l = f(n["slide-index"].value ?? 0), m = null, v = Array.from(r.querySelectorAll(":scope > ore-carousel-slide")), y = f(v.length), b = () => {
43
+ v = Array.from(r.querySelectorAll(":scope > ore-carousel-slide")), y.value = v.length;
44
+ }, x = d(() => n.orientation.value !== "vertical"), S = d(() => n.loop.value !== !1), C = d(() => n["show-controls"].value !== !1), w = d(() => n["show-indicators"].value !== !1), T = d(() => S.value || l.value > 0), E = d(() => S.value || l.value < y.value - 1), D = (e, n = !0) => {
45
+ let i = y.value;
46
+ if (i === 0) return;
47
+ let o = S.value ? (e % i + i) % i : Math.max(0, Math.min(e, i - 1));
48
+ o !== l.value && (l.value = o, r.setAttribute("slide-index", String(o)), a("change", { index: o }), n && t(v[o]?.getAttribute("aria-label") ?? `Slide ${o + 1} of ${i}`));
49
+ }, O = () => D(l.value - 1), k = () => D(l.value + 1);
50
+ p(n["slide-index"], (e) => {
51
+ typeof e == "number" && e !== l.value && D(e, !1);
57
52
  });
58
- let P = () => {
59
- let e = r.variant.value ?? "default", t = r.orientation.value ?? "horizontal";
60
- x.forEach((n) => {
53
+ let A = () => {
54
+ let e = n.variant.value ?? "default", t = n.orientation.value ?? "horizontal";
55
+ v.forEach((n) => {
61
56
  n.setAttribute("data-variant", e), n.setAttribute("data-orientation", t);
62
57
  });
63
58
  };
64
- m(f(() => ({
65
- orientation: r.orientation.value,
66
- variant: r.variant.value
67
- })), P, { immediate: !0 });
68
- let F = {
69
- default: g,
70
- fade: g,
71
- filmstrip: _,
72
- gallery: v,
73
- marquee: y
74
- }, I = () => {
75
- let e = r.variant.value ?? "default";
76
- F[e](x, u.value);
59
+ p(d(() => ({
60
+ orientation: n.orientation.value,
61
+ variant: n.variant.value
62
+ })), A, { immediate: !0 });
63
+ let j = {
64
+ default: h,
65
+ fade: h,
66
+ filmstrip: g,
67
+ gallery: _
68
+ }, M = () => {
69
+ let e = n.variant.value ?? "default";
70
+ j[e](v, l.value);
77
71
  };
78
- m(u, I, { immediate: !0 });
79
- let L = () => {
80
- b === null && (b = setInterval(N, r["autoplay-interval"].value ?? 5e3));
81
- }, R = () => {
82
- b !== null && (clearInterval(b), b = null);
72
+ p(l, M, { immediate: !0 });
73
+ let N = () => {
74
+ m === null && (m = setInterval(k, n["autoplay-interval"].value ?? 5e3));
75
+ }, P = () => {
76
+ m !== null && (clearInterval(m), m = null);
83
77
  };
84
- m(f(() => ({
85
- enabled: r.autoplay.value,
86
- interval: r["autoplay-interval"].value
78
+ p(d(() => ({
79
+ enabled: n.autoplay.value,
80
+ interval: n["autoplay-interval"].value
87
81
  })), ({ enabled: e }) => {
88
- R(), e && L();
82
+ P(), e && N();
89
83
  });
90
- let z = (e) => {
91
- let t = w.value, n = t ? "ArrowLeft" : "ArrowUp", r = t ? "ArrowRight" : "ArrowDown";
92
- e.key === n ? (e.preventDefault(), M()) : e.key === r ? (e.preventDefault(), N()) : e.key === "Home" ? (e.preventDefault(), j(0)) : e.key === "End" && (e.preventDefault(), j(S.value - 1));
93
- }, B = t({
94
- axis: () => w.value ? "x" : "y",
84
+ let F = (e) => {
85
+ let t = x.value, n = t ? "ArrowLeft" : "ArrowUp", r = t ? "ArrowRight" : "ArrowDown";
86
+ e.key === n ? (e.preventDefault(), O()) : e.key === r ? (e.preventDefault(), k()) : e.key === "Home" ? (e.preventDefault(), D(0)) : e.key === "End" && (e.preventDefault(), D(y.value - 1));
87
+ }, I = e({
88
+ axis: () => x.value ? "x" : "y",
95
89
  onCommit: (e) => {
96
- e.distance < 0 ? N() : M();
90
+ e.distance < 0 ? k() : O();
97
91
  },
98
92
  threshold: () => 48
99
93
  });
100
- a({
94
+ i({
101
95
  attr: {
102
- "aria-label": () => r.label.value ?? "Carousel",
96
+ "aria-label": () => n.label.value ?? "Carousel",
103
97
  "aria-roledescription": () => "carousel",
104
- orientation: () => r.orientation.value ?? "horizontal",
98
+ orientation: () => n.orientation.value ?? "horizontal",
105
99
  role: () => "region",
106
- style: () => `touch-action:${w.value ? "pan-y" : "pan-x"}`,
107
- variant: () => r.variant.value ?? "default"
100
+ style: () => `touch-action:${x.value ? "pan-y" : "pan-x"}`,
101
+ variant: () => n.variant.value ?? "default"
108
102
  },
109
103
  on: {
110
104
  focusin: () => {
111
- R();
105
+ P();
112
106
  },
113
107
  focusout: () => {
114
- r.autoplay.value && L();
108
+ n.autoplay.value && N();
115
109
  },
116
- keydown: z,
117
- pointercancel: (e) => B.handlePointerCancel(e),
110
+ keydown: F,
111
+ pointercancel: (e) => I.handlePointerCancel(e),
118
112
  pointerdown: (e) => {
119
- e.composedPath().some((e) => e instanceof HTMLElement && (e.tagName === "BUTTON" || e.tagName === "ORE-BUTTON" || e.tagName === "ORE-PROGRESS")) || B.handlePointerDown(e);
113
+ e.composedPath().some((e) => e instanceof HTMLElement && (e.tagName === "BUTTON" || e.tagName === "ORE-BUTTON" || e.tagName === "ORE-PROGRESS")) || I.handlePointerDown(e);
120
114
  },
121
115
  pointerenter: () => {
122
- R();
116
+ P();
123
117
  },
124
118
  pointerleave: () => {
125
- r.autoplay.value && L();
119
+ n.autoplay.value && N();
126
120
  },
127
- pointermove: (e) => B.handlePointerMove(e),
128
- pointerup: (e) => B.handlePointerUp(e)
121
+ pointermove: (e) => I.handlePointerMove(e),
122
+ pointerup: (e) => I.handlePointerUp(e)
129
123
  }
130
- });
131
- let V = (t) => {
132
- let n = r.orientation.value ?? "horizontal", a = n !== "vertical";
133
- h.value && r.loop.value === !1 && e("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.");
134
- let o = x.map((e) => {
135
- let r = e.cloneNode(!0);
136
- 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;
137
- });
138
- t.style.setProperty("--_marquee-duration", `${r["marquee-duration"].value ?? 10}s`), T.value || t.style.setProperty("animation-iteration-count", "1");
139
- let s = !1, c = () => {
140
- s = !0, t.style.setProperty("animation-play-state", "paused");
141
- }, l = () => {
142
- s = !1, t.style.removeProperty("animation-play-state");
143
- };
144
- i.addEventListener("mouseenter", c), i.addEventListener("mouseleave", l);
145
- let u = null;
146
- return {
147
- cleanup: () => {
148
- 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);
149
- },
150
- seekTo: (e, n) => {
151
- let o = n[e];
152
- if (!o) return;
153
- 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;
154
- if (u !== null && (clearTimeout(u), u = null, t.style.removeProperty("transition")), l === 0) {
155
- t.style.setProperty("animation-delay", `${f}s`), s || t.style.removeProperty("animation-play-state");
156
- return;
157
- }
158
- let p = parseFloat(getComputedStyle(i).getPropertyValue("--carousel-transition-duration") || "0.35") * 1e3 || 350, m = a ? `translateX(-${c}px)` : `translateY(-${c}px)`;
159
- t.getBoundingClientRect();
160
- 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)`;
161
- t.style.setProperty("animation", "none"), t.style.setProperty("transform", _), requestAnimationFrame(() => {
162
- t.style.setProperty("transition", `transform ${p}ms ease-in-out`), t.style.setProperty("transform", m), u = setTimeout(() => {
163
- 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");
164
- }, p);
165
- });
166
- }
167
- };
168
- };
169
- l(() => {
170
- let e = i.shadowRoot, t = e.querySelector(".track"), n = e.querySelector("slot"), a = () => {
171
- C(), P(), I(), h.value && (A?.cleanup(), A = V(t));
124
+ }), c(() => {
125
+ let e = r.shadowRoot.querySelector("slot"), t = () => {
126
+ b(), A(), M();
172
127
  };
173
- return n.addEventListener("slotchange", a), m(f(() => ({
174
- duration: r["marquee-duration"].value,
175
- isMarquee: h.value,
176
- loop: r.loop.value,
177
- orientation: r.orientation.value
178
- })), ({ isMarquee: e }) => {
179
- A?.cleanup(), A = e ? V(t) : null;
180
- }, { immediate: !0 }), r.autoplay.value && L(), () => {
181
- R(), B.dispose(), n.removeEventListener("slotchange", a), A?.cleanup();
128
+ return e.addEventListener("slotchange", t), n.autoplay.value && N(), () => {
129
+ P(), I.dispose(), e.removeEventListener("slotchange", t);
182
130
  };
183
131
  });
184
- let H = (e) => {
185
- (i.shadowRoot?.querySelector(`.indicator[data-index="${e}"]`))?.focus();
186
- }, U = (e, t) => {
187
- let n = S.value, r;
132
+ let L = (e) => {
133
+ (r.shadowRoot?.querySelector(`.indicator[data-index="${e}"]`))?.focus();
134
+ }, R = (e, t) => {
135
+ let n = y.value, r;
188
136
  switch (e.key) {
189
137
  case "ArrowDown":
190
138
  case "ArrowRight":
@@ -202,79 +150,87 @@ o(h, {
202
150
  break;
203
151
  default: return;
204
152
  }
205
- e.preventDefault(), j(r), H(r);
206
- }, W = () => E.value ? c`<div class="controls" part="controls">
207
- <ore-button
208
- class="nav-btn prev-btn"
209
- part="prev-btn"
210
- variant="ghost"
211
- :color=${() => r.color.value}
212
- rounded
213
- icon-only
214
- aria-label="Previous slide"
215
- :disabled=${() => O.value ? void 0 : !0}
216
- @click=${(e) => {
217
- e.stopPropagation(), M();
153
+ e.preventDefault(), D(r), L(r);
154
+ }, z = () => C.value ? s`
155
+ <div class="controls" part="controls">
156
+ <ore-button
157
+ class="nav-btn prev-btn"
158
+ part="prev-btn"
159
+ variant="ghost"
160
+ color=${() => n.color.value}
161
+ rounded
162
+ icon-only
163
+ aria-label="Previous slide"
164
+ disabled=${() => !T.value || void 0}
165
+ @click=${(e) => {
166
+ e.stopPropagation(), O();
218
167
  }}>
219
- <ore-icon
220
- :name=${() => w.value ? "chevron-left" : "chevron-up"}
221
- size="16"
222
- stroke-width="2"
223
- aria-hidden="true"></ore-icon>
224
- </ore-button>
225
- <ore-button
226
- class="nav-btn next-btn"
227
- part="next-btn"
228
- variant="ghost"
229
- :color=${() => r.color.value}
230
- rounded
231
- icon-only
232
- aria-label="Next slide"
233
- :disabled=${() => k.value ? void 0 : !0}
234
- @click=${(e) => {
235
- e.stopPropagation(), N();
168
+ <ore-icon
169
+ name=${() => x.value ? "chevron-left" : "chevron-up"}
170
+ size="16"
171
+ stroke-width="2"
172
+ aria-hidden="true"></ore-icon>
173
+ </ore-button>
174
+ <ore-button
175
+ class="nav-btn next-btn"
176
+ part="next-btn"
177
+ variant="ghost"
178
+ color=${() => n.color.value}
179
+ rounded
180
+ icon-only
181
+ aria-label="Next slide"
182
+ disabled=${() => !E.value || void 0}
183
+ @click=${(e) => {
184
+ e.stopPropagation(), k();
236
185
  }}>
237
- <ore-icon
238
- :name=${() => w.value ? "chevron-right" : "chevron-down"}
239
- size="16"
240
- stroke-width="2"
241
- aria-hidden="true"></ore-icon>
242
- </ore-button>
243
- </div>` : c``;
244
- return c`
245
- <div class="track" part="track" :aria-live=${() => r.autoplay.value ? "off" : "polite"}>
186
+ <ore-icon
187
+ name=${() => x.value ? "chevron-right" : "chevron-down"}
188
+ size="16"
189
+ stroke-width="2"
190
+ aria-hidden="true"></ore-icon>
191
+ </ore-button>
192
+ </div>
193
+ ` : s``;
194
+ return s`
195
+ <div class="track" part="track" aria-live=${() => n.autoplay.value ? "off" : "polite"}>
246
196
  <slot></slot>
247
197
  </div>
248
198
 
249
- ${() => D.value && S.value > 1 && !h.value ? c`<div class="indicators" part="indicators" role="tablist" aria-label="Slide indicators">
250
- ${() => Array.from({ length: S.value }, (e, t) => c`<button
251
- type="button"
252
- role="tab"
253
- data-index="${t}"
254
- :class=${() => `indicator${!h.value && t === u.value ? " indicator-active" : ""}`}
255
- :aria-selected=${() => String(!h.value && t === u.value)}
256
- :tabindex=${() => !h.value && t === u.value ? "0" : "-1"}
257
- aria-label="${`Go to slide ${t + 1}`}"
258
- @click=${() => j(t)}
259
- @keydown=${(e) => U(e, t)}>
260
- <ore-progress
261
- aria-hidden="true"
262
- tabindex="-1"
263
- :color=${() => r.color.value}
264
- :type=${() => w.value ? "linear" : "vertical"}
265
- :value=${() => !h.value && t === u.value ? 100 : 0}
266
- :style=${() => {
267
- let e = w.value ? "carousel-fill" : "carousel-fill-v";
268
- return `--carousel-timeout:${r["autoplay-interval"].value ?? 5e3};--carousel-animation-name:${!h.value && t === u.value && r.autoplay.value ? e : "none"}`;
199
+ ${() => w.value && y.value > 1 ? s`
200
+ <div class="indicators" part="indicators" role="tablist" aria-label="Slide indicators">
201
+ ${() => Array.from({ length: y.value }, (e, t) => s`
202
+ <button
203
+ type="button"
204
+ role="tab"
205
+ data-index="${t}"
206
+ class=${() => `indicator${t === l.value ? " indicator-active" : ""}`}
207
+ aria-selected=${() => String(t === l.value)}
208
+ tabindex=${() => t === l.value ? "0" : "-1"}
209
+ aria-label="${`Go to slide ${t + 1}`}"
210
+ @click=${() => D(t)}
211
+ @keydown=${(e) => R(e, t)}>
212
+ <ore-progress
213
+ aria-hidden="true"
214
+ tabindex="-1"
215
+ color=${() => n.color.value}
216
+ type=${() => x.value ? "linear" : "vertical"}
217
+ value=${() => t === l.value ? 100 : 0}
218
+ style=${() => {
219
+ let e = x.value ? "carousel-fill" : "carousel-fill-v";
220
+ return `--carousel-timeout:${n["autoplay-interval"].value ?? 5e3};--carousel-animation-name:${t === l.value && n.autoplay.value ? e : "none"}`;
269
221
  }}></ore-progress>
270
- </button>`)}
271
- ${W}
272
- </div>` : c`${W}`}
222
+ </button>
223
+ `)}
224
+ ${z}
225
+ </div>
226
+ ` : s`
227
+ ${z}
228
+ `}
273
229
  `;
274
230
  },
275
- styles: [r]
231
+ styles: [n]
276
232
  });
277
233
  //#endregion
278
- export { i as CAROUSEL_SLIDE_TAG, h as CAROUSEL_TAG };
234
+ export { r as CAROUSEL_SLIDE_TAG, m as CAROUSEL_TAG };
279
235
 
280
236
  //# sourceMappingURL=carousel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"carousel.js","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":";;;;;;;;AA+HA,IAAa,IAAe,gBAMtB,KAAqB,GAAuB,MAA0B;CAC1E,IAAM,IAAQ,EAAO;CAErB,EAAO,SAAS,GAAO,MAAM;EAC3B,IAAM,IAAS,MAAM;EAOrB,AALA,EAAM,gBAAgB,eAAe,CAAM,GAC3C,EAAM,aAAa,eAAe,OAAO,CAAC,CAAM,CAAC,GACjD,EAAM,aAAa,cAAc,EAAM,aAAa,YAAY,KAAK,SAAS,IAAI,EAAE,MAAM,GAAO,GACjG,EAAM,gBAAgB,sBAAsB,GAC5C,EAAM,gBAAgB,eAAe,IAAI,CAAO,GAChD,EAAM,gBAAgB,cAAc,IAAI,CAAO;CACjD,CAAC;AACH,GAEM,KAAuB,GAAuB,MAA0B;CAC5E,IAAM,IAAQ,EAAO;CAErB,EAAO,SAAS,GAAO,MAAM;EAC3B,IAAM,IAAS,MAAM;EAOrB,AALA,EAAM,gBAAgB,eAAe,CAAM,GAC3C,EAAM,aAAa,eAAe,OAAO,CAAC,CAAM,CAAC,GACjD,EAAM,aAAa,cAAc,EAAM,aAAa,YAAY,KAAK,SAAS,IAAI,EAAE,MAAM,GAAO,GACjG,EAAM,gBAAgB,sBAAsB,GAC5C,EAAM,gBAAgB,aAAa,GACnC,EAAM,gBAAgB,YAAY;CACpC,CAAC;AACH,GAEM,KAAqB,GAAuB,MAA0B;CAC1E,IAAM,IAAQ,EAAO;CAErB,EAAO,SAAS,GAAO,MAAM;EAC3B,IAAM,IAAS,MAAM,GACf,IAAS,IAAU,KAAK,MAAM,IAAU,GACxC,IAAS,IAAU,IAAQ,KAAK,MAAM,IAAU;EAOtD,AALA,EAAM,gBAAgB,eAAe,CAAM,GAC3C,EAAM,aAAa,eAAe,OAAO,CAAC,CAAM,CAAC,GACjD,EAAM,aAAa,cAAc,EAAM,aAAa,YAAY,KAAK,SAAS,IAAI,EAAE,MAAM,GAAO,GACjG,EAAM,gBAAgB,aAAa,GACnC,EAAM,gBAAgB,YAAY,GAClC,EAAM,gBAAgB,wBAAwB,KAAU,KAAU,CAAM;CAC1E,CAAC;AACH,GAEM,KAAqB,GAAuB,MAA0B;CAC1E,EAAO,SAAS,GAAO,MAAM;EAK3B,AAJA,EAAM,gBAAgB,eAAe,MAAM,CAAO,GAClD,EAAM,aAAa,eAAe,OAAO,GACzC,EAAM,gBAAgB,aAAa,GACnC,EAAM,gBAAgB,YAAY,GAClC,EAAM,gBAAgB,sBAAsB;CAC9C,CAAC;AACH;AAIA,EAAyB,GAAc;CACrC,OAAO;EACL,UAAU,EAAK,KAAK,EAAK;EACzB,qBAAqB,EAAK,OAAO,GAAI;EACrC,OAAO,EAAK,OAAmB;EAC/B,OAAO,EAAK,OAAO,UAAU;EAC7B,MAAM,EAAK,KAAK,EAAI;EACpB,oBAAoB,EAAK,OAAO,EAAE;EAClC,aAAa,EAAK,OAA4B,YAAY;EAC1D,iBAAiB,EAAK,KAAK,EAAI;EAC/B,mBAAmB,EAAK,KAAK,EAAI;EACjC,eAAe,EAAK,OAAO,CAAC;EAC5B,SAAS,EAAK,OAAwB,SAAS;CACjD;CAEA,MAAM,GAAO;EACX,IAAM,IAAK,EAAQ,GACb,IAAO,EAA2B,GAIlC,IAAc,EAAe,EAAM,cAAc,CAAC,SAAS,CAAC,GAC5D,IAAY,QAAe,EAAM,QAAQ,UAAU,SAAS,GAC9D,IAAuD,MAGvD,IAAwB,MAAM,KAAK,EAAG,iBAA8B,6BAA6B,CAAC,GAChG,IAAa,EAAO,EAAO,MAAM,GAEjC,UAA4B;GAEhC,AADA,IAAS,MAAM,KAAK,EAAG,iBAA8B,6BAA6B,CAAC,GACnF,EAAW,QAAQ,EAAO;EAC5B,GAEM,IAAe,QAAe,EAAM,YAAY,UAAU,UAAU,GACpE,IAAU,QAAe,EAAM,KAAK,UAAU,EAAK,GACnD,IAAe,QAAe,EAAM,gBAAgB,CAAC,UAAU,EAAK,GACpE,IAAiB,QAAe,EAAM,kBAAkB,CAAC,UAAU,EAAK,GAExE,IAAY,QAAe,EAAQ,SAAS,EAAY,QAAQ,CAAC,GACjE,IAAY,QAAe,EAAQ,SAAS,EAAY,QAAQ,EAAW,QAAQ,CAAC,GAMtF,IAA0C,MAExC,KAAQ,GAAe,IAAqB,OAAe;GAC/D,IAAM,IAAQ,EAAW;GAEzB,IAAI,MAAU,GAAG;GAEjB,IAAM,IAAO,EAAQ,SAAU,IAAQ,IAAS,KAAS,IAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,GAAO,IAAQ,CAAC,CAAC;GAEnG,MAAS,EAAY,UAEzB,EAAY,QAAQ,GACpB,EAAG,aAAa,eAAe,OAAO,CAAI,CAAC,GAC3C,EAAK,UAAU,EAAE,OAAO,EAAK,CAAC,GAE9B,GAAiB,OAAO,GAAM,CAAM,GAEhC,KACF,EAAS,EAAO,EAAK,EAAE,aAAa,YAAY,KAAK,SAAS,IAAO,EAAE,MAAM,GAAO;EAExF,GAEM,UAAmB,EAAK,EAAY,QAAQ,CAAC,GAC7C,UAAmB,EAAK,EAAY,QAAQ,CAAC;EAInD,EAAM,EAAM,iBAAiB,MAAM;GACjC,AAAI,OAAO,KAAM,YAAY,MAAM,EAAY,SAAO,EAAK,GAAG,EAAK;EACrE,CAAC;EAID,IAAM,UAAgC;GACpC,IAAM,IAAU,EAAM,QAAQ,SAAS,WACjC,IAAc,EAAM,YAAY,SAAS;GAE/C,EAAO,SAAS,MAAU;IAExB,AADA,EAAM,aAAa,gBAAgB,CAAO,GAC1C,EAAM,aAAa,oBAAoB,CAAW;GACpD,CAAC;EACH;EAEA,EACE,SAAgB;GAAE,aAAa,EAAM,YAAY;GAAO,SAAS,EAAM,QAAQ;EAAM,EAAE,GACvF,GACA,EAAE,WAAW,GAAK,CACpB;EAIA,IAAM,IAAuF;GAC3F,SAAS;GACT,MAAM;GACN,WAAW;GACX,SAAS;GACT,SAAS;EACX,GAEM,UAA8B;GAClC,IAAM,IAAW,EAAM,QAAQ,SAAS;GAExC,EAAU,EAAQ,CAAC,GAAQ,EAAY,KAAK;EAC9C;EAEA,EAAM,GAAa,GAAiB,EAAE,WAAW,GAAK,CAAC;EAIvD,IAAM,UAA4B;GAC5B,MAAkB,SAEtB,IAAgB,YAAY,GAAM,EAAM,oBAAoB,CAAC,SAAS,GAAI;EAC5E,GAEM,UAA2B;GAC/B,AAAI,MAAkB,SACpB,cAAc,CAAa,GAC3B,IAAgB;EAEpB;EAEA,EACE,SAAgB;GAAE,SAAS,EAAM,SAAS;GAAO,UAAU,EAAM,oBAAoB,CAAC;EAAM,EAAE,IAC7F,EAAE,iBAAc;GAGf,AAFA,EAAa,GAET,KAAS,EAAc;EAC7B,CACF;EAIA,IAAM,KAAiB,MAA2B;GAChD,IAAM,IAAM,EAAa,OACnB,IAAU,IAAM,cAAc,WAC9B,IAAU,IAAM,eAAe;GAErC,AAAI,EAAE,QAAQ,KACZ,EAAE,eAAe,GACjB,EAAK,KACI,EAAE,QAAQ,KACnB,EAAE,eAAe,GACjB,EAAK,KACI,EAAE,QAAQ,UACnB,EAAE,eAAe,GACjB,EAAK,CAAC,KACG,EAAE,QAAQ,UACnB,EAAE,eAAe,GACjB,EAAK,EAAW,QAAQ,CAAC;EAE7B,GAIM,IAAQ,EAAmB;GAC/B,YAAa,EAAa,QAAQ,MAAM;GACxC,WAAW,MAAW;IACpB,AAAI,EAAO,WAAW,IAAG,EAAK,IACzB,EAAK;GACZ;GACA,iBAAiB;EACnB,CAAC;EAID,EAAK;GACH,MAAM;IACJ,oBAAoB,EAAM,MAAM,SAAS;IACzC,8BAA8B;IAC9B,mBAAmB,EAAM,YAAY,SAAS;IAC9C,YAAY;IACZ,aAAa,gBAAgB,EAAa,QAAQ,UAAU;IAC5D,eAAe,EAAM,QAAQ,SAAS;GACxC;GACA,IAAI;IACF,eAAe;KACb,EAAa;IACf;IACA,gBAAgB;KACd,AAAI,EAAM,SAAS,SAAO,EAAc;IAC1C;IACA,SAAS;IACT,gBAAgB,MAAoB,EAAM,oBAAoB,CAAC;IAC/D,cAAc,MAAoB;KAQhC,AAPa,EAAE,aACE,CAAA,CAAK,MACnB,MACC,aAAa,gBACZ,EAAE,YAAY,YAAY,EAAE,YAAY,gBAAgB,EAAE,YAAY,eAGtE,KAAU,EAAM,kBAAkB,CAAC;IAC1C;IACA,oBAAoB;KAClB,EAAa;IACf;IACA,oBAAoB;KAClB,AAAI,EAAM,SAAS,SAAO,EAAc;IAC1C;IACA,cAAc,MAAoB,EAAM,kBAAkB,CAAC;IAC3D,YAAY,MAAoB,EAAM,gBAAgB,CAAC;GACzD;EACF,CAAC;EAQD,IAAM,KAAgB,MAAwC;GAC5D,IAAM,IAAc,EAAM,YAAY,SAAS,cACzC,IAAa,MAAgB;GAEnC,AAAI,EAAU,SAAS,EAAM,KAAK,UAAU,MAC1C,EACE,2NAGF;GAGF,IAAM,IAAS,EAAO,KAAK,MAAM;IAC/B,IAAM,IAAQ,EAAE,UAAU,EAAI;IAQ9B,OANA,EAAM,aAAa,eAAe,MAAM,GACxC,EAAM,aAAa,gBAAgB,SAAS,GAC5C,EAAM,aAAa,oBAAoB,CAAW,GAClD,EAAM,aAAa,sBAAsB,EAAE,GAC3C,EAAM,YAAY,CAAK,GAEhB;GACT,CAAC;GAID,AAFA,EAAM,MAAM,YAAY,uBAAuB,GAAG,EAAM,mBAAmB,CAAC,SAAS,GAAG,EAAE,GAErF,EAAQ,SACX,EAAM,MAAM,YAAY,6BAA6B,GAAG;GAG1D,IAAI,IAAY,IAEV,UAAoB;IAExB,AADA,IAAY,IACZ,EAAM,MAAM,YAAY,wBAAwB,QAAQ;GAC1D,GAEM,UAAqB;IAEzB,AADA,IAAY,IACZ,EAAM,MAAM,eAAe,sBAAsB;GACnD;GAMA,AADA,EAAG,iBAAiB,cAAc,CAAK,GACvC,EAAG,iBAAiB,cAAc,CAAM;GAQxC,IAAI,IAAkD;GA0EtD,OAAO;IACL,eAAe;KAab,AAZI,MAAc,QAAM,aAAa,CAAS,GAE9C,IAAY,MACZ,EAAO,SAAS,MAAM,EAAE,OAAO,CAAC,GAChC,EAAM,MAAM,eAAe,YAAY,GACvC,EAAM,MAAM,eAAe,WAAW,GACtC,EAAM,MAAM,eAAe,WAAW,GACtC,EAAM,MAAM,eAAe,qBAAqB,GAChD,EAAM,MAAM,eAAe,2BAA2B,GACtD,EAAM,MAAM,eAAe,iBAAiB,GAC5C,EAAM,MAAM,eAAe,sBAAsB,GACjD,EAAG,oBAAoB,cAAc,CAAK,GAC1C,EAAG,oBAAoB,cAAc,CAAM;IAC7C;IACA,SAxFc,GAAe,MAAuC;KACpE,IAAM,IAAQ,EAAc;KAE5B,IAAI,CAAC,GAAO;KAEZ,IAAM,IAAe,IAAa,EAAM,aAAa,EAAM,WACrD,IAAW,IAAa,EAAM,cAAc,IAAI,EAAM,eAAe,GACrE,IAAgB,EAAM,mBAAmB,CAAC,SAAS,IACnD,IAAQ,IAAW,IAAI,EAAG,IAAe,IAAY,KAAiB;KAW5E,IARI,MAAc,SAChB,aAAa,CAAS,GACtB,IAAY,MAEZ,EAAM,MAAM,eAAe,YAAY,IAIrC,MAAa,GAAG;MAGlB,AAFA,EAAM,MAAM,YAAY,mBAAmB,GAAG,EAAM,EAAE,GAEjD,KACH,EAAM,MAAM,eAAe,sBAAsB;MAGnD;KACF;KAEA,IAAM,IACJ,WAAW,iBAAiB,CAAE,CAAC,CAAC,iBAAiB,gCAAgC,KAAK,MAAM,IAAI,OAAQ,KAEpG,IAAkB,IAAa,eAAe,EAAa,OAAO,eAAe,EAAa;KAKpG,EAAW,sBAAsB;KAGjC,IAAM,IADoB,iBAAiB,CAAK,CAAC,CAAC,UAE/C,MAAM,mBAAmB,CAAC,GAAG,EAAE,CAC/B,MAAM,GAAG,CAAC,CACV,IAAI,MAAM,GACP,IAAe,IAAc,IAAe,MAAM,IAAM,IAAe,MAAM,GAC7E,IAAkB,IAAa,cAAc,EAAa,OAAO,cAAc,EAAa;KAOlG,AAJA,EAAM,MAAM,YAAY,aAAa,MAAM,GAC3C,EAAM,MAAM,YAAY,aAAa,CAAe,GAGpD,4BAA4B;MAM1B,AALA,EAAM,MAAM,YAAY,cAAc,aAAa,EAAO,eAAe,GACzE,EAAM,MAAM,YAAY,aAAa,CAAe,GAIpD,IAAY,iBAAiB;OAO3B,AANA,IAAY,MACZ,EAAM,MAAM,eAAe,YAAY,GACvC,EAAM,MAAM,eAAe,WAAW,GACtC,EAAM,MAAM,eAAe,WAAW,GACtC,EAAM,MAAM,YAAY,mBAAmB,GAAG,EAAM,EAAE,GAElD,KACF,EAAM,MAAM,YAAY,wBAAwB,QAAQ;MAE5D,GAAG,CAAM;KACX,CAAC;IACH;GAmBA;EACF;EAIA,QAAgB;GACd,IAAM,IAAa,EAAG,YAChB,IAAQ,EAAW,cAA2B,QAAQ,GACtD,IAAO,EAAW,cAA+B,MAAM,GAIvD,UAA2B;IAK/B,AAJA,EAAc,GACd,EAAkB,GAClB,EAAgB,GAEZ,EAAU,UACZ,GAAiB,QAAQ,GACzB,IAAkB,EAAa,CAAK;GAExC;GAsBA,OApBA,EAAK,iBAAiB,cAAc,CAAY,GAEhD,EACE,SAAgB;IACd,UAAU,EAAM,mBAAmB,CAAC;IACpC,WAAW,EAAU;IACrB,MAAM,EAAM,KAAK;IACjB,aAAa,EAAM,YAAY;GACjC,EAAE,IACD,EAAE,WAAW,QAAa;IAEzB,AADA,GAAiB,QAAQ,GACzB,IAAkB,IAAS,EAAa,CAAK,IAAI;GACnD,GACA,EAAE,WAAW,GAAK,CACpB,GAEI,EAAM,SAAS,SACjB,EAAc,SAGH;IAIX,AAHA,EAAa,GACb,EAAM,QAAQ,GACd,EAAK,oBAAoB,cAAc,CAAY,GACnD,GAAiB,QAAQ;GAC3B;EACF,CAAC;EAID,IAAM,KAAkB,MAAwB;GAG9C,CAFY,EAAG,YAAY,cAA2B,0BAA0B,EAAM,GAAG,EAAA,EAEpF,MAAM;EACb,GAEM,KAA0B,GAAkB,MAAoB;GACpE,IAAM,IAAQ,EAAW,OACrB;GAEJ,QAAQ,EAAE,KAAV;IACE,KAAK;IACL,KAAK;KACH,KAAU,IAAI,KAAK;KACnB;IACF,KAAK;IACL,KAAK;KACH,KAAU,IAAI,IAAI,KAAS;KAC3B;IACF,KAAK;KACH,IAAS,IAAQ;KACjB;IACF,KAAK;KACH,IAAS;KACT;IACF,SACE;GACJ;GAIA,AAFA,EAAE,eAAe,GACjB,EAAK,CAAM,GACX,EAAe,CAAM;EACvB,GAEM,UACJ,EAAa,QACT,CAAI;;;;;6BAKe,EAAM,MAAM,MAAM;;;;gCAIb,EAAU,QAAe,KAAA,IAAP,GAAkB;wBAC9C,MAAa;GAErB,AADA,EAAE,gBAAgB,GAClB,EAAK;EACP,EAAE;;8BAEe,EAAa,QAAQ,iBAAiB,aAAc;;;;;;;;;6BAStD,EAAM,MAAM,MAAM;;;;gCAIb,EAAU,QAAe,KAAA,IAAP,GAAkB;wBAC9C,MAAa;GAErB,AADA,EAAE,gBAAgB,GAClB,EAAK;EACP,EAAE;;8BAEe,EAAa,QAAQ,kBAAkB,eAAgB;;;;;oBAM5E,CAAI;EAEV,OAAO,CAAI;yDAC2C,EAAM,SAAS,QAAQ,QAAQ,SAAU;;;;cAK3F,EAAe,SAAS,EAAW,QAAQ,KAAK,CAAC,EAAU,QACvD,CAAI;sBAEA,MAAM,KACJ,EAAE,QAAQ,EAAW,MAAM,IAC1B,GAAG,MACF,CAAI;;;oCAGY,EAAE;qCAEd,YAAY,CAAC,EAAU,SAAS,MAAM,EAAY,QAAQ,sBAAsB,KAAK;6CAChE,OAAO,CAAC,EAAU,SAAS,MAAM,EAAY,KAAK,EAAE;wCACxD,CAAC,EAAU,SAAS,MAAM,EAAY,QAAQ,MAAM,KAAM;oCAC/D,eAAe,IAAI,IAAI;qCACtB,EAAK,CAAC,EAAE;kCACX,MAAqB,EAAuB,GAAG,CAAC,EAAE;;;;uCAI7C,EAAM,MAAM,MAAM;sCAClB,EAAa,QAAQ,WAAW,WAAY;uCAC3C,CAAC,EAAU,SAAS,MAAM,EAAY,QAAQ,MAAM,EAAG;uCACxD;GACb,IAAM,IAAW,EAAa,QAAQ,kBAAkB;GAExD,OAAO,sBAAsB,EAAM,oBAAoB,CAAC,SAAS,IAAK,6BAA6B,CAAC,EAAU,SAAS,MAAM,EAAY,SAAS,EAAM,SAAS,QAAQ,IAAW;EACtL,EAAE;8BAEV,EAAE;gBACF,EAAe;sBAEnB,CAAI,GAAG,IAAiB;;CAElC;CACA,QAAQ,CAAC,CAAe;AAC1B,CAAC"}
1
+ {"version":3,"file":"carousel.js","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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"}