@la-batcave/ui 3.1.2

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 (107) hide show
  1. package/README.md +95 -0
  2. package/dist/Alert.d.ts +27 -0
  3. package/dist/Alert.js +56 -0
  4. package/dist/Avatar.d.ts +20 -0
  5. package/dist/Avatar.js +40 -0
  6. package/dist/Badge.d.ts +56 -0
  7. package/dist/Badge.js +74 -0
  8. package/dist/Button.d.ts +53 -0
  9. package/dist/Button.js +66 -0
  10. package/dist/Card.d.ts +18 -0
  11. package/dist/Card.js +98 -0
  12. package/dist/CodeBlock.d.ts +45 -0
  13. package/dist/CodeBlock.js +306 -0
  14. package/dist/Collapse.d.ts +58 -0
  15. package/dist/Collapse.js +89 -0
  16. package/dist/Combobox.d.ts +44 -0
  17. package/dist/Combobox.js +409 -0
  18. package/dist/DarkMode.d.ts +59 -0
  19. package/dist/DarkMode.js +56 -0
  20. package/dist/DatePicker.d.ts +48 -0
  21. package/dist/DatePicker.js +2954 -0
  22. package/dist/Dialog.d.ts +119 -0
  23. package/dist/Dialog.js +337 -0
  24. package/dist/Drawer.d.ts +28 -0
  25. package/dist/Drawer.js +1126 -0
  26. package/dist/Dropdown.d.ts +23 -0
  27. package/dist/Dropdown.js +247 -0
  28. package/dist/EasyForm.d.ts +138 -0
  29. package/dist/EasyForm.js +286 -0
  30. package/dist/HoverCard.d.ts +10 -0
  31. package/dist/HoverCard.js +195 -0
  32. package/dist/Input.d.ts +230 -0
  33. package/dist/Input.js +2216 -0
  34. package/dist/LogViewer.d.ts +57 -0
  35. package/dist/LogViewer.js +120 -0
  36. package/dist/Menubar.d.ts +32 -0
  37. package/dist/Menubar.js +398 -0
  38. package/dist/Navbar.d.ts +20 -0
  39. package/dist/Navbar.js +31 -0
  40. package/dist/Pagination.d.ts +78 -0
  41. package/dist/Pagination.js +106 -0
  42. package/dist/Popover.d.ts +11 -0
  43. package/dist/Popover.js +28 -0
  44. package/dist/ProgressBar.d.ts +35 -0
  45. package/dist/ProgressBar.js +210 -0
  46. package/dist/Resizable.d.ts +23 -0
  47. package/dist/Resizable.js +1532 -0
  48. package/dist/Separator.d.ts +4 -0
  49. package/dist/Separator.js +46 -0
  50. package/dist/Sheet.d.ts +29 -0
  51. package/dist/Sheet.js +104 -0
  52. package/dist/Sidebar.d.ts +117 -0
  53. package/dist/Sidebar.js +237 -0
  54. package/dist/Skeleton.d.ts +57 -0
  55. package/dist/Skeleton.js +47 -0
  56. package/dist/Table.d.ts +71 -0
  57. package/dist/Table.js +94 -0
  58. package/dist/Tabs.d.ts +76 -0
  59. package/dist/Tabs.js +202 -0
  60. package/dist/Toast.d.ts +54 -0
  61. package/dist/Toast.js +827 -0
  62. package/dist/Tooltip.d.ts +29 -0
  63. package/dist/Tooltip.js +352 -0
  64. package/dist/Typography.d.ts +101 -0
  65. package/dist/Typography.js +123 -0
  66. package/dist/Widget.d.ts +133 -0
  67. package/dist/Widget.js +207 -0
  68. package/dist/_shared/Combination-D_l4PLF_.js +676 -0
  69. package/dist/_shared/index-B03TCNO5.js +142 -0
  70. package/dist/_shared/index-B1f-hyuh.js +31 -0
  71. package/dist/_shared/index-BC7vfx-u.js +13 -0
  72. package/dist/_shared/index-BrLJJgkl.js +67 -0
  73. package/dist/_shared/index-C0gNQvxa.js +269 -0
  74. package/dist/_shared/index-C3aZemLI.js +268 -0
  75. package/dist/_shared/index-CXeb1OMI.js +198 -0
  76. package/dist/_shared/index-CukUn3R0.js +626 -0
  77. package/dist/_shared/index-DLcqcWxM.js +29 -0
  78. package/dist/_shared/index-DlSuDb9N.js +283 -0
  79. package/dist/_shared/index-V-Ajw7Ac.js +79 -0
  80. package/dist/_shared/index-uPOYJZpG.js +34 -0
  81. package/dist/_shared/index-uu9PT5Nu.js +1588 -0
  82. package/dist/_shared/utils-eGXXUFl7.js +2935 -0
  83. package/dist/backgrounds/Aurora.d.ts +7 -0
  84. package/dist/backgrounds/Aurora.js +126 -0
  85. package/dist/backgrounds/Iridescence.d.ts +7 -0
  86. package/dist/backgrounds/Iridescence.js +77 -0
  87. package/dist/backgrounds/Lightning.d.ts +8 -0
  88. package/dist/backgrounds/Lightning.js +75 -0
  89. package/dist/backgrounds/LiquidChrome.d.ts +9 -0
  90. package/dist/backgrounds/LiquidChrome.js +89 -0
  91. package/dist/backgrounds/Particles.d.ts +15 -0
  92. package/dist/backgrounds/Particles.js +137 -0
  93. package/dist/backgrounds/PixelSnow.d.ts +9 -0
  94. package/dist/backgrounds/PixelSnow.js +52 -0
  95. package/dist/backgrounds/Silk.d.ts +8 -0
  96. package/dist/backgrounds/Silk.js +92 -0
  97. package/dist/backgrounds/Squares.d.ts +9 -0
  98. package/dist/backgrounds/Squares.js +75 -0
  99. package/dist/backgrounds/Threads.d.ts +7 -0
  100. package/dist/backgrounds/Threads.js +110 -0
  101. package/dist/backgrounds/Waves.d.ts +14 -0
  102. package/dist/backgrounds/Waves.js +139 -0
  103. package/dist/fonts/inter-latin-wght-normal.woff2 +0 -0
  104. package/dist/index.css +1 -0
  105. package/dist/index.d.ts +2 -0
  106. package/dist/index.js +4 -0
  107. package/package.json +318 -0
