@spark-ui/components 17.2.3 → 17.2.4-beta.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 (302) hide show
  1. package/dist/DialogContent.styles-BSxCCi-u.mjs +62 -0
  2. package/dist/DialogContent.styles-BSxCCi-u.mjs.map +1 -0
  3. package/dist/DialogContent.styles-CAhJtUud.js +2 -0
  4. package/dist/DialogContent.styles-CAhJtUud.js.map +1 -0
  5. package/dist/FormFieldRequiredIndicator-CtgkvPZo.js +2 -0
  6. package/dist/FormFieldRequiredIndicator-CtgkvPZo.js.map +1 -0
  7. package/dist/FormFieldRequiredIndicator-DOGQ_HxO.mjs +14 -0
  8. package/dist/FormFieldRequiredIndicator-DOGQ_HxO.mjs.map +1 -0
  9. package/dist/accordion/index.js +2 -2
  10. package/dist/accordion/index.js.map +1 -1
  11. package/dist/accordion/index.mjs +99 -161
  12. package/dist/accordion/index.mjs.map +1 -1
  13. package/dist/alert-dialog/index.js +2 -2
  14. package/dist/alert-dialog/index.js.map +1 -1
  15. package/dist/alert-dialog/index.mjs +169 -235
  16. package/dist/alert-dialog/index.mjs.map +1 -1
  17. package/dist/avatar/index.js +2 -2
  18. package/dist/avatar/index.js.map +1 -1
  19. package/dist/avatar/index.mjs +187 -224
  20. package/dist/avatar/index.mjs.map +1 -1
  21. package/dist/badge/index.js +2 -2
  22. package/dist/badge/index.js.map +1 -1
  23. package/dist/badge/index.mjs +115 -81
  24. package/dist/badge/index.mjs.map +1 -1
  25. package/dist/breadcrumb/index.js +2 -2
  26. package/dist/breadcrumb/index.js.map +1 -1
  27. package/dist/breadcrumb/index.mjs +73 -106
  28. package/dist/breadcrumb/index.mjs.map +1 -1
  29. package/dist/button/index.js +1 -2
  30. package/dist/button/index.mjs +2 -5
  31. package/dist/button-BTDRzvpB.js +2 -0
  32. package/dist/button-BTDRzvpB.js.map +1 -0
  33. package/dist/button-_YZ_4J42.mjs +643 -0
  34. package/dist/button-_YZ_4J42.mjs.map +1 -0
  35. package/dist/card/index.js +2 -2
  36. package/dist/card/index.js.map +1 -1
  37. package/dist/card/index.mjs +327 -394
  38. package/dist/card/index.mjs.map +1 -1
  39. package/dist/carousel/index.js +2 -2
  40. package/dist/carousel/index.js.map +1 -1
  41. package/dist/carousel/index.mjs +515 -618
  42. package/dist/carousel/index.mjs.map +1 -1
  43. package/dist/checkbox/index.js +2 -2
  44. package/dist/checkbox/index.js.map +1 -1
  45. package/dist/checkbox/index.mjs +213 -246
  46. package/dist/checkbox/index.mjs.map +1 -1
  47. package/dist/chip/index.js +2 -2
  48. package/dist/chip/index.js.map +1 -1
  49. package/dist/chip/index.mjs +601 -652
  50. package/dist/chip/index.mjs.map +1 -1
  51. package/dist/chunk-C91j1N6u.js +1 -0
  52. package/dist/circular-meter/index.js +2 -2
  53. package/dist/circular-meter/index.js.map +1 -1
  54. package/dist/circular-meter/index.mjs +354 -309
  55. package/dist/circular-meter/index.mjs.map +1 -1
  56. package/dist/collapsible/index.js +2 -2
  57. package/dist/collapsible/index.js.map +1 -1
  58. package/dist/collapsible/index.mjs +53 -53
  59. package/dist/collapsible/index.mjs.map +1 -1
  60. package/dist/combobox/index.js +2 -2
  61. package/dist/combobox/index.js.map +1 -1
  62. package/dist/combobox/index.mjs +721 -876
  63. package/dist/combobox/index.mjs.map +1 -1
  64. package/dist/dialog/index.js +2 -2
  65. package/dist/dialog/index.js.map +1 -1
  66. package/dist/dialog/index.mjs +181 -206
  67. package/dist/dialog/index.mjs.map +1 -1
  68. package/dist/divider/index.js +2 -2
  69. package/dist/divider/index.js.map +1 -1
  70. package/dist/divider/index.mjs +178 -183
  71. package/dist/divider/index.mjs.map +1 -1
  72. package/dist/drawer/index.js +2 -2
  73. package/dist/drawer/index.js.map +1 -1
  74. package/dist/drawer/index.mjs +277 -309
  75. package/dist/drawer/index.mjs.map +1 -1
  76. package/dist/dropdown/index.js +2 -2
  77. package/dist/dropdown/index.js.map +1 -1
  78. package/dist/dropdown/index.mjs +429 -492
  79. package/dist/dropdown/index.mjs.map +1 -1
  80. package/dist/file-upload/index.js +2 -2
  81. package/dist/file-upload/index.js.map +1 -1
  82. package/dist/file-upload/index.mjs +540 -677
  83. package/dist/file-upload/index.mjs.map +1 -1
  84. package/dist/form-field/index.js +1 -2
  85. package/dist/form-field/index.mjs +2 -284
  86. package/dist/form-field-B8QzM655.mjs +231 -0
  87. package/dist/form-field-B8QzM655.mjs.map +1 -0
  88. package/dist/form-field-Bu_0E9tb.js +2 -0
  89. package/dist/form-field-Bu_0E9tb.js.map +1 -0
  90. package/dist/icon/index.js +1 -2
  91. package/dist/icon/index.mjs +2 -5
  92. package/dist/icon-CRPcdgYp.js +2 -0
  93. package/dist/icon-CRPcdgYp.js.map +1 -0
  94. package/dist/icon-D05Uqh8_.mjs +41 -0
  95. package/dist/icon-D05Uqh8_.mjs.map +1 -0
  96. package/dist/icon-button/index.js +1 -2
  97. package/dist/icon-button/index.mjs +2 -5
  98. package/dist/icon-button-6p3O7NIm.mjs +28 -0
  99. package/dist/icon-button-6p3O7NIm.mjs.map +1 -0
  100. package/dist/icon-button-CykysbgJ.js +2 -0
  101. package/dist/icon-button-CykysbgJ.js.map +1 -0
  102. package/dist/input/index.js +1 -2
  103. package/dist/input/index.mjs +2 -455
  104. package/dist/input-CmYeHYWQ.mjs +355 -0
  105. package/dist/input-CmYeHYWQ.mjs.map +1 -0
  106. package/dist/input-DNr40G2Z.js +2 -0
  107. package/dist/input-DNr40G2Z.js.map +1 -0
  108. package/dist/input-otp/index.js +2 -2
  109. package/dist/input-otp/index.js.map +1 -1
  110. package/dist/input-otp/index.mjs +344 -407
  111. package/dist/input-otp/index.mjs.map +1 -1
  112. package/dist/kbd/index.js +2 -2
  113. package/dist/kbd/index.js.map +1 -1
  114. package/dist/kbd/index.mjs +12 -17
  115. package/dist/kbd/index.mjs.map +1 -1
  116. package/dist/label/index.js +1 -2
  117. package/dist/label/index.mjs +2 -40
  118. package/dist/label-BqRlrca0.mjs +31 -0
  119. package/dist/label-BqRlrca0.mjs.map +1 -0
  120. package/dist/label-DU0p0d-f.js +2 -0
  121. package/dist/label-DU0p0d-f.js.map +1 -0
  122. package/dist/link-box/index.js +2 -2
  123. package/dist/link-box/index.js.map +1 -1
  124. package/dist/link-box/index.mjs +36 -34
  125. package/dist/link-box/index.mjs.map +1 -1
  126. package/dist/meter/index.js +2 -2
  127. package/dist/meter/index.js.map +1 -1
  128. package/dist/meter/index.mjs +149 -171
  129. package/dist/meter/index.mjs.map +1 -1
  130. package/dist/pagination/index.js +2 -2
  131. package/dist/pagination/index.js.map +1 -1
  132. package/dist/pagination/index.mjs +253 -214
  133. package/dist/pagination/index.mjs.map +1 -1
  134. package/dist/popover/index.js +1 -2
  135. package/dist/popover/index.mjs +2 -239
  136. package/dist/popover-CxZAQmw6.mjs +211 -0
  137. package/dist/popover-CxZAQmw6.mjs.map +1 -0
  138. package/dist/popover-GOovJ27J.js +2 -0
  139. package/dist/popover-GOovJ27J.js.map +1 -0
  140. package/dist/portal/index.js +2 -2
  141. package/dist/portal/index.js.map +1 -1
  142. package/dist/portal/index.mjs +8 -7
  143. package/dist/portal/index.mjs.map +1 -1
  144. package/dist/progress/index.js +1 -2
  145. package/dist/progress/index.mjs +2 -178
  146. package/dist/progress-cEf3tFbn.mjs +132 -0
  147. package/dist/progress-cEf3tFbn.mjs.map +1 -0
  148. package/dist/progress-rJZcPJsZ.js +2 -0
  149. package/dist/progress-rJZcPJsZ.js.map +1 -0
  150. package/dist/progress-tracker/index.js +2 -2
  151. package/dist/progress-tracker/index.js.map +1 -1
  152. package/dist/progress-tracker/index.mjs +303 -380
  153. package/dist/progress-tracker/index.mjs.map +1 -1
  154. package/dist/radio-group/index.js +2 -2
  155. package/dist/radio-group/index.js.map +1 -1
  156. package/dist/radio-group/index.mjs +204 -213
  157. package/dist/radio-group/index.mjs.map +1 -1
  158. package/dist/rating/index.js +2 -2
  159. package/dist/rating/index.js.map +1 -1
  160. package/dist/rating/index.mjs +189 -244
  161. package/dist/rating/index.mjs.map +1 -1
  162. package/dist/rating-display/index.js +2 -2
  163. package/dist/rating-display/index.js.map +1 -1
  164. package/dist/rating-display/index.mjs +165 -166
  165. package/dist/rating-display/index.mjs.map +1 -1
  166. package/dist/scrolling-list/index.js +2 -2
  167. package/dist/scrolling-list/index.js.map +1 -1
  168. package/dist/scrolling-list/index.mjs +216 -273
  169. package/dist/scrolling-list/index.mjs.map +1 -1
  170. package/dist/segmented-control/index.js +2 -2
  171. package/dist/segmented-control/index.js.map +1 -1
  172. package/dist/segmented-control/index.mjs +146 -180
  173. package/dist/segmented-control/index.mjs.map +1 -1
  174. package/dist/segmented-gauge/index.js +2 -2
  175. package/dist/segmented-gauge/index.js.map +1 -1
  176. package/dist/segmented-gauge/index.mjs +146 -195
  177. package/dist/segmented-gauge/index.mjs.map +1 -1
  178. package/dist/select/index.js +2 -2
  179. package/dist/select/index.js.map +1 -1
  180. package/dist/select/index.mjs +279 -327
  181. package/dist/select/index.mjs.map +1 -1
  182. package/dist/skeleton/index.js +2 -2
  183. package/dist/skeleton/index.js.map +1 -1
  184. package/dist/skeleton/index.mjs +92 -114
  185. package/dist/skeleton/index.mjs.map +1 -1
  186. package/dist/slider/index.js +2 -2
  187. package/dist/slider/index.js.map +1 -1
  188. package/dist/slider/index.mjs +259 -326
  189. package/dist/slider/index.mjs.map +1 -1
  190. package/dist/slot/index.js +2 -2
  191. package/dist/slot/index.js.map +1 -1
  192. package/dist/slot/index.mjs +12 -7
  193. package/dist/slot/index.mjs.map +1 -1
  194. package/dist/snackbar/index.js +2 -2
  195. package/dist/snackbar/index.js.map +1 -1
  196. package/dist/snackbar/index.mjs +404 -529
  197. package/dist/snackbar/index.mjs.map +1 -1
  198. package/dist/spinner/index.js +1 -2
  199. package/dist/spinner/index.mjs +2 -5
  200. package/dist/spinner-DFUoYvmm.js +2 -0
  201. package/dist/spinner-DFUoYvmm.js.map +1 -0
  202. package/dist/spinner-DULLiM6a.mjs +56 -0
  203. package/dist/spinner-DULLiM6a.mjs.map +1 -0
  204. package/dist/src/avatar/index.d.mts +2 -2
  205. package/dist/src/avatar/index.d.ts +2 -2
  206. package/dist/src/file-upload/index.d.mts +1 -1
  207. package/dist/src/file-upload/index.d.ts +1 -1
  208. package/dist/stepper/index.js +2 -2
  209. package/dist/stepper/index.js.map +1 -1
  210. package/dist/stepper/index.mjs +139 -176
  211. package/dist/stepper/index.mjs.map +1 -1
  212. package/dist/switch/index.js +2 -2
  213. package/dist/switch/index.js.map +1 -1
  214. package/dist/switch/index.mjs +194 -197
  215. package/dist/switch/index.mjs.map +1 -1
  216. package/dist/tabs/index.js +2 -2
  217. package/dist/tabs/index.js.map +1 -1
  218. package/dist/tabs/index.mjs +337 -389
  219. package/dist/tabs/index.mjs.map +1 -1
  220. package/dist/tag/index.js +2 -2
  221. package/dist/tag/index.js.map +1 -1
  222. package/dist/tag/index.mjs +192 -211
  223. package/dist/tag/index.mjs.map +1 -1
  224. package/dist/text-link/index.js +2 -2
  225. package/dist/text-link/index.js.map +1 -1
  226. package/dist/text-link/index.mjs +44 -5
  227. package/dist/text-link/index.mjs.map +1 -1
  228. package/dist/textarea/index.js +2 -2
  229. package/dist/textarea/index.js.map +1 -1
  230. package/dist/textarea/index.mjs +51 -50
  231. package/dist/textarea/index.mjs.map +1 -1
  232. package/dist/toast/index.js +2 -2
  233. package/dist/toast/index.js.map +1 -1
  234. package/dist/toast/index.mjs +314 -367
  235. package/dist/toast/index.mjs.map +1 -1
  236. package/dist/useRenderSlot-DP4fYerF.mjs +11 -0
  237. package/dist/useRenderSlot-DP4fYerF.mjs.map +1 -0
  238. package/dist/useRenderSlot-Xxf_s88b.js +2 -0
  239. package/dist/useRenderSlot-Xxf_s88b.js.map +1 -0
  240. package/dist/visually-hidden/index.js +2 -2
  241. package/dist/visually-hidden/index.js.map +1 -1
  242. package/dist/visually-hidden/index.mjs +25 -5
  243. package/dist/visually-hidden/index.mjs.map +1 -1
  244. package/package.json +4 -4
  245. package/dist/Button-1M9DcZl0.mjs +0 -704
  246. package/dist/Button-1M9DcZl0.mjs.map +0 -1
  247. package/dist/Button-FZceRWG2.js +0 -2
  248. package/dist/Button-FZceRWG2.js.map +0 -1
  249. package/dist/DialogContent.styles-CziMQtYr.js +0 -2
  250. package/dist/DialogContent.styles-CziMQtYr.js.map +0 -1
  251. package/dist/DialogContent.styles-Du7_Dkde.mjs +0 -60
  252. package/dist/DialogContent.styles-Du7_Dkde.mjs.map +0 -1
  253. package/dist/FormFieldRequiredIndicator-CHfcoT2y.js +0 -2
  254. package/dist/FormFieldRequiredIndicator-CHfcoT2y.js.map +0 -1
  255. package/dist/FormFieldRequiredIndicator-DTnCGiX2.mjs +0 -13
  256. package/dist/FormFieldRequiredIndicator-DTnCGiX2.mjs.map +0 -1
  257. package/dist/Icon-BO327oHU.mjs +0 -57
  258. package/dist/Icon-BO327oHU.mjs.map +0 -1
  259. package/dist/Icon-C-cNTnzd.js +0 -2
  260. package/dist/Icon-C-cNTnzd.js.map +0 -1
  261. package/dist/IconButton-BR1bJSQA.js +0 -2
  262. package/dist/IconButton-BR1bJSQA.js.map +0 -1
  263. package/dist/IconButton-DdB3Pq13.mjs +0 -43
  264. package/dist/IconButton-DdB3Pq13.mjs.map +0 -1
  265. package/dist/Slot-DLY1rJrG.mjs +0 -14
  266. package/dist/Slot-DLY1rJrG.mjs.map +0 -1
  267. package/dist/Slot-DQ8z2zsy.js +0 -2
  268. package/dist/Slot-DQ8z2zsy.js.map +0 -1
  269. package/dist/Spinner-Br4Rp9V2.js +0 -2
  270. package/dist/Spinner-Br4Rp9V2.js.map +0 -1
  271. package/dist/Spinner-Co3AjkQV.mjs +0 -68
  272. package/dist/Spinner-Co3AjkQV.mjs.map +0 -1
  273. package/dist/TextLink-5MvP0P8D.js +0 -2
  274. package/dist/TextLink-5MvP0P8D.js.map +0 -1
  275. package/dist/TextLink-Cc_LeVcx.mjs +0 -57
  276. package/dist/TextLink-Cc_LeVcx.mjs.map +0 -1
  277. package/dist/VisuallyHidden-CB6Nx76j.js +0 -2
  278. package/dist/VisuallyHidden-CB6Nx76j.js.map +0 -1
  279. package/dist/VisuallyHidden-DjlV0-CW.mjs +0 -28
  280. package/dist/VisuallyHidden-DjlV0-CW.mjs.map +0 -1
  281. package/dist/button/index.js.map +0 -1
  282. package/dist/button/index.mjs.map +0 -1
  283. package/dist/form-field/index.js.map +0 -1
  284. package/dist/form-field/index.mjs.map +0 -1
  285. package/dist/icon/index.js.map +0 -1
  286. package/dist/icon/index.mjs.map +0 -1
  287. package/dist/icon-button/index.js.map +0 -1
  288. package/dist/icon-button/index.mjs.map +0 -1
  289. package/dist/input/index.js.map +0 -1
  290. package/dist/input/index.mjs.map +0 -1
  291. package/dist/label/index.js.map +0 -1
  292. package/dist/label/index.mjs.map +0 -1
  293. package/dist/popover/index.js.map +0 -1
  294. package/dist/popover/index.mjs.map +0 -1
  295. package/dist/progress/index.js.map +0 -1
  296. package/dist/progress/index.mjs.map +0 -1
  297. package/dist/spinner/index.js.map +0 -1
  298. package/dist/spinner/index.mjs.map +0 -1
  299. package/dist/useRenderSlot-Bta2kdp4.mjs +0 -10
  300. package/dist/useRenderSlot-Bta2kdp4.mjs.map +0 -1
  301. package/dist/useRenderSlot-DATwjgpo.js +0 -2
  302. package/dist/useRenderSlot-DATwjgpo.js.map +0 -1
