@mortenbrudvik/waveui 0.14.1 → 0.15.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 (125) hide show
  1. package/README.md +142 -32
  2. package/dist/components/data-display/InfoButton.cjs +1 -1
  3. package/dist/components/data-display/InfoButton.cjs.map +1 -1
  4. package/dist/components/data-display/InfoButton.mjs +90 -82
  5. package/dist/components/data-display/InfoButton.mjs.map +1 -1
  6. package/dist/components/data-display/InfoLabel.cjs +1 -1
  7. package/dist/components/data-display/InfoLabel.cjs.map +1 -1
  8. package/dist/components/data-display/InfoLabel.mjs +19 -18
  9. package/dist/components/data-display/InfoLabel.mjs.map +1 -1
  10. package/dist/components/feedback/MessageBarGroup.cjs +2 -0
  11. package/dist/components/feedback/MessageBarGroup.cjs.map +1 -0
  12. package/dist/components/feedback/MessageBarGroup.mjs +63 -0
  13. package/dist/components/feedback/MessageBarGroup.mjs.map +1 -0
  14. package/dist/components/feedback/ProgressBar.cjs +1 -1
  15. package/dist/components/feedback/ProgressBar.cjs.map +1 -1
  16. package/dist/components/feedback/ProgressBar.mjs +41 -39
  17. package/dist/components/feedback/ProgressBar.mjs.map +1 -1
  18. package/dist/components/feedback/Toaster.cjs +1 -1
  19. package/dist/components/feedback/Toaster.cjs.map +1 -1
  20. package/dist/components/feedback/Toaster.mjs +222 -216
  21. package/dist/components/feedback/Toaster.mjs.map +1 -1
  22. package/dist/components/layout/Accordion.cjs +1 -1
  23. package/dist/components/layout/Accordion.cjs.map +1 -1
  24. package/dist/components/layout/Accordion.mjs +124 -109
  25. package/dist/components/layout/Accordion.mjs.map +1 -1
  26. package/dist/components/layout/Carousel.cjs +1 -1
  27. package/dist/components/layout/Carousel.cjs.map +1 -1
  28. package/dist/components/layout/Carousel.mjs +207 -193
  29. package/dist/components/layout/Carousel.mjs.map +1 -1
  30. package/dist/components/layout/TabList.cjs +1 -1
  31. package/dist/components/layout/TabList.cjs.map +1 -1
  32. package/dist/components/layout/TabList.mjs +149 -108
  33. package/dist/components/layout/TabList.mjs.map +1 -1
  34. package/dist/components/layout/Tree.cjs.map +1 -1
  35. package/dist/components/layout/Tree.context.cjs +1 -1
  36. package/dist/components/layout/Tree.context.cjs.map +1 -1
  37. package/dist/components/layout/Tree.context.mjs +2 -1
  38. package/dist/components/layout/Tree.context.mjs.map +1 -1
  39. package/dist/components/layout/Tree.core.cjs +1 -1
  40. package/dist/components/layout/Tree.core.cjs.map +1 -1
  41. package/dist/components/layout/Tree.core.mjs +178 -165
  42. package/dist/components/layout/Tree.core.mjs.map +1 -1
  43. package/dist/components/layout/Tree.mjs.map +1 -1
  44. package/dist/components/navigation/Menu.popover.cjs +1 -1
  45. package/dist/components/navigation/Menu.popover.cjs.map +1 -1
  46. package/dist/components/navigation/Menu.popover.mjs +154 -168
  47. package/dist/components/navigation/Menu.popover.mjs.map +1 -1
  48. package/dist/components/navigation/Nav.cjs +1 -1
  49. package/dist/components/navigation/Nav.cjs.map +1 -1
  50. package/dist/components/navigation/Nav.mjs +156 -136
  51. package/dist/components/navigation/Nav.mjs.map +1 -1
  52. package/dist/components/navigation/NavDrawer.cjs +1 -1
  53. package/dist/components/navigation/NavDrawer.cjs.map +1 -1
  54. package/dist/components/navigation/NavDrawer.mjs +48 -45
  55. package/dist/components/navigation/NavDrawer.mjs.map +1 -1
  56. package/dist/components/overlays/Dialog.cjs +1 -1
  57. package/dist/components/overlays/Dialog.cjs.map +1 -1
  58. package/dist/components/overlays/Dialog.mjs +128 -122
  59. package/dist/components/overlays/Dialog.mjs.map +1 -1
  60. package/dist/components/overlays/Dialog.slots.cjs +1 -1
  61. package/dist/components/overlays/Dialog.slots.cjs.map +1 -1
  62. package/dist/components/overlays/Dialog.slots.mjs +12 -12
  63. package/dist/components/overlays/Dialog.slots.mjs.map +1 -1
  64. package/dist/components/overlays/Drawer.cjs.map +1 -1
  65. package/dist/components/overlays/Drawer.mjs.map +1 -1
  66. package/dist/components/overlays/Drawer.panel.cjs +1 -1
  67. package/dist/components/overlays/Drawer.panel.cjs.map +1 -1
  68. package/dist/components/overlays/Drawer.panel.mjs +97 -81
  69. package/dist/components/overlays/Drawer.panel.mjs.map +1 -1
  70. package/dist/components/overlays/Drawer.root.cjs +1 -1
  71. package/dist/components/overlays/Drawer.root.cjs.map +1 -1
  72. package/dist/components/overlays/Drawer.root.mjs +34 -31
  73. package/dist/components/overlays/Drawer.root.mjs.map +1 -1
  74. package/dist/components/overlays/Popover.cjs +1 -1
  75. package/dist/components/overlays/Popover.cjs.map +1 -1
  76. package/dist/components/overlays/Popover.mjs +231 -216
  77. package/dist/components/overlays/Popover.mjs.map +1 -1
  78. package/dist/components/overlays/TeachingPopover.cjs.map +1 -1
  79. package/dist/components/overlays/TeachingPopover.mjs.map +1 -1
  80. package/dist/components/overlays/TeachingPopover.parts.cjs +1 -1
  81. package/dist/components/overlays/TeachingPopover.parts.cjs.map +1 -1
  82. package/dist/components/overlays/TeachingPopover.parts.mjs +199 -177
  83. package/dist/components/overlays/TeachingPopover.parts.mjs.map +1 -1
  84. package/dist/components/overlays/TeachingPopover.root.cjs +1 -1
  85. package/dist/components/overlays/TeachingPopover.root.cjs.map +1 -1
  86. package/dist/components/overlays/TeachingPopover.root.mjs +93 -92
  87. package/dist/components/overlays/TeachingPopover.root.mjs.map +1 -1
  88. package/dist/components/overlays/Tooltip.cjs +1 -1
  89. package/dist/components/overlays/Tooltip.cjs.map +1 -1
  90. package/dist/components/overlays/Tooltip.mjs +66 -61
  91. package/dist/components/overlays/Tooltip.mjs.map +1 -1
  92. package/dist/components/provider/WaveProvider.cjs +1 -1
  93. package/dist/components/provider/WaveProvider.cjs.map +1 -1
  94. package/dist/components/provider/WaveProvider.mjs +26 -23
  95. package/dist/components/provider/WaveProvider.mjs.map +1 -1
  96. package/dist/hooks/useCollapsePresence.cjs +2 -0
  97. package/dist/hooks/useCollapsePresence.cjs.map +1 -0
  98. package/dist/hooks/useCollapsePresence.mjs +21 -0
  99. package/dist/hooks/useCollapsePresence.mjs.map +1 -0
  100. package/dist/hooks/useFocusBeforeClose.cjs +2 -0
  101. package/dist/hooks/useFocusBeforeClose.cjs.map +1 -0
  102. package/dist/hooks/useFocusBeforeClose.mjs +33 -0
  103. package/dist/hooks/useFocusBeforeClose.mjs.map +1 -0
  104. package/dist/hooks/useMotion.cjs +2 -0
  105. package/dist/hooks/useMotion.cjs.map +1 -0
  106. package/dist/hooks/useMotion.mjs +14 -0
  107. package/dist/hooks/useMotion.mjs.map +1 -0
  108. package/dist/hooks/usePresenceGroup.cjs +2 -0
  109. package/dist/hooks/usePresenceGroup.cjs.map +1 -0
  110. package/dist/hooks/usePresenceGroup.mjs +68 -0
  111. package/dist/hooks/usePresenceGroup.mjs.map +1 -0
  112. package/dist/index.cjs +1 -1
  113. package/dist/index.d.cts +707 -126
  114. package/dist/index.d.ts +707 -126
  115. package/dist/index.mjs +136 -135
  116. package/dist/lib/classNames.cjs +1 -1
  117. package/dist/lib/classNames.cjs.map +1 -1
  118. package/dist/lib/classNames.mjs +101 -90
  119. package/dist/lib/classNames.mjs.map +1 -1
  120. package/dist/lib/motion.cjs +2 -0
  121. package/dist/lib/motion.cjs.map +1 -0
  122. package/dist/lib/motion.mjs +43 -0
  123. package/dist/lib/motion.mjs.map +1 -0
  124. package/dist/styles.css +1 -1
  125. package/package.json +2 -1