package/dist/Drawer.js ADDED
@@ -0,0 +1,1126 @@
1
+ "use client";
2
+ import { jsx as J, jsxs as Wt } from "react/jsx-runtime";
3
+ import * as mt from "react";
4
+ import r, { useMemo as ye, useLayoutEffect as be, useEffect as Se } from "react";
5
+ import { O as Te, C as De, T as Re, D as Ee, P as xe, a as Oe, b as Ce, R as $e } from "./_shared/index-DlSuDb9N.js";
6
+ import { c as ot } from "./_shared/utils-eGXXUFl7.js";
7
+ function Ae(t) {
8
+ if (typeof document > "u") return;
9
+ let n = document.head || document.getElementsByTagName("head")[0], e = document.createElement("style");
10
+ e.type = "text/css", n.appendChild(e), e.styleSheet ? e.styleSheet.cssText = t : e.appendChild(document.createTextNode(t));
11
+ }
12
+ const qt = r.createContext({
13
+ drawerRef: {
14
+ current: null
15
+ },
16
+ overlayRef: {
17
+ current: null
18
+ },
19
+ onPress: () => {
20
+ },
21
+ onRelease: () => {
22
+ },
23
+ onDrag: () => {
24
+ },
25
+ onNestedDrag: () => {
26
+ },
27
+ onNestedOpenChange: () => {
28
+ },
29
+ onNestedRelease: () => {
30
+ },
31
+ openProp: void 0,
32
+ dismissible: !1,
33
+ isOpen: !1,
34
+ isDragging: !1,
35
+ keyboardIsOpen: {
36
+ current: !1
37
+ },
38
+ snapPointsOffset: null,
39
+ snapPoints: null,
40
+ handleOnly: !1,
41
+ modal: !1,
42
+ shouldFade: !1,
43
+ activeSnapPoint: null,
44
+ onOpenChange: () => {
45
+ },
46
+ setActiveSnapPoint: () => {
47
+ },
48
+ closeDrawer: () => {
49
+ },
50
+ direction: "bottom",
51
+ shouldAnimate: {
52
+ current: !0
53
+ },
54
+ shouldScaleBackground: !1,
55
+ setBackgroundColorOnScale: !0,
56
+ noBodyStyles: !1,
57
+ container: null,
58
+ autoFocus: !1
59
+ }), pt = () => {
60
+ const t = r.useContext(qt);
61
+ if (!t)
62
+ throw new Error("useDrawerContext must be used within a Drawer.Root");
63
+ return t;
64
+ };
65
+ Ae(`[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(
66
+ [data-state=closed]
67
+ ){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}`);
68
+ function Me() {
69
+ const t = navigator.userAgent;
70
+ return typeof window < "u" && (/Firefox/.test(t) && /Mobile/.test(t) || // Android Firefox
71
+ /FxiOS/.test(t));
72
+ }
73
+ function Pe() {
74
+ return Mt(/^Mac/);
75
+ }
76
+ function Ne() {
77
+ return Mt(/^iPhone/);
78
+ }
79
+ function zt() {
80
+ return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
81
+ }
82
+ function Ie() {
83
+ return Mt(/^iPad/) || // iPadOS 13 lies and says it's a Mac, but we can distinguish by detecting touch support.
84
+ Pe() && navigator.maxTouchPoints > 1;
85
+ }
86
+ function Xt() {
87
+ return Ne() || Ie();
88
+ }
89
+ function Mt(t) {
90
+ return typeof window < "u" && window.navigator != null ? t.test(window.navigator.platform) : void 0;
91
+ }
92
+ const _e = 24, He = typeof window < "u" ? be : Se;
93
+ function Vt(...t) {
94
+ return (...n) => {
95
+ for (let e of t)
96
+ typeof e == "function" && e(...n);
97
+ };
98
+ }
99
+ const Et = typeof document < "u" && window.visualViewport;
100
+ function jt(t) {
101
+ let n = window.getComputedStyle(t);
102
+ return /(auto|scroll)/.test(n.overflow + n.overflowX + n.overflowY);
103
+ }
104
+ function Kt(t) {
105
+ for (jt(t) && (t = t.parentElement); t && !jt(t); )
106
+ t = t.parentElement;
107
+ return t || document.scrollingElement || document.documentElement;
108
+ }
109
+ const Le = /* @__PURE__ */ new Set([
110
+ "checkbox",
111
+ "radio",
112
+ "range",
113
+ "color",
114
+ "file",
115
+ "image",
116
+ "button",
117
+ "submit",
118
+ "reset"
119
+ ]);
120
+ let vt = 0, xt;
121
+ function ke(t = {}) {
122
+ let { isDisabled: n } = t;
123
+ He(() => {
124
+ if (!n)
125
+ return vt++, vt === 1 && Xt() && (xt = Be()), () => {
126
+ vt--, vt === 0 && xt?.();
127
+ };
128
+ }, [
129
+ n
130
+ ]);
131
+ }
132
+ function Be() {
133
+ let t, n = 0, e = (f) => {
134
+ t = Kt(f.target), !(t === document.documentElement && t === document.body) && (n = f.changedTouches[0].pageY);
135
+ }, a = (f) => {
136
+ if (!t || t === document.documentElement || t === document.body) {
137
+ f.preventDefault();
138
+ return;
139
+ }
140
+ let m = f.changedTouches[0].pageY, B = t.scrollTop, L = t.scrollHeight - t.clientHeight;
141
+ L !== 0 && ((B <= 0 && m > n || B >= L && m < n) && f.preventDefault(), n = m);
142
+ }, i = (f) => {
143
+ let m = f.target;
144
+ $t(m) && m !== document.activeElement && (f.preventDefault(), m.style.transform = "translateY(-2000px)", m.focus(), requestAnimationFrame(() => {
145
+ m.style.transform = "";
146
+ }));
147
+ }, o = (f) => {
148
+ let m = f.target;
149
+ $t(m) && (m.style.transform = "translateY(-2000px)", requestAnimationFrame(() => {
150
+ m.style.transform = "", Et && (Et.height < window.innerHeight ? requestAnimationFrame(() => {
151
+ Yt(m);
152
+ }) : Et.addEventListener("resize", () => Yt(m), {
153
+ once: !0
154
+ }));
155
+ }));
156
+ }, v = () => {
157
+ window.scrollTo(0, 0);
158
+ }, w = window.pageXOffset, T = window.pageYOffset, R = Vt(Ue(document.documentElement, "paddingRight", `${window.innerWidth - document.documentElement.clientWidth}px`));
159
+ window.scrollTo(0, 0);
160
+ let h = Vt(dt(document, "touchstart", e, {
161
+ passive: !1,
162
+ capture: !0
163
+ }), dt(document, "touchmove", a, {
164
+ passive: !1,
165
+ capture: !0
166
+ }), dt(document, "touchend", i, {
167
+ passive: !1,
168
+ capture: !0
169
+ }), dt(document, "focus", o, !0), dt(window, "scroll", v));
170
+ return () => {
171
+ R(), h(), window.scrollTo(w, T);
172
+ };
173
+ }
174
+ function Ue(t, n, e) {
175
+ let a = t.style[n];
176
+ return t.style[n] = e, () => {
177
+ t.style[n] = a;
178
+ };
179
+ }
180
+ function dt(t, n, e, a) {
181
+ return t.addEventListener(n, e, a), () => {
182
+ t.removeEventListener(n, e, a);
183
+ };
184
+ }
185
+ function Yt(t) {
186
+ let n = document.scrollingElement || document.documentElement;
187
+ for (; t && t !== n; ) {
188
+ let e = Kt(t);
189
+ if (e !== document.documentElement && e !== document.body && e !== t) {
190
+ let a = e.getBoundingClientRect().top, i = t.getBoundingClientRect().top, o = t.getBoundingClientRect().bottom;
191
+ const v = e.getBoundingClientRect().bottom + _e;
192
+ o > v && (e.scrollTop += i - a);
193
+ }
194
+ t = e.parentElement;
195
+ }
196
+ }
197
+ function $t(t) {
198
+ return t instanceof HTMLInputElement && !Le.has(t.type) || t instanceof HTMLTextAreaElement || t instanceof HTMLElement && t.isContentEditable;
199
+ }
200
+ function Fe(t, n) {
201
+ typeof t == "function" ? t(n) : t != null && (t.current = n);
202
+ }
203
+ function We(...t) {
204
+ return (n) => t.forEach((e) => Fe(e, n));
205
+ }
206
+ function Gt(...t) {
207
+ return mt.useCallback(We(...t), t);
208
+ }
209
+ const Jt = /* @__PURE__ */ new WeakMap();
210
+ function $(t, n, e = !1) {
211
+ if (!t || !(t instanceof HTMLElement)) return;
212
+ let a = {};
213
+ Object.entries(n).forEach(([i, o]) => {
214
+ if (i.startsWith("--")) {
215
+ t.style.setProperty(i, o);
216
+ return;
217
+ }
218
+ a[i] = t.style[i], t.style[i] = o;
219
+ }), !e && Jt.set(t, a);
220
+ }
221
+ function ze(t, n) {
222
+ if (!t || !(t instanceof HTMLElement)) return;
223
+ let e = Jt.get(t);
224
+ e && (t.style[n] = e[n]);
225
+ }
226
+ const C = (t) => {
227
+ switch (t) {
228
+ case "top":
229
+ case "bottom":
230
+ return !0;
231
+ case "left":
232
+ case "right":
233
+ return !1;
234
+ default:
235
+ return t;
236
+ }
237
+ };
238
+ function yt(t, n) {
239
+ if (!t)
240
+ return null;
241
+ const e = window.getComputedStyle(t), a = (
242
+ // @ts-ignore
243
+ e.transform || e.webkitTransform || e.mozTransform
244
+ );
245
+ let i = a.match(/^matrix3d\((.+)\)$/);
246
+ return i ? parseFloat(i[1].split(", ")[C(n) ? 13 : 12]) : (i = a.match(/^matrix\((.+)\)$/), i ? parseFloat(i[1].split(", ")[C(n) ? 5 : 4]) : null);
247
+ }
248
+ function Ve(t) {
249
+ return 8 * (Math.log(t + 1) - 2);
250
+ }
251
+ function Ot(t, n) {
252
+ if (!t) return () => {
253
+ };
254
+ const e = t.style.cssText;
255
+ return Object.assign(t.style, n), () => {
256
+ t.style.cssText = e;
257
+ };
258
+ }
259
+ function je(...t) {
260
+ return (...n) => {
261
+ for (const e of t)
262
+ typeof e == "function" && e(...n);
263
+ };
264
+ }
265
+ const x = {
266
+ DURATION: 0.5,
267
+ EASE: [
268
+ 0.32,
269
+ 0.72,
270
+ 0,
271
+ 1
272
+ ]
273
+ }, Qt = 0.4, Ye = 0.25, qe = 100, Zt = 8, et = 16, At = 26, Ct = "vaul-dragging";
274
+ function te(t) {
275
+ const n = r.useRef(t);
276
+ return r.useEffect(() => {
277
+ n.current = t;
278
+ }), r.useMemo(() => (...e) => n.current == null ? void 0 : n.current.call(n, ...e), []);
279
+ }
280
+ function Xe({ defaultProp: t, onChange: n }) {
281
+ const e = r.useState(t), [a] = e, i = r.useRef(a), o = te(n);
282
+ return r.useEffect(() => {
283
+ i.current !== a && (o(a), i.current = a);
284
+ }, [
285
+ a,
286
+ i,
287
+ o
288
+ ]), e;
289
+ }
290
+ function ee({ prop: t, defaultProp: n, onChange: e = () => {
291
+ } }) {
292
+ const [a, i] = Xe({
293
+ defaultProp: n,
294
+ onChange: e
295
+ }), o = t !== void 0, v = o ? t : a, w = te(e), T = r.useCallback((R) => {
296
+ if (o) {
297
+ const f = typeof R == "function" ? R(t) : R;
298
+ f !== t && w(f);
299
+ } else
300
+ i(R);
301
+ }, [
302
+ o,
303
+ t,
304
+ i,
305
+ w
306
+ ]);
307
+ return [
308
+ v,
309
+ T
310
+ ];
311
+ }
312
+ function Ke({ activeSnapPointProp: t, setActiveSnapPointProp: n, snapPoints: e, drawerRef: a, overlayRef: i, fadeFromIndex: o, onSnapPointChange: v, direction: w = "bottom", container: T, snapToSequentialPoint: R }) {
313
+ const [h, f] = ee({
314
+ prop: t,
315
+ defaultProp: e?.[0],
316
+ onChange: n
317
+ }), [m, B] = r.useState(typeof window < "u" ? {
318
+ innerWidth: window.innerWidth,
319
+ innerHeight: window.innerHeight
320
+ } : void 0);
321
+ r.useEffect(() => {
322
+ function u() {
323
+ B({
324
+ innerWidth: window.innerWidth,
325
+ innerHeight: window.innerHeight
326
+ });
327
+ }
328
+ return window.addEventListener("resize", u), () => window.removeEventListener("resize", u);
329
+ }, []);
330
+ const L = r.useMemo(() => h === e?.[e.length - 1] || null, [
331
+ e,
332
+ h
333
+ ]), E = r.useMemo(() => {
334
+ var u;
335
+ return (u = e?.findIndex((b) => b === h)) != null ? u : null;
336
+ }, [
337
+ e,
338
+ h
339
+ ]), U = e && e.length > 0 && (o || o === 0) && !Number.isNaN(o) && e[o] === h || !e, p = r.useMemo(() => {
340
+ const u = T ? {
341
+ width: T.getBoundingClientRect().width,
342
+ height: T.getBoundingClientRect().height
343
+ } : typeof window < "u" ? {
344
+ width: window.innerWidth,
345
+ height: window.innerHeight
346
+ } : {
347
+ width: 0,
348
+ height: 0
349
+ };
350
+ var b;
351
+ return (b = e?.map((y) => {
352
+ const I = typeof y == "string";
353
+ let P = 0;
354
+ if (I && (P = parseInt(y, 10)), C(w)) {
355
+ const l = I ? P : m ? y * u.height : 0;
356
+ return m ? w === "bottom" ? u.height - l : -u.height + l : l;
357
+ }
358
+ const W = I ? P : m ? y * u.width : 0;
359
+ return m ? w === "right" ? u.width - W : -u.width + W : W;
360
+ })) != null ? b : [];
361
+ }, [
362
+ e,
363
+ m,
364
+ T
365
+ ]), M = r.useMemo(() => E !== null ? p?.[E] : null, [
366
+ p,
367
+ E
368
+ ]), A = r.useCallback((u) => {
369
+ var b;
370
+ const y = (b = p?.findIndex((I) => I === u)) != null ? b : null;
371
+ v(y), $(a.current, {
372
+ transition: `transform ${x.DURATION}s cubic-bezier(${x.EASE.join(",")})`,
373
+ transform: C(w) ? `translate3d(0, ${u}px, 0)` : `translate3d(${u}px, 0, 0)`
374
+ }), p && y !== p.length - 1 && o !== void 0 && y !== o && y < o ? $(i.current, {
375
+ transition: `opacity ${x.DURATION}s cubic-bezier(${x.EASE.join(",")})`,
376
+ opacity: "0"
377
+ }) : $(i.current, {
378
+ transition: `opacity ${x.DURATION}s cubic-bezier(${x.EASE.join(",")})`,
379
+ opacity: "1"
380
+ }), f(e?.[Math.max(y, 0)]);
381
+ }, [
382
+ a.current,
383
+ e,
384
+ p,
385
+ o,
386
+ i,
387
+ f
388
+ ]);
389
+ r.useEffect(() => {
390
+ if (h || t) {
391
+ var u;
392
+ const b = (u = e?.findIndex((y) => y === t || y === h)) != null ? u : -1;
393
+ p && b !== -1 && typeof p[b] == "number" && A(p[b]);
394
+ }
395
+ }, [
396
+ h,
397
+ t,
398
+ e,
399
+ p,
400
+ A
401
+ ]);
402
+ function c({ draggedDistance: u, closeDrawer: b, velocity: y, dismissible: I }) {
403
+ if (o === void 0) return;
404
+ const P = w === "bottom" || w === "right" ? (M ?? 0) - u : (M ?? 0) + u, W = E === o - 1, l = E === 0, F = u > 0;
405
+ if (W && $(i.current, {
406
+ transition: `opacity ${x.DURATION}s cubic-bezier(${x.EASE.join(",")})`
407
+ }), !R && y > 2 && !F) {
408
+ I ? b() : A(p[0]);
409
+ return;
410
+ }
411
+ if (!R && y > 2 && F && p && e) {
412
+ A(p[e.length - 1]);
413
+ return;
414
+ }
415
+ const _ = p?.reduce((N, q) => typeof N != "number" || typeof q != "number" ? N : Math.abs(q - P) < Math.abs(N - P) ? q : N), z = C(w) ? window.innerHeight : window.innerWidth;
416
+ if (y > Qt && Math.abs(u) < z * 0.4) {
417
+ const N = F ? 1 : -1;
418
+ if (N > 0 && L && e) {
419
+ A(p[e.length - 1]);
420
+ return;
421
+ }
422
+ if (l && N < 0 && I && b(), E === null) return;
423
+ A(p[E + N]);
424
+ return;
425
+ }
426
+ A(_);
427
+ }
428
+ function j({ draggedDistance: u }) {
429
+ if (M === null) return;
430
+ const b = w === "bottom" || w === "right" ? M - u : M + u;
431
+ (w === "bottom" || w === "right") && b < p[p.length - 1] || (w === "top" || w === "left") && b > p[p.length - 1] || $(a.current, {
432
+ transform: C(w) ? `translate3d(0, ${b}px, 0)` : `translate3d(${b}px, 0, 0)`
433
+ });
434
+ }
435
+ function Z(u, b) {
436
+ if (!e || typeof E != "number" || !p || o === void 0) return null;
437
+ const y = E === o - 1;
438
+ if (E >= o && b)
439
+ return 0;
440
+ if (y && !b) return 1;
441
+ if (!U && !y) return null;
442
+ const P = y ? E + 1 : E - 1, W = y ? p[P] - p[P - 1] : p[P + 1] - p[P], l = u / Math.abs(W);
443
+ return y ? 1 - l : l;
444
+ }
445
+ return {
446
+ isLastSnapPoint: L,
447
+ activeSnapPoint: h,
448
+ shouldFade: U,
449
+ getPercentageDragged: Z,
450
+ setActiveSnapPoint: f,
451
+ activeSnapPointIndex: E,
452
+ onRelease: c,
453
+ onDrag: j,
454
+ snapPointsOffset: p
455
+ };
456
+ }
457
+ const Ge = () => () => {
458
+ };
459
+ function Je() {
460
+ const { direction: t, isOpen: n, shouldScaleBackground: e, setBackgroundColorOnScale: a, noBodyStyles: i } = pt(), o = r.useRef(null), v = ye(() => document.body.style.backgroundColor, []);
461
+ function w() {
462
+ return (window.innerWidth - At) / window.innerWidth;
463
+ }
464
+ r.useEffect(() => {
465
+ if (n && e) {
466
+ o.current && clearTimeout(o.current);
467
+ const T = document.querySelector("[data-vaul-drawer-wrapper]") || document.querySelector("[vaul-drawer-wrapper]");
468
+ if (!T) return;
469
+ je(a && !i ? Ot(document.body, {
470
+ background: "black"
471
+ }) : Ge, Ot(T, {
472
+ transformOrigin: C(t) ? "top" : "left",
473
+ transitionProperty: "transform, border-radius",
474
+ transitionDuration: `${x.DURATION}s`,
475
+ transitionTimingFunction: `cubic-bezier(${x.EASE.join(",")})`
476
+ }));
477
+ const R = Ot(T, {
478
+ borderRadius: `${Zt}px`,
479
+ overflow: "hidden",
480
+ ...C(t) ? {
481
+ transform: `scale(${w()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`
482
+ } : {
483
+ transform: `scale(${w()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`
484
+ }
485
+ });
486
+ return () => {
487
+ R(), o.current = window.setTimeout(() => {
488
+ v ? document.body.style.background = v : document.body.style.removeProperty("background");
489
+ }, x.DURATION * 1e3);
490
+ };
491
+ }
492
+ }, [
493
+ n,
494
+ e,
495
+ v
496
+ ]);
497
+ }
498
+ let ft = null;
499
+ function Qe({ isOpen: t, modal: n, nested: e, hasBeenOpened: a, preventScrollRestoration: i, noBodyStyles: o }) {
500
+ const [v, w] = r.useState(() => typeof window < "u" ? window.location.href : ""), T = r.useRef(0), R = r.useCallback(() => {
501
+ if (zt() && ft === null && t && !o) {
502
+ ft = {
503
+ position: document.body.style.position,
504
+ top: document.body.style.top,
505
+ left: document.body.style.left,
506
+ height: document.body.style.height,
507
+ right: "unset"
508
+ };
509
+ const { scrollX: f, innerHeight: m } = window;
510
+ document.body.style.setProperty("position", "fixed", "important"), Object.assign(document.body.style, {
511
+ top: `${-T.current}px`,
512
+ left: `${-f}px`,
513
+ right: "0px",
514
+ height: "auto"
515
+ }), window.setTimeout(() => window.requestAnimationFrame(() => {
516
+ const B = m - window.innerHeight;
517
+ B && T.current >= m && (document.body.style.top = `${-(T.current + B)}px`);
518
+ }), 300);
519
+ }
520
+ }, [
521
+ t
522
+ ]), h = r.useCallback(() => {
523
+ if (zt() && ft !== null && !o) {
524
+ const f = -parseInt(document.body.style.top, 10), m = -parseInt(document.body.style.left, 10);
525
+ Object.assign(document.body.style, ft), window.requestAnimationFrame(() => {
526
+ if (i && v !== window.location.href) {
527
+ w(window.location.href);
528
+ return;
529
+ }
530
+ window.scrollTo(m, f);
531
+ }), ft = null;
532
+ }
533
+ }, [
534
+ v
535
+ ]);
536
+ return r.useEffect(() => {
537
+ function f() {
538
+ T.current = window.scrollY;
539
+ }
540
+ return f(), window.addEventListener("scroll", f), () => {
541
+ window.removeEventListener("scroll", f);
542
+ };
543
+ }, []), r.useEffect(() => {
544
+ if (n)
545
+ return () => {
546
+ typeof document > "u" || document.querySelector("[data-vaul-drawer]") || h();
547
+ };
548
+ }, [
549
+ n,
550
+ h
551
+ ]), r.useEffect(() => {
552
+ e || !a || (t ? (!window.matchMedia("(display-mode: standalone)").matches && R(), n || window.setTimeout(() => {
553
+ h();
554
+ }, 500)) : h());
555
+ }, [
556
+ t,
557
+ a,
558
+ v,
559
+ n,
560
+ e,
561
+ R,
562
+ h
563
+ ]), {
564
+ restorePositionSetting: h
565
+ };
566
+ }
567
+ function Ze({ open: t, onOpenChange: n, children: e, onDrag: a, onRelease: i, snapPoints: o, shouldScaleBackground: v = !1, setBackgroundColorOnScale: w = !0, closeThreshold: T = Ye, scrollLockTimeout: R = qe, dismissible: h = !0, handleOnly: f = !1, fadeFromIndex: m = o && o.length - 1, activeSnapPoint: B, setActiveSnapPoint: L, fixed: E, modal: U = !0, onClose: p, nested: M, noBodyStyles: A = !1, direction: c = "bottom", defaultOpen: j = !1, disablePreventScroll: Z = !0, snapToSequentialPoint: u = !1, preventScrollRestoration: b = !1, repositionInputs: y = !0, onAnimationEnd: I, container: P, autoFocus: W = !1 }) {
568
+ var l, F;
569
+ const [_ = !1, z] = ee({
570
+ defaultProp: j,
571
+ prop: t,
572
+ onChange: (s) => {
573
+ n?.(s), !s && !M && de(), setTimeout(() => {
574
+ I?.(s);
575
+ }, x.DURATION * 1e3), s && !U && typeof window < "u" && window.requestAnimationFrame(() => {
576
+ document.body.style.pointerEvents = "auto";
577
+ }), s || (document.body.style.pointerEvents = "auto");
578
+ }
579
+ }), [N, q] = r.useState(!1), [X, it] = r.useState(!1), [oe, Pt] = r.useState(!1), nt = r.useRef(null), wt = r.useRef(null), bt = r.useRef(null), St = r.useRef(null), st = r.useRef(null), lt = r.useRef(!1), Tt = r.useRef(null), Dt = r.useRef(0), rt = r.useRef(!1), Nt = r.useRef(!j), It = r.useRef(0), d = r.useRef(null), _t = r.useRef(((l = d.current) == null ? void 0 : l.getBoundingClientRect().height) || 0), Ht = r.useRef(((F = d.current) == null ? void 0 : F.getBoundingClientRect().width) || 0), Rt = r.useRef(0), ie = r.useCallback((s) => {
580
+ o && s === ut.length - 1 && (wt.current = /* @__PURE__ */ new Date());
581
+ }, []), { activeSnapPoint: se, activeSnapPointIndex: at, setActiveSnapPoint: Lt, onRelease: le, snapPointsOffset: ut, onDrag: ue, shouldFade: kt, getPercentageDragged: ce } = Ke({
582
+ snapPoints: o,
583
+ activeSnapPointProp: B,
584
+ setActiveSnapPointProp: L,
585
+ drawerRef: d,
586
+ fadeFromIndex: m,
587
+ overlayRef: nt,
588
+ onSnapPointChange: ie,
589
+ direction: c,
590
+ container: P,
591
+ snapToSequentialPoint: u
592
+ });
593
+ ke({
594
+ isDisabled: !_ || X || !U || oe || !N || !y || !Z
595
+ });
596
+ const { restorePositionSetting: de } = Qe({
597
+ isOpen: _,
598
+ modal: U,
599
+ nested: M ?? !1,
600
+ hasBeenOpened: N,
601
+ preventScrollRestoration: b,
602
+ noBodyStyles: A
603
+ });
604
+ function ht() {
605
+ return (window.innerWidth - At) / window.innerWidth;
606
+ }
607
+ function fe(s) {
608
+ var S, D;
609
+ !h && !o || d.current && !d.current.contains(s.target) || (_t.current = ((S = d.current) == null ? void 0 : S.getBoundingClientRect().height) || 0, Ht.current = ((D = d.current) == null ? void 0 : D.getBoundingClientRect().width) || 0, it(!0), bt.current = /* @__PURE__ */ new Date(), Xt() && window.addEventListener("touchend", () => lt.current = !1, {
610
+ once: !0
611
+ }), s.target.setPointerCapture(s.pointerId), Dt.current = C(c) ? s.pageY : s.pageX);
612
+ }
613
+ function Bt(s, S) {
614
+ var D;
615
+ let g = s;
616
+ const O = (D = window.getSelection()) == null ? void 0 : D.toString(), k = d.current ? yt(d.current, c) : null, H = /* @__PURE__ */ new Date();
617
+ if (g.tagName === "SELECT" || g.hasAttribute("data-vaul-no-drag") || g.closest("[data-vaul-no-drag]"))
618
+ return !1;
619
+ if (c === "right" || c === "left")
620
+ return !0;
621
+ if (wt.current && H.getTime() - wt.current.getTime() < 500)
622
+ return !1;
623
+ if (k !== null && (c === "bottom" ? k > 0 : k < 0))
624
+ return !0;
625
+ if (O && O.length > 0)
626
+ return !1;
627
+ if (st.current && H.getTime() - st.current.getTime() < R && k === 0 || S)
628
+ return st.current = H, !1;
629
+ for (; g; ) {
630
+ if (g.scrollHeight > g.clientHeight) {
631
+ if (g.scrollTop !== 0)
632
+ return st.current = /* @__PURE__ */ new Date(), !1;
633
+ if (g.getAttribute("role") === "dialog")
634
+ return !0;
635
+ }
636
+ g = g.parentNode;
637
+ }
638
+ return !0;
639
+ }
640
+ function me(s) {
641
+ if (d.current && X) {
642
+ const S = c === "bottom" || c === "right" ? 1 : -1, D = (Dt.current - (C(c) ? s.pageY : s.pageX)) * S, g = D > 0, O = o && !h && !g;
643
+ if (O && at === 0) return;
644
+ const k = Math.abs(D), H = document.querySelector("[data-vaul-drawer-wrapper]"), K = c === "bottom" || c === "top" ? _t.current : Ht.current;
645
+ let V = k / K;
646
+ const tt = ce(k, g);
647
+ if (tt !== null && (V = tt), O && V >= 1 || !lt.current && !Bt(s.target, g)) return;
648
+ if (d.current.classList.add(Ct), lt.current = !0, $(d.current, {
649
+ transition: "none"
650
+ }), $(nt.current, {
651
+ transition: "none"
652
+ }), o && ue({
653
+ draggedDistance: D
654
+ }), g && !o) {
655
+ const Y = Ve(D), gt = Math.min(Y * -1, 0) * S;
656
+ $(d.current, {
657
+ transform: C(c) ? `translate3d(0, ${gt}px, 0)` : `translate3d(${gt}px, 0, 0)`
658
+ });
659
+ return;
660
+ }
661
+ const G = 1 - V;
662
+ if ((kt || m && at === m - 1) && (a?.(s, V), $(nt.current, {
663
+ opacity: `${G}`,
664
+ transition: "none"
665
+ }, !0)), H && nt.current && v) {
666
+ const Y = Math.min(ht() + V * (1 - ht()), 1), gt = 8 - V * 8, Ft = Math.max(0, 14 - V * 14);
667
+ $(H, {
668
+ borderRadius: `${gt}px`,
669
+ transform: C(c) ? `scale(${Y}) translate3d(0, ${Ft}px, 0)` : `scale(${Y}) translate3d(${Ft}px, 0, 0)`,
670
+ transition: "none"
671
+ }, !0);
672
+ }
673
+ if (!o) {
674
+ const Y = k * S;
675
+ $(d.current, {
676
+ transform: C(c) ? `translate3d(0, ${Y}px, 0)` : `translate3d(${Y}px, 0, 0)`
677
+ });
678
+ }
679
+ }
680
+ }
681
+ r.useEffect(() => {
682
+ window.requestAnimationFrame(() => {
683
+ Nt.current = !0;
684
+ });
685
+ }, []), r.useEffect(() => {
686
+ var s;
687
+ function S() {
688
+ if (!d.current || !y) return;
689
+ const D = document.activeElement;
690
+ if ($t(D) || rt.current) {
691
+ var g;
692
+ const O = ((g = window.visualViewport) == null ? void 0 : g.height) || 0, k = window.innerHeight;
693
+ let H = k - O;
694
+ const K = d.current.getBoundingClientRect().height || 0, V = K > k * 0.8;
695
+ Rt.current || (Rt.current = K);
696
+ const tt = d.current.getBoundingClientRect().top;
697
+ if (Math.abs(It.current - H) > 60 && (rt.current = !rt.current), o && o.length > 0 && ut && at) {
698
+ const G = ut[at] || 0;
699
+ H += G;
700
+ }
701
+ if (It.current = H, K > O || rt.current) {
702
+ const G = d.current.getBoundingClientRect().height;
703
+ let Y = G;
704
+ G > O && (Y = O - (V ? tt : At)), E ? d.current.style.height = `${G - Math.max(H, 0)}px` : d.current.style.height = `${Math.max(Y, O - tt)}px`;
705
+ } else Me() || (d.current.style.height = `${Rt.current}px`);
706
+ o && o.length > 0 && !rt.current ? d.current.style.bottom = "0px" : d.current.style.bottom = `${Math.max(H, 0)}px`;
707
+ }
708
+ }
709
+ return (s = window.visualViewport) == null || s.addEventListener("resize", S), () => {
710
+ var D;
711
+ return (D = window.visualViewport) == null ? void 0 : D.removeEventListener("resize", S);
712
+ };
713
+ }, [
714
+ at,
715
+ o,
716
+ ut
717
+ ]);
718
+ function ct(s) {
719
+ pe(), p?.(), s || z(!1), setTimeout(() => {
720
+ o && Lt(o[0]);
721
+ }, x.DURATION * 1e3);
722
+ }
723
+ function Ut() {
724
+ if (!d.current) return;
725
+ const s = document.querySelector("[data-vaul-drawer-wrapper]"), S = yt(d.current, c);
726
+ $(d.current, {
727
+ transform: "translate3d(0, 0, 0)",
728
+ transition: `transform ${x.DURATION}s cubic-bezier(${x.EASE.join(",")})`
729
+ }), $(nt.current, {
730
+ transition: `opacity ${x.DURATION}s cubic-bezier(${x.EASE.join(",")})`,
731
+ opacity: "1"
732
+ }), v && S && S > 0 && _ && $(s, {
733
+ borderRadius: `${Zt}px`,
734
+ overflow: "hidden",
735
+ ...C(c) ? {
736
+ transform: `scale(${ht()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,
737
+ transformOrigin: "top"
738
+ } : {
739
+ transform: `scale(${ht()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,
740
+ transformOrigin: "left"
741
+ },
742
+ transitionProperty: "transform, border-radius",
743
+ transitionDuration: `${x.DURATION}s`,
744
+ transitionTimingFunction: `cubic-bezier(${x.EASE.join(",")})`
745
+ }, !0);
746
+ }
747
+ function pe() {
748
+ !X || !d.current || (d.current.classList.remove(Ct), lt.current = !1, it(!1), St.current = /* @__PURE__ */ new Date());
749
+ }
750
+ function we(s) {
751
+ if (!X || !d.current) return;
752
+ d.current.classList.remove(Ct), lt.current = !1, it(!1), St.current = /* @__PURE__ */ new Date();
753
+ const S = yt(d.current, c);
754
+ if (!s || !Bt(s.target, !1) || !S || Number.isNaN(S) || bt.current === null) return;
755
+ const D = St.current.getTime() - bt.current.getTime(), g = Dt.current - (C(c) ? s.pageY : s.pageX), O = Math.abs(g) / D;
756
+ if (O > 0.05 && (Pt(!0), setTimeout(() => {
757
+ Pt(!1);
758
+ }, 200)), o) {
759
+ le({
760
+ draggedDistance: g * (c === "bottom" || c === "right" ? 1 : -1),
761
+ closeDrawer: ct,
762
+ velocity: O,
763
+ dismissible: h
764
+ }), i?.(s, !0);
765
+ return;
766
+ }
767
+ if (c === "bottom" || c === "right" ? g > 0 : g < 0) {
768
+ Ut(), i?.(s, !0);
769
+ return;
770
+ }
771
+ if (O > Qt) {
772
+ ct(), i?.(s, !1);
773
+ return;
774
+ }
775
+ var k;
776
+ const H = Math.min((k = d.current.getBoundingClientRect().height) != null ? k : 0, window.innerHeight);
777
+ var K;
778
+ const V = Math.min((K = d.current.getBoundingClientRect().width) != null ? K : 0, window.innerWidth), tt = c === "left" || c === "right";
779
+ if (Math.abs(S) >= (tt ? V : H) * T) {
780
+ ct(), i?.(s, !1);
781
+ return;
782
+ }
783
+ i?.(s, !0), Ut();
784
+ }
785
+ r.useEffect(() => (_ && ($(document.documentElement, {
786
+ scrollBehavior: "auto"
787
+ }), wt.current = /* @__PURE__ */ new Date()), () => {
788
+ ze(document.documentElement, "scrollBehavior");
789
+ }), [
790
+ _
791
+ ]);
792
+ function he(s) {
793
+ const S = s ? (window.innerWidth - et) / window.innerWidth : 1, D = s ? -et : 0;
794
+ Tt.current && window.clearTimeout(Tt.current), $(d.current, {
795
+ transition: `transform ${x.DURATION}s cubic-bezier(${x.EASE.join(",")})`,
796
+ transform: C(c) ? `scale(${S}) translate3d(0, ${D}px, 0)` : `scale(${S}) translate3d(${D}px, 0, 0)`
797
+ }), !s && d.current && (Tt.current = setTimeout(() => {
798
+ const g = yt(d.current, c);
799
+ $(d.current, {
800
+ transition: "none",
801
+ transform: C(c) ? `translate3d(0, ${g}px, 0)` : `translate3d(${g}px, 0, 0)`
802
+ });
803
+ }, 500));
804
+ }
805
+ function ge(s, S) {
806
+ if (S < 0) return;
807
+ const D = (window.innerWidth - et) / window.innerWidth, g = D + S * (1 - D), O = -et + S * et;
808
+ $(d.current, {
809
+ transform: C(c) ? `scale(${g}) translate3d(0, ${O}px, 0)` : `scale(${g}) translate3d(${O}px, 0, 0)`,
810
+ transition: "none"
811
+ });
812
+ }
813
+ function ve(s, S) {
814
+ const D = C(c) ? window.innerHeight : window.innerWidth, g = S ? (D - et) / D : 1, O = S ? -et : 0;
815
+ S && $(d.current, {
816
+ transition: `transform ${x.DURATION}s cubic-bezier(${x.EASE.join(",")})`,
817
+ transform: C(c) ? `scale(${g}) translate3d(0, ${O}px, 0)` : `scale(${g}) translate3d(${O}px, 0, 0)`
818
+ });
819
+ }
820
+ return r.useEffect(() => {
821
+ U || window.requestAnimationFrame(() => {
822
+ document.body.style.pointerEvents = "auto";
823
+ });
824
+ }, [
825
+ U
826
+ ]), /* @__PURE__ */ r.createElement($e, {
827
+ defaultOpen: j,
828
+ onOpenChange: (s) => {
829
+ !h && !s || (s ? q(!0) : ct(!0), z(s));
830
+ },
831
+ open: _
832
+ }, /* @__PURE__ */ r.createElement(qt.Provider, {
833
+ value: {
834
+ activeSnapPoint: se,
835
+ snapPoints: o,
836
+ setActiveSnapPoint: Lt,
837
+ drawerRef: d,
838
+ overlayRef: nt,
839
+ onOpenChange: n,
840
+ onPress: fe,
841
+ onRelease: we,
842
+ onDrag: me,
843
+ dismissible: h,
844
+ shouldAnimate: Nt,
845
+ handleOnly: f,
846
+ isOpen: _,
847
+ isDragging: X,
848
+ shouldFade: kt,
849
+ closeDrawer: ct,
850
+ onNestedDrag: ge,
851
+ onNestedOpenChange: he,
852
+ onNestedRelease: ve,
853
+ keyboardIsOpen: rt,
854
+ modal: U,
855
+ snapPointsOffset: ut,
856
+ activeSnapPointIndex: at,
857
+ direction: c,
858
+ shouldScaleBackground: v,
859
+ setBackgroundColorOnScale: w,
860
+ noBodyStyles: A,
861
+ container: P,
862
+ autoFocus: W
863
+ }
864
+ }, e));
865
+ }
866
+ const ne = /* @__PURE__ */ r.forwardRef(function({ ...t }, n) {
867
+ const { overlayRef: e, snapPoints: a, onRelease: i, shouldFade: o, isOpen: v, modal: w, shouldAnimate: T } = pt(), R = Gt(n, e), h = a && a.length > 0;
868
+ if (!w)
869
+ return null;
870
+ const f = r.useCallback((m) => i(m), [
871
+ i
872
+ ]);
873
+ return /* @__PURE__ */ r.createElement(Te, {
874
+ onMouseUp: f,
875
+ ref: R,
876
+ "data-vaul-overlay": "",
877
+ "data-vaul-snap-points": v && h ? "true" : "false",
878
+ "data-vaul-snap-points-overlay": v && o ? "true" : "false",
879
+ "data-vaul-animate": T?.current ? "true" : "false",
880
+ ...t
881
+ });
882
+ });
883
+ ne.displayName = "Drawer.Overlay";
884
+ const re = /* @__PURE__ */ r.forwardRef(function({ onPointerDownOutside: t, style: n, onOpenAutoFocus: e, ...a }, i) {
885
+ const { drawerRef: o, onPress: v, onRelease: w, onDrag: T, keyboardIsOpen: R, snapPointsOffset: h, activeSnapPointIndex: f, modal: m, isOpen: B, direction: L, snapPoints: E, container: U, handleOnly: p, shouldAnimate: M, autoFocus: A } = pt(), [c, j] = r.useState(!1), Z = Gt(i, o), u = r.useRef(null), b = r.useRef(null), y = r.useRef(!1), I = E && E.length > 0;
886
+ Je();
887
+ const P = (l, F, _ = 0) => {
888
+ if (y.current) return !0;
889
+ const z = Math.abs(l.y), N = Math.abs(l.x), q = N > z, X = [
890
+ "bottom",
891
+ "right"
892
+ ].includes(F) ? 1 : -1;
893
+ if (F === "left" || F === "right") {
894
+ if (!(l.x * X < 0) && N >= 0 && N <= _)
895
+ return q;
896
+ } else if (!(l.y * X < 0) && z >= 0 && z <= _)
897
+ return !q;
898
+ return y.current = !0, !0;
899
+ };
900
+ r.useEffect(() => {
901
+ I && window.requestAnimationFrame(() => {
902
+ j(!0);
903
+ });
904
+ }, []);
905
+ function W(l) {
906
+ u.current = null, y.current = !1, w(l);
907
+ }
908
+ return /* @__PURE__ */ r.createElement(De, {
909
+ "data-vaul-drawer-direction": L,
910
+ "data-vaul-drawer": "",
911
+ "data-vaul-delayed-snap-points": c ? "true" : "false",
912
+ "data-vaul-snap-points": B && I ? "true" : "false",
913
+ "data-vaul-custom-container": U ? "true" : "false",
914
+ "data-vaul-animate": M?.current ? "true" : "false",
915
+ ...a,
916
+ ref: Z,
917
+ style: h && h.length > 0 ? {
918
+ "--snap-point-height": `${h[f ?? 0]}px`,
919
+ ...n
920
+ } : n,
921
+ onPointerDown: (l) => {
922
+ p || (a.onPointerDown == null || a.onPointerDown.call(a, l), u.current = {
923
+ x: l.pageX,
924
+ y: l.pageY
925
+ }, v(l));
926
+ },
927
+ onOpenAutoFocus: (l) => {
928
+ e?.(l), A || l.preventDefault();
929
+ },
930
+ onPointerDownOutside: (l) => {
931
+ if (t?.(l), !m || l.defaultPrevented) {
932
+ l.preventDefault();
933
+ return;
934
+ }
935
+ R.current && (R.current = !1);
936
+ },
937
+ onFocusOutside: (l) => {
938
+ if (!m) {
939
+ l.preventDefault();
940
+ return;
941
+ }
942
+ },
943
+ onPointerMove: (l) => {
944
+ if (b.current = l, p || (a.onPointerMove == null || a.onPointerMove.call(a, l), !u.current)) return;
945
+ const F = l.pageY - u.current.y, _ = l.pageX - u.current.x, z = l.pointerType === "touch" ? 10 : 2;
946
+ P({
947
+ x: _,
948
+ y: F
949
+ }, L, z) ? T(l) : (Math.abs(_) > z || Math.abs(F) > z) && (u.current = null);
950
+ },
951
+ onPointerUp: (l) => {
952
+ a.onPointerUp == null || a.onPointerUp.call(a, l), u.current = null, y.current = !1, w(l);
953
+ },
954
+ onPointerOut: (l) => {
955
+ a.onPointerOut == null || a.onPointerOut.call(a, l), W(b.current);
956
+ },
957
+ onContextMenu: (l) => {
958
+ a.onContextMenu == null || a.onContextMenu.call(a, l), b.current && W(b.current);
959
+ }
960
+ });
961
+ });
962
+ re.displayName = "Drawer.Content";
963
+ const tn = 250, en = 120, nn = /* @__PURE__ */ r.forwardRef(function({ preventCycle: t = !1, children: n, ...e }, a) {
964
+ const { closeDrawer: i, isDragging: o, snapPoints: v, activeSnapPoint: w, setActiveSnapPoint: T, dismissible: R, handleOnly: h, isOpen: f, onPress: m, onDrag: B } = pt(), L = r.useRef(null), E = r.useRef(!1);
965
+ function U() {
966
+ if (E.current) {
967
+ A();
968
+ return;
969
+ }
970
+ window.setTimeout(() => {
971
+ p();
972
+ }, en);
973
+ }
974
+ function p() {
975
+ if (o || t || E.current) {
976
+ A();
977
+ return;
978
+ }
979
+ if (A(), !v || v.length === 0) {
980
+ R || i();
981
+ return;
982
+ }
983
+ if (w === v[v.length - 1] && R) {
984
+ i();
985
+ return;
986
+ }
987
+ const j = v.findIndex((u) => u === w);
988
+ if (j === -1) return;
989
+ const Z = v[j + 1];
990
+ T(Z);
991
+ }
992
+ function M() {
993
+ L.current = window.setTimeout(() => {
994
+ E.current = !0;
995
+ }, tn);
996
+ }
997
+ function A() {
998
+ L.current && window.clearTimeout(L.current), E.current = !1;
999
+ }
1000
+ return /* @__PURE__ */ r.createElement("div", {
1001
+ onClick: U,
1002
+ onPointerCancel: A,
1003
+ onPointerDown: (c) => {
1004
+ h && m(c), M();
1005
+ },
1006
+ onPointerMove: (c) => {
1007
+ h && B(c);
1008
+ },
1009
+ // onPointerUp is already handled by the content component
1010
+ ref: a,
1011
+ "data-vaul-drawer-visible": f ? "true" : "false",
1012
+ "data-vaul-handle": "",
1013
+ "aria-hidden": "true",
1014
+ ...e
1015
+ }, /* @__PURE__ */ r.createElement("span", {
1016
+ "data-vaul-handle-hitarea": "",
1017
+ "aria-hidden": "true"
1018
+ }, n));
1019
+ });
1020
+ nn.displayName = "Drawer.Handle";
1021
+ function rn(t) {
1022
+ const n = pt(), { container: e = n.container, ...a } = t;
1023
+ return /* @__PURE__ */ r.createElement(xe, {
1024
+ container: e,
1025
+ ...a
1026
+ });
1027
+ }
1028
+ const Q = {
1029
+ Root: Ze,
1030
+ Content: re,
1031
+ Overlay: ne,
1032
+ Trigger: Ce,
1033
+ Portal: rn,
1034
+ Close: Oe,
1035
+ Title: Re,
1036
+ Description: Ee
1037
+ }, an = ({
1038
+ shouldScaleBackground: t = !0,
1039
+ ...n
1040
+ }) => /* @__PURE__ */ J(
1041
+ Q.Root,
1042
+ {
1043
+ shouldScaleBackground: t,
1044
+ ...n
1045
+ }
1046
+ );
1047
+ an.displayName = "Drawer";
1048
+ const pn = Q.Trigger, wn = Q.Close, on = Q.Portal, ae = mt.forwardRef(({ className: t, ...n }, e) => /* @__PURE__ */ J(
1049
+ Q.Overlay,
1050
+ {
1051
+ ref: e,
1052
+ className: ot("fixed inset-0 z-50 bg-black/50", t),
1053
+ ...n
1054
+ }
1055
+ ));
1056
+ ae.displayName = "DrawerOverlay";
1057
+ const sn = mt.forwardRef(({ className: t, children: n, ...e }, a) => /* @__PURE__ */ Wt(on, { children: [
1058
+ /* @__PURE__ */ J(ae, {}),
1059
+ /* @__PURE__ */ Wt(
1060
+ Q.Content,
1061
+ {
1062
+ ref: a,
1063
+ className: ot(
1064
+ "fixed inset-x-0 bottom-0 z-50 max-h-[85dvh] bg-card border-t border-border rounded-t-xl",
1065
+ t
1066
+ ),
1067
+ ...e,
1068
+ children: [
1069
+ /* @__PURE__ */ J("div", { className: "mx-auto mt-3 h-1.5 w-12 rounded-full bg-muted-foreground/30" }),
1070
+ n
1071
+ ]
1072
+ }
1073
+ )
1074
+ ] }));
1075
+ sn.displayName = "DrawerContent";
1076
+ function hn({ className: t, ...n }) {
1077
+ return /* @__PURE__ */ J(
1078
+ "div",
1079
+ {
1080
+ className: ot("flex flex-col gap-1 px-4 py-3 text-center", t),
1081
+ ...n
1082
+ }
1083
+ );
1084
+ }
1085
+ function gn({ className: t, ...n }) {
1086
+ return /* @__PURE__ */ J(
1087
+ "div",
1088
+ {
1089
+ className: ot(
1090
+ "flex items-center gap-2 px-4 py-3 border-t border-border",
1091
+ t
1092
+ ),
1093
+ ...n
1094
+ }
1095
+ );
1096
+ }
1097
+ const ln = mt.forwardRef(({ className: t, ...n }, e) => /* @__PURE__ */ J(
1098
+ Q.Title,
1099
+ {
1100
+ ref: e,
1101
+ className: ot("text-base font-semibold text-foreground", t),
1102
+ ...n
1103
+ }
1104
+ ));
1105
+ ln.displayName = "DrawerTitle";
1106
+ const un = mt.forwardRef(({ className: t, ...n }, e) => /* @__PURE__ */ J(
1107
+ Q.Description,
1108
+ {
1109
+ ref: e,
1110
+ className: ot("text-sm text-muted-foreground", t),
1111
+ ...n
1112
+ }
1113
+ ));
1114
+ un.displayName = "DrawerDescription";
1115
+ export {
1116
+ an as Drawer,
1117
+ wn as DrawerClose,
1118
+ sn as DrawerContent,
1119
+ un as DrawerDescription,
1120
+ gn as DrawerFooter,
1121
+ hn as DrawerHeader,
1122
+ ae as DrawerOverlay,
1123
+ on as DrawerPortal,
1124
+ ln as DrawerTitle,
1125
+ pn as DrawerTrigger
1126
+ };