@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, Menu, ChevronLeft, Wallet, ArrowRight, LogOut, Plus, 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, 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';
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 [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
352
- const [isSubmenuOpen, setIsSubmenuOpen] = useState(false);
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
- setIsMobileMenuOpen(false);
359
- if (submenu && !id.startsWith(submenu.parentId)) {
360
- setIsSubmenuOpen(false);
361
- }
353
+ setMobileOpen(false);
362
354
  },
363
- [onNavigate, submenu]
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
- const onResize = () => {
367
- if (window.innerWidth >= 1024) setIsMobileMenuOpen(false);
366
+ if (!mobileOpen) return;
367
+ const handler = (e) => {
368
+ if (e.key === "Escape") setMobileOpen(false);
368
369
  };
369
- window.addEventListener("resize", onResize);
370
- return () => window.removeEventListener("resize", onResize);
371
- }, []);
370
+ document.addEventListener("keydown", handler);
371
+ return () => document.removeEventListener("keydown", handler);
372
+ }, [mobileOpen]);
372
373
  useEffect(() => {
373
- if (submenu && currentId.startsWith(submenu.parentId) && !isSubmenuOpen && !isCollapsed) {
374
- setIsSubmenuOpen(true);
374
+ if (mobileOpen) {
375
+ document.body.style.overflow = "hidden";
376
+ } else {
377
+ document.body.style.overflow = "";
375
378
  }
376
- }, [currentId, submenu, isCollapsed]);
377
- useEffect(() => {
378
- if (isCollapsed) setIsSubmenuOpen(false);
379
- }, [isCollapsed]);
380
- const isSubmenuActive = submenu ? currentId.startsWith(submenu.parentId) : false;
381
- const activeCta = isAuthenticated ? ctaButton : ctaButtonUnauth;
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: () => setIsMobileMenuOpen(!isMobileMenuOpen),
387
- className: "fixed top-4 left-4 z-[60] lg:hidden w-10 h-10 bg-sg-elevated/80 backdrop-blur-md border border-white/10 rounded-xl shadow-lg flex items-center justify-center text-white hover:bg-sg-highlight transition-all",
388
- "aria-label": "Toggle menu",
389
- children: isMobileMenuOpen ? /* @__PURE__ */ jsx(X, { className: "w-5 h-5" }) : /* @__PURE__ */ jsx(Menu, { className: "w-5 h-5" })
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
- isMobileMenuOpen && /* @__PURE__ */ jsx(
523
+ mobileOpen && /* @__PURE__ */ jsx(
393
524
  "div",
394
525
  {
395
- className: "fixed inset-0 bg-black/60 backdrop-blur-sm z-40 lg:hidden",
396
- onClick: () => setIsMobileMenuOpen(false)
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: `fixed left-0 top-0 h-screen bg-background flex flex-col z-50 border-r border-white/5 transition-all duration-300 ease-in-out ${isMobileMenuOpen ? "translate-x-0 shadow-2xl w-[280px] sm:w-[300px]" : `${isCollapsed ? "lg:w-24" : "lg:w-[300px]"} -translate-x-full lg:translate-x-0 w-[280px]`}`,
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
- onToggleCollapse && /* @__PURE__ */ jsx(
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: onToggleCollapse,
408
- className: "hidden lg:flex absolute -right-3 top-24 w-6 h-6 bg-sg-highlight border border-white/10 rounded-full items-center justify-center text-muted-foreground hover:text-white transition-colors z-50 shadow-[0_0_10px_rgba(0,0,0,0.5)]",
409
- children: isCollapsed ? /* @__PURE__ */ jsx(ChevronRight, { className: "w-3.5 h-3.5" }) : /* @__PURE__ */ jsx(ChevronLeft, { className: "w-3.5 h-3.5" })
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
- /* @__PURE__ */ jsxs("div", { className: "flex-1 overflow-y-auto w-full", children: [
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 SkeletonBox2({ className = "" }) {
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-20 bg-background/95 backdrop-blur-xl border-b border-white/5 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.02)] items-center justify-between px-8 transition-all duration-300 ease-in-out",
662
- style: { left: isSidebarCollapsed ? "5rem" : "18rem" },
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-6", children: [
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-full bg-gradient-to-r from-blue-600 via-blue-500 to-indigo-600 text-white shadow-[0_0_20px_rgba(59,130,246,0.4)] hover:shadow-[0_0_30px_rgba(59,130,246,0.6)] hover:scale-105 transition-all duration-300 flex items-center gap-2.5 px-6 py-3 text-sm font-bold tracking-wide group relative overflow-hidden",
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("div", { className: "absolute inset-0 bg-gradient-to-r from-transparent via-white/25 to-transparent translate-x-[-200%] group-hover:translate-x-[200%] transition-transform duration-700 skew-x-12" }),
675
- /* @__PURE__ */ jsx(activeCta.icon, { className: "w-4 h-4 relative z-10" }),
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-10 w-px bg-gradient-to-b from-transparent via-white/10 to-transparent" }),
681
- isAuthenticated && wallet && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-4", children: /* @__PURE__ */ jsxs("div", { className: "group/wallet flex items-center gap-3 bg-background rounded-full pl-4 pr-2 py-2 border border-white/5 shadow-[inset_0_0_0_1px_rgba(255,255,255,0.02)] hover:border-white/10 hover:bg-sg-elevated transition-all duration-300", children: [
682
- /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
683
- /* @__PURE__ */ jsx("div", { className: "w-7 h-7 rounded-full bg-blue-500/10 flex items-center justify-center group-hover/wallet:bg-blue-500/20 transition-colors", children: /* @__PURE__ */ jsx(Wallet, { className: "w-3.5 h-3.5 text-blue-400" }) }),
684
- /* @__PURE__ */ jsxs("div", { className: "flex flex-col", children: [
685
- /* @__PURE__ */ jsx("span", { className: "text-[9px] uppercase tracking-widest text-sg-text-muted font-bold leading-none mb-1", children: "Balance" }),
686
- /* @__PURE__ */ jsxs(
687
- "span",
688
- {
689
- className: `text-sm font-bold text-foreground tracking-tight font-mono leading-none transition-opacity duration-300 ${wallet.isLoading ? "opacity-40" : "opacity-100"}`,
690
- children: [
691
- currency,
692
- safeBalance.toFixed(2)
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-8 h-8 rounded-full bg-blue-500/10 hover:bg-blue-500 text-blue-400 hover:text-white flex items-center justify-center transition-all duration-300 hover:scale-110 hover:shadow-[0_0_15px_rgba(59,130,246,0.5)]",
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 pl-2 relative transition-all duration-300", children: [
709
- /* @__PURE__ */ jsx("div", { className: "text-right hidden xl:block", children: user.isLoading ? /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
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(SkeletonBox2, { className: "w-10 h-10 rounded-2xl" }) : /* @__PURE__ */ jsx(
737
- "div",
738
- {
739
- className: `w-10 h-10 rounded-2xl bg-gradient-to-br from-blue-500 via-indigo-500 to-purple-600 flex items-center justify-center shadow-lg shadow-blue-500/20 text-white font-bold text-sm border border-white/10 transition-all duration-300 ${user.isLoading ? "opacity-40" : "opacity-100"}`,
740
- children: user.name.substring(0, 2).toUpperCase()
741
- }
742
- ),
743
- /* @__PURE__ */ jsx("div", { className: "absolute -bottom-0.5 -right-0.5 w-3 h-3 bg-emerald-400 border-2 border-background rounded-full shadow-[0_0_8px_rgba(52,211,153,0.6)] animate-pulse-subtle" })
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-3 px-4 py-2 rounded-2xl bg-background border border-white/5 hover:border-white/10 hover:bg-sg-elevated transition-all duration-300 group/signin",
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("span", { className: "text-sm font-bold text-muted-foreground group-hover/signin:text-white transition-colors", children: "Sign In" }),
752
- /* @__PURE__ */ jsx("div", { className: "w-9 h-9 rounded-xl bg-white/5 flex items-center justify-center border border-white/10 group-hover/signin:bg-white/10 group-hover/signin:scale-110 transition-all duration-300", children: /* @__PURE__ */ jsx(LogOut, { className: "w-4 h-4 text-muted-foreground group-hover/signin:text-white rotate-180 transition-colors" }) })
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-72"} relative z-10 w-full min-w-0 h-full overflow-y-auto overflow-x-hidden transition-all duration-300 ease-in-out`,
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-28 min-w-0 relative z-0",
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
- return /* @__PURE__ */ jsx("div", { className: twMerge("w-full h-full", className), style, children: /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", aspect, height: aspect ? void 0 : "100%", minWidth: 0, minHeight: aspect ? void 0 : 50, children }) });
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: /* @__PURE__ */ jsx(ResponsiveContainer, { width: "100%", height: "100%", minWidth: 0, minHeight: 0, children: variant === "bar" ? /* @__PURE__ */ jsxs(BarChart, { ...commonProps, 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-[160px]", children: /* @__PURE__ */ jsx(ChartContainer, { config: CHART_CONFIG, className: "h-full", children: /* @__PURE__ */ jsxs(AreaChart, { data, margin: { top: 10, right: 0, left: -20, bottom: 0 }, children: [
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-62HIMTUS.js.map
10343
- //# sourceMappingURL=chunk-62HIMTUS.js.map
10253
+ //# sourceMappingURL=chunk-2O7J3GXQ.js.map
10254
+ //# sourceMappingURL=chunk-2O7J3GXQ.js.map