@krosoft/react 0.0.21 → 0.0.23

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 (42) hide show
  1. package/dist/KpiCards-CZBzcNpV.js +336 -0
  2. package/dist/{LoadingState-C91zWRVu.js → LoadingState-Br3lWjL2.js} +4 -5
  3. package/dist/SearchInput-CVB8yapU.js +45 -0
  4. package/dist/badge-GmlbyLzK.js +26 -0
  5. package/dist/components/core/cards/KpiCard.d.ts +13 -0
  6. package/dist/components/core/cards/KpiCard.d.ts.map +1 -0
  7. package/dist/components/core/cards/KpiCards.d.ts +7 -0
  8. package/dist/components/core/cards/KpiCards.d.ts.map +1 -0
  9. package/dist/components/core/cards/index.d.ts +4 -0
  10. package/dist/components/core/cards/index.d.ts.map +1 -0
  11. package/dist/components/core/cards/index.js +5 -0
  12. package/dist/components/core/index.d.ts +2 -0
  13. package/dist/components/core/index.d.ts.map +1 -1
  14. package/dist/components/core/index.js +8 -3
  15. package/dist/components/core/inputs/SearchInput.d.ts +12 -0
  16. package/dist/components/core/inputs/SearchInput.d.ts.map +1 -0
  17. package/dist/components/core/inputs/index.d.ts +2 -0
  18. package/dist/components/core/inputs/index.d.ts.map +1 -0
  19. package/dist/components/core/inputs/index.js +4 -0
  20. package/dist/components/core/states/index.js +1 -1
  21. package/dist/components/index.js +31 -16
  22. package/dist/components/ui/badge.d.ts +1 -1
  23. package/dist/components/ui/button.d.ts +12 -0
  24. package/dist/components/ui/button.d.ts.map +1 -0
  25. package/dist/components/ui/card.d.ts +9 -0
  26. package/dist/components/ui/card.d.ts.map +1 -0
  27. package/dist/components/ui/index.d.ts +4 -0
  28. package/dist/components/ui/index.d.ts.map +1 -1
  29. package/dist/components/ui/index.js +21 -11
  30. package/dist/components/ui/input.d.ts +4 -0
  31. package/dist/components/ui/input.d.ts.map +1 -0
  32. package/dist/helpers/index.js +1 -1
  33. package/dist/hooks/index.d.ts +1 -0
  34. package/dist/hooks/index.d.ts.map +1 -1
  35. package/dist/hooks/index.js +28 -38
  36. package/dist/hooks/ui/useMobile.d.ts.map +1 -1
  37. package/dist/hooks/ui/useNotifications.d.ts +5 -4
  38. package/dist/hooks/ui/useNotifications.d.ts.map +1 -1
  39. package/dist/{index-DxGGCUCL.js → index-gWiv5-6R.js} +2 -2
  40. package/dist/toast-CysfMIUk.js +1107 -0
  41. package/package.json +6 -2
  42. package/dist/toast-DZWzsFB2.js +0 -1064
@@ -0,0 +1,1107 @@
1
+ import { jsx as f, jsxs as re, Fragment as ye } from "react/jsx-runtime";
2
+ import * as o from "react";
3
+ import F from "react";
4
+ import { a as Ye, c as P } from "./index-gWiv5-6R.js";
5
+ import * as we from "react-dom";
6
+ import qe from "react-dom";
7
+ import { c as Ze } from "./createLucideIcon-BxMj32TH.js";
8
+ const le = (e) => typeof e == "boolean" ? `${e}` : e === 0 ? "0" : e, de = Ye, oe = (e, t) => (n) => {
9
+ var r;
10
+ if ((t == null ? void 0 : t.variants) == null) return de(e, n == null ? void 0 : n.class, n == null ? void 0 : n.className);
11
+ const { variants: s, defaultVariants: a } = t, u = Object.keys(s).map((i) => {
12
+ const l = n == null ? void 0 : n[i], m = a == null ? void 0 : a[i];
13
+ if (l === null) return null;
14
+ const y = le(l) || le(m);
15
+ return s[i][y];
16
+ }), c = n && Object.entries(n).reduce((i, l) => {
17
+ let [m, y] = l;
18
+ return y === void 0 || (i[m] = y), i;
19
+ }, {}), p = t == null || (r = t.compoundVariants) === null || r === void 0 ? void 0 : r.reduce((i, l) => {
20
+ let { class: m, className: y, ...b } = l;
21
+ return Object.entries(b).every((C) => {
22
+ let [v, d] = C;
23
+ return Array.isArray(d) ? d.includes({
24
+ ...a,
25
+ ...c
26
+ }[v]) : {
27
+ ...a,
28
+ ...c
29
+ }[v] === d;
30
+ }) ? [
31
+ ...i,
32
+ m,
33
+ y
34
+ ] : i;
35
+ }, []);
36
+ return de(e, u, p, n == null ? void 0 : n.class, n == null ? void 0 : n.className);
37
+ }, Ge = oe(
38
+ "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
39
+ {
40
+ variants: {
41
+ variant: {
42
+ default: "bg-background text-foreground",
43
+ destructive: "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive"
44
+ }
45
+ },
46
+ defaultVariants: {
47
+ variant: "default"
48
+ }
49
+ }
50
+ ), Je = o.forwardRef(
51
+ ({ className: e, variant: t, ...n }, r) => /* @__PURE__ */ f("div", { ref: r, role: "alert", className: P(Ge({ variant: t }), e), ...n })
52
+ );
53
+ Je.displayName = "Alert";
54
+ const Qe = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f("h5", { ref: n, className: P("mb-1 font-medium leading-none tracking-tight", e), ...t }));
55
+ Qe.displayName = "AlertTitle";
56
+ const et = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f("div", { ref: n, className: P("text-sm [&_p]:leading-relaxed", e), ...t }));
57
+ et.displayName = "AlertDescription";
58
+ function fe(e, t) {
59
+ if (typeof e == "function")
60
+ return e(t);
61
+ e != null && (e.current = t);
62
+ }
63
+ function ge(...e) {
64
+ return (t) => {
65
+ let n = !1;
66
+ const r = e.map((s) => {
67
+ const a = fe(s, t);
68
+ return !n && typeof a == "function" && (n = !0), a;
69
+ });
70
+ if (n)
71
+ return () => {
72
+ for (let s = 0; s < r.length; s++) {
73
+ const a = r[s];
74
+ typeof a == "function" ? a() : fe(e[s], null);
75
+ }
76
+ };
77
+ };
78
+ }
79
+ function k(...e) {
80
+ return o.useCallback(ge(...e), e);
81
+ }
82
+ // @__NO_SIDE_EFFECTS__
83
+ function q(e) {
84
+ const t = /* @__PURE__ */ nt(e), n = o.forwardRef((r, s) => {
85
+ const { children: a, ...u } = r, c = o.Children.toArray(a), p = c.find(ot);
86
+ if (p) {
87
+ const i = p.props.children, l = c.map((m) => m === p ? o.Children.count(i) > 1 ? o.Children.only(null) : o.isValidElement(i) ? i.props.children : null : m);
88
+ return /* @__PURE__ */ f(t, { ...u, ref: s, children: o.isValidElement(i) ? o.cloneElement(i, void 0, l) : null });
89
+ }
90
+ return /* @__PURE__ */ f(t, { ...u, ref: s, children: a });
91
+ });
92
+ return n.displayName = `${e}.Slot`, n;
93
+ }
94
+ var tt = /* @__PURE__ */ q("Slot");
95
+ // @__NO_SIDE_EFFECTS__
96
+ function nt(e) {
97
+ const t = o.forwardRef((n, r) => {
98
+ const { children: s, ...a } = n;
99
+ if (o.isValidElement(s)) {
100
+ const u = it(s), c = st(a, s.props);
101
+ return s.type !== o.Fragment && (c.ref = r ? ge(r, u) : u), o.cloneElement(s, c);
102
+ }
103
+ return o.Children.count(s) > 1 ? o.Children.only(null) : null;
104
+ });
105
+ return t.displayName = `${e}.SlotClone`, t;
106
+ }
107
+ var rt = Symbol("radix.slottable");
108
+ function ot(e) {
109
+ return o.isValidElement(e) && typeof e.type == "function" && "__radixId" in e.type && e.type.__radixId === rt;
110
+ }
111
+ function st(e, t) {
112
+ const n = { ...t };
113
+ for (const r in t) {
114
+ const s = e[r], a = t[r];
115
+ /^on[A-Z]/.test(r) ? s && a ? n[r] = (...c) => {
116
+ const p = a(...c);
117
+ return s(...c), p;
118
+ } : s && (n[r] = s) : r === "style" ? n[r] = { ...s, ...a } : r === "className" && (n[r] = [s, a].filter(Boolean).join(" "));
119
+ }
120
+ return { ...e, ...n };
121
+ }
122
+ function it(e) {
123
+ var r, s;
124
+ let t = (r = Object.getOwnPropertyDescriptor(e.props, "ref")) == null ? void 0 : r.get, n = t && "isReactWarning" in t && t.isReactWarning;
125
+ return n ? e.ref : (t = (s = Object.getOwnPropertyDescriptor(e, "ref")) == null ? void 0 : s.get, n = t && "isReactWarning" in t && t.isReactWarning, n ? e.props.ref : e.props.ref || e.ref);
126
+ }
127
+ const at = oe(
128
+ "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",
129
+ {
130
+ variants: {
131
+ variant: {
132
+ default: "bg-primary text-primary-foreground hover:bg-primary/90",
133
+ destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
134
+ outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
135
+ secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
136
+ ghost: "hover:bg-accent hover:text-accent-foreground",
137
+ link: "text-primary underline-offset-4 hover:underline",
138
+ styled: "bg-gradient-to-r from-slate-900 to-purple-700 hover:from-slate-800 hover:to-purple-600 text-white shadow-lg shadow-purple-500/25 px-6 h-12"
139
+ },
140
+ size: {
141
+ default: "h-10 px-4 py-2",
142
+ sm: "h-9 rounded-md px-3",
143
+ lg: "h-11 rounded-md px-8",
144
+ icon: "h-10 w-10"
145
+ }
146
+ },
147
+ defaultVariants: {
148
+ variant: "default",
149
+ size: "default"
150
+ }
151
+ }
152
+ ), ct = o.forwardRef(({ className: e, variant: t, size: n, asChild: r = !1, ...s }, a) => /* @__PURE__ */ f(r ? tt : "button", { className: P(at({ variant: t, size: n, className: e })), ref: a, ...s }));
153
+ ct.displayName = "Button";
154
+ const ut = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f("div", { ref: n, className: P("rounded-lg border bg-card text-card-foreground shadow-sm", e), ...t }));
155
+ ut.displayName = "Card";
156
+ const lt = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f("div", { ref: n, className: P("flex flex-col space-y-1.5 p-6", e), ...t }));
157
+ lt.displayName = "CardHeader";
158
+ const dt = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f("h3", { ref: n, className: P("text-2xl font-semibold leading-none tracking-tight", e), ...t }));
159
+ dt.displayName = "CardTitle";
160
+ const ft = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f("p", { ref: n, className: P("text-sm text-muted-foreground", e), ...t }));
161
+ ft.displayName = "CardDescription";
162
+ const pt = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f("div", { ref: n, className: P("p-6 pt-0", e), ...t }));
163
+ pt.displayName = "CardContent";
164
+ const mt = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f("div", { ref: n, className: P("flex items-center p-6 pt-0", e), ...t }));
165
+ mt.displayName = "CardFooter";
166
+ const vt = o.forwardRef(({ className: e, type: t, ...n }, r) => /* @__PURE__ */ f(
167
+ "input",
168
+ {
169
+ type: t,
170
+ className: P(
171
+ "flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
172
+ e
173
+ ),
174
+ ref: r,
175
+ ...n
176
+ }
177
+ ));
178
+ vt.displayName = "Input";
179
+ function S(e, t, { checkForDefaultPrevented: n = !0 } = {}) {
180
+ return function(s) {
181
+ if (e == null || e(s), n === !1 || !s.defaultPrevented)
182
+ return t == null ? void 0 : t(s);
183
+ };
184
+ }
185
+ function Ee(e, t = []) {
186
+ let n = [];
187
+ function r(a, u) {
188
+ const c = o.createContext(u), p = n.length;
189
+ n = [...n, u];
190
+ const i = (m) => {
191
+ var x;
192
+ const { scope: y, children: b, ...C } = m, v = ((x = y == null ? void 0 : y[e]) == null ? void 0 : x[p]) || c, d = o.useMemo(() => C, Object.values(C));
193
+ return /* @__PURE__ */ f(v.Provider, { value: d, children: b });
194
+ };
195
+ i.displayName = a + "Provider";
196
+ function l(m, y) {
197
+ var v;
198
+ const b = ((v = y == null ? void 0 : y[e]) == null ? void 0 : v[p]) || c, C = o.useContext(b);
199
+ if (C) return C;
200
+ if (u !== void 0) return u;
201
+ throw new Error(`\`${m}\` must be used within \`${a}\``);
202
+ }
203
+ return [i, l];
204
+ }
205
+ const s = () => {
206
+ const a = n.map((u) => o.createContext(u));
207
+ return function(c) {
208
+ const p = (c == null ? void 0 : c[e]) || a;
209
+ return o.useMemo(
210
+ () => ({ [`__scope${e}`]: { ...c, [e]: p } }),
211
+ [c, p]
212
+ );
213
+ };
214
+ };
215
+ return s.scopeName = e, [r, yt(s, ...t)];
216
+ }
217
+ function yt(...e) {
218
+ const t = e[0];
219
+ if (e.length === 1) return t;
220
+ const n = () => {
221
+ const r = e.map((s) => ({
222
+ useScope: s(),
223
+ scopeName: s.scopeName
224
+ }));
225
+ return function(a) {
226
+ const u = r.reduce((c, { useScope: p, scopeName: i }) => {
227
+ const m = p(a)[`__scope${i}`];
228
+ return { ...c, ...m };
229
+ }, {});
230
+ return o.useMemo(() => ({ [`__scope${t.scopeName}`]: u }), [u]);
231
+ };
232
+ };
233
+ return n.scopeName = t.scopeName, n;
234
+ }
235
+ function wt(e) {
236
+ const t = e + "CollectionProvider", [n, r] = Ee(t), [s, a] = n(
237
+ t,
238
+ { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }
239
+ ), u = (v) => {
240
+ const { scope: d, children: x } = v, g = F.useRef(null), E = F.useRef(/* @__PURE__ */ new Map()).current;
241
+ return /* @__PURE__ */ f(s, { scope: d, itemMap: E, collectionRef: g, children: x });
242
+ };
243
+ u.displayName = t;
244
+ const c = e + "CollectionSlot", p = /* @__PURE__ */ q(c), i = F.forwardRef(
245
+ (v, d) => {
246
+ const { scope: x, children: g } = v, E = a(c, x), T = k(d, E.collectionRef);
247
+ return /* @__PURE__ */ f(p, { ref: T, children: g });
248
+ }
249
+ );
250
+ i.displayName = c;
251
+ const l = e + "CollectionItemSlot", m = "data-radix-collection-item", y = /* @__PURE__ */ q(l), b = F.forwardRef(
252
+ (v, d) => {
253
+ const { scope: x, children: g, ...E } = v, T = F.useRef(null), R = k(d, T), N = a(l, x);
254
+ return F.useEffect(() => (N.itemMap.set(T, { ref: T, ...E }), () => void N.itemMap.delete(T))), /* @__PURE__ */ f(y, { [m]: "", ref: R, children: g });
255
+ }
256
+ );
257
+ b.displayName = l;
258
+ function C(v) {
259
+ const d = a(e + "CollectionConsumer", v);
260
+ return F.useCallback(() => {
261
+ const g = d.collectionRef.current;
262
+ if (!g) return [];
263
+ const E = Array.from(g.querySelectorAll(`[${m}]`));
264
+ return Array.from(d.itemMap.values()).sort(
265
+ (N, h) => E.indexOf(N.ref.current) - E.indexOf(h.ref.current)
266
+ );
267
+ }, [d.collectionRef, d.itemMap]);
268
+ }
269
+ return [
270
+ { Provider: u, Slot: i, ItemSlot: b },
271
+ C,
272
+ r
273
+ ];
274
+ }
275
+ var gt = [
276
+ "a",
277
+ "button",
278
+ "div",
279
+ "form",
280
+ "h2",
281
+ "h3",
282
+ "img",
283
+ "input",
284
+ "label",
285
+ "li",
286
+ "nav",
287
+ "ol",
288
+ "p",
289
+ "select",
290
+ "span",
291
+ "svg",
292
+ "ul"
293
+ ], O = gt.reduce((e, t) => {
294
+ const n = /* @__PURE__ */ q(`Primitive.${t}`), r = o.forwardRef((s, a) => {
295
+ const { asChild: u, ...c } = s, p = u ? n : t;
296
+ return typeof window < "u" && (window[Symbol.for("radix-ui")] = !0), /* @__PURE__ */ f(p, { ...c, ref: a });
297
+ });
298
+ return r.displayName = `Primitive.${t}`, { ...e, [t]: r };
299
+ }, {});
300
+ function he(e, t) {
301
+ e && we.flushSync(() => e.dispatchEvent(t));
302
+ }
303
+ function V(e) {
304
+ const t = o.useRef(e);
305
+ return o.useEffect(() => {
306
+ t.current = e;
307
+ }), o.useMemo(() => (...n) => {
308
+ var r;
309
+ return (r = t.current) == null ? void 0 : r.call(t, ...n);
310
+ }, []);
311
+ }
312
+ function Et(e, t = globalThis == null ? void 0 : globalThis.document) {
313
+ const n = V(e);
314
+ o.useEffect(() => {
315
+ const r = (s) => {
316
+ s.key === "Escape" && n(s);
317
+ };
318
+ return t.addEventListener("keydown", r, { capture: !0 }), () => t.removeEventListener("keydown", r, { capture: !0 });
319
+ }, [n, t]);
320
+ }
321
+ var ht = "DismissableLayer", Q = "dismissableLayer.update", bt = "dismissableLayer.pointerDownOutside", Tt = "dismissableLayer.focusOutside", pe, be = o.createContext({
322
+ layers: /* @__PURE__ */ new Set(),
323
+ layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
324
+ branches: /* @__PURE__ */ new Set()
325
+ }), Te = o.forwardRef(
326
+ (e, t) => {
327
+ const {
328
+ disableOutsidePointerEvents: n = !1,
329
+ onEscapeKeyDown: r,
330
+ onPointerDownOutside: s,
331
+ onFocusOutside: a,
332
+ onInteractOutside: u,
333
+ onDismiss: c,
334
+ ...p
335
+ } = e, i = o.useContext(be), [l, m] = o.useState(null), y = (l == null ? void 0 : l.ownerDocument) ?? (globalThis == null ? void 0 : globalThis.document), [, b] = o.useState({}), C = k(t, (h) => m(h)), v = Array.from(i.layers), [d] = [...i.layersWithOutsidePointerEventsDisabled].slice(-1), x = v.indexOf(d), g = l ? v.indexOf(l) : -1, E = i.layersWithOutsidePointerEventsDisabled.size > 0, T = g >= x, R = Ct((h) => {
336
+ const I = h.target, D = [...i.branches].some((L) => L.contains(I));
337
+ !T || D || (s == null || s(h), u == null || u(h), h.defaultPrevented || c == null || c());
338
+ }, y), N = Nt((h) => {
339
+ const I = h.target;
340
+ [...i.branches].some((L) => L.contains(I)) || (a == null || a(h), u == null || u(h), h.defaultPrevented || c == null || c());
341
+ }, y);
342
+ return Et((h) => {
343
+ g === i.layers.size - 1 && (r == null || r(h), !h.defaultPrevented && c && (h.preventDefault(), c()));
344
+ }, y), o.useEffect(() => {
345
+ if (l)
346
+ return n && (i.layersWithOutsidePointerEventsDisabled.size === 0 && (pe = y.body.style.pointerEvents, y.body.style.pointerEvents = "none"), i.layersWithOutsidePointerEventsDisabled.add(l)), i.layers.add(l), me(), () => {
347
+ n && i.layersWithOutsidePointerEventsDisabled.size === 1 && (y.body.style.pointerEvents = pe);
348
+ };
349
+ }, [l, y, n, i]), o.useEffect(() => () => {
350
+ l && (i.layers.delete(l), i.layersWithOutsidePointerEventsDisabled.delete(l), me());
351
+ }, [l, i]), o.useEffect(() => {
352
+ const h = () => b({});
353
+ return document.addEventListener(Q, h), () => document.removeEventListener(Q, h);
354
+ }, []), /* @__PURE__ */ f(
355
+ O.div,
356
+ {
357
+ ...p,
358
+ ref: C,
359
+ style: {
360
+ pointerEvents: E ? T ? "auto" : "none" : void 0,
361
+ ...e.style
362
+ },
363
+ onFocusCapture: S(e.onFocusCapture, N.onFocusCapture),
364
+ onBlurCapture: S(e.onBlurCapture, N.onBlurCapture),
365
+ onPointerDownCapture: S(
366
+ e.onPointerDownCapture,
367
+ R.onPointerDownCapture
368
+ )
369
+ }
370
+ );
371
+ }
372
+ );
373
+ Te.displayName = ht;
374
+ var xt = "DismissableLayerBranch", xe = o.forwardRef((e, t) => {
375
+ const n = o.useContext(be), r = o.useRef(null), s = k(t, r);
376
+ return o.useEffect(() => {
377
+ const a = r.current;
378
+ if (a)
379
+ return n.branches.add(a), () => {
380
+ n.branches.delete(a);
381
+ };
382
+ }, [n.branches]), /* @__PURE__ */ f(O.div, { ...e, ref: s });
383
+ });
384
+ xe.displayName = xt;
385
+ function Ct(e, t = globalThis == null ? void 0 : globalThis.document) {
386
+ const n = V(e), r = o.useRef(!1), s = o.useRef(() => {
387
+ });
388
+ return o.useEffect(() => {
389
+ const a = (c) => {
390
+ if (c.target && !r.current) {
391
+ let p = function() {
392
+ Ce(
393
+ bt,
394
+ n,
395
+ i,
396
+ { discrete: !0 }
397
+ );
398
+ };
399
+ const i = { originalEvent: c };
400
+ c.pointerType === "touch" ? (t.removeEventListener("click", s.current), s.current = p, t.addEventListener("click", s.current, { once: !0 })) : p();
401
+ } else
402
+ t.removeEventListener("click", s.current);
403
+ r.current = !1;
404
+ }, u = window.setTimeout(() => {
405
+ t.addEventListener("pointerdown", a);
406
+ }, 0);
407
+ return () => {
408
+ window.clearTimeout(u), t.removeEventListener("pointerdown", a), t.removeEventListener("click", s.current);
409
+ };
410
+ }, [t, n]), {
411
+ // ensures we check React component tree (not just DOM tree)
412
+ onPointerDownCapture: () => r.current = !0
413
+ };
414
+ }
415
+ function Nt(e, t = globalThis == null ? void 0 : globalThis.document) {
416
+ const n = V(e), r = o.useRef(!1);
417
+ return o.useEffect(() => {
418
+ const s = (a) => {
419
+ a.target && !r.current && Ce(Tt, n, { originalEvent: a }, {
420
+ discrete: !1
421
+ });
422
+ };
423
+ return t.addEventListener("focusin", s), () => t.removeEventListener("focusin", s);
424
+ }, [t, n]), {
425
+ onFocusCapture: () => r.current = !0,
426
+ onBlurCapture: () => r.current = !1
427
+ };
428
+ }
429
+ function me() {
430
+ const e = new CustomEvent(Q);
431
+ document.dispatchEvent(e);
432
+ }
433
+ function Ce(e, t, n, { discrete: r }) {
434
+ const s = n.originalEvent.target, a = new CustomEvent(e, { bubbles: !1, cancelable: !0, detail: n });
435
+ t && s.addEventListener(e, t, { once: !0 }), r ? he(s, a) : s.dispatchEvent(a);
436
+ }
437
+ var Rt = Te, Pt = xe, B = globalThis != null && globalThis.document ? o.useLayoutEffect : () => {
438
+ }, St = "Portal", Ne = o.forwardRef((e, t) => {
439
+ var c;
440
+ const { container: n, ...r } = e, [s, a] = o.useState(!1);
441
+ B(() => a(!0), []);
442
+ const u = n || s && ((c = globalThis == null ? void 0 : globalThis.document) == null ? void 0 : c.body);
443
+ return u ? qe.createPortal(/* @__PURE__ */ f(O.div, { ...r, ref: t }), u) : null;
444
+ });
445
+ Ne.displayName = St;
446
+ function At(e, t) {
447
+ return o.useReducer((n, r) => t[n][r] ?? n, e);
448
+ }
449
+ var Re = (e) => {
450
+ const { present: t, children: n } = e, r = It(t), s = typeof n == "function" ? n({ present: r.isPresent }) : o.Children.only(n), a = k(r.ref, Ot(s));
451
+ return typeof n == "function" || r.isPresent ? o.cloneElement(s, { ref: a }) : null;
452
+ };
453
+ Re.displayName = "Presence";
454
+ function It(e) {
455
+ const [t, n] = o.useState(), r = o.useRef(null), s = o.useRef(e), a = o.useRef("none"), u = e ? "mounted" : "unmounted", [c, p] = At(u, {
456
+ mounted: {
457
+ UNMOUNT: "unmounted",
458
+ ANIMATION_OUT: "unmountSuspended"
459
+ },
460
+ unmountSuspended: {
461
+ MOUNT: "mounted",
462
+ ANIMATION_END: "unmounted"
463
+ },
464
+ unmounted: {
465
+ MOUNT: "mounted"
466
+ }
467
+ });
468
+ return o.useEffect(() => {
469
+ const i = X(r.current);
470
+ a.current = c === "mounted" ? i : "none";
471
+ }, [c]), B(() => {
472
+ const i = r.current, l = s.current;
473
+ if (l !== e) {
474
+ const y = a.current, b = X(i);
475
+ e ? p("MOUNT") : b === "none" || (i == null ? void 0 : i.display) === "none" ? p("UNMOUNT") : p(l && y !== b ? "ANIMATION_OUT" : "UNMOUNT"), s.current = e;
476
+ }
477
+ }, [e, p]), B(() => {
478
+ if (t) {
479
+ let i;
480
+ const l = t.ownerDocument.defaultView ?? window, m = (b) => {
481
+ const v = X(r.current).includes(CSS.escape(b.animationName));
482
+ if (b.target === t && v && (p("ANIMATION_END"), !s.current)) {
483
+ const d = t.style.animationFillMode;
484
+ t.style.animationFillMode = "forwards", i = l.setTimeout(() => {
485
+ t.style.animationFillMode === "forwards" && (t.style.animationFillMode = d);
486
+ });
487
+ }
488
+ }, y = (b) => {
489
+ b.target === t && (a.current = X(r.current));
490
+ };
491
+ return t.addEventListener("animationstart", y), t.addEventListener("animationcancel", m), t.addEventListener("animationend", m), () => {
492
+ l.clearTimeout(i), t.removeEventListener("animationstart", y), t.removeEventListener("animationcancel", m), t.removeEventListener("animationend", m);
493
+ };
494
+ } else
495
+ p("ANIMATION_END");
496
+ }, [t, p]), {
497
+ isPresent: ["mounted", "unmountSuspended"].includes(c),
498
+ ref: o.useCallback((i) => {
499
+ r.current = i ? getComputedStyle(i) : null, n(i);
500
+ }, [])
501
+ };
502
+ }
503
+ function X(e) {
504
+ return (e == null ? void 0 : e.animationName) || "none";
505
+ }
506
+ function Ot(e) {
507
+ var r, s;
508
+ let t = (r = Object.getOwnPropertyDescriptor(e.props, "ref")) == null ? void 0 : r.get, n = t && "isReactWarning" in t && t.isReactWarning;
509
+ return n ? e.ref : (t = (s = Object.getOwnPropertyDescriptor(e, "ref")) == null ? void 0 : s.get, n = t && "isReactWarning" in t && t.isReactWarning, n ? e.props.ref : e.props.ref || e.ref);
510
+ }
511
+ var Dt = o[" useInsertionEffect ".trim().toString()] || B;
512
+ function _t({
513
+ prop: e,
514
+ defaultProp: t,
515
+ onChange: n = () => {
516
+ },
517
+ caller: r
518
+ }) {
519
+ const [s, a, u] = Lt({
520
+ defaultProp: t,
521
+ onChange: n
522
+ }), c = e !== void 0, p = c ? e : s;
523
+ {
524
+ const l = o.useRef(e !== void 0);
525
+ o.useEffect(() => {
526
+ const m = l.current;
527
+ m !== c && console.warn(
528
+ `${r} is changing from ${m ? "controlled" : "uncontrolled"} to ${c ? "controlled" : "uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`
529
+ ), l.current = c;
530
+ }, [c, r]);
531
+ }
532
+ const i = o.useCallback(
533
+ (l) => {
534
+ var m;
535
+ if (c) {
536
+ const y = Mt(l) ? l(e) : l;
537
+ y !== e && ((m = u.current) == null || m.call(u, y));
538
+ } else
539
+ a(l);
540
+ },
541
+ [c, e, a, u]
542
+ );
543
+ return [p, i];
544
+ }
545
+ function Lt({
546
+ defaultProp: e,
547
+ onChange: t
548
+ }) {
549
+ const [n, r] = o.useState(e), s = o.useRef(n), a = o.useRef(t);
550
+ return Dt(() => {
551
+ a.current = t;
552
+ }, [t]), o.useEffect(() => {
553
+ var u;
554
+ s.current !== n && ((u = a.current) == null || u.call(a, n), s.current = n);
555
+ }, [n, s]), [n, r, a];
556
+ }
557
+ function Mt(e) {
558
+ return typeof e == "function";
559
+ }
560
+ var Ft = Object.freeze({
561
+ // See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
562
+ position: "absolute",
563
+ border: 0,
564
+ width: 1,
565
+ height: 1,
566
+ padding: 0,
567
+ margin: -1,
568
+ overflow: "hidden",
569
+ clip: "rect(0, 0, 0, 0)",
570
+ whiteSpace: "nowrap",
571
+ wordWrap: "normal"
572
+ }), kt = "VisuallyHidden", se = o.forwardRef(
573
+ (e, t) => /* @__PURE__ */ f(
574
+ O.span,
575
+ {
576
+ ...e,
577
+ ref: t,
578
+ style: { ...Ft, ...e.style }
579
+ }
580
+ )
581
+ );
582
+ se.displayName = kt;
583
+ var ie = "ToastProvider", [ae, Vt, Wt] = wt("Toast"), [Pe] = Ee("Toast", [Wt]), [$t, Z] = Pe(ie), Se = (e) => {
584
+ const {
585
+ __scopeToast: t,
586
+ label: n = "Notification",
587
+ duration: r = 5e3,
588
+ swipeDirection: s = "right",
589
+ swipeThreshold: a = 50,
590
+ children: u
591
+ } = e, [c, p] = o.useState(null), [i, l] = o.useState(0), m = o.useRef(!1), y = o.useRef(!1);
592
+ return n.trim() || console.error(
593
+ `Invalid prop \`label\` supplied to \`${ie}\`. Expected non-empty \`string\`.`
594
+ ), /* @__PURE__ */ f(ae.Provider, { scope: t, children: /* @__PURE__ */ f(
595
+ $t,
596
+ {
597
+ scope: t,
598
+ label: n,
599
+ duration: r,
600
+ swipeDirection: s,
601
+ swipeThreshold: a,
602
+ toastCount: i,
603
+ viewport: c,
604
+ onViewportChange: p,
605
+ onToastAdd: o.useCallback(() => l((b) => b + 1), []),
606
+ onToastRemove: o.useCallback(() => l((b) => b - 1), []),
607
+ isFocusedToastEscapeKeyDownRef: m,
608
+ isClosePausedRef: y,
609
+ children: u
610
+ }
611
+ ) });
612
+ };
613
+ Se.displayName = ie;
614
+ var Ae = "ToastViewport", Ut = ["F8"], ee = "toast.viewportPause", te = "toast.viewportResume", Ie = o.forwardRef(
615
+ (e, t) => {
616
+ const {
617
+ __scopeToast: n,
618
+ hotkey: r = Ut,
619
+ label: s = "Notifications ({hotkey})",
620
+ ...a
621
+ } = e, u = Z(Ae, n), c = Vt(n), p = o.useRef(null), i = o.useRef(null), l = o.useRef(null), m = o.useRef(null), y = k(t, m, u.onViewportChange), b = r.join("+").replace(/Key/g, "").replace(/Digit/g, ""), C = u.toastCount > 0;
622
+ o.useEffect(() => {
623
+ const d = (x) => {
624
+ var E;
625
+ r.length !== 0 && r.every((T) => x[T] || x.code === T) && ((E = m.current) == null || E.focus());
626
+ };
627
+ return document.addEventListener("keydown", d), () => document.removeEventListener("keydown", d);
628
+ }, [r]), o.useEffect(() => {
629
+ const d = p.current, x = m.current;
630
+ if (C && d && x) {
631
+ const g = () => {
632
+ if (!u.isClosePausedRef.current) {
633
+ const N = new CustomEvent(ee);
634
+ x.dispatchEvent(N), u.isClosePausedRef.current = !0;
635
+ }
636
+ }, E = () => {
637
+ if (u.isClosePausedRef.current) {
638
+ const N = new CustomEvent(te);
639
+ x.dispatchEvent(N), u.isClosePausedRef.current = !1;
640
+ }
641
+ }, T = (N) => {
642
+ !d.contains(N.relatedTarget) && E();
643
+ }, R = () => {
644
+ d.contains(document.activeElement) || E();
645
+ };
646
+ return d.addEventListener("focusin", g), d.addEventListener("focusout", T), d.addEventListener("pointermove", g), d.addEventListener("pointerleave", R), window.addEventListener("blur", g), window.addEventListener("focus", E), () => {
647
+ d.removeEventListener("focusin", g), d.removeEventListener("focusout", T), d.removeEventListener("pointermove", g), d.removeEventListener("pointerleave", R), window.removeEventListener("blur", g), window.removeEventListener("focus", E);
648
+ };
649
+ }
650
+ }, [C, u.isClosePausedRef]);
651
+ const v = o.useCallback(
652
+ ({ tabbingDirection: d }) => {
653
+ const g = c().map((E) => {
654
+ const T = E.ref.current, R = [T, ...en(T)];
655
+ return d === "forwards" ? R : R.reverse();
656
+ });
657
+ return (d === "forwards" ? g.reverse() : g).flat();
658
+ },
659
+ [c]
660
+ );
661
+ return o.useEffect(() => {
662
+ const d = m.current;
663
+ if (d) {
664
+ const x = (g) => {
665
+ var R, N, h;
666
+ const E = g.altKey || g.ctrlKey || g.metaKey;
667
+ if (g.key === "Tab" && !E) {
668
+ const I = document.activeElement, D = g.shiftKey;
669
+ if (g.target === d && D) {
670
+ (R = i.current) == null || R.focus();
671
+ return;
672
+ }
673
+ const M = v({ tabbingDirection: D ? "backwards" : "forwards" }), j = M.findIndex((w) => w === I);
674
+ J(M.slice(j + 1)) ? g.preventDefault() : D ? (N = i.current) == null || N.focus() : (h = l.current) == null || h.focus();
675
+ }
676
+ };
677
+ return d.addEventListener("keydown", x), () => d.removeEventListener("keydown", x);
678
+ }
679
+ }, [c, v]), /* @__PURE__ */ re(
680
+ Pt,
681
+ {
682
+ ref: p,
683
+ role: "region",
684
+ "aria-label": s.replace("{hotkey}", b),
685
+ tabIndex: -1,
686
+ style: { pointerEvents: C ? void 0 : "none" },
687
+ children: [
688
+ C && /* @__PURE__ */ f(
689
+ ne,
690
+ {
691
+ ref: i,
692
+ onFocusFromOutsideViewport: () => {
693
+ const d = v({
694
+ tabbingDirection: "forwards"
695
+ });
696
+ J(d);
697
+ }
698
+ }
699
+ ),
700
+ /* @__PURE__ */ f(ae.Slot, { scope: n, children: /* @__PURE__ */ f(O.ol, { tabIndex: -1, ...a, ref: y }) }),
701
+ C && /* @__PURE__ */ f(
702
+ ne,
703
+ {
704
+ ref: l,
705
+ onFocusFromOutsideViewport: () => {
706
+ const d = v({
707
+ tabbingDirection: "backwards"
708
+ });
709
+ J(d);
710
+ }
711
+ }
712
+ )
713
+ ]
714
+ }
715
+ );
716
+ }
717
+ );
718
+ Ie.displayName = Ae;
719
+ var Oe = "ToastFocusProxy", ne = o.forwardRef(
720
+ (e, t) => {
721
+ const { __scopeToast: n, onFocusFromOutsideViewport: r, ...s } = e, a = Z(Oe, n);
722
+ return /* @__PURE__ */ f(
723
+ se,
724
+ {
725
+ tabIndex: 0,
726
+ ...s,
727
+ ref: t,
728
+ style: { position: "fixed" },
729
+ onFocus: (u) => {
730
+ var i;
731
+ const c = u.relatedTarget;
732
+ !((i = a.viewport) != null && i.contains(c)) && r();
733
+ }
734
+ }
735
+ );
736
+ }
737
+ );
738
+ ne.displayName = Oe;
739
+ var K = "Toast", Bt = "toast.swipeStart", Kt = "toast.swipeMove", jt = "toast.swipeCancel", Ht = "toast.swipeEnd", De = o.forwardRef(
740
+ (e, t) => {
741
+ const { forceMount: n, open: r, defaultOpen: s, onOpenChange: a, ...u } = e, [c, p] = _t({
742
+ prop: r,
743
+ defaultProp: s ?? !0,
744
+ onChange: a,
745
+ caller: K
746
+ });
747
+ return /* @__PURE__ */ f(Re, { present: n || c, children: /* @__PURE__ */ f(
748
+ Yt,
749
+ {
750
+ open: c,
751
+ ...u,
752
+ ref: t,
753
+ onClose: () => p(!1),
754
+ onPause: V(e.onPause),
755
+ onResume: V(e.onResume),
756
+ onSwipeStart: S(e.onSwipeStart, (i) => {
757
+ i.currentTarget.setAttribute("data-swipe", "start");
758
+ }),
759
+ onSwipeMove: S(e.onSwipeMove, (i) => {
760
+ const { x: l, y: m } = i.detail.delta;
761
+ i.currentTarget.setAttribute("data-swipe", "move"), i.currentTarget.style.setProperty("--radix-toast-swipe-move-x", `${l}px`), i.currentTarget.style.setProperty("--radix-toast-swipe-move-y", `${m}px`);
762
+ }),
763
+ onSwipeCancel: S(e.onSwipeCancel, (i) => {
764
+ i.currentTarget.setAttribute("data-swipe", "cancel"), i.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"), i.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"), i.currentTarget.style.removeProperty("--radix-toast-swipe-end-x"), i.currentTarget.style.removeProperty("--radix-toast-swipe-end-y");
765
+ }),
766
+ onSwipeEnd: S(e.onSwipeEnd, (i) => {
767
+ const { x: l, y: m } = i.detail.delta;
768
+ i.currentTarget.setAttribute("data-swipe", "end"), i.currentTarget.style.removeProperty("--radix-toast-swipe-move-x"), i.currentTarget.style.removeProperty("--radix-toast-swipe-move-y"), i.currentTarget.style.setProperty("--radix-toast-swipe-end-x", `${l}px`), i.currentTarget.style.setProperty("--radix-toast-swipe-end-y", `${m}px`), p(!1);
769
+ })
770
+ }
771
+ ) });
772
+ }
773
+ );
774
+ De.displayName = K;
775
+ var [zt, Xt] = Pe(K, {
776
+ onClose() {
777
+ }
778
+ }), Yt = o.forwardRef(
779
+ (e, t) => {
780
+ const {
781
+ __scopeToast: n,
782
+ type: r = "foreground",
783
+ duration: s,
784
+ open: a,
785
+ onClose: u,
786
+ onEscapeKeyDown: c,
787
+ onPause: p,
788
+ onResume: i,
789
+ onSwipeStart: l,
790
+ onSwipeMove: m,
791
+ onSwipeCancel: y,
792
+ onSwipeEnd: b,
793
+ ...C
794
+ } = e, v = Z(K, n), [d, x] = o.useState(null), g = k(t, (w) => x(w)), E = o.useRef(null), T = o.useRef(null), R = s || v.duration, N = o.useRef(0), h = o.useRef(R), I = o.useRef(0), { onToastAdd: D, onToastRemove: L } = v, W = V(() => {
795
+ var A;
796
+ (d == null ? void 0 : d.contains(document.activeElement)) && ((A = v.viewport) == null || A.focus()), u();
797
+ }), M = o.useCallback(
798
+ (w) => {
799
+ !w || w === 1 / 0 || (window.clearTimeout(I.current), N.current = (/* @__PURE__ */ new Date()).getTime(), I.current = window.setTimeout(W, w));
800
+ },
801
+ [W]
802
+ );
803
+ o.useEffect(() => {
804
+ const w = v.viewport;
805
+ if (w) {
806
+ const A = () => {
807
+ M(h.current), i == null || i();
808
+ }, _ = () => {
809
+ const $ = (/* @__PURE__ */ new Date()).getTime() - N.current;
810
+ h.current = h.current - $, window.clearTimeout(I.current), p == null || p();
811
+ };
812
+ return w.addEventListener(ee, _), w.addEventListener(te, A), () => {
813
+ w.removeEventListener(ee, _), w.removeEventListener(te, A);
814
+ };
815
+ }
816
+ }, [v.viewport, R, p, i, M]), o.useEffect(() => {
817
+ a && !v.isClosePausedRef.current && M(R);
818
+ }, [a, R, v.isClosePausedRef, M]), o.useEffect(() => (D(), () => L()), [D, L]);
819
+ const j = o.useMemo(() => d ? We(d) : null, [d]);
820
+ return v.viewport ? /* @__PURE__ */ re(ye, { children: [
821
+ j && /* @__PURE__ */ f(
822
+ qt,
823
+ {
824
+ __scopeToast: n,
825
+ role: "status",
826
+ "aria-live": r === "foreground" ? "assertive" : "polite",
827
+ children: j
828
+ }
829
+ ),
830
+ /* @__PURE__ */ f(zt, { scope: n, onClose: W, children: we.createPortal(
831
+ /* @__PURE__ */ f(ae.ItemSlot, { scope: n, children: /* @__PURE__ */ f(
832
+ Rt,
833
+ {
834
+ asChild: !0,
835
+ onEscapeKeyDown: S(c, () => {
836
+ v.isFocusedToastEscapeKeyDownRef.current || W(), v.isFocusedToastEscapeKeyDownRef.current = !1;
837
+ }),
838
+ children: /* @__PURE__ */ f(
839
+ O.li,
840
+ {
841
+ tabIndex: 0,
842
+ "data-state": a ? "open" : "closed",
843
+ "data-swipe-direction": v.swipeDirection,
844
+ ...C,
845
+ ref: g,
846
+ style: { userSelect: "none", touchAction: "none", ...e.style },
847
+ onKeyDown: S(e.onKeyDown, (w) => {
848
+ w.key === "Escape" && (c == null || c(w.nativeEvent), w.nativeEvent.defaultPrevented || (v.isFocusedToastEscapeKeyDownRef.current = !0, W()));
849
+ }),
850
+ onPointerDown: S(e.onPointerDown, (w) => {
851
+ w.button === 0 && (E.current = { x: w.clientX, y: w.clientY });
852
+ }),
853
+ onPointerMove: S(e.onPointerMove, (w) => {
854
+ if (!E.current) return;
855
+ const A = w.clientX - E.current.x, _ = w.clientY - E.current.y, $ = !!T.current, U = ["left", "right"].includes(v.swipeDirection), H = ["left", "up"].includes(v.swipeDirection) ? Math.min : Math.max, ze = U ? H(0, A) : 0, Xe = U ? 0 : H(0, _), G = w.pointerType === "touch" ? 10 : 2, z = { x: ze, y: Xe }, ue = { originalEvent: w, delta: z };
856
+ $ ? (T.current = z, Y(Kt, m, ue, {
857
+ discrete: !1
858
+ })) : ve(z, v.swipeDirection, G) ? (T.current = z, Y(Bt, l, ue, {
859
+ discrete: !1
860
+ }), w.target.setPointerCapture(w.pointerId)) : (Math.abs(A) > G || Math.abs(_) > G) && (E.current = null);
861
+ }),
862
+ onPointerUp: S(e.onPointerUp, (w) => {
863
+ const A = T.current, _ = w.target;
864
+ if (_.hasPointerCapture(w.pointerId) && _.releasePointerCapture(w.pointerId), T.current = null, E.current = null, A) {
865
+ const $ = w.currentTarget, U = { originalEvent: w, delta: A };
866
+ ve(A, v.swipeDirection, v.swipeThreshold) ? Y(Ht, b, U, {
867
+ discrete: !0
868
+ }) : Y(
869
+ jt,
870
+ y,
871
+ U,
872
+ {
873
+ discrete: !0
874
+ }
875
+ ), $.addEventListener("click", (H) => H.preventDefault(), {
876
+ once: !0
877
+ });
878
+ }
879
+ })
880
+ }
881
+ )
882
+ }
883
+ ) }),
884
+ v.viewport
885
+ ) })
886
+ ] }) : null;
887
+ }
888
+ ), qt = (e) => {
889
+ const { __scopeToast: t, children: n, ...r } = e, s = Z(K, t), [a, u] = o.useState(!1), [c, p] = o.useState(!1);
890
+ return Jt(() => u(!0)), o.useEffect(() => {
891
+ const i = window.setTimeout(() => p(!0), 1e3);
892
+ return () => window.clearTimeout(i);
893
+ }, []), c ? null : /* @__PURE__ */ f(Ne, { asChild: !0, children: /* @__PURE__ */ f(se, { ...r, children: a && /* @__PURE__ */ re(ye, { children: [
894
+ s.label,
895
+ " ",
896
+ n
897
+ ] }) }) });
898
+ }, Zt = "ToastTitle", _e = o.forwardRef(
899
+ (e, t) => {
900
+ const { __scopeToast: n, ...r } = e;
901
+ return /* @__PURE__ */ f(O.div, { ...r, ref: t });
902
+ }
903
+ );
904
+ _e.displayName = Zt;
905
+ var Gt = "ToastDescription", Le = o.forwardRef(
906
+ (e, t) => {
907
+ const { __scopeToast: n, ...r } = e;
908
+ return /* @__PURE__ */ f(O.div, { ...r, ref: t });
909
+ }
910
+ );
911
+ Le.displayName = Gt;
912
+ var Me = "ToastAction", Fe = o.forwardRef(
913
+ (e, t) => {
914
+ const { altText: n, ...r } = e;
915
+ return n.trim() ? /* @__PURE__ */ f(Ve, { altText: n, asChild: !0, children: /* @__PURE__ */ f(ce, { ...r, ref: t }) }) : (console.error(
916
+ `Invalid prop \`altText\` supplied to \`${Me}\`. Expected non-empty \`string\`.`
917
+ ), null);
918
+ }
919
+ );
920
+ Fe.displayName = Me;
921
+ var ke = "ToastClose", ce = o.forwardRef(
922
+ (e, t) => {
923
+ const { __scopeToast: n, ...r } = e, s = Xt(ke, n);
924
+ return /* @__PURE__ */ f(Ve, { asChild: !0, children: /* @__PURE__ */ f(
925
+ O.button,
926
+ {
927
+ type: "button",
928
+ ...r,
929
+ ref: t,
930
+ onClick: S(e.onClick, s.onClose)
931
+ }
932
+ ) });
933
+ }
934
+ );
935
+ ce.displayName = ke;
936
+ var Ve = o.forwardRef((e, t) => {
937
+ const { __scopeToast: n, altText: r, ...s } = e;
938
+ return /* @__PURE__ */ f(
939
+ O.div,
940
+ {
941
+ "data-radix-toast-announce-exclude": "",
942
+ "data-radix-toast-announce-alt": r || void 0,
943
+ ...s,
944
+ ref: t
945
+ }
946
+ );
947
+ });
948
+ function We(e) {
949
+ const t = [];
950
+ return Array.from(e.childNodes).forEach((r) => {
951
+ if (r.nodeType === r.TEXT_NODE && r.textContent && t.push(r.textContent), Qt(r)) {
952
+ const s = r.ariaHidden || r.hidden || r.style.display === "none", a = r.dataset.radixToastAnnounceExclude === "";
953
+ if (!s)
954
+ if (a) {
955
+ const u = r.dataset.radixToastAnnounceAlt;
956
+ u && t.push(u);
957
+ } else
958
+ t.push(...We(r));
959
+ }
960
+ }), t;
961
+ }
962
+ function Y(e, t, n, { discrete: r }) {
963
+ const s = n.originalEvent.currentTarget, a = new CustomEvent(e, { bubbles: !0, cancelable: !0, detail: n });
964
+ t && s.addEventListener(e, t, { once: !0 }), r ? he(s, a) : s.dispatchEvent(a);
965
+ }
966
+ var ve = (e, t, n = 0) => {
967
+ const r = Math.abs(e.x), s = Math.abs(e.y), a = r > s;
968
+ return t === "left" || t === "right" ? a && r > n : !a && s > n;
969
+ };
970
+ function Jt(e = () => {
971
+ }) {
972
+ const t = V(e);
973
+ B(() => {
974
+ let n = 0, r = 0;
975
+ return n = window.requestAnimationFrame(() => r = window.requestAnimationFrame(t)), () => {
976
+ window.cancelAnimationFrame(n), window.cancelAnimationFrame(r);
977
+ };
978
+ }, [t]);
979
+ }
980
+ function Qt(e) {
981
+ return e.nodeType === e.ELEMENT_NODE;
982
+ }
983
+ function en(e) {
984
+ const t = [], n = document.createTreeWalker(e, NodeFilter.SHOW_ELEMENT, {
985
+ acceptNode: (r) => {
986
+ const s = r.tagName === "INPUT" && r.type === "hidden";
987
+ return r.disabled || r.hidden || s ? NodeFilter.FILTER_SKIP : r.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
988
+ }
989
+ });
990
+ for (; n.nextNode(); ) t.push(n.currentNode);
991
+ return t;
992
+ }
993
+ function J(e) {
994
+ const t = document.activeElement;
995
+ return e.some((n) => n === t ? !0 : (n.focus(), document.activeElement !== t));
996
+ }
997
+ var tn = Se, $e = Ie, Ue = De, Be = _e, Ke = Le, je = Fe, He = ce;
998
+ /**
999
+ * @license lucide-react v1.7.0 - ISC
1000
+ *
1001
+ * This source code is licensed under the ISC license.
1002
+ * See the LICENSE file in the root directory of this source tree.
1003
+ */
1004
+ const nn = [
1005
+ ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
1006
+ ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
1007
+ ], rn = Ze("x", nn), wn = tn, on = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f(
1008
+ $e,
1009
+ {
1010
+ ref: n,
1011
+ className: P(
1012
+ "fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]",
1013
+ e
1014
+ ),
1015
+ ...t
1016
+ }
1017
+ ));
1018
+ on.displayName = $e.displayName;
1019
+ const sn = oe(
1020
+ "group pointer-events-auto relative flex w-full items-center justify-between space-x-4 overflow-hidden rounded-md border p-6 pr-8 shadow-lg transition-all data-[swipe=cancel]:translate-x-0 data-[swipe=end]:translate-x-[var(--radix-toast-swipe-end-x)] data-[swipe=move]:translate-x-[var(--radix-toast-swipe-move-x)] data-[swipe=move]:transition-none data-[state=open]:animate-in data-[state=closed]:animate-out data-[swipe=end]:animate-out data-[state=closed]:fade-out-80 data-[state=closed]:slide-out-to-right-full data-[state=open]:slide-in-from-top-full data-[state=open]:sm:slide-in-from-bottom-full",
1021
+ {
1022
+ variants: {
1023
+ variant: {
1024
+ default: "border bg-background text-foreground",
1025
+ destructive: "destructive group border-destructive bg-destructive text-destructive-foreground"
1026
+ }
1027
+ },
1028
+ defaultVariants: {
1029
+ variant: "default"
1030
+ }
1031
+ }
1032
+ ), an = o.forwardRef(({ className: e, variant: t, ...n }, r) => /* @__PURE__ */ f(
1033
+ Ue,
1034
+ {
1035
+ ref: r,
1036
+ className: P(sn({ variant: t }), e),
1037
+ ...n
1038
+ }
1039
+ ));
1040
+ an.displayName = Ue.displayName;
1041
+ const cn = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f(
1042
+ je,
1043
+ {
1044
+ ref: n,
1045
+ className: P(
1046
+ "inline-flex h-8 shrink-0 items-center justify-center rounded-md border bg-transparent px-3 text-sm font-medium ring-offset-background transition-colors group-[.destructive]:border-muted/40 hover:bg-secondary group-[.destructive]:hover:border-destructive/30 group-[.destructive]:hover:bg-destructive group-[.destructive]:hover:text-destructive-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 group-[.destructive]:focus:ring-destructive disabled:pointer-events-none disabled:opacity-50",
1047
+ e
1048
+ ),
1049
+ ...t
1050
+ }
1051
+ ));
1052
+ cn.displayName = je.displayName;
1053
+ const un = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f(
1054
+ He,
1055
+ {
1056
+ ref: n,
1057
+ className: P(
1058
+ "absolute right-2 top-2 rounded-md p-1 text-foreground/50 opacity-0 transition-opacity group-hover:opacity-100 group-[.destructive]:text-red-300 hover:text-foreground group-[.destructive]:hover:text-red-50 focus:opacity-100 focus:outline-none focus:ring-2 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600",
1059
+ e
1060
+ ),
1061
+ "toast-close": "",
1062
+ ...t,
1063
+ children: /* @__PURE__ */ f(rn, { className: "size-4" })
1064
+ }
1065
+ ));
1066
+ un.displayName = He.displayName;
1067
+ const ln = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f(
1068
+ Be,
1069
+ {
1070
+ ref: n,
1071
+ className: P("text-sm font-semibold", e),
1072
+ ...t
1073
+ }
1074
+ ));
1075
+ ln.displayName = Be.displayName;
1076
+ const dn = o.forwardRef(({ className: e, ...t }, n) => /* @__PURE__ */ f(
1077
+ Ke,
1078
+ {
1079
+ ref: n,
1080
+ className: P("text-sm opacity-90", e),
1081
+ ...t
1082
+ }
1083
+ ));
1084
+ dn.displayName = Ke.displayName;
1085
+ export {
1086
+ Je as A,
1087
+ ct as B,
1088
+ ut as C,
1089
+ vt as I,
1090
+ an as T,
1091
+ rn as X,
1092
+ et as a,
1093
+ Qe as b,
1094
+ pt as c,
1095
+ ft as d,
1096
+ mt as e,
1097
+ lt as f,
1098
+ dt as g,
1099
+ cn as h,
1100
+ un as i,
1101
+ dn as j,
1102
+ wn as k,
1103
+ ln as l,
1104
+ on as m,
1105
+ at as n,
1106
+ oe as o
1107
+ };