"use client"; import { useTradingData } from "@/hooks/use-trading-data"; import { useStaggerEntry } from "@/hooks/use-stagger-entry"; import { Header, PriceCard, AccountCard, SessionCard, RiskCard, SignalCard, RegimeCard, PositionsCard, LogCard, PriceChart, EquityChart, BotStatusCard, EntryFilterCard, PerformanceCard, ModelCard, } from "@/components/dashboard"; import { Skeleton } from "@/components/ui/skeleton"; import { TooltipProvider } from "@/components/ui/tooltip"; import { cn } from "@/lib/utils"; function LoadingSkeleton() { return (
{[...Array(4)].map((_, i) => ( ))}
{[...Array(4)].map((_, i) => ( ))}
{[...Array(4)].map((_, i) => ( ))}
); } function ErrorDisplay({ message }: { message: string }) { return (
!

Connection Error

{message}

Make sure the API server is running on port 8000

); } export default function Dashboard() { const { data, loading, error, dataAge } = useTradingData(); const visible = useStaggerEntry(17, 40); const now = new Date(); const wibTime = now.toLocaleTimeString("en-US", { timeZone: "Asia/Jakarta", hour12: false, hour: "2-digit", minute: "2-digit", second: "2-digit", }); if (loading && !data) { return (
); } if (error && !data) { return (
); } if (!data) return null; return (
{/* Main grid — fills remaining height, NO scroll */}
{/* Row 1: Market Overview */}
{/* Row 2: AI Signals */}
{/* Row 3: Charts */}
{/* Row 4: Trading + Log */}
); }