import Link from "next/link";
import type { CSSProperties, ReactNode } from "react";
type MockVariant = "mock1" | "mock2" | "mock3" | "mock4";
type DashboardMockProps = {
variant: MockVariant;
};
const variants: Record<
MockVariant,
{
title: string;
premise: string;
mode: string;
layout: string;
}
> = {
mock1: {
title: "Command Deck",
premise:
"Closest to the reference: left navigation, ticker ribbon, dense evidence panes, replay rail.",
mode: "Dense ops",
layout: "classic"
},
mock2: {
title: "Investigation Stack",
premise:
"A calmer analyst layout with the selected symbol story in the center and context wrapped around it.",
mode: "Forensic",
layout: "focus"
},
mock3: {
title: "Signal Wall",
premise:
"Prioritizes alert triage and cross-symbol scanning before a user drills into price action.",
mode: "Triage",
layout: "signals"
},
mock4: {
title: "Replay Lab",
premise:
"A replay-first structure with timeline, event tape, and causality context always visible.",
mode: "Replay",
layout: "replay"
}
};
const tickers = [
["SPY", "529.18", "+0.23%", "up"],
["QQQ", "452.47", "+0.31%", "up"],
["AAPL", "194.88", "+1.22%", "up"],
["NVDA", "120.19", "-0.41%", "down"],
["TSLA", "180.72", "+0.72%", "up"],
["AMZN", "186.31", "+0.35%", "up"],
["IWM", "205.41", "+0.21%", "up"]
];
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", "Bullish"],
["5m", "TSLA", "Jul 19", "205 C", "10,000", "$3.45M", "Block", "Bullish"],
["6m", "AMZN", "May 17", "185 P", "4,500", "$1.20M", "Sweep", "Bearish"],
["7m", "IWM", "Jun 21", "207 C", "3,100", "$712K", "Sweep", "Bullish"],
["8m", "AAPL", "May 24", "197.5 C", "7,600", "$2.01M", "Block", "Bullish"]
];
const signals = [
["09:41:10", "Dark Flow Sweep", "AAPL", "$4.32M", "Bullish"],
["09:40:58", "Unusual Options Activity", "NVDA", "$2.01M", "Bullish"],
["09:40:21", "News Catalyst", "AAPL", "AI update", "News"],
["09:39:47", "Classifier Hit: Momentum", "TSLA", "91%", "Bullish"],
["09:39:12", "Large Block Trade", "AMZN", "$3.67M", "Bearish"]
];
const feedHealth = [
["OPRA Options", "Healthy", "120ms", "2,341"],
["CBOE Quotes", "Healthy", "85ms", "1,987"],
["Nasdaq TotalView", "Healthy", "92ms", "3,102"],
["NYSE Pillar", "Degraded", "412ms", "932"],
["News", "Healthy", "1.2s", "12"],
["Dark Pool", "Healthy", "1.0s", "421"]
];
const darkFlow = [
["09:41:05", "AAPL", "Buy", "25,000", "$4.87M", "Sweep"],
["09:40:51", "AAPL", "Buy", "18,500", "$3.60M", "Sweep"],
["09:40:35", "AAPL", "Sell", "30,000", "$5.84M", "Block"],
["09:39:59", "AAPL", "Buy", "12,000", "$2.34M", "Sweep"],
["09:38:47", "AAPL", "Sell", "21,000", "$4.09M", "Block"]
];
const variantOrder: MockVariant[] = ["mock1", "mock2", "mock3", "mock4"];
export function DashboardMock({ variant }: DashboardMockProps) {
const config = variants[variant];
return (
{config.premise}{config.title}
Dark sweep pressure aligns with short-window momentum and a fresh news catalyst. Context confidence is high, but the largest block remains off-exchange and should be checked against next print behavior.