import { AreaChart, Area, BarChart, Bar, PieChart, Pie, Cell, XAxis, YAxis, CartesianGrid, } from "recharts"; import { TrendingUp, TrendingDown, Users, DollarSign, ShoppingCart, Activity, ArrowUpRight, Circle, } from "lucide-react"; // ---------- data ---------- const revenueSeries = [ { d: "Mon", v: 2400, prev: 1800 }, { d: "Tue", v: 3100, prev: 2200 }, { d: "Wed", v: 2800, prev: 2600 }, { d: "Thu", v: 4200, prev: 3100 }, { d: "Fri", v: 3900, prev: 3500 }, { d: "Sat", v: 5100, prev: 4000 }, { d: "Sun", v: 4700, prev: 4200 }, ]; const channels = [ { name: "Organic", v: 4200 }, { name: "Direct", v: 3100 }, { name: "Paid", v: 2400 }, { name: "Social", v: 1800 }, { name: "Referral", v: 900 }, ]; const segments = [ { name: "Pro", v: 48, color: "#6366f1" }, { name: "Team", v: 28, color: "#10b981" }, { name: "Starter", v: 18, color: "#f59e0b" }, { name: "Free", v: 6, color: "#e5e7eb" }, ]; const activity = [ { name: "Ava Chen", action: "upgraded to Pro", time: "2m", amount: "+$49" }, { name: "Sora Okafor", action: "renewed annual plan", time: "21m", amount: "+$588" }, { name: "Jin Park", action: "cancelled subscription", time: "44m", amount: "-$29" }, { name: "Elena Rossi", action: "upgraded to Team", time: "1h", amount: "+$199" }, { name: "Kai Nakamura", action: "added 3 seats", time: "2h", amount: "+$87" }, ]; // ---------- primitives ---------- function KPI({ label, value, delta, positive, icon: Icon, accent, }: { label: string; value: string; delta: string; positive: boolean; icon: any; accent: string; }) { return (
{label}
{value}
{positive ? : } {delta}
vs last week
); } // ---------- dashboard ---------- export default function Dashboard() { return (
{/* Header */}
Prism ยท Monday, 16 April 2026

Good morning

All systems healthy
Last 7 days
{/* KPIs */}
{/* Main row: revenue chart (wide) + activity (narrow) */}
Revenue
Daily gross revenue, last 7 days
This week
Last week
Recent activity
Last 2 hours
{activity.map((a, i) => (
{a.name.split(" ").map((p) => p[0]).join("")}
{a.name}{" "} {a.action}
{a.time} ago
{a.amount && (
{a.amount}
)}
))}
{/* Bottom row: Channels bar + Plan mix donut */}
Channels
Traffic source breakdown
Plan mix
Share of active subscriptions
{segments.map((s) => ( ))}
{segments.map((s) => (
{s.name}
{s.v}%
))}
); }