@@ -16,17 +16,19 @@ import { usePrefersReducedMotion as ce } from "../../hooks/usePrefersReducedMoti
16
16
  import { useDirection as le } from "../../hooks/useDirection.mjs";
17
17
  import { focusRing as ue, forcedColors as de } from "../../lib/styles.mjs";
18
18
  import { ChevronLeftIcon as fe, ChevronRightIcon as pe } from "../../lib/icons.mjs";
19
- import { CarouselContext as me } from "./Carousel.context.mjs";
20
- import { CAROUSEL_CONTROL_BASE as l, CAROUSEL_CONTROL_LAYOUT as he } from "./Carousel.styles.mjs";
21
- import { CarouselButton as ge } from "./Carousel.button.mjs";
22
- import { useCarouselDrag as _e } from "./Carousel.drag.mjs";
23
- import { clampToPage as ve, lastPageStart as ye, pageCount as be } from "./Carousel.groups.mjs";
24
- import * as u from "react";
25
- import { jsx as d, jsxs as f } from "react/jsx-runtime";
19
+ import "../../lib/motion.mjs";
20
+ import { useMotionPreference as me } from "../../hooks/useMotion.mjs";
21
+ import { CarouselContext as he } from "./Carousel.context.mjs";
22
+ import { CAROUSEL_CONTROL_BASE as ge, CAROUSEL_CONTROL_LAYOUT as _e } from "./Carousel.styles.mjs";
23
+ import { CarouselButton as ve } from "./Carousel.button.mjs";
24
+ import { useCarouselDrag as ye } from "./Carousel.drag.mjs";
25
+ import { clampToPage as be, lastPageStart as xe, pageCount as Se } from "./Carousel.groups.mjs";
26
+ import * as l from "react";
27
+ import { jsx as u, jsxs as d } from "react/jsx-runtime";
26
28
  //#region src/components/layout/Carousel.tsx
