Catalyst / admin/Synapse-Sonar 14.8 GB / 57.8 GB 40.0 GB free
Help Sign in

admin / Synapse-Sonar

public

Attack Surface Simulation

Code Issues Pull requests Pipelines Packages Security Insights Wiki Settings
Synapse-Sonar / synapse-sonar / app / (app) / page.tsx 1239 B · main
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import NetworkGraph from "@/components/NetworkGraph";

export default function MapPage() {
  return (
    <div className="flex h-full flex-col">
      <header className="flex items-center justify-between border-b border-slate-800 bg-[#0f172a] px-6 py-3">
        <div>
          <h1 className="text-sm font-semibold text-slate-100">Internal Attack Surface</h1>
          <p className="text-xs text-slate-500">
            Live topology · hover a node for details, click to deep-dive
          </p>
        </div>
        <div className="flex items-center gap-4 text-xs text-slate-400">
          <Legend color="#06b6d4" label="Data flow" />
          <Legend color="#ef4444" label="Critical CVE" />
          <Legend color="#f43f5e" label="Rogue / Shadow IT" />
          <Legend color="#8b5cf6" label="Blast radius" />
        </div>
      </header>
      <div className="flex-1">
        <NetworkGraph />
      </div>
    </div>
  );
}

function Legend({ color, label }: { color: string; label: string }) {
  return (
    <span className="flex items-center gap-1.5">
      <span
        className="h-2 w-2 rounded-full"
        style={{ backgroundColor: color, boxShadow: `0 0 6px ${color}` }}
      />
      {label}
    </span>
  );
}