import Link from "next/link"; import type { CSSProperties, ReactNode } from "react"; type MockVariant = "mock1" | "mock2" | "mock3" | "mock4"; type DashboardMockProps = { variant: MockVariant; }; type Concept = { title: string; shortName: string; routeName: string; premise: string; bodyClass: string; }; const concepts: Record = { mock1: { title: "Signal Court", shortName: "Court", routeName: "Case Board", premise: "A fired signal is treated as a legal brief: evidence, objections, market context, and the live price trace are arranged around the claim.", bodyClass: "mock-court" }, mock2: { title: "Triage Desk", shortName: "Desk", routeName: "Live Queue", premise: "The user works down a prioritized desk queue with clear routing, severity, source health, and next action controls always in reach.", bodyClass: "mock-desk" }, mock3: { title: "Replay Theatre", shortName: "Theatre", routeName: "Session Review", premise: "Replay becomes a scrub room: the time rail leads, and every event, chart move, and note locks to the current evidence frame.", bodyClass: "mock-theatre" }, mock4: { title: "Sector Cartography", shortName: "Map", routeName: "Market Map", premise: "Cross-market pressure is drawn as territories, so the trader can see where attention clusters before opening a single-symbol case.", bodyClass: "mock-map" } }; const variantOrder: MockVariant[] = ["mock1", "mock2", "mock3", "mock4"]; const symbols = [ { symbol: "AAPL", price: "194.88", move: "+1.22%", direction: "up", score: 94, sector: "Mega cap tech" }, { symbol: "NVDA", price: "120.19", move: "-0.41%", direction: "down", score: 81, sector: "AI semis" }, { symbol: "TSLA", price: "180.72", move: "+0.72%", direction: "up", score: 76, sector: "EV complex" }, { symbol: "AMZN", price: "186.31", move: "+0.35%", direction: "up", score: 68, sector: "Consumer platform" }, { symbol: "IWM", price: "205.41", move: "+0.21%", direction: "up", score: 59, sector: "Small caps" } ]; const anomalies = [ { time: "09:41:10", symbol: "AAPL", title: "Dark sweep aligns with call pressure", value: "$4.32M", confidence: "High", direction: "Bullish", cause: "off-exchange prints led the options burst by 72s" }, { time: "09:40:58", symbol: "NVDA", title: "Call wall absorbed at 120", value: "$2.01M", confidence: "Medium", direction: "Mixed", cause: "quote lift faded after the second split sweep" }, { time: "09:39:47", symbol: "TSLA", title: "Momentum classifier fired", value: "91%", confidence: "High", direction: "Bullish", cause: "volume acceleration exceeded five-session baseline" }, { time: "09:39:12", symbol: "AMZN", title: "Large block against tape", value: "$3.67M", confidence: "Watch", direction: "Bearish", cause: "print direction diverged from sector basket" } ]; const evidence = [ ["Options", "195 C sweep", "$2.31M", "Bullish"], ["Equity", "25,000 dark buy", "$4.87M", "Bullish"], ["News", "AI update crossed", "09:40:21", "Info"], ["Tape", "Momentum burst", "+1.22%", "Bullish"], ["Venue", "Off-exchange share", "64%", "Watch"] ]; const optionRows = [ ["2m", "AAPL", "May 17 195 C", "5,240", "$2.31M", "Sweep", "Bullish"], ["3m", "AAPL", "Jun 21 200 C", "6,800", "$1.87M", "Block", "Bullish"], ["4m", "NVDA", "May 24 120 C", "9,150", "$2.01M", "Split", "Mixed"], ["5m", "TSLA", "Jul 19 205 C", "10,000", "$3.45M", "Block", "Bullish"], ["6m", "AMZN", "May 17 185 P", "4,500", "$1.20M", "Sweep", "Bearish"] ]; const health = [ ["OPRA", "healthy", "120ms"], ["CBOE", "healthy", "85ms"], ["NYSE", "degraded", "412ms"], ["News", "healthy", "1.2s"] ]; const timeline = [ ["09:36", "Baseline drift", "AAPL and QQQ correlation widens"], ["09:39", "First print", "Dark block appears before visible call lift"], ["09:41", "Signal fired", "Sweep pressure confirms the print cluster"], ["09:45", "Replay note", "Price accepted above prior liquidity shelf"] ]; const atlasGroups = [ { name: "Mega cap tech", heat: 92, flow: "+$8.4M", symbols: ["AAPL", "MSFT", "AMZN"], x: 16, y: 22 }, { name: "AI semis", heat: 81, flow: "+$5.1M", symbols: ["NVDA", "AMD", "AVGO"], x: 64, y: 26 }, { name: "Beta basket", heat: 66, flow: "+$3.8M", symbols: ["TSLA", "COIN", "PLTR"], x: 34, y: 66 }, { name: "Defensive", heat: 38, flow: "-$1.2M", symbols: ["XLU", "XLV", "PG"], x: 74, y: 70 } ]; export function DashboardMock({ variant }: DashboardMockProps) { const concept = concepts[variant]; return (
{variant === "mock1" ? : null} {variant === "mock2" ? : null} {variant === "mock3" ? : null} {variant === "mock4" ? : null}
); } function MockNavigation({ active, concept }: { active: MockVariant; concept: Concept }) { return (
IF mock lab
live sketch 09:41:23 ET

{concept.routeName}

{concept.title}

{concept.premise}
); } function SignalCourt() { return (
AAPL

Dark sweep pressure is confirmed by call lift.

Treat the alert as a claim to prove. The board shows confirming evidence, contradictions, and what must happen next before the trade deserves attention.

); } function TriageDesk() { return (
{anomalies.map((item, index) => (
{item.symbol} {item.title} {item.cause}
{item.confidence}
))}
AAPL

Dark sweep aligns with call pressure

Next action: verify whether price accepts above the prior liquidity shelf.

); } function ReplayTheatre() { return (
May 16, 2024

09:41:23 confirmation window

32x
    {timeline.map(([time, title, detail]) => (
  1. {title} {detail}
  2. ))}
); } function SectorCartography() { return (
{atlasGroups.map((group) => (
{group.name} {group.flow}
))}
{atlasGroups.map((group) => (
{group.name} {group.symbols.join(" / ")}
))}
); } function Panel({ className, title, children }: { className?: string; title: string; children: ReactNode }) { return (

{title}

{children}
); } function EvidenceStack() { return (
{evidence.map(([source, title, value, tone]) => (
{source} {title}
{value} {tone}
))}
); } function ChartSketch({ density, marker }: { density: number; marker: string }) { return (
AAPL 194.88 +1.22%
); } function FlowRows({ compact = false }: { compact?: boolean }) { const rows = compact ? optionRows.slice(0, 4) : optionRows; return (
Age Symbol Contract Size Premium Read
{rows.map(([time, symbol, contract, size, premium, type, read]) => (
{time} {symbol} {contract} {size} {premium} {type}
))}
); } function HealthRows() { return (
{health.map(([name, state, lag]) => (
{name} {state} {lag}
))}
); } function FactList({ items }: { items: string[][] }) { return (
{items.map(([label, value]) => (
{label}
{value}
))}
); } function ReplayRail() { return (
09:00
09:41:23 10:15
); } function Meter({ value }: { value: number }) { return ( {value} ); } function Badge({ tone, children }: { tone: string; children: ReactNode }) { const normalized = tone === "Bearish" ? "bearish" : tone === "Watch" || tone === "Mixed" ? "watch" : tone === "Info" ? "info" : "bullish"; return {children}; }