import { RunResult, Scores } from "../types/aegis"; const API = "http://localhost:8000"; function dl(filename: string, content: string) { const a = document.createElement("a"); a.href = "data:text/plain;charset=utf-8," + encodeURIComponent(content); a.download = filename; a.click(); } export function PanelEyebrow({ dot, color, label, meta }: { dot: string; color: string; label: string; meta?: string }) { return (
{label} {meta && {meta}}
); } export function MetaRow({ k, v, vc = "text-aegis-fg-2" }: { k: string; v: string; vc?: string }) { return (
{k} {v}
); } export function GateBadge({ v, colorClass, bgClass, borderClass }: { v: string; colorClass: string; bgClass: string; borderClass: string }) { return {v}; } export function ScoreBox({ label, val, colorClass }: { label: string; val: string; colorClass: string }) { return (
{val}
{label}
); } export function ArtifactGrid({ results, technique }: { results: RunResult; technique: string }) { const tid = technique.split("·")[0].trim(); const cards = [ { label: "SIGMA YAML", desc: `Detection rule for ${tid}`, top: "border-t-aegis-blue", text: "text-aegis-blue-soft", content: results.artifacts.sigma, filename: `sigma_${tid}.yml` }, { label: "SPLUNK SPL", desc: "Hunting query · index=wineventlog", top: "border-t-aegis-amber", text: "text-aegis-amber-soft", content: results.artifacts.splunk, filename: `splunk_${tid}.spl` }, { label: "SOC PLAYBOOK", desc: "Triage · contain · escalate", top: "border-t-aegis-green", text: "text-aegis-green-soft", content: results.outputs.response, filename: `playbook_${tid}.md` }, { label: "VECTR EXPORT", desc: "Navigator-style coverage JSON", top: "border-t-aegis-purple", text: "text-aegis-purple-soft", content: JSON.stringify({ technique, scores: results.scores, outputs: results.outputs }, null, 2), filename: `vectr_${tid}.json` }, { label: "VALIDATION", desc: `Coverage ${results.scores.coverage}% · Safety ${results.scores.safety_verdict}`, top: "border-t-aegis-red", text: "text-aegis-red-soft", content: results.outputs.verifier, filename: `validation_${tid}.json` }, { label: "PDF REPORT", desc: "SOC handoff bundle", top: "border-t-aegis-fg-muted", text: "text-aegis-fg-muted", content: null, filename: `aegisops_${tid}.pdf` }, ]; return (
{cards.map((art, i) => (
{art.label}
{art.desc}
))}
); }