27
- var xe = "Pause slide rotation", Se = "Start slide rotation", Ce = "Previous slide", we = "Next slide", Te = "Choose slide", Ee = (e, t) => `Slide ${e + 1} of ${t}`, De = "carousel", Oe = "slide", ke = (e, t, n) => `Slides ${e} to ${t} of ${n}`;
28
- function Ae(e, t, n) {
29
- let r = u.useCallback((r) => {
29
+ var Ce = "Pause slide rotation", we = "Start slide rotation", Te = "Previous slide", Ee = "Next slide", De = "Choose slide", Oe = (e, t) => `Slide ${e + 1} of ${t}`, ke = "carousel", Ae = "slide", je = 300, Me = (e, t, n) => `Slides ${e} to ${t} of ${n}`;
30
+ function Ne(e, t, n) {
31
+ let r = l.useCallback((r) => {
30
32
  if (!e || !t || typeof ResizeObserver > "u") return () => {};
31
33
  let i = new ResizeObserver(r);
32
34
  return i.observe(t), n && i.observe(n), () => i.disconnect();
@@ -34,7 +36,7 @@ function Ae(e, t, n) {
34
36
  e,
35
37
  t,
36
38
  n
37
- ]), [i, a, o] = u.useSyncExternalStore(r, () => {
39
+ ]), [i, a, o] = l.useSyncExternalStore(r, () => {
38
40
  if (!e || !t || !n) return "1:0:0";
39
41
  let r = n.offsetWidth, i = t.clientWidth;
40
42
  return `${r > 0 ? Math.max(1, Math.floor(i / r)) : 1}:${r}:${i}`;
@@ -45,277 +47,289 @@ function Ae(e, t, n) {
45
47
  rootWidth: o
46
48
  };
47
49
  }
48
- function je(e) {
50
+ function Pe(e, t) {
51
+ return e === void 0 ? t === "none" ? "none" : "slide" : e === null ? "none" : e === "fade" ? "fade" : "slide";
52
+ }
53
+ function Fe(e) {
49
54
  return e instanceof Element && e.closest("[data-carousel-rotation]") !== null;
50
55
  }
51
- function Me(e) {
56
+ function Ie(e) {
52
57
  return typeof e == "string" ? { src: e } : e;
53
58
  }
54
- var Ne = () => /* @__PURE__ */ f("svg", {
59
+ var Le = () => /* @__PURE__ */ d("svg", {
55
60
  width: "16",
56
61
  height: "16",
57
62
  viewBox: "0 0 16 16",
58
63
  fill: "currentColor",
59
64
  "aria-hidden": "true",
60
- children: [/* @__PURE__ */ d("rect", {
65
+ children: [/* @__PURE__ */ u("rect", {
61
66
  x: "4",
62
67
  y: "3",
63
68
  width: "3",
64
69
  height: "10",
65
70
  rx: "1"
66
- }), /* @__PURE__ */ d("rect", {
71
+ }), /* @__PURE__ */ u("rect", {
67
72
  x: "9",
68
73
  y: "3",
69
74
  width: "3",
70
75
  height: "10",
71
76
  rx: "1"
72
77
  })]
73
- }), Pe = () => /* @__PURE__ */ d("svg", {
78
+ }), Re = () => /* @__PURE__ */ u("svg", {
74
79
  width: "16",
75
80
  height: "16",
76
81
  viewBox: "0 0 16 16",
77
82
  fill: "currentColor",
78
83
  "aria-hidden": "true",
79
- children: /* @__PURE__ */ d("path", { d: "M5 3.5v9a.5.5 0 0 0 .77.42l7-4.5a.5.5 0 0 0 0-.84l-7-4.5A.5.5 0 0 0 5 3.5Z" })
80
- }), p = ({ value: p, defaultValue: Fe = 0, onValueChange: Ie, autoPlay: Le = !1, autoPlayInterval: Re = 5e3, autoPlayLabels: ze, labels: h, loop: g = !1, groupSize: Be = 1, align: Ve = "start", draggable: He = !1, controlsLayout: _ = "overlay", appearance: v = "flat", className: Ue, children: We, onMouseEnter: Ge, onMouseLeave: Ke, onFocus: qe, onBlur: Je, ref: Ye, ...y }) => {
81
- let [Xe, Ze] = te(p, Fe, Ie), b = ne("carousel-slides"), [Qe, $e] = u.useState(null), et = ae(Ye, $e), tt = le(Qe), x = y.dir === "rtl" || y.dir === "ltr" ? y.dir : tt, nt = ce(), [rt, it] = u.useState(null), [S, at] = u.useState(null), [ot, st] = u.useState(null), C = Be === "auto", w = Ae(C, ot, rt), T = C ? w.perPage : Math.max(1, Math.floor(Be) || 1), [ct, lt] = u.useState(null), [ut, E] = u.useState(null), [dt, ft] = u.useState(!1), [pt, mt] = u.useState(!1), [ht, gt] = u.useState(!1), [_t, D] = u.useState(!1), O = [], k = {}, A = !1;
82
- for (let e of t(We)) if (n(e.node, m)) O.push({
84
+ children: /* @__PURE__ */ u("path", { d: "M5 3.5v9a.5.5 0 0 0 .77.42l7-4.5a.5.5 0 0 0 0-.84l-7-4.5A.5.5 0 0 0 5 3.5Z" })
85
+ }), f = ({ value: f, defaultValue: ze = 0, onValueChange: Be, autoPlay: Ve = !1, autoPlayInterval: He = 5e3, autoPlayLabels: Ue, labels: m, loop: h = !1, groupSize: We = 1, align: Ge = "start", draggable: Ke = !1, controlsLayout: g = "overlay", appearance: _ = "flat", motion: qe, motionDuration: Je = je, className: Ye, children: Xe, onMouseEnter: Ze, onMouseLeave: Qe, onFocus: $e, onBlur: et, ref: tt, ...v }) => {
86
+ let [nt, rt] = te(f, ze, Be), y = ne("carousel-slides"), [it, at] = l.useState(null), ot = ae(tt, at), st = le(it), b = v.dir === "rtl" || v.dir === "ltr" ? v.dir : st, ct = ce(), [lt, ut] = l.useState(null), [x, dt] = l.useState(null), [ft, pt] = l.useState(null), S = We === "auto", C = Ne(S, ft, lt), w = S ? C.perPage : Math.max(1, Math.floor(We) || 1), mt = Pe(qe, me()), T = mt === "fade" && (S || w > 1), E = T ? "slide" : mt;
87
+ l.useEffect(() => {
88
+ T && r("Carousel:fade-group", "Carousel: `motion=\"fade\"` needs one slide per page; with `groupSize` above 1 or `\"auto\"` the slides slide.");
89
+ }, [T]);
90
+ let [ht, gt] = l.useState(null), [_t, D] = l.useState(null), [vt, yt] = l.useState(!1), [bt, xt] = l.useState(!1), [St, Ct] = l.useState(!1), [wt, O] = l.useState(!1), k = [], A = {}, j = !1;
91
+ for (let e of t(Xe)) if (n(e.node, p)) k.push({
83
92
  ...e,
84
93
  thumbnail: e.node.props.thumbnail
85
94
  });
86
- else if (n(e.node, ge)) {
95
+ else if (n(e.node, ve)) {
87
96
  let t = e.node.props.direction === "next" ? "next" : "previous";
88
- k[t] ? A = !0 : k[t] = u.cloneElement(e.node, { key: e.key });
89
- } else a(e.node) && (A = !0);
90
- let vt = O.some((e) => e.thumbnail !== void 0), j = O.length;
91
- u.useEffect(() => {
92
- A && r("Carousel:non-item-children", "Carousel: only `Carousel.Item` (`CarouselItem`) children are slides, directly or in Fragments; other children are not rendered. A component that renders `Carousel.Item` itself is not recognised: render the `Carousel.Item` in the Carousel and put the component inside it.");
93
- }, [A]);
94
- let M = ve(Xe, T, j), N = be(j, T), P = ye(j, T), F = M <= 0, I = M >= P, L = N <= 1 || !g && F, R = N <= 1 || !g && I, yt = ut === j && !g, z = (ct ?? nt) || yt, B = Le && N > 1;
95
- B && !g && I && !z ? E(j) : ut !== null && !yt && E(null);
96
- let V = _e({
97
- enabled: He && N > 1,
98
- dir: x,
97
+ A[t] ? j = !0 : A[t] = l.cloneElement(e.node, { key: e.key });
98
+ } else a(e.node) && (j = !0);
99
+ let Tt = k.some((e) => e.thumbnail !== void 0), M = k.length;
100
+ l.useEffect(() => {
101
+ j && r("Carousel:non-item-children", "Carousel: only `Carousel.Item` (`CarouselItem`) children are slides, directly or in Fragments; other children are not rendered. A component that renders `Carousel.Item` itself is not recognised: render the `Carousel.Item` in the Carousel and put the component inside it.");
102
+ }, [j]);
103
+ let N = be(nt, w, M), P = Se(M, w), F = xe(M, w), I = N <= 0, L = N >= F, R = P <= 1 || !h && I, z = P <= 1 || !h && L, Et = _t === M && !h, B = (ht ?? ct) || Et, V = Ve && P > 1;
104
+ V && !h && L && !B ? D(M) : _t !== null && !Et && D(null);
105
+ let H = ye({
106
+ enabled: Ke && P > 1,
107
+ dir: b,
99
108
  onCommit: (e) => {
100
- e === 1 ? I ? g && U(0) : U(M + T) : e === -1 && (F ? g && U(P) : U(M - T));
109
+ e === 1 ? L ? h && W(0) : W(N + w) : e === -1 && (I ? h && W(F) : W(N - w));
101
110
  }
102
- }), bt = dt && !pt || V.dragging, H = B && !z && !bt && !(ht && !_t), U = (e) => {
103
- e >= 0 && e < j && e !== M && Ze(e);
104
- }, W = () => U(F ? P : M - T), G = () => U(I ? 0 : M + T), xt = c(() => {
105
- Ze((e) => {
106
- let t = ve(e, T, j);
107
- return t < P ? t + T : g ? 0 : e;
111
+ }), Dt = vt && !bt || H.dragging, U = V && !B && !Dt && !(St && !wt), W = (e) => {
112
+ e >= 0 && e < M && e !== N && rt(e);
113
+ }, G = () => W(I ? F : N - w), K = () => W(L ? 0 : N + w), Ot = c(() => {
114
+ rt((e) => {
115
+ let t = be(e, w, M);
116
+ return t < F ? t + w : h ? 0 : e;
108
117
  });
109
118
  });
110
- u.useEffect(() => {
111
- if (!H) return;
112
- let e = setInterval(xt, Re);
119
+ l.useEffect(() => {
120
+ if (!U) return;
121
+ let e = setInterval(Ot, He);
113
122
  return () => clearInterval(e);
114
123
  }, [
115
- H,
116
- Re,
117
- xt
124
+ U,
125
+ He,
126
+ Ot
118
127
  ]);
119
- let St = () => {
120
- z ? (!g && I && U(0), E(null), lt(!1), D(!0)) : (lt(!0), D(!1));
121
- }, Ct = {
122
- onMouseEnter: o(Ge, () => ft(!0)),
123
- onMouseLeave: o(Ke, () => ft(!1)),
124
- onFocus: o(qe, (e) => {
128
+ let kt = () => {
129
+ B ? (!h && L && W(0), D(null), gt(!1), O(!0)) : (gt(!0), O(!1));
130
+ }, At = {
131
+ onMouseEnter: o(Ze, () => yt(!0)),
132
+ onMouseLeave: o(Qe, () => yt(!1)),
133
+ onFocus: o($e, (e) => {
125
134
  let t = e.relatedTarget, n = !(t instanceof Node && e.currentTarget.contains(t));
126
- gt(!0), (n || !je(e.target)) && D(!1);
135
+ Ct(!0), (n || !Fe(e.target)) && O(!1);
127
136
  }),
128
- onBlur: o(Je, (e) => {
137
+ onBlur: o(et, (e) => {
129
138
  let t = e.relatedTarget;
130
- t instanceof Node && e.currentTarget.contains(t) || (gt(!1), D(!1));
139
+ t instanceof Node && e.currentTarget.contains(t) || (Ct(!1), O(!1));
131
140
  })
132
- }, K = T > 1, q = Math.min(M + T, j), wt = u.useMemo(() => K ? Array.from({ length: q - M }, (e, t) => String(M + t)) : [], [
133
- K,
134
- M,
135
- q
136
- ]), J = ie({
137
- items: wt,
138
- activeValue: String(M),
141
+ }, q = w > 1, J = Math.min(N + w, M), jt = l.useMemo(() => q ? Array.from({ length: J - N }, (e, t) => String(N + t)) : [], [
142
+ q,
143
+ N,
144
+ J
145
+ ]), Y = ie({
146
+ items: jt,
147
+ activeValue: String(N),
139
148
  orientation: "horizontal",
140
149
  loop: !1,
141
- dir: x,
150
+ dir: b,
142
151
  tabStop: "last-focused"
143
- }), Tt = ae(J.containerProps.ref, at), Y = u.useRef(null);
144
- u.useLayoutEffect(() => {
145
- let e = Y.current;
146
- if (!e || !S) return;
147
- Y.current = null;
148
- let t = e === "first" ? M : q - 1;
149
- S.querySelector(`[data-roving-value="${t}"]`)?.focus();
152
+ }), Mt = ae(Y.containerProps.ref, dt), X = l.useRef(null);
153
+ l.useLayoutEffect(() => {
154
+ let e = X.current;
155
+ if (!e || !x) return;
156
+ X.current = null;
157
+ let t = e === "first" ? N : J - 1;
158
+ x.querySelector(`[data-roving-value="${t}"]`)?.focus();
150
159
  }, [
151
- M,
152
- q,
153
- S
160
+ N,
161
+ J,
162
+ x
154
163
  ]);
155
- let Et = (e) => {
164
+ let Nt = (e) => {
156
165
  let t = e.target.getAttribute("data-roving-value"), n = re(e.key, {
157
166
  orientation: "horizontal",
158
- dir: x
167
+ dir: b
159
168
  });
160
169
  if (t !== null && n && !e.defaultPrevented && !e.altKey && !e.ctrlKey && !e.metaKey) {
161
170
  let r = Number(t);
162
- if (n === "next" && r === q - 1) {
163
- e.preventDefault(), R || (Y.current = "first", G());
171
+ if (n === "next" && r === J - 1) {
172
+ e.preventDefault(), z || (X.current = "first", K());
164
173
  return;
165
174
  }
166
- if (n === "prev" && r === M) {
167
- e.preventDefault(), L || (Y.current = "last", W());
175
+ if (n === "prev" && r === N) {
176
+ e.preventDefault(), R || (X.current = "last", G());
168
177
  return;
169
178
  }
170
179
  }
171
- J.containerProps.onKeyDown(e);
172
- }, X = h?.previous ?? Ce, Z = h?.next ?? we, Dt = c(() => W()), Ot = c(() => G()), kt = u.useMemo(() => ({
173
- trackId: b,
174
- previousLabel: X,
175
- nextLabel: Z,
176
- previousDisabled: L,
177
- nextDisabled: R,
178
- goPrevious: Dt,
179
- goNext: Ot,
180
- controlsLayout: _,
181
- dir: x
180
+ Y.containerProps.onKeyDown(e);
181
+ }, Z = m?.previous ?? Te, Pt = m?.next ?? Ee, Ft = c(() => G()), It = c(() => K()), Lt = l.useMemo(() => ({
182
+ trackId: y,
183
+ previousLabel: Z,
184
+ nextLabel: Pt,
185
+ previousDisabled: R,
186
+ nextDisabled: z,
187
+ goPrevious: Ft,
188
+ goNext: It,
189
+ controlsLayout: g,
190
+ dir: b
182
191
  }), [
183
- b,
184
- X,
192
+ y,
185
193
  Z,
186
- L,
194
+ Pt,
187
195
  R,
188
- Dt,
189
- Ot,
190
- _,
191
- x
196
+ z,
197
+ Ft,
198
+ It,
199
+ g,
200
+ b
192
201
  ]);
193
- if (j === 0) return /* @__PURE__ */ d("div", {
194
- ref: et,
195
- "data-controls-layout": _,
196
- "data-appearance": v,
197
- className: e(s.root, "relative", Ue),
198
- ...Ct,
199
- ...y
202
+ if (M === 0) return /* @__PURE__ */ u("div", {
203
+ ref: ot,
204
+ "data-controls-layout": g,
205
+ "data-appearance": _,
206
+ "data-motion": E,
207
+ className: e(s.root, "relative", Ye),
208
+ ...At,
209
+ ...v
200
210
  });
201
- let Q = x === "rtl" ? 1 : -1, At = `translateX(${M / T * Q * 100}%)`;
202
- if (V.offsetPx !== 0 && (At = `translateX(calc(${M / T * Q * 100}% + ${V.offsetPx}px))`), C) {
203
- let e = Math.max(0, w.rootWidth - T * w.slideWidth), t = Ve === "center" ? e / 2 : Ve === "end" ? e : 0;
204
- At = `translateX(${Q * M * w.slideWidth + (x === "rtl" ? -t : t) + V.offsetPx + 0}px)`;
211
+ let Rt = b === "rtl" ? 1 : -1, zt = `translateX(${N / w * Rt * 100}%)`;
212
+ if (H.offsetPx !== 0 && (zt = `translateX(calc(${N / w * Rt * 100}% + ${H.offsetPx}px))`), S) {
213
+ let e = Math.max(0, C.rootWidth - w * C.slideWidth), t = Ge === "center" ? e / 2 : Ge === "end" ? e : 0;
214
+ zt = `translateX(${Rt * N * C.slideWidth + (b === "rtl" ? -t : t) + H.offsetPx + 0}px)`;
205
215
  }
206
- let jt = h?.slides ?? ke, Mt = (e) => {
207
- let t = Math.min(e + T, j);
208
- return t - e === 1 ? Lt(e, j) : jt(e + 1, t, j);
209
- }, Nt = x === "rtl" ? "-scale-x-100" : void 0, Pt = ze?.pause ?? xe, Ft = ze?.play ?? Se, It = h?.picker ?? Te, Lt = h?.slide ?? Ee, Rt = h?.carouselRoleDescription ?? De, zt = h?.slideRoleDescription ?? Oe, $ = _ === "inline" || _ === "inline-wide", Bt = he[_], Vt = k.previous ?? /* @__PURE__ */ d("button", {
210
- type: "button",
211
- "aria-label": X,
212
- "aria-controls": b,
213
- ...oe(L),
214
- onClick: se(L, W),
215
- className: e(s.previousButton, l, Bt.previous),
216
- children: /* @__PURE__ */ d(fe, {
217
- size: 16,
218
- className: Nt
219
- })
220
- }, "previous"), Ht = k.next ?? /* @__PURE__ */ d("button", {
216
+ let Q = E === "fade", Bt = E === "slide" && !H.dragging, Vt = Je === je ? void 0 : { transitionDuration: `${Je}ms` }, Ht = Q ? "col-start-1 row-start-1" : S ? "w-auto shrink-0" : w === 1 ? "w-full shrink-0" : "shrink-0", Ut = !S && w > 1 ? { width: `calc(100% / ${w})` } : void 0, Wt = m?.slides ?? Me, Gt = (e) => {
217
+ let t = Math.min(e + w, M);
218
+ return t - e === 1 ? Xt(e, M) : Wt(e + 1, t, M);
219
+ }, Kt = b === "rtl" ? "-scale-x-100" : void 0, qt = Ue?.pause ?? Ce, Jt = Ue?.play ?? we, Yt = m?.picker ?? De, Xt = m?.slide ?? Oe, Zt = m?.carouselRoleDescription ?? ke, Qt = m?.slideRoleDescription ?? Ae, $ = g === "inline" || g === "inline-wide", $t = _e[g], en = A.previous ?? /* @__PURE__ */ u("button", {
221
220
  type: "button",
222
221
  "aria-label": Z,
223
- "aria-controls": b,
222
+ "aria-controls": y,
224
223
  ...oe(R),
225
224
  onClick: se(R, G),
226
- className: e(s.nextButton, l, Bt.next),
227
- children: /* @__PURE__ */ d(pe, {
225
+ className: e(s.previousButton, ge, $t.previous),
226
+ children: /* @__PURE__ */ u(fe, {
227
+ size: 16,
228
+ className: Kt
229
+ })
230
+ }, "previous"), tn = A.next ?? /* @__PURE__ */ u("button", {
231
+ type: "button",
232
+ "aria-label": Pt,
233
+ "aria-controls": y,
234
+ ...oe(z),
235
+ onClick: se(z, K),
236
+ className: e(s.nextButton, ge, $t.next),
237
+ children: /* @__PURE__ */ u(pe, {
228
238
  size: 16,
229
- className: Nt
239
+ className: Kt
230
240
  })
231
- }, "next"), Ut = /* @__PURE__ */ f("div", {
232
- ref: st,
241
+ }, "next"), nn = /* @__PURE__ */ d("div", {
242
+ ref: pt,
233
243
  className: e(s.viewport, "relative min-w-0 flex-1 overflow-hidden"),
234
244
  children: [
235
- /* @__PURE__ */ d("div", {
236
- id: b,
237
- className: e(s.track, V.dragging ? "flex" : "flex transition-transform duration-300 ease-in-out motion-reduce:transition-none", He && "touch-pan-y"),
238
- style: { transform: At },
239
- "data-dragging": V.dragging ? "" : void 0,
240
- ...V.handlers,
241
- ...K ? J.containerProps : null,
242
- ref: K ? Tt : at,
243
- onKeyDown: K ? Et : void 0,
244
- children: O.map(({ key: t, node: n }, r) => {
245
- let i = r >= M && r < M + T;
246
- return /* @__PURE__ */ d("div", {
247
- ref: r === 0 ? it : void 0,
245
+ /* @__PURE__ */ u("div", {
246
+ id: y,
247
+ className: e(s.track, Q ? "grid grid-cols-[minmax(0,1fr)]" : "flex", Bt && "transition-transform duration-wave-slow ease-wave-easy-ease motion-reduce:transition-none", Ke && "touch-pan-y"),
248
+ style: Q ? void 0 : {
249
+ transform: zt,
250
+ ...Bt ? Vt : void 0
251
+ },
252
+ "data-dragging": H.dragging ? "" : void 0,
253
+ ...H.handlers,
254
+ ...q ? Y.containerProps : null,
255
+ ref: q ? Mt : dt,
256
+ onKeyDown: q ? Nt : void 0,
257
+ children: k.map(({ key: t, node: n }, r) => {
258
+ let i = r >= N && r < N + w;
259
+ return /* @__PURE__ */ u("div", {
260
+ ref: r === 0 ? ut : void 0,
248
261
  role: "group",
249
- "aria-roledescription": zt,
250
- "aria-label": Lt(r, j),
262
+ "aria-roledescription": Qt,
263
+ "aria-label": Xt(r, M),
251
264
  "aria-hidden": !i || void 0,
252
265
  inert: !i,
253
- "data-roving-value": K && i ? String(r) : void 0,
254
- tabIndex: K && i ? J.getTabIndex(String(r)) : void 0,
255
- className: e(s.slide, C ? "w-auto shrink-0" : T === 1 ? "w-full shrink-0" : "shrink-0", K && "focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring"),
256
- style: !C && T > 1 ? { width: `calc(100% / ${T})` } : void 0,
266
+ "data-roving-value": q && i ? String(r) : void 0,
267
+ tabIndex: q && i ? Y.getTabIndex(String(r)) : void 0,
268
+ className: e(s.slide, Ht, Q && "transition-opacity duration-wave-slow ease-wave-easy-ease motion-reduce:transition-none", Q && !i && "opacity-0", q && "focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring"),
269
+ style: Q ? Vt : Ut,
257
270
  children: n
258
271
  }, t);
259
272
  })
260
273
  }),
261
- !$ && Vt,
262
- !$ && Ht
274
+ !$ && en,
275
+ !$ && tn
263
276
  ]
264
277
  });
265
- return /* @__PURE__ */ d(me.Provider, {
266
- value: kt,
267
- children: /* @__PURE__ */ f("div", {
268
- ref: et,
278
+ return /* @__PURE__ */ u(he.Provider, {
279
+ value: Lt,
280
+ children: /* @__PURE__ */ d("div", {
281
+ ref: ot,
269
282
  role: "region",
270
- "aria-roledescription": Rt,
283
+ "aria-roledescription": Zt,
271
284
  "aria-label": "Carousel",
272
- "data-controls-layout": _,
273
- "data-appearance": v,
274
- className: e(s.root, "relative isolate overflow-hidden", v === "elevated" && "rounded-md shadow-4", Ue),
275
- ...Ct,
276
- ...y,
285
+ "data-controls-layout": g,
286
+ "data-appearance": _,
287
+ "data-motion": E,
288
+ className: e(s.root, "relative isolate overflow-hidden", _ === "elevated" && "rounded-md shadow-4", Ye),
289
+ ...At,
290
+ ...v,
277
291
  children: [
278
- B && /* @__PURE__ */ d("button", {
292
+ V && /* @__PURE__ */ u("button", {
279
293
  type: "button",
280
294
  "data-carousel-rotation": "",
281
- "aria-label": z ? Ft : Pt,
282
- "aria-controls": b,
283
- onClick: St,
284
- onMouseEnter: () => mt(!0),
285
- onMouseLeave: () => mt(!1),
286
- className: e(s.autoPlayButton, l, "absolute z-20 h-8 w-8 rounded-full border border-border bg-background shadow-2 top-2", $ ? "start-12" : "start-2"),
287
- children: d(z ? Pe : Ne, {})
295
+ "aria-label": B ? Jt : qt,
296
+ "aria-controls": y,
297
+ onClick: kt,
298
+ onMouseEnter: () => xt(!0),
299
+ onMouseLeave: () => xt(!1),
300
+ className: e(s.autoPlayButton, ge, "absolute z-20 h-8 w-8 rounded-full border border-border bg-background shadow-2 top-2", $ ? "start-12" : "start-2"),
301
+ children: u(B ? Re : Le, {})
288
302
  }),
289
- $ ? /* @__PURE__ */ f("div", {
303
+ $ ? /* @__PURE__ */ d("div", {
290
304
  className: "flex items-stretch",
291
305
  children: [
292
- Vt,
293
- Ut,
294
- Ht
306
+ en,
307
+ nn,
308
+ tn
295
309
  ]
296
- }) : Ut,
297
- /* @__PURE__ */ d("div", {
298
- "aria-live": H ? "off" : "polite",
310
+ }) : nn,
311
+ /* @__PURE__ */ u("div", {
312
+ "aria-live": U ? "off" : "polite",
299
313
  "aria-atomic": "true",
300
314
  className: "sr-only",
301
- children: Mt(M)
315
+ children: Gt(N)
302
316
  }),
303
- /* @__PURE__ */ d("div", {
317
+ /* @__PURE__ */ u("div", {
304
318
  role: "group",
305
- "aria-label": It,
306
- className: e(s.picker, vt ? "relative mx-auto flex w-fit flex-wrap justify-center gap-2 p-2" : "absolute inset-x-0 bottom-1 z-10 mx-auto flex w-fit"),
307
- children: O.filter((e, t) => t % T === 0).map(({ key: t, thumbnail: n }, r) => {
308
- let a = r * T, o = a === M;
309
- return /* @__PURE__ */ d("button", {
319
+ "aria-label": Yt,
320
+ className: e(s.picker, Tt ? "relative mx-auto flex w-fit flex-wrap justify-center gap-2 p-2" : "absolute inset-x-0 bottom-1 z-10 mx-auto flex w-fit"),
321
+ children: k.filter((e, t) => t % w === 0).map(({ key: t, thumbnail: n }, r) => {
322
+ let a = r * w, o = a === N;
323
+ return /* @__PURE__ */ u("button", {
310
324
  type: "button",
311
- "aria-label": Mt(a),
325
+ "aria-label": Gt(a),
312
326
  "aria-current": o ? "true" : void 0,
313
- onClick: () => U(a),
327
+ onClick: () => W(a),
314
328
  className: e(s.pickerButton, "group inline-flex items-center justify-center", n === void 0 ? "h-6 min-w-6" : "rounded-md p-0.5", ue),
315
- children: n === void 0 ? /* @__PURE__ */ d("span", {
329
+ children: n === void 0 ? /* @__PURE__ */ u("span", {
316
330
  "aria-hidden": "true",
317
331
  className: e(s.pickerIndicator, "block h-2 rounded-full transition-[width,background-color] duration-200 motion-reduce:transition-none", o ? e("w-5 bg-primary", de.selectedLeaf) : "w-2 bg-stroke-accessible group-hover:bg-foreground forced-colors:bg-[ButtonText] forced-colors:forced-color-adjust-none")
318
- }) : i(Me(n), "img", e(ee.thumbnail, "block h-12 w-16 rounded object-cover", o ? e("outline-2 outline-primary", de.selectedContainer) : "opacity-70 group-hover:opacity-100"), {
332
+ }) : i(Ie(n), "img", e(ee.thumbnail, "block h-12 w-16 rounded object-cover", o ? e("outline-2 outline-primary", de.selectedContainer) : "opacity-70 group-hover:opacity-100"), {
319
333
  alt: "",
320
334
  draggable: !1
321
335
  })
@@ -326,19 +340,19 @@ var Ne = () => /* @__PURE__ */ f("svg", {
326
340
  })
327
341
  });
328
342
  };
329
- p.displayName = "Carousel";
330
- var m = ({ thumbnail: t, className: n, children: r, ref: i, ...a }) => /* @__PURE__ */ d("div", {
343
+ f.displayName = "Carousel";
344
+ var p = ({ thumbnail: t, className: n, children: r, ref: i, ...a }) => /* @__PURE__ */ u("div", {
331
345
  ref: i,
332
346
  className: e(ee.root, "p-4", n),
333
347
  ...a,
334
348
  children: r
335
349
  });
336
- m.displayName = "CarouselItem";
337
- var Fe = /* @__PURE__ */ Object.assign(p, {
338
- Item: m,
339
- Button: ge
350
+ p.displayName = "CarouselItem";
351
+ var ze = /* @__PURE__ */ Object.assign(f, {
352
+ Item: p,
353
+ Button: ve
340
354
  });
341
355
  //#endregion
342
- export { Fe as Carousel, m as CarouselItem };
356
+ export { ze as Carousel, p as CarouselItem };
343
357
 
344
358
  //# sourceMappingURL=Carousel.mjs.map