@@ -1,639 +1,536 @@
1
- import { jsx as f, Fragment as it } from "react/jsx-runtime";
2
- import { cx as x } from "class-variance-authority";
3
- import { useRef as C, useCallback as S, useEffect as k, useLayoutEffect as R, useState as L, useMemo as ct, useId as lt, createContext as ut, useContext as dt, Children as pt, isValidElement as ft, cloneElement as gt } from "react";
4
- import { ArrowVerticalRight as mt } from "@spark-ui/icons/ArrowVerticalRight";
5
- import { I as G } from "../Icon-BO327oHU.mjs";
6
- import { I as J } from "../IconButton-DdB3Pq13.mjs";
7
- import { ArrowVerticalLeft as ht } from "@spark-ui/icons/ArrowVerticalLeft";
8
- function bt(t) {
9
- const e = C(/* @__PURE__ */ new Map()), r = C(null), n = C(/* @__PURE__ */ new Map()), o = S(() => (c) => {
10
- c.forEach((u) => {
11
- const g = u.isIntersecting, y = u.target;
12
- e.current.set(y, g);
13
- const m = n.current.get(y);
14
- m && m(g);
15
- });
16
- }, []), s = S(() => {
17
- if (r.current)
18
- return r.current;
19
- const c = t.current;
20
- if (!c) return null;
21
- const u = new IntersectionObserver(o(), {
22
- root: c,
23
- threshold: 0.2
24
- });
25
- return r.current = u, u;
26
- }, [t, o]);
27
- k(() => {
28
- const c = s(), u = e.current, g = n.current;
29
- return () => {
30
- c && (c.disconnect(), u.clear(), g.clear(), r.current = null);
31
- };
32
- }, [s]);
33
- const a = S(
34
- (c, u) => {
35
- if (!c) return;
36
- const g = s();
37
- if (!g) {
38
- setTimeout(() => a(c, u), 0);
39
- return;
40
- }
41
- const y = e.current.get(c) ?? !0;
42
- e.current.set(c, y), n.current.set(c, u), g.observe(c), u(y);
43
- },
44
- [s]
45
- ), i = S((c) => {
46
- if (!c) return;
47
- const u = r.current;
48
- u && u.unobserve(c), e.current.delete(c), n.current.delete(c);
49
- }, []), p = S((c) => c ? e.current.get(c) ?? !0 : !0, []);
50
- return {
51
- registerSlide: a,
52
- unregisterSlide: i,
53
- isSlideVisible: p
54
- };
1
+ import { t as e } from "../icon-D05Uqh8_.mjs";
2
+ import { t } from "../icon-button-6p3O7NIm.mjs";
3
+ import { cx as n } from "class-variance-authority";
4
+ import { Children as r, cloneElement as i, createContext as a, isValidElement as o, useCallback as s, useContext as c, useEffect as l, useId as u, useLayoutEffect as d, useMemo as f, useRef as p, useState as m } from "react";
5
+ import { Fragment as h, jsx as g } from "react/jsx-runtime";
6
+ import { ArrowVerticalRight as _ } from "@spark-ui/icons/ArrowVerticalRight";
7
+ import { ArrowVerticalLeft as v } from "@spark-ui/icons/ArrowVerticalLeft";
8
+ //#region src/carousel/useCarouselVisibility.ts
9
+ function y(e) {
10
+ let t = p(/* @__PURE__ */ new Map()), n = p(null), r = p(/* @__PURE__ */ new Map()), i = s(() => (e) => {
11
+ e.forEach((e) => {
12
+ let n = e.isIntersecting, i = e.target;
13
+ t.current.set(i, n);
14
+ let a = r.current.get(i);
15
+ a && a(n);
16
+ });
17
+ }, []), a = s(() => {
18
+ if (n.current) return n.current;
19
+ let t = e.current;
20
+ if (!t) return null;
21
+ let r = new IntersectionObserver(i(), {
22
+ root: t,
23
+ threshold: .2
24
+ });
25
+ return n.current = r, r;
26
+ }, [e, i]);
27
+ l(() => {
28
+ let e = a(), i = t.current, o = r.current;
29
+ return () => {
30
+ e && (e.disconnect(), i.clear(), o.clear(), n.current = null);
31
+ };
32
+ }, [a]);
33
+ let o = s((e, n) => {
34
+ if (!e) return;
35
+ let i = a();
36
+ if (!i) {
37
+ setTimeout(() => o(e, n), 0);
38
+ return;
39
+ }
40
+ let s = t.current.get(e) ?? !0;
41
+ t.current.set(e, s), r.current.set(e, n), i.observe(e), n(s);
42
+ }, [a]);
43
+ return {
44
+ registerSlide: o,
45
+ unregisterSlide: s((e) => {
46
+ if (!e) return;
47
+ let i = n.current;
48
+ i && i.unobserve(e), t.current.delete(e), r.current.delete(e);
49
+ }, []),
50
+ isSlideVisible: s((e) => e ? t.current.get(e) ?? !0 : !0, [])
51
+ };
55
52
  }
56
- function vt(t) {
57
- const e = C(() => {
58
- throw new Error("Cannot call an event handler while rendering.");
59
- });
60
- return R(() => {
61
- e.current = t;
62
- }), S((...r) => e.current?.(...r), []);
53
+ //#endregion
54
+ //#region src/carousel/useEvent.ts
55
+ function b(e) {
56
+ let t = p(() => {
57
+ throw Error("Cannot call an event handler while rendering.");
58
+ });
59
+ return d(() => {
60
+ t.current = e;
61
+ }), s((...e) => t.current?.(...e), []);
63
62
  }
64
- const Ct = () => {
65
- const t = C(!1);
66
- return k(() => (t.current = !0, () => {
67
- t.current = !1;
68
- }), []), t;
63
+ //#endregion
64
+ //#region src/carousel/useIsMounted.ts
65
+ var x = () => {
66
+ let e = p(!1);
67
+ return l(() => (e.current = !0, () => {
68
+ e.current = !1;
69
+ }), []), e;
69
70
  };
70
- function St(t, e) {
71
- const r = C(0), n = C(null);
72
- k(() => {
73
- const o = t.current;
74
- if (!o) return;
75
- const s = "onscrollend" in window, a = () => {
76
- e();
77
- }, i = () => {
78
- n.current && clearTimeout(n.current), t.current && (r.current = t.current.scrollLeft, n.current = setTimeout(() => {
79
- t.current && a();
80
- }, 150));
81
- };
82
- return s ? o.addEventListener("scrollend", a) : o.addEventListener("scroll", i), () => {
83
- n.current && clearTimeout(n.current), s ? o.removeEventListener("scrollend", a) : o.removeEventListener("scroll", i);
84
- };
85
- }, [e, t]);
71
+ //#endregion
72
+ //#region src/carousel/useScrollEnd.ts
73
+ function S(e, t) {
74
+ let n = p(0), r = p(null);
75
+ l(() => {
76
+ let i = e.current;
77
+ if (!i) return;
78
+ let a = "onscrollend" in window, o = () => {
79
+ t();
80
+ }, s = () => {
81
+ r.current && clearTimeout(r.current), e.current && (n.current = e.current.scrollLeft, r.current = setTimeout(() => {
82
+ e.current && o();
83
+ }, 150));
84
+ };
85
+ return a ? i.addEventListener("scrollend", o) : i.addEventListener("scroll", s), () => {
86
+ r.current && clearTimeout(r.current), a ? i.removeEventListener("scrollend", o) : i.removeEventListener("scroll", s);
87
+ };
88
+ }, [t, e]);
86
89
  }
87
- function yt(t, e) {
88
- R(() => {
89
- const r = t.current;
90
- if (!r) return;
91
- const n = new ResizeObserver((o) => {
92
- for (const s of o)
93
- e(s.contentRect.width);
94
- });
95
- return n.observe(r), () => n.disconnect();
96
- }, [t, e]);
90
+ //#endregion
91
+ //#region src/carousel/useResizeObserver.ts
92
+ function C(e, t) {
93
+ d(() => {
94
+ let n = e.current;
95
+ if (!n) return;
96
+ let r = new ResizeObserver((e) => {
97
+ for (let n of e) t(n.contentRect.width);
98
+ });
99
+ return r.observe(n), () => r.disconnect();
100
+ }, [e, t]);
97
101
  }
98
- function wt({
99
- totalSlides: t,
100
- slidesPerMove: e,
101
- slidesPerPage: r
102
- }) {
103
- const n = e === "auto" ? r : e, o = [], s = Math.floor((t - r) / n) * n;
104
- for (let a = 0; a <= s; a += n)
105
- o.push(a);
106
- return o[o.length - 1] !== t - r && o.push(t - r), o;
102
+ //#endregion
103
+ //#region src/carousel/utils.ts
104
+ function w({ totalSlides: e, slidesPerMove: t, slidesPerPage: n }) {
105
+ let r = t === "auto" ? n : t, i = [], a = Math.floor((e - n) / r) * r;
106
+ for (let e = 0; e <= a; e += r) i.push(e);
107
+ return i[i.length - 1] !== e - n && i.push(e - n), i;
107
108
  }
108
- function W(t) {
109
- return t ? Array.from(t.querySelectorAll('[data-part="item"]')) : [];
109
+ function T(e) {
110
+ return e ? Array.from(e.querySelectorAll("[data-part=\"item\"]")) : [];
110
111
  }
111
- function q(t, {
112
- container: e,
113
- slidesPerMove: r,
114
- slidesPerPage: n
115
- }) {
116
- return wt({
117
- totalSlides: W(e).length,
118
- slidesPerPage: n,
119
- slidesPerMove: r
120
- }).includes(t);
112
+ function E(e, { container: t, slidesPerMove: n, slidesPerPage: r }) {
113
+ return w({
114
+ totalSlides: T(t).length,
115
+ slidesPerPage: r,
116
+ slidesPerMove: n
117
+ }).includes(e);
121
118
  }
122
- function K({
123
- container: t,
124
- slidesPerMove: e,
125
- slidesPerPage: r
126
- }) {
127
- return t ? W(t).filter((n, o) => q(o, {
128
- slidesPerMove: e,
129
- slidesPerPage: r,
130
- container: t
131
- })).map((n) => n.offsetLeft) : [];
119
+ function D({ container: e, slidesPerMove: t, slidesPerPage: n }) {
120
+ return e ? T(e).filter((r, i) => E(i, {
121
+ slidesPerMove: t,
122
+ slidesPerPage: n,
123
+ container: e
124
+ })).map((e) => e.offsetLeft) : [];
132
125
  }
133
- function Nt({
134
- dotIndex: t,
135
- pageState: e,
136
- totalPages: r,
137
- maxDots: n = 5
138
- }) {
139
- if (r <= n)
140
- return t === e ? "active" : "idle";
141
- if (e <= Math.floor(n / 2))
142
- return t > n - 1 ? "hidden" : t === e ? "active" : t === n - 1 ? "edge" : "idle";
143
- if (e >= r - Math.ceil(n / 2)) {
144
- const a = r - n;
145
- return t < a ? "hidden" : t === e ? "active" : t === a ? "edge" : "idle";
146
- }
147
- const o = e - Math.floor(n / 2), s = e + Math.floor(n / 2);
148
- return t < o || t > s ? "hidden" : t === e ? "active" : t === o || t === s ? "edge" : "idle";
126
+ function O({ dotIndex: e, pageState: t, totalPages: n, maxDots: r = 5 }) {
127
+ if (n <= r) return e === t ? "active" : "idle";
128
+ if (t <= Math.floor(r / 2)) return e > r - 1 ? "hidden" : e === t ? "active" : e === r - 1 ? "edge" : "idle";
129
+ if (t >= n - Math.ceil(r / 2)) {
130
+ let i = n - r;
131
+ return e < i ? "hidden" : e === t ? "active" : e === i ? "edge" : "idle";
132
+ }
133
+ let i = t - Math.floor(r / 2), a = t + Math.floor(r / 2);
134
+ return e < i || e > a ? "hidden" : e === t ? "active" : e === i || e === a ? "edge" : "idle";
149
135
  }
150
- function Pt(t = [], {
151
- carouselRef: e,
152
- slidesPerMove: r,
153
- slidesPerPage: n
154
- }) {
155
- const [o, s] = L(t), a = ct(() => o, [o]);
156
- return yt(e, () => {
157
- const i = K({
158
- slidesPerMove: r,
159
- slidesPerPage: n,
160
- container: e.current
161
- });
162
- JSON.stringify(o) !== JSON.stringify(i) && s(i);
163
- }), [a, s];
136
+ //#endregion
137
+ //#region src/carousel/useSnapPoints.ts
138
+ function k(e = [], { carouselRef: t, slidesPerMove: n, slidesPerPage: r }) {
139
+ let [i, a] = m(e), o = f(() => i, [i]);
140
+ return C(t, () => {
141
+ let e = D({
142
+ slidesPerMove: n,
143
+ slidesPerPage: r,
144
+ container: t.current
145
+ });
146
+ JSON.stringify(i) !== JSON.stringify(e) && a(e);
147
+ }), [o, a];
164
148
  }
165
- const N = "carousel", I = "ltr", xt = ({
166
- defaultPage: t,
167
- gap: e = 16,
168
- snapType: r = "mandatory",
169
- snapStop: n = "always",
170
- scrollPadding: o = 0,
171
- slidesPerPage: s = 1,
172
- slidesPerMove: a = "auto",
173
- scrollBehavior: i = "smooth",
174
- loop: p = !1,
175
- pagePickerInset: c = !1,
176
- maxDots: u = 5,
177
- // state control
178
- page: g,
179
- onPageChange: y
180
- }) => {
181
- const m = lt(), [d, A] = L(t || g || 0), v = C(null), j = C([]), _ = Ct().current, F = vt(y), { registerSlide: rt, unregisterSlide: nt, isSlideVisible: ot } = bt(v), [h] = Pt([], {
182
- carouselRef: v,
183
- slidesPerMove: a,
184
- slidesPerPage: s
185
- }), z = C(p || d > 0), V = C(p || d < h.length - 1);
186
- z.current = p || d > 0, V.current = p || d < h.length - 1;
187
- const M = S(
188
- (l) => {
189
- l !== d && (A(l), F?.(l));
190
- },
191
- [F, d]
192
- ), w = S(
193
- (l, b) => {
194
- v.current && (v.current.scrollTo({
195
- left: h[l],
196
- behavior: b === "instant" ? "auto" : "smooth"
197
- }), M(l));
198
- },
199
- [M, h]
200
- ), $ = S(
201
- (l) => {
202
- if (z) {
203
- const b = p && d === 0 ? h.length - 1 : Math.max(d - 1, 0);
204
- w(b, i), l?.(b);
205
- }
206
- },
207
- [p, h, d, i, w]
208
- ), O = S(
209
- (l) => {
210
- if (V) {
211
- const b = p && d === h.length - 1 ? 0 : Math.min(d + 1, h.length - 1);
212
- w(b, i), l?.(b);
213
- }
214
- },
215
- [p, h, d, i, w]
216
- );
217
- k(() => {
218
- g != null && w(g, i);
219
- }, [g, i, w]), R(() => {
220
- if (t != null && !_ && v.current) {
221
- const l = K({
222
- container: v.current,
223
- slidesPerMove: a,
224
- slidesPerPage: s
225
- });
226
- v.current.scrollTo({
227
- left: l[t],
228
- behavior: "instant"
229
- });
230
- }
231
- }, [t, _, a, s]);
232
- const st = S(() => {
233
- if (!v.current || h.length === 0) return;
234
- const { scrollLeft: l } = v.current, b = h.map((T) => Math.abs(l - T)), E = b.indexOf(Math.min(...b));
235
- E !== -1 && M(E);
236
- }, [h, M]);
237
- return St(v, st), {
238
- ref: v,
239
- pageIndicatorsRefs: j,
240
- // props
241
- gap: e,
242
- snapType: r,
243
- snapStop: n,
244
- scrollPadding: o,
245
- slidesPerPage: s,
246
- slidesPerMove: a,
247
- scrollBehavior: i,
248
- loop: p,
249
- pagePickerInset: c,
250
- maxDots: u,
251
- // computed state
252
- page: d,
253
- pageSnapPoints: h,
254
- canScrollNext: V.current,
255
- canScrollPrev: z.current,
256
- scrollTo: w,
257
- scrollPrev: $,
258
- scrollNext: O,
259
- // visibility management
260
- registerSlide: rt,
261
- unregisterSlide: nt,
262
- isSlideVisible: ot,
263
- // anatomy
264
- getRootProps: () => ({
265
- id: `carousel::${m}:`,
266
- role: "region",
267
- "aria-roledescription": "carousel",
268
- "data-scope": N,
269
- "data-part": "root",
270
- "data-orientation": "horizontal",
271
- dir: I,
272
- style: {
273
- "--slides-per-page": s,
274
- "--slide-spacing": `${e}px`,
275
- "--slide-item-size": "calc(100% / var(--slides-per-page) - var(--slide-spacing) * (var(--slides-per-page) - 1) / var(--slides-per-page))"
276
- }
277
- }),
278
- getControlProps: () => ({
279
- "data-scope": N,
280
- "data-part": "control",
281
- "data-orientation": "horizontal"
282
- }),
283
- getPrevTriggerProps: () => ({
284
- id: `carousel::${m}::prev-trigger`,
285
- "aria-controls": `carousel::${m}::item-group`,
286
- "data-scope": N,
287
- "data-part": "prev-trigger",
288
- "data-orientation": "horizontal",
289
- type: "button",
290
- dir: I,
291
- disabled: !z.current,
292
- onClick: () => $()
293
- }),
294
- getNextTriggerProps: () => ({
295
- id: `carousel::${m}::next-trigger`,
296
- "aria-controls": `carousel::${m}::item-group`,
297
- "data-scope": N,
298
- "data-part": "next-trigger",
299
- "data-orientation": "horizontal",
300
- type: "button",
301
- dir: I,
302
- disabled: !V.current,
303
- onClick: () => O()
304
- }),
305
- getSlidesContainerProps: () => ({
306
- id: `carousel::${m}::item-group`,
307
- /**
308
- * The carousel pattern was originally designed for a single slide.
309
- * When there is more than one slide, the aria-live region is set to off to avoid announcing the whole list of slides.
310
- * This is not ideal but we keep it for backwards compatibility.
311
- *
312
- * @see https://www.w3.org/WAI/ARIA/apg/patterns/carousel/#wai-aria-attributes
313
- */
314
- "aria-live": s > 1 ? "off" : "polite",
315
- "data-scope": N,
316
- "data-part": "item-group",
317
- "data-orientation": "horizontal",
318
- dir: I,
319
- tabIndex: 0,
320
- style: {
321
- display: "grid",
322
- gap: "var(--slide-spacing)",
323
- scrollSnapType: `x ${r}`,
324
- gridAutoFlow: "column",
325
- scrollbarWidth: "none",
326
- gridAutoColumns: "var(--slide-item-size)",
327
- overflowX: "auto"
328
- },
329
- ref: v
330
- }),
331
- getSlideProps: ({ index: l }) => {
332
- const b = q(l, {
333
- container: v.current,
334
- slidesPerMove: a,
335
- slidesPerPage: s
336
- });
337
- return {
338
- id: `carousel::${m}::item:${l}`,
339
- role: "group",
340
- "aria-roledescription": "slide",
341
- "data-scope": N,
342
- "data-part": "item",
343
- "data-index": l,
344
- "data-orientation": "horizontal",
345
- dir: I,
346
- style: {
347
- ...b && {
348
- scrollSnapAlign: "start",
349
- scrollSnapStop: n
350
- }
351
- }
352
- };
353
- },
354
- getIndicatorGroupProps: () => ({
355
- role: "radiogroup",
356
- id: `carousel::${m}::indicator-group`,
357
- "data-scope": N,
358
- "data-part": "indicator-group",
359
- "data-orientation": "horizontal",
360
- dir: I
361
- }),
362
- getIndicatorProps: ({ index: l }) => {
363
- const b = Nt({
364
- dotIndex: l,
365
- pageState: d,
366
- totalPages: h.length,
367
- maxDots: u
368
- });
369
- return {
370
- role: "radio",
371
- id: `carousel::${m}::indicator:${l}`,
372
- "aria-checked": l === d,
373
- "data-scope": N,
374
- "data-part": "indicator",
375
- "data-orientation": "horizontal",
376
- "data-index": l,
377
- "data-state": b,
378
- tabIndex: l === d ? 0 : -1,
379
- onClick: () => {
380
- w(l, i);
381
- },
382
- onKeyDown: (E) => {
383
- const T = (at) => {
384
- j.current[at]?.focus();
385
- };
386
- E.key === "ArrowRight" && V ? O(T) : E.key === "ArrowLeft" && z && $(T);
387
- }
388
- };
389
- }
390
- };
391
- }, X = ut(null), B = ({
392
- className: t,
393
- snapType: e = "mandatory",
394
- snapStop: r = "always",
395
- scrollBehavior: n = "smooth",
396
- slidesPerMove: o = "auto",
397
- pagePickerInset: s = !1,
398
- slidesPerPage: a = 1,
399
- loop: i = !1,
400
- children: p,
401
- gap: c = 16,
402
- defaultPage: u,
403
- page: g,
404
- onPageChange: y,
405
- maxDots: m = 5,
406
- ...d
407
- }) => {
408
- const A = xt({
409
- defaultPage: u,
410
- slidesPerPage: a,
411
- slidesPerMove: o,
412
- loop: i,
413
- gap: c,
414
- scrollBehavior: n,
415
- snapStop: r,
416
- snapType: e,
417
- page: g,
418
- pagePickerInset: s,
419
- onPageChange: y,
420
- maxDots: m
421
- });
422
- return /* @__PURE__ */ f(
423
- X.Provider,
424
- {
425
- value: {
426
- ...A,
427
- scrollBehavior: n
428
- },
429
- children: /* @__PURE__ */ f(
430
- "div",
431
- {
432
- "data-spark-component": "carousel",
433
- className: x("gap-lg relative box-border flex flex-col", t),
434
- ...A.getRootProps(),
435
- ...d,
436
- children: p
437
- }
438
- )
439
- }
440
- );
149
+ //#endregion
150
+ //#region src/carousel/useCarousel.ts
151
+ var A = "carousel", j = "ltr", M = ({ defaultPage: e, gap: t = 16, snapType: n = "mandatory", snapStop: r = "always", scrollPadding: i = 0, slidesPerPage: a = 1, slidesPerMove: o = "auto", scrollBehavior: c = "smooth", loop: f = !1, pagePickerInset: h = !1, maxDots: g = 5, page: _, onPageChange: v }) => {
152
+ let C = u(), [w, T] = m(e || _ || 0), M = p(null), N = p([]), P = x().current, F = b(v), { registerSlide: I, unregisterSlide: L, isSlideVisible: R } = y(M), [z] = k([], {
153
+ carouselRef: M,
154
+ slidesPerMove: o,
155
+ slidesPerPage: a
156
+ }), B = p(f || w > 0), V = p(f || w < z.length - 1);
157
+ B.current = f || w > 0, V.current = f || w < z.length - 1;
158
+ let H = s((e) => {
159
+ e !== w && (T(e), F?.(e));
160
+ }, [F, w]), U = s((e, t) => {
161
+ M.current && (M.current.scrollTo({
162
+ left: z[e],
163
+ behavior: t === "instant" ? "auto" : "smooth"
164
+ }), H(e));
165
+ }, [H, z]), W = s((e) => {
166
+ if (B) {
167
+ let t = f && w === 0 ? z.length - 1 : Math.max(w - 1, 0);
168
+ U(t, c), e?.(t);
169
+ }
170
+ }, [
171
+ f,
172
+ z,
173
+ w,
174
+ c,
175
+ U
176
+ ]), G = s((e) => {
177
+ if (V) {
178
+ let t = f && w === z.length - 1 ? 0 : Math.min(w + 1, z.length - 1);
179
+ U(t, c), e?.(t);
180
+ }
181
+ }, [
182
+ f,
183
+ z,
184
+ w,
185
+ c,
186
+ U
187
+ ]);
188
+ return l(() => {
189
+ _ != null && U(_, c);
190
+ }, [
191
+ _,
192
+ c,
193
+ U
194
+ ]), d(() => {
195
+ if (e != null && !P && M.current) {
196
+ let t = D({
197
+ container: M.current,
198
+ slidesPerMove: o,
199
+ slidesPerPage: a
200
+ });
201
+ M.current.scrollTo({
202
+ left: t[e],
203
+ behavior: "instant"
204
+ });
205
+ }
206
+ }, [
207
+ e,
208
+ P,
209
+ o,
210
+ a
211
+ ]), S(M, s(() => {
212
+ if (!M.current || z.length === 0) return;
213
+ let { scrollLeft: e } = M.current, t = z.map((t) => Math.abs(e - t)), n = t.indexOf(Math.min(...t));
214
+ n !== -1 && H(n);
215
+ }, [z, H])), {
216
+ ref: M,
217
+ pageIndicatorsRefs: N,
218
+ gap: t,
219
+ snapType: n,
220
+ snapStop: r,
221
+ scrollPadding: i,
222
+ slidesPerPage: a,
223
+ slidesPerMove: o,
224
+ scrollBehavior: c,
225
+ loop: f,
226
+ pagePickerInset: h,
227
+ maxDots: g,
228
+ page: w,
229
+ pageSnapPoints: z,
230
+ canScrollNext: V.current,
231
+ canScrollPrev: B.current,
232
+ scrollTo: U,
233
+ scrollPrev: W,
234
+ scrollNext: G,
235
+ registerSlide: I,
236
+ unregisterSlide: L,
237
+ isSlideVisible: R,
238
+ getRootProps: () => ({
239
+ id: `carousel::${C}:`,
240
+ role: "region",
241
+ "aria-roledescription": "carousel",
242
+ "data-scope": A,
243
+ "data-part": "root",
244
+ "data-orientation": "horizontal",
245
+ dir: j,
246
+ style: {
247
+ "--slides-per-page": a,
248
+ "--slide-spacing": `${t}px`,
249
+ "--slide-item-size": "calc(100% / var(--slides-per-page) - var(--slide-spacing) * (var(--slides-per-page) - 1) / var(--slides-per-page))"
250
+ }
251
+ }),
252
+ getControlProps: () => ({
253
+ "data-scope": A,
254
+ "data-part": "control",
255
+ "data-orientation": "horizontal"
256
+ }),
257
+ getPrevTriggerProps: () => ({
258
+ id: `carousel::${C}::prev-trigger`,
259
+ "aria-controls": `carousel::${C}::item-group`,
260
+ "data-scope": A,
261
+ "data-part": "prev-trigger",
262
+ "data-orientation": "horizontal",
263
+ type: "button",
264
+ dir: j,
265
+ disabled: !B.current,
266
+ onClick: () => W()
267
+ }),
268
+ getNextTriggerProps: () => ({
269
+ id: `carousel::${C}::next-trigger`,
270
+ "aria-controls": `carousel::${C}::item-group`,
271
+ "data-scope": A,
272
+ "data-part": "next-trigger",
273
+ "data-orientation": "horizontal",
274
+ type: "button",
275
+ dir: j,
276
+ disabled: !V.current,
277
+ onClick: () => G()
278
+ }),
279
+ getSlidesContainerProps: () => ({
280
+ id: `carousel::${C}::item-group`,
281
+ "aria-live": a > 1 ? "off" : "polite",
282
+ "data-scope": A,
283
+ "data-part": "item-group",
284
+ "data-orientation": "horizontal",
285
+ dir: j,
286
+ tabIndex: 0,
287
+ style: {
288
+ display: "grid",
289
+ gap: "var(--slide-spacing)",
290
+ scrollSnapType: `x ${n}`,
291
+ gridAutoFlow: "column",
292
+ scrollbarWidth: "none",
293
+ gridAutoColumns: "var(--slide-item-size)",
294
+ overflowX: "auto"
295
+ },
296
+ ref: M
297
+ }),
298
+ getSlideProps: ({ index: e }) => {
299
+ let t = E(e, {
300
+ container: M.current,
301
+ slidesPerMove: o,
302
+ slidesPerPage: a
303
+ });
304
+ return {
305
+ id: `carousel::${C}::item:${e}`,
306
+ role: "group",
307
+ "aria-roledescription": "slide",
308
+ "data-scope": A,
309
+ "data-part": "item",
310
+ "data-index": e,
311
+ "data-orientation": "horizontal",
312
+ dir: j,
313
+ style: { ...t && {
314
+ scrollSnapAlign: "start",
315
+ scrollSnapStop: r
316
+ } }
317
+ };
318
+ },
319
+ getIndicatorGroupProps: () => ({
320
+ role: "radiogroup",
321
+ id: `carousel::${C}::indicator-group`,
322
+ "data-scope": A,
323
+ "data-part": "indicator-group",
324
+ "data-orientation": "horizontal",
325
+ dir: j
326
+ }),
327
+ getIndicatorProps: ({ index: e }) => {
328
+ let t = O({
329
+ dotIndex: e,
330
+ pageState: w,
331
+ totalPages: z.length,
332
+ maxDots: g
333
+ });
334
+ return {
335
+ role: "radio",
336
+ id: `carousel::${C}::indicator:${e}`,
337
+ "aria-checked": e === w,
338
+ "data-scope": A,
339
+ "data-part": "indicator",
340
+ "data-orientation": "horizontal",
341
+ "data-index": e,
342
+ "data-state": t,
343
+ tabIndex: e === w ? 0 : -1,
344
+ onClick: () => {
345
+ U(e, c);
346
+ },
347
+ onKeyDown: (e) => {
348
+ let t = (e) => {
349
+ N.current[e]?.focus();
350
+ };
351
+ e.key === "ArrowRight" && V ? G(t) : e.key === "ArrowLeft" && B && W(t);
352
+ }
353
+ };
354
+ }
355
+ };
356
+ }, N = a(null), P = ({ className: e, snapType: t = "mandatory", snapStop: r = "always", scrollBehavior: i = "smooth", slidesPerMove: a = "auto", pagePickerInset: o = !1, slidesPerPage: s = 1, loop: c = !1, children: l, gap: u = 16, defaultPage: d, page: f, onPageChange: p, maxDots: m = 5, ...h }) => {
357
+ let _ = M({
358
+ defaultPage: d,
359
+ slidesPerPage: s,
360
+ slidesPerMove: a,
361
+ loop: c,
362
+ gap: u,
363
+ scrollBehavior: i,
364
+ snapStop: r,
365
+ snapType: t,
366
+ page: f,
367
+ pagePickerInset: o,
368
+ onPageChange: p,
369
+ maxDots: m
370
+ });
371
+ return /* @__PURE__ */ g(N.Provider, {
372
+ value: {
373
+ ..._,
374
+ scrollBehavior: i
375
+ },
376
+ children: /* @__PURE__ */ g("div", {
377
+ "data-spark-component": "carousel",
378
+ className: n("gap-lg relative box-border flex flex-col", e),
379
+ ..._.getRootProps(),
380
+ ...h,
381
+ children: l
382
+ })
383
+ });
441
384
  };
442
- B.displayName = "Carousel";
443
- const P = () => {
444
- const t = dt(X);
445
- if (!t)
446
- throw Error("useCarouselContext must be used within a Carousel provider");
447
- return t;
448
- }, H = ({ children: t, className: e, ...r }) => {
449
- const n = P();
450
- return /* @__PURE__ */ f(
451
- "div",
452
- {
453
- "data-spark-component": "carousel-controls",
454
- className: x(
455
- "default:px-lg pointer-events-none absolute inset-0 flex flex-row items-center justify-between",
456
- e
457
- ),
458
- ...n.getControlProps(),
459
- ...r,
460
- children: t
461
- }
462
- );
385
+ P.displayName = "Carousel";
386
+ var F = () => {
387
+ let e = c(N);
388
+ if (!e) throw Error("useCarouselContext must be used within a Carousel provider");
389
+ return e;
390
+ }, I = ({ children: e, className: t, ...r }) => {
391
+ let i = F();
392
+ return /* @__PURE__ */ g("div", {
393
+ "data-spark-component": "carousel-controls",
394
+ className: n("default:px-lg pointer-events-none absolute inset-0 flex flex-row items-center justify-between", t),
395
+ ...i.getControlProps(),
396
+ ...r,
397
+ children: e
398
+ });
463
399
  };
464
- H.displayName = "Carousel.Controls";
465
- const Q = ({
466
- "aria-label": t,
467
- ...e
468
- }) => {
469
- const r = P();
470
- return /* @__PURE__ */ f(
471
- J,
472
- {
473
- "data-spark-component": "carousel-next-button",
474
- ...r.getNextTriggerProps(),
475
- intent: "surface",
476
- design: "filled",
477
- className: "pointer-events-auto cursor-pointer shadow-sm disabled:invisible",
478
- "aria-label": t,
479
- ...e,
480
- children: /* @__PURE__ */ f(G, { children: /* @__PURE__ */ f(mt, {}) })
481
- }
482
- );
400
+ I.displayName = "Carousel.Controls";
401
+ //#endregion
402
+ //#region src/carousel/CarouselNextButton.tsx
403
+ var L = ({ "aria-label": n, ...r }) => {
404
+ let i = F();
405
+ return /* @__PURE__ */ g(t, {
406
+ "data-spark-component": "carousel-next-button",
407
+ ...i.getNextTriggerProps(),
408
+ intent: "surface",
409
+ design: "filled",
410
+ className: "pointer-events-auto cursor-pointer shadow-sm disabled:invisible",
411
+ "aria-label": n,
412
+ ...r,
413
+ children: /* @__PURE__ */ g(e, { children: /* @__PURE__ */ g(_, {}) })
414
+ });
483
415
  };
484
- Q.displayName = "Carousel.NextButton";
485
- const U = ({
486
- children: t,
487
- unstyled: e = !1,
488
- index: r,
489
- "aria-label": n,
490
- className: o,
491
- intent: s = "support"
492
- }) => {
493
- const a = P(), i = C(null);
494
- k(() => {
495
- a.pageIndicatorsRefs.current && (a.pageIndicatorsRefs.current[r] = i.current);
496
- });
497
- const p = a.getIndicatorProps({ index: r });
498
- return /* @__PURE__ */ f(
499
- "button",
500
- {
501
- "data-spark-component": "carousel-page-indicator",
502
- ref: i,
503
- ...p,
504
- "aria-label": n,
505
- className: x(
506
- {
507
- [x(
508
- "border-outline group relative flex justify-center border-0 hover:cursor-pointer",
509
- "m-sm rounded-sm transition-all duration-[200ms] ease-linear",
510
- "w-sz-8 h-sz-8",
511
- "data-[state=active]:w-sz-32 data-[state=active]:h-sz-8",
512
- "data-[state=edge]:w-sz-4 data-[state=edge]:h-sz-4",
513
- "data-[state=hidden]:m-0 data-[state=hidden]:size-0",
514
- s === "surface" ? "data-[state=active]:bg-surface bg-surface/dim-2" : "data-[state=active]:bg-support bg-on-surface/dim-2"
515
- )]: !e
516
- // [dotsStyles]: !unstyled,
517
- },
518
- o
519
- ),
520
- children: t
521
- },
522
- r
523
- );
416
+ L.displayName = "Carousel.NextButton";
417
+ //#endregion
418
+ //#region src/carousel/CarouselPageIndicator.tsx
419
+ var R = ({ children: e, unstyled: t = !1, index: r, "aria-label": i, className: a, intent: o = "support" }) => {
420
+ let s = F(), c = p(null);
421
+ l(() => {
422
+ s.pageIndicatorsRefs.current && (s.pageIndicatorsRefs.current[r] = c.current);
423
+ });
424
+ let u = s.getIndicatorProps({ index: r });
425
+ return /* @__PURE__ */ g("button", {
426
+ "data-spark-component": "carousel-page-indicator",
427
+ ref: c,
428
+ ...u,
429
+ "aria-label": i,
430
+ className: n({ [n("border-outline group relative flex justify-center border-0 hover:cursor-pointer", "m-sm rounded-sm transition-all duration-[200ms] ease-linear", "w-sz-8 h-sz-8", "data-[state=active]:w-sz-32 data-[state=active]:h-sz-8", "data-[state=edge]:w-sz-4 data-[state=edge]:h-sz-4", "data-[state=hidden]:m-0 data-[state=hidden]:size-0", o === "surface" ? "data-[state=active]:bg-surface bg-surface/dim-2" : "data-[state=active]:bg-support bg-on-surface/dim-2")]: !t }, a),
431
+ children: e
432
+ }, r);
524
433
  };
525
- U.displayName = "Carousel.PageIndicator";
526
- const Y = ({ children: t, className: e }) => {
527
- const r = P();
528
- return /* @__PURE__ */ f(it, { children: /* @__PURE__ */ f(
529
- "div",
530
- {
531
- "data-spark-component": "carousel-page-picker",
532
- ...r.getIndicatorGroupProps(),
533
- className: x(
534
- "flex-wrap items-center justify-center",
535
- "default:min-h-sz-16 flex",
536
- r.pagePickerInset && "bottom-sz-12 absolute inset-x-0",
537
- e
538
- ),
539
- children: r.pageSnapPoints.length <= 1 ? null : t({
540
- ...r,
541
- pages: Array.from({ length: r.pageSnapPoints.length }, (n, o) => o)
542
- })
543
- }
544
- ) });
434
+ R.displayName = "Carousel.PageIndicator";
435
+ //#endregion
436
+ //#region src/carousel/CarouselPagePicker.tsx
437
+ var z = ({ children: e, className: t }) => {
438
+ let r = F();
439
+ return /* @__PURE__ */ g(h, { children: /* @__PURE__ */ g("div", {
440
+ "data-spark-component": "carousel-page-picker",
441
+ ...r.getIndicatorGroupProps(),
442
+ className: n("flex-wrap items-center justify-center", "default:min-h-sz-16 flex", r.pagePickerInset && "bottom-sz-12 absolute inset-x-0", t),
443
+ children: r.pageSnapPoints.length <= 1 ? null : e({
444
+ ...r,
445
+ pages: Array.from({ length: r.pageSnapPoints.length }, (e, t) => t)
446
+ })
447
+ }) });
545
448
  };
546
- Y.displayName = "Carousel.PagePicker";
547
- const Z = ({
548
- "aria-label": t,
549
- ...e
550
- }) => {
551
- const r = P();
552
- return /* @__PURE__ */ f(
553
- J,
554
- {
555
- "data-spark-component": "carousel-prev-button",
556
- ...r.getPrevTriggerProps(),
557
- intent: "surface",
558
- design: "filled",
559
- className: "pointer-events-auto cursor-pointer shadow-sm disabled:invisible",
560
- "aria-label": t,
561
- ...e,
562
- children: /* @__PURE__ */ f(G, { children: /* @__PURE__ */ f(ht, {}) })
563
- }
564
- );
449
+ z.displayName = "Carousel.PagePicker";
450
+ //#endregion
451
+ //#region src/carousel/CarouselPrevButton.tsx
452
+ var B = ({ "aria-label": n, ...r }) => {
453
+ let i = F();
454
+ return /* @__PURE__ */ g(t, {
455
+ "data-spark-component": "carousel-prev-button",
456
+ ...i.getPrevTriggerProps(),
457
+ intent: "surface",
458
+ design: "filled",
459
+ className: "pointer-events-auto cursor-pointer shadow-sm disabled:invisible",
460
+ "aria-label": n,
461
+ ...r,
462
+ children: /* @__PURE__ */ g(e, { children: /* @__PURE__ */ g(v, {}) })
463
+ });
565
464
  };
566
- Z.displayName = "Carousel.PrevButton";
567
- function It(t, e) {
568
- const [r, n] = L(!0), o = P();
569
- return k(() => {
570
- const s = t.current;
571
- if (!s) return;
572
- const { registerSlide: a, unregisterSlide: i } = o;
573
- return a(s, n), () => {
574
- i(s);
575
- };
576
- }, [t]), r;
465
+ B.displayName = "Carousel.PrevButton";
466
+ //#endregion
467
+ //#region src/carousel/useIsVisible.ts
468
+ function V(e, t) {
469
+ let [n, r] = m(!0), i = F();
470
+ return l(() => {
471
+ let t = e.current;
472
+ if (!t) return;
473
+ let { registerSlide: n, unregisterSlide: a } = i;
474
+ return n(t, r), () => {
475
+ a(t);
476
+ };
477
+ }, [e]), n;
577
478
  }
578
- const D = ({
579
- children: t,
580
- index: e = 0,
581
- totalSlides: r,
582
- className: n = "",
583
- ...o
584
- }) => {
585
- const s = C(null), a = P(), i = It(s, a.ref);
586
- return /* @__PURE__ */ f(
587
- "div",
588
- {
589
- "data-spark-component": "carousel-slide",
590
- ref: s,
591
- ...a.getSlideProps({ index: e, totalSlides: r }),
592
- className: x("default:bg-surface relative overflow-hidden", n),
593
- "aria-hidden": !i,
594
- inert: !i,
595
- ...o,
596
- children: t
597
- }
598
- );
479
+ //#endregion
480
+ //#region src/carousel/CarouselSlide.tsx
481
+ var H = ({ children: e, index: t = 0, totalSlides: r, className: i = "", ...a }) => {
482
+ let o = p(null), s = F(), c = V(o, s.ref);
483
+ return /* @__PURE__ */ g("div", {
484
+ "data-spark-component": "carousel-slide",
485
+ ref: o,
486
+ ...s.getSlideProps({
487
+ index: t,
488
+ totalSlides: r
489
+ }),
490
+ className: n("default:bg-surface relative overflow-hidden", i),
491
+ "aria-hidden": !c,
492
+ inert: !c,
493
+ ...a,
494
+ children: e
495
+ });
599
496
  };
600
- D.displayName = "Carousel.Slide";
601
- const tt = ({ children: t, className: e = "" }) => {
602
- const r = P(), n = pt.toArray(t);
603
- return /* @__PURE__ */ f(
604
- "div",
605
- {
606
- "data-spark-component": "carousel-slides",
607
- ...r.getSlidesContainerProps(),
608
- className: x(
609
- "focus-visible:u-outline relative w-full",
610
- "[-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden",
611
- e
612
- ),
613
- children: n.map(
614
- (o, s) => ft(o) ? gt(o, {
615
- index: s,
616
- totalSlides: n.length
617
- }) : o
618
- )
619
- }
620
- );
497
+ H.displayName = "Carousel.Slide";
498
+ //#endregion
499
+ //#region src/carousel/CarouselSlides.tsx
500
+ var U = ({ children: e, className: t = "" }) => {
501
+ let a = F(), s = r.toArray(e);
502
+ return /* @__PURE__ */ g("div", {
503
+ "data-spark-component": "carousel-slides",
504
+ ...a.getSlidesContainerProps(),
505
+ className: n("focus-visible:u-outline relative w-full", "[-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden", t),
506
+ children: s.map((e, t) => o(e) ? i(e, {
507
+ index: t,
508
+ totalSlides: s.length
509
+ }) : e)
510
+ });
621
511
  };
622
- tt.displayName = "Carousel.Slides";
623
- const et = ({ children: t }) => /* @__PURE__ */ f("div", { className: "relative flex items-center justify-around p-0", children: t });
624
- et.displayName = "Carousel.Viewport";
625
- const kt = Object.assign(B, {
626
- Controls: H,
627
- NextButton: Q,
628
- PrevButton: Z,
629
- Slide: D,
630
- Slides: tt,
631
- Viewport: et,
632
- PagePicker: Y,
633
- PageIndicator: U
512
+ U.displayName = "Carousel.Slides";
513
+ //#endregion
514
+ //#region src/carousel/CarouselViewport.tsx
515
+ var W = ({ children: e }) => /* @__PURE__ */ g("div", {
516
+ className: "relative flex items-center justify-around p-0",
517
+ children: e
634
518
  });
635
- kt.displayName = "Carousel";
636
- export {
637
- kt as Carousel
638
- };
639
- //# sourceMappingURL=index.mjs.map
519
+ W.displayName = "Carousel.Viewport";
520
+ //#endregion
521
+ //#region src/carousel/index.ts
522
+ var G = Object.assign(P, {
523
+ Controls: I,
524
+ NextButton: L,
525
+ PrevButton: B,
526
+ Slide: H,
527
+ Slides: U,
528
+ Viewport: W,
529
+ PagePicker: z,
530
+ PageIndicator: R
531
+ });
532
+ G.displayName = "Carousel";
533
+ //#endregion
534
+ export { G as Carousel };
535
+
536
+ //# sourceMappingURL=index.mjs.map