@cupcodev/ui 1.4.0 → 2.0.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.
package/dist/index.js CHANGED
@@ -141,41 +141,114 @@ var AvatarWithStatus = ({
141
141
  };
142
142
 
143
143
  // src/components/cupcode/BackgroundRainbow.tsx
144
- import { useEffect, useRef } from "react";
144
+ import { useEffect, useId, useMemo, useRef } from "react";
145
145
  import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
146
146
  var BackgroundRainbow = () => {
147
+ const rootRef = useRef(null);
147
148
  const interactiveRef = useRef(null);
148
- const rafRef = useRef(null);
149
- const cur = useRef({ x: 0, y: 0 });
150
- const target = useRef({ x: 0, y: 0 });
149
+ const currentRef = useRef({ x: 0, y: 0 });
150
+ const targetRef = useRef({ x: 0, y: 0 });
151
+ const filterId = useId().replace(/:/g, "");
152
+ const config = useMemo(() => {
153
+ const nav = typeof navigator !== "undefined" ? navigator : null;
154
+ const lowMemory = !!nav && typeof nav.deviceMemory === "number" && nav.deviceMemory <= 4;
155
+ const lowCpu = !!nav && typeof nav.hardwareConcurrency === "number" && nav.hardwareConcurrency <= 4;
156
+ const lowPowerDevice = lowMemory || lowCpu;
157
+ return {
158
+ blur: lowPowerDevice ? 20 : 30,
159
+ interactiveOpacity: lowPowerDevice ? 0.54 : 0.7,
160
+ useGoo: !lowPowerDevice,
161
+ snapDistance: lowPowerDevice ? 2.5 : 1.5,
162
+ easeFactor: lowPowerDevice ? 7.5 : 10,
163
+ renderThirdBubble: !lowPowerDevice,
164
+ blendMode: lowPowerDevice ? "screen" : "hard-light"
165
+ };
166
+ }, []);
151
167
  useEffect(() => {
152
- const easeFactor = 10;
153
- const move = () => {
154
- cur.current.x += (target.current.x - cur.current.x) / easeFactor;
155
- cur.current.y += (target.current.y - cur.current.y) / easeFactor;
156
- if (interactiveRef.current) {
157
- interactiveRef.current.style.transform = `translate(${Math.round(
158
- cur.current.x
159
- )}px, ${Math.round(cur.current.y)}px)`;
160
- }
161
- rafRef.current = requestAnimationFrame(move);
168
+ const interactive = interactiveRef.current;
169
+ const root = rootRef.current;
170
+ if (!interactive || !root) return;
171
+ const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)");
172
+ let raf = 0;
173
+ let running = false;
174
+ const stop = () => {
175
+ running = false;
176
+ if (raf) {
177
+ cancelAnimationFrame(raf);
178
+ raf = 0;
179
+ }
180
+ };
181
+ const updatePlayState = () => {
182
+ const enabled = !prefersReducedMotion.matches && !document.hidden && !document.documentElement.classList.contains("dark");
183
+ root.style.setProperty("--cc-rainbow-play", enabled ? "running" : "paused");
184
+ if (!enabled) stop();
185
+ return enabled;
186
+ };
187
+ const applyTransform = () => {
188
+ const x = Math.round(currentRef.current.x);
189
+ const y = Math.round(currentRef.current.y);
190
+ interactive.style.transform = `translate3d(${x}px, ${y}px, 0)`;
191
+ };
192
+ const animate = () => {
193
+ if (!updatePlayState()) return;
194
+ currentRef.current.x += (targetRef.current.x - currentRef.current.x) / config.easeFactor;
195
+ currentRef.current.y += (targetRef.current.y - currentRef.current.y) / config.easeFactor;
196
+ applyTransform();
197
+ const dx = Math.abs(targetRef.current.x - currentRef.current.x);
198
+ const dy = Math.abs(targetRef.current.y - currentRef.current.y);
199
+ if (dx < config.snapDistance && dy < config.snapDistance) {
200
+ running = false;
201
+ raf = 0;
202
+ return;
203
+ }
204
+ raf = requestAnimationFrame(animate);
205
+ };
206
+ const start = () => {
207
+ if (running) return;
208
+ if (!updatePlayState()) return;
209
+ running = true;
210
+ raf = requestAnimationFrame(animate);
162
211
  };
163
212
  const onPointer = (e) => {
164
- target.current.x = e.clientX;
165
- target.current.y = e.clientY;
213
+ if (!updatePlayState()) return;
214
+ targetRef.current.x = e.clientX;
215
+ targetRef.current.y = e.clientY;
216
+ start();
217
+ };
218
+ const onStateChange = () => {
219
+ updatePlayState();
166
220
  };
221
+ const centerX = window.innerWidth / 2;
222
+ const centerY = window.innerHeight / 2;
223
+ currentRef.current.x = centerX;
224
+ currentRef.current.y = centerY;
225
+ targetRef.current.x = centerX;
226
+ targetRef.current.y = centerY;
227
+ applyTransform();
228
+ updatePlayState();
167
229
  window.addEventListener("pointermove", onPointer, { passive: true });
168
- const prefersReduced = window.matchMedia("(prefers-reduced-motion: reduce)");
169
- if (!prefersReduced.matches) {
170
- rafRef.current = requestAnimationFrame(move);
230
+ document.addEventListener("visibilitychange", onStateChange);
231
+ if (typeof prefersReducedMotion.addEventListener === "function") {
232
+ prefersReducedMotion.addEventListener("change", onStateChange);
233
+ } else {
234
+ prefersReducedMotion.addListener(onStateChange);
171
235
  }
236
+ const observer = new MutationObserver(onStateChange);
237
+ observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] });
172
238
  return () => {
173
239
  window.removeEventListener("pointermove", onPointer);
174
- if (rafRef.current) cancelAnimationFrame(rafRef.current);
240
+ document.removeEventListener("visibilitychange", onStateChange);
241
+ if (typeof prefersReducedMotion.removeEventListener === "function") {
242
+ prefersReducedMotion.removeEventListener("change", onStateChange);
243
+ } else {
244
+ prefersReducedMotion.removeListener(onStateChange);
245
+ }
246
+ observer.disconnect();
247
+ stop();
175
248
  };
176
- }, []);
177
- return /* @__PURE__ */ jsxs3("div", { className: "fixed inset-0 overflow-hidden pointer-events-none z-0 bg-white", children: [
178
- /* @__PURE__ */ jsx3("svg", { className: "hidden", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, focusable: "false", children: /* @__PURE__ */ jsx3("defs", { children: /* @__PURE__ */ jsxs3("filter", { id: "cc-goo", children: [
249
+ }, [config.easeFactor, config.snapDistance]);
250
+ return /* @__PURE__ */ jsxs3("div", { ref: rootRef, className: "fixed inset-0 z-0 overflow-hidden bg-white pointer-events-none dark:hidden", children: [
251
+ /* @__PURE__ */ jsx3("svg", { className: "hidden", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": true, focusable: "false", children: /* @__PURE__ */ jsx3("defs", { children: /* @__PURE__ */ jsxs3("filter", { id: filterId, children: [
179
252
  /* @__PURE__ */ jsx3("feGaussianBlur", { in: "SourceGraphic", stdDeviation: "10", result: "blur" }),
180
253
  /* @__PURE__ */ jsx3(
181
254
  "feColorMatrix",
@@ -188,79 +261,104 @@ var BackgroundRainbow = () => {
188
261
  ),
189
262
  /* @__PURE__ */ jsx3("feBlend", { in: "SourceGraphic", in2: "goo" })
190
263
  ] }) }) }),
191
- /* @__PURE__ */ jsxs3("div", { className: "absolute inset-0", style: { filter: "url(#cc-goo) blur(36px)" }, children: [
192
- /* @__PURE__ */ jsx3("div", { className: "cc-bubble cc-a cc-g1" }),
193
- /* @__PURE__ */ jsx3("div", { className: "cc-bubble cc-b cc-g2" }),
194
- /* @__PURE__ */ jsx3("div", { className: "cc-bubble cc-a cc-g3" }),
195
- /* @__PURE__ */ jsx3("div", { ref: interactiveRef, className: "cc-bubble cc-b cc-interactive" })
196
- ] }),
264
+ /* @__PURE__ */ jsxs3(
265
+ "div",
266
+ {
267
+ className: "absolute inset-0 cc-rainbow-layer",
268
+ style: {
269
+ filter: config.useGoo ? `url(#${filterId}) blur(${config.blur}px)` : `blur(${config.blur}px)`
270
+ },
271
+ children: [
272
+ /* @__PURE__ */ jsx3("div", { className: "cc-rainbow-bubble cc-rainbow-a cc-rainbow-g1" }),
273
+ /* @__PURE__ */ jsx3("div", { className: "cc-rainbow-bubble cc-rainbow-b cc-rainbow-g2" }),
274
+ config.renderThirdBubble ? /* @__PURE__ */ jsx3("div", { className: "cc-rainbow-bubble cc-rainbow-a cc-rainbow-g3" }) : null,
275
+ /* @__PURE__ */ jsx3("div", { ref: interactiveRef, className: "cc-rainbow-bubble cc-rainbow-b cc-rainbow-interactive" })
276
+ ]
277
+ }
278
+ ),
197
279
  /* @__PURE__ */ jsx3("style", { children: `
198
- .cc-bubble {
280
+ .cc-rainbow-layer {
281
+ contain: paint;
282
+ }
283
+
284
+ .cc-rainbow-bubble {
199
285
  position: absolute;
200
- mix-blend-mode: hard-light;
286
+ mix-blend-mode: ${config.blendMode};
201
287
  pointer-events: none;
202
288
  will-change: transform;
289
+ transform: translate3d(0, 0, 0);
203
290
  }
204
291
 
205
- /* usa as cores globais de hover/purple com ~0.4 de opacidade */
206
- .cc-a {
292
+ .cc-rainbow-a {
207
293
  background: radial-gradient(circle at center,
208
294
  color-mix(in srgb, var(--color-one) 40%, transparent) 0%,
209
295
  transparent 50%) no-repeat;
210
296
  }
211
- .cc-b {
297
+
298
+ .cc-rainbow-b {
212
299
  background: radial-gradient(circle at center,
213
300
  color-mix(in srgb, var(--color-two) 40%, transparent) 0%,
214
301
  transparent 50%) no-repeat;
215
302
  }
216
303
 
217
- .cc-g1, .cc-g2, .cc-g3 {
304
+ .cc-rainbow-g1, .cc-rainbow-g2, .cc-rainbow-g3 {
218
305
  width: 80vmin;
219
306
  height: 80vmin;
220
307
  top: calc(50% - 40vmin);
221
308
  left: calc(50% - 40vmin);
222
309
  }
223
310
 
224
- .cc-g1 {
311
+ .cc-rainbow-g1 {
225
312
  transform-origin: center center;
226
- animation: cc-bounceV 28s var(--ease-smooth, ease-in-out) infinite;
313
+ animation: cc-rainbow-bounce-v 28s var(--ease-smooth, ease-in-out) infinite;
314
+ animation-play-state: var(--cc-rainbow-play, running);
227
315
  opacity: 1;
228
316
  }
229
- .cc-g2 {
317
+
318
+ .cc-rainbow-g2 {
230
319
  transform-origin: calc(50% - 360px);
231
- animation: cc-circle 22s linear infinite reverse;
320
+ animation: cc-rainbow-circle 22s linear infinite reverse;
321
+ animation-play-state: var(--cc-rainbow-play, running);
232
322
  opacity: 1;
233
323
  }
234
- .cc-g3 {
324
+
325
+ .cc-rainbow-g3 {
235
326
  top: calc(50% - 40vmin + 160px);
236
327
  left: calc(50% - 40vmin - 420px);
237
328
  transform-origin: calc(50% + 360px);
238
- animation: cc-circle 38s linear infinite;
329
+ animation: cc-rainbow-circle 38s linear infinite;
330
+ animation-play-state: var(--cc-rainbow-play, running);
239
331
  opacity: 0.9;
240
332
  }
241
333
 
242
- .cc-interactive {
334
+ .cc-rainbow-interactive {
243
335
  width: 100%;
244
336
  height: 100%;
245
337
  top: -50%;
246
338
  left: -50%;
247
- opacity: 0.7;
248
- transform: translate(0px, 0px); /* evita warning de transform null */
339
+ opacity: ${config.interactiveOpacity};
340
+ transform: translate3d(0px, 0px, 0);
249
341
  }
250
342
 
251
- @keyframes cc-circle {
343
+ @keyframes cc-rainbow-circle {
252
344
  0% { transform: rotate(0deg); }
253
345
  50% { transform: rotate(180deg); }
254
346
  100% { transform: rotate(360deg); }
255
347
  }
256
- @keyframes cc-bounceV {
348
+
349
+ @keyframes cc-rainbow-bounce-v {
257
350
  0% { transform: translateY(-50%); }
258
351
  50% { transform: translateY(50%); }
259
352
  100% { transform: translateY(-50%); }
260
353
  }
261
354
 
262
355
  @media (prefers-reduced-motion: reduce) {
263
- .cc-g1, .cc-g2, .cc-g3 { animation: none !important; }
356
+ .cc-rainbow-g1, .cc-rainbow-g2, .cc-rainbow-g3 {
357
+ animation: none !important;
358
+ }
359
+ .cc-rainbow-interactive {
360
+ opacity: 0.35;
361
+ }
264
362
  }
265
363
  ` })
266
364
  ] });
@@ -269,280 +367,439 @@ var BackgroundRainbow = () => {
269
367
  // src/components/cupcode/BackgroundStars.tsx
270
368
  import { useEffect as useEffect2, useRef as useRef2 } from "react";
271
369
  import { Fragment, jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
370
+ var TWO_PI = Math.PI * 2;
272
371
  var rand = (a, b) => a + Math.random() * (b - a);
273
372
  var choice = (arr) => arr[Math.random() * arr.length | 0];
274
- function hexToRgb(hex) {
275
- const c = hex.replace("#", "");
276
- const n = parseInt(c.length === 3 ? c.split("").map((x) => x + x).join("") : c, 16);
277
- return { r: n >> 16 & 255, g: n >> 8 & 255, b: n & 255 };
373
+ function createCanvas(width, height) {
374
+ const canvas = document.createElement("canvas");
375
+ canvas.width = Math.max(1, Math.floor(width));
376
+ canvas.height = Math.max(1, Math.floor(height));
377
+ return canvas;
378
+ }
379
+ function createStarBaseSprite(size) {
380
+ const canvas = createCanvas(size, size);
381
+ const ctx = canvas.getContext("2d");
382
+ if (!ctx) return canvas;
383
+ const half = size / 2;
384
+ const gradient = ctx.createRadialGradient(half, half, 0, half, half, half);
385
+ gradient.addColorStop(0, "rgba(255,255,255,0.95)");
386
+ gradient.addColorStop(0.24, "rgba(255,255,255,0.72)");
387
+ gradient.addColorStop(0.54, "rgba(255,255,255,0.28)");
388
+ gradient.addColorStop(1, "rgba(0,0,0,0)");
389
+ ctx.fillStyle = gradient;
390
+ ctx.beginPath();
391
+ ctx.arc(half, half, half, 0, TWO_PI);
392
+ ctx.fill();
393
+ return canvas;
394
+ }
395
+ function tintSprite(base, color) {
396
+ const canvas = createCanvas(base.width, base.height);
397
+ const ctx = canvas.getContext("2d");
398
+ if (!ctx) return canvas;
399
+ ctx.drawImage(base, 0, 0);
400
+ ctx.globalCompositeOperation = "source-atop";
401
+ ctx.fillStyle = color;
402
+ ctx.fillRect(0, 0, base.width, base.height);
403
+ ctx.globalCompositeOperation = "source-over";
404
+ return canvas;
405
+ }
406
+ function createHaloSprite(size, color) {
407
+ const canvas = createCanvas(size, size);
408
+ const ctx = canvas.getContext("2d");
409
+ if (!ctx) return canvas;
410
+ const half = size / 2;
411
+ const gradient = ctx.createRadialGradient(half, half, 0, half, half, half);
412
+ gradient.addColorStop(0, color);
413
+ gradient.addColorStop(1, "rgba(0,0,0,0)");
414
+ ctx.fillStyle = gradient;
415
+ ctx.beginPath();
416
+ ctx.arc(half, half, half, 0, TWO_PI);
417
+ ctx.fill();
418
+ return canvas;
419
+ }
420
+ function createFlareSprite(size) {
421
+ const canvas = createCanvas(size * 4, size);
422
+ const ctx = canvas.getContext("2d");
423
+ if (!ctx) return canvas;
424
+ const centerY = size / 2;
425
+ const gradient = ctx.createLinearGradient(0, centerY, canvas.width, centerY);
426
+ gradient.addColorStop(0, "rgba(0,0,0,0)");
427
+ gradient.addColorStop(0.44, "rgba(41,5,40,0.92)");
428
+ gradient.addColorStop(0.56, "rgba(41,5,40,0.92)");
429
+ gradient.addColorStop(1, "rgba(0,0,0,0)");
430
+ ctx.fillStyle = gradient;
431
+ ctx.fillRect(0, (size - 4) / 2, canvas.width, 4);
432
+ return canvas;
433
+ }
434
+ function createCloudSprite(size, color) {
435
+ const canvas = createCanvas(size, size);
436
+ const ctx = canvas.getContext("2d");
437
+ if (!ctx) return canvas;
438
+ const center = size / 2;
439
+ const blobs = [
440
+ { x: center * 0.76, y: center * 0.86, r: center * 0.68 },
441
+ { x: center * 1.28, y: center * 0.94, r: center * 0.72 },
442
+ { x: center * 1.02, y: center * 1.28, r: center * 0.78 }
443
+ ];
444
+ for (const blob of blobs) {
445
+ const g = ctx.createRadialGradient(blob.x, blob.y, 0, blob.x, blob.y, blob.r);
446
+ g.addColorStop(0, color);
447
+ g.addColorStop(1, "rgba(0,0,0,0)");
448
+ ctx.fillStyle = g;
449
+ ctx.beginPath();
450
+ ctx.arc(blob.x, blob.y, blob.r, 0, TWO_PI);
451
+ ctx.fill();
452
+ }
453
+ return canvas;
454
+ }
455
+ function createCometHeadSprite(size) {
456
+ const canvas = createCanvas(size, size);
457
+ const ctx = canvas.getContext("2d");
458
+ if (!ctx) return canvas;
459
+ const half = size / 2;
460
+ const glowA = ctx.createRadialGradient(half, half, 0, half, half, half);
461
+ glowA.addColorStop(0, "rgba(255,255,255,0.96)");
462
+ glowA.addColorStop(0.3, "rgba(151,90,182,0.78)");
463
+ glowA.addColorStop(1, "rgba(0,0,0,0)");
464
+ ctx.fillStyle = glowA;
465
+ ctx.beginPath();
466
+ ctx.arc(half, half, half, 0, TWO_PI);
467
+ ctx.fill();
468
+ const glowB = ctx.createRadialGradient(half, half, 0, half, half, half * 0.56);
469
+ glowB.addColorStop(0, "rgba(255,255,255,0.95)");
470
+ glowB.addColorStop(1, "rgba(0,0,0,0)");
471
+ ctx.fillStyle = glowB;
472
+ ctx.beginPath();
473
+ ctx.arc(half, half, half * 0.56, 0, TWO_PI);
474
+ ctx.fill();
475
+ return canvas;
476
+ }
477
+ function createCometTailSprite(width, height) {
478
+ const canvas = createCanvas(width, height);
479
+ const ctx = canvas.getContext("2d");
480
+ if (!ctx) return canvas;
481
+ const center = height / 2;
482
+ const gradient = ctx.createLinearGradient(0, center, width, center);
483
+ gradient.addColorStop(0, "rgba(0,0,0,0)");
484
+ gradient.addColorStop(0.45, "rgba(124,91,187,0.55)");
485
+ gradient.addColorStop(0.8, "rgba(151,90,182,0.8)");
486
+ gradient.addColorStop(1, "rgba(255,255,255,0.96)");
487
+ ctx.fillStyle = gradient;
488
+ ctx.fillRect(0, center - 1, width, 2);
489
+ return canvas;
490
+ }
491
+ function drawHaloSprite(ctx, sprite, radius) {
492
+ if (radius <= 0.5) return;
493
+ const diameter = radius * 2;
494
+ ctx.drawImage(sprite, -radius, -radius, diameter, diameter);
278
495
  }
279
496
  function BackgroundStars() {
280
497
  const nebulaRef = useRef2(null);
281
498
  const starsRef = useRef2(null);
282
499
  useEffect2(() => {
283
- const w = window.innerWidth;
284
- const h = window.innerHeight;
285
500
  const nebulaCanvas = nebulaRef.current;
286
- const nebulaCtx = nebulaCanvas.getContext("2d", { alpha: true });
287
- nebulaCanvas.width = w;
288
- nebulaCanvas.height = h;
289
501
  const starsCanvas = starsRef.current;
290
- const starsCtx = starsCanvas.getContext("2d", { alpha: true });
291
- starsCanvas.width = w;
292
- starsCanvas.height = h;
293
- const palette = [
294
- "#ffffff",
295
- "#d7c8ff",
296
- "#7c5bbb",
297
- // roxo Cupcode
298
- "#b146ea",
299
- "#975ab6",
300
- // hover tone Cupcode
301
- "#ff8ad1"
502
+ if (!nebulaCanvas || !starsCanvas) return;
503
+ const nebulaCtx = nebulaCanvas.getContext("2d", { alpha: true, desynchronized: true });
504
+ const starsCtx = starsCanvas.getContext("2d", { alpha: true, desynchronized: true });
505
+ if (!nebulaCtx || !starsCtx) return;
506
+ const width = window.innerWidth;
507
+ const height = window.innerHeight;
508
+ const nav = navigator;
509
+ const reducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
510
+ const lowMemory = typeof nav.deviceMemory === "number" && nav.deviceMemory <= 4;
511
+ const lowCpu = typeof nav.hardwareConcurrency === "number" && nav.hardwareConcurrency <= 4;
512
+ const lowPowerDevice = lowMemory || lowCpu;
513
+ const nebulaScale = lowPowerDevice ? 0.48 : 0.62;
514
+ const nebulaWidth = Math.max(1, Math.floor(width * nebulaScale));
515
+ const nebulaHeight = Math.max(1, Math.floor(height * nebulaScale));
516
+ nebulaCanvas.width = nebulaWidth;
517
+ nebulaCanvas.height = nebulaHeight;
518
+ nebulaCanvas.style.width = `${width}px`;
519
+ nebulaCanvas.style.height = `${height}px`;
520
+ starsCanvas.width = width;
521
+ starsCanvas.height = height;
522
+ starsCanvas.style.width = `${width}px`;
523
+ starsCanvas.style.height = `${height}px`;
524
+ const palette = ["#ffffff", "#d7c8ff", "#7c5bbb", "#b146ea", "#975ab6", "#ff8ad1"];
525
+ const starSpriteSize = 96;
526
+ const halfStarSprite = starSpriteSize / 2;
527
+ const starBaseSprite = createStarBaseSprite(starSpriteSize);
528
+ const starSprites = /* @__PURE__ */ new Map();
529
+ for (const color of palette) {
530
+ starSprites.set(color, tintSprite(starBaseSprite, color));
531
+ }
532
+ const flareSprite = createFlareSprite(starSpriteSize);
533
+ const haloPink = createHaloSprite(160, "rgba(251,88,235,0.68)");
534
+ const haloPurple = createHaloSprite(160, "rgba(151,90,182,0.6)");
535
+ const haloIndigo = createHaloSprite(160, "rgba(124,91,187,0.54)");
536
+ const haloGlow = createHaloSprite(140, "rgba(151,90,182,0.32)");
537
+ const cloudColors = [
538
+ "rgba(65,105,225,0.18)",
539
+ "rgba(138,43,226,0.17)",
540
+ "rgba(255,20,147,0.16)",
541
+ "rgba(75,0,130,0.18)",
542
+ "rgba(147,112,219,0.17)",
543
+ "rgba(218,112,214,0.16)"
302
544
  ];
303
- const starSprite = document.createElement("canvas");
304
- const SPR = 128;
305
- starSprite.width = SPR;
306
- starSprite.height = SPR;
307
- const sprCtx = starSprite.getContext("2d");
308
- const grad = sprCtx.createRadialGradient(SPR / 2, SPR / 2, 0, SPR / 2, SPR / 2, SPR / 2);
309
- grad.addColorStop(0, "rgba(255,255,255,0.5)");
310
- grad.addColorStop(0.28, "rgba(255,255,255,0.4)");
311
- grad.addColorStop(0.36, "rgba(255,2,230,0.35)");
312
- grad.addColorStop(0.78, "rgba(255,255,255,0.0)");
313
- sprCtx.fillStyle = grad;
314
- sprCtx.beginPath();
315
- sprCtx.arc(SPR / 2, SPR / 2, SPR / 2, 0, Math.PI * 2);
316
- sprCtx.fill();
317
- const flareSprite = document.createElement("canvas");
318
- flareSprite.width = SPR * 4;
319
- flareSprite.height = SPR;
320
- const flareCtx = flareSprite.getContext("2d");
321
- const g2 = flareCtx.createLinearGradient(0, SPR / 2, flareSprite.width, SPR / 2);
322
- g2.addColorStop(0, "rgba(0,0,0,0)");
323
- g2.addColorStop(0.45, "rgba(41,5,40,0.98)");
324
- g2.addColorStop(0.55, "rgba(41,5,40,0.98)");
325
- g2.addColorStop(1, "rgba(0,0,0,0)");
326
- flareCtx.fillStyle = g2;
327
- flareCtx.filter = "blur(0.45px)";
328
- flareCtx.fillRect(0, (SPR - 4) / 2, flareSprite.width, 4);
329
- const off = document.createElement("canvas");
330
- off.width = w;
331
- off.height = h;
332
- const offCtx = off.getContext("2d");
333
- const bg = offCtx.createRadialGradient(w / 2, h / 2, 0, w / 2, h / 2, Math.max(w, h) / 2);
334
- bg.addColorStop(0, "#0c0d1d");
335
- bg.addColorStop(1, "#000000");
336
- offCtx.fillStyle = bg;
337
- offCtx.fillRect(0, 0, w, h);
338
- const colors = [
339
- "rgba(65,105,225,0.10)",
340
- "rgba(138,43,226,0.10)",
341
- "rgba(255,20,147,0.10)",
342
- "rgba(75,0,130,0.10)",
343
- "rgba(147,112,219,0.10)",
344
- "rgba(218,112,214,0.10)"
345
- ];
346
- function genCloud() {
347
- const r = rand(150, 450);
348
- const n = 12;
349
- const step = Math.PI * 2 / n;
350
- const pts = [];
351
- for (let i = 0; i <= n; i++) {
352
- const a = i * step;
353
- const dist = rand(0.5, 1);
354
- pts.push({ x: Math.cos(a) * r * dist, y: Math.sin(a) * r * dist });
355
- }
545
+ const cloudSprites = /* @__PURE__ */ new Map();
546
+ for (const color of cloudColors) {
547
+ cloudSprites.set(color, createCloudSprite(256, color));
548
+ }
549
+ const nebulaBackdrop = createCanvas(nebulaWidth, nebulaHeight);
550
+ const nebulaBackdropCtx = nebulaBackdrop.getContext("2d");
551
+ if (nebulaBackdropCtx) {
552
+ const bg = nebulaBackdropCtx.createRadialGradient(
553
+ nebulaWidth / 2,
554
+ nebulaHeight / 2,
555
+ 0,
556
+ nebulaWidth / 2,
557
+ nebulaHeight / 2,
558
+ Math.max(nebulaWidth, nebulaHeight) / 1.45
559
+ );
560
+ bg.addColorStop(0, "#0c0d1d");
561
+ bg.addColorStop(1, "#000000");
562
+ nebulaBackdropCtx.fillStyle = bg;
563
+ nebulaBackdropCtx.fillRect(0, 0, nebulaWidth, nebulaHeight);
564
+ }
565
+ const cloudCount = lowPowerDevice ? 5 : 8;
566
+ const clouds = Array.from({ length: cloudCount }).map(() => {
567
+ const color = choice(cloudColors);
356
568
  return {
357
- x: Math.random() * w,
358
- y: Math.random() * h,
359
- r,
360
- color: choice(colors),
361
- pts,
362
- angle: 0,
363
- speed: (Math.random() - 0.5) * 1e-3
569
+ x: Math.random() * nebulaWidth,
570
+ y: Math.random() * nebulaHeight,
571
+ size: rand(95, 230),
572
+ alpha: rand(0.65, 1),
573
+ sprite: cloudSprites.get(color),
574
+ angle: Math.random() * TWO_PI,
575
+ speed: rand(-5e-4, 5e-4),
576
+ pulseAmp: rand(0.03, 0.1),
577
+ pulsePhase: Math.random() * TWO_PI
364
578
  };
365
- }
366
- const clouds = Array.from({ length: 8 }, genCloud);
367
- function drawNebula(t) {
368
- nebulaCtx.clearRect(0, 0, w, h);
369
- nebulaCtx.drawImage(off, 0, 0);
370
- nebulaCtx.globalCompositeOperation = "screen";
371
- for (const c of clouds) {
372
- c.angle += c.speed;
373
- nebulaCtx.save();
374
- nebulaCtx.translate(c.x, c.y);
375
- nebulaCtx.rotate(c.angle);
376
- nebulaCtx.beginPath();
377
- nebulaCtx.moveTo(c.pts[0].x, c.pts[0].y);
378
- for (let i = 1; i < c.pts.length; i++) nebulaCtx.lineTo(c.pts[i].x, c.pts[i].y);
379
- nebulaCtx.closePath();
380
- const g = nebulaCtx.createRadialGradient(0, 0, 0, 0, 0, c.r);
381
- g.addColorStop(0, c.color);
382
- g.addColorStop(1, "rgba(0,0,0,0)");
383
- nebulaCtx.fillStyle = g;
384
- nebulaCtx.fill();
385
- nebulaCtx.restore();
386
- }
387
- nebulaCtx.globalCompositeOperation = "source-over";
388
- }
389
- const QUANTITY = 260;
390
- const stars = Array.from({ length: QUANTITY }).map(() => {
391
- const r = Math.random();
579
+ });
580
+ const areaFactor = Math.min(1.25, width * height / (1920 * 1080));
581
+ const baseStars = lowPowerDevice ? 105 : 170;
582
+ const quantity = Math.max(80, Math.min(220, Math.round(baseStars * areaFactor)));
583
+ const stars = Array.from({ length: quantity }).map(() => {
584
+ const bucket = Math.random();
392
585
  let size;
393
586
  let isHighlight = false;
394
- if (r < 0.25) size = rand(0.35, 0.95) * (w * 1e-3);
395
- else if (r < 0.97) size = rand(0.6, 1.8) * (w * 1e-3);
587
+ if (bucket < 0.25) size = rand(0.35, 0.95) * (width * 1e-3);
588
+ else if (bucket < 0.97) size = rand(0.6, 1.8) * (width * 1e-3);
396
589
  else {
397
- size = rand(1.8, 3.6) * (w * 1e-3);
590
+ size = rand(1.8, 3.2) * (width * 1e-3);
398
591
  isHighlight = true;
399
592
  }
400
- const twMs = rand(5e3, 35e3);
593
+ const twinkleDur = rand(5500, 32e3);
594
+ const sparkDur = rand(650, 1100);
595
+ const color = choice(palette);
401
596
  return {
402
- x: Math.random() * w,
403
- y: Math.random() * h,
404
- size: Math.max(1, size),
405
- color: choice(palette),
597
+ x: Math.random() * width,
598
+ y: Math.random() * height,
599
+ size: Math.max(0.8, size),
406
600
  isHighlight,
407
- driftDx: rand(-6e-3, 6e-3) * w,
408
- // ~ -0.6..0.6vw aproximado em px
409
- driftDy: rand(-6e-3, 6e-3) * h,
410
- driftDur: rand(5e4, 9e4),
601
+ sprite: starSprites.get(color),
602
+ driftDx: rand(-6e-3, 6e-3) * width,
603
+ driftDy: rand(-6e-3, 6e-3) * height,
604
+ driftInvDur: 1 / rand(5e4, 9e4),
411
605
  scaleTo: rand(0.9, 1.12),
412
- baseOpacity: rand(0.85, 1),
413
- intensity: rand(1, 1.6),
414
- twinkleDur: twMs,
415
- twinkleDelay: rand(0, 25e3),
416
- sparkDur: rand(600, 1e3),
606
+ baseOpacity: rand(0.82, 1),
607
+ intensity: rand(0.95, 1.5),
608
+ twinkleFreq: TWO_PI / twinkleDur,
609
+ twinkleDelay: rand(0, 24e3),
610
+ sparkInvDur: 1 / sparkDur,
417
611
  sparkDelay: rand(0, 1200),
418
- phase: Math.random() * Math.PI * 2
612
+ phase: Math.random() * TWO_PI
419
613
  };
420
614
  });
421
- function tintMultiplier(hex) {
422
- const { r, g, b } = hexToRgb(hex);
423
- return [r / 255, g / 255, b / 255];
424
- }
615
+ const cometHeadSprite = createCometHeadSprite(90);
616
+ const cometTailSprite = createCometTailSprite(256, 8);
425
617
  const comets = [];
426
- function spawnComet() {
427
- const angle = Math.random() * Math.PI * 2;
428
- const len = rand(80, 160);
429
- const dur = rand(1400, 2200);
430
- const x = Math.random() * w;
431
- const y = Math.random() * h;
432
- comets.push({ x, y, angle, len, life: 0, t0: performance.now(), dur });
433
- }
434
- let lastComet = performance.now();
435
- let raf = 0;
436
- function draw(t) {
437
- drawNebula(t);
438
- starsCtx.clearRect(0, 0, w, h);
618
+ const spawnComet = (now) => {
619
+ comets.push({
620
+ x: Math.random() * width,
621
+ y: Math.random() * height,
622
+ angle: Math.random() * TWO_PI,
623
+ len: rand(80, 160),
624
+ t0: now,
625
+ dur: rand(1400, 2200)
626
+ });
627
+ };
628
+ const drawNebula = (now) => {
629
+ nebulaCtx.clearRect(0, 0, nebulaWidth, nebulaHeight);
630
+ nebulaCtx.drawImage(nebulaBackdrop, 0, 0);
631
+ nebulaCtx.globalCompositeOperation = "screen";
632
+ for (const cloud of clouds) {
633
+ cloud.angle += cloud.speed;
634
+ const pulse = 1 + cloud.pulseAmp * Math.sin(now * 2e-4 + cloud.pulsePhase);
635
+ const radius = cloud.size * pulse;
636
+ nebulaCtx.save();
637
+ nebulaCtx.translate(cloud.x, cloud.y);
638
+ nebulaCtx.rotate(cloud.angle);
639
+ nebulaCtx.globalAlpha = cloud.alpha;
640
+ nebulaCtx.drawImage(cloud.sprite, -radius, -radius, radius * 2, radius * 2);
641
+ nebulaCtx.restore();
642
+ }
643
+ nebulaCtx.globalCompositeOperation = "source-over";
644
+ nebulaCtx.globalAlpha = 1;
645
+ };
646
+ const drawComets = (now) => {
647
+ for (let i = comets.length - 1; i >= 0; i--) {
648
+ const comet = comets[i];
649
+ const p = (now - comet.t0) / comet.dur;
650
+ if (p >= 1) {
651
+ comets.splice(i, 1);
652
+ continue;
653
+ }
654
+ const ease = p < 0.5 ? p * 2 : 1 - (p - 0.5) * 2;
655
+ const dx = Math.cos(comet.angle) * comet.len * 6.8 * p;
656
+ const dy = Math.sin(comet.angle) * comet.len * 6.8 * p;
657
+ starsCtx.save();
658
+ starsCtx.translate(comet.x + dx, comet.y + dy);
659
+ starsCtx.rotate(comet.angle);
660
+ starsCtx.globalAlpha = 0.2 + 0.8 * ease;
661
+ starsCtx.drawImage(cometHeadSprite, -14, -14, 28, 28);
662
+ starsCtx.globalAlpha = 0.25 + 0.65 * ease;
663
+ starsCtx.drawImage(cometTailSprite, -comet.len, -3, comet.len, 6);
664
+ starsCtx.globalAlpha = 0.45 * ease;
665
+ starsCtx.drawImage(cometTailSprite, 0, -2, Math.min(24, comet.len * 0.24), 4);
666
+ starsCtx.restore();
667
+ }
668
+ };
669
+ const drawStars = (now) => {
670
+ starsCtx.clearRect(0, 0, width, height);
439
671
  starsCtx.globalCompositeOperation = "screen";
440
- for (const s of stars) {
441
- const driftP = Math.min(1, t % s.driftDur / s.driftDur);
442
- const sx = s.x + s.driftDx * driftP;
443
- const sy = s.y + s.driftDy * driftP;
444
- const sc = 1 + (s.scaleTo - 1) * driftP;
445
- const twLerp = (Math.sin((t + s.twinkleDelay) / s.twinkleDur * Math.PI * 2 + s.phase) + 1) * 0.5;
446
- const twPeak = 0.6 + 0.4 * twLerp;
447
- const sparkCycle = (t + s.sparkDelay) % s.sparkDur / s.sparkDur;
672
+ for (const star of stars) {
673
+ const drift = now * star.driftInvDur % 1;
674
+ const sx = star.x + star.driftDx * drift;
675
+ const sy = star.y + star.driftDy * drift;
676
+ const scaleByDrift = 1 + (star.scaleTo - 1) * drift;
677
+ const twinkle = (Math.sin((now + star.twinkleDelay) * star.twinkleFreq + star.phase) + 1) * 0.5;
678
+ const twinklePeak = 0.58 + 0.42 * twinkle;
679
+ const sparkCycle = (now + star.sparkDelay) * star.sparkInvDur % 1;
448
680
  const sparkBoost = sparkCycle < 0.15 ? sparkCycle / 0.15 : sparkCycle < 0.45 ? 1 - (sparkCycle - 0.15) / 0.3 : 0;
449
681
  const sparkScale = 1 + 0.28 * sparkBoost;
450
- const glow = 0.38 + 0.2 * (0.5 + 0.5 * Math.sin(t * 2e-3 + s.phase));
451
- const opacity = s.baseOpacity * twPeak;
452
- const k = s.intensity * (0.8 + 0.4 * sparkBoost);
453
- const size = s.size * sc * sparkScale;
454
- const [tr, tg, tb] = tintMultiplier(s.color);
682
+ const glow = 0.38 + 0.2 * (0.5 + 0.5 * Math.sin(now * 2e-3 + star.phase));
683
+ const opacity = star.baseOpacity * twinklePeak;
684
+ const intensity = star.intensity * (0.82 + 0.38 * sparkBoost);
685
+ const size = star.size * scaleByDrift * sparkScale;
455
686
  starsCtx.save();
456
687
  starsCtx.globalAlpha = opacity;
457
688
  starsCtx.translate(sx, sy);
458
- starsCtx.scale(size / SPR, size / SPR);
459
- starsCtx.drawImage(starSprite, -SPR / 2, -SPR / 2);
460
- starsCtx.globalCompositeOperation = "multiply";
461
- starsCtx.fillStyle = `rgba(${tr * 255 | 0}, ${tg * 255 | 0}, ${tb * 255 | 0}, ${0.75})`;
462
- starsCtx.fillRect(-SPR / 2, -SPR / 2, SPR, SPR);
463
- starsCtx.globalCompositeOperation = "screen";
464
- const halo1 = size * 4.2 * k;
465
- const halo2 = size * 7.2 * k;
466
- const halo3 = size * 10.8 * k;
467
- drawHalo(starsCtx, 0, 0, halo1, "rgba(251,88,235,0.65)");
468
- drawHalo(starsCtx, 0, 0, halo2, "rgba(151,90,182,0.58)");
469
- drawHalo(starsCtx, 0, 0, halo3, "rgba(124,91,187,0.52)");
470
- const gp = size * (1.8 + glow);
471
- drawHalo(starsCtx, 0, 0, gp, "rgba(151,90,182,0.28)");
472
- if (s.isHighlight) {
689
+ starsCtx.scale(size / starSpriteSize, size / starSpriteSize);
690
+ starsCtx.drawImage(star.sprite, -halfStarSprite, -halfStarSprite);
691
+ drawHaloSprite(starsCtx, haloPink, size * 4.1 * intensity);
692
+ drawHaloSprite(starsCtx, haloPurple, size * 6.9 * intensity);
693
+ drawHaloSprite(starsCtx, haloIndigo, size * 10.2 * intensity);
694
+ drawHaloSprite(starsCtx, haloGlow, size * (1.8 + glow));
695
+ if (star.isHighlight) {
473
696
  starsCtx.globalAlpha = opacity * (0.35 + 0.65 * sparkBoost);
474
- starsCtx.rotate(0);
475
- starsCtx.drawImage(flareSprite, -2 * SPR, -SPR / 2, 4 * SPR, SPR);
697
+ starsCtx.drawImage(flareSprite, -2 * starSpriteSize, -halfStarSprite, 4 * starSpriteSize, starSpriteSize);
476
698
  starsCtx.rotate(Math.PI / 2);
477
- starsCtx.drawImage(flareSprite, -2 * SPR, -SPR / 2, 4 * SPR, SPR);
699
+ starsCtx.drawImage(flareSprite, -2 * starSpriteSize, -halfStarSprite, 4 * starSpriteSize, starSpriteSize);
478
700
  }
479
701
  starsCtx.restore();
480
702
  }
481
- if (t - lastComet > rand(3200, 6800)) {
482
- spawnComet();
483
- lastComet = t;
484
- }
485
- drawComets(starsCtx, comets, t);
486
703
  starsCtx.globalCompositeOperation = "source-over";
487
- raf = requestAnimationFrame(draw);
488
- }
489
- function drawHalo(ctx, x, y, r, color) {
490
- if (r <= 0.5) return;
491
- const g = ctx.createRadialGradient(x, y, 0, x, y, r);
492
- g.addColorStop(0, color);
493
- g.addColorStop(1, "rgba(0,0,0,0)");
494
- ctx.fillStyle = g;
495
- ctx.beginPath();
496
- ctx.arc(x, y, r, 0, Math.PI * 2);
497
- ctx.fill();
498
- }
499
- function drawComets(ctx, list, t) {
500
- for (let i = list.length - 1; i >= 0; i--) {
501
- const c = list[i];
502
- const p = (t - c.t0) / c.dur;
503
- if (p >= 1) {
504
- list.splice(i, 1);
505
- continue;
506
- }
507
- const ease = p < 0.5 ? p * 2 : 1 - (p - 0.5) * 2;
508
- const dx = Math.cos(c.angle) * c.len * 7 * p;
509
- const dy = Math.sin(c.angle) * c.len * 7 * p;
510
- const x = c.x + dx;
511
- const y = c.y + dy;
512
- ctx.save();
513
- ctx.translate(x, y);
514
- ctx.rotate(c.angle);
515
- ctx.globalAlpha = 0.2 + 0.8 * ease;
516
- drawHalo(ctx, 0, 0, 0.85, "rgba(255,255,255,1)");
517
- drawHalo(ctx, 0, 0, 8, "rgba(151,90,182,0.75)");
518
- drawHalo(ctx, 0, 0, 14, "rgba(124,91,187,0.6)");
519
- const tailLen = c.len;
520
- const grd = ctx.createLinearGradient(0, 0, -tailLen, 0);
521
- grd.addColorStop(0, "rgba(255,255,255,0.95)");
522
- grd.addColorStop(0.4, "rgba(151,90,182,0.75)");
523
- grd.addColorStop(0.75, "rgba(124,91,187,0.55)");
524
- grd.addColorStop(1, "rgba(0,0,0,0)");
525
- ctx.fillStyle = grd;
526
- ctx.fillRect(-tailLen, -1, tailLen, 2);
527
- const shine = ctx.createLinearGradient(0, 0, 20, 0);
528
- shine.addColorStop(0, "rgba(0,0,0,0)");
529
- shine.addColorStop(0.5, "rgba(255,255,255,0.95)");
530
- shine.addColorStop(1, "rgba(0,0,0,0)");
531
- ctx.globalAlpha = 0.6 * ease;
532
- ctx.fillStyle = shine;
533
- ctx.fillRect(0, -1, 20, 2);
534
- ctx.restore();
535
- }
536
- }
537
- raf = requestAnimationFrame(draw);
538
- return () => cancelAnimationFrame(raf);
704
+ };
705
+ let raf = 0;
706
+ let running = false;
707
+ let disposed = false;
708
+ let lastFrame = 0;
709
+ let lastNebulaFrame = 0;
710
+ let nextCometAt = performance.now() + rand(3200, 6800);
711
+ const minFrameMs = lowPowerDevice ? 22 : 16;
712
+ const nebulaFrameMs = lowPowerDevice ? 85 : 55;
713
+ const isDarkMode = () => document.documentElement.classList.contains("dark");
714
+ const clearCanvases = () => {
715
+ starsCtx.clearRect(0, 0, width, height);
716
+ nebulaCtx.clearRect(0, 0, nebulaWidth, nebulaHeight);
717
+ };
718
+ const shouldRun = () => !reducedMotion && !document.hidden && isDarkMode();
719
+ const stop = () => {
720
+ running = false;
721
+ if (raf) {
722
+ cancelAnimationFrame(raf);
723
+ raf = 0;
724
+ }
725
+ };
726
+ const frame = (now) => {
727
+ if (!running || disposed) return;
728
+ if (now - lastFrame < minFrameMs) {
729
+ raf = requestAnimationFrame(frame);
730
+ return;
731
+ }
732
+ lastFrame = now;
733
+ if (now - lastNebulaFrame >= nebulaFrameMs) {
734
+ drawNebula(now);
735
+ lastNebulaFrame = now;
736
+ }
737
+ drawStars(now);
738
+ if (now >= nextCometAt) {
739
+ spawnComet(now);
740
+ nextCometAt = now + rand(3200, 6800);
741
+ }
742
+ drawComets(now);
743
+ raf = requestAnimationFrame(frame);
744
+ };
745
+ const start = () => {
746
+ if (running || disposed || !shouldRun()) return;
747
+ running = true;
748
+ lastFrame = 0;
749
+ lastNebulaFrame = 0;
750
+ raf = requestAnimationFrame(frame);
751
+ };
752
+ const onVisibilityOrTheme = () => {
753
+ if (shouldRun()) start();
754
+ else {
755
+ stop();
756
+ clearCanvases();
757
+ }
758
+ };
759
+ if (reducedMotion) {
760
+ if (isDarkMode()) {
761
+ drawNebula(0);
762
+ drawStars(0);
763
+ } else {
764
+ clearCanvases();
765
+ }
766
+ return () => {
767
+ stop();
768
+ };
769
+ }
770
+ const observer = new MutationObserver(onVisibilityOrTheme);
771
+ observer.observe(document.documentElement, { attributes: true, attributeFilter: ["class"] });
772
+ document.addEventListener("visibilitychange", onVisibilityOrTheme);
773
+ onVisibilityOrTheme();
774
+ return () => {
775
+ disposed = true;
776
+ stop();
777
+ observer.disconnect();
778
+ document.removeEventListener("visibilitychange", onVisibilityOrTheme);
779
+ };
539
780
  }, []);
540
781
  return /* @__PURE__ */ jsxs4(Fragment, { children: [
541
- /* @__PURE__ */ jsx4("canvas", { ref: nebulaRef, className: "fixed inset-0 z-0 pointer-events-none hidden dark:block" }),
542
- /* @__PURE__ */ jsx4("canvas", { ref: starsRef, className: "fixed inset-0 z-10 pointer-events-none hidden dark:block" }),
782
+ /* @__PURE__ */ jsx4(
783
+ "canvas",
784
+ {
785
+ ref: nebulaRef,
786
+ "aria-hidden": "true",
787
+ className: "cc-background-stars-canvas fixed inset-0 z-0 pointer-events-none hidden dark:block"
788
+ }
789
+ ),
790
+ /* @__PURE__ */ jsx4(
791
+ "canvas",
792
+ {
793
+ ref: starsRef,
794
+ "aria-hidden": "true",
795
+ className: "cc-background-stars-canvas fixed inset-0 z-10 pointer-events-none hidden dark:block"
796
+ }
797
+ ),
543
798
  /* @__PURE__ */ jsx4("style", { children: `
544
799
  @media (prefers-reduced-motion: reduce) {
545
- canvas { display: none !important; }
800
+ .cc-background-stars-canvas {
801
+ display: none !important;
802
+ }
546
803
  }
547
804
  ` })
548
805
  ] });
@@ -680,13 +937,13 @@ var TagGroup = ({
680
937
  import { useState, useRef as useRef3, useEffect as useEffect3 } from "react";
681
938
 
682
939
  // src/components/ui/tooltip.tsx
683
- import * as React4 from "react";
940
+ import * as React3 from "react";
684
941
  import * as TooltipPrimitive from "@radix-ui/react-tooltip";
685
942
  import { jsx as jsx8 } from "react/jsx-runtime";
686
943
  var TooltipProvider = TooltipPrimitive.Provider;
687
944
  var Tooltip = TooltipPrimitive.Root;
688
945
  var TooltipTrigger = TooltipPrimitive.Trigger;
689
- var TooltipContent = React4.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx8(
946
+ var TooltipContent = React3.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx8(
690
947
  TooltipPrimitive.Content,
691
948
  {
692
949
  ref,
@@ -804,13 +1061,21 @@ var Dock = ({ items, className }) => {
804
1061
  };
805
1062
 
806
1063
  // src/components/cupcode/DockWrapper.tsx
807
- import { useEffect as useEffect5, useRef as useRef4, useMemo } from "react";
1064
+ import { useEffect as useEffect5, useRef as useRef4, useMemo as useMemo2 } from "react";
808
1065
 
809
1066
  // src/hooks/useTelescupAsset.ts
810
1067
  import { useState as useState2, useEffect as useEffect4 } from "react";
811
1068
 
812
1069
  // src/lib/runtimeEnv.ts
813
1070
  var import_meta = {};
1071
+ var CUPCODE_APP_VERSION_ENV_KEY = "CUPCODE_APP_VERSION";
1072
+ var CUPCODE_APP_VERSION_ENV_KEYS = [
1073
+ CUPCODE_APP_VERSION_ENV_KEY,
1074
+ "VITE_APP_VERSION",
1075
+ "APP_VERSION",
1076
+ "NEXT_PUBLIC_APP_VERSION",
1077
+ "REACT_APP_VERSION"
1078
+ ];
814
1079
  var runtimeStore = {};
815
1080
  var normalizeValue = (value) => {
816
1081
  if (value === null || typeof value === "undefined") return void 0;
@@ -872,6 +1137,15 @@ var isRuntimeDev = () => {
872
1137
  const mode = ((_c = (_b7 = getRuntimeEnv("MODE")) != null ? _b7 : getRuntimeEnv("NODE_ENV")) != null ? _c : "").toLowerCase();
873
1138
  return mode === "development";
874
1139
  };
1140
+ var resolveCupcodeAppVersion = (explicitVersion) => {
1141
+ const normalizedExplicitVersion = normalizeValue(explicitVersion);
1142
+ if (normalizedExplicitVersion) return normalizedExplicitVersion;
1143
+ for (const key of CUPCODE_APP_VERSION_ENV_KEYS) {
1144
+ const value = getRuntimeEnv(key);
1145
+ if (value) return value;
1146
+ }
1147
+ return void 0;
1148
+ };
875
1149
 
876
1150
  // src/utils/parseAssetId.ts
877
1151
  var UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
@@ -1007,11 +1281,11 @@ var DockWrapper = ({ categories, activeCategoryId }) => {
1007
1281
  const rootRef = useRef4(null);
1008
1282
  const timeoutsRef = useRef4([]);
1009
1283
  const listenersRef = useRef4([]);
1010
- const sortedCategories = useMemo(
1284
+ const sortedCategories = useMemo2(
1011
1285
  () => [...categories].sort((a, b) => a.order - b.order),
1012
1286
  [categories]
1013
1287
  );
1014
- const lastInteractiveId = useMemo(() => {
1288
+ const lastInteractiveId = useMemo2(() => {
1015
1289
  for (let i = sortedCategories.length - 1; i >= 0; i -= 1) {
1016
1290
  const candidate = sortedCategories[i];
1017
1291
  if (candidate && candidate.type !== "divider") {
@@ -1802,10 +2076,10 @@ function EmptyState({
1802
2076
  }
1803
2077
 
1804
2078
  // src/components/cupcode/ErrorBoundary.tsx
1805
- import React6 from "react";
2079
+ import React5 from "react";
1806
2080
  import { AlertTriangle } from "lucide-react";
1807
2081
  import { jsx as jsx13, jsxs as jsxs11 } from "react/jsx-runtime";
1808
- var ErrorBoundary = class extends React6.Component {
2082
+ var ErrorBoundary = class extends React5.Component {
1809
2083
  constructor(props) {
1810
2084
  super(props);
1811
2085
  __publicField(this, "handleReset", () => {
@@ -1898,9 +2172,9 @@ var HeroTitle = ({
1898
2172
  };
1899
2173
 
1900
2174
  // src/components/cupcode/InputField.tsx
1901
- import * as React7 from "react";
2175
+ import * as React6 from "react";
1902
2176
  import { jsx as jsx16, jsxs as jsxs13 } from "react/jsx-runtime";
1903
- var InputField = React7.forwardRef(
2177
+ var InputField = React6.forwardRef(
1904
2178
  ({ className, type, label, error, leftIcon, rightIcon, ...props }, ref) => {
1905
2179
  return /* @__PURE__ */ jsxs13("div", { className: "cc-stack space-2 w-full", children: [
1906
2180
  label && /* @__PURE__ */ jsx16("label", { className: "text-sm font-semibold text-cupcode-ink", children: label }),
@@ -2207,7 +2481,7 @@ var LoadingScreen = ({
2207
2481
  };
2208
2482
 
2209
2483
  // src/components/cupcode/ModalCupcode.tsx
2210
- import * as React9 from "react";
2484
+ import * as React8 from "react";
2211
2485
  import * as DialogPrimitive from "@radix-ui/react-dialog";
2212
2486
  import { X as X2 } from "lucide-react";
2213
2487
  import { jsx as jsx20, jsxs as jsxs16 } from "react/jsx-runtime";
@@ -2215,7 +2489,7 @@ var Modal = DialogPrimitive.Root;
2215
2489
  var ModalTrigger = DialogPrimitive.Trigger;
2216
2490
  var ModalPortal = DialogPrimitive.Portal;
2217
2491
  var ModalClose = DialogPrimitive.Close;
2218
- var ModalOverlay = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
2492
+ var ModalOverlay = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
2219
2493
  DialogPrimitive.Overlay,
2220
2494
  {
2221
2495
  ref,
@@ -2228,7 +2502,7 @@ var ModalOverlay = React9.forwardRef(({ className, ...props }, ref) => /* @__PUR
2228
2502
  }
2229
2503
  ));
2230
2504
  ModalOverlay.displayName = DialogPrimitive.Overlay.displayName;
2231
- var ModalContent = React9.forwardRef(({ className, children, size = "md", ...props }, ref) => {
2505
+ var ModalContent = React8.forwardRef(({ className, children, size = "md", ...props }, ref) => {
2232
2506
  const sizeClasses2 = {
2233
2507
  sm: "max-w-sm",
2234
2508
  md: "max-w-md",
@@ -2284,7 +2558,7 @@ var ModalFooter = ({
2284
2558
  }
2285
2559
  );
2286
2560
  ModalFooter.displayName = "ModalFooter";
2287
- var ModalTitle = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
2561
+ var ModalTitle = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
2288
2562
  DialogPrimitive.Title,
2289
2563
  {
2290
2564
  ref,
@@ -2293,7 +2567,7 @@ var ModalTitle = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE_
2293
2567
  }
2294
2568
  ));
2295
2569
  ModalTitle.displayName = DialogPrimitive.Title.displayName;
2296
- var ModalDescription = React9.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
2570
+ var ModalDescription = React8.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx20(
2297
2571
  DialogPrimitive.Description,
2298
2572
  {
2299
2573
  ref,
@@ -2304,7 +2578,7 @@ var ModalDescription = React9.forwardRef(({ className, ...props }, ref) => /* @_
2304
2578
  ModalDescription.displayName = DialogPrimitive.Description.displayName;
2305
2579
 
2306
2580
  // src/components/cupcode/NavbarCupcode.tsx
2307
- import * as React10 from "react";
2581
+ import * as React9 from "react";
2308
2582
  import { Menu } from "lucide-react";
2309
2583
  import { jsx as jsx21, jsxs as jsxs17 } from "react/jsx-runtime";
2310
2584
  var NavbarCupcode = ({
@@ -2313,10 +2587,10 @@ var NavbarCupcode = ({
2313
2587
  actions,
2314
2588
  className
2315
2589
  }) => {
2316
- const [isOpen, setIsOpen] = React10.useState(false);
2317
- const navRef = React10.useRef(null);
2318
- const mobileMenuId = React10.useId();
2319
- React10.useEffect(() => {
2590
+ const [isOpen, setIsOpen] = React9.useState(false);
2591
+ const navRef = React9.useRef(null);
2592
+ const mobileMenuId = React9.useId();
2593
+ React9.useEffect(() => {
2320
2594
  if (!isOpen) return;
2321
2595
  const handlePointerDown = (event) => {
2322
2596
  var _a74;
@@ -2338,7 +2612,7 @@ var NavbarCupcode = ({
2338
2612
  document.removeEventListener("keydown", handleEscape);
2339
2613
  };
2340
2614
  }, [isOpen]);
2341
- React10.useEffect(() => {
2615
+ React9.useEffect(() => {
2342
2616
  if (!isOpen) return;
2343
2617
  const { style } = document.body;
2344
2618
  const previousOverflow = style.overflow;
@@ -2347,7 +2621,7 @@ var NavbarCupcode = ({
2347
2621
  style.overflow = previousOverflow;
2348
2622
  };
2349
2623
  }, [isOpen]);
2350
- React10.useEffect(() => {
2624
+ React9.useEffect(() => {
2351
2625
  const handleResize = () => {
2352
2626
  if (window.innerWidth >= 768) {
2353
2627
  setIsOpen(false);
@@ -2469,7 +2743,7 @@ var NavbarCupcode = ({
2469
2743
  };
2470
2744
 
2471
2745
  // src/components/cupcode/MainNavbar.tsx
2472
- import { useCallback as useCallback6, useEffect as useEffect16, useMemo as useMemo8, useRef as useRef12, useState as useState13 } from "react";
2746
+ import { useCallback as useCallback6, useEffect as useEffect16, useMemo as useMemo9, useRef as useRef12, useState as useState13 } from "react";
2473
2747
 
2474
2748
  // src/components/cupcode/TelescupImage.tsx
2475
2749
  import { jsx as jsx22 } from "react/jsx-runtime";
@@ -2562,20 +2836,20 @@ import {
2562
2836
  import {
2563
2837
  useCallback as useCallback5,
2564
2838
  useEffect as useEffect14,
2565
- useMemo as useMemo7,
2839
+ useMemo as useMemo8,
2566
2840
  useRef as useRef11,
2567
2841
  useState as useState11
2568
2842
  } from "react";
2569
2843
 
2570
2844
  // src/components/ui/select.tsx
2571
- import * as React11 from "react";
2845
+ import * as React10 from "react";
2572
2846
  import * as SelectPrimitive from "@radix-ui/react-select";
2573
2847
  import { Check, ChevronDown as ChevronDown2, ChevronUp } from "lucide-react";
2574
2848
  import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
2575
2849
  var Select = SelectPrimitive.Root;
2576
2850
  var SelectGroup = SelectPrimitive.Group;
2577
2851
  var SelectValue = SelectPrimitive.Value;
2578
- var SelectTrigger = React11.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs18(
2852
+ var SelectTrigger = React10.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs18(
2579
2853
  SelectPrimitive.Trigger,
2580
2854
  {
2581
2855
  ref,
@@ -2591,7 +2865,7 @@ var SelectTrigger = React11.forwardRef(({ className, children, ...props }, ref)
2591
2865
  }
2592
2866
  ));
2593
2867
  SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
2594
- var SelectScrollUpButton = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
2868
+ var SelectScrollUpButton = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
2595
2869
  SelectPrimitive.ScrollUpButton,
2596
2870
  {
2597
2871
  ref,
@@ -2601,7 +2875,7 @@ var SelectScrollUpButton = React11.forwardRef(({ className, ...props }, ref) =>
2601
2875
  }
2602
2876
  ));
2603
2877
  SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
2604
- var SelectScrollDownButton = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
2878
+ var SelectScrollDownButton = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(
2605
2879
  SelectPrimitive.ScrollDownButton,
2606
2880
  {
2607
2881
  ref,
@@ -2611,7 +2885,7 @@ var SelectScrollDownButton = React11.forwardRef(({ className, ...props }, ref) =
2611
2885
  }
2612
2886
  ));
2613
2887
  SelectScrollDownButton.displayName = SelectPrimitive.ScrollDownButton.displayName;
2614
- var SelectContent = React11.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx23(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs18(
2888
+ var SelectContent = React10.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx23(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs18(
2615
2889
  SelectPrimitive.Content,
2616
2890
  {
2617
2891
  ref,
@@ -2639,9 +2913,9 @@ var SelectContent = React11.forwardRef(({ className, children, position = "poppe
2639
2913
  }
2640
2914
  ) }));
2641
2915
  SelectContent.displayName = SelectPrimitive.Content.displayName;
2642
- var SelectLabel = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(SelectPrimitive.Label, { ref, className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className), ...props }));
2916
+ var SelectLabel = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(SelectPrimitive.Label, { ref, className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className), ...props }));
2643
2917
  SelectLabel.displayName = SelectPrimitive.Label.displayName;
2644
- var SelectItem = React11.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs18(
2918
+ var SelectItem = React10.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs18(
2645
2919
  SelectPrimitive.Item,
2646
2920
  {
2647
2921
  ref,
@@ -2657,14 +2931,14 @@ var SelectItem = React11.forwardRef(({ className, children, ...props }, ref) =>
2657
2931
  }
2658
2932
  ));
2659
2933
  SelectItem.displayName = SelectPrimitive.Item.displayName;
2660
- var SelectSeparator = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(SelectPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
2934
+ var SelectSeparator = React10.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx23(SelectPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
2661
2935
  SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
2662
2936
 
2663
2937
  // src/components/ui/avatar.tsx
2664
- import * as React12 from "react";
2938
+ import * as React11 from "react";
2665
2939
  import * as AvatarPrimitive2 from "@radix-ui/react-avatar";
2666
2940
  import { jsx as jsx24 } from "react/jsx-runtime";
2667
- var Avatar2 = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
2941
+ var Avatar2 = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
2668
2942
  AvatarPrimitive2.Root,
2669
2943
  {
2670
2944
  ref,
@@ -2673,7 +2947,7 @@ var Avatar2 = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__
2673
2947
  }
2674
2948
  ));
2675
2949
  Avatar2.displayName = AvatarPrimitive2.Root.displayName;
2676
- var AvatarImage2 = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
2950
+ var AvatarImage2 = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
2677
2951
  AvatarPrimitive2.Image,
2678
2952
  {
2679
2953
  ref,
@@ -2682,7 +2956,7 @@ var AvatarImage2 = React12.forwardRef(({ className, ...props }, ref) => /* @__PU
2682
2956
  }
2683
2957
  ));
2684
2958
  AvatarImage2.displayName = AvatarPrimitive2.Image.displayName;
2685
- var AvatarFallback2 = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
2959
+ var AvatarFallback2 = React11.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx24(
2686
2960
  AvatarPrimitive2.Fallback,
2687
2961
  {
2688
2962
  ref,
@@ -2693,7 +2967,7 @@ var AvatarFallback2 = React12.forwardRef(({ className, ...props }, ref) => /* @_
2693
2967
  AvatarFallback2.displayName = AvatarPrimitive2.Fallback.displayName;
2694
2968
 
2695
2969
  // src/components/ui/dropdown-menu.tsx
2696
- import * as React13 from "react";
2970
+ import * as React12 from "react";
2697
2971
  import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
2698
2972
  import { Check as Check2, ChevronRight, Circle } from "lucide-react";
2699
2973
  import { jsx as jsx25, jsxs as jsxs19 } from "react/jsx-runtime";
@@ -2703,7 +2977,7 @@ var DropdownMenuGroup = DropdownMenuPrimitive.Group;
2703
2977
  var DropdownMenuPortal = DropdownMenuPrimitive.Portal;
2704
2978
  var DropdownMenuSub = DropdownMenuPrimitive.Sub;
2705
2979
  var DropdownMenuRadioGroup = DropdownMenuPrimitive.RadioGroup;
2706
- var DropdownMenuSubTrigger = React13.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs19(
2980
+ var DropdownMenuSubTrigger = React12.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs19(
2707
2981
  DropdownMenuPrimitive.SubTrigger,
2708
2982
  {
2709
2983
  ref,
@@ -2720,7 +2994,7 @@ var DropdownMenuSubTrigger = React13.forwardRef(({ className, inset, children, .
2720
2994
  }
2721
2995
  ));
2722
2996
  DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
2723
- var DropdownMenuSubContent = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2997
+ var DropdownMenuSubContent = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(
2724
2998
  DropdownMenuPrimitive.SubContent,
2725
2999
  {
2726
3000
  ref,
@@ -2732,7 +3006,7 @@ var DropdownMenuSubContent = React13.forwardRef(({ className, ...props }, ref) =
2732
3006
  }
2733
3007
  ));
2734
3008
  DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
2735
- var DropdownMenuContent = React13.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx25(
3009
+ var DropdownMenuContent = React12.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx25(
2736
3010
  DropdownMenuPrimitive.Content,
2737
3011
  {
2738
3012
  ref,
@@ -2745,7 +3019,7 @@ var DropdownMenuContent = React13.forwardRef(({ className, sideOffset = 4, ...pr
2745
3019
  }
2746
3020
  ) }));
2747
3021
  DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
2748
- var DropdownMenuItem = React13.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx25(
3022
+ var DropdownMenuItem = React12.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx25(
2749
3023
  DropdownMenuPrimitive.Item,
2750
3024
  {
2751
3025
  ref,
@@ -2758,7 +3032,7 @@ var DropdownMenuItem = React13.forwardRef(({ className, inset, ...props }, ref)
2758
3032
  }
2759
3033
  ));
2760
3034
  DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
2761
- var DropdownMenuCheckboxItem = React13.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs19(
3035
+ var DropdownMenuCheckboxItem = React12.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs19(
2762
3036
  DropdownMenuPrimitive.CheckboxItem,
2763
3037
  {
2764
3038
  ref,
@@ -2775,7 +3049,7 @@ var DropdownMenuCheckboxItem = React13.forwardRef(({ className, children, checke
2775
3049
  }
2776
3050
  ));
2777
3051
  DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
2778
- var DropdownMenuRadioItem = React13.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs19(
3052
+ var DropdownMenuRadioItem = React12.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs19(
2779
3053
  DropdownMenuPrimitive.RadioItem,
2780
3054
  {
2781
3055
  ref,
@@ -2791,7 +3065,7 @@ var DropdownMenuRadioItem = React13.forwardRef(({ className, children, ...props
2791
3065
  }
2792
3066
  ));
2793
3067
  DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
2794
- var DropdownMenuLabel = React13.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx25(
3068
+ var DropdownMenuLabel = React12.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx25(
2795
3069
  DropdownMenuPrimitive.Label,
2796
3070
  {
2797
3071
  ref,
@@ -2800,7 +3074,7 @@ var DropdownMenuLabel = React13.forwardRef(({ className, inset, ...props }, ref)
2800
3074
  }
2801
3075
  ));
2802
3076
  DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
2803
- var DropdownMenuSeparator = React13.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
3077
+ var DropdownMenuSeparator = React12.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx25(DropdownMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
2804
3078
  DropdownMenuSeparator.displayName = DropdownMenuPrimitive.Separator.displayName;
2805
3079
  var DropdownMenuShortcut = ({ className, ...props }) => {
2806
3080
  return /* @__PURE__ */ jsx25("span", { className: cn("ml-auto text-xs tracking-widest opacity-60", className), ...props });
@@ -2808,11 +3082,11 @@ var DropdownMenuShortcut = ({ className, ...props }) => {
2808
3082
  DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
2809
3083
 
2810
3084
  // src/components/ui/alert-dialog.tsx
2811
- import * as React15 from "react";
3085
+ import * as React14 from "react";
2812
3086
  import * as AlertDialogPrimitive from "@radix-ui/react-alert-dialog";
2813
3087
 
2814
3088
  // src/components/ui/button.tsx
2815
- import * as React14 from "react";
3089
+ import * as React13 from "react";
2816
3090
  import { Slot } from "@radix-ui/react-slot";
2817
3091
  import { cva } from "class-variance-authority";
2818
3092
  import { jsx as jsx26 } from "react/jsx-runtime";
@@ -2841,7 +3115,7 @@ var buttonVariants = cva(
2841
3115
  }
2842
3116
  }
2843
3117
  );
2844
- var Button = React14.forwardRef(
3118
+ var Button = React13.forwardRef(
2845
3119
  ({ className, variant, size, asChild = false, ...props }, ref) => {
2846
3120
  const Comp = asChild ? Slot : "button";
2847
3121
  return /* @__PURE__ */ jsx26(Comp, { className: cn(buttonVariants({ variant, size, className })), ref, ...props });
@@ -2854,7 +3128,7 @@ import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
2854
3128
  var AlertDialog = AlertDialogPrimitive.Root;
2855
3129
  var AlertDialogTrigger = AlertDialogPrimitive.Trigger;
2856
3130
  var AlertDialogPortal = AlertDialogPrimitive.Portal;
2857
- var AlertDialogOverlay = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
3131
+ var AlertDialogOverlay = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
2858
3132
  AlertDialogPrimitive.Overlay,
2859
3133
  {
2860
3134
  className: cn(
@@ -2866,7 +3140,7 @@ var AlertDialogOverlay = React15.forwardRef(({ className, ...props }, ref) => /*
2866
3140
  }
2867
3141
  ));
2868
3142
  AlertDialogOverlay.displayName = AlertDialogPrimitive.Overlay.displayName;
2869
- var AlertDialogContent = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs20(AlertDialogPortal, { children: [
3143
+ var AlertDialogContent = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs20(AlertDialogPortal, { children: [
2870
3144
  /* @__PURE__ */ jsx27(AlertDialogOverlay, {}),
2871
3145
  /* @__PURE__ */ jsx27(
2872
3146
  AlertDialogPrimitive.Content,
@@ -2885,13 +3159,13 @@ var AlertDialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx27("div"
2885
3159
  AlertDialogHeader.displayName = "AlertDialogHeader";
2886
3160
  var AlertDialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx27("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
2887
3161
  AlertDialogFooter.displayName = "AlertDialogFooter";
2888
- var AlertDialogTitle = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(AlertDialogPrimitive.Title, { ref, className: cn("text-lg font-semibold", className), ...props }));
3162
+ var AlertDialogTitle = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(AlertDialogPrimitive.Title, { ref, className: cn("text-lg font-semibold", className), ...props }));
2889
3163
  AlertDialogTitle.displayName = AlertDialogPrimitive.Title.displayName;
2890
- var AlertDialogDescription = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(AlertDialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
3164
+ var AlertDialogDescription = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(AlertDialogPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
2891
3165
  AlertDialogDescription.displayName = AlertDialogPrimitive.Description.displayName;
2892
- var AlertDialogAction = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(AlertDialogPrimitive.Action, { ref, className: cn(buttonVariants(), className), ...props }));
3166
+ var AlertDialogAction = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(AlertDialogPrimitive.Action, { ref, className: cn(buttonVariants(), className), ...props }));
2893
3167
  AlertDialogAction.displayName = AlertDialogPrimitive.Action.displayName;
2894
- var AlertDialogCancel = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
3168
+ var AlertDialogCancel = React14.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx27(
2895
3169
  AlertDialogPrimitive.Cancel,
2896
3170
  {
2897
3171
  ref,
@@ -2902,7 +3176,7 @@ var AlertDialogCancel = React15.forwardRef(({ className, ...props }, ref) => /*
2902
3176
  AlertDialogCancel.displayName = AlertDialogPrimitive.Cancel.displayName;
2903
3177
 
2904
3178
  // src/components/ui/dialog.tsx
2905
- import * as React16 from "react";
3179
+ import * as React15 from "react";
2906
3180
  import * as DialogPrimitive2 from "@radix-ui/react-dialog";
2907
3181
  import { X as X3 } from "lucide-react";
2908
3182
  import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
@@ -2910,7 +3184,7 @@ var Dialog = DialogPrimitive2.Root;
2910
3184
  var DialogTrigger = DialogPrimitive2.Trigger;
2911
3185
  var DialogPortal = DialogPrimitive2.Portal;
2912
3186
  var DialogClose = DialogPrimitive2.Close;
2913
- var DialogOverlay = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
3187
+ var DialogOverlay = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
2914
3188
  DialogPrimitive2.Overlay,
2915
3189
  {
2916
3190
  ref,
@@ -2922,7 +3196,7 @@ var DialogOverlay = React16.forwardRef(({ className, ...props }, ref) => /* @__P
2922
3196
  }
2923
3197
  ));
2924
3198
  DialogOverlay.displayName = DialogPrimitive2.Overlay.displayName;
2925
- var DialogContent = React16.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs21(DialogPortal, { children: [
3199
+ var DialogContent = React15.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs21(DialogPortal, { children: [
2926
3200
  /* @__PURE__ */ jsx28(DialogOverlay, {}),
2927
3201
  /* @__PURE__ */ jsxs21(
2928
3202
  DialogPrimitive2.Content,
@@ -2948,7 +3222,7 @@ var DialogHeader = ({ className, ...props }) => /* @__PURE__ */ jsx28("div", { c
2948
3222
  DialogHeader.displayName = "DialogHeader";
2949
3223
  var DialogFooter = ({ className, ...props }) => /* @__PURE__ */ jsx28("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
2950
3224
  DialogFooter.displayName = "DialogFooter";
2951
- var DialogTitle = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
3225
+ var DialogTitle = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(
2952
3226
  DialogPrimitive2.Title,
2953
3227
  {
2954
3228
  ref,
@@ -2957,14 +3231,14 @@ var DialogTitle = React16.forwardRef(({ className, ...props }, ref) => /* @__PUR
2957
3231
  }
2958
3232
  ));
2959
3233
  DialogTitle.displayName = DialogPrimitive2.Title.displayName;
2960
- var DialogDescription = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(DialogPrimitive2.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
3234
+ var DialogDescription = React15.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx28(DialogPrimitive2.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
2961
3235
  DialogDescription.displayName = DialogPrimitive2.Description.displayName;
2962
3236
 
2963
3237
  // src/components/ui/switch.tsx
2964
- import * as React17 from "react";
3238
+ import * as React16 from "react";
2965
3239
  import * as SwitchPrimitives from "@radix-ui/react-switch";
2966
3240
  import { jsx as jsx29 } from "react/jsx-runtime";
2967
- var Switch = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
3241
+ var Switch = React16.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx29(
2968
3242
  SwitchPrimitives.Root,
2969
3243
  {
2970
3244
  className: cn(
@@ -2986,7 +3260,7 @@ var Switch = React17.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
2986
3260
  Switch.displayName = SwitchPrimitives.Root.displayName;
2987
3261
 
2988
3262
  // src/hooks/use-toast.ts
2989
- import * as React18 from "react";
3263
+ import * as React17 from "react";
2990
3264
  var TOAST_LIMIT = 1;
2991
3265
  var TOAST_REMOVE_DELAY = 1e6;
2992
3266
  var count = 0;
@@ -3085,8 +3359,8 @@ function toast({ ...props }) {
3085
3359
  };
3086
3360
  }
3087
3361
  function useToast() {
3088
- const [state, setState] = React18.useState(memoryState);
3089
- React18.useEffect(() => {
3362
+ const [state, setState] = React17.useState(memoryState);
3363
+ React17.useEffect(() => {
3090
3364
  listeners.push(setState);
3091
3365
  return () => {
3092
3366
  const index = listeners.indexOf(setState);
@@ -3103,7 +3377,7 @@ function useToast() {
3103
3377
  }
3104
3378
 
3105
3379
  // src/components/cupcode/TelescupUpload.tsx
3106
- import React27, { useCallback as useCallback4, useEffect as useEffect13, useMemo as useMemo6, useState as useState10 } from "react";
3380
+ import React26, { useCallback as useCallback4, useEffect as useEffect13, useMemo as useMemo7, useState as useState10 } from "react";
3107
3381
 
3108
3382
  // src/lib/telescupClient.ts
3109
3383
  var TelescupClientError = class extends Error {
@@ -4449,10 +4723,10 @@ var createTelescupClient = (config) => ({
4449
4723
  });
4450
4724
 
4451
4725
  // src/components/cupcode/TelescupAssetPicker.tsx
4452
- import React21, { useCallback as useCallback2, useMemo as useMemo3, useState as useState7 } from "react";
4726
+ import React20, { useCallback as useCallback2, useMemo as useMemo4, useState as useState7 } from "react";
4453
4727
 
4454
4728
  // src/hooks/useTelescupAssets.ts
4455
- import { useCallback, useEffect as useEffect11, useMemo as useMemo2, useRef as useRef8, useState as useState6 } from "react";
4729
+ import { useCallback, useEffect as useEffect11, useMemo as useMemo3, useRef as useRef8, useState as useState6 } from "react";
4456
4730
  var mergeFacetValues = (current, incoming) => {
4457
4731
  if (!current && !incoming) return void 0;
4458
4732
  const map = /* @__PURE__ */ new Map();
@@ -4515,14 +4789,14 @@ function useTelescupAssets(options) {
4515
4789
  pageSize = 24,
4516
4790
  cacheTimeMs = DEFAULT_CACHE_MS
4517
4791
  } = options;
4518
- const resolvedClient = useMemo2(() => {
4792
+ const resolvedClient = useMemo3(() => {
4519
4793
  if (client) return client;
4520
4794
  if (!baseUrl || !getAccessToken) {
4521
4795
  throw new Error("useTelescupAssets: baseUrl e getAccessToken s\xE3o obrigat\xF3rios.");
4522
4796
  }
4523
4797
  return createTelescupClient({ baseUrl, getAccessToken });
4524
4798
  }, [client, baseUrl, getAccessToken]);
4525
- const cacheKey = useMemo2(() => {
4799
+ const cacheKey = useMemo3(() => {
4526
4800
  const base = baseUrl != null ? baseUrl : "client";
4527
4801
  return buildCacheKey(base, filters);
4528
4802
  }, [baseUrl, filters]);
@@ -4672,9 +4946,9 @@ var TelescupVideo = ({
4672
4946
  };
4673
4947
 
4674
4948
  // src/components/ui/input.tsx
4675
- import * as React19 from "react";
4949
+ import * as React18 from "react";
4676
4950
  import { jsx as jsx31 } from "react/jsx-runtime";
4677
- var Input = React19.forwardRef(
4951
+ var Input = React18.forwardRef(
4678
4952
  ({ className, type, ...props }, ref) => {
4679
4953
  return /* @__PURE__ */ jsx31(
4680
4954
  "input",
@@ -4722,10 +4996,10 @@ function Skeleton2({ className, ...props }) {
4722
4996
  }
4723
4997
 
4724
4998
  // src/components/ui/scroll-area.tsx
4725
- import * as React20 from "react";
4999
+ import * as React19 from "react";
4726
5000
  import * as ScrollAreaPrimitive from "@radix-ui/react-scroll-area";
4727
5001
  import { jsx as jsx34, jsxs as jsxs22 } from "react/jsx-runtime";
4728
- var ScrollArea = React20.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs22(
5002
+ var ScrollArea = React19.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs22(
4729
5003
  ScrollAreaPrimitive.Root,
4730
5004
  {
4731
5005
  ref,
@@ -4741,7 +5015,7 @@ var ScrollArea = React20.forwardRef(({ className, children, ...props }, ref) =>
4741
5015
  }
4742
5016
  ));
4743
5017
  ScrollArea.displayName = ScrollAreaPrimitive.Root.displayName;
4744
- var ScrollBar = React20.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx34(
5018
+ var ScrollBar = React19.forwardRef(({ className, orientation = "vertical", ...props }, ref) => /* @__PURE__ */ jsx34(
4745
5019
  ScrollAreaPrimitive.ScrollAreaScrollbar,
4746
5020
  {
4747
5021
  ref,
@@ -4939,7 +5213,7 @@ var TelescupAssetPicker = ({
4939
5213
  const [typeFilter, setTypeFilter] = useState7("all");
4940
5214
  const [folderFilter, setFolderFilter] = useState7("all");
4941
5215
  const [previewAsset, setPreviewAsset] = useState7(null);
4942
- const baseFilters = useMemo3(
5216
+ const baseFilters = useMemo4(
4943
5217
  () => ({
4944
5218
  query: query || void 0,
4945
5219
  // Mantemos type fora da query server-side porque dados legados podem ter kind incorreto.
@@ -4955,7 +5229,7 @@ var TelescupAssetPicker = ({
4955
5229
  enabled,
4956
5230
  pageSize: 500
4957
5231
  });
4958
- const folderOptions = useMemo3(() => {
5232
+ const folderOptions = useMemo4(() => {
4959
5233
  const options = normalizeFacetOptions(facets == null ? void 0 : facets.folders);
4960
5234
  return options.length ? options : collectFacetOptions(
4961
5235
  items,
@@ -4963,11 +5237,11 @@ var TelescupAssetPicker = ({
4963
5237
  (asset) => asset.folderName
4964
5238
  );
4965
5239
  }, [facets == null ? void 0 : facets.folders, items]);
4966
- const selectedFolderOption = useMemo3(() => {
5240
+ const selectedFolderOption = useMemo4(() => {
4967
5241
  if (folderFilter === "all") return void 0;
4968
5242
  return folderOptions.find((option) => option.value === folderFilter);
4969
5243
  }, [folderFilter, folderOptions]);
4970
- const filteredItems = useMemo3(() => {
5244
+ const filteredItems = useMemo4(() => {
4971
5245
  var _a74;
4972
5246
  const selectedFolderAliases = new Set(
4973
5247
  ((_a74 = selectedFolderOption == null ? void 0 : selectedFolderOption.aliases) != null ? _a74 : folderFilter === "all" ? [] : [folderFilter]).map(
@@ -5004,13 +5278,13 @@ var TelescupAssetPicker = ({
5004
5278
  },
5005
5279
  [filteredItems, multiple, onChange, value]
5006
5280
  );
5007
- React21.useEffect(() => {
5281
+ React20.useEffect(() => {
5008
5282
  if (filteredItems.length) onAssetsLoaded == null ? void 0 : onAssetsLoaded(filteredItems);
5009
5283
  }, [filteredItems, onAssetsLoaded]);
5010
- React21.useEffect(() => {
5284
+ React20.useEffect(() => {
5011
5285
  onTotalAssetsChange == null ? void 0 : onTotalAssetsChange(total != null ? total : 0);
5012
5286
  }, [onTotalAssetsChange, total]);
5013
- React21.useEffect(() => {
5287
+ React20.useEffect(() => {
5014
5288
  if (!enabled) return;
5015
5289
  if (isLoading || isLoadingMore) return;
5016
5290
  if (!hasMore) return;
@@ -5096,10 +5370,10 @@ var TelescupAssetPicker = ({
5096
5370
  };
5097
5371
 
5098
5372
  // src/components/cupcode/TelescupUploader.tsx
5099
- import { useMemo as useMemo5, useRef as useRef10, useState as useState9 } from "react";
5373
+ import { useMemo as useMemo6, useRef as useRef10, useState as useState9 } from "react";
5100
5374
 
5101
5375
  // src/hooks/useTelescupUploadQueue.tsx
5102
- import { useCallback as useCallback3, useEffect as useEffect12, useMemo as useMemo4, useRef as useRef9, useState as useState8 } from "react";
5376
+ import { useCallback as useCallback3, useEffect as useEffect12, useMemo as useMemo5, useRef as useRef9, useState as useState8 } from "react";
5103
5377
  var DEFAULT_CONCURRENCY = 3;
5104
5378
  var TELESCUP_UPLOAD_MODE = getRuntimeEnvOr("VITE_TELESCUP_UPLOAD_MODE", "standard").trim().toLowerCase();
5105
5379
  var makeId = () => Math.random().toString(36).slice(2, 10);
@@ -5315,7 +5589,7 @@ function useTelescupUploadQueue(options) {
5315
5589
  },
5316
5590
  [updateItem]
5317
5591
  );
5318
- const isUploading = useMemo4(
5592
+ const isUploading = useMemo5(
5319
5593
  () => queue.some((item) => item.status === "uploading" || item.status === "queued"),
5320
5594
  [queue]
5321
5595
  );
@@ -5331,10 +5605,10 @@ function useTelescupUploadQueue(options) {
5331
5605
  }
5332
5606
 
5333
5607
  // src/components/ui/progress.tsx
5334
- import * as React22 from "react";
5608
+ import * as React21 from "react";
5335
5609
  import * as ProgressPrimitive from "@radix-ui/react-progress";
5336
5610
  import { jsx as jsx36 } from "react/jsx-runtime";
5337
- var Progress = React22.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx36(
5611
+ var Progress = React21.forwardRef(({ className, value, ...props }, ref) => /* @__PURE__ */ jsx36(
5338
5612
  ProgressPrimitive.Root,
5339
5613
  {
5340
5614
  ref,
@@ -5390,10 +5664,10 @@ var TelescupUploader = ({
5390
5664
  });
5391
5665
  }
5392
5666
  });
5393
- const accept = useMemo5(() => allowedTypes && allowedTypes.length ? allowedTypes.join(",") : void 0, [
5667
+ const accept = useMemo6(() => allowedTypes && allowedTypes.length ? allowedTypes.join(",") : void 0, [
5394
5668
  allowedTypes
5395
5669
  ]);
5396
- const conflictItem = useMemo5(() => queue.find((item) => item.status === "conflict"), [queue]);
5670
+ const conflictItem = useMemo6(() => queue.find((item) => item.status === "conflict"), [queue]);
5397
5671
  const handleFiles = (files) => {
5398
5672
  const { rejected } = enqueueFiles(files);
5399
5673
  rejected.forEach(({ file, reason }) => {
@@ -5522,11 +5796,11 @@ var TelescupUploader = ({
5522
5796
  };
5523
5797
 
5524
5798
  // src/components/ui/tabs.tsx
5525
- import * as React24 from "react";
5799
+ import * as React23 from "react";
5526
5800
  import * as TabsPrimitive from "@radix-ui/react-tabs";
5527
5801
  import { jsx as jsx38 } from "react/jsx-runtime";
5528
5802
  var Tabs = TabsPrimitive.Root;
5529
- var TabsList = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
5803
+ var TabsList = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
5530
5804
  TabsPrimitive.List,
5531
5805
  {
5532
5806
  ref,
@@ -5538,7 +5812,7 @@ var TabsList = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__
5538
5812
  }
5539
5813
  ));
5540
5814
  TabsList.displayName = TabsPrimitive.List.displayName;
5541
- var TabsTrigger = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
5815
+ var TabsTrigger = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
5542
5816
  TabsPrimitive.Trigger,
5543
5817
  {
5544
5818
  ref,
@@ -5550,7 +5824,7 @@ var TabsTrigger = React24.forwardRef(({ className, ...props }, ref) => /* @__PUR
5550
5824
  }
5551
5825
  ));
5552
5826
  TabsTrigger.displayName = TabsPrimitive.Trigger.displayName;
5553
- var TabsContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
5827
+ var TabsContent = React23.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx38(
5554
5828
  TabsPrimitive.Content,
5555
5829
  {
5556
5830
  ref,
@@ -5564,7 +5838,7 @@ var TabsContent = React24.forwardRef(({ className, ...props }, ref) => /* @__PUR
5564
5838
  TabsContent.displayName = TabsPrimitive.Content.displayName;
5565
5839
 
5566
5840
  // src/components/ui/drawer.tsx
5567
- import * as React25 from "react";
5841
+ import * as React24 from "react";
5568
5842
  import { Drawer as DrawerPrimitive } from "vaul";
5569
5843
  import { jsx as jsx39, jsxs as jsxs25 } from "react/jsx-runtime";
5570
5844
  var Drawer = ({ shouldScaleBackground = true, ...props }) => /* @__PURE__ */ jsx39(DrawerPrimitive.Root, { shouldScaleBackground, ...props });
@@ -5572,9 +5846,9 @@ Drawer.displayName = "Drawer";
5572
5846
  var DrawerTrigger = DrawerPrimitive.Trigger;
5573
5847
  var DrawerPortal = DrawerPrimitive.Portal;
5574
5848
  var DrawerClose = DrawerPrimitive.Close;
5575
- var DrawerOverlay = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx39(DrawerPrimitive.Overlay, { ref, className: cn("fixed inset-0 z-50 bg-black/80", className), ...props }));
5849
+ var DrawerOverlay = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx39(DrawerPrimitive.Overlay, { ref, className: cn("fixed inset-0 z-50 bg-black/80", className), ...props }));
5576
5850
  DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
5577
- var DrawerContent = React25.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs25(DrawerPortal, { children: [
5851
+ var DrawerContent = React24.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs25(DrawerPortal, { children: [
5578
5852
  /* @__PURE__ */ jsx39(DrawerOverlay, {}),
5579
5853
  /* @__PURE__ */ jsxs25(
5580
5854
  DrawerPrimitive.Content,
@@ -5597,7 +5871,7 @@ var DrawerHeader = ({ className, ...props }) => /* @__PURE__ */ jsx39("div", { c
5597
5871
  DrawerHeader.displayName = "DrawerHeader";
5598
5872
  var DrawerFooter = ({ className, ...props }) => /* @__PURE__ */ jsx39("div", { className: cn("mt-auto flex flex-col gap-2 p-4", className), ...props });
5599
5873
  DrawerFooter.displayName = "DrawerFooter";
5600
- var DrawerTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx39(
5874
+ var DrawerTitle = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx39(
5601
5875
  DrawerPrimitive.Title,
5602
5876
  {
5603
5877
  ref,
@@ -5606,13 +5880,13 @@ var DrawerTitle = React25.forwardRef(({ className, ...props }, ref) => /* @__PUR
5606
5880
  }
5607
5881
  ));
5608
5882
  DrawerTitle.displayName = DrawerPrimitive.Title.displayName;
5609
- var DrawerDescription = React25.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx39(DrawerPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
5883
+ var DrawerDescription = React24.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx39(DrawerPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
5610
5884
  DrawerDescription.displayName = DrawerPrimitive.Description.displayName;
5611
5885
 
5612
5886
  // src/components/ui/textarea.tsx
5613
- import * as React26 from "react";
5887
+ import * as React25 from "react";
5614
5888
  import { jsx as jsx40 } from "react/jsx-runtime";
5615
- var Textarea = React26.forwardRef(({ className, ...props }, ref) => {
5889
+ var Textarea = React25.forwardRef(({ className, ...props }, ref) => {
5616
5890
  return /* @__PURE__ */ jsx40(
5617
5891
  "textarea",
5618
5892
  {
@@ -5756,7 +6030,7 @@ var TelescupMetaEditor = ({
5756
6030
  }
5757
6031
  }, [activeAssetId, assets]);
5758
6032
  const asset = assets.find((item) => item.id === activeAssetId);
5759
- const currentDraft = useMemo6(() => {
6033
+ const currentDraft = useMemo7(() => {
5760
6034
  var _a75;
5761
6035
  const existing = (_a75 = drafts[activeAssetId]) == null ? void 0 : _a75[activeLang];
5762
6036
  if (existing) return existing;
@@ -5965,8 +6239,8 @@ var TelescupUpload = ({
5965
6239
  className,
5966
6240
  renderTrigger
5967
6241
  }) => {
5968
- const labels = useMemo6(() => mergeLabels(labelsOverride), [labelsOverride]);
5969
- const client = useMemo6(() => createTelescupClient({ baseUrl, getAccessToken }), [baseUrl, getAccessToken]);
6242
+ const labels = useMemo7(() => mergeLabels(labelsOverride), [labelsOverride]);
6243
+ const client = useMemo7(() => createTelescupClient({ baseUrl, getAccessToken }), [baseUrl, getAccessToken]);
5970
6244
  const isControlled = open !== void 0;
5971
6245
  const [internalOpen, setInternalOpen] = useState10(false);
5972
6246
  const isOpen = isControlled ? open : internalOpen;
@@ -5975,7 +6249,7 @@ var TelescupUpload = ({
5975
6249
  const [totalAssets, setTotalAssets] = useState10(0);
5976
6250
  const [activeTab, setActiveTab] = useState10("library");
5977
6251
  const [assetRevision, setAssetRevision] = useState10(0);
5978
- const assetMapRef = React27.useRef(/* @__PURE__ */ new Map());
6252
+ const assetMapRef = React26.useRef(/* @__PURE__ */ new Map());
5979
6253
  useEffect13(() => {
5980
6254
  if (value) {
5981
6255
  setInternalSelection(value);
@@ -5983,14 +6257,14 @@ var TelescupUpload = ({
5983
6257
  }, [value]);
5984
6258
  const selectedIds = value != null ? value : internalSelection;
5985
6259
  const effectiveSelectedIds = deferSelectionCommit ? stagedSelection != null ? stagedSelection : selectedIds : selectedIds;
5986
- const hasPendingSelectionChange = useMemo6(() => {
6260
+ const hasPendingSelectionChange = useMemo7(() => {
5987
6261
  if (!deferSelectionCommit || stagedSelection === null) return false;
5988
6262
  if (stagedSelection.length !== selectedIds.length) return true;
5989
6263
  const left = [...stagedSelection].sort();
5990
6264
  const right = [...selectedIds].sort();
5991
6265
  return left.some((entry, index) => entry !== right[index]);
5992
6266
  }, [deferSelectionCommit, selectedIds, stagedSelection]);
5993
- const selectedAssets = useMemo6(() => {
6267
+ const selectedAssets = useMemo7(() => {
5994
6268
  void assetRevision;
5995
6269
  const map = assetMapRef.current;
5996
6270
  return effectiveSelectedIds.map((id) => map.get(id)).filter(Boolean);
@@ -6772,6 +7046,11 @@ var formatRecentActivityDateTime = (value) => {
6772
7046
  minute: "2-digit"
6773
7047
  });
6774
7048
  };
7049
+ var formatAppVersion = (value) => {
7050
+ const normalized = value == null ? void 0 : value.trim();
7051
+ if (!normalized) return "N\xE3o informada";
7052
+ return normalized.toLowerCase().startsWith("v") ? normalized : `v${normalized}`;
7053
+ };
6775
7054
  var PresenceBadge = ({ status, size = "sm" }) => {
6776
7055
  const meta = PRESENCE_META[status];
6777
7056
  const dotSize = size === "lg" ? "h-[0.95rem] w-[0.95rem]" : size === "md" ? "h-3 w-3" : "h-2.5 w-2.5";
@@ -6842,6 +7121,7 @@ var UserMenuCupcode = ({
6842
7121
  isRecentActivityLoading = false,
6843
7122
  telescupBaseUrl,
6844
7123
  getTelescupAccessToken,
7124
+ appVersion,
6845
7125
  panels,
6846
7126
  className
6847
7127
  }) => {
@@ -6923,17 +7203,19 @@ var UserMenuCupcode = ({
6923
7203
  const autoScrollArmTimeoutRef = useRef11(null);
6924
7204
  const isChatMessagesControlled = typeof chatMessages !== "undefined";
6925
7205
  const isChatReactionsControlled = typeof chatReactions !== "undefined";
6926
- const initials = useMemo7(() => buildInitials(displayName, email), [displayName, email]);
6927
- const handle = useMemo7(() => buildHandle(username, email), [username, email]);
7206
+ const initials = useMemo8(() => buildInitials(displayName, email), [displayName, email]);
7207
+ const handle = useMemo8(() => buildHandle(username, email), [username, email]);
6928
7208
  const resolvedRole = roleLabel == null ? void 0 : roleLabel.trim();
7209
+ const resolvedAppVersion = useMemo8(() => resolveCupcodeAppVersion(appVersion), [appVersion]);
7210
+ const appVersionLabel = useMemo8(() => formatAppVersion(resolvedAppVersion), [resolvedAppVersion]);
6929
7211
  const isStatusControlled = typeof status !== "undefined";
6930
7212
  const currentStatus = status != null ? status : internalStatus;
6931
- const baseNotificationList = useMemo7(
7213
+ const baseNotificationList = useMemo8(
6932
7214
  () => notifications && notifications.length > 0 ? notifications : DEFAULT_NOTIFICATIONS,
6933
7215
  [notifications]
6934
7216
  );
6935
7217
  const isStatusFocusMode = isFocusRestrictedStatus(currentStatus);
6936
- const isTimedFocusMode = useMemo7(() => {
7218
+ const isTimedFocusMode = useMemo8(() => {
6937
7219
  if (!notificationPreferences.focusUntil) return false;
6938
7220
  const deadline = new Date(notificationPreferences.focusUntil).getTime();
6939
7221
  if (Number.isNaN(deadline)) return false;
@@ -6941,11 +7223,11 @@ var UserMenuCupcode = ({
6941
7223
  }, [notificationPreferences.focusUntil]);
6942
7224
  const isFocusModeActive = isStatusFocusMode || isTimedFocusMode;
6943
7225
  const isBadgeSuppressedByFocus = isFocusModeActive;
6944
- const resolvedNotificationFeed = useMemo7(
7226
+ const resolvedNotificationFeed = useMemo8(
6945
7227
  () => appendUniqueNotifications(baseNotificationList, runtimeNotifications),
6946
7228
  [baseNotificationList, runtimeNotifications]
6947
7229
  );
6948
- const normalizedNotificationFeed = useMemo7(
7230
+ const normalizedNotificationFeed = useMemo8(
6949
7231
  () => resolvedNotificationFeed.map((notification) => {
6950
7232
  var _a75;
6951
7233
  const kind = normalizeNotificationKind(notification.kind);
@@ -6962,7 +7244,7 @@ var UserMenuCupcode = ({
6962
7244
  if (typeof override === "boolean") return override;
6963
7245
  return notification.unread !== true;
6964
7246
  }, [notificationReadMap]);
6965
- const filteredNotifications = useMemo7(() => {
7247
+ const filteredNotifications = useMemo8(() => {
6966
7248
  return normalizedNotificationFeed.filter((notification) => {
6967
7249
  if (notificationReadFilter === "unread" && isNotificationRead(notification)) {
6968
7250
  return false;
@@ -6973,18 +7255,18 @@ var UserMenuCupcode = ({
6973
7255
  return true;
6974
7256
  });
6975
7257
  }, [isNotificationRead, normalizedNotificationFeed, notificationReadFilter, notificationTypeFilter]);
6976
- const unreadNotificationsCount = useMemo7(
7258
+ const unreadNotificationsCount = useMemo8(
6977
7259
  () => normalizedNotificationFeed.filter((notification) => !isNotificationRead(notification)).length,
6978
7260
  [isNotificationRead, normalizedNotificationFeed]
6979
7261
  );
6980
- const unreadGeneralNotificationsCount = useMemo7(
7262
+ const unreadGeneralNotificationsCount = useMemo8(
6981
7263
  () => normalizedNotificationFeed.filter((notification) => {
6982
7264
  if (normalizeNotificationKind(notification.kind) === "chat") return false;
6983
7265
  return !isNotificationRead(notification);
6984
7266
  }).length,
6985
7267
  [isNotificationRead, normalizedNotificationFeed]
6986
7268
  );
6987
- const groupedNotifications = useMemo7(() => {
7269
+ const groupedNotifications = useMemo8(() => {
6988
7270
  const groups = /* @__PURE__ */ new Map();
6989
7271
  filteredNotifications.forEach((notification) => {
6990
7272
  var _a75, _b7;
@@ -7011,7 +7293,7 @@ var UserMenuCupcode = ({
7011
7293
  items: values.sort((left, right) => getNotificationTimestamp(right) - getNotificationTimestamp(left))
7012
7294
  }));
7013
7295
  }, [filteredNotifications, notificationPreferences.grouping]);
7014
- const visibleGroupedNotifications = useMemo7(() => {
7296
+ const visibleGroupedNotifications = useMemo8(() => {
7015
7297
  if (isNotificationsExpanded) return groupedNotifications;
7016
7298
  let remaining = NOTIFICATIONS_VISIBLE_LIMIT;
7017
7299
  const visibleGroups = [];
@@ -7025,7 +7307,7 @@ var UserMenuCupcode = ({
7025
7307
  return visibleGroups;
7026
7308
  }, [groupedNotifications, isNotificationsExpanded]);
7027
7309
  const hiddenNotificationsCount = Math.max(filteredNotifications.length - NOTIFICATIONS_VISIBLE_LIMIT, 0);
7028
- const focusModeSummaryLabel = useMemo7(() => {
7310
+ const focusModeSummaryLabel = useMemo8(() => {
7029
7311
  if (isStatusFocusMode) {
7030
7312
  const label = PRESENCE_META[currentStatus].label;
7031
7313
  return `Ativo pelo status "${label}"`;
@@ -7038,28 +7320,28 @@ var UserMenuCupcode = ({
7038
7320
  }
7039
7321
  return "Desativado";
7040
7322
  }, [currentStatus, isStatusFocusMode, isTimedFocusMode, notificationPreferences.focusUntil]);
7041
- const baseChatUsersList = useMemo7(() => chatUsers != null ? chatUsers : [], [chatUsers]);
7042
- const chatUsersList = useMemo7(() => [...internalChatGroups, ...baseChatUsersList], [baseChatUsersList, internalChatGroups]);
7043
- const resolvedCurrentChatUserId = useMemo7(() => (currentChatUserId == null ? void 0 : currentChatUserId.trim()) || null, [currentChatUserId]);
7323
+ const baseChatUsersList = useMemo8(() => chatUsers != null ? chatUsers : [], [chatUsers]);
7324
+ const chatUsersList = useMemo8(() => [...internalChatGroups, ...baseChatUsersList], [baseChatUsersList, internalChatGroups]);
7325
+ const resolvedCurrentChatUserId = useMemo8(() => (currentChatUserId == null ? void 0 : currentChatUserId.trim()) || null, [currentChatUserId]);
7044
7326
  const [internalChatMessages, setInternalChatMessages] = useState11(chatMessages != null ? chatMessages : []);
7045
7327
  const [internalChatReactions, setInternalChatReactions] = useState11(chatReactions != null ? chatReactions : []);
7046
- const resolvedChatMessages = useMemo7(
7328
+ const resolvedChatMessages = useMemo8(
7047
7329
  () => isChatMessagesControlled ? chatMessages != null ? chatMessages : [] : internalChatMessages,
7048
7330
  [chatMessages, internalChatMessages, isChatMessagesControlled]
7049
7331
  );
7050
- const resolvedChatReactions = useMemo7(
7332
+ const resolvedChatReactions = useMemo8(
7051
7333
  () => isChatReactionsControlled ? chatReactions != null ? chatReactions : [] : internalChatReactions,
7052
7334
  [chatReactions, internalChatReactions, isChatReactionsControlled]
7053
7335
  );
7054
- const resolvedAllChatMessages = useMemo7(
7336
+ const resolvedAllChatMessages = useMemo8(
7055
7337
  () => [...resolvedChatMessages, ...internalGroupMessages],
7056
7338
  [resolvedChatMessages, internalGroupMessages]
7057
7339
  );
7058
- const resolvedAllChatReactions = useMemo7(
7340
+ const resolvedAllChatReactions = useMemo8(
7059
7341
  () => [...resolvedChatReactions, ...internalGroupReactions],
7060
7342
  [resolvedChatReactions, internalGroupReactions]
7061
7343
  );
7062
- const resolvedChatLogs = useMemo7(() => chatMessageLogs != null ? chatMessageLogs : [], [chatMessageLogs]);
7344
+ const resolvedChatLogs = useMemo8(() => chatMessageLogs != null ? chatMessageLogs : [], [chatMessageLogs]);
7063
7345
  const resolvedName = (displayName == null ? void 0 : displayName.trim()) || "Usu\xE1rio Cupcode";
7064
7346
  const resolvedEmail = (email == null ? void 0 : email.trim()) || "email n\xE3o informado";
7065
7347
  const resolvedVisibleEmail = experienceSettings.showEmailPublicly ? resolvedEmail : "Email privado";
@@ -7068,7 +7350,7 @@ var UserMenuCupcode = ({
7068
7350
  const resolvedLanguage = normalizeLanguage(isLanguageControlled ? language : internalLanguage);
7069
7351
  const isHighContrastEnabled = experienceSettings.contrast === "high";
7070
7352
  const isComfortableDensity = experienceSettings.density === "comfortable";
7071
- const resolvedRecentActivity = useMemo7(() => {
7353
+ const resolvedRecentActivity = useMemo8(() => {
7072
7354
  const activityList = recentActivity != null ? recentActivity : [];
7073
7355
  return [...activityList].sort((left, right) => {
7074
7356
  const leftTs = left.occurredAt ? new Date(left.occurredAt).getTime() : 0;
@@ -7081,11 +7363,11 @@ var UserMenuCupcode = ({
7081
7363
  const isChatSidebarOpen = isChatSidebarExpanded || isChatSidebarPinned;
7082
7364
  const hasTelescupAvatarSupport = Boolean(telescupBaseUrl && getTelescupAccessToken);
7083
7365
  const hasTelescupGroupAvatarSupport = hasTelescupAvatarSupport;
7084
- const createGroupCandidates = useMemo7(
7366
+ const createGroupCandidates = useMemo8(
7085
7367
  () => baseChatUsersList.filter((user) => !user.isGroup),
7086
7368
  [baseChatUsersList]
7087
7369
  );
7088
- const conversationMetaByUserId = useMemo7(() => {
7370
+ const conversationMetaByUserId = useMemo8(() => {
7089
7371
  const meta = /* @__PURE__ */ new Map();
7090
7372
  chatUsersList.forEach((user) => {
7091
7373
  meta.set(user.id, { lastMessage: null, lastTimestamp: 0, unreadCount: 0 });
@@ -7105,7 +7387,7 @@ var UserMenuCupcode = ({
7105
7387
  });
7106
7388
  return meta;
7107
7389
  }, [chatUsersList, resolvedAllChatMessages]);
7108
- const filteredAndSortedChatUsers = useMemo7(() => {
7390
+ const filteredAndSortedChatUsers = useMemo8(() => {
7109
7391
  const query = chatQuery.trim().toLowerCase();
7110
7392
  const filtered = !query ? [...chatUsersList] : chatUsersList.filter((user) => {
7111
7393
  const haystack = `${user.name} ${user.username}`.toLowerCase();
@@ -7124,7 +7406,7 @@ var UserMenuCupcode = ({
7124
7406
  return left.name.localeCompare(right.name, "pt-BR");
7125
7407
  });
7126
7408
  }, [chatQuery, chatUsersList, conversationMetaByUserId]);
7127
- const presenceGroupCounts = useMemo7(() => {
7409
+ const presenceGroupCounts = useMemo8(() => {
7128
7410
  const counts = {
7129
7411
  online: 0,
7130
7412
  busy: 0,
@@ -7137,7 +7419,7 @@ var UserMenuCupcode = ({
7137
7419
  });
7138
7420
  return counts;
7139
7421
  }, [filteredAndSortedChatUsers]);
7140
- const groupedChatUsers = useMemo7(() => {
7422
+ const groupedChatUsers = useMemo8(() => {
7141
7423
  const groups = {
7142
7424
  online: [],
7143
7425
  busy: [],
@@ -7150,7 +7432,7 @@ var UserMenuCupcode = ({
7150
7432
  });
7151
7433
  return groups;
7152
7434
  }, [filteredAndSortedChatUsers]);
7153
- const resolvedChatUnreadByUser = useMemo7(() => {
7435
+ const resolvedChatUnreadByUser = useMemo8(() => {
7154
7436
  const unreadByUser = {};
7155
7437
  conversationMetaByUserId.forEach((value, contactId) => {
7156
7438
  if (value.unreadCount > 0) {
@@ -7177,11 +7459,11 @@ var UserMenuCupcode = ({
7177
7459
  return changed ? next : current;
7178
7460
  });
7179
7461
  }, [normalizedNotificationFeed, resolvedChatUnreadByUser]);
7180
- const resolvedChatUnreadCount = useMemo7(() => {
7462
+ const resolvedChatUnreadCount = useMemo8(() => {
7181
7463
  return Object.values(resolvedChatUnreadByUser).reduce((total, value) => total + value, 0);
7182
7464
  }, [resolvedChatUnreadByUser]);
7183
7465
  const visibleChatUnreadCount = resolvedChatUnreadCount;
7184
- const firstUnreadChatUserId = useMemo7(
7466
+ const firstUnreadChatUserId = useMemo8(
7185
7467
  () => {
7186
7468
  var _a75, _b7;
7187
7469
  return (_b7 = (_a75 = filteredAndSortedChatUsers.find((user) => {
@@ -7281,7 +7563,7 @@ var UserMenuCupcode = ({
7281
7563
  setShowJumpToLatestMessage(false);
7282
7564
  setPendingLatestMessagesCount(0);
7283
7565
  }, [prefersReducedMotion, scrollChatMessagesToBottom]);
7284
- const reactionsByMessageId = useMemo7(() => {
7566
+ const reactionsByMessageId = useMemo8(() => {
7285
7567
  const grouped = /* @__PURE__ */ new Map();
7286
7568
  resolvedAllChatReactions.forEach((reaction) => {
7287
7569
  var _a75, _b7;
@@ -7682,20 +7964,20 @@ var UserMenuCupcode = ({
7682
7964
  openChatPanel,
7683
7965
  resolvedAllChatMessages
7684
7966
  ]);
7685
- const activeChatUser = useMemo7(
7967
+ const activeChatUser = useMemo8(
7686
7968
  () => {
7687
7969
  var _a75;
7688
7970
  return (_a75 = chatUsersList.find((user) => user.id === activeChatUserId)) != null ? _a75 : null;
7689
7971
  },
7690
7972
  [activeChatUserId, chatUsersList]
7691
7973
  );
7692
- const activeGroupMembers = useMemo7(() => {
7974
+ const activeGroupMembers = useMemo8(() => {
7693
7975
  var _a75;
7694
7976
  if (!(activeChatUser == null ? void 0 : activeChatUser.isGroup) || !((_a75 = activeChatUser.memberIds) == null ? void 0 : _a75.length)) return [];
7695
7977
  const members = activeChatUser.memberIds.map((memberId) => baseChatUsersList.find((user) => user.id === memberId)).filter((member) => Boolean(member));
7696
7978
  return members;
7697
7979
  }, [activeChatUser, baseChatUsersList]);
7698
- const activeChatMessages = useMemo7(() => {
7980
+ const activeChatMessages = useMemo8(() => {
7699
7981
  if (!activeChatUser) return [];
7700
7982
  return [...resolvedAllChatMessages].filter((message) => message.contactId === activeChatUser.id).sort((left, right) => {
7701
7983
  const leftTimestamp = getChatMessageTimestamp(left);
@@ -7704,11 +7986,11 @@ var UserMenuCupcode = ({
7704
7986
  return left.id.localeCompare(right.id);
7705
7987
  });
7706
7988
  }, [activeChatUser, resolvedAllChatMessages]);
7707
- const activeSharedFiles = useMemo7(() => extractSharedFilesFromMessages(activeChatMessages), [activeChatMessages]);
7708
- const activeChatMessagesMap = useMemo7(() => {
7989
+ const activeSharedFiles = useMemo8(() => extractSharedFilesFromMessages(activeChatMessages), [activeChatMessages]);
7990
+ const activeChatMessagesMap = useMemo8(() => {
7709
7991
  return new Map(activeChatMessages.map((message) => [message.id, message]));
7710
7992
  }, [activeChatMessages]);
7711
- const activeChatTimeline = useMemo7(() => {
7993
+ const activeChatTimeline = useMemo8(() => {
7712
7994
  const items = [];
7713
7995
  activeChatMessages.forEach((message, index) => {
7714
7996
  const dayKey = getChatDayKey(message);
@@ -7774,7 +8056,7 @@ var UserMenuCupcode = ({
7774
8056
  setShowJumpToLatestMessage(true);
7775
8057
  setPendingLatestMessagesCount((current) => Math.min(999, current + incomingMessagesCount));
7776
8058
  }, [activeChatMessages, activeChatUser == null ? void 0 : activeChatUser.id, activeTab, open, prefersReducedMotion, scrollChatMessagesToBottom]);
7777
- const activeConversationLogs = useMemo7(() => {
8059
+ const activeConversationLogs = useMemo8(() => {
7778
8060
  if (!activeChatUser || !resolvedChatLogs.length) return [];
7779
8061
  return resolvedChatLogs.filter((entry) => entry.contactId === activeChatUser.id).sort((left, right) => {
7780
8062
  const leftTs = left.createdAt ? new Date(left.createdAt).getTime() : 0;
@@ -7783,7 +8065,7 @@ var UserMenuCupcode = ({
7783
8065
  return left.id.localeCompare(right.id);
7784
8066
  });
7785
8067
  }, [activeChatUser, resolvedChatLogs]);
7786
- const replyToMessage = useMemo7(() => {
8068
+ const replyToMessage = useMemo8(() => {
7787
8069
  var _a75;
7788
8070
  if (!replyToMessageId) return null;
7789
8071
  return (_a75 = activeChatMessagesMap.get(replyToMessageId)) != null ? _a75 : null;
@@ -10098,6 +10380,28 @@ var UserMenuCupcode = ({
10098
10380
  ]
10099
10381
  }
10100
10382
  )
10383
+ ] }),
10384
+ /* @__PURE__ */ jsxs27("div", { className: cn(settingsCardClassName, "space-y-2.5"), children: [
10385
+ /* @__PURE__ */ jsxs27("div", { children: [
10386
+ /* @__PURE__ */ jsx42("p", { className: "text-xs font-semibold text-foreground", children: "Vers\xE3o do app" }),
10387
+ /* @__PURE__ */ jsx42("p", { className: "mt-1 text-[11px] leading-relaxed text-muted-foreground", children: "Vers\xE3o do aplicativo atual que est\xE1 exibindo este menu." })
10388
+ ] }),
10389
+ /* @__PURE__ */ jsxs27(
10390
+ "div",
10391
+ {
10392
+ className: cn(
10393
+ "flex items-center justify-between gap-2 rounded-xl border bg-background/45 px-3 py-2",
10394
+ isHighContrastEnabled ? "border-foreground/40" : "border-border/70"
10395
+ ),
10396
+ children: [
10397
+ /* @__PURE__ */ jsxs27("span", { className: "inline-flex items-center gap-1.5 text-xs font-semibold text-foreground", children: [
10398
+ /* @__PURE__ */ jsx42(Info, { className: "h-3.5 w-3.5 text-primary" }),
10399
+ "Vers\xE3o atual"
10400
+ ] }),
10401
+ /* @__PURE__ */ jsx42("span", { className: "rounded-md border border-border/70 bg-background/60 px-2 py-1 text-[10px] font-semibold text-foreground", children: appVersionLabel })
10402
+ ]
10403
+ }
10404
+ )
10101
10405
  ] })
10102
10406
  ] });
10103
10407
  }
@@ -22091,7 +22395,7 @@ function getSupabasePublic() {
22091
22395
  }
22092
22396
 
22093
22397
  // src/components/ui/sonner.tsx
22094
- import * as React28 from "react";
22398
+ import * as React27 from "react";
22095
22399
  import { Toaster as Sonner, toast as toast2 } from "sonner";
22096
22400
  import { jsx as jsx44 } from "react/jsx-runtime";
22097
22401
  function resolveDocumentTheme() {
@@ -22104,8 +22408,8 @@ function resolveDocumentTheme() {
22104
22408
  return "light";
22105
22409
  }
22106
22410
  var Toaster = ({ theme, ...props }) => {
22107
- const [resolvedTheme, setResolvedTheme] = React28.useState(() => theme != null ? theme : "system");
22108
- React28.useEffect(() => {
22411
+ const [resolvedTheme, setResolvedTheme] = React27.useState(() => theme != null ? theme : "system");
22412
+ React27.useEffect(() => {
22109
22413
  if (typeof theme !== "undefined") return;
22110
22414
  const syncTheme = () => setResolvedTheme(resolveDocumentTheme());
22111
22415
  syncTheme();
@@ -22807,7 +23111,8 @@ var MainNavbar = ({
22807
23111
  onPresenceStatusChange,
22808
23112
  onLogoutClick,
22809
23113
  onOpenAccountClick,
22810
- getAccessToken
23114
+ getAccessToken,
23115
+ appVersion
22811
23116
  }) => {
22812
23117
  var _a74, _b7, _c;
22813
23118
  const [chatUsers, setChatUsers] = useState13([]);
@@ -22834,28 +23139,28 @@ var MainNavbar = ({
22834
23139
  chatFeatureFlagsRef.current = nextFlags;
22835
23140
  persistChatFeatureFlags(nextFlags);
22836
23141
  }, []);
22837
- const currentPathname = useMemo8(() => {
23142
+ const currentPathname = useMemo9(() => {
22838
23143
  if (pathname && pathname.trim() !== "") return pathname;
22839
23144
  if (typeof window !== "undefined") return window.location.pathname || "/";
22840
23145
  return "/";
22841
23146
  }, [pathname]);
22842
- const currentUserId = useMemo8(() => {
23147
+ const currentUserId = useMemo9(() => {
22843
23148
  var _a75;
22844
23149
  return (_a75 = resolveCurrentUserId(authUser)) != null ? _a75 : tokenDerivedUserId;
22845
23150
  }, [authUser, tokenDerivedUserId]);
22846
- const authEmail = useMemo8(
23151
+ const authEmail = useMemo9(
22847
23152
  () => {
22848
23153
  var _a75, _b8;
22849
23154
  return (_b8 = (_a75 = toStringOrUndefined(authUser == null ? void 0 : authUser.email)) == null ? void 0 : _a75.toLowerCase()) != null ? _b8 : tokenDerivedEmail;
22850
23155
  },
22851
23156
  [authUser == null ? void 0 : authUser.email, tokenDerivedEmail]
22852
23157
  );
22853
- const isChatSuperAdmin = useMemo8(() => {
23158
+ const isChatSuperAdmin = useMemo9(() => {
22854
23159
  var _a75, _b8;
22855
23160
  const roleTokens = `${(_a75 = authUser == null ? void 0 : authUser.role) != null ? _a75 : ""} ${(_b8 = authUser == null ? void 0 : authUser.jobTitle) != null ? _b8 : ""}`.toLowerCase();
22856
23161
  return roleTokens.includes("superadmin") || roleTokens.includes("super admin");
22857
23162
  }, [authUser == null ? void 0 : authUser.jobTitle, authUser == null ? void 0 : authUser.role]);
22858
- const resolvedTelescupBaseUrl = useMemo8(() => {
23163
+ const resolvedTelescupBaseUrl = useMemo9(() => {
22859
23164
  if (TELESCUP_BASE_URL) {
22860
23165
  return TELESCUP_BASE_URL;
22861
23166
  }
@@ -22871,7 +23176,7 @@ var MainNavbar = ({
22871
23176
  return false;
22872
23177
  }
22873
23178
  })();
22874
- const resolvedAuthStatus = useMemo8(() => {
23179
+ const resolvedAuthStatus = useMemo9(() => {
22875
23180
  if (authStatus) return authStatus;
22876
23181
  if ((authUser == null ? void 0 : authUser.sub) || (authUser == null ? void 0 : authUser.id) || (authUser == null ? void 0 : authUser.userId) || (authUser == null ? void 0 : authUser.email)) {
22877
23182
  return "authenticated";
@@ -23585,7 +23890,7 @@ var MainNavbar = ({
23585
23890
  void supabase.removeChannel(presenceChannel);
23586
23891
  };
23587
23892
  }, [effectiveCurrentUserId, isAuthenticated, isChatSuperAdmin]);
23588
- const chatUnreadByUser = useMemo8(() => {
23893
+ const chatUnreadByUser = useMemo9(() => {
23589
23894
  const counters = {};
23590
23895
  chatMessages.forEach((message) => {
23591
23896
  var _a75;
@@ -23595,7 +23900,7 @@ var MainNavbar = ({
23595
23900
  });
23596
23901
  return counters;
23597
23902
  }, [chatMessages]);
23598
- const chatUnreadCount = useMemo8(() => {
23903
+ const chatUnreadCount = useMemo9(() => {
23599
23904
  return Object.values(chatUnreadByUser).reduce((total, count2) => total + count2, 0);
23600
23905
  }, [chatUnreadByUser]);
23601
23906
  const handleChatMarkConversationRead = useCallback6(
@@ -24023,7 +24328,7 @@ var MainNavbar = ({
24023
24328
  },
24024
24329
  [effectiveCurrentUserId, updateChatFeatureFlags]
24025
24330
  );
24026
- const items = useMemo8(() => {
24331
+ const items = useMemo9(() => {
24027
24332
  const normalizedPathname = currentPathname === "" ? "/" : currentPathname;
24028
24333
  return getMainNavItems().map((item) => {
24029
24334
  const isAnchor = item.href.startsWith("#");
@@ -24336,7 +24641,8 @@ var MainNavbar = ({
24336
24641
  recentActivity: accountsRecentActivity,
24337
24642
  isRecentActivityLoading: isAccountsActivityLoading,
24338
24643
  telescupBaseUrl: resolvedTelescupBaseUrl,
24339
- getTelescupAccessToken
24644
+ getTelescupAccessToken,
24645
+ appVersion
24340
24646
  }
24341
24647
  ) })
24342
24648
  }
@@ -24495,10 +24801,10 @@ function PricingCard({
24495
24801
  }
24496
24802
 
24497
24803
  // src/components/cupcode/ProgressCupcode.tsx
24498
- import * as React29 from "react";
24804
+ import * as React28 from "react";
24499
24805
  import * as ProgressPrimitive2 from "@radix-ui/react-progress";
24500
24806
  import { jsx as jsx48, jsxs as jsxs30 } from "react/jsx-runtime";
24501
- var ProgressCupcode = React29.forwardRef(({ className, value, variant = "default", showLabel = false, size = "md", ...props }, ref) => {
24807
+ var ProgressCupcode = React28.forwardRef(({ className, value, variant = "default", showLabel = false, size = "md", ...props }, ref) => {
24502
24808
  const sizeClasses2 = {
24503
24809
  sm: "h-2",
24504
24810
  md: "h-3",
@@ -24546,7 +24852,7 @@ var ProgressCupcode = React29.forwardRef(({ className, value, variant = "default
24546
24852
  ProgressCupcode.displayName = "ProgressCupcode";
24547
24853
 
24548
24854
  // src/components/cupcode/ScrollbarTheme.tsx
24549
- import * as React30 from "react";
24855
+ import * as React29 from "react";
24550
24856
  import { jsx as jsx49 } from "react/jsx-runtime";
24551
24857
  var SCROLLBAR_COLOR_ATTR = "data-cc-scrollbar-color";
24552
24858
  var SCROLLBAR_THEME_ATTR = "data-cc-scrollbar-theme";
@@ -24554,7 +24860,7 @@ var ScrollbarThemeProvider = ({
24554
24860
  color = "purple",
24555
24861
  theme = "auto"
24556
24862
  }) => {
24557
- React30.useEffect(() => {
24863
+ React29.useEffect(() => {
24558
24864
  if (typeof document === "undefined") return;
24559
24865
  const root = document.documentElement;
24560
24866
  const previousColor = root.getAttribute(SCROLLBAR_COLOR_ATTR);
@@ -24585,7 +24891,7 @@ var ScrollbarThemeProvider = ({
24585
24891
  }, [color, theme]);
24586
24892
  return null;
24587
24893
  };
24588
- var ScrollbarArea = React30.forwardRef(
24894
+ var ScrollbarArea = React29.forwardRef(
24589
24895
  ({ color = "purple", theme = "auto", className, ...props }, ref) => /* @__PURE__ */ jsx49(
24590
24896
  "div",
24591
24897
  {
@@ -24604,14 +24910,14 @@ var ScrollbarArea = React30.forwardRef(
24604
24910
  ScrollbarArea.displayName = "ScrollbarArea";
24605
24911
 
24606
24912
  // src/components/cupcode/SelectField.tsx
24607
- import * as React31 from "react";
24913
+ import * as React30 from "react";
24608
24914
  import * as SelectPrimitive2 from "@radix-ui/react-select";
24609
24915
  import { Check as Check5, ChevronDown as ChevronDown4 } from "lucide-react";
24610
24916
  import { jsx as jsx50, jsxs as jsxs31 } from "react/jsx-runtime";
24611
24917
  var Select2 = SelectPrimitive2.Root;
24612
24918
  var SelectGroup2 = SelectPrimitive2.Group;
24613
24919
  var SelectValue2 = SelectPrimitive2.Value;
24614
- var SelectTrigger2 = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs31(
24920
+ var SelectTrigger2 = React30.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs31(
24615
24921
  SelectPrimitive2.Trigger,
24616
24922
  {
24617
24923
  ref,
@@ -24634,7 +24940,7 @@ var SelectTrigger2 = React31.forwardRef(({ className, children, ...props }, ref)
24634
24940
  }
24635
24941
  ));
24636
24942
  SelectTrigger2.displayName = SelectPrimitive2.Trigger.displayName;
24637
- var SelectContent2 = React31.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx50(SelectPrimitive2.Portal, { children: /* @__PURE__ */ jsx50(
24943
+ var SelectContent2 = React30.forwardRef(({ className, children, position = "popper", ...props }, ref) => /* @__PURE__ */ jsx50(SelectPrimitive2.Portal, { children: /* @__PURE__ */ jsx50(
24638
24944
  SelectPrimitive2.Content,
24639
24945
  {
24640
24946
  ref,
@@ -24664,7 +24970,7 @@ var SelectContent2 = React31.forwardRef(({ className, children, position = "popp
24664
24970
  }
24665
24971
  ) }));
24666
24972
  SelectContent2.displayName = SelectPrimitive2.Content.displayName;
24667
- var SelectItem2 = React31.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs31(
24973
+ var SelectItem2 = React30.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs31(
24668
24974
  SelectPrimitive2.Item,
24669
24975
  {
24670
24976
  ref,
@@ -24703,10 +25009,10 @@ var SelectField = ({
24703
25009
  };
24704
25010
 
24705
25011
  // src/components/cupcode/SwitchField.tsx
24706
- import * as React32 from "react";
25012
+ import * as React31 from "react";
24707
25013
  import * as SwitchPrimitives2 from "@radix-ui/react-switch";
24708
25014
  import { jsx as jsx51, jsxs as jsxs32 } from "react/jsx-runtime";
24709
- var Switch2 = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx51(
25015
+ var Switch2 = React31.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx51(
24710
25016
  SwitchPrimitives2.Root,
24711
25017
  {
24712
25018
  className: cn(
@@ -24747,11 +25053,11 @@ var SwitchField = ({ label, description, ...props }) => {
24747
25053
  };
24748
25054
 
24749
25055
  // src/components/cupcode/TabsCupcode.tsx
24750
- import * as React33 from "react";
25056
+ import * as React32 from "react";
24751
25057
  import * as TabsPrimitive2 from "@radix-ui/react-tabs";
24752
25058
  import { jsx as jsx52 } from "react/jsx-runtime";
24753
25059
  var Tabs2 = TabsPrimitive2.Root;
24754
- var TabsList2 = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx52(
25060
+ var TabsList2 = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx52(
24755
25061
  TabsPrimitive2.List,
24756
25062
  {
24757
25063
  ref,
@@ -24764,7 +25070,7 @@ var TabsList2 = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE_
24764
25070
  }
24765
25071
  ));
24766
25072
  TabsList2.displayName = TabsPrimitive2.List.displayName;
24767
- var TabsTrigger2 = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx52(
25073
+ var TabsTrigger2 = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx52(
24768
25074
  TabsPrimitive2.Trigger,
24769
25075
  {
24770
25076
  ref,
@@ -24786,7 +25092,7 @@ var TabsTrigger2 = React33.forwardRef(({ className, ...props }, ref) => /* @__PU
24786
25092
  }
24787
25093
  ));
24788
25094
  TabsTrigger2.displayName = TabsPrimitive2.Trigger.displayName;
24789
- var TabsContent2 = React33.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx52(
25095
+ var TabsContent2 = React32.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx52(
24790
25096
  TabsPrimitive2.Content,
24791
25097
  {
24792
25098
  ref,
@@ -24802,9 +25108,9 @@ var TabsContent2 = React33.forwardRef(({ className, ...props }, ref) => /* @__PU
24802
25108
  TabsContent2.displayName = TabsPrimitive2.Content.displayName;
24803
25109
 
24804
25110
  // src/components/cupcode/TextareaField.tsx
24805
- import * as React34 from "react";
25111
+ import * as React33 from "react";
24806
25112
  import { jsx as jsx53, jsxs as jsxs33 } from "react/jsx-runtime";
24807
- var TextareaField = React34.forwardRef(
25113
+ var TextareaField = React33.forwardRef(
24808
25114
  ({ className, label, error, ...props }, ref) => {
24809
25115
  return /* @__PURE__ */ jsxs33("div", { className: "cc-stack space-2 w-full", children: [
24810
25116
  label && /* @__PURE__ */ jsx53("label", { className: "text-sm font-semibold text-cupcode-ink", children: label }),
@@ -24835,7 +25141,7 @@ var TextareaField = React34.forwardRef(
24835
25141
  TextareaField.displayName = "TextareaField";
24836
25142
 
24837
25143
  // src/components/cupcode/ThemeToggle.tsx
24838
- import * as React35 from "react";
25144
+ import * as React34 from "react";
24839
25145
  import { Moon as Moon2, Sun as Sun2 } from "lucide-react";
24840
25146
  import { jsx as jsx54, jsxs as jsxs34 } from "react/jsx-runtime";
24841
25147
  var THEME_STORAGE_KEY2 = "cupcode-theme";
@@ -24884,22 +25190,22 @@ var ThemeToggle = ({
24884
25190
  onThemeChange
24885
25191
  }) => {
24886
25192
  var _a74;
24887
- const [mounted, setMounted] = React35.useState(false);
24888
- const [internalTheme, setInternalTheme] = React35.useState(defaultTheme);
25193
+ const [mounted, setMounted] = React34.useState(false);
25194
+ const [internalTheme, setInternalTheme] = React34.useState(defaultTheme);
24889
25195
  const isControlled = typeof theme !== "undefined";
24890
25196
  const activeTheme = (_a74 = isControlled ? theme : internalTheme) != null ? _a74 : defaultTheme;
24891
- React35.useEffect(() => {
25197
+ React34.useEffect(() => {
24892
25198
  if (!isControlled) {
24893
25199
  setInternalTheme(resolveTheme(defaultTheme));
24894
25200
  }
24895
25201
  setMounted(true);
24896
25202
  }, [defaultTheme, isControlled]);
24897
- React35.useEffect(() => {
25203
+ React34.useEffect(() => {
24898
25204
  if (!mounted) return;
24899
25205
  applyThemeClass(activeTheme);
24900
25206
  writeStoredTheme(activeTheme);
24901
25207
  }, [activeTheme, mounted]);
24902
- React35.useEffect(() => {
25208
+ React34.useEffect(() => {
24903
25209
  if (isControlled || typeof document === "undefined") return;
24904
25210
  const observer = new MutationObserver(() => {
24905
25211
  const resolvedTheme = resolveTheme(defaultTheme);
@@ -25067,13 +25373,13 @@ var ToastCupcode = ({
25067
25373
  };
25068
25374
 
25069
25375
  // src/components/cupcode/TooltipCupcode.tsx
25070
- import * as React36 from "react";
25376
+ import * as React35 from "react";
25071
25377
  import * as TooltipPrimitive2 from "@radix-ui/react-tooltip";
25072
25378
  import { jsx as jsx57 } from "react/jsx-runtime";
25073
25379
  var TooltipProvider2 = TooltipPrimitive2.Provider;
25074
25380
  var TooltipCupcode = TooltipPrimitive2.Root;
25075
25381
  var TooltipTrigger2 = TooltipPrimitive2.Trigger;
25076
- var TooltipContent2 = React36.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx57(
25382
+ var TooltipContent2 = React35.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx57(
25077
25383
  TooltipPrimitive2.Content,
25078
25384
  {
25079
25385
  ref,
@@ -25094,14 +25400,14 @@ var TooltipContent2 = React36.forwardRef(({ className, sideOffset = 4, ...props
25094
25400
  TooltipContent2.displayName = TooltipPrimitive2.Content.displayName;
25095
25401
 
25096
25402
  // src/components/ui/accordion.tsx
25097
- import * as React37 from "react";
25403
+ import * as React36 from "react";
25098
25404
  import * as AccordionPrimitive2 from "@radix-ui/react-accordion";
25099
25405
  import { ChevronDown as ChevronDown5 } from "lucide-react";
25100
25406
  import { jsx as jsx58, jsxs as jsxs37 } from "react/jsx-runtime";
25101
25407
  var Accordion = AccordionPrimitive2.Root;
25102
- var AccordionItem2 = React37.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx58(AccordionPrimitive2.Item, { ref, className: cn("border-b", className), ...props }));
25408
+ var AccordionItem2 = React36.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx58(AccordionPrimitive2.Item, { ref, className: cn("border-b", className), ...props }));
25103
25409
  AccordionItem2.displayName = "AccordionItem";
25104
- var AccordionTrigger2 = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx58(AccordionPrimitive2.Header, { className: "flex", children: /* @__PURE__ */ jsxs37(
25410
+ var AccordionTrigger2 = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx58(AccordionPrimitive2.Header, { className: "flex", children: /* @__PURE__ */ jsxs37(
25105
25411
  AccordionPrimitive2.Trigger,
25106
25412
  {
25107
25413
  ref,
@@ -25117,7 +25423,7 @@ var AccordionTrigger2 = React37.forwardRef(({ className, children, ...props }, r
25117
25423
  }
25118
25424
  ) }));
25119
25425
  AccordionTrigger2.displayName = AccordionPrimitive2.Trigger.displayName;
25120
- var AccordionContent2 = React37.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx58(
25426
+ var AccordionContent2 = React36.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsx58(
25121
25427
  AccordionPrimitive2.Content,
25122
25428
  {
25123
25429
  ref,
@@ -25129,7 +25435,7 @@ var AccordionContent2 = React37.forwardRef(({ className, children, ...props }, r
25129
25435
  AccordionContent2.displayName = AccordionPrimitive2.Content.displayName;
25130
25436
 
25131
25437
  // src/components/ui/alert.tsx
25132
- import * as React38 from "react";
25438
+ import * as React37 from "react";
25133
25439
  import { cva as cva3 } from "class-variance-authority";
25134
25440
  import { jsx as jsx59 } from "react/jsx-runtime";
25135
25441
  var alertVariants = cva3(
@@ -25146,13 +25452,13 @@ var alertVariants = cva3(
25146
25452
  }
25147
25453
  }
25148
25454
  );
25149
- var Alert = React38.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx59("div", { ref, role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
25455
+ var Alert = React37.forwardRef(({ className, variant, ...props }, ref) => /* @__PURE__ */ jsx59("div", { ref, role: "alert", className: cn(alertVariants({ variant }), className), ...props }));
25150
25456
  Alert.displayName = "Alert";
25151
- var AlertTitle = React38.forwardRef(
25457
+ var AlertTitle = React37.forwardRef(
25152
25458
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx59("h5", { ref, className: cn("mb-1 font-medium leading-none tracking-tight", className), ...props })
25153
25459
  );
25154
25460
  AlertTitle.displayName = "AlertTitle";
25155
- var AlertDescription = React38.forwardRef(
25461
+ var AlertDescription = React37.forwardRef(
25156
25462
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx59("div", { ref, className: cn("text-sm [&_p]:leading-relaxed", className), ...props })
25157
25463
  );
25158
25464
  AlertDescription.displayName = "AlertDescription";
@@ -25162,13 +25468,13 @@ import * as AspectRatioPrimitive from "@radix-ui/react-aspect-ratio";
25162
25468
  var AspectRatio = AspectRatioPrimitive.Root;
25163
25469
 
25164
25470
  // src/components/ui/breadcrumb.tsx
25165
- import * as React39 from "react";
25471
+ import * as React38 from "react";
25166
25472
  import { Slot as Slot2 } from "@radix-ui/react-slot";
25167
25473
  import { ChevronRight as ChevronRight2, MoreHorizontal } from "lucide-react";
25168
25474
  import { jsx as jsx60, jsxs as jsxs38 } from "react/jsx-runtime";
25169
- var Breadcrumb = React39.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx60("nav", { ref, "aria-label": "breadcrumb", ...props }));
25475
+ var Breadcrumb = React38.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx60("nav", { ref, "aria-label": "breadcrumb", ...props }));
25170
25476
  Breadcrumb.displayName = "Breadcrumb";
25171
- var BreadcrumbList = React39.forwardRef(
25477
+ var BreadcrumbList = React38.forwardRef(
25172
25478
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx60(
25173
25479
  "ol",
25174
25480
  {
@@ -25182,16 +25488,16 @@ var BreadcrumbList = React39.forwardRef(
25182
25488
  )
25183
25489
  );
25184
25490
  BreadcrumbList.displayName = "BreadcrumbList";
25185
- var BreadcrumbItem = React39.forwardRef(
25491
+ var BreadcrumbItem = React38.forwardRef(
25186
25492
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx60("li", { ref, className: cn("inline-flex items-center gap-1.5", className), ...props })
25187
25493
  );
25188
25494
  BreadcrumbItem.displayName = "BreadcrumbItem";
25189
- var BreadcrumbLink = React39.forwardRef(({ asChild, className, ...props }, ref) => {
25495
+ var BreadcrumbLink = React38.forwardRef(({ asChild, className, ...props }, ref) => {
25190
25496
  const Comp = asChild ? Slot2 : "a";
25191
25497
  return /* @__PURE__ */ jsx60(Comp, { ref, className: cn("transition-colors hover:text-foreground", className), ...props });
25192
25498
  });
25193
25499
  BreadcrumbLink.displayName = "BreadcrumbLink";
25194
- var BreadcrumbPage = React39.forwardRef(
25500
+ var BreadcrumbPage = React38.forwardRef(
25195
25501
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx60(
25196
25502
  "span",
25197
25503
  {
@@ -25274,45 +25580,45 @@ function Calendar({ className, classNames, showOutsideDays = true, ...props }) {
25274
25580
  Calendar.displayName = "Calendar";
25275
25581
 
25276
25582
  // src/components/ui/card.tsx
25277
- import * as React40 from "react";
25583
+ import * as React39 from "react";
25278
25584
  import { jsx as jsx62 } from "react/jsx-runtime";
25279
- var Card = React40.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx62("div", { ref, className: cn("rounded-lg border bg-card text-card-foreground shadow-sm", className), ...props }));
25585
+ var Card = React39.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx62("div", { ref, className: cn("rounded-lg border bg-card text-card-foreground shadow-sm", className), ...props }));
25280
25586
  Card.displayName = "Card";
25281
- var CardHeader = React40.forwardRef(
25587
+ var CardHeader = React39.forwardRef(
25282
25588
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx62("div", { ref, className: cn("flex flex-col space-y-1.5 p-6", className), ...props })
25283
25589
  );
25284
25590
  CardHeader.displayName = "CardHeader";
25285
- var CardTitle = React40.forwardRef(
25591
+ var CardTitle = React39.forwardRef(
25286
25592
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx62("h3", { ref, className: cn("text-2xl font-semibold leading-none tracking-tight", className), ...props })
25287
25593
  );
25288
25594
  CardTitle.displayName = "CardTitle";
25289
- var CardDescription = React40.forwardRef(
25595
+ var CardDescription = React39.forwardRef(
25290
25596
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx62("p", { ref, className: cn("text-sm text-muted-foreground", className), ...props })
25291
25597
  );
25292
25598
  CardDescription.displayName = "CardDescription";
25293
- var CardContent = React40.forwardRef(
25599
+ var CardContent = React39.forwardRef(
25294
25600
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx62("div", { ref, className: cn("p-6 pt-0", className), ...props })
25295
25601
  );
25296
25602
  CardContent.displayName = "CardContent";
25297
- var CardFooter = React40.forwardRef(
25603
+ var CardFooter = React39.forwardRef(
25298
25604
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx62("div", { ref, className: cn("flex items-center p-6 pt-0", className), ...props })
25299
25605
  );
25300
25606
  CardFooter.displayName = "CardFooter";
25301
25607
 
25302
25608
  // src/components/ui/carousel.tsx
25303
- import * as React41 from "react";
25609
+ import * as React40 from "react";
25304
25610
  import useEmblaCarousel from "embla-carousel-react";
25305
25611
  import { ArrowLeft, ArrowRight } from "lucide-react";
25306
25612
  import { jsx as jsx63, jsxs as jsxs39 } from "react/jsx-runtime";
25307
- var CarouselContext = React41.createContext(null);
25613
+ var CarouselContext = React40.createContext(null);
25308
25614
  function useCarousel() {
25309
- const context = React41.useContext(CarouselContext);
25615
+ const context = React40.useContext(CarouselContext);
25310
25616
  if (!context) {
25311
25617
  throw new Error("useCarousel must be used within a <Carousel />");
25312
25618
  }
25313
25619
  return context;
25314
25620
  }
25315
- var Carousel = React41.forwardRef(
25621
+ var Carousel = React40.forwardRef(
25316
25622
  ({ orientation = "horizontal", opts, setApi, plugins, className, children, ...props }, ref) => {
25317
25623
  const [carouselRef, api] = useEmblaCarousel(
25318
25624
  {
@@ -25321,22 +25627,22 @@ var Carousel = React41.forwardRef(
25321
25627
  },
25322
25628
  plugins
25323
25629
  );
25324
- const [canScrollPrev, setCanScrollPrev] = React41.useState(false);
25325
- const [canScrollNext, setCanScrollNext] = React41.useState(false);
25326
- const onSelect = React41.useCallback((api2) => {
25630
+ const [canScrollPrev, setCanScrollPrev] = React40.useState(false);
25631
+ const [canScrollNext, setCanScrollNext] = React40.useState(false);
25632
+ const onSelect = React40.useCallback((api2) => {
25327
25633
  if (!api2) {
25328
25634
  return;
25329
25635
  }
25330
25636
  setCanScrollPrev(api2.canScrollPrev());
25331
25637
  setCanScrollNext(api2.canScrollNext());
25332
25638
  }, []);
25333
- const scrollPrev = React41.useCallback(() => {
25639
+ const scrollPrev = React40.useCallback(() => {
25334
25640
  api == null ? void 0 : api.scrollPrev();
25335
25641
  }, [api]);
25336
- const scrollNext = React41.useCallback(() => {
25642
+ const scrollNext = React40.useCallback(() => {
25337
25643
  api == null ? void 0 : api.scrollNext();
25338
25644
  }, [api]);
25339
- const handleKeyDown = React41.useCallback(
25645
+ const handleKeyDown = React40.useCallback(
25340
25646
  (event) => {
25341
25647
  if (event.key === "ArrowLeft") {
25342
25648
  event.preventDefault();
@@ -25348,13 +25654,13 @@ var Carousel = React41.forwardRef(
25348
25654
  },
25349
25655
  [scrollPrev, scrollNext]
25350
25656
  );
25351
- React41.useEffect(() => {
25657
+ React40.useEffect(() => {
25352
25658
  if (!api || !setApi) {
25353
25659
  return;
25354
25660
  }
25355
25661
  setApi(api);
25356
25662
  }, [api, setApi]);
25357
- React41.useEffect(() => {
25663
+ React40.useEffect(() => {
25358
25664
  if (!api) {
25359
25665
  return;
25360
25666
  }
@@ -25395,7 +25701,7 @@ var Carousel = React41.forwardRef(
25395
25701
  }
25396
25702
  );
25397
25703
  Carousel.displayName = "Carousel";
25398
- var CarouselContent = React41.forwardRef(
25704
+ var CarouselContent = React40.forwardRef(
25399
25705
  ({ className, ...props }, ref) => {
25400
25706
  const { carouselRef, orientation } = useCarousel();
25401
25707
  return /* @__PURE__ */ jsx63("div", { ref: carouselRef, className: "overflow-hidden", children: /* @__PURE__ */ jsx63(
@@ -25409,7 +25715,7 @@ var CarouselContent = React41.forwardRef(
25409
25715
  }
25410
25716
  );
25411
25717
  CarouselContent.displayName = "CarouselContent";
25412
- var CarouselItem = React41.forwardRef(
25718
+ var CarouselItem = React40.forwardRef(
25413
25719
  ({ className, ...props }, ref) => {
25414
25720
  const { orientation } = useCarousel();
25415
25721
  return /* @__PURE__ */ jsx63(
@@ -25425,7 +25731,7 @@ var CarouselItem = React41.forwardRef(
25425
25731
  }
25426
25732
  );
25427
25733
  CarouselItem.displayName = "CarouselItem";
25428
- var CarouselPrevious = React41.forwardRef(
25734
+ var CarouselPrevious = React40.forwardRef(
25429
25735
  ({ className, variant = "outline", size = "icon", ...props }, ref) => {
25430
25736
  const { orientation, scrollPrev, canScrollPrev } = useCarousel();
25431
25737
  return /* @__PURE__ */ jsxs39(
@@ -25451,7 +25757,7 @@ var CarouselPrevious = React41.forwardRef(
25451
25757
  }
25452
25758
  );
25453
25759
  CarouselPrevious.displayName = "CarouselPrevious";
25454
- var CarouselNext = React41.forwardRef(
25760
+ var CarouselNext = React40.forwardRef(
25455
25761
  ({ className, variant = "outline", size = "icon", ...props }, ref) => {
25456
25762
  const { orientation, scrollNext, canScrollNext } = useCarousel();
25457
25763
  return /* @__PURE__ */ jsxs39(
@@ -25479,20 +25785,20 @@ var CarouselNext = React41.forwardRef(
25479
25785
  CarouselNext.displayName = "CarouselNext";
25480
25786
 
25481
25787
  // src/components/ui/chart.tsx
25482
- import * as React42 from "react";
25788
+ import * as React41 from "react";
25483
25789
  import * as RechartsPrimitive from "recharts";
25484
25790
  import { Fragment as Fragment5, jsx as jsx64, jsxs as jsxs40 } from "react/jsx-runtime";
25485
25791
  var THEMES = { light: "", dark: ".dark" };
25486
- var ChartContext = React42.createContext(null);
25792
+ var ChartContext = React41.createContext(null);
25487
25793
  function useChart() {
25488
- const context = React42.useContext(ChartContext);
25794
+ const context = React41.useContext(ChartContext);
25489
25795
  if (!context) {
25490
25796
  throw new Error("useChart must be used within a <ChartContainer />");
25491
25797
  }
25492
25798
  return context;
25493
25799
  }
25494
- var ChartContainer = React42.forwardRef(({ id, className, children, config, ...props }, ref) => {
25495
- const uniqueId = React42.useId();
25800
+ var ChartContainer = React41.forwardRef(({ id, className, children, config, ...props }, ref) => {
25801
+ const uniqueId = React41.useId();
25496
25802
  const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
25497
25803
  return /* @__PURE__ */ jsx64(ChartContext.Provider, { value: { config }, children: /* @__PURE__ */ jsxs40(
25498
25804
  "div",
@@ -25537,7 +25843,7 @@ ${colorConfig.map(([key, itemConfig]) => {
25537
25843
  );
25538
25844
  };
25539
25845
  var ChartTooltip = RechartsPrimitive.Tooltip;
25540
- var ChartTooltipContent = React42.forwardRef(
25846
+ var ChartTooltipContent = React41.forwardRef(
25541
25847
  ({
25542
25848
  active,
25543
25849
  payload,
@@ -25554,7 +25860,7 @@ var ChartTooltipContent = React42.forwardRef(
25554
25860
  labelKey
25555
25861
  }, ref) => {
25556
25862
  const { config } = useChart();
25557
- const tooltipLabel = React42.useMemo(() => {
25863
+ const tooltipLabel = React41.useMemo(() => {
25558
25864
  var _a74;
25559
25865
  if (hideLabel || !(payload == null ? void 0 : payload.length)) {
25560
25866
  return null;
@@ -25640,7 +25946,7 @@ var ChartTooltipContent = React42.forwardRef(
25640
25946
  );
25641
25947
  ChartTooltipContent.displayName = "ChartTooltip";
25642
25948
  var ChartLegend = RechartsPrimitive.Legend;
25643
- var ChartLegendContent = React42.forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
25949
+ var ChartLegendContent = React41.forwardRef(({ className, hideIcon = false, payload, verticalAlign = "bottom", nameKey }, ref) => {
25644
25950
  const { config } = useChart();
25645
25951
  if (!(payload == null ? void 0 : payload.length)) {
25646
25952
  return null;
@@ -25692,11 +25998,11 @@ function getPayloadConfigFromPayload(config, payload, key) {
25692
25998
  }
25693
25999
 
25694
26000
  // src/components/ui/checkbox.tsx
25695
- import * as React43 from "react";
26001
+ import * as React42 from "react";
25696
26002
  import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
25697
26003
  import { Check as Check6 } from "lucide-react";
25698
26004
  import { jsx as jsx65 } from "react/jsx-runtime";
25699
- var Checkbox = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx65(
26005
+ var Checkbox = React42.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx65(
25700
26006
  CheckboxPrimitive.Root,
25701
26007
  {
25702
26008
  ref,
@@ -25717,11 +26023,11 @@ var CollapsibleTrigger2 = CollapsiblePrimitive.CollapsibleTrigger;
25717
26023
  var CollapsibleContent2 = CollapsiblePrimitive.CollapsibleContent;
25718
26024
 
25719
26025
  // src/components/ui/command.tsx
25720
- import * as React44 from "react";
26026
+ import * as React43 from "react";
25721
26027
  import { Command as CommandPrimitive } from "cmdk";
25722
26028
  import { Search as Search2 } from "lucide-react";
25723
26029
  import { jsx as jsx66, jsxs as jsxs41 } from "react/jsx-runtime";
25724
- var Command = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
26030
+ var Command = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
25725
26031
  CommandPrimitive,
25726
26032
  {
25727
26033
  ref,
@@ -25736,7 +26042,7 @@ Command.displayName = CommandPrimitive.displayName;
25736
26042
  var CommandDialog = ({ children, ...props }) => {
25737
26043
  return /* @__PURE__ */ jsx66(Dialog, { ...props, children: /* @__PURE__ */ jsx66(DialogContent, { className: "overflow-hidden p-0 shadow-lg", children: /* @__PURE__ */ jsx66(Command, { className: "[&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-group]]:px-2 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5", children }) }) });
25738
26044
  };
25739
- var CommandInput = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs41("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
26045
+ var CommandInput = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs41("div", { className: "flex items-center border-b px-3", "cmdk-input-wrapper": "", children: [
25740
26046
  /* @__PURE__ */ jsx66(Search2, { className: "mr-2 h-4 w-4 shrink-0 opacity-50" }),
25741
26047
  /* @__PURE__ */ jsx66(
25742
26048
  CommandPrimitive.Input,
@@ -25751,7 +26057,7 @@ var CommandInput = React44.forwardRef(({ className, ...props }, ref) => /* @__PU
25751
26057
  )
25752
26058
  ] }));
25753
26059
  CommandInput.displayName = CommandPrimitive.Input.displayName;
25754
- var CommandList = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
26060
+ var CommandList = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
25755
26061
  CommandPrimitive.List,
25756
26062
  {
25757
26063
  ref,
@@ -25760,9 +26066,9 @@ var CommandList = React44.forwardRef(({ className, ...props }, ref) => /* @__PUR
25760
26066
  }
25761
26067
  ));
25762
26068
  CommandList.displayName = CommandPrimitive.List.displayName;
25763
- var CommandEmpty = React44.forwardRef((props, ref) => /* @__PURE__ */ jsx66(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
26069
+ var CommandEmpty = React43.forwardRef((props, ref) => /* @__PURE__ */ jsx66(CommandPrimitive.Empty, { ref, className: "py-6 text-center text-sm", ...props }));
25764
26070
  CommandEmpty.displayName = CommandPrimitive.Empty.displayName;
25765
- var CommandGroup = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
26071
+ var CommandGroup = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
25766
26072
  CommandPrimitive.Group,
25767
26073
  {
25768
26074
  ref,
@@ -25774,9 +26080,9 @@ var CommandGroup = React44.forwardRef(({ className, ...props }, ref) => /* @__PU
25774
26080
  }
25775
26081
  ));
25776
26082
  CommandGroup.displayName = CommandPrimitive.Group.displayName;
25777
- var CommandSeparator = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(CommandPrimitive.Separator, { ref, className: cn("-mx-1 h-px bg-border", className), ...props }));
26083
+ var CommandSeparator = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(CommandPrimitive.Separator, { ref, className: cn("-mx-1 h-px bg-border", className), ...props }));
25778
26084
  CommandSeparator.displayName = CommandPrimitive.Separator.displayName;
25779
- var CommandItem = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
26085
+ var CommandItem = React43.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx66(
25780
26086
  CommandPrimitive.Item,
25781
26087
  {
25782
26088
  ref,
@@ -25794,7 +26100,7 @@ var CommandShortcut = ({ className, ...props }) => {
25794
26100
  CommandShortcut.displayName = "CommandShortcut";
25795
26101
 
25796
26102
  // src/components/ui/context-menu.tsx
25797
- import * as React45 from "react";
26103
+ import * as React44 from "react";
25798
26104
  import * as ContextMenuPrimitive from "@radix-ui/react-context-menu";
25799
26105
  import { Check as Check7, ChevronRight as ChevronRight4, Circle as Circle2 } from "lucide-react";
25800
26106
  import { jsx as jsx67, jsxs as jsxs42 } from "react/jsx-runtime";
@@ -25804,7 +26110,7 @@ var ContextMenuGroup = ContextMenuPrimitive.Group;
25804
26110
  var ContextMenuPortal = ContextMenuPrimitive.Portal;
25805
26111
  var ContextMenuSub = ContextMenuPrimitive.Sub;
25806
26112
  var ContextMenuRadioGroup = ContextMenuPrimitive.RadioGroup;
25807
- var ContextMenuSubTrigger = React45.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs42(
26113
+ var ContextMenuSubTrigger = React44.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs42(
25808
26114
  ContextMenuPrimitive.SubTrigger,
25809
26115
  {
25810
26116
  ref,
@@ -25821,7 +26127,7 @@ var ContextMenuSubTrigger = React45.forwardRef(({ className, inset, children, ..
25821
26127
  }
25822
26128
  ));
25823
26129
  ContextMenuSubTrigger.displayName = ContextMenuPrimitive.SubTrigger.displayName;
25824
- var ContextMenuSubContent = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx67(
26130
+ var ContextMenuSubContent = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx67(
25825
26131
  ContextMenuPrimitive.SubContent,
25826
26132
  {
25827
26133
  ref,
@@ -25833,7 +26139,7 @@ var ContextMenuSubContent = React45.forwardRef(({ className, ...props }, ref) =>
25833
26139
  }
25834
26140
  ));
25835
26141
  ContextMenuSubContent.displayName = ContextMenuPrimitive.SubContent.displayName;
25836
- var ContextMenuContent = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx67(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx67(
26142
+ var ContextMenuContent = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx67(ContextMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx67(
25837
26143
  ContextMenuPrimitive.Content,
25838
26144
  {
25839
26145
  ref,
@@ -25845,7 +26151,7 @@ var ContextMenuContent = React45.forwardRef(({ className, ...props }, ref) => /*
25845
26151
  }
25846
26152
  ) }));
25847
26153
  ContextMenuContent.displayName = ContextMenuPrimitive.Content.displayName;
25848
- var ContextMenuItem = React45.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx67(
26154
+ var ContextMenuItem = React44.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx67(
25849
26155
  ContextMenuPrimitive.Item,
25850
26156
  {
25851
26157
  ref,
@@ -25858,7 +26164,7 @@ var ContextMenuItem = React45.forwardRef(({ className, inset, ...props }, ref) =
25858
26164
  }
25859
26165
  ));
25860
26166
  ContextMenuItem.displayName = ContextMenuPrimitive.Item.displayName;
25861
- var ContextMenuCheckboxItem = React45.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs42(
26167
+ var ContextMenuCheckboxItem = React44.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs42(
25862
26168
  ContextMenuPrimitive.CheckboxItem,
25863
26169
  {
25864
26170
  ref,
@@ -25875,7 +26181,7 @@ var ContextMenuCheckboxItem = React45.forwardRef(({ className, children, checked
25875
26181
  }
25876
26182
  ));
25877
26183
  ContextMenuCheckboxItem.displayName = ContextMenuPrimitive.CheckboxItem.displayName;
25878
- var ContextMenuRadioItem = React45.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs42(
26184
+ var ContextMenuRadioItem = React44.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs42(
25879
26185
  ContextMenuPrimitive.RadioItem,
25880
26186
  {
25881
26187
  ref,
@@ -25891,7 +26197,7 @@ var ContextMenuRadioItem = React45.forwardRef(({ className, children, ...props }
25891
26197
  }
25892
26198
  ));
25893
26199
  ContextMenuRadioItem.displayName = ContextMenuPrimitive.RadioItem.displayName;
25894
- var ContextMenuLabel = React45.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx67(
26200
+ var ContextMenuLabel = React44.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx67(
25895
26201
  ContextMenuPrimitive.Label,
25896
26202
  {
25897
26203
  ref,
@@ -25900,7 +26206,7 @@ var ContextMenuLabel = React45.forwardRef(({ className, inset, ...props }, ref)
25900
26206
  }
25901
26207
  ));
25902
26208
  ContextMenuLabel.displayName = ContextMenuPrimitive.Label.displayName;
25903
- var ContextMenuSeparator = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx67(ContextMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-border", className), ...props }));
26209
+ var ContextMenuSeparator = React44.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx67(ContextMenuPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-border", className), ...props }));
25904
26210
  ContextMenuSeparator.displayName = ContextMenuPrimitive.Separator.displayName;
25905
26211
  var ContextMenuShortcut = ({ className, ...props }) => {
25906
26212
  return /* @__PURE__ */ jsx67("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props });
@@ -25908,31 +26214,31 @@ var ContextMenuShortcut = ({ className, ...props }) => {
25908
26214
  ContextMenuShortcut.displayName = "ContextMenuShortcut";
25909
26215
 
25910
26216
  // src/components/ui/form.tsx
25911
- import * as React47 from "react";
26217
+ import * as React46 from "react";
25912
26218
  import { Slot as Slot3 } from "@radix-ui/react-slot";
25913
26219
  import { Controller, FormProvider, useFormContext } from "react-hook-form";
25914
26220
 
25915
26221
  // src/components/ui/label.tsx
25916
- import * as React46 from "react";
26222
+ import * as React45 from "react";
25917
26223
  import * as LabelPrimitive from "@radix-ui/react-label";
25918
26224
  import { cva as cva4 } from "class-variance-authority";
25919
26225
  import { jsx as jsx68 } from "react/jsx-runtime";
25920
26226
  var labelVariants = cva4("text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70");
25921
- var Label4 = React46.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx68(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props }));
26227
+ var Label4 = React45.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx68(LabelPrimitive.Root, { ref, className: cn(labelVariants(), className), ...props }));
25922
26228
  Label4.displayName = LabelPrimitive.Root.displayName;
25923
26229
 
25924
26230
  // src/components/ui/form.tsx
25925
26231
  import { jsx as jsx69 } from "react/jsx-runtime";
25926
26232
  var Form = FormProvider;
25927
- var FormFieldContext = React47.createContext({});
26233
+ var FormFieldContext = React46.createContext({});
25928
26234
  var FormField = ({
25929
26235
  ...props
25930
26236
  }) => {
25931
26237
  return /* @__PURE__ */ jsx69(FormFieldContext.Provider, { value: { name: props.name }, children: /* @__PURE__ */ jsx69(Controller, { ...props }) });
25932
26238
  };
25933
26239
  var useFormField = () => {
25934
- const fieldContext = React47.useContext(FormFieldContext);
25935
- const itemContext = React47.useContext(FormItemContext);
26240
+ const fieldContext = React46.useContext(FormFieldContext);
26241
+ const itemContext = React46.useContext(FormItemContext);
25936
26242
  const { getFieldState, formState } = useFormContext();
25937
26243
  const fieldState = getFieldState(fieldContext.name, formState);
25938
26244
  if (!fieldContext) {
@@ -25948,20 +26254,20 @@ var useFormField = () => {
25948
26254
  ...fieldState
25949
26255
  };
25950
26256
  };
25951
- var FormItemContext = React47.createContext({});
25952
- var FormItem = React47.forwardRef(
26257
+ var FormItemContext = React46.createContext({});
26258
+ var FormItem = React46.forwardRef(
25953
26259
  ({ className, ...props }, ref) => {
25954
- const id = React47.useId();
26260
+ const id = React46.useId();
25955
26261
  return /* @__PURE__ */ jsx69(FormItemContext.Provider, { value: { id }, children: /* @__PURE__ */ jsx69("div", { ref, className: cn("space-y-2", className), ...props }) });
25956
26262
  }
25957
26263
  );
25958
26264
  FormItem.displayName = "FormItem";
25959
- var FormLabel = React47.forwardRef(({ className, ...props }, ref) => {
26265
+ var FormLabel = React46.forwardRef(({ className, ...props }, ref) => {
25960
26266
  const { error, formItemId } = useFormField();
25961
26267
  return /* @__PURE__ */ jsx69(Label4, { ref, className: cn(error && "text-destructive", className), htmlFor: formItemId, ...props });
25962
26268
  });
25963
26269
  FormLabel.displayName = "FormLabel";
25964
- var FormControl = React47.forwardRef(
26270
+ var FormControl = React46.forwardRef(
25965
26271
  ({ ...props }, ref) => {
25966
26272
  const { error, formItemId, formDescriptionId, formMessageId } = useFormField();
25967
26273
  return /* @__PURE__ */ jsx69(
@@ -25977,14 +26283,14 @@ var FormControl = React47.forwardRef(
25977
26283
  }
25978
26284
  );
25979
26285
  FormControl.displayName = "FormControl";
25980
- var FormDescription = React47.forwardRef(
26286
+ var FormDescription = React46.forwardRef(
25981
26287
  ({ className, ...props }, ref) => {
25982
26288
  const { formDescriptionId } = useFormField();
25983
26289
  return /* @__PURE__ */ jsx69("p", { ref, id: formDescriptionId, className: cn("text-sm text-muted-foreground", className), ...props });
25984
26290
  }
25985
26291
  );
25986
26292
  FormDescription.displayName = "FormDescription";
25987
- var FormMessage = React47.forwardRef(
26293
+ var FormMessage = React46.forwardRef(
25988
26294
  ({ className, children, ...props }, ref) => {
25989
26295
  const { error, formMessageId } = useFormField();
25990
26296
  const body = error ? String(error == null ? void 0 : error.message) : children;
@@ -25997,12 +26303,12 @@ var FormMessage = React47.forwardRef(
25997
26303
  FormMessage.displayName = "FormMessage";
25998
26304
 
25999
26305
  // src/components/ui/hover-card.tsx
26000
- import * as React48 from "react";
26306
+ import * as React47 from "react";
26001
26307
  import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
26002
26308
  import { jsx as jsx70 } from "react/jsx-runtime";
26003
26309
  var HoverCard = HoverCardPrimitive.Root;
26004
26310
  var HoverCardTrigger = HoverCardPrimitive.Trigger;
26005
- var HoverCardContent = React48.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx70(
26311
+ var HoverCardContent = React47.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx70(
26006
26312
  HoverCardPrimitive.Content,
26007
26313
  {
26008
26314
  ref,
@@ -26018,11 +26324,11 @@ var HoverCardContent = React48.forwardRef(({ className, align = "center", sideOf
26018
26324
  HoverCardContent.displayName = HoverCardPrimitive.Content.displayName;
26019
26325
 
26020
26326
  // src/components/ui/input-otp.tsx
26021
- import * as React49 from "react";
26327
+ import * as React48 from "react";
26022
26328
  import { OTPInput, OTPInputContext } from "input-otp";
26023
26329
  import { Dot } from "lucide-react";
26024
26330
  import { jsx as jsx71, jsxs as jsxs43 } from "react/jsx-runtime";
26025
- var InputOTP = React49.forwardRef(
26331
+ var InputOTP = React48.forwardRef(
26026
26332
  ({ className, containerClassName, ...props }, ref) => /* @__PURE__ */ jsx71(
26027
26333
  OTPInput,
26028
26334
  {
@@ -26034,12 +26340,12 @@ var InputOTP = React49.forwardRef(
26034
26340
  )
26035
26341
  );
26036
26342
  InputOTP.displayName = "InputOTP";
26037
- var InputOTPGroup = React49.forwardRef(
26343
+ var InputOTPGroup = React48.forwardRef(
26038
26344
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx71("div", { ref, className: cn("flex items-center", className), ...props })
26039
26345
  );
26040
26346
  InputOTPGroup.displayName = "InputOTPGroup";
26041
- var InputOTPSlot = React49.forwardRef(({ index, className, ...props }, ref) => {
26042
- const inputOTPContext = React49.useContext(OTPInputContext);
26347
+ var InputOTPSlot = React48.forwardRef(({ index, className, ...props }, ref) => {
26348
+ const inputOTPContext = React48.useContext(OTPInputContext);
26043
26349
  const { char, hasFakeCaret, isActive } = inputOTPContext.slots[index];
26044
26350
  return /* @__PURE__ */ jsxs43(
26045
26351
  "div",
@@ -26059,13 +26365,13 @@ var InputOTPSlot = React49.forwardRef(({ index, className, ...props }, ref) => {
26059
26365
  );
26060
26366
  });
26061
26367
  InputOTPSlot.displayName = "InputOTPSlot";
26062
- var InputOTPSeparator = React49.forwardRef(
26368
+ var InputOTPSeparator = React48.forwardRef(
26063
26369
  ({ ...props }, ref) => /* @__PURE__ */ jsx71("div", { ref, role: "separator", ...props, children: /* @__PURE__ */ jsx71(Dot, {}) })
26064
26370
  );
26065
26371
  InputOTPSeparator.displayName = "InputOTPSeparator";
26066
26372
 
26067
26373
  // src/components/ui/menubar.tsx
26068
- import * as React50 from "react";
26374
+ import * as React49 from "react";
26069
26375
  import * as MenubarPrimitive from "@radix-ui/react-menubar";
26070
26376
  import { Check as Check8, ChevronRight as ChevronRight5, Circle as Circle3 } from "lucide-react";
26071
26377
  import { jsx as jsx72, jsxs as jsxs44 } from "react/jsx-runtime";
@@ -26074,7 +26380,7 @@ var MenubarGroup = MenubarPrimitive.Group;
26074
26380
  var MenubarPortal = MenubarPrimitive.Portal;
26075
26381
  var MenubarSub = MenubarPrimitive.Sub;
26076
26382
  var MenubarRadioGroup = MenubarPrimitive.RadioGroup;
26077
- var Menubar = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
26383
+ var Menubar = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
26078
26384
  MenubarPrimitive.Root,
26079
26385
  {
26080
26386
  ref,
@@ -26083,7 +26389,7 @@ var Menubar = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__
26083
26389
  }
26084
26390
  ));
26085
26391
  Menubar.displayName = MenubarPrimitive.Root.displayName;
26086
- var MenubarTrigger = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
26392
+ var MenubarTrigger = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
26087
26393
  MenubarPrimitive.Trigger,
26088
26394
  {
26089
26395
  ref,
@@ -26095,7 +26401,7 @@ var MenubarTrigger = React50.forwardRef(({ className, ...props }, ref) => /* @__
26095
26401
  }
26096
26402
  ));
26097
26403
  MenubarTrigger.displayName = MenubarPrimitive.Trigger.displayName;
26098
- var MenubarSubTrigger = React50.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs44(
26404
+ var MenubarSubTrigger = React49.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs44(
26099
26405
  MenubarPrimitive.SubTrigger,
26100
26406
  {
26101
26407
  ref,
@@ -26112,7 +26418,7 @@ var MenubarSubTrigger = React50.forwardRef(({ className, inset, children, ...pro
26112
26418
  }
26113
26419
  ));
26114
26420
  MenubarSubTrigger.displayName = MenubarPrimitive.SubTrigger.displayName;
26115
- var MenubarSubContent = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
26421
+ var MenubarSubContent = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(
26116
26422
  MenubarPrimitive.SubContent,
26117
26423
  {
26118
26424
  ref,
@@ -26124,7 +26430,7 @@ var MenubarSubContent = React50.forwardRef(({ className, ...props }, ref) => /*
26124
26430
  }
26125
26431
  ));
26126
26432
  MenubarSubContent.displayName = MenubarPrimitive.SubContent.displayName;
26127
- var MenubarContent = React50.forwardRef(({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx72(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx72(
26433
+ var MenubarContent = React49.forwardRef(({ className, align = "start", alignOffset = -4, sideOffset = 8, ...props }, ref) => /* @__PURE__ */ jsx72(MenubarPrimitive.Portal, { children: /* @__PURE__ */ jsx72(
26128
26434
  MenubarPrimitive.Content,
26129
26435
  {
26130
26436
  ref,
@@ -26139,7 +26445,7 @@ var MenubarContent = React50.forwardRef(({ className, align = "start", alignOffs
26139
26445
  }
26140
26446
  ) }));
26141
26447
  MenubarContent.displayName = MenubarPrimitive.Content.displayName;
26142
- var MenubarItem = React50.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx72(
26448
+ var MenubarItem = React49.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx72(
26143
26449
  MenubarPrimitive.Item,
26144
26450
  {
26145
26451
  ref,
@@ -26152,7 +26458,7 @@ var MenubarItem = React50.forwardRef(({ className, inset, ...props }, ref) => /*
26152
26458
  }
26153
26459
  ));
26154
26460
  MenubarItem.displayName = MenubarPrimitive.Item.displayName;
26155
- var MenubarCheckboxItem = React50.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs44(
26461
+ var MenubarCheckboxItem = React49.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs44(
26156
26462
  MenubarPrimitive.CheckboxItem,
26157
26463
  {
26158
26464
  ref,
@@ -26169,7 +26475,7 @@ var MenubarCheckboxItem = React50.forwardRef(({ className, children, checked, ..
26169
26475
  }
26170
26476
  ));
26171
26477
  MenubarCheckboxItem.displayName = MenubarPrimitive.CheckboxItem.displayName;
26172
- var MenubarRadioItem = React50.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs44(
26478
+ var MenubarRadioItem = React49.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs44(
26173
26479
  MenubarPrimitive.RadioItem,
26174
26480
  {
26175
26481
  ref,
@@ -26185,7 +26491,7 @@ var MenubarRadioItem = React50.forwardRef(({ className, children, ...props }, re
26185
26491
  }
26186
26492
  ));
26187
26493
  MenubarRadioItem.displayName = MenubarPrimitive.RadioItem.displayName;
26188
- var MenubarLabel = React50.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx72(
26494
+ var MenubarLabel = React49.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx72(
26189
26495
  MenubarPrimitive.Label,
26190
26496
  {
26191
26497
  ref,
@@ -26194,7 +26500,7 @@ var MenubarLabel = React50.forwardRef(({ className, inset, ...props }, ref) => /
26194
26500
  }
26195
26501
  ));
26196
26502
  MenubarLabel.displayName = MenubarPrimitive.Label.displayName;
26197
- var MenubarSeparator = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(MenubarPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
26503
+ var MenubarSeparator = React49.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx72(MenubarPrimitive.Separator, { ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props }));
26198
26504
  MenubarSeparator.displayName = MenubarPrimitive.Separator.displayName;
26199
26505
  var MenubarShortcut = ({ className, ...props }) => {
26200
26506
  return /* @__PURE__ */ jsx72("span", { className: cn("ml-auto text-xs tracking-widest text-muted-foreground", className), ...props });
@@ -26202,12 +26508,12 @@ var MenubarShortcut = ({ className, ...props }) => {
26202
26508
  MenubarShortcut.displayname = "MenubarShortcut";
26203
26509
 
26204
26510
  // src/components/ui/navigation-menu.tsx
26205
- import * as React51 from "react";
26511
+ import * as React50 from "react";
26206
26512
  import * as NavigationMenuPrimitive from "@radix-ui/react-navigation-menu";
26207
26513
  import { cva as cva5 } from "class-variance-authority";
26208
26514
  import { ChevronDown as ChevronDown6 } from "lucide-react";
26209
26515
  import { jsx as jsx73, jsxs as jsxs45 } from "react/jsx-runtime";
26210
- var NavigationMenu = React51.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs45(
26516
+ var NavigationMenu = React50.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs45(
26211
26517
  NavigationMenuPrimitive.Root,
26212
26518
  {
26213
26519
  ref,
@@ -26220,7 +26526,7 @@ var NavigationMenu = React51.forwardRef(({ className, children, ...props }, ref)
26220
26526
  }
26221
26527
  ));
26222
26528
  NavigationMenu.displayName = NavigationMenuPrimitive.Root.displayName;
26223
- var NavigationMenuList = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73(
26529
+ var NavigationMenuList = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73(
26224
26530
  NavigationMenuPrimitive.List,
26225
26531
  {
26226
26532
  ref,
@@ -26233,7 +26539,7 @@ var NavigationMenuItem = NavigationMenuPrimitive.Item;
26233
26539
  var navigationMenuTriggerStyle = cva5(
26234
26540
  "group inline-flex h-10 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground focus:outline-none disabled:pointer-events-none disabled:opacity-50 data-[active]:bg-accent/50 data-[state=open]:bg-accent/50"
26235
26541
  );
26236
- var NavigationMenuTrigger = React51.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs45(
26542
+ var NavigationMenuTrigger = React50.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs45(
26237
26543
  NavigationMenuPrimitive.Trigger,
26238
26544
  {
26239
26545
  ref,
@@ -26253,7 +26559,7 @@ var NavigationMenuTrigger = React51.forwardRef(({ className, children, ...props
26253
26559
  }
26254
26560
  ));
26255
26561
  NavigationMenuTrigger.displayName = NavigationMenuPrimitive.Trigger.displayName;
26256
- var NavigationMenuContent = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73(
26562
+ var NavigationMenuContent = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73(
26257
26563
  NavigationMenuPrimitive.Content,
26258
26564
  {
26259
26565
  ref,
@@ -26266,7 +26572,7 @@ var NavigationMenuContent = React51.forwardRef(({ className, ...props }, ref) =>
26266
26572
  ));
26267
26573
  NavigationMenuContent.displayName = NavigationMenuPrimitive.Content.displayName;
26268
26574
  var NavigationMenuLink = NavigationMenuPrimitive.Link;
26269
- var NavigationMenuViewport = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx73(
26575
+ var NavigationMenuViewport = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73("div", { className: cn("absolute left-0 top-full flex justify-center"), children: /* @__PURE__ */ jsx73(
26270
26576
  NavigationMenuPrimitive.Viewport,
26271
26577
  {
26272
26578
  className: cn(
@@ -26278,7 +26584,7 @@ var NavigationMenuViewport = React51.forwardRef(({ className, ...props }, ref) =
26278
26584
  }
26279
26585
  ) }));
26280
26586
  NavigationMenuViewport.displayName = NavigationMenuPrimitive.Viewport.displayName;
26281
- var NavigationMenuIndicator = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73(
26587
+ var NavigationMenuIndicator = React50.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx73(
26282
26588
  NavigationMenuPrimitive.Indicator,
26283
26589
  {
26284
26590
  ref,
@@ -26293,7 +26599,7 @@ var NavigationMenuIndicator = React51.forwardRef(({ className, ...props }, ref)
26293
26599
  NavigationMenuIndicator.displayName = NavigationMenuPrimitive.Indicator.displayName;
26294
26600
 
26295
26601
  // src/components/ui/pagination.tsx
26296
- import * as React52 from "react";
26602
+ import * as React51 from "react";
26297
26603
  import { ChevronLeft as ChevronLeft2, ChevronRight as ChevronRight6, MoreHorizontal as MoreHorizontal2 } from "lucide-react";
26298
26604
  import { jsx as jsx74, jsxs as jsxs46 } from "react/jsx-runtime";
26299
26605
  var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx74(
@@ -26306,11 +26612,11 @@ var Pagination = ({ className, ...props }) => /* @__PURE__ */ jsx74(
26306
26612
  }
26307
26613
  );
26308
26614
  Pagination.displayName = "Pagination";
26309
- var PaginationContent = React52.forwardRef(
26615
+ var PaginationContent = React51.forwardRef(
26310
26616
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx74("ul", { ref, className: cn("flex flex-row items-center gap-1", className), ...props })
26311
26617
  );
26312
26618
  PaginationContent.displayName = "PaginationContent";
26313
- var PaginationItem = React52.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx74("li", { ref, className: cn("", className), ...props }));
26619
+ var PaginationItem = React51.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx74("li", { ref, className: cn("", className), ...props }));
26314
26620
  PaginationItem.displayName = "PaginationItem";
26315
26621
  var PaginationLink = ({ className, isActive, size = "icon", ...props }) => /* @__PURE__ */ jsx74(
26316
26622
  "a",
@@ -26344,12 +26650,12 @@ var PaginationEllipsis = ({ className, ...props }) => /* @__PURE__ */ jsxs46("sp
26344
26650
  PaginationEllipsis.displayName = "PaginationEllipsis";
26345
26651
 
26346
26652
  // src/components/ui/popover.tsx
26347
- import * as React53 from "react";
26653
+ import * as React52 from "react";
26348
26654
  import * as PopoverPrimitive from "@radix-ui/react-popover";
26349
26655
  import { jsx as jsx75 } from "react/jsx-runtime";
26350
26656
  var Popover = PopoverPrimitive.Root;
26351
26657
  var PopoverTrigger = PopoverPrimitive.Trigger;
26352
- var PopoverContent = React53.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx75(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx75(
26658
+ var PopoverContent = React52.forwardRef(({ className, align = "center", sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx75(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx75(
26353
26659
  PopoverPrimitive.Content,
26354
26660
  {
26355
26661
  ref,
@@ -26365,15 +26671,15 @@ var PopoverContent = React53.forwardRef(({ className, align = "center", sideOffs
26365
26671
  PopoverContent.displayName = PopoverPrimitive.Content.displayName;
26366
26672
 
26367
26673
  // src/components/ui/radio-group.tsx
26368
- import * as React54 from "react";
26674
+ import * as React53 from "react";
26369
26675
  import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
26370
26676
  import { Circle as Circle4 } from "lucide-react";
26371
26677
  import { jsx as jsx76 } from "react/jsx-runtime";
26372
- var RadioGroup4 = React54.forwardRef(({ className, ...props }, ref) => {
26678
+ var RadioGroup4 = React53.forwardRef(({ className, ...props }, ref) => {
26373
26679
  return /* @__PURE__ */ jsx76(RadioGroupPrimitive.Root, { className: cn("grid gap-2", className), ...props, ref });
26374
26680
  });
26375
26681
  RadioGroup4.displayName = RadioGroupPrimitive.Root.displayName;
26376
- var RadioGroupItem = React54.forwardRef(({ className, ...props }, ref) => {
26682
+ var RadioGroupItem = React53.forwardRef(({ className, ...props }, ref) => {
26377
26683
  return /* @__PURE__ */ jsx76(
26378
26684
  RadioGroupPrimitive.Item,
26379
26685
  {
@@ -26418,10 +26724,10 @@ var ResizableHandle = ({
26418
26724
  );
26419
26725
 
26420
26726
  // src/components/ui/separator.tsx
26421
- import * as React55 from "react";
26727
+ import * as React54 from "react";
26422
26728
  import * as SeparatorPrimitive from "@radix-ui/react-separator";
26423
26729
  import { jsx as jsx78 } from "react/jsx-runtime";
26424
- var Separator5 = React55.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx78(
26730
+ var Separator5 = React54.forwardRef(({ className, orientation = "horizontal", decorative = true, ...props }, ref) => /* @__PURE__ */ jsx78(
26425
26731
  SeparatorPrimitive.Root,
26426
26732
  {
26427
26733
  ref,
@@ -26437,13 +26743,13 @@ Separator5.displayName = SeparatorPrimitive.Root.displayName;
26437
26743
  import * as SheetPrimitive from "@radix-ui/react-dialog";
26438
26744
  import { cva as cva6 } from "class-variance-authority";
26439
26745
  import { X as X6 } from "lucide-react";
26440
- import * as React56 from "react";
26746
+ import * as React55 from "react";
26441
26747
  import { jsx as jsx79, jsxs as jsxs47 } from "react/jsx-runtime";
26442
26748
  var Sheet = SheetPrimitive.Root;
26443
26749
  var SheetTrigger = SheetPrimitive.Trigger;
26444
26750
  var SheetClose = SheetPrimitive.Close;
26445
26751
  var SheetPortal = SheetPrimitive.Portal;
26446
- var SheetOverlay = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(
26752
+ var SheetOverlay = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(
26447
26753
  SheetPrimitive.Overlay,
26448
26754
  {
26449
26755
  className: cn(
@@ -26471,7 +26777,7 @@ var sheetVariants = cva6(
26471
26777
  }
26472
26778
  }
26473
26779
  );
26474
- var SheetContent = React56.forwardRef(
26780
+ var SheetContent = React55.forwardRef(
26475
26781
  ({
26476
26782
  side = "right",
26477
26783
  className,
@@ -26505,23 +26811,23 @@ var SheetHeader = ({ className, ...props }) => /* @__PURE__ */ jsx79("div", { cl
26505
26811
  SheetHeader.displayName = "SheetHeader";
26506
26812
  var SheetFooter = ({ className, ...props }) => /* @__PURE__ */ jsx79("div", { className: cn("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2", className), ...props });
26507
26813
  SheetFooter.displayName = "SheetFooter";
26508
- var SheetTitle = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(SheetPrimitive.Title, { ref, className: cn("text-lg font-semibold text-foreground", className), ...props }));
26814
+ var SheetTitle = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(SheetPrimitive.Title, { ref, className: cn("text-lg font-semibold text-foreground", className), ...props }));
26509
26815
  SheetTitle.displayName = SheetPrimitive.Title.displayName;
26510
- var SheetDescription = React56.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(SheetPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
26816
+ var SheetDescription = React55.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx79(SheetPrimitive.Description, { ref, className: cn("text-sm text-muted-foreground", className), ...props }));
26511
26817
  SheetDescription.displayName = SheetPrimitive.Description.displayName;
26512
26818
 
26513
26819
  // src/components/ui/sidebar.tsx
26514
- import * as React58 from "react";
26820
+ import * as React57 from "react";
26515
26821
  import { Slot as Slot4 } from "@radix-ui/react-slot";
26516
26822
  import { cva as cva7 } from "class-variance-authority";
26517
26823
  import { PanelLeft } from "lucide-react";
26518
26824
 
26519
26825
  // src/hooks/use-mobile.tsx
26520
- import * as React57 from "react";
26826
+ import * as React56 from "react";
26521
26827
  var MOBILE_BREAKPOINT = 768;
26522
26828
  function useIsMobile() {
26523
- const [isMobile, setIsMobile] = React57.useState(void 0);
26524
- React57.useEffect(() => {
26829
+ const [isMobile, setIsMobile] = React56.useState(void 0);
26830
+ React56.useEffect(() => {
26525
26831
  const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
26526
26832
  const onChange = () => {
26527
26833
  setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
@@ -26541,20 +26847,20 @@ var SIDEBAR_WIDTH = "16rem";
26541
26847
  var SIDEBAR_WIDTH_MOBILE = "18rem";
26542
26848
  var SIDEBAR_WIDTH_ICON = "3rem";
26543
26849
  var SIDEBAR_KEYBOARD_SHORTCUT = "b";
26544
- var SidebarContext = React58.createContext(null);
26850
+ var SidebarContext = React57.createContext(null);
26545
26851
  function useSidebar() {
26546
- const context = React58.useContext(SidebarContext);
26852
+ const context = React57.useContext(SidebarContext);
26547
26853
  if (!context) {
26548
26854
  throw new Error("useSidebar must be used within a SidebarProvider.");
26549
26855
  }
26550
26856
  return context;
26551
26857
  }
26552
- var SidebarProvider = React58.forwardRef(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {
26858
+ var SidebarProvider = React57.forwardRef(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {
26553
26859
  const isMobile = useIsMobile();
26554
- const [openMobile, setOpenMobile] = React58.useState(false);
26555
- const [_open, _setOpen] = React58.useState(defaultOpen);
26860
+ const [openMobile, setOpenMobile] = React57.useState(false);
26861
+ const [_open, _setOpen] = React57.useState(defaultOpen);
26556
26862
  const open = openProp != null ? openProp : _open;
26557
- const setOpen = React58.useCallback(
26863
+ const setOpen = React57.useCallback(
26558
26864
  (value) => {
26559
26865
  const openState = typeof value === "function" ? value(open) : value;
26560
26866
  if (setOpenProp) {
@@ -26566,10 +26872,10 @@ var SidebarProvider = React58.forwardRef(({ defaultOpen = true, open: openProp,
26566
26872
  },
26567
26873
  [setOpenProp, open]
26568
26874
  );
26569
- const toggleSidebar = React58.useCallback(() => {
26875
+ const toggleSidebar = React57.useCallback(() => {
26570
26876
  return isMobile ? setOpenMobile((open2) => !open2) : setOpen((open2) => !open2);
26571
26877
  }, [isMobile, setOpen, setOpenMobile]);
26572
- React58.useEffect(() => {
26878
+ React57.useEffect(() => {
26573
26879
  const handleKeyDown = (event) => {
26574
26880
  if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
26575
26881
  event.preventDefault();
@@ -26580,7 +26886,7 @@ var SidebarProvider = React58.forwardRef(({ defaultOpen = true, open: openProp,
26580
26886
  return () => window.removeEventListener("keydown", handleKeyDown);
26581
26887
  }, [toggleSidebar]);
26582
26888
  const state = open ? "expanded" : "collapsed";
26583
- const contextValue = React58.useMemo(
26889
+ const contextValue = React57.useMemo(
26584
26890
  () => ({
26585
26891
  state,
26586
26892
  open,
@@ -26608,7 +26914,7 @@ var SidebarProvider = React58.forwardRef(({ defaultOpen = true, open: openProp,
26608
26914
  ) }) });
26609
26915
  });
26610
26916
  SidebarProvider.displayName = "SidebarProvider";
26611
- var Sidebar = React58.forwardRef(({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }, ref) => {
26917
+ var Sidebar = React57.forwardRef(({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }, ref) => {
26612
26918
  const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
26613
26919
  if (collapsible === "none") {
26614
26920
  return /* @__PURE__ */ jsx80(
@@ -26683,7 +26989,7 @@ var Sidebar = React58.forwardRef(({ side = "left", variant = "sidebar", collapsi
26683
26989
  );
26684
26990
  });
26685
26991
  Sidebar.displayName = "Sidebar";
26686
- var SidebarTrigger = React58.forwardRef(
26992
+ var SidebarTrigger = React57.forwardRef(
26687
26993
  ({ className, onClick, ...props }, ref) => {
26688
26994
  const { toggleSidebar } = useSidebar();
26689
26995
  return /* @__PURE__ */ jsxs48(
@@ -26708,7 +27014,7 @@ var SidebarTrigger = React58.forwardRef(
26708
27014
  }
26709
27015
  );
26710
27016
  SidebarTrigger.displayName = "SidebarTrigger";
26711
- var SidebarRail = React58.forwardRef(
27017
+ var SidebarRail = React57.forwardRef(
26712
27018
  ({ className, ...props }, ref) => {
26713
27019
  const { toggleSidebar } = useSidebar();
26714
27020
  return /* @__PURE__ */ jsx80(
@@ -26735,7 +27041,7 @@ var SidebarRail = React58.forwardRef(
26735
27041
  }
26736
27042
  );
26737
27043
  SidebarRail.displayName = "SidebarRail";
26738
- var SidebarInset = React58.forwardRef(({ className, ...props }, ref) => {
27044
+ var SidebarInset = React57.forwardRef(({ className, ...props }, ref) => {
26739
27045
  return /* @__PURE__ */ jsx80(
26740
27046
  "main",
26741
27047
  {
@@ -26750,7 +27056,7 @@ var SidebarInset = React58.forwardRef(({ className, ...props }, ref) => {
26750
27056
  );
26751
27057
  });
26752
27058
  SidebarInset.displayName = "SidebarInset";
26753
- var SidebarInput = React58.forwardRef(
27059
+ var SidebarInput = React57.forwardRef(
26754
27060
  ({ className, ...props }, ref) => {
26755
27061
  return /* @__PURE__ */ jsx80(
26756
27062
  Input,
@@ -26767,15 +27073,15 @@ var SidebarInput = React58.forwardRef(
26767
27073
  }
26768
27074
  );
26769
27075
  SidebarInput.displayName = "SidebarInput";
26770
- var SidebarHeader = React58.forwardRef(({ className, ...props }, ref) => {
27076
+ var SidebarHeader = React57.forwardRef(({ className, ...props }, ref) => {
26771
27077
  return /* @__PURE__ */ jsx80("div", { ref, "data-sidebar": "header", className: cn("flex flex-col gap-2 p-2", className), ...props });
26772
27078
  });
26773
27079
  SidebarHeader.displayName = "SidebarHeader";
26774
- var SidebarFooter = React58.forwardRef(({ className, ...props }, ref) => {
27080
+ var SidebarFooter = React57.forwardRef(({ className, ...props }, ref) => {
26775
27081
  return /* @__PURE__ */ jsx80("div", { ref, "data-sidebar": "footer", className: cn("flex flex-col gap-2 p-2", className), ...props });
26776
27082
  });
26777
27083
  SidebarFooter.displayName = "SidebarFooter";
26778
- var SidebarSeparator = React58.forwardRef(
27084
+ var SidebarSeparator = React57.forwardRef(
26779
27085
  ({ className, ...props }, ref) => {
26780
27086
  return /* @__PURE__ */ jsx80(
26781
27087
  Separator5,
@@ -26789,7 +27095,7 @@ var SidebarSeparator = React58.forwardRef(
26789
27095
  }
26790
27096
  );
26791
27097
  SidebarSeparator.displayName = "SidebarSeparator";
26792
- var SidebarContent = React58.forwardRef(({ className, ...props }, ref) => {
27098
+ var SidebarContent = React57.forwardRef(({ className, ...props }, ref) => {
26793
27099
  return /* @__PURE__ */ jsx80(
26794
27100
  "div",
26795
27101
  {
@@ -26804,7 +27110,7 @@ var SidebarContent = React58.forwardRef(({ className, ...props }, ref) => {
26804
27110
  );
26805
27111
  });
26806
27112
  SidebarContent.displayName = "SidebarContent";
26807
- var SidebarGroup = React58.forwardRef(({ className, ...props }, ref) => {
27113
+ var SidebarGroup = React57.forwardRef(({ className, ...props }, ref) => {
26808
27114
  return /* @__PURE__ */ jsx80(
26809
27115
  "div",
26810
27116
  {
@@ -26816,7 +27122,7 @@ var SidebarGroup = React58.forwardRef(({ className, ...props }, ref) => {
26816
27122
  );
26817
27123
  });
26818
27124
  SidebarGroup.displayName = "SidebarGroup";
26819
- var SidebarGroupLabel = React58.forwardRef(
27125
+ var SidebarGroupLabel = React57.forwardRef(
26820
27126
  ({ className, asChild = false, ...props }, ref) => {
26821
27127
  const Comp = asChild ? Slot4 : "div";
26822
27128
  return /* @__PURE__ */ jsx80(
@@ -26835,7 +27141,7 @@ var SidebarGroupLabel = React58.forwardRef(
26835
27141
  }
26836
27142
  );
26837
27143
  SidebarGroupLabel.displayName = "SidebarGroupLabel";
26838
- var SidebarGroupAction = React58.forwardRef(
27144
+ var SidebarGroupAction = React57.forwardRef(
26839
27145
  ({ className, asChild = false, ...props }, ref) => {
26840
27146
  const Comp = asChild ? Slot4 : "button";
26841
27147
  return /* @__PURE__ */ jsx80(
@@ -26856,13 +27162,13 @@ var SidebarGroupAction = React58.forwardRef(
26856
27162
  }
26857
27163
  );
26858
27164
  SidebarGroupAction.displayName = "SidebarGroupAction";
26859
- var SidebarGroupContent = React58.forwardRef(
27165
+ var SidebarGroupContent = React57.forwardRef(
26860
27166
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx80("div", { ref, "data-sidebar": "group-content", className: cn("w-full text-sm", className), ...props })
26861
27167
  );
26862
27168
  SidebarGroupContent.displayName = "SidebarGroupContent";
26863
- var SidebarMenu = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx80("ul", { ref, "data-sidebar": "menu", className: cn("flex w-full min-w-0 flex-col gap-1", className), ...props }));
27169
+ var SidebarMenu = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx80("ul", { ref, "data-sidebar": "menu", className: cn("flex w-full min-w-0 flex-col gap-1", className), ...props }));
26864
27170
  SidebarMenu.displayName = "SidebarMenu";
26865
- var SidebarMenuItem = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx80("li", { ref, "data-sidebar": "menu-item", className: cn("group/menu-item relative", className), ...props }));
27171
+ var SidebarMenuItem = React57.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx80("li", { ref, "data-sidebar": "menu-item", className: cn("group/menu-item relative", className), ...props }));
26866
27172
  SidebarMenuItem.displayName = "SidebarMenuItem";
26867
27173
  var sidebarMenuButtonVariants = cva7(
26868
27174
  "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none 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",
@@ -26884,7 +27190,7 @@ var sidebarMenuButtonVariants = cva7(
26884
27190
  }
26885
27191
  }
26886
27192
  );
26887
- var SidebarMenuButton = React58.forwardRef(({ asChild = false, isActive = false, variant = "default", size = "default", tooltip, className, ...props }, ref) => {
27193
+ var SidebarMenuButton = React57.forwardRef(({ asChild = false, isActive = false, variant = "default", size = "default", tooltip, className, ...props }, ref) => {
26888
27194
  const Comp = asChild ? Slot4 : "button";
26889
27195
  const { isMobile, state } = useSidebar();
26890
27196
  const button = /* @__PURE__ */ jsx80(
@@ -26912,7 +27218,7 @@ var SidebarMenuButton = React58.forwardRef(({ asChild = false, isActive = false,
26912
27218
  ] });
26913
27219
  });
26914
27220
  SidebarMenuButton.displayName = "SidebarMenuButton";
26915
- var SidebarMenuAction = React58.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
27221
+ var SidebarMenuAction = React57.forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref) => {
26916
27222
  const Comp = asChild ? Slot4 : "button";
26917
27223
  return /* @__PURE__ */ jsx80(
26918
27224
  Comp,
@@ -26935,7 +27241,7 @@ var SidebarMenuAction = React58.forwardRef(({ className, asChild = false, showOn
26935
27241
  );
26936
27242
  });
26937
27243
  SidebarMenuAction.displayName = "SidebarMenuAction";
26938
- var SidebarMenuBadge = React58.forwardRef(
27244
+ var SidebarMenuBadge = React57.forwardRef(
26939
27245
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx80(
26940
27246
  "div",
26941
27247
  {
@@ -26955,8 +27261,8 @@ var SidebarMenuBadge = React58.forwardRef(
26955
27261
  )
26956
27262
  );
26957
27263
  SidebarMenuBadge.displayName = "SidebarMenuBadge";
26958
- var SidebarMenuSkeleton = React58.forwardRef(({ className, showIcon = false, ...props }, ref) => {
26959
- const width = React58.useMemo(() => {
27264
+ var SidebarMenuSkeleton = React57.forwardRef(({ className, showIcon = false, ...props }, ref) => {
27265
+ const width = React57.useMemo(() => {
26960
27266
  return `${Math.floor(Math.random() * 40) + 50}%`;
26961
27267
  }, []);
26962
27268
  return /* @__PURE__ */ jsxs48(
@@ -26983,7 +27289,7 @@ var SidebarMenuSkeleton = React58.forwardRef(({ className, showIcon = false, ...
26983
27289
  );
26984
27290
  });
26985
27291
  SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
26986
- var SidebarMenuSub = React58.forwardRef(
27292
+ var SidebarMenuSub = React57.forwardRef(
26987
27293
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx80(
26988
27294
  "ul",
26989
27295
  {
@@ -26999,9 +27305,9 @@ var SidebarMenuSub = React58.forwardRef(
26999
27305
  )
27000
27306
  );
27001
27307
  SidebarMenuSub.displayName = "SidebarMenuSub";
27002
- var SidebarMenuSubItem = React58.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx80("li", { ref, ...props }));
27308
+ var SidebarMenuSubItem = React57.forwardRef(({ ...props }, ref) => /* @__PURE__ */ jsx80("li", { ref, ...props }));
27003
27309
  SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
27004
- var SidebarMenuSubButton = React58.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
27310
+ var SidebarMenuSubButton = React57.forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref) => {
27005
27311
  const Comp = asChild ? Slot4 : "a";
27006
27312
  return /* @__PURE__ */ jsx80(
27007
27313
  Comp,
@@ -27025,10 +27331,10 @@ var SidebarMenuSubButton = React58.forwardRef(({ asChild = false, size = "md", i
27025
27331
  SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
27026
27332
 
27027
27333
  // src/components/ui/slider.tsx
27028
- import * as React59 from "react";
27334
+ import * as React58 from "react";
27029
27335
  import * as SliderPrimitive from "@radix-ui/react-slider";
27030
27336
  import { jsx as jsx81, jsxs as jsxs49 } from "react/jsx-runtime";
27031
- var Slider = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs49(
27337
+ var Slider = React58.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsxs49(
27032
27338
  SliderPrimitive.Root,
27033
27339
  {
27034
27340
  ref,
@@ -27043,25 +27349,25 @@ var Slider = React59.forwardRef(({ className, ...props }, ref) => /* @__PURE__ *
27043
27349
  Slider.displayName = SliderPrimitive.Root.displayName;
27044
27350
 
27045
27351
  // src/components/ui/table.tsx
27046
- import * as React60 from "react";
27352
+ import * as React59 from "react";
27047
27353
  import { jsx as jsx82 } from "react/jsx-runtime";
27048
- var Table = React60.forwardRef(
27354
+ var Table = React59.forwardRef(
27049
27355
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx82("div", { className: "relative w-full overflow-auto", children: /* @__PURE__ */ jsx82("table", { ref, className: cn("w-full caption-bottom text-sm", className), ...props }) })
27050
27356
  );
27051
27357
  Table.displayName = "Table";
27052
- var TableHeader = React60.forwardRef(
27358
+ var TableHeader = React59.forwardRef(
27053
27359
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx82("thead", { ref, className: cn("[&_tr]:border-b", className), ...props })
27054
27360
  );
27055
27361
  TableHeader.displayName = "TableHeader";
27056
- var TableBody = React60.forwardRef(
27362
+ var TableBody = React59.forwardRef(
27057
27363
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx82("tbody", { ref, className: cn("[&_tr:last-child]:border-0", className), ...props })
27058
27364
  );
27059
27365
  TableBody.displayName = "TableBody";
27060
- var TableFooter = React60.forwardRef(
27366
+ var TableFooter = React59.forwardRef(
27061
27367
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx82("tfoot", { ref, className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className), ...props })
27062
27368
  );
27063
27369
  TableFooter.displayName = "TableFooter";
27064
- var TableRow = React60.forwardRef(
27370
+ var TableRow = React59.forwardRef(
27065
27371
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx82(
27066
27372
  "tr",
27067
27373
  {
@@ -27072,7 +27378,7 @@ var TableRow = React60.forwardRef(
27072
27378
  )
27073
27379
  );
27074
27380
  TableRow.displayName = "TableRow";
27075
- var TableHead = React60.forwardRef(
27381
+ var TableHead = React59.forwardRef(
27076
27382
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx82(
27077
27383
  "th",
27078
27384
  {
@@ -27086,23 +27392,23 @@ var TableHead = React60.forwardRef(
27086
27392
  )
27087
27393
  );
27088
27394
  TableHead.displayName = "TableHead";
27089
- var TableCell = React60.forwardRef(
27395
+ var TableCell = React59.forwardRef(
27090
27396
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx82("td", { ref, className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className), ...props })
27091
27397
  );
27092
27398
  TableCell.displayName = "TableCell";
27093
- var TableCaption = React60.forwardRef(
27399
+ var TableCaption = React59.forwardRef(
27094
27400
  ({ className, ...props }, ref) => /* @__PURE__ */ jsx82("caption", { ref, className: cn("mt-4 text-sm text-muted-foreground", className), ...props })
27095
27401
  );
27096
27402
  TableCaption.displayName = "TableCaption";
27097
27403
 
27098
27404
  // src/components/ui/toast.tsx
27099
- import * as React61 from "react";
27405
+ import * as React60 from "react";
27100
27406
  import * as ToastPrimitives from "@radix-ui/react-toast";
27101
27407
  import { cva as cva8 } from "class-variance-authority";
27102
27408
  import { X as X7 } from "lucide-react";
27103
27409
  import { jsx as jsx83 } from "react/jsx-runtime";
27104
27410
  var ToastProvider = ToastPrimitives.Provider;
27105
- var ToastViewport = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx83(
27411
+ var ToastViewport = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx83(
27106
27412
  ToastPrimitives.Viewport,
27107
27413
  {
27108
27414
  ref,
@@ -27128,11 +27434,11 @@ var toastVariants = cva8(
27128
27434
  }
27129
27435
  }
27130
27436
  );
27131
- var Toast = React61.forwardRef(({ className, variant, ...props }, ref) => {
27437
+ var Toast = React60.forwardRef(({ className, variant, ...props }, ref) => {
27132
27438
  return /* @__PURE__ */ jsx83(ToastPrimitives.Root, { ref, className: cn(toastVariants({ variant }), className), ...props });
27133
27439
  });
27134
27440
  Toast.displayName = ToastPrimitives.Root.displayName;
27135
- var ToastAction = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx83(
27441
+ var ToastAction = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx83(
27136
27442
  ToastPrimitives.Action,
27137
27443
  {
27138
27444
  ref,
@@ -27144,7 +27450,7 @@ var ToastAction = React61.forwardRef(({ className, ...props }, ref) => /* @__PUR
27144
27450
  }
27145
27451
  ));
27146
27452
  ToastAction.displayName = ToastPrimitives.Action.displayName;
27147
- var ToastClose = React61.forwardRef(({ className, onClick, ...props }, ref) => /* @__PURE__ */ jsx83(
27453
+ var ToastClose = React60.forwardRef(({ className, onClick, ...props }, ref) => /* @__PURE__ */ jsx83(
27148
27454
  ToastPrimitives.Close,
27149
27455
  {
27150
27456
  ref,
@@ -27162,9 +27468,9 @@ var ToastClose = React61.forwardRef(({ className, onClick, ...props }, ref) => /
27162
27468
  }
27163
27469
  ));
27164
27470
  ToastClose.displayName = ToastPrimitives.Close.displayName;
27165
- var ToastTitle = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx83(ToastPrimitives.Title, { ref, className: cn("text-sm font-semibold", className), ...props }));
27471
+ var ToastTitle = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx83(ToastPrimitives.Title, { ref, className: cn("text-sm font-semibold", className), ...props }));
27166
27472
  ToastTitle.displayName = ToastPrimitives.Title.displayName;
27167
- var ToastDescription = React61.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx83(ToastPrimitives.Description, { ref, className: cn("text-sm opacity-90", className), ...props }));
27473
+ var ToastDescription = React60.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx83(ToastPrimitives.Description, { ref, className: cn("text-sm opacity-90", className), ...props }));
27168
27474
  ToastDescription.displayName = ToastPrimitives.Description.displayName;
27169
27475
 
27170
27476
  // src/components/ui/toaster.tsx
@@ -27187,7 +27493,7 @@ function Toaster2() {
27187
27493
  }
27188
27494
 
27189
27495
  // src/components/ui/toggle.tsx
27190
- import * as React62 from "react";
27496
+ import * as React61 from "react";
27191
27497
  import * as TogglePrimitive from "@radix-ui/react-toggle";
27192
27498
  import { cva as cva9 } from "class-variance-authority";
27193
27499
  import { jsx as jsx85 } from "react/jsx-runtime";
@@ -27211,21 +27517,21 @@ var toggleVariants = cva9(
27211
27517
  }
27212
27518
  }
27213
27519
  );
27214
- var Toggle = React62.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx85(TogglePrimitive.Root, { ref, className: cn(toggleVariants({ variant, size, className })), ...props }));
27520
+ var Toggle = React61.forwardRef(({ className, variant, size, ...props }, ref) => /* @__PURE__ */ jsx85(TogglePrimitive.Root, { ref, className: cn(toggleVariants({ variant, size, className })), ...props }));
27215
27521
  Toggle.displayName = TogglePrimitive.Root.displayName;
27216
27522
 
27217
27523
  // src/components/ui/toggle-group.tsx
27218
- import * as React63 from "react";
27524
+ import * as React62 from "react";
27219
27525
  import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group";
27220
27526
  import { jsx as jsx86 } from "react/jsx-runtime";
27221
- var ToggleGroupContext = React63.createContext({
27527
+ var ToggleGroupContext = React62.createContext({
27222
27528
  size: "default",
27223
27529
  variant: "default"
27224
27530
  });
27225
- var ToggleGroup = React63.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx86(ToggleGroupPrimitive.Root, { ref, className: cn("flex items-center justify-center gap-1", className), ...props, children: /* @__PURE__ */ jsx86(ToggleGroupContext.Provider, { value: { variant, size }, children }) }));
27531
+ var ToggleGroup = React62.forwardRef(({ className, variant, size, children, ...props }, ref) => /* @__PURE__ */ jsx86(ToggleGroupPrimitive.Root, { ref, className: cn("flex items-center justify-center gap-1", className), ...props, children: /* @__PURE__ */ jsx86(ToggleGroupContext.Provider, { value: { variant, size }, children }) }));
27226
27532
  ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName;
27227
- var ToggleGroupItem = React63.forwardRef(({ className, children, variant, size, ...props }, ref) => {
27228
- const context = React63.useContext(ToggleGroupContext);
27533
+ var ToggleGroupItem = React62.forwardRef(({ className, children, variant, size, ...props }, ref) => {
27534
+ const context = React62.useContext(ToggleGroupContext);
27229
27535
  return /* @__PURE__ */ jsx86(
27230
27536
  ToggleGroupPrimitive.Item,
27231
27537
  {
@@ -27276,7 +27582,7 @@ var useActiveSection = (sectionIds, offset = 180) => {
27276
27582
  };
27277
27583
 
27278
27584
  // src/lib/auth.tsx
27279
- import { createContext as createContext6, useCallback as useCallback9, useContext as useContext7, useEffect as useEffect24, useMemo as useMemo11, useRef as useRef14, useState as useState19 } from "react";
27585
+ import { createContext as createContext6, useCallback as useCallback9, useContext as useContext7, useEffect as useEffect24, useMemo as useMemo12, useRef as useRef14, useState as useState19 } from "react";
27280
27586
  import { jsx as jsx87 } from "react/jsx-runtime";
27281
27587
  var STORAGE_KEYS = {
27282
27588
  accessToken: "cc_access_token",
@@ -27855,7 +28161,7 @@ var AuthProvider = ({ children }) => {
27855
28161
  },
27856
28162
  [applyPresenceStatus]
27857
28163
  );
27858
- const value = useMemo11(
28164
+ const value = useMemo12(
27859
28165
  () => ({
27860
28166
  status,
27861
28167
  user,
@@ -27915,6 +28221,8 @@ export {
27915
28221
  BreadcrumbPage,
27916
28222
  BreadcrumbSeparator,
27917
28223
  Button,
28224
+ CUPCODE_APP_VERSION_ENV_KEY,
28225
+ CUPCODE_APP_VERSION_ENV_KEYS,
27918
28226
  Calendar,
27919
28227
  Card,
27920
28228
  CardContent,
@@ -28220,6 +28528,7 @@ export {
28220
28528
  navigationMenuTriggerStyle,
28221
28529
  parseAssetId,
28222
28530
  reducer,
28531
+ resolveCupcodeAppVersion,
28223
28532
  resolveOidcEndpoints,
28224
28533
  resolveTelescupImageURL,
28225
28534
  responsiveSizeClasses,