@sdvf23rvfa43f/stealth-glass 1.3.0 → 1.4.1
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.
|
@@ -2,7 +2,7 @@ import { motion as motion$1 } from './chunk-5IRVGRFN.js';
|
|
|
2
2
|
import React23, { forwardRef, useRef, useState, useCallback, useEffect, createContext, useMemo, useContext, useId } from 'react';
|
|
3
3
|
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
4
4
|
import { useReducedMotion, motion } from 'motion/react';
|
|
5
|
-
import { Loader2, Search, X, ChevronDown, ChevronUp, Check, Circle, ChevronRight,
|
|
5
|
+
import { Loader2, Search, X, ChevronDown, ChevronUp, Check, Circle, ChevronRight, ChevronLeft, Menu, Wallet, Plus, LogOut, Minus, TrendingUp, TrendingDown, Info, AlertOctagon, AlertTriangle, CheckCircle2, Copy, EyeOff, Eye, Lock, Unlock, Pencil, Trash2, Download, Inbox, RefreshCw, Calendar, Clock, Sparkles, Lightbulb, Play, Send, Bell, Home, FolderPlus, Upload, Folder, ArrowRight, AlertCircle, CheckCheck, AlignJustify, SplitSquareVertical, Megaphone, Pause, ArrowDown, SlidersHorizontal, File, Globe, Wifi, Terminal as Terminal$1, ShieldCheck, ShieldAlert, ExternalLink, XCircle, GitCommit, PlayCircle, Zap, Cpu, ArrowUpRight, ArrowDownRight, Database, History, RotateCcw, ChevronsUpDown, Rocket, SkipForward, FolderOpen, FileCode, FileImage, FileText } from 'lucide-react';
|
|
6
6
|
import { twMerge } from 'tailwind-merge';
|
|
7
7
|
import { Slot } from '@radix-ui/react-slot';
|
|
8
8
|
import { cva } from 'class-variance-authority';
|
|
@@ -329,9 +329,6 @@ function AnimatedSection({ children, className = "" }) {
|
|
|
329
329
|
const prefersReduced = useReducedMotion();
|
|
330
330
|
return /* @__PURE__ */ jsx(motion.div, { variants: prefersReduced ? void 0 : motion$1.staggerItem, className, children });
|
|
331
331
|
}
|
|
332
|
-
function SkeletonBox({ className = "" }) {
|
|
333
|
-
return /* @__PURE__ */ jsx("div", { className: `bg-white/10 rounded animate-pulse ${className}` });
|
|
334
|
-
}
|
|
335
332
|
function StealthSidebar({
|
|
336
333
|
logo,
|
|
337
334
|
navigation,
|
|
@@ -348,297 +345,226 @@ function StealthSidebar({
|
|
|
348
345
|
onToggleCollapse,
|
|
349
346
|
footerSlot
|
|
350
347
|
}) {
|
|
351
|
-
const [
|
|
352
|
-
const [
|
|
353
|
-
const currency = wallet?.currency ?? "\u20AC";
|
|
354
|
-
const safeBalance = typeof wallet?.balance === "number" ? wallet.balance : 0;
|
|
348
|
+
const [mobileOpen, setMobileOpen] = useState(false);
|
|
349
|
+
const [expandedChildren, setExpandedChildren] = useState(/* @__PURE__ */ new Set());
|
|
355
350
|
const handleNavigate = useCallback(
|
|
356
351
|
(id) => {
|
|
357
352
|
onNavigate(id);
|
|
358
|
-
|
|
359
|
-
if (submenu && !id.startsWith(submenu.parentId)) {
|
|
360
|
-
setIsSubmenuOpen(false);
|
|
361
|
-
}
|
|
353
|
+
setMobileOpen(false);
|
|
362
354
|
},
|
|
363
|
-
[onNavigate
|
|
355
|
+
[onNavigate]
|
|
364
356
|
);
|
|
357
|
+
const toggleChild = useCallback((id) => {
|
|
358
|
+
setExpandedChildren((prev) => {
|
|
359
|
+
const next = new Set(prev);
|
|
360
|
+
if (next.has(id)) next.delete(id);
|
|
361
|
+
else next.add(id);
|
|
362
|
+
return next;
|
|
363
|
+
});
|
|
364
|
+
}, []);
|
|
365
365
|
useEffect(() => {
|
|
366
|
-
|
|
367
|
-
|
|
366
|
+
if (!mobileOpen) return;
|
|
367
|
+
const handler = (e) => {
|
|
368
|
+
if (e.key === "Escape") setMobileOpen(false);
|
|
368
369
|
};
|
|
369
|
-
|
|
370
|
-
return () =>
|
|
371
|
-
}, []);
|
|
370
|
+
document.addEventListener("keydown", handler);
|
|
371
|
+
return () => document.removeEventListener("keydown", handler);
|
|
372
|
+
}, [mobileOpen]);
|
|
372
373
|
useEffect(() => {
|
|
373
|
-
if (
|
|
374
|
-
|
|
374
|
+
if (mobileOpen) {
|
|
375
|
+
document.body.style.overflow = "hidden";
|
|
376
|
+
} else {
|
|
377
|
+
document.body.style.overflow = "";
|
|
375
378
|
}
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
}, [
|
|
380
|
-
const
|
|
381
|
-
const
|
|
379
|
+
return () => {
|
|
380
|
+
document.body.style.overflow = "";
|
|
381
|
+
};
|
|
382
|
+
}, [mobileOpen]);
|
|
383
|
+
const activeCta = isAuthenticated ? ctaButton : ctaButtonUnauth ?? ctaButton;
|
|
384
|
+
const badgeClasses = (badge) => {
|
|
385
|
+
const b = badge.toUpperCase();
|
|
386
|
+
if (b === "SOON") return "bg-amber-500/15 text-amber-400 border border-amber-500/25";
|
|
387
|
+
if (b === "BETA") return "bg-blue-500/15 text-blue-400 border border-blue-500/25";
|
|
388
|
+
if (b === "NEW") return "bg-emerald-500/15 text-emerald-400 border border-emerald-500/25";
|
|
389
|
+
return "bg-white/[0.08] text-[#8b95a9] border border-white/[0.06]";
|
|
390
|
+
};
|
|
391
|
+
const renderNavItem = (item, _depth = 0) => {
|
|
392
|
+
const isActive = currentId === item.id;
|
|
393
|
+
const hasChildren = item.children && item.children.length > 0;
|
|
394
|
+
const isExpanded = expandedChildren.has(item.id);
|
|
395
|
+
const Icon2 = item.icon;
|
|
396
|
+
return /* @__PURE__ */ jsxs("li", { children: [
|
|
397
|
+
/* @__PURE__ */ jsxs(
|
|
398
|
+
"button",
|
|
399
|
+
{
|
|
400
|
+
onClick: () => {
|
|
401
|
+
if (hasChildren) {
|
|
402
|
+
toggleChild(item.id);
|
|
403
|
+
} else {
|
|
404
|
+
handleNavigate(item.id);
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
disabled: item.disabled,
|
|
408
|
+
title: isCollapsed ? item.label : void 0,
|
|
409
|
+
className: `
|
|
410
|
+
w-full flex items-center gap-3 rounded-xl transition-all cursor-pointer
|
|
411
|
+
${isCollapsed ? "justify-center px-0 py-2.5 mx-auto w-10 h-10" : "px-3 py-2"}
|
|
412
|
+
${isActive ? "bg-white/[0.08] text-white shadow-[inset_0_0_0_1px_rgba(255,255,255,0.06)]" : "text-[#7A8494] hover:text-white hover:bg-white/[0.04]"}
|
|
413
|
+
${item.disabled ? "opacity-40 cursor-not-allowed" : ""}
|
|
414
|
+
`,
|
|
415
|
+
children: [
|
|
416
|
+
/* @__PURE__ */ jsx(Icon2, { className: `shrink-0 ${isCollapsed ? "w-5 h-5" : "w-[18px] h-[18px]"}` }),
|
|
417
|
+
!isCollapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
418
|
+
/* @__PURE__ */ jsx("span", { className: "flex-1 text-left text-[13px] truncate", children: item.label }),
|
|
419
|
+
item.badge && /* @__PURE__ */ jsx("span", { className: `text-[10px] px-1.5 py-0.5 rounded-md ${badgeClasses(item.badge)}`, children: item.badge }),
|
|
420
|
+
hasChildren && /* @__PURE__ */ jsx(
|
|
421
|
+
ChevronDown,
|
|
422
|
+
{
|
|
423
|
+
className: `w-3.5 h-3.5 text-[#5a6275] transition-transform ${isExpanded ? "rotate-180" : ""}`
|
|
424
|
+
}
|
|
425
|
+
)
|
|
426
|
+
] })
|
|
427
|
+
]
|
|
428
|
+
}
|
|
429
|
+
),
|
|
430
|
+
hasChildren && isExpanded && !isCollapsed && /* @__PURE__ */ jsx("ul", { className: "mt-1 ml-4 space-y-0.5 border-l border-white/[0.06] pl-3", children: item.children.map((child) => {
|
|
431
|
+
const childActive = currentId === child.id;
|
|
432
|
+
const ChildIcon = child.icon;
|
|
433
|
+
return /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs(
|
|
434
|
+
"button",
|
|
435
|
+
{
|
|
436
|
+
onClick: () => handleNavigate(child.id),
|
|
437
|
+
disabled: child.disabled,
|
|
438
|
+
className: `
|
|
439
|
+
w-full flex items-center gap-2.5 rounded-lg px-2.5 py-1.5 text-[12px] transition-all cursor-pointer
|
|
440
|
+
${childActive ? "text-white bg-white/[0.06]" : "text-[#5a6275] hover:text-[#8b95a9] hover:bg-white/[0.03]"}
|
|
441
|
+
${child.disabled ? "opacity-40 cursor-not-allowed" : ""}
|
|
442
|
+
`,
|
|
443
|
+
children: [
|
|
444
|
+
/* @__PURE__ */ jsx(ChildIcon, { className: "w-3.5 h-3.5 shrink-0" }),
|
|
445
|
+
/* @__PURE__ */ jsx("span", { className: "truncate", children: child.label }),
|
|
446
|
+
child.badge && /* @__PURE__ */ jsx("span", { className: `text-[9px] px-1.5 py-0.5 rounded-md ${badgeClasses(child.badge)}`, children: child.badge })
|
|
447
|
+
]
|
|
448
|
+
}
|
|
449
|
+
) }, child.id);
|
|
450
|
+
}) })
|
|
451
|
+
] }, item.id);
|
|
452
|
+
};
|
|
453
|
+
const sidebarContent = /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
454
|
+
/* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto overflow-x-hidden scrollbar-none", children: [
|
|
455
|
+
/* @__PURE__ */ jsx("div", { className: `border-b border-white/[0.06] ${isCollapsed ? "px-3 py-4" : "px-5 py-4"}`, children: /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between", children: [
|
|
456
|
+
/* @__PURE__ */ jsxs("div", { className: `flex items-center ${isCollapsed ? "justify-center w-full" : "gap-3"}`, children: [
|
|
457
|
+
/* @__PURE__ */ jsx(
|
|
458
|
+
"img",
|
|
459
|
+
{
|
|
460
|
+
src: logo.src,
|
|
461
|
+
alt: logo.alt ?? logo.title ?? "Logo",
|
|
462
|
+
className: `rounded-lg object-contain ${isCollapsed ? "w-9 h-9" : "w-8 h-8"}`
|
|
463
|
+
}
|
|
464
|
+
),
|
|
465
|
+
!isCollapsed && logo.title && /* @__PURE__ */ jsx("span", { className: "text-[15px] text-white tracking-tight", children: logo.title })
|
|
466
|
+
] }),
|
|
467
|
+
!isCollapsed && onToggleCollapse && /* @__PURE__ */ jsx(
|
|
468
|
+
"button",
|
|
469
|
+
{
|
|
470
|
+
onClick: onToggleCollapse,
|
|
471
|
+
className: "w-7 h-7 rounded-lg hover:bg-white/[0.06] flex items-center justify-center text-[#5a6275] hover:text-white transition-colors cursor-pointer",
|
|
472
|
+
"aria-label": "Collapse sidebar",
|
|
473
|
+
children: /* @__PURE__ */ jsx(ChevronLeft, { className: "w-4 h-4" })
|
|
474
|
+
}
|
|
475
|
+
)
|
|
476
|
+
] }) }),
|
|
477
|
+
isCollapsed && onToggleCollapse && /* @__PURE__ */ jsx(
|
|
478
|
+
"button",
|
|
479
|
+
{
|
|
480
|
+
onClick: onToggleCollapse,
|
|
481
|
+
className: "mx-auto mt-3 w-8 h-8 rounded-lg hover:bg-white/[0.06] flex items-center justify-center text-[#5a6275] hover:text-white transition-colors cursor-pointer",
|
|
482
|
+
"aria-label": "Expand sidebar",
|
|
483
|
+
children: /* @__PURE__ */ jsx(ChevronRight, { className: "w-4 h-4" })
|
|
484
|
+
}
|
|
485
|
+
),
|
|
486
|
+
!isCollapsed && activeCta && /* @__PURE__ */ jsx("div", { className: "px-4 pt-4", children: /* @__PURE__ */ jsxs(
|
|
487
|
+
"button",
|
|
488
|
+
{
|
|
489
|
+
onClick: activeCta.onClick,
|
|
490
|
+
className: "w-full flex items-center justify-center gap-2 px-4 py-2.5 rounded-xl bg-blue-600 hover:bg-blue-500 text-white text-[13px] transition-colors cursor-pointer",
|
|
491
|
+
children: [
|
|
492
|
+
/* @__PURE__ */ jsx(activeCta.icon, { className: "w-4 h-4" }),
|
|
493
|
+
activeCta.label
|
|
494
|
+
]
|
|
495
|
+
}
|
|
496
|
+
) }),
|
|
497
|
+
isCollapsed && activeCta && /* @__PURE__ */ jsx("div", { className: "px-3 pt-3", children: /* @__PURE__ */ jsx(
|
|
498
|
+
"button",
|
|
499
|
+
{
|
|
500
|
+
onClick: activeCta.onClick,
|
|
501
|
+
className: "w-10 h-10 mx-auto rounded-xl bg-blue-600 hover:bg-blue-500 text-white flex items-center justify-center transition-colors cursor-pointer",
|
|
502
|
+
title: activeCta.label,
|
|
503
|
+
children: /* @__PURE__ */ jsx(activeCta.icon, { className: "w-4 h-4" })
|
|
504
|
+
}
|
|
505
|
+
) }),
|
|
506
|
+
/* @__PURE__ */ jsx("nav", { className: `space-y-6 ${isCollapsed ? "px-2 py-4" : "px-4 py-4"}`, children: navigation.map((section) => /* @__PURE__ */ jsxs("div", { children: [
|
|
507
|
+
!isCollapsed && /* @__PURE__ */ jsx("p", { className: "text-[10px] uppercase tracking-widest text-[#5a6275] mb-2 px-3", children: section.category }),
|
|
508
|
+
/* @__PURE__ */ jsx("ul", { className: "space-y-0.5", children: section.items.map((item) => renderNavItem(item)) })
|
|
509
|
+
] }, section.category)) })
|
|
510
|
+
] }),
|
|
511
|
+
footerSlot
|
|
512
|
+
] });
|
|
382
513
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
383
514
|
/* @__PURE__ */ jsx(
|
|
384
515
|
"button",
|
|
385
516
|
{
|
|
386
|
-
onClick: () =>
|
|
387
|
-
className: "fixed top-4 left-4 z-
|
|
388
|
-
"aria-label": "
|
|
389
|
-
children:
|
|
517
|
+
onClick: () => setMobileOpen(true),
|
|
518
|
+
className: "lg:hidden fixed top-4 left-4 z-50 w-10 h-10 rounded-xl bg-white/[0.06] border border-white/[0.08] flex items-center justify-center text-[#7A8494] hover:text-white hover:bg-white/[0.08] transition-colors cursor-pointer backdrop-blur-md",
|
|
519
|
+
"aria-label": "Open navigation",
|
|
520
|
+
children: /* @__PURE__ */ jsx(Menu, { className: "w-5 h-5" })
|
|
390
521
|
}
|
|
391
522
|
),
|
|
392
|
-
|
|
523
|
+
mobileOpen && /* @__PURE__ */ jsx(
|
|
393
524
|
"div",
|
|
394
525
|
{
|
|
395
|
-
className: "fixed inset-0 bg-black/60 backdrop-blur-sm z-40
|
|
396
|
-
onClick: () =>
|
|
526
|
+
className: "lg:hidden fixed inset-0 bg-black/60 backdrop-blur-sm z-40",
|
|
527
|
+
onClick: () => setMobileOpen(false)
|
|
397
528
|
}
|
|
398
529
|
),
|
|
399
530
|
/* @__PURE__ */ jsxs(
|
|
400
531
|
"aside",
|
|
401
532
|
{
|
|
402
|
-
className: `
|
|
533
|
+
className: `
|
|
534
|
+
lg:hidden fixed inset-y-0 left-0 z-50 w-[280px] bg-[#0d1117]/95 backdrop-blur-xl
|
|
535
|
+
border-r border-white/[0.06] flex flex-col
|
|
536
|
+
transition-transform duration-300 ease-in-out
|
|
537
|
+
${mobileOpen ? "translate-x-0" : "-translate-x-full"}
|
|
538
|
+
`,
|
|
403
539
|
children: [
|
|
404
|
-
|
|
540
|
+
/* @__PURE__ */ jsx("div", { className: "flex items-center justify-end px-5 py-4 border-b border-white/[0.06]", children: /* @__PURE__ */ jsx(
|
|
405
541
|
"button",
|
|
406
542
|
{
|
|
407
|
-
onClick:
|
|
408
|
-
className: "
|
|
409
|
-
|
|
543
|
+
onClick: () => setMobileOpen(false),
|
|
544
|
+
className: "w-8 h-8 rounded-lg hover:bg-white/[0.06] flex items-center justify-center text-[#5a6275] hover:text-white transition-colors cursor-pointer",
|
|
545
|
+
"aria-label": "Close navigation",
|
|
546
|
+
children: /* @__PURE__ */ jsx(X, { className: "w-4 h-4" })
|
|
410
547
|
}
|
|
411
|
-
),
|
|
412
|
-
|
|
413
|
-
/* @__PURE__ */ jsxs("div", { className: "pt-8 pb-6 flex items-center justify-center relative transition-all duration-300", children: [
|
|
414
|
-
/* @__PURE__ */ jsx("div", { className: "absolute top-0 left-1/2 -translate-x-1/2 w-32 h-32 bg-blue-600/10 blur-[60px] pointer-events-none rounded-full" }),
|
|
415
|
-
/* @__PURE__ */ jsxs(
|
|
416
|
-
"div",
|
|
417
|
-
{
|
|
418
|
-
className: `flex items-center gap-3 relative z-10 cursor-pointer transition-all duration-300 ${isCollapsed ? "scale-90" : "scale-100"}`,
|
|
419
|
-
onClick: () => handleNavigate("dashboard"),
|
|
420
|
-
children: [
|
|
421
|
-
/* @__PURE__ */ jsx("div", { className: "h-10 w-10 rounded-xl flex items-center justify-center overflow-hidden", children: /* @__PURE__ */ jsx(
|
|
422
|
-
"img",
|
|
423
|
-
{
|
|
424
|
-
src: logo.src,
|
|
425
|
-
alt: logo.alt ?? logo.title ?? "Logo",
|
|
426
|
-
className: "w-full h-full object-contain"
|
|
427
|
-
}
|
|
428
|
-
) }),
|
|
429
|
-
!isCollapsed && logo.title && /* @__PURE__ */ jsx("span", { className: "text-2xl font-bold text-white tracking-tight", children: logo.title })
|
|
430
|
-
]
|
|
431
|
-
}
|
|
432
|
-
)
|
|
433
|
-
] }),
|
|
434
|
-
/* @__PURE__ */ jsxs(
|
|
435
|
-
"div",
|
|
436
|
-
{
|
|
437
|
-
className: `pb-6 space-y-5 relative z-20 transition-all duration-300 lg:hidden ${isCollapsed ? "px-2" : "px-5"}`,
|
|
438
|
-
children: [
|
|
439
|
-
activeCta && /* @__PURE__ */ jsxs(
|
|
440
|
-
"button",
|
|
441
|
-
{
|
|
442
|
-
onClick: activeCta.onClick,
|
|
443
|
-
className: "w-full h-12 rounded-full bg-gradient-to-r from-blue-600 to-indigo-600 text-white shadow-[0_4px_20px_rgba(37,99,235,0.3)] hover:shadow-[0_6px_25px_rgba(37,99,235,0.4)] active:scale-95 transition-all flex items-center justify-center gap-2 group relative overflow-hidden border border-white/10",
|
|
444
|
-
children: [
|
|
445
|
-
/* @__PURE__ */ jsx(activeCta.icon, { className: "w-5 h-5" }),
|
|
446
|
-
/* @__PURE__ */ jsx("span", { className: "font-bold tracking-wide text-sm whitespace-nowrap", children: activeCta.label })
|
|
447
|
-
]
|
|
448
|
-
}
|
|
449
|
-
),
|
|
450
|
-
isAuthenticated && wallet && /* @__PURE__ */ jsxs("div", { className: "rounded-[2rem] bg-sg-elevated border border-white/5 p-5 relative overflow-hidden shadow-xl", children: [
|
|
451
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between mb-3", children: [
|
|
452
|
-
/* @__PURE__ */ jsxs("span", { className: "text-[10px] uppercase tracking-[0.2em] text-sg-text-muted font-bold flex items-center gap-2", children: [
|
|
453
|
-
/* @__PURE__ */ jsx(Wallet, { className: "w-3 h-3 text-sg-text-muted" }),
|
|
454
|
-
"Balance"
|
|
455
|
-
] }),
|
|
456
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 bg-[#052e16] px-2 py-1 rounded-full border border-emerald-900/30", children: [
|
|
457
|
-
/* @__PURE__ */ jsx("div", { className: "w-1.5 h-1.5 rounded-full bg-emerald-500 animate-pulse-subtle" }),
|
|
458
|
-
/* @__PURE__ */ jsx("span", { className: "text-[9px] font-bold text-emerald-500 uppercase tracking-wider", children: "Live" })
|
|
459
|
-
] })
|
|
460
|
-
] }),
|
|
461
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-baseline gap-1 mb-5", children: [
|
|
462
|
-
/* @__PURE__ */ jsx("span", { className: "text-lg font-bold text-sg-text-muted", children: currency }),
|
|
463
|
-
/* @__PURE__ */ jsx("span", { className: "text-4xl font-mono font-bold text-white tracking-tight", children: safeBalance.toFixed(2) })
|
|
464
|
-
] }),
|
|
465
|
-
wallet.onAddFunds && /* @__PURE__ */ jsxs(
|
|
466
|
-
"button",
|
|
467
|
-
{
|
|
468
|
-
onClick: wallet.onAddFunds,
|
|
469
|
-
className: "w-full py-3 rounded-xl bg-sg-highlight hover:bg-[#232730] text-xs font-bold text-white border border-white/5 hover:border-white/10 transition-all flex items-center justify-center gap-2 group/btn shadow-inner",
|
|
470
|
-
children: [
|
|
471
|
-
/* @__PURE__ */ jsx("span", { children: "Add Funds" }),
|
|
472
|
-
/* @__PURE__ */ jsx(ArrowRight, { className: "w-3.5 h-3.5 opacity-50 group-hover/btn:translate-x-1 group-hover/btn:opacity-100 transition-all" })
|
|
473
|
-
]
|
|
474
|
-
}
|
|
475
|
-
)
|
|
476
|
-
] })
|
|
477
|
-
]
|
|
478
|
-
}
|
|
479
|
-
),
|
|
480
|
-
/* @__PURE__ */ jsx("div", { className: `pb-6 space-y-6 ${isCollapsed ? "px-2" : "px-5"}`, children: /* @__PURE__ */ jsxs("nav", { className: "space-y-6", children: [
|
|
481
|
-
navigation.map((section) => /* @__PURE__ */ jsxs(
|
|
482
|
-
"div",
|
|
483
|
-
{
|
|
484
|
-
className: !isCollapsed ? "relative overflow-hidden rounded-[2rem] bg-background/80 border border-white/5 p-5 backdrop-blur-xl transition-all hover:border-white/10 group" : "",
|
|
485
|
-
children: [
|
|
486
|
-
!isCollapsed && /* @__PURE__ */ jsx("div", { className: "absolute top-0 right-0 w-32 h-32 bg-blue-500/5 blur-[50px] rounded-full -translate-y-1/2 translate-x-1/2 pointer-events-none opacity-0 group-hover:opacity-100 transition-opacity duration-700" }),
|
|
487
|
-
!isCollapsed && /* @__PURE__ */ jsxs("p", { className: "relative z-10 px-1 mb-4 text-[10px] text-sg-text-muted uppercase tracking-[0.2em] font-bold select-none flex items-center gap-2", children: [
|
|
488
|
-
/* @__PURE__ */ jsx("span", { className: "w-1 h-1 rounded-full bg-sg-text-muted/50" }),
|
|
489
|
-
section.category
|
|
490
|
-
] }),
|
|
491
|
-
/* @__PURE__ */ jsx("div", { className: "space-y-1 relative z-10", children: section.items.map((item) => {
|
|
492
|
-
const Icon2 = item.icon;
|
|
493
|
-
const isActive = currentId === item.id;
|
|
494
|
-
const isDisabled = item.disabled;
|
|
495
|
-
return /* @__PURE__ */ jsxs(
|
|
496
|
-
"button",
|
|
497
|
-
{
|
|
498
|
-
onClick: () => !isDisabled && handleNavigate(item.id),
|
|
499
|
-
disabled: isDisabled,
|
|
500
|
-
className: `w-full flex items-center rounded-xl transition-all duration-200 group/item relative ${isCollapsed ? "justify-center w-10 h-10 mx-auto rounded-full" : "justify-between px-3 py-3"} ${isDisabled ? "opacity-40 cursor-not-allowed" : isActive ? "bg-blue-500/10 text-white font-bold shadow-[inset_0_0_0_1px_rgba(59,130,246,0.2)]" : "text-muted-foreground hover:text-white hover:bg-white/5 border border-transparent font-medium"}`,
|
|
501
|
-
title: isCollapsed ? item.label : void 0,
|
|
502
|
-
children: [
|
|
503
|
-
/* @__PURE__ */ jsxs(
|
|
504
|
-
"div",
|
|
505
|
-
{
|
|
506
|
-
className: `flex items-center z-10 ${isCollapsed ? "justify-center" : "gap-3"}`,
|
|
507
|
-
children: [
|
|
508
|
-
/* @__PURE__ */ jsx(
|
|
509
|
-
Icon2,
|
|
510
|
-
{
|
|
511
|
-
className: `transition-colors ${isCollapsed ? "w-5 h-5" : "w-4 h-4"} ${isDisabled ? "text-sg-text-muted/50" : isActive ? "text-blue-400" : "text-sg-text-muted group-hover/item:text-white"}`
|
|
512
|
-
}
|
|
513
|
-
),
|
|
514
|
-
!isCollapsed && /* @__PURE__ */ jsx("span", { className: "text-sm tracking-tight", children: item.label })
|
|
515
|
-
]
|
|
516
|
-
}
|
|
517
|
-
),
|
|
518
|
-
!isCollapsed && item.badge && /* @__PURE__ */ jsx(
|
|
519
|
-
"span",
|
|
520
|
-
{
|
|
521
|
-
className: `px-2 py-0.5 rounded-full text-[9px] font-bold font-mono uppercase tracking-wide ${isDisabled ? "bg-amber-500/20 text-amber-400 border border-amber-500/30" : isActive ? "bg-blue-500/20 text-blue-400" : "bg-sg-highlight text-sg-text-muted"}`,
|
|
522
|
-
children: item.badge
|
|
523
|
-
}
|
|
524
|
-
)
|
|
525
|
-
]
|
|
526
|
-
},
|
|
527
|
-
item.id
|
|
528
|
-
);
|
|
529
|
-
}) })
|
|
530
|
-
]
|
|
531
|
-
},
|
|
532
|
-
section.category
|
|
533
|
-
)),
|
|
534
|
-
submenu && !isCollapsed && /* @__PURE__ */ jsxs("div", { className: "relative overflow-hidden rounded-[2rem] bg-background/80 border border-white/5 p-5 backdrop-blur-xl transition-all hover:border-white/10 group", children: [
|
|
535
|
-
/* @__PURE__ */ jsxs(
|
|
536
|
-
"button",
|
|
537
|
-
{
|
|
538
|
-
onClick: () => setIsSubmenuOpen(!isSubmenuOpen),
|
|
539
|
-
className: `w-full flex items-center justify-between px-3 py-3 rounded-xl transition-all duration-200 ${isSubmenuActive ? "bg-blue-500/10 text-white font-bold shadow-[inset_0_0_0_1px_rgba(59,130,246,0.2)]" : "text-muted-foreground hover:text-white hover:bg-white/5 font-medium"}`,
|
|
540
|
-
children: [
|
|
541
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
542
|
-
/* @__PURE__ */ jsx(
|
|
543
|
-
submenu.parentIcon,
|
|
544
|
-
{
|
|
545
|
-
className: `w-4 h-4 ${isSubmenuActive ? "text-blue-400" : "text-sg-text-muted"}`
|
|
546
|
-
}
|
|
547
|
-
),
|
|
548
|
-
/* @__PURE__ */ jsx("span", { className: "text-sm tracking-tight", children: submenu.parentLabel })
|
|
549
|
-
] }),
|
|
550
|
-
/* @__PURE__ */ jsx(
|
|
551
|
-
ChevronRight,
|
|
552
|
-
{
|
|
553
|
-
className: `w-3.5 h-3.5 text-sg-text-muted transition-transform duration-200 ${isSubmenuOpen ? "rotate-90" : ""}`
|
|
554
|
-
}
|
|
555
|
-
)
|
|
556
|
-
]
|
|
557
|
-
}
|
|
558
|
-
),
|
|
559
|
-
isSubmenuOpen && /* @__PURE__ */ jsx("div", { className: "mt-1 ml-4 space-y-1 border-l border-white/5 pl-3", children: submenu.items.map((sub) => {
|
|
560
|
-
const SubIcon = sub.icon;
|
|
561
|
-
const isSubActive = currentId === sub.id;
|
|
562
|
-
return /* @__PURE__ */ jsxs(
|
|
563
|
-
"button",
|
|
564
|
-
{
|
|
565
|
-
onClick: () => handleNavigate(sub.id),
|
|
566
|
-
className: `w-full flex items-center gap-3 px-3 py-2.5 rounded-xl transition-all duration-200 text-sm ${isSubActive ? "bg-blue-500/10 text-white font-bold" : "text-muted-foreground hover:text-white hover:bg-white/5 font-medium"}`,
|
|
567
|
-
children: [
|
|
568
|
-
/* @__PURE__ */ jsx(
|
|
569
|
-
SubIcon,
|
|
570
|
-
{
|
|
571
|
-
className: `w-3.5 h-3.5 ${isSubActive ? "text-blue-400" : "text-sg-text-muted"}`
|
|
572
|
-
}
|
|
573
|
-
),
|
|
574
|
-
/* @__PURE__ */ jsx("span", { className: "tracking-tight", children: sub.label })
|
|
575
|
-
]
|
|
576
|
-
},
|
|
577
|
-
sub.id
|
|
578
|
-
);
|
|
579
|
-
}) })
|
|
580
|
-
] }),
|
|
581
|
-
submenu && isCollapsed && /* @__PURE__ */ jsx(
|
|
582
|
-
"button",
|
|
583
|
-
{
|
|
584
|
-
onClick: () => handleNavigate(submenu.items[0]?.id ?? submenu.parentId),
|
|
585
|
-
className: `w-10 h-10 mx-auto rounded-full flex items-center justify-center transition-all duration-200 ${isSubmenuActive ? "bg-blue-500/10 text-blue-400" : "text-sg-text-muted hover:text-white hover:bg-white/5"}`,
|
|
586
|
-
title: submenu.parentLabel,
|
|
587
|
-
children: /* @__PURE__ */ jsx(submenu.parentIcon, { className: "w-5 h-5" })
|
|
588
|
-
}
|
|
589
|
-
)
|
|
590
|
-
] }) }),
|
|
591
|
-
footerSlot,
|
|
592
|
-
/* @__PURE__ */ jsx("div", { className: `pb-8 lg:hidden ${isCollapsed ? "px-2" : "px-5"}`, children: isAuthenticated && user ? /* @__PURE__ */ jsxs(
|
|
593
|
-
"div",
|
|
594
|
-
{
|
|
595
|
-
className: `group flex items-center gap-4 rounded-[2rem] transition-all bg-sg-elevated border border-white/5 hover:border-white/10 p-4 shadow-xl ${isCollapsed ? "justify-center p-2" : ""}`,
|
|
596
|
-
children: [
|
|
597
|
-
user.isLoading ? /* @__PURE__ */ jsx(SkeletonBox, { className: "h-10 w-10 rounded-full" }) : /* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
598
|
-
/* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-full bg-[#8b5cf6] flex items-center justify-center text-white font-bold text-sm shadow-lg", children: user.name.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2) || "??" }),
|
|
599
|
-
/* @__PURE__ */ jsx("div", { className: "absolute -bottom-0.5 -right-0.5 w-3.5 h-3.5 bg-[#10b981] border-4 border-sg-elevated rounded-full" })
|
|
600
|
-
] }),
|
|
601
|
-
!isCollapsed && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
602
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 min-w-0", children: user.isLoading ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
603
|
-
/* @__PURE__ */ jsx(SkeletonBox, { className: "h-4 w-24 mb-1" }),
|
|
604
|
-
/* @__PURE__ */ jsx(SkeletonBox, { className: "h-3 w-32" })
|
|
605
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
606
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-white font-bold truncate tracking-tight", children: user.name }),
|
|
607
|
-
user.email && /* @__PURE__ */ jsx("p", { className: "text-[10px] text-muted-foreground truncate font-medium font-mono tracking-wide", children: user.email })
|
|
608
|
-
] }) }),
|
|
609
|
-
/* @__PURE__ */ jsx(
|
|
610
|
-
"button",
|
|
611
|
-
{
|
|
612
|
-
onClick: onSignOut,
|
|
613
|
-
className: "p-2 rounded-full hover:bg-white/5 text-sg-text-muted hover:text-white transition-colors",
|
|
614
|
-
title: "Sign Out",
|
|
615
|
-
children: /* @__PURE__ */ jsx(LogOut, { className: "w-4 h-4" })
|
|
616
|
-
}
|
|
617
|
-
)
|
|
618
|
-
] })
|
|
619
|
-
]
|
|
620
|
-
}
|
|
621
|
-
) : /* @__PURE__ */ jsxs(
|
|
622
|
-
"div",
|
|
623
|
-
{
|
|
624
|
-
onClick: onSignOut,
|
|
625
|
-
className: `group flex items-center gap-3 rounded-[2rem] transition-all cursor-pointer bg-blue-600 hover:bg-blue-500 p-4 shadow-lg ${isCollapsed ? "justify-center p-2" : ""}`,
|
|
626
|
-
children: [
|
|
627
|
-
/* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-full bg-white/20 flex items-center justify-center text-white font-bold", children: /* @__PURE__ */ jsx(LogOut, { className: "w-5 h-5 rotate-180" }) }),
|
|
628
|
-
!isCollapsed && /* @__PURE__ */ jsxs("div", { className: "flex-1 min-w-0", children: [
|
|
629
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm text-white font-bold truncate", children: "Sign In" }),
|
|
630
|
-
/* @__PURE__ */ jsx("p", { className: "text-[10px] text-blue-200 truncate font-medium", children: "Access your account" })
|
|
631
|
-
] })
|
|
632
|
-
]
|
|
633
|
-
}
|
|
634
|
-
) })
|
|
635
|
-
] })
|
|
548
|
+
) }),
|
|
549
|
+
sidebarContent
|
|
636
550
|
]
|
|
637
551
|
}
|
|
552
|
+
),
|
|
553
|
+
/* @__PURE__ */ jsx(
|
|
554
|
+
"aside",
|
|
555
|
+
{
|
|
556
|
+
className: `
|
|
557
|
+
hidden lg:flex fixed inset-y-0 left-0 z-30 flex-col
|
|
558
|
+
bg-[#0d1117]/80 backdrop-blur-xl border-r border-white/[0.06]
|
|
559
|
+
transition-all duration-300 ease-in-out
|
|
560
|
+
${isCollapsed ? "w-20" : "w-[260px]"}
|
|
561
|
+
`,
|
|
562
|
+
children: sidebarContent
|
|
563
|
+
}
|
|
638
564
|
)
|
|
639
565
|
] });
|
|
640
566
|
}
|
|
641
|
-
function
|
|
567
|
+
function SkeletonBox({ className = "" }) {
|
|
642
568
|
return /* @__PURE__ */ jsx("div", { className: `bg-white/10 rounded animate-pulse ${className}` });
|
|
643
569
|
}
|
|
644
570
|
function StealthHeader({
|
|
@@ -658,98 +584,76 @@ function StealthHeader({
|
|
|
658
584
|
return /* @__PURE__ */ jsxs(
|
|
659
585
|
"header",
|
|
660
586
|
{
|
|
661
|
-
className: "hidden lg:flex fixed top-0 right-0 z-40 h-
|
|
662
|
-
style: { left: isSidebarCollapsed ? "5rem" : "
|
|
587
|
+
className: "hidden lg:flex fixed top-0 right-0 z-40 h-16 bg-[#0c0f16]/95 backdrop-blur-md border-b border-white/[0.06] items-center justify-between px-6 transition-all duration-300 ease-in-out",
|
|
588
|
+
style: { left: isSidebarCollapsed ? "5rem" : "16.25rem" },
|
|
663
589
|
children: [
|
|
664
590
|
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-4", children: leftSlot }),
|
|
665
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-
|
|
591
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-4", children: [
|
|
666
592
|
rightSlot,
|
|
667
593
|
activeCta && /* @__PURE__ */ jsxs(
|
|
668
594
|
"button",
|
|
669
595
|
{
|
|
670
596
|
onClick: activeCta.onClick,
|
|
671
|
-
className: "rounded-
|
|
597
|
+
className: "rounded-lg bg-blue-600 hover:bg-blue-500 text-white transition-all flex items-center gap-2 px-4 py-2 text-[13px]",
|
|
672
598
|
title: activeCta.label,
|
|
673
599
|
children: [
|
|
674
|
-
/* @__PURE__ */ jsx(
|
|
675
|
-
/* @__PURE__ */ jsx(
|
|
676
|
-
/* @__PURE__ */ jsx("span", { className: "relative z-10", children: activeCta.label })
|
|
600
|
+
/* @__PURE__ */ jsx(activeCta.icon, { className: "w-4 h-4" }),
|
|
601
|
+
/* @__PURE__ */ jsx("span", { children: activeCta.label })
|
|
677
602
|
]
|
|
678
603
|
}
|
|
679
604
|
),
|
|
680
|
-
/* @__PURE__ */ jsx("div", { className: "h-
|
|
681
|
-
isAuthenticated && wallet && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-
|
|
682
|
-
/* @__PURE__ */
|
|
683
|
-
|
|
684
|
-
/* @__PURE__ */
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
{
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
)
|
|
696
|
-
] })
|
|
605
|
+
/* @__PURE__ */ jsx("div", { className: "h-8 w-px bg-white/[0.06]" }),
|
|
606
|
+
isAuthenticated && wallet && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-3", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2.5 bg-white/[0.03] rounded-lg px-3 py-2 border border-white/[0.06]", children: [
|
|
607
|
+
/* @__PURE__ */ jsx(Wallet, { className: "w-4 h-4 text-[#5a6275]" }),
|
|
608
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
|
|
609
|
+
/* @__PURE__ */ jsx("span", { className: "text-[9px] uppercase tracking-widest text-[#5a6275] leading-none mb-0.5", children: "Balance" }),
|
|
610
|
+
/* @__PURE__ */ jsxs(
|
|
611
|
+
"span",
|
|
612
|
+
{
|
|
613
|
+
className: `text-[13px] text-white font-mono leading-none transition-opacity duration-300 ${wallet.isLoading ? "opacity-40" : "opacity-100"}`,
|
|
614
|
+
children: [
|
|
615
|
+
currency,
|
|
616
|
+
safeBalance.toFixed(2)
|
|
617
|
+
]
|
|
618
|
+
}
|
|
619
|
+
)
|
|
697
620
|
] }),
|
|
698
621
|
wallet.onAddFunds && /* @__PURE__ */ jsx(
|
|
699
622
|
"button",
|
|
700
623
|
{
|
|
701
624
|
onClick: wallet.onAddFunds,
|
|
702
|
-
className: "w-
|
|
625
|
+
className: "w-7 h-7 rounded-lg bg-blue-500/10 hover:bg-blue-500/20 text-blue-400 flex items-center justify-center transition-all ml-1",
|
|
703
626
|
title: "Add Funds",
|
|
704
627
|
children: /* @__PURE__ */ jsx(Plus, { className: "w-3.5 h-3.5" })
|
|
705
628
|
}
|
|
706
629
|
)
|
|
707
630
|
] }) }),
|
|
708
|
-
isAuthenticated && user ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3
|
|
709
|
-
/* @__PURE__ */ jsx("div", { className: "text-right hidden xl:block", children: user.isLoading ? /* @__PURE__ */
|
|
710
|
-
/* @__PURE__ */ jsx(SkeletonBox2, { className: "w-24 h-3" }),
|
|
711
|
-
/* @__PURE__ */ jsx(SkeletonBox2, { className: "w-16 h-2" })
|
|
712
|
-
] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
713
|
-
/* @__PURE__ */ jsx(
|
|
714
|
-
"p",
|
|
715
|
-
{
|
|
716
|
-
className: `text-xs font-bold text-foreground leading-none mb-1.5 transition-all duration-300 ${user.isLoading ? "opacity-40" : "opacity-100"}`,
|
|
717
|
-
children: user.name
|
|
718
|
-
}
|
|
719
|
-
),
|
|
720
|
-
/* @__PURE__ */ jsxs(
|
|
721
|
-
"button",
|
|
722
|
-
{
|
|
723
|
-
onClick: (e) => {
|
|
724
|
-
e.stopPropagation();
|
|
725
|
-
onSignOut();
|
|
726
|
-
},
|
|
727
|
-
className: "text-[9px] font-bold text-sg-text-muted hover:text-red-400 transition-colors uppercase tracking-widest flex items-center justify-end gap-1 ml-auto group/signout",
|
|
728
|
-
children: [
|
|
729
|
-
/* @__PURE__ */ jsx("span", { className: "group-hover/signout:translate-x-[-2px] transition-transform", children: "Sign Out" }),
|
|
730
|
-
/* @__PURE__ */ jsx(LogOut, { className: "w-2.5 h-2.5 group-hover/signout:translate-x-[2px] transition-transform" })
|
|
731
|
-
]
|
|
732
|
-
}
|
|
733
|
-
)
|
|
734
|
-
] }) }),
|
|
631
|
+
isAuthenticated && user ? /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
|
|
632
|
+
/* @__PURE__ */ jsx("div", { className: "text-right hidden xl:block", children: user.isLoading ? /* @__PURE__ */ jsx(SkeletonBox, { className: "w-20 h-3" }) : /* @__PURE__ */ jsx("p", { className: "text-[13px] text-white leading-none", children: user.name }) }),
|
|
735
633
|
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
|
|
736
|
-
user.isLoading ? /* @__PURE__ */ jsx(
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
634
|
+
user.isLoading ? /* @__PURE__ */ jsx(SkeletonBox, { className: "w-8 h-8 rounded-full" }) : /* @__PURE__ */ jsx("div", { className: "w-8 h-8 rounded-full bg-[#6d28d9] flex items-center justify-center text-white text-xs", children: user.name.substring(0, 2).toUpperCase() }),
|
|
635
|
+
/* @__PURE__ */ jsx("div", { className: "absolute -bottom-0.5 -right-0.5 w-2.5 h-2.5 bg-emerald-400 border-2 border-[#0c0f16] rounded-full" })
|
|
636
|
+
] }),
|
|
637
|
+
/* @__PURE__ */ jsx(
|
|
638
|
+
"button",
|
|
639
|
+
{
|
|
640
|
+
onClick: (e) => {
|
|
641
|
+
e.stopPropagation();
|
|
642
|
+
onSignOut();
|
|
643
|
+
},
|
|
644
|
+
className: "p-1.5 rounded-lg hover:bg-white/[0.06] text-[#5a6275] hover:text-white transition-colors",
|
|
645
|
+
title: "Sign Out",
|
|
646
|
+
children: /* @__PURE__ */ jsx(LogOut, { className: "w-4 h-4" })
|
|
647
|
+
}
|
|
648
|
+
)
|
|
745
649
|
] }) : /* @__PURE__ */ jsxs(
|
|
746
650
|
"button",
|
|
747
651
|
{
|
|
748
652
|
onClick: onSignOut,
|
|
749
|
-
className: "flex items-center gap-
|
|
653
|
+
className: "flex items-center gap-2 px-3 py-2 rounded-lg bg-blue-600 hover:bg-blue-500 text-white transition-all",
|
|
750
654
|
children: [
|
|
751
|
-
/* @__PURE__ */ jsx(
|
|
752
|
-
/* @__PURE__ */ jsx("
|
|
655
|
+
/* @__PURE__ */ jsx(LogOut, { className: "w-4 h-4 rotate-180" }),
|
|
656
|
+
/* @__PURE__ */ jsx("span", { className: "text-[13px]", children: "Sign In" })
|
|
753
657
|
]
|
|
754
658
|
}
|
|
755
659
|
)
|
|
@@ -855,8 +759,6 @@ function AppShell({
|
|
|
855
759
|
/* @__PURE__ */ jsx(
|
|
856
760
|
StealthHeader,
|
|
857
761
|
{
|
|
858
|
-
ctaButton,
|
|
859
|
-
ctaButtonUnauth,
|
|
860
762
|
wallet,
|
|
861
763
|
user,
|
|
862
764
|
onSignOut,
|
|
@@ -870,11 +772,11 @@ function AppShell({
|
|
|
870
772
|
"main",
|
|
871
773
|
{
|
|
872
774
|
id: "main-content",
|
|
873
|
-
className: `flex-1 ${isSidebarCollapsed ? "lg:ml-20" : "lg:ml-
|
|
775
|
+
className: `flex-1 ${isSidebarCollapsed ? "lg:ml-20" : "lg:ml-[260px]"} relative z-10 w-full min-w-0 h-full overflow-y-auto overflow-x-hidden transition-all duration-300 ease-in-out`,
|
|
874
776
|
children: /* @__PURE__ */ jsx(
|
|
875
777
|
"div",
|
|
876
778
|
{
|
|
877
|
-
className: "w-full mx-auto px-4 py-6 md:px-6 md:py-8 lg:pt-
|
|
779
|
+
className: "w-full mx-auto px-4 py-6 md:px-6 md:py-8 lg:pt-24 min-w-0 relative z-0",
|
|
878
780
|
style: { maxWidth: contentMaxWidth },
|
|
879
781
|
children: /* @__PURE__ */ jsx("div", { className: "animate-in fade-in slide-in-from-bottom-4 duration-500", children: isLoading ? loadingFallback ?? /* @__PURE__ */ jsx(DefaultLoadingSkeleton, {}) : children })
|
|
880
782
|
}
|
|
@@ -4097,7 +3999,8 @@ function ChartContainer({
|
|
|
4097
3999
|
config,
|
|
4098
4000
|
children,
|
|
4099
4001
|
className,
|
|
4100
|
-
aspect
|
|
4002
|
+
aspect,
|
|
4003
|
+
height
|
|
4101
4004
|
}) {
|
|
4102
4005
|
const style = useMemo(() => {
|
|
4103
4006
|
const vars = {};
|
|
@@ -4106,7 +4009,15 @@ function ChartContainer({
|
|
|
4106
4009
|
}
|
|
4107
4010
|
return vars;
|
|
4108
4011
|
}, [config]);
|
|
4109
|
-
|
|
4012
|
+
const rcHeight = aspect ? void 0 : height ?? "100%";
|
|
4013
|
+
return /* @__PURE__ */ jsx(
|
|
4014
|
+
"div",
|
|
4015
|
+
{
|
|
4016
|
+
className: twMerge("w-full h-full", className),
|
|
4017
|
+
style: { ...style, ...height ? { height } : {} },
|
|
4018
|
+
children: /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", aspect, height: rcHeight, minWidth: 0, minHeight: aspect ? void 0 : 50, children })
|
|
4019
|
+
}
|
|
4020
|
+
);
|
|
4110
4021
|
}
|
|
4111
4022
|
function ChartTooltipContent({
|
|
4112
4023
|
active,
|
|
@@ -7486,7 +7397,7 @@ function Sparkline({
|
|
|
7486
7397
|
"aria-label": ariaLabel || "Sparkline chart",
|
|
7487
7398
|
className: twMerge("inline-flex items-center", className),
|
|
7488
7399
|
style: { width, height },
|
|
7489
|
-
children:
|
|
7400
|
+
children: variant === "bar" ? /* @__PURE__ */ jsxs(BarChart, { width, height, ...commonProps, children: [
|
|
7490
7401
|
/* @__PURE__ */ jsx(YAxis, { domain: yDomain, hide: true }),
|
|
7491
7402
|
/* @__PURE__ */ jsx(
|
|
7492
7403
|
Bar,
|
|
@@ -7499,7 +7410,7 @@ function Sparkline({
|
|
|
7499
7410
|
animationDuration: 800
|
|
7500
7411
|
}
|
|
7501
7412
|
)
|
|
7502
|
-
] }) : variant === "line" ? /* @__PURE__ */ jsxs(LineChart, { ...commonProps, children: [
|
|
7413
|
+
] }) : variant === "line" ? /* @__PURE__ */ jsxs(LineChart, { width, height, ...commonProps, children: [
|
|
7503
7414
|
/* @__PURE__ */ jsx(YAxis, { domain: yDomain, hide: true }),
|
|
7504
7415
|
/* @__PURE__ */ jsx(
|
|
7505
7416
|
Line,
|
|
@@ -7513,7 +7424,7 @@ function Sparkline({
|
|
|
7513
7424
|
animationDuration: 800
|
|
7514
7425
|
}
|
|
7515
7426
|
)
|
|
7516
|
-
] }) : /* @__PURE__ */ jsxs(AreaChart, { ...commonProps, children: [
|
|
7427
|
+
] }) : /* @__PURE__ */ jsxs(AreaChart, { width, height, ...commonProps, children: [
|
|
7517
7428
|
/* @__PURE__ */ jsx("defs", { children: /* @__PURE__ */ jsxs("linearGradient", { id: `spark-grad-${color}`, x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
7518
7429
|
/* @__PURE__ */ jsx("stop", { offset: "0%", stopColor: stroke, stopOpacity: 0.3 }),
|
|
7519
7430
|
/* @__PURE__ */ jsx("stop", { offset: "100%", stopColor: stroke, stopOpacity: 0 })
|
|
@@ -7531,7 +7442,7 @@ function Sparkline({
|
|
|
7531
7442
|
animationDuration: 800
|
|
7532
7443
|
}
|
|
7533
7444
|
)
|
|
7534
|
-
] })
|
|
7445
|
+
] })
|
|
7535
7446
|
}
|
|
7536
7447
|
);
|
|
7537
7448
|
}
|
|
@@ -9299,7 +9210,7 @@ function CostForecast({
|
|
|
9299
9210
|
/* @__PURE__ */ jsx("div", { className: "absolute top-0 bottom-0 w-0.5 bg-white/20 z-10", style: { left: "100%" } })
|
|
9300
9211
|
] })
|
|
9301
9212
|
] }),
|
|
9302
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 min-h-[
|
|
9213
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 min-h-[200px]", children: /* @__PURE__ */ jsx(ChartContainer, { config: CHART_CONFIG, height: 200, children: /* @__PURE__ */ jsxs(AreaChart, { data, margin: { top: 10, right: 0, left: -20, bottom: 0 }, children: [
|
|
9303
9214
|
/* @__PURE__ */ jsxs("defs", { children: [
|
|
9304
9215
|
/* @__PURE__ */ jsxs("linearGradient", { id: "fillActual", x1: "0", y1: "0", x2: "0", y2: "1", children: [
|
|
9305
9216
|
/* @__PURE__ */ jsx("stop", { offset: "5%", stopColor: "#3B82F6", stopOpacity: 0.3 }),
|
|
@@ -10339,5 +10250,5 @@ function CacheManager({
|
|
|
10339
10250
|
}
|
|
10340
10251
|
|
|
10341
10252
|
export { Accordion, AccordionContent, AccordionItem, AccordionTrigger, ActivityHeatmap, Alert, AlertActions, AlertDescription, AlertRuleEditor, AlertTitle, AmbientBackground, AnimatedSection, AppShell, AutoscaleControl, Avatar, AvatarGroup, Badge, Banner, BannerStack, BentoCard, BentoCell, BentoGrid, Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, BreadcrumbTrail, Button, CacheManager, ChartContainer, ChartGrid, ChartLegend, ChartLegendContent, ChartTooltip, ChartTooltipContent, Checkbox, Checklist, CodeBlock, CommandPalette, ConfirmDialog, ContextMenu, ContextMenuCheckboxItem, ContextMenuContent, ContextMenuGroup, ContextMenuItem, ContextMenuLabel, ContextMenuPortal, ContextMenuRadioGroup, ContextMenuRadioItem, ContextMenuSeparator, ContextMenuSub, ContextMenuSubContent, ContextMenuSubTrigger, ContextMenuTrigger, CopyButton, CopyField, CostForecast, CronEditor, DataTable, DataValue, DateTimePicker, DeploymentList, DescriptionItem, DescriptionList, Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogOverlay, DialogPortal, DialogTitle, DialogTrigger, DiffViewer, Divider, DomainManager, Drawer, DrawerClose, DrawerContent, DrawerDescription, DrawerFooter, DrawerHeader, DrawerTitle, DrawerTrigger, DropZone, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, EmptyState, EnvManager, ErrorState, FileBrowser, FilterBar, FormActions, FormError, FormField, FormGroup, FormHelperText, FormLabel, GlassTile, GlobeTracker, HudLabel, InlineCode, Input, Kbd, KeyValueEditor, KeyValueRow, LatencyRadar, LoadingState, LogLevelBadge, LogLine, LogTerminal, LogViewer, NotificationBell, NotificationCenter, NumberInput, PageShell, Pagination, PermissionMatrix, Pipeline, PodHoneycomb, Popover, PopoverAnchor, PopoverContent, PopoverTrigger, PricingCard, Progress, RadioGroup, RadioItem, RangeSlider, RecommendationCard, RequestBuilder, ResourceGauge, RevealAction, RevealGroup, ScrollArea, ScrollBar, SearchInput, SecretField, SectionDot, Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectSeparator, SelectTrigger, SelectValue, ServiceMap, Skeleton, SkeletonCircle, SkeletonText, Slider, Sparkline, SparklineBar, SparklineStat, StatCard, StatGrid, StatusBadge, StatusDot, StatusIndicator, StealthHeader, StealthSidebar, StealthToaster, StepIndicator, StepWizard, Switch, Tabs, TabsContent, TabsList, TabsTrigger, Tag, TagInput, Terminal, Textarea, TimeRangePicker, Timeline, TimelineItem, Toggle, ToggleGroup, ToggleGroupItem, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, TraceWaterfall, TrafficSplitter, UsageMeter, buttonVariants, chartAxisStyle, createTriggerClass, useCommandPalette, useFormField };
|
|
10342
|
-
//# sourceMappingURL=chunk-
|
|
10343
|
-
//# sourceMappingURL=chunk-
|
|
10253
|
+
//# sourceMappingURL=chunk-2O7J3GXQ.js.map
|
|
10254
|
+
//# sourceMappingURL=chunk-2O7J3GXQ.js.map
|