@still-forest/canopy 0.34.1 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1983 @@
1
+ import { j as o } from "./jsx-runtime-B0GD0xBr.js";
2
+ import { c as D, u as P, f as It, g as Pt, b as X, S as ke, B as St, h as Mt } from "./calendar-DKwGFkIw.js";
3
+ import * as l from "react";
4
+ import N, { Fragment as Ot } from "react";
5
+ import { c as u } from "./index-CRiPKpXj.js";
6
+ import { a as B, c as Z, b as O, P as _, e as w, d as z, f as $t, g as zt, u as Lt, h as De, i as Ht, R as Ft, j as Bt, F as Vt, D as Ie, k as Gt, l as Pe, m as Wt, A as qt, n as Kt, C as Ut, o as Yt, p as Xt, q as Zt, r as Jt, s as Qt } from "./popover-ByOImpZC.js";
7
+ import { H as eo, T as ue } from "./Heading-DpvcMbmF.js";
8
+ import { F as Se } from "./Layout-CvVv48kM.js";
9
+ /**
10
+ * @license lucide-react v0.543.0 - ISC
11
+ *
12
+ * This source code is licensed under the ISC license.
13
+ * See the LICENSE file in the root directory of this source tree.
14
+ */
15
+ const to = [
16
+ ["rect", { width: "14", height: "8", x: "5", y: "2", rx: "2", key: "wc9tft" }],
17
+ ["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2", key: "w68u3i" }],
18
+ ["path", { d: "M6 18h2", key: "rwmk9e" }],
19
+ ["path", { d: "M12 18h6", key: "aqd8w3" }]
20
+ ], oo = D("computer", to);
21
+ /**
22
+ * @license lucide-react v0.543.0 - ISC
23
+ *
24
+ * This source code is licensed under the ISC license.
25
+ * See the LICENSE file in the root directory of this source tree.
26
+ */
27
+ const ao = [
28
+ ["path", { d: "M12 17v4", key: "1riwvh" }],
29
+ ["path", { d: "m14.305 7.53.923-.382", key: "1mlnsw" }],
30
+ ["path", { d: "m15.228 4.852-.923-.383", key: "82mpwg" }],
31
+ ["path", { d: "m16.852 3.228-.383-.924", key: "ln4sir" }],
32
+ ["path", { d: "m16.852 8.772-.383.923", key: "1dejw0" }],
33
+ ["path", { d: "m19.148 3.228.383-.924", key: "192kgf" }],
34
+ ["path", { d: "m19.53 9.696-.382-.924", key: "fiavlr" }],
35
+ ["path", { d: "m20.772 4.852.924-.383", key: "1j8mgp" }],
36
+ ["path", { d: "m20.772 7.148.924.383", key: "zix9be" }],
37
+ ["path", { d: "M22 13v2a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7", key: "1tnzv8" }],
38
+ ["path", { d: "M8 21h8", key: "1ev6f3" }],
39
+ ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }]
40
+ ], ro = D("monitor-cog", ao);
41
+ /**
42
+ * @license lucide-react v0.543.0 - ISC
43
+ *
44
+ * This source code is licensed under the ISC license.
45
+ * See the LICENSE file in the root directory of this source tree.
46
+ */
47
+ const no = [
48
+ [
49
+ "path",
50
+ {
51
+ d: "M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",
52
+ key: "kfwtm"
53
+ }
54
+ ]
55
+ ], Me = D("moon", no);
56
+ /**
57
+ * @license lucide-react v0.543.0 - ISC
58
+ *
59
+ * This source code is licensed under the ISC license.
60
+ * See the LICENSE file in the root directory of this source tree.
61
+ */
62
+ const so = [
63
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
64
+ ["path", { d: "M9 3v18", key: "fh3hqa" }],
65
+ ["path", { d: "m14 9 3 3-3 3", key: "8010ee" }]
66
+ ], io = D("panel-left-open", so);
67
+ /**
68
+ * @license lucide-react v0.543.0 - ISC
69
+ *
70
+ * This source code is licensed under the ISC license.
71
+ * See the LICENSE file in the root directory of this source tree.
72
+ */
73
+ const lo = [
74
+ ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
75
+ ["path", { d: "M15 3v18", key: "14nvp0" }],
76
+ ["path", { d: "m10 15-3-3 3-3", key: "1pgupc" }]
77
+ ], co = D("panel-right-open", lo);
78
+ /**
79
+ * @license lucide-react v0.543.0 - ISC
80
+ *
81
+ * This source code is licensed under the ISC license.
82
+ * See the LICENSE file in the root directory of this source tree.
83
+ */
84
+ const uo = [
85
+ ["path", { d: "M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6", key: "y09zxi" }],
86
+ ["path", { d: "m21 3-9 9", key: "mpx6sq" }],
87
+ ["path", { d: "M15 3h6v6", key: "1q9fwt" }]
88
+ ], po = D("square-arrow-out-up-right", uo);
89
+ /**
90
+ * @license lucide-react v0.543.0 - ISC
91
+ *
92
+ * This source code is licensed under the ISC license.
93
+ * See the LICENSE file in the root directory of this source tree.
94
+ */
95
+ const fo = [
96
+ ["circle", { cx: "12", cy: "12", r: "4", key: "4exip2" }],
97
+ ["path", { d: "M12 2v2", key: "tus03m" }],
98
+ ["path", { d: "M12 20v2", key: "1lh1kg" }],
99
+ ["path", { d: "m4.93 4.93 1.41 1.41", key: "149t6j" }],
100
+ ["path", { d: "m17.66 17.66 1.41 1.41", key: "ptbguv" }],
101
+ ["path", { d: "M2 12h2", key: "1t8f8n" }],
102
+ ["path", { d: "M20 12h2", key: "1q8mjw" }],
103
+ ["path", { d: "m6.34 17.66-1.41 1.41", key: "1m8zz5" }],
104
+ ["path", { d: "m19.07 4.93-1.41 1.41", key: "1shlcs" }]
105
+ ], Oe = D("sun", fo);
106
+ /**
107
+ * @license lucide-react v0.543.0 - ISC
108
+ *
109
+ * This source code is licensed under the ISC license.
110
+ * See the LICENSE file in the root directory of this source tree.
111
+ */
112
+ const xo = [
113
+ ["path", { d: "M18 6 6 18", key: "1bl5f8" }],
114
+ ["path", { d: "m6 6 12 12", key: "d8bk6v" }]
115
+ ], mo = D("x", xo);
116
+ var J = "Collapsible", [go, $e] = Z(J), [ho, pe] = go(J), ze = l.forwardRef(
117
+ (e, t) => {
118
+ const {
119
+ __scopeCollapsible: a,
120
+ open: r,
121
+ defaultOpen: n,
122
+ disabled: s,
123
+ onOpenChange: i,
124
+ ...c
125
+ } = e, [d, f] = B({
126
+ prop: r,
127
+ defaultProp: n ?? !1,
128
+ onChange: i,
129
+ caller: J
130
+ });
131
+ return /* @__PURE__ */ o.jsx(
132
+ ho,
133
+ {
134
+ scope: a,
135
+ disabled: s,
136
+ contentId: O(),
137
+ open: d,
138
+ onOpenToggle: l.useCallback(() => f((p) => !p), [f]),
139
+ children: /* @__PURE__ */ o.jsx(
140
+ _.div,
141
+ {
142
+ "data-state": ge(d),
143
+ "data-disabled": s ? "" : void 0,
144
+ ...c,
145
+ ref: t
146
+ }
147
+ )
148
+ }
149
+ );
150
+ }
151
+ );
152
+ ze.displayName = J;
153
+ var Le = "CollapsibleTrigger", fe = l.forwardRef(
154
+ (e, t) => {
155
+ const { __scopeCollapsible: a, ...r } = e, n = pe(Le, a);
156
+ return /* @__PURE__ */ o.jsx(
157
+ _.button,
158
+ {
159
+ type: "button",
160
+ "aria-controls": n.contentId,
161
+ "aria-expanded": n.open || !1,
162
+ "data-state": ge(n.open),
163
+ "data-disabled": n.disabled ? "" : void 0,
164
+ disabled: n.disabled,
165
+ ...r,
166
+ ref: t,
167
+ onClick: w(e.onClick, n.onOpenToggle)
168
+ }
169
+ );
170
+ }
171
+ );
172
+ fe.displayName = Le;
173
+ var xe = "CollapsibleContent", me = l.forwardRef(
174
+ (e, t) => {
175
+ const { forceMount: a, ...r } = e, n = pe(xe, e.__scopeCollapsible);
176
+ return /* @__PURE__ */ o.jsx(z, { present: a || n.open, children: ({ present: s }) => /* @__PURE__ */ o.jsx(bo, { ...r, ref: t, present: s }) });
177
+ }
178
+ );
179
+ me.displayName = xe;
180
+ var bo = l.forwardRef((e, t) => {
181
+ const { __scopeCollapsible: a, present: r, children: n, ...s } = e, i = pe(xe, a), [c, d] = l.useState(r), f = l.useRef(null), p = P(t, f), m = l.useRef(0), h = m.current, g = l.useRef(0), v = g.current, C = i.open || c, y = l.useRef(C), b = l.useRef(void 0);
182
+ return l.useEffect(() => {
183
+ const x = requestAnimationFrame(() => y.current = !1);
184
+ return () => cancelAnimationFrame(x);
185
+ }, []), $t(() => {
186
+ const x = f.current;
187
+ if (x) {
188
+ b.current = b.current || {
189
+ transitionDuration: x.style.transitionDuration,
190
+ animationName: x.style.animationName
191
+ }, x.style.transitionDuration = "0s", x.style.animationName = "none";
192
+ const T = x.getBoundingClientRect();
193
+ m.current = T.height, g.current = T.width, y.current || (x.style.transitionDuration = b.current.transitionDuration, x.style.animationName = b.current.animationName), d(r);
194
+ }
195
+ }, [i.open, r]), /* @__PURE__ */ o.jsx(
196
+ _.div,
197
+ {
198
+ "data-state": ge(i.open),
199
+ "data-disabled": i.disabled ? "" : void 0,
200
+ id: i.contentId,
201
+ hidden: !C,
202
+ ...s,
203
+ ref: p,
204
+ style: {
205
+ "--radix-collapsible-content-height": h ? `${h}px` : void 0,
206
+ "--radix-collapsible-content-width": v ? `${v}px` : void 0,
207
+ ...e.style
208
+ },
209
+ children: C && n
210
+ }
211
+ );
212
+ });
213
+ function ge(e) {
214
+ return e ? "open" : "closed";
215
+ }
216
+ var He = ze, vo = fe, Co = me, R = "Accordion", yo = ["Home", "End", "ArrowDown", "ArrowUp", "ArrowLeft", "ArrowRight"], [he, jo, wo] = zt(R), [Q, Wr] = Z(R, [
217
+ wo,
218
+ $e
219
+ ]), be = $e(), Fe = N.forwardRef(
220
+ (e, t) => {
221
+ const { type: a, ...r } = e, n = r, s = r;
222
+ return /* @__PURE__ */ o.jsx(he.Provider, { scope: e.__scopeAccordion, children: a === "multiple" ? /* @__PURE__ */ o.jsx(Ro, { ...s, ref: t }) : /* @__PURE__ */ o.jsx(_o, { ...n, ref: t }) });
223
+ }
224
+ );
225
+ Fe.displayName = R;
226
+ var [Be, No] = Q(R), [Ve, To] = Q(
227
+ R,
228
+ { collapsible: !1 }
229
+ ), _o = N.forwardRef(
230
+ (e, t) => {
231
+ const {
232
+ value: a,
233
+ defaultValue: r,
234
+ onValueChange: n = () => {
235
+ },
236
+ collapsible: s = !1,
237
+ ...i
238
+ } = e, [c, d] = B({
239
+ prop: a,
240
+ defaultProp: r ?? "",
241
+ onChange: n,
242
+ caller: R
243
+ });
244
+ return /* @__PURE__ */ o.jsx(
245
+ Be,
246
+ {
247
+ scope: e.__scopeAccordion,
248
+ value: N.useMemo(() => c ? [c] : [], [c]),
249
+ onItemOpen: d,
250
+ onItemClose: N.useCallback(() => s && d(""), [s, d]),
251
+ children: /* @__PURE__ */ o.jsx(Ve, { scope: e.__scopeAccordion, collapsible: s, children: /* @__PURE__ */ o.jsx(Ge, { ...i, ref: t }) })
252
+ }
253
+ );
254
+ }
255
+ ), Ro = N.forwardRef((e, t) => {
256
+ const {
257
+ value: a,
258
+ defaultValue: r,
259
+ onValueChange: n = () => {
260
+ },
261
+ ...s
262
+ } = e, [i, c] = B({
263
+ prop: a,
264
+ defaultProp: r ?? [],
265
+ onChange: n,
266
+ caller: R
267
+ }), d = N.useCallback(
268
+ (p) => c((m = []) => [...m, p]),
269
+ [c]
270
+ ), f = N.useCallback(
271
+ (p) => c((m = []) => m.filter((h) => h !== p)),
272
+ [c]
273
+ );
274
+ return /* @__PURE__ */ o.jsx(
275
+ Be,
276
+ {
277
+ scope: e.__scopeAccordion,
278
+ value: i,
279
+ onItemOpen: d,
280
+ onItemClose: f,
281
+ children: /* @__PURE__ */ o.jsx(Ve, { scope: e.__scopeAccordion, collapsible: !0, children: /* @__PURE__ */ o.jsx(Ge, { ...s, ref: t }) })
282
+ }
283
+ );
284
+ }), [Ao, ee] = Q(R), Ge = N.forwardRef(
285
+ (e, t) => {
286
+ const { __scopeAccordion: a, disabled: r, dir: n, orientation: s = "vertical", ...i } = e, c = N.useRef(null), d = P(c, t), f = jo(a), m = Lt(n) === "ltr", h = w(e.onKeyDown, (g) => {
287
+ if (!yo.includes(g.key)) return;
288
+ const v = g.target, C = f().filter((ne) => !ne.ref.current?.disabled), y = C.findIndex((ne) => ne.ref.current === v), b = C.length;
289
+ if (y === -1) return;
290
+ g.preventDefault();
291
+ let x = y;
292
+ const T = 0, E = b - 1, k = () => {
293
+ x = y + 1, x > E && (x = T);
294
+ }, M = () => {
295
+ x = y - 1, x < T && (x = E);
296
+ };
297
+ switch (g.key) {
298
+ case "Home":
299
+ x = T;
300
+ break;
301
+ case "End":
302
+ x = E;
303
+ break;
304
+ case "ArrowRight":
305
+ s === "horizontal" && (m ? k() : M());
306
+ break;
307
+ case "ArrowDown":
308
+ s === "vertical" && k();
309
+ break;
310
+ case "ArrowLeft":
311
+ s === "horizontal" && (m ? M() : k());
312
+ break;
313
+ case "ArrowUp":
314
+ s === "vertical" && M();
315
+ break;
316
+ }
317
+ const W = x % b;
318
+ C[W].ref.current?.focus();
319
+ });
320
+ return /* @__PURE__ */ o.jsx(
321
+ Ao,
322
+ {
323
+ scope: a,
324
+ disabled: r,
325
+ direction: n,
326
+ orientation: s,
327
+ children: /* @__PURE__ */ o.jsx(he.Slot, { scope: a, children: /* @__PURE__ */ o.jsx(
328
+ _.div,
329
+ {
330
+ ...i,
331
+ "data-orientation": s,
332
+ ref: d,
333
+ onKeyDown: r ? void 0 : h
334
+ }
335
+ ) })
336
+ }
337
+ );
338
+ }
339
+ ), U = "AccordionItem", [Eo, ve] = Q(U), We = N.forwardRef(
340
+ (e, t) => {
341
+ const { __scopeAccordion: a, value: r, ...n } = e, s = ee(U, a), i = No(U, a), c = be(a), d = O(), f = r && i.value.includes(r) || !1, p = s.disabled || e.disabled;
342
+ return /* @__PURE__ */ o.jsx(
343
+ Eo,
344
+ {
345
+ scope: a,
346
+ open: f,
347
+ disabled: p,
348
+ triggerId: d,
349
+ children: /* @__PURE__ */ o.jsx(
350
+ He,
351
+ {
352
+ "data-orientation": s.orientation,
353
+ "data-state": Ze(f),
354
+ ...c,
355
+ ...n,
356
+ ref: t,
357
+ disabled: p,
358
+ open: f,
359
+ onOpenChange: (m) => {
360
+ m ? i.onItemOpen(r) : i.onItemClose(r);
361
+ }
362
+ }
363
+ )
364
+ }
365
+ );
366
+ }
367
+ );
368
+ We.displayName = U;
369
+ var qe = "AccordionHeader", Ke = N.forwardRef(
370
+ (e, t) => {
371
+ const { __scopeAccordion: a, ...r } = e, n = ee(R, a), s = ve(qe, a);
372
+ return /* @__PURE__ */ o.jsx(
373
+ _.h3,
374
+ {
375
+ "data-orientation": n.orientation,
376
+ "data-state": Ze(s.open),
377
+ "data-disabled": s.disabled ? "" : void 0,
378
+ ...r,
379
+ ref: t
380
+ }
381
+ );
382
+ }
383
+ );
384
+ Ke.displayName = qe;
385
+ var ie = "AccordionTrigger", Ue = N.forwardRef(
386
+ (e, t) => {
387
+ const { __scopeAccordion: a, ...r } = e, n = ee(R, a), s = ve(ie, a), i = To(ie, a), c = be(a);
388
+ return /* @__PURE__ */ o.jsx(he.ItemSlot, { scope: a, children: /* @__PURE__ */ o.jsx(
389
+ vo,
390
+ {
391
+ "aria-disabled": s.open && !i.collapsible || void 0,
392
+ "data-orientation": n.orientation,
393
+ id: s.triggerId,
394
+ ...c,
395
+ ...r,
396
+ ref: t
397
+ }
398
+ ) });
399
+ }
400
+ );
401
+ Ue.displayName = ie;
402
+ var Ye = "AccordionContent", Xe = N.forwardRef(
403
+ (e, t) => {
404
+ const { __scopeAccordion: a, ...r } = e, n = ee(R, a), s = ve(Ye, a), i = be(a);
405
+ return /* @__PURE__ */ o.jsx(
406
+ Co,
407
+ {
408
+ role: "region",
409
+ "aria-labelledby": s.triggerId,
410
+ "data-orientation": n.orientation,
411
+ ...i,
412
+ ...r,
413
+ ref: t,
414
+ style: {
415
+ "--radix-accordion-content-height": "var(--radix-collapsible-content-height)",
416
+ "--radix-accordion-content-width": "var(--radix-collapsible-content-width)",
417
+ ...e.style
418
+ }
419
+ }
420
+ );
421
+ }
422
+ );
423
+ Xe.displayName = Ye;
424
+ function Ze(e) {
425
+ return e ? "open" : "closed";
426
+ }
427
+ var ko = Fe, Do = We, Io = Ke, Po = Ue, So = Xe, te = "Dialog", [Je, qr] = Z(te), [Mo, A] = Je(te), Qe = (e) => {
428
+ const {
429
+ __scopeDialog: t,
430
+ children: a,
431
+ open: r,
432
+ defaultOpen: n,
433
+ onOpenChange: s,
434
+ modal: i = !0
435
+ } = e, c = l.useRef(null), d = l.useRef(null), [f, p] = B({
436
+ prop: r,
437
+ defaultProp: n ?? !1,
438
+ onChange: s,
439
+ caller: te
440
+ });
441
+ return /* @__PURE__ */ o.jsx(
442
+ Mo,
443
+ {
444
+ scope: t,
445
+ triggerRef: c,
446
+ contentRef: d,
447
+ contentId: O(),
448
+ titleId: O(),
449
+ descriptionId: O(),
450
+ open: f,
451
+ onOpenChange: p,
452
+ onOpenToggle: l.useCallback(() => p((m) => !m), [p]),
453
+ modal: i,
454
+ children: a
455
+ }
456
+ );
457
+ };
458
+ Qe.displayName = te;
459
+ var et = "DialogTrigger", tt = l.forwardRef(
460
+ (e, t) => {
461
+ const { __scopeDialog: a, ...r } = e, n = A(et, a), s = P(t, n.triggerRef);
462
+ return /* @__PURE__ */ o.jsx(
463
+ _.button,
464
+ {
465
+ type: "button",
466
+ "aria-haspopup": "dialog",
467
+ "aria-expanded": n.open,
468
+ "aria-controls": n.contentId,
469
+ "data-state": je(n.open),
470
+ ...r,
471
+ ref: s,
472
+ onClick: w(e.onClick, n.onOpenToggle)
473
+ }
474
+ );
475
+ }
476
+ );
477
+ tt.displayName = et;
478
+ var Ce = "DialogPortal", [Oo, ot] = Je(Ce, {
479
+ forceMount: void 0
480
+ }), at = (e) => {
481
+ const { __scopeDialog: t, forceMount: a, children: r, container: n } = e, s = A(Ce, t);
482
+ return /* @__PURE__ */ o.jsx(Oo, { scope: t, forceMount: a, children: l.Children.map(r, (i) => /* @__PURE__ */ o.jsx(z, { present: a || s.open, children: /* @__PURE__ */ o.jsx(De, { asChild: !0, container: n, children: i }) })) });
483
+ };
484
+ at.displayName = Ce;
485
+ var Y = "DialogOverlay", rt = l.forwardRef(
486
+ (e, t) => {
487
+ const a = ot(Y, e.__scopeDialog), { forceMount: r = a.forceMount, ...n } = e, s = A(Y, e.__scopeDialog);
488
+ return s.modal ? /* @__PURE__ */ o.jsx(z, { present: r || s.open, children: /* @__PURE__ */ o.jsx(zo, { ...n, ref: t }) }) : null;
489
+ }
490
+ );
491
+ rt.displayName = Y;
492
+ var $o = It("DialogOverlay.RemoveScroll"), zo = l.forwardRef(
493
+ (e, t) => {
494
+ const { __scopeDialog: a, ...r } = e, n = A(Y, a);
495
+ return (
496
+ // Make sure `Content` is scrollable even when it doesn't live inside `RemoveScroll`
497
+ // ie. when `Overlay` and `Content` are siblings
498
+ /* @__PURE__ */ o.jsx(Ft, { as: $o, allowPinchZoom: !0, shards: [n.contentRef], children: /* @__PURE__ */ o.jsx(
499
+ _.div,
500
+ {
501
+ "data-state": je(n.open),
502
+ ...r,
503
+ ref: t,
504
+ style: { pointerEvents: "auto", ...r.style }
505
+ }
506
+ ) })
507
+ );
508
+ }
509
+ ), I = "DialogContent", nt = l.forwardRef(
510
+ (e, t) => {
511
+ const a = ot(I, e.__scopeDialog), { forceMount: r = a.forceMount, ...n } = e, s = A(I, e.__scopeDialog);
512
+ return /* @__PURE__ */ o.jsx(z, { present: r || s.open, children: s.modal ? /* @__PURE__ */ o.jsx(Lo, { ...n, ref: t }) : /* @__PURE__ */ o.jsx(Ho, { ...n, ref: t }) });
513
+ }
514
+ );
515
+ nt.displayName = I;
516
+ var Lo = l.forwardRef(
517
+ (e, t) => {
518
+ const a = A(I, e.__scopeDialog), r = l.useRef(null), n = P(t, a.contentRef, r);
519
+ return l.useEffect(() => {
520
+ const s = r.current;
521
+ if (s) return Ht(s);
522
+ }, []), /* @__PURE__ */ o.jsx(
523
+ st,
524
+ {
525
+ ...e,
526
+ ref: n,
527
+ trapFocus: a.open,
528
+ disableOutsidePointerEvents: !0,
529
+ onCloseAutoFocus: w(e.onCloseAutoFocus, (s) => {
530
+ s.preventDefault(), a.triggerRef.current?.focus();
531
+ }),
532
+ onPointerDownOutside: w(e.onPointerDownOutside, (s) => {
533
+ const i = s.detail.originalEvent, c = i.button === 0 && i.ctrlKey === !0;
534
+ (i.button === 2 || c) && s.preventDefault();
535
+ }),
536
+ onFocusOutside: w(
537
+ e.onFocusOutside,
538
+ (s) => s.preventDefault()
539
+ )
540
+ }
541
+ );
542
+ }
543
+ ), Ho = l.forwardRef(
544
+ (e, t) => {
545
+ const a = A(I, e.__scopeDialog), r = l.useRef(!1), n = l.useRef(!1);
546
+ return /* @__PURE__ */ o.jsx(
547
+ st,
548
+ {
549
+ ...e,
550
+ ref: t,
551
+ trapFocus: !1,
552
+ disableOutsidePointerEvents: !1,
553
+ onCloseAutoFocus: (s) => {
554
+ e.onCloseAutoFocus?.(s), s.defaultPrevented || (r.current || a.triggerRef.current?.focus(), s.preventDefault()), r.current = !1, n.current = !1;
555
+ },
556
+ onInteractOutside: (s) => {
557
+ e.onInteractOutside?.(s), s.defaultPrevented || (r.current = !0, s.detail.originalEvent.type === "pointerdown" && (n.current = !0));
558
+ const i = s.target;
559
+ a.triggerRef.current?.contains(i) && s.preventDefault(), s.detail.originalEvent.type === "focusin" && n.current && s.preventDefault();
560
+ }
561
+ }
562
+ );
563
+ }
564
+ ), st = l.forwardRef(
565
+ (e, t) => {
566
+ const { __scopeDialog: a, trapFocus: r, onOpenAutoFocus: n, onCloseAutoFocus: s, ...i } = e, c = A(I, a), d = l.useRef(null), f = P(t, d);
567
+ return Bt(), /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
568
+ /* @__PURE__ */ o.jsx(
569
+ Vt,
570
+ {
571
+ asChild: !0,
572
+ loop: !0,
573
+ trapped: r,
574
+ onMountAutoFocus: n,
575
+ onUnmountAutoFocus: s,
576
+ children: /* @__PURE__ */ o.jsx(
577
+ Ie,
578
+ {
579
+ role: "dialog",
580
+ id: c.contentId,
581
+ "aria-describedby": c.descriptionId,
582
+ "aria-labelledby": c.titleId,
583
+ "data-state": je(c.open),
584
+ ...i,
585
+ ref: f,
586
+ onDismiss: () => c.onOpenChange(!1)
587
+ }
588
+ )
589
+ }
590
+ ),
591
+ /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
592
+ /* @__PURE__ */ o.jsx(Fo, { titleId: c.titleId }),
593
+ /* @__PURE__ */ o.jsx(Vo, { contentRef: d, descriptionId: c.descriptionId })
594
+ ] })
595
+ ] });
596
+ }
597
+ ), ye = "DialogTitle", it = l.forwardRef(
598
+ (e, t) => {
599
+ const { __scopeDialog: a, ...r } = e, n = A(ye, a);
600
+ return /* @__PURE__ */ o.jsx(_.h2, { id: n.titleId, ...r, ref: t });
601
+ }
602
+ );
603
+ it.displayName = ye;
604
+ var lt = "DialogDescription", ct = l.forwardRef(
605
+ (e, t) => {
606
+ const { __scopeDialog: a, ...r } = e, n = A(lt, a);
607
+ return /* @__PURE__ */ o.jsx(_.p, { id: n.descriptionId, ...r, ref: t });
608
+ }
609
+ );
610
+ ct.displayName = lt;
611
+ var dt = "DialogClose", ut = l.forwardRef(
612
+ (e, t) => {
613
+ const { __scopeDialog: a, ...r } = e, n = A(dt, a);
614
+ return /* @__PURE__ */ o.jsx(
615
+ _.button,
616
+ {
617
+ type: "button",
618
+ ...r,
619
+ ref: t,
620
+ onClick: w(e.onClick, () => n.onOpenChange(!1))
621
+ }
622
+ );
623
+ }
624
+ );
625
+ ut.displayName = dt;
626
+ function je(e) {
627
+ return e ? "open" : "closed";
628
+ }
629
+ var pt = "DialogTitleWarning", [Kr, ft] = Gt(pt, {
630
+ contentName: I,
631
+ titleName: ye,
632
+ docsSlug: "dialog"
633
+ }), Fo = ({ titleId: e }) => {
634
+ const t = ft(pt), a = `\`${t.contentName}\` requires a \`${t.titleName}\` for the component to be accessible for screen reader users.
635
+
636
+ If you want to hide the \`${t.titleName}\`, you can wrap it with our VisuallyHidden component.
637
+
638
+ For more information, see https://radix-ui.com/primitives/docs/components/${t.docsSlug}`;
639
+ return l.useEffect(() => {
640
+ e && (document.getElementById(e) || console.error(a));
641
+ }, [a, e]), null;
642
+ }, Bo = "DialogDescriptionWarning", Vo = ({ contentRef: e, descriptionId: t }) => {
643
+ const r = `Warning: Missing \`Description\` or \`aria-describedby={undefined}\` for {${ft(Bo).contentName}}.`;
644
+ return l.useEffect(() => {
645
+ const n = e.current?.getAttribute("aria-describedby");
646
+ t && n && (document.getElementById(t) || console.warn(r));
647
+ }, [r, e, t]), null;
648
+ }, Go = Qe, Ur = tt, Wo = at, qo = rt, Ko = nt, Uo = it, Yo = ct, Xo = ut, Zo = "Separator", Re = "horizontal", Jo = ["horizontal", "vertical"], xt = l.forwardRef((e, t) => {
649
+ const { decorative: a, orientation: r = Re, ...n } = e, s = Qo(r) ? r : Re, c = a ? { role: "none" } : { "aria-orientation": s === "vertical" ? s : void 0, role: "separator" };
650
+ return /* @__PURE__ */ o.jsx(
651
+ _.div,
652
+ {
653
+ "data-orientation": s,
654
+ ...c,
655
+ ...n,
656
+ ref: t
657
+ }
658
+ );
659
+ });
660
+ xt.displayName = Zo;
661
+ function Qo(e) {
662
+ return Jo.includes(e);
663
+ }
664
+ var ea = xt, [oe, Yr] = Z("Tooltip", [
665
+ Pe
666
+ ]), ae = Pe(), mt = "TooltipProvider", ta = 700, le = "tooltip.open", [oa, we] = oe(mt), gt = (e) => {
667
+ const {
668
+ __scopeTooltip: t,
669
+ delayDuration: a = ta,
670
+ skipDelayDuration: r = 300,
671
+ disableHoverableContent: n = !1,
672
+ children: s
673
+ } = e, i = l.useRef(!0), c = l.useRef(!1), d = l.useRef(0);
674
+ return l.useEffect(() => {
675
+ const f = d.current;
676
+ return () => window.clearTimeout(f);
677
+ }, []), /* @__PURE__ */ o.jsx(
678
+ oa,
679
+ {
680
+ scope: t,
681
+ isOpenDelayedRef: i,
682
+ delayDuration: a,
683
+ onOpen: l.useCallback(() => {
684
+ window.clearTimeout(d.current), i.current = !1;
685
+ }, []),
686
+ onClose: l.useCallback(() => {
687
+ window.clearTimeout(d.current), d.current = window.setTimeout(
688
+ () => i.current = !0,
689
+ r
690
+ );
691
+ }, [r]),
692
+ isPointerInTransitRef: c,
693
+ onPointerInTransitChange: l.useCallback((f) => {
694
+ c.current = f;
695
+ }, []),
696
+ disableHoverableContent: n,
697
+ children: s
698
+ }
699
+ );
700
+ };
701
+ gt.displayName = mt;
702
+ var F = "Tooltip", [aa, V] = oe(F), ht = (e) => {
703
+ const {
704
+ __scopeTooltip: t,
705
+ children: a,
706
+ open: r,
707
+ defaultOpen: n,
708
+ onOpenChange: s,
709
+ disableHoverableContent: i,
710
+ delayDuration: c
711
+ } = e, d = we(F, e.__scopeTooltip), f = ae(t), [p, m] = l.useState(null), h = O(), g = l.useRef(0), v = i ?? d.disableHoverableContent, C = c ?? d.delayDuration, y = l.useRef(!1), [b, x] = B({
712
+ prop: r,
713
+ defaultProp: n ?? !1,
714
+ onChange: (W) => {
715
+ W ? (d.onOpen(), document.dispatchEvent(new CustomEvent(le))) : d.onClose(), s?.(W);
716
+ },
717
+ caller: F
718
+ }), T = l.useMemo(() => b ? y.current ? "delayed-open" : "instant-open" : "closed", [b]), E = l.useCallback(() => {
719
+ window.clearTimeout(g.current), g.current = 0, y.current = !1, x(!0);
720
+ }, [x]), k = l.useCallback(() => {
721
+ window.clearTimeout(g.current), g.current = 0, x(!1);
722
+ }, [x]), M = l.useCallback(() => {
723
+ window.clearTimeout(g.current), g.current = window.setTimeout(() => {
724
+ y.current = !0, x(!0), g.current = 0;
725
+ }, C);
726
+ }, [C, x]);
727
+ return l.useEffect(() => () => {
728
+ g.current && (window.clearTimeout(g.current), g.current = 0);
729
+ }, []), /* @__PURE__ */ o.jsx(Wt, { ...f, children: /* @__PURE__ */ o.jsx(
730
+ aa,
731
+ {
732
+ scope: t,
733
+ contentId: h,
734
+ open: b,
735
+ stateAttribute: T,
736
+ trigger: p,
737
+ onTriggerChange: m,
738
+ onTriggerEnter: l.useCallback(() => {
739
+ d.isOpenDelayedRef.current ? M() : E();
740
+ }, [d.isOpenDelayedRef, M, E]),
741
+ onTriggerLeave: l.useCallback(() => {
742
+ v ? k() : (window.clearTimeout(g.current), g.current = 0);
743
+ }, [k, v]),
744
+ onOpen: E,
745
+ onClose: k,
746
+ disableHoverableContent: v,
747
+ children: a
748
+ }
749
+ ) });
750
+ };
751
+ ht.displayName = F;
752
+ var ce = "TooltipTrigger", bt = l.forwardRef(
753
+ (e, t) => {
754
+ const { __scopeTooltip: a, ...r } = e, n = V(ce, a), s = we(ce, a), i = ae(a), c = l.useRef(null), d = P(t, c, n.onTriggerChange), f = l.useRef(!1), p = l.useRef(!1), m = l.useCallback(() => f.current = !1, []);
755
+ return l.useEffect(() => () => document.removeEventListener("pointerup", m), [m]), /* @__PURE__ */ o.jsx(qt, { asChild: !0, ...i, children: /* @__PURE__ */ o.jsx(
756
+ _.button,
757
+ {
758
+ "aria-describedby": n.open ? n.contentId : void 0,
759
+ "data-state": n.stateAttribute,
760
+ ...r,
761
+ ref: d,
762
+ onPointerMove: w(e.onPointerMove, (h) => {
763
+ h.pointerType !== "touch" && !p.current && !s.isPointerInTransitRef.current && (n.onTriggerEnter(), p.current = !0);
764
+ }),
765
+ onPointerLeave: w(e.onPointerLeave, () => {
766
+ n.onTriggerLeave(), p.current = !1;
767
+ }),
768
+ onPointerDown: w(e.onPointerDown, () => {
769
+ n.open && n.onClose(), f.current = !0, document.addEventListener("pointerup", m, { once: !0 });
770
+ }),
771
+ onFocus: w(e.onFocus, () => {
772
+ f.current || n.onOpen();
773
+ }),
774
+ onBlur: w(e.onBlur, n.onClose),
775
+ onClick: w(e.onClick, n.onClose)
776
+ }
777
+ ) });
778
+ }
779
+ );
780
+ bt.displayName = ce;
781
+ var Ne = "TooltipPortal", [ra, na] = oe(Ne, {
782
+ forceMount: void 0
783
+ }), vt = (e) => {
784
+ const { __scopeTooltip: t, forceMount: a, children: r, container: n } = e, s = V(Ne, t);
785
+ return /* @__PURE__ */ o.jsx(ra, { scope: t, forceMount: a, children: /* @__PURE__ */ o.jsx(z, { present: a || s.open, children: /* @__PURE__ */ o.jsx(De, { asChild: !0, container: n, children: r }) }) });
786
+ };
787
+ vt.displayName = Ne;
788
+ var $ = "TooltipContent", Ct = l.forwardRef(
789
+ (e, t) => {
790
+ const a = na($, e.__scopeTooltip), { forceMount: r = a.forceMount, side: n = "top", ...s } = e, i = V($, e.__scopeTooltip);
791
+ return /* @__PURE__ */ o.jsx(z, { present: r || i.open, children: i.disableHoverableContent ? /* @__PURE__ */ o.jsx(yt, { side: n, ...s, ref: t }) : /* @__PURE__ */ o.jsx(sa, { side: n, ...s, ref: t }) });
792
+ }
793
+ ), sa = l.forwardRef((e, t) => {
794
+ const a = V($, e.__scopeTooltip), r = we($, e.__scopeTooltip), n = l.useRef(null), s = P(t, n), [i, c] = l.useState(null), { trigger: d, onClose: f } = a, p = n.current, { onPointerInTransitChange: m } = r, h = l.useCallback(() => {
795
+ c(null), m(!1);
796
+ }, [m]), g = l.useCallback(
797
+ (v, C) => {
798
+ const y = v.currentTarget, b = { x: v.clientX, y: v.clientY }, x = da(b, y.getBoundingClientRect()), T = ua(b, x), E = pa(C.getBoundingClientRect()), k = xa([...T, ...E]);
799
+ c(k), m(!0);
800
+ },
801
+ [m]
802
+ );
803
+ return l.useEffect(() => () => h(), [h]), l.useEffect(() => {
804
+ if (d && p) {
805
+ const v = (y) => g(y, p), C = (y) => g(y, d);
806
+ return d.addEventListener("pointerleave", v), p.addEventListener("pointerleave", C), () => {
807
+ d.removeEventListener("pointerleave", v), p.removeEventListener("pointerleave", C);
808
+ };
809
+ }
810
+ }, [d, p, g, h]), l.useEffect(() => {
811
+ if (i) {
812
+ const v = (C) => {
813
+ const y = C.target, b = { x: C.clientX, y: C.clientY }, x = d?.contains(y) || p?.contains(y), T = !fa(b, i);
814
+ x ? h() : T && (h(), f());
815
+ };
816
+ return document.addEventListener("pointermove", v), () => document.removeEventListener("pointermove", v);
817
+ }
818
+ }, [d, p, i, f, h]), /* @__PURE__ */ o.jsx(yt, { ...e, ref: s });
819
+ }), [ia, la] = oe(F, { isInside: !1 }), ca = Pt("TooltipContent"), yt = l.forwardRef(
820
+ (e, t) => {
821
+ const {
822
+ __scopeTooltip: a,
823
+ children: r,
824
+ "aria-label": n,
825
+ onEscapeKeyDown: s,
826
+ onPointerDownOutside: i,
827
+ ...c
828
+ } = e, d = V($, a), f = ae(a), { onClose: p } = d;
829
+ return l.useEffect(() => (document.addEventListener(le, p), () => document.removeEventListener(le, p)), [p]), l.useEffect(() => {
830
+ if (d.trigger) {
831
+ const m = (h) => {
832
+ h.target?.contains(d.trigger) && p();
833
+ };
834
+ return window.addEventListener("scroll", m, { capture: !0 }), () => window.removeEventListener("scroll", m, { capture: !0 });
835
+ }
836
+ }, [d.trigger, p]), /* @__PURE__ */ o.jsx(
837
+ Ie,
838
+ {
839
+ asChild: !0,
840
+ disableOutsidePointerEvents: !1,
841
+ onEscapeKeyDown: s,
842
+ onPointerDownOutside: i,
843
+ onFocusOutside: (m) => m.preventDefault(),
844
+ onDismiss: p,
845
+ children: /* @__PURE__ */ o.jsxs(
846
+ Ut,
847
+ {
848
+ "data-state": d.stateAttribute,
849
+ ...f,
850
+ ...c,
851
+ ref: t,
852
+ style: {
853
+ ...c.style,
854
+ "--radix-tooltip-content-transform-origin": "var(--radix-popper-transform-origin)",
855
+ "--radix-tooltip-content-available-width": "var(--radix-popper-available-width)",
856
+ "--radix-tooltip-content-available-height": "var(--radix-popper-available-height)",
857
+ "--radix-tooltip-trigger-width": "var(--radix-popper-anchor-width)",
858
+ "--radix-tooltip-trigger-height": "var(--radix-popper-anchor-height)"
859
+ },
860
+ children: [
861
+ /* @__PURE__ */ o.jsx(ca, { children: r }),
862
+ /* @__PURE__ */ o.jsx(ia, { scope: a, isInside: !0, children: /* @__PURE__ */ o.jsx(Yt, { id: d.contentId, role: "tooltip", children: n || r }) })
863
+ ]
864
+ }
865
+ )
866
+ }
867
+ );
868
+ }
869
+ );
870
+ Ct.displayName = $;
871
+ var jt = "TooltipArrow", wt = l.forwardRef(
872
+ (e, t) => {
873
+ const { __scopeTooltip: a, ...r } = e, n = ae(a);
874
+ return la(
875
+ jt,
876
+ a
877
+ ).isInside ? null : /* @__PURE__ */ o.jsx(Kt, { ...n, ...r, ref: t });
878
+ }
879
+ );
880
+ wt.displayName = jt;
881
+ function da(e, t) {
882
+ const a = Math.abs(t.top - e.y), r = Math.abs(t.bottom - e.y), n = Math.abs(t.right - e.x), s = Math.abs(t.left - e.x);
883
+ switch (Math.min(a, r, n, s)) {
884
+ case s:
885
+ return "left";
886
+ case n:
887
+ return "right";
888
+ case a:
889
+ return "top";
890
+ case r:
891
+ return "bottom";
892
+ default:
893
+ throw new Error("unreachable");
894
+ }
895
+ }
896
+ function ua(e, t, a = 5) {
897
+ const r = [];
898
+ switch (t) {
899
+ case "top":
900
+ r.push(
901
+ { x: e.x - a, y: e.y + a },
902
+ { x: e.x + a, y: e.y + a }
903
+ );
904
+ break;
905
+ case "bottom":
906
+ r.push(
907
+ { x: e.x - a, y: e.y - a },
908
+ { x: e.x + a, y: e.y - a }
909
+ );
910
+ break;
911
+ case "left":
912
+ r.push(
913
+ { x: e.x + a, y: e.y - a },
914
+ { x: e.x + a, y: e.y + a }
915
+ );
916
+ break;
917
+ case "right":
918
+ r.push(
919
+ { x: e.x - a, y: e.y - a },
920
+ { x: e.x - a, y: e.y + a }
921
+ );
922
+ break;
923
+ }
924
+ return r;
925
+ }
926
+ function pa(e) {
927
+ const { top: t, right: a, bottom: r, left: n } = e;
928
+ return [
929
+ { x: n, y: t },
930
+ { x: a, y: t },
931
+ { x: a, y: r },
932
+ { x: n, y: r }
933
+ ];
934
+ }
935
+ function fa(e, t) {
936
+ const { x: a, y: r } = e;
937
+ let n = !1;
938
+ for (let s = 0, i = t.length - 1; s < t.length; i = s++) {
939
+ const c = t[s], d = t[i], f = c.x, p = c.y, m = d.x, h = d.y;
940
+ p > r != h > r && a < (m - f) * (r - p) / (h - p) + f && (n = !n);
941
+ }
942
+ return n;
943
+ }
944
+ function xa(e) {
945
+ const t = e.slice();
946
+ return t.sort((a, r) => a.x < r.x ? -1 : a.x > r.x ? 1 : a.y < r.y ? -1 : a.y > r.y ? 1 : 0), ma(t);
947
+ }
948
+ function ma(e) {
949
+ if (e.length <= 1) return e.slice();
950
+ const t = [];
951
+ for (let r = 0; r < e.length; r++) {
952
+ const n = e[r];
953
+ for (; t.length >= 2; ) {
954
+ const s = t[t.length - 1], i = t[t.length - 2];
955
+ if ((s.x - i.x) * (n.y - i.y) >= (s.y - i.y) * (n.x - i.x)) t.pop();
956
+ else break;
957
+ }
958
+ t.push(n);
959
+ }
960
+ t.pop();
961
+ const a = [];
962
+ for (let r = e.length - 1; r >= 0; r--) {
963
+ const n = e[r];
964
+ for (; a.length >= 2; ) {
965
+ const s = a[a.length - 1], i = a[a.length - 2];
966
+ if ((s.x - i.x) * (n.y - i.y) >= (s.y - i.y) * (n.x - i.x)) a.pop();
967
+ else break;
968
+ }
969
+ a.push(n);
970
+ }
971
+ return a.pop(), t.length === 1 && a.length === 1 && t[0].x === a[0].x && t[0].y === a[0].y ? t : t.concat(a);
972
+ }
973
+ var ga = gt, ha = ht, ba = bt, va = vt, Ca = Ct, ya = wt;
974
+ function ja({ ...e }) {
975
+ return /* @__PURE__ */ o.jsx(ko, { "data-slot": "accordion", ...e });
976
+ }
977
+ function wa({ className: e, ...t }) {
978
+ return /* @__PURE__ */ o.jsx(
979
+ Do,
980
+ {
981
+ className: u("border-b last:border-b-0", e),
982
+ "data-slot": "accordion-item",
983
+ ...t
984
+ }
985
+ );
986
+ }
987
+ function Na({ className: e, children: t, ...a }) {
988
+ return /* @__PURE__ */ o.jsx(Io, { className: "flex", children: /* @__PURE__ */ o.jsxs(
989
+ Po,
990
+ {
991
+ className: u(
992
+ "flex flex-1 items-start justify-between gap-4 rounded-md py-4 text-left font-medium text-sm outline-none transition-all hover:underline focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:pointer-events-none disabled:opacity-50 [&[data-state=open]>svg]:rotate-180",
993
+ e
994
+ ),
995
+ "data-slot": "accordion-trigger",
996
+ ...a,
997
+ children: [
998
+ t,
999
+ /* @__PURE__ */ o.jsx(Xt, { className: "pointer-events-none size-4 shrink-0 translate-y-0.5 text-muted-foreground transition-transform duration-200" })
1000
+ ]
1001
+ }
1002
+ ) });
1003
+ }
1004
+ function Ta({ className: e, children: t, ...a }) {
1005
+ return /* @__PURE__ */ o.jsx(
1006
+ So,
1007
+ {
1008
+ className: "overflow-hidden text-sm data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down",
1009
+ "data-slot": "accordion-content",
1010
+ ...a,
1011
+ children: /* @__PURE__ */ o.jsx("div", { className: u("pt-0 pb-4", e), children: t })
1012
+ }
1013
+ );
1014
+ }
1015
+ const Te = ({ children: e, ...t }) => /* @__PURE__ */ o.jsx(ja, { ...t, children: e });
1016
+ Te.Item = wa;
1017
+ Te.Trigger = Na;
1018
+ Te.Content = Ta;
1019
+ function _a({ className: e, ...t }) {
1020
+ return /* @__PURE__ */ o.jsx(
1021
+ "div",
1022
+ {
1023
+ className: u("flex flex-col gap-6 rounded-xl border bg-card py-6 text-card-foreground shadow-sm", e),
1024
+ "data-slot": "card",
1025
+ ...t
1026
+ }
1027
+ );
1028
+ }
1029
+ function Ra({ className: e, ...t }) {
1030
+ return /* @__PURE__ */ o.jsx(
1031
+ "div",
1032
+ {
1033
+ className: u(
1034
+ "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
1035
+ e
1036
+ ),
1037
+ "data-slot": "card-header",
1038
+ ...t
1039
+ }
1040
+ );
1041
+ }
1042
+ function Aa({ className: e, ...t }) {
1043
+ return /* @__PURE__ */ o.jsx("div", { className: u("font-semibold leading-none", e), "data-slot": "card-title", ...t });
1044
+ }
1045
+ function Ea({ className: e, ...t }) {
1046
+ return /* @__PURE__ */ o.jsx("div", { className: u("text-muted-foreground text-sm", e), "data-slot": "card-description", ...t });
1047
+ }
1048
+ function ka({ className: e, ...t }) {
1049
+ return /* @__PURE__ */ o.jsx(
1050
+ "div",
1051
+ {
1052
+ className: u("col-start-2 row-span-2 row-start-1 self-start justify-self-end", e),
1053
+ "data-slot": "card-action",
1054
+ ...t
1055
+ }
1056
+ );
1057
+ }
1058
+ function Da({ className: e, ...t }) {
1059
+ return /* @__PURE__ */ o.jsx("div", { className: u("px-6", e), "data-slot": "card-content", ...t });
1060
+ }
1061
+ function Ia({ className: e, ...t }) {
1062
+ return /* @__PURE__ */ o.jsx("div", { className: u("flex items-center px-6 [.border-t]:pt-6", e), "data-slot": "card-footer", ...t });
1063
+ }
1064
+ const L = ({ children: e, ...t }) => /* @__PURE__ */ o.jsx(_a, { ...t, children: e });
1065
+ L.Action = ka;
1066
+ L.Content = Da;
1067
+ L.Description = Ea;
1068
+ L.Footer = Ia;
1069
+ L.Header = Ra;
1070
+ L.Title = Aa;
1071
+ function Pa({ ...e }) {
1072
+ return /* @__PURE__ */ o.jsx(He, { "data-slot": "collapsible", ...e });
1073
+ }
1074
+ function Sa({ ...e }) {
1075
+ return /* @__PURE__ */ o.jsx(fe, { "data-slot": "collapsible-trigger", ...e });
1076
+ }
1077
+ function Ma({ ...e }) {
1078
+ return /* @__PURE__ */ o.jsx(me, { "data-slot": "collapsible-content", ...e });
1079
+ }
1080
+ const Nt = ({ children: e, ...t }) => /* @__PURE__ */ o.jsx(Pa, { ...t, children: e });
1081
+ Nt.Trigger = Sa;
1082
+ Nt.Content = Ma;
1083
+ function Oa({ className: e, ...t }) {
1084
+ return /* @__PURE__ */ o.jsx(
1085
+ "div",
1086
+ {
1087
+ className: u(
1088
+ "flex min-w-0 flex-1 flex-col items-center justify-center gap-6 rounded-lg border-dashed p-6 text-center text-balance md:p-12",
1089
+ e
1090
+ ),
1091
+ "data-slot": "empty",
1092
+ ...t
1093
+ }
1094
+ );
1095
+ }
1096
+ function $a({ className: e, ...t }) {
1097
+ return /* @__PURE__ */ o.jsx(
1098
+ "div",
1099
+ {
1100
+ className: u("flex max-w-sm flex-col items-center gap-2 text-center", e),
1101
+ "data-slot": "empty-header",
1102
+ ...t
1103
+ }
1104
+ );
1105
+ }
1106
+ const za = X(
1107
+ "flex shrink-0 items-center justify-center mb-2 [&_svg]:pointer-events-none [&_svg]:shrink-0",
1108
+ {
1109
+ variants: {
1110
+ variant: {
1111
+ default: "bg-transparent",
1112
+ icon: "bg-muted text-foreground flex size-10 shrink-0 items-center justify-center rounded-lg [&_svg:not([class*='size-'])]:size-6"
1113
+ }
1114
+ },
1115
+ defaultVariants: {
1116
+ variant: "default"
1117
+ }
1118
+ }
1119
+ );
1120
+ function La({
1121
+ className: e,
1122
+ variant: t = "default",
1123
+ ...a
1124
+ }) {
1125
+ return /* @__PURE__ */ o.jsx(
1126
+ "div",
1127
+ {
1128
+ className: u(za({ variant: t, className: e })),
1129
+ "data-slot": "empty-icon",
1130
+ "data-variant": t,
1131
+ ...a
1132
+ }
1133
+ );
1134
+ }
1135
+ function Ha({ className: e, ...t }) {
1136
+ return /* @__PURE__ */ o.jsx(
1137
+ "div",
1138
+ {
1139
+ className: u("flex w-full max-w-sm min-w-0 flex-col items-center gap-4 text-sm text-balance", e),
1140
+ "data-slot": "empty-content",
1141
+ ...t
1142
+ }
1143
+ );
1144
+ }
1145
+ const G = ({ children: e, ...t }) => /* @__PURE__ */ o.jsx(Oa, { ...t, children: e }), Fa = ({ children: e, ...t }) => /* @__PURE__ */ o.jsx(eo, { "data-slot": "empty-title", level: "3", weight: "medium", ...t, children: e }), Ba = ({ children: e, className: t, ...a }) => /* @__PURE__ */ o.jsx(
1146
+ ue,
1147
+ {
1148
+ className: u(
1149
+ "text-muted-foreground [&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
1150
+ t
1151
+ ),
1152
+ "data-slot": "empty-description",
1153
+ size: "sm",
1154
+ weight: "medium",
1155
+ ...a,
1156
+ children: e
1157
+ }
1158
+ );
1159
+ G.Header = $a;
1160
+ G.Media = La;
1161
+ G.Content = Ha;
1162
+ G.Title = Fa;
1163
+ G.Description = Ba;
1164
+ function Va({
1165
+ className: e,
1166
+ orientation: t = "horizontal",
1167
+ decorative: a = !0,
1168
+ ...r
1169
+ }) {
1170
+ return /* @__PURE__ */ o.jsx(
1171
+ ea,
1172
+ {
1173
+ className: u(
1174
+ "bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",
1175
+ e
1176
+ ),
1177
+ "data-slot": "separator",
1178
+ decorative: a,
1179
+ orientation: t,
1180
+ ...r
1181
+ }
1182
+ );
1183
+ }
1184
+ function Xr({ className: e, ...t }) {
1185
+ return /* @__PURE__ */ o.jsx("div", { className: u("group/item-group flex flex-col", e), "data-slot": "item-group", role: "list", ...t });
1186
+ }
1187
+ const Ga = X(
1188
+ "group/item flex items-center border border-transparent text-sm rounded-md transition-colors [a]:hover:bg-accent/50 [a]:transition-colors duration-100 flex-wrap outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]",
1189
+ {
1190
+ variants: {
1191
+ variant: {
1192
+ default: "bg-transparent",
1193
+ outline: "border-border",
1194
+ muted: "bg-muted/50"
1195
+ },
1196
+ size: {
1197
+ default: "p-4 gap-4 ",
1198
+ sm: "py-3 px-4 gap-2.5"
1199
+ }
1200
+ },
1201
+ defaultVariants: {
1202
+ variant: "default",
1203
+ size: "default"
1204
+ }
1205
+ }
1206
+ );
1207
+ function Wa({
1208
+ className: e,
1209
+ variant: t = "default",
1210
+ size: a = "default",
1211
+ asChild: r = !1,
1212
+ ...n
1213
+ }) {
1214
+ const s = r ? ke : "div";
1215
+ return /* @__PURE__ */ o.jsx(
1216
+ s,
1217
+ {
1218
+ className: u(Ga({ variant: t, size: a, className: e })),
1219
+ "data-size": a,
1220
+ "data-slot": "item",
1221
+ "data-variant": t,
1222
+ ...n
1223
+ }
1224
+ );
1225
+ }
1226
+ const qa = X(
1227
+ "flex shrink-0 items-center justify-center gap-2 group-has-[[data-slot=item-description]]/item:self-start [&_svg]:pointer-events-none group-has-[[data-slot=item-description]]/item:translate-y-0.5",
1228
+ {
1229
+ variants: {
1230
+ variant: {
1231
+ default: "bg-transparent",
1232
+ icon: "size-8 border rounded-sm bg-muted [&_svg:not([class*='size-'])]:size-4",
1233
+ image: "size-10 rounded-sm overflow-hidden [&_img]:size-full [&_img]:object-cover"
1234
+ }
1235
+ },
1236
+ defaultVariants: {
1237
+ variant: "default"
1238
+ }
1239
+ }
1240
+ );
1241
+ function Ka({
1242
+ className: e,
1243
+ variant: t = "default",
1244
+ ...a
1245
+ }) {
1246
+ return /* @__PURE__ */ o.jsx(
1247
+ "div",
1248
+ {
1249
+ className: u(qa({ variant: t, className: e })),
1250
+ "data-slot": "item-media",
1251
+ "data-variant": t,
1252
+ ...a
1253
+ }
1254
+ );
1255
+ }
1256
+ function Ua({ className: e, ...t }) {
1257
+ return /* @__PURE__ */ o.jsx(
1258
+ "div",
1259
+ {
1260
+ className: u("flex flex-1 flex-col gap-1 [&+[data-slot=item-content]]:flex-none", e),
1261
+ "data-slot": "item-content",
1262
+ ...t
1263
+ }
1264
+ );
1265
+ }
1266
+ function Ya({ className: e, ...t }) {
1267
+ return /* @__PURE__ */ o.jsx(
1268
+ "div",
1269
+ {
1270
+ className: u("flex w-fit items-center gap-2 text-sm leading-snug font-medium", e),
1271
+ "data-slot": "item-title",
1272
+ ...t
1273
+ }
1274
+ );
1275
+ }
1276
+ function Xa({ className: e, ...t }) {
1277
+ return /* @__PURE__ */ o.jsx(
1278
+ "p",
1279
+ {
1280
+ className: u(
1281
+ "text-muted-foreground line-clamp-2 text-sm leading-normal font-normal text-balance",
1282
+ "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4",
1283
+ e
1284
+ ),
1285
+ "data-slot": "item-description",
1286
+ ...t
1287
+ }
1288
+ );
1289
+ }
1290
+ function Za({ className: e, ...t }) {
1291
+ return /* @__PURE__ */ o.jsx("div", { className: u("flex items-center gap-2", e), "data-slot": "item-actions", ...t });
1292
+ }
1293
+ function Ja({ className: e, ...t }) {
1294
+ return /* @__PURE__ */ o.jsx(
1295
+ "div",
1296
+ {
1297
+ className: u("flex basis-full items-center justify-between gap-2", e),
1298
+ "data-slot": "item-header",
1299
+ ...t
1300
+ }
1301
+ );
1302
+ }
1303
+ function Qa({ className: e, ...t }) {
1304
+ return /* @__PURE__ */ o.jsx(
1305
+ "div",
1306
+ {
1307
+ className: u("flex basis-full items-center justify-between gap-2", e),
1308
+ "data-slot": "item-footer",
1309
+ ...t
1310
+ }
1311
+ );
1312
+ }
1313
+ const S = ({ children: e, ...t }) => /* @__PURE__ */ o.jsx(Wa, { ...t, children: e });
1314
+ S.Header = Ja;
1315
+ S.Media = Ka;
1316
+ S.Content = Ua;
1317
+ S.Title = Ya;
1318
+ S.Description = Xa;
1319
+ S.Actions = Za;
1320
+ S.Footer = Qa;
1321
+ const Tt = ({ children: e, ...t }) => /* @__PURE__ */ o.jsx(Zt, { ...t, children: e });
1322
+ Tt.Trigger = Jt;
1323
+ Tt.Content = Qt;
1324
+ function er({ className: e, ...t }) {
1325
+ return /* @__PURE__ */ o.jsx("div", { className: "relative w-full overflow-x-auto", "data-slot": "table-container", children: /* @__PURE__ */ o.jsx("table", { className: u("w-full caption-bottom text-sm", e), "data-slot": "table", ...t }) });
1326
+ }
1327
+ function tr({ className: e, ...t }) {
1328
+ return /* @__PURE__ */ o.jsx("thead", { className: u("[&_tr]:border-b", e), "data-slot": "table-header", ...t });
1329
+ }
1330
+ function or({ className: e, ...t }) {
1331
+ return /* @__PURE__ */ o.jsx("tbody", { className: u("[&_tr:last-child]:border-0", e), "data-slot": "table-body", ...t });
1332
+ }
1333
+ function ar({ className: e, ...t }) {
1334
+ return /* @__PURE__ */ o.jsx(
1335
+ "tr",
1336
+ {
1337
+ className: u("border-b transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted", e),
1338
+ "data-slot": "table-row",
1339
+ ...t
1340
+ }
1341
+ );
1342
+ }
1343
+ function rr({ className: e, ...t }) {
1344
+ return /* @__PURE__ */ o.jsx(
1345
+ "th",
1346
+ {
1347
+ className: u(
1348
+ "h-10 whitespace-nowrap px-2 text-left align-middle font-medium text-foreground [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1349
+ e
1350
+ ),
1351
+ "data-slot": "table-head",
1352
+ ...t
1353
+ }
1354
+ );
1355
+ }
1356
+ function nr({ className: e, ...t }) {
1357
+ return /* @__PURE__ */ o.jsx(
1358
+ "td",
1359
+ {
1360
+ className: u(
1361
+ "whitespace-nowrap p-2 align-middle [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",
1362
+ e
1363
+ ),
1364
+ "data-slot": "table-cell",
1365
+ ...t
1366
+ }
1367
+ );
1368
+ }
1369
+ function sr({ className: e, ...t }) {
1370
+ return /* @__PURE__ */ o.jsx("caption", { className: u("mt-4 text-muted-foreground text-sm", e), "data-slot": "table-caption", ...t });
1371
+ }
1372
+ const H = ({ children: e, ...t }) => /* @__PURE__ */ o.jsx(er, { ...t, children: e });
1373
+ H.Body = or;
1374
+ H.Caption = sr;
1375
+ H.Cell = nr;
1376
+ H.Head = rr;
1377
+ H.Header = tr;
1378
+ H.Row = ar;
1379
+ const Ae = [
1380
+ {
1381
+ theme: "light",
1382
+ icon: /* @__PURE__ */ o.jsx(Oe, {}),
1383
+ label: "Light mode"
1384
+ },
1385
+ {
1386
+ theme: "dark",
1387
+ icon: /* @__PURE__ */ o.jsx(Me, {}),
1388
+ label: "Dark mode"
1389
+ },
1390
+ {
1391
+ theme: "system",
1392
+ icon: /* @__PURE__ */ o.jsx(oo, {}),
1393
+ label: "System theme"
1394
+ }
1395
+ ], ir = ({ theme: e, setTheme: t, className: a, buttonClassName: r, ...n }) => {
1396
+ const s = () => {
1397
+ t(e === "light" ? "dark" : e === "dark" ? "system" : "light");
1398
+ }, i = Ae.find((d) => d.theme === e)?.icon, c = Ae.find((d) => d.theme === e)?.label;
1399
+ return /* @__PURE__ */ o.jsx("span", { className: u(a), ...n, children: /* @__PURE__ */ o.jsxs(St, { className: u("p-1 w-full", r), onClick: s, variant: "unstyled", children: [
1400
+ i,
1401
+ /* @__PURE__ */ o.jsx(ue, { size: "base", truncate: !0, children: c })
1402
+ ] }) });
1403
+ }, lr = ({
1404
+ variant: e = "horizontal",
1405
+ theme: t,
1406
+ setTheme: a,
1407
+ className: r,
1408
+ buttonClassName: n,
1409
+ ...s
1410
+ }) => {
1411
+ const i = (c) => t === c ? "text-primary/75" : "text-primary/25 hover:text-primary";
1412
+ return e === "stacked" ? /* @__PURE__ */ o.jsx(
1413
+ ir,
1414
+ {
1415
+ buttonClassName: n,
1416
+ className: r,
1417
+ setTheme: a,
1418
+ theme: t,
1419
+ ...s
1420
+ }
1421
+ ) : /* @__PURE__ */ o.jsxs(Se, { gap: "4", children: [
1422
+ /* @__PURE__ */ o.jsxs(j, { children: [
1423
+ /* @__PURE__ */ o.jsx(j.Trigger, { children: /* @__PURE__ */ o.jsx(ro, { className: i("system"), onClick: () => a("system"), size: 32 }) }),
1424
+ /* @__PURE__ */ o.jsx(j.Content, { children: "Use system theme" })
1425
+ ] }),
1426
+ /* @__PURE__ */ o.jsxs(j, { children: [
1427
+ /* @__PURE__ */ o.jsx(j.Trigger, { children: /* @__PURE__ */ o.jsx(Oe, { className: i("light"), onClick: () => a("light"), size: 32 }) }),
1428
+ /* @__PURE__ */ o.jsx(j.Content, { children: "Use light theme" })
1429
+ ] }),
1430
+ /* @__PURE__ */ o.jsxs(j, { children: [
1431
+ /* @__PURE__ */ o.jsx(j.Trigger, { children: /* @__PURE__ */ o.jsx(Me, { className: i("dark"), onClick: () => a("dark"), size: 32 }) }),
1432
+ /* @__PURE__ */ o.jsx(j.Content, { children: "Use dark theme" })
1433
+ ] })
1434
+ ] });
1435
+ };
1436
+ function _e({ delayDuration: e = 0, ...t }) {
1437
+ return /* @__PURE__ */ o.jsx(ga, { "data-slot": "tooltip-provider", delayDuration: e, ...t });
1438
+ }
1439
+ function _t({ ...e }) {
1440
+ return /* @__PURE__ */ o.jsx(_e, { children: /* @__PURE__ */ o.jsx(ha, { "data-slot": "tooltip", ...e }) });
1441
+ }
1442
+ function Rt({ ...e }) {
1443
+ return /* @__PURE__ */ o.jsx(ba, { "data-slot": "tooltip-trigger", ...e });
1444
+ }
1445
+ function At({
1446
+ className: e,
1447
+ sideOffset: t = 0,
1448
+ children: a,
1449
+ ...r
1450
+ }) {
1451
+ return /* @__PURE__ */ o.jsx(va, { children: /* @__PURE__ */ o.jsxs(
1452
+ Ca,
1453
+ {
1454
+ className: u(
1455
+ "fade-in-0 zoom-in-95 data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) animate-in text-balance rounded-md bg-primary px-3 py-1.5 text-primary-foreground text-xs data-[state=closed]:animate-out",
1456
+ e
1457
+ ),
1458
+ "data-slot": "tooltip-content",
1459
+ sideOffset: t,
1460
+ ...r,
1461
+ children: [
1462
+ a,
1463
+ /* @__PURE__ */ o.jsx(ya, { className: "z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px] bg-primary fill-primary" })
1464
+ ]
1465
+ }
1466
+ ) });
1467
+ }
1468
+ const j = ({ children: e, open: t, onOpenChange: a }) => /* @__PURE__ */ o.jsx(_e, { children: /* @__PURE__ */ o.jsx(_t, { onOpenChange: a, open: t, children: e }) }), cr = ({ children: e, cursor: t = "pointer", className: a }) => /* @__PURE__ */ o.jsx(
1469
+ Rt,
1470
+ {
1471
+ asChild: !0,
1472
+ className: u(
1473
+ t === "arrow" && "cursor-default",
1474
+ t === "pointer" && "cursor-pointer",
1475
+ t === "text" && "cursor-text",
1476
+ t === "not-allowed" && "cursor-not-allowed",
1477
+ a
1478
+ ),
1479
+ children: e
1480
+ }
1481
+ ), dr = ({ className: e, children: t }) => /* @__PURE__ */ o.jsx(At, { className: e, children: t });
1482
+ j.Trigger = cr;
1483
+ j.Content = dr;
1484
+ const Zr = ({ children: e, content: t }) => /* @__PURE__ */ o.jsxs(j, { children: [
1485
+ /* @__PURE__ */ o.jsx(j.Trigger, { children: typeof e == "string" ? /* @__PURE__ */ o.jsx("span", { children: e }) : e }),
1486
+ /* @__PURE__ */ o.jsx(j.Content, { children: t })
1487
+ ] });
1488
+ function ur({ ...e }) {
1489
+ return /* @__PURE__ */ o.jsx(Go, { "data-slot": "sheet", ...e });
1490
+ }
1491
+ function pr({ ...e }) {
1492
+ return /* @__PURE__ */ o.jsx(Wo, { "data-slot": "sheet-portal", ...e });
1493
+ }
1494
+ function fr({ className: e, ...t }) {
1495
+ return /* @__PURE__ */ o.jsx(
1496
+ qo,
1497
+ {
1498
+ className: u(
1499
+ "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50 data-[state=closed]:animate-out data-[state=open]:animate-in",
1500
+ e
1501
+ ),
1502
+ "data-slot": "sheet-overlay",
1503
+ ...t
1504
+ }
1505
+ );
1506
+ }
1507
+ function xr({
1508
+ className: e,
1509
+ children: t,
1510
+ side: a = "right",
1511
+ ...r
1512
+ }) {
1513
+ return /* @__PURE__ */ o.jsxs(pr, { children: [
1514
+ /* @__PURE__ */ o.jsx(fr, {}),
1515
+ /* @__PURE__ */ o.jsxs(
1516
+ Ko,
1517
+ {
1518
+ className: u(
1519
+ "fixed z-50 flex flex-col gap-4 bg-background shadow-lg transition ease-in-out data-[state=closed]:animate-out data-[state=open]:animate-in data-[state=closed]:duration-300 data-[state=open]:duration-500",
1520
+ a === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm",
1521
+ a === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm",
1522
+ a === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b",
1523
+ a === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",
1524
+ e
1525
+ ),
1526
+ "data-slot": "sheet-content",
1527
+ ...r,
1528
+ children: [
1529
+ t,
1530
+ /* @__PURE__ */ o.jsxs(Xo, { className: "absolute top-4 right-4 rounded-xs opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-hidden focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-secondary", children: [
1531
+ /* @__PURE__ */ o.jsx(mo, { className: "size-4" }),
1532
+ /* @__PURE__ */ o.jsx("span", { className: "sr-only", children: "Close" })
1533
+ ] })
1534
+ ]
1535
+ }
1536
+ )
1537
+ ] });
1538
+ }
1539
+ function mr({ className: e, ...t }) {
1540
+ return /* @__PURE__ */ o.jsx("div", { className: u("flex flex-col gap-1.5 p-4", e), "data-slot": "sheet-header", ...t });
1541
+ }
1542
+ function gr({ className: e, ...t }) {
1543
+ return /* @__PURE__ */ o.jsx(
1544
+ Uo,
1545
+ {
1546
+ className: u("font-semibold text-foreground", e),
1547
+ "data-slot": "sheet-title",
1548
+ ...t
1549
+ }
1550
+ );
1551
+ }
1552
+ function hr({ className: e, ...t }) {
1553
+ return /* @__PURE__ */ o.jsx(
1554
+ Yo,
1555
+ {
1556
+ className: u("text-muted-foreground text-sm", e),
1557
+ "data-slot": "sheet-description",
1558
+ ...t
1559
+ }
1560
+ );
1561
+ }
1562
+ const se = 768;
1563
+ function br() {
1564
+ const [e, t] = l.useState(void 0);
1565
+ return l.useEffect(() => {
1566
+ const a = window.matchMedia(`(max-width: ${se - 1}px)`), r = () => {
1567
+ t(window.innerWidth < se);
1568
+ };
1569
+ return a.addEventListener("change", r), t(window.innerWidth < se), () => a.removeEventListener("change", r);
1570
+ }, []), !!e;
1571
+ }
1572
+ const vr = "sidebar_state", Cr = 60 * 60 * 24 * 7, yr = "16rem", jr = "18rem", wr = "3rem", Nr = "b", Et = l.createContext(null);
1573
+ function re() {
1574
+ const e = l.useContext(Et);
1575
+ if (!e)
1576
+ throw new Error("useSidebar must be used within a SidebarProvider.");
1577
+ return e;
1578
+ }
1579
+ function Tr({
1580
+ defaultOpen: e = !0,
1581
+ open: t,
1582
+ onOpenChange: a,
1583
+ className: r,
1584
+ style: n,
1585
+ children: s,
1586
+ ...i
1587
+ }) {
1588
+ const c = br(), [d, f] = l.useState(!1), [p, m] = l.useState(e), h = t ?? p, g = l.useCallback(
1589
+ (b) => {
1590
+ const x = typeof b == "function" ? b(h) : b;
1591
+ a ? a(x) : m(x), document.cookie = `${vr}=${x}; path=/; max-age=${Cr}`;
1592
+ },
1593
+ [a, h]
1594
+ ), v = l.useCallback(() => c ? f((b) => !b) : g((b) => !b), [c, g]);
1595
+ l.useEffect(() => {
1596
+ const b = (x) => {
1597
+ x.key === Nr && (x.metaKey || x.ctrlKey) && (x.preventDefault(), v());
1598
+ };
1599
+ return window.addEventListener("keydown", b), () => window.removeEventListener("keydown", b);
1600
+ }, [v]);
1601
+ const C = h ? "expanded" : "collapsed", y = l.useMemo(
1602
+ () => ({
1603
+ state: C,
1604
+ open: h,
1605
+ setOpen: g,
1606
+ isMobile: c,
1607
+ openMobile: d,
1608
+ setOpenMobile: f,
1609
+ toggleSidebar: v
1610
+ }),
1611
+ [C, h, g, c, d, v]
1612
+ );
1613
+ return /* @__PURE__ */ o.jsx(Et.Provider, { value: y, children: /* @__PURE__ */ o.jsx(_e, { delayDuration: 0, children: /* @__PURE__ */ o.jsx(
1614
+ "div",
1615
+ {
1616
+ className: u("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar", r),
1617
+ "data-slot": "sidebar-wrapper",
1618
+ style: {
1619
+ "--sidebar-width": yr,
1620
+ "--sidebar-width-icon": wr,
1621
+ ...n
1622
+ },
1623
+ ...i,
1624
+ children: s
1625
+ }
1626
+ ) }) });
1627
+ }
1628
+ function _r({
1629
+ side: e = "left",
1630
+ variant: t = "sidebar",
1631
+ collapsible: a = "offcanvas",
1632
+ className: r,
1633
+ children: n,
1634
+ ...s
1635
+ }) {
1636
+ const { isMobile: i, state: c, openMobile: d, setOpenMobile: f } = re();
1637
+ return a === "none" ? /* @__PURE__ */ o.jsx(
1638
+ "div",
1639
+ {
1640
+ className: u("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground", r),
1641
+ "data-slot": "sidebar",
1642
+ ...s,
1643
+ children: n
1644
+ }
1645
+ ) : i ? /* @__PURE__ */ o.jsx(ur, { onOpenChange: f, open: d, ...s, children: /* @__PURE__ */ o.jsxs(
1646
+ xr,
1647
+ {
1648
+ className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
1649
+ "data-mobile": "true",
1650
+ "data-sidebar": "sidebar",
1651
+ "data-slot": "sidebar",
1652
+ side: e,
1653
+ style: {
1654
+ "--sidebar-width": jr
1655
+ },
1656
+ children: [
1657
+ /* @__PURE__ */ o.jsxs(mr, { className: "sr-only", children: [
1658
+ /* @__PURE__ */ o.jsx(gr, { children: "Sidebar" }),
1659
+ /* @__PURE__ */ o.jsx(hr, { children: "Displays the mobile sidebar." })
1660
+ ] }),
1661
+ /* @__PURE__ */ o.jsx("div", { className: "flex h-full w-full flex-col", children: n })
1662
+ ]
1663
+ }
1664
+ ) }) : /* @__PURE__ */ o.jsxs(
1665
+ "div",
1666
+ {
1667
+ className: "group peer hidden text-sidebar-foreground md:block",
1668
+ "data-collapsible": c === "collapsed" ? a : "",
1669
+ "data-side": e,
1670
+ "data-slot": "sidebar",
1671
+ "data-state": c,
1672
+ "data-variant": t,
1673
+ children: [
1674
+ /* @__PURE__ */ o.jsx(
1675
+ "div",
1676
+ {
1677
+ className: u(
1678
+ "relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear",
1679
+ "group-data-[collapsible=offcanvas]:w-0",
1680
+ "group-data-[side=right]:rotate-180",
1681
+ t === "floating" || t === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"
1682
+ ),
1683
+ "data-slot": "sidebar-gap"
1684
+ }
1685
+ ),
1686
+ /* @__PURE__ */ o.jsx(
1687
+ "div",
1688
+ {
1689
+ className: u(
1690
+ "fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex",
1691
+ e === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
1692
+ // Adjust the padding for floating and inset variants.
1693
+ t === "floating" || t === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",
1694
+ r
1695
+ ),
1696
+ "data-slot": "sidebar-container",
1697
+ ...s,
1698
+ children: /* @__PURE__ */ o.jsx(
1699
+ "div",
1700
+ {
1701
+ className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm",
1702
+ "data-sidebar": "sidebar",
1703
+ "data-slot": "sidebar-inner",
1704
+ children: n
1705
+ }
1706
+ )
1707
+ }
1708
+ )
1709
+ ]
1710
+ }
1711
+ );
1712
+ }
1713
+ function Rr({ className: e, onClick: t, children: a, ...r }) {
1714
+ const { toggleSidebar: n, open: s } = re();
1715
+ return /* @__PURE__ */ o.jsxs(
1716
+ Mt,
1717
+ {
1718
+ className: u("size-7", e),
1719
+ "data-sidebar": "trigger",
1720
+ "data-slot": "sidebar-trigger",
1721
+ onClick: (i) => {
1722
+ t?.(i), n();
1723
+ },
1724
+ size: "icon",
1725
+ variant: "ghost",
1726
+ ...r,
1727
+ children: [
1728
+ s ? /* @__PURE__ */ o.jsx(co, {}) : /* @__PURE__ */ o.jsx(io, {}),
1729
+ /* @__PURE__ */ o.jsx("span", { className: "sr-only", children: "Toggle Sidebar" }),
1730
+ s ? a : null
1731
+ ]
1732
+ }
1733
+ );
1734
+ }
1735
+ function Ar({ className: e, ...t }) {
1736
+ const { toggleSidebar: a } = re();
1737
+ return /* @__PURE__ */ o.jsx(
1738
+ "button",
1739
+ {
1740
+ "aria-label": "Toggle Sidebar",
1741
+ className: u(
1742
+ "-translate-x-1/2 group-data-[side=left]:-right-4 absolute inset-y-0 z-20 hidden w-4 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=right]:left-0 sm:flex",
1743
+ "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize",
1744
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
1745
+ "group-data-[collapsible=offcanvas]:translate-x-0 hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:after:left-full",
1746
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
1747
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
1748
+ e
1749
+ ),
1750
+ "data-sidebar": "rail",
1751
+ "data-slot": "sidebar-rail",
1752
+ onClick: a,
1753
+ tabIndex: -1,
1754
+ title: "Toggle Sidebar",
1755
+ ...t
1756
+ }
1757
+ );
1758
+ }
1759
+ function Er({ className: e, ...t }) {
1760
+ return /* @__PURE__ */ o.jsx(
1761
+ "main",
1762
+ {
1763
+ className: u(
1764
+ "relative flex w-full flex-1 flex-col bg-background",
1765
+ "md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm",
1766
+ e
1767
+ ),
1768
+ "data-slot": "sidebar-inset",
1769
+ ...t
1770
+ }
1771
+ );
1772
+ }
1773
+ function kr({ className: e, ...t }) {
1774
+ return /* @__PURE__ */ o.jsx(
1775
+ "div",
1776
+ {
1777
+ className: u("flex flex-col gap-2 p-2", e),
1778
+ "data-sidebar": "header",
1779
+ "data-slot": "sidebar-header",
1780
+ ...t
1781
+ }
1782
+ );
1783
+ }
1784
+ function Dr({ className: e, ...t }) {
1785
+ return /* @__PURE__ */ o.jsx(
1786
+ "div",
1787
+ {
1788
+ className: u("flex flex-col gap-2 p-2", e),
1789
+ "data-sidebar": "footer",
1790
+ "data-slot": "sidebar-footer",
1791
+ ...t
1792
+ }
1793
+ );
1794
+ }
1795
+ function kt({ className: e, ...t }) {
1796
+ return /* @__PURE__ */ o.jsx(
1797
+ Va,
1798
+ {
1799
+ className: u("mx-2 w-auto bg-sidebar-border", e),
1800
+ "data-sidebar": "separator",
1801
+ "data-slot": "sidebar-separator",
1802
+ ...t
1803
+ }
1804
+ );
1805
+ }
1806
+ function Ir({ className: e, ...t }) {
1807
+ return /* @__PURE__ */ o.jsx(
1808
+ "div",
1809
+ {
1810
+ className: u(
1811
+ "flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",
1812
+ e
1813
+ ),
1814
+ "data-sidebar": "content",
1815
+ "data-slot": "sidebar-content",
1816
+ ...t
1817
+ }
1818
+ );
1819
+ }
1820
+ function Pr({ className: e, ...t }) {
1821
+ return /* @__PURE__ */ o.jsx(
1822
+ "div",
1823
+ {
1824
+ className: u("relative flex w-full min-w-0 flex-col p-2", e),
1825
+ "data-sidebar": "group",
1826
+ "data-slot": "sidebar-group",
1827
+ ...t
1828
+ }
1829
+ );
1830
+ }
1831
+ function Sr({ className: e, ...t }) {
1832
+ return /* @__PURE__ */ o.jsx(
1833
+ "div",
1834
+ {
1835
+ className: u("w-full text-sm", e),
1836
+ "data-sidebar": "group-content",
1837
+ "data-slot": "sidebar-group-content",
1838
+ ...t
1839
+ }
1840
+ );
1841
+ }
1842
+ function de({ className: e, ...t }) {
1843
+ return /* @__PURE__ */ o.jsx(
1844
+ "ul",
1845
+ {
1846
+ className: u("flex w-full min-w-0 flex-col gap-1", e),
1847
+ "data-sidebar": "menu",
1848
+ "data-slot": "sidebar-menu",
1849
+ ...t
1850
+ }
1851
+ );
1852
+ }
1853
+ function q({ className: e, ...t }) {
1854
+ return /* @__PURE__ */ o.jsx(
1855
+ "li",
1856
+ {
1857
+ className: u("group/menu-item relative", e),
1858
+ "data-sidebar": "menu-item",
1859
+ "data-slot": "sidebar-menu-item",
1860
+ ...t
1861
+ }
1862
+ );
1863
+ }
1864
+ const Mr = X(
1865
+ "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
1866
+ {
1867
+ variants: {
1868
+ variant: {
1869
+ default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
1870
+ outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
1871
+ },
1872
+ size: {
1873
+ default: "h-8 text-sm",
1874
+ sm: "h-7 text-xs",
1875
+ lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!"
1876
+ }
1877
+ },
1878
+ defaultVariants: {
1879
+ variant: "default",
1880
+ size: "default"
1881
+ }
1882
+ }
1883
+ );
1884
+ function K({
1885
+ asChild: e = !1,
1886
+ isActive: t = !1,
1887
+ variant: a = "default",
1888
+ size: r = "default",
1889
+ tooltip: n,
1890
+ className: s,
1891
+ ...i
1892
+ }) {
1893
+ const c = e ? ke : "button", { isMobile: d, state: f } = re(), p = /* @__PURE__ */ o.jsx(
1894
+ c,
1895
+ {
1896
+ className: u(Mr({ variant: a, size: r }), s),
1897
+ "data-active": t,
1898
+ "data-sidebar": "menu-button",
1899
+ "data-size": r,
1900
+ "data-slot": "sidebar-menu-button",
1901
+ ...i
1902
+ }
1903
+ );
1904
+ return n ? (typeof n == "string" && (n = {
1905
+ children: n
1906
+ }), /* @__PURE__ */ o.jsxs(_t, { children: [
1907
+ /* @__PURE__ */ o.jsx(Rt, { asChild: !0, children: p }),
1908
+ /* @__PURE__ */ o.jsx(At, { align: "center", hidden: f !== "collapsed" || d, side: "right", ...n })
1909
+ ] })) : p;
1910
+ }
1911
+ const Dt = ({ children: e }) => /* @__PURE__ */ o.jsx(ue, { size: "base", truncate: !0, children: e }), Or = ({ itemSet: e, activeSlug: t }) => /* @__PURE__ */ o.jsx(o.Fragment, { children: e.links.map((a) => /* @__PURE__ */ o.jsx(q, { className: "hover:cursor-pointer", onClick: a.onClick, children: /* @__PURE__ */ o.jsx(K, { asChild: !0, isActive: t === a.slug, children: /* @__PURE__ */ o.jsxs("span", { children: [
1912
+ /* @__PURE__ */ o.jsx(a.icon, {}),
1913
+ /* @__PURE__ */ o.jsx(Dt, { children: a.title }),
1914
+ a.external && /* @__PURE__ */ o.jsx(Se, { children: /* @__PURE__ */ o.jsx(po, { size: 12, strokeWidth: 1.5 }) })
1915
+ ] }) }) }, a.slug)) }), Ee = ({ itemSets: e, activeSlug: t }) => /* @__PURE__ */ o.jsx(de, { children: e.map((a, r) => /* @__PURE__ */ o.jsxs(Ot, { children: [
1916
+ /* @__PURE__ */ o.jsx(Or, { activeSlug: t, itemSet: a }),
1917
+ r < e.length - 1 && /* @__PURE__ */ o.jsx(kt, {})
1918
+ ] }, `item-set-${r}`)) }), $r = ({
1919
+ brandContent: e,
1920
+ brandOnClick: t,
1921
+ activeSlug: a,
1922
+ itemSets: r,
1923
+ bottomItemSets: n = [],
1924
+ theme: s,
1925
+ setTheme: i,
1926
+ ...c
1927
+ }) => /* @__PURE__ */ o.jsxs(_r, { collapsible: "icon", ...c, children: [
1928
+ /* @__PURE__ */ o.jsx(kr, { children: /* @__PURE__ */ o.jsx(de, { children: /* @__PURE__ */ o.jsx(q, { children: /* @__PURE__ */ o.jsx(
1929
+ K,
1930
+ {
1931
+ className: t ? "cursor-pointer" : "cursor-default",
1932
+ onClick: t,
1933
+ size: "lg",
1934
+ children: e
1935
+ }
1936
+ ) }) }) }),
1937
+ /* @__PURE__ */ o.jsx(Ir, { children: /* @__PURE__ */ o.jsx(Pr, { children: /* @__PURE__ */ o.jsx(Sr, { children: /* @__PURE__ */ o.jsx(Ee, { activeSlug: a, itemSets: r }) }) }) }),
1938
+ /* @__PURE__ */ o.jsx(Dr, { className: "mb-4", children: /* @__PURE__ */ o.jsxs(de, { children: [
1939
+ /* @__PURE__ */ o.jsx(q, { children: /* @__PURE__ */ o.jsx(K, { asChild: !0, children: /* @__PURE__ */ o.jsx(Rr, { className: "justify-start font-normal", children: /* @__PURE__ */ o.jsx(Dt, { children: "Collapse menu" }) }) }) }),
1940
+ /* @__PURE__ */ o.jsx(q, { children: /* @__PURE__ */ o.jsx(K, { asChild: !0, children: /* @__PURE__ */ o.jsx(lr, { buttonClassName: "p-0", setTheme: i, theme: s, variant: "stacked" }) }) }),
1941
+ n.length > 0 && /* @__PURE__ */ o.jsxs(o.Fragment, { children: [
1942
+ /* @__PURE__ */ o.jsx(kt, {}),
1943
+ /* @__PURE__ */ o.jsx(Ee, { activeSlug: a, itemSets: n })
1944
+ ] })
1945
+ ] }) }),
1946
+ /* @__PURE__ */ o.jsx(Ar, {})
1947
+ ] }), Jr = ({ children: e, ...t }) => /* @__PURE__ */ o.jsxs(Tr, { children: [
1948
+ /* @__PURE__ */ o.jsx($r, { ...t }),
1949
+ /* @__PURE__ */ o.jsx(Er, { className: "max-w-screen-xl", children: e })
1950
+ ] });
1951
+ export {
1952
+ Te as A,
1953
+ Ko as C,
1954
+ Yo as D,
1955
+ G as E,
1956
+ Xr as I,
1957
+ Dt as M,
1958
+ qo as O,
1959
+ Wo as P,
1960
+ Go as R,
1961
+ Rr as S,
1962
+ Ur as T,
1963
+ mo as X,
1964
+ $r as a,
1965
+ Jr as b,
1966
+ Xo as c,
1967
+ Uo as d,
1968
+ Va as e,
1969
+ L as f,
1970
+ Nt as g,
1971
+ S as h,
1972
+ Tt as i,
1973
+ H as j,
1974
+ or as k,
1975
+ sr as l,
1976
+ nr as m,
1977
+ rr as n,
1978
+ tr as o,
1979
+ ar as p,
1980
+ lr as q,
1981
+ j as r,
1982
+ Zr as s
1983
+ };