import { Link } from 'wouter'; const T = { surface: 'rgba(255,255,255,0.025)', border: 'rgba(255,255,255,0.08)', text: '#f5f5f5', dim: '#8a8a8a', muted: '#5e5e5e', accent: '#c9b787', }; function stripTrailingSlash(path: string) { return path.endsWith('/') && path.length > 1 ? path.slice(0, -1) : path; } const base = stripTrailingSlash((import.meta.env.BASE_URL ?? '/').replace(/\/$/, '') || ''); export type DefensePageId = | 'precision-ai' | 'weaponized-intel' | 'atlas-shield' | 'adversarial' | 'supply-chain' | 'agent-zero-trust' | 'gard-robustness' | 'cyber-resilience'; interface DefensePage { id: DefensePageId; label: string; blurb: string; group: 'defense' | 'resilience'; } export const DEFENSE_PAGES: DefensePage[] = [ { id: 'precision-ai', label: 'Precision AI', blurb: 'SmartScore triage', group: 'defense' }, { id: 'weaponized-intel', label: 'Weaponized Intel', blurb: 'Adversary kill-chain', group: 'defense' }, { id: 'atlas-shield', label: 'ATLAS Shield', blurb: 'MITRE coverage', group: 'defense' }, { id: 'adversarial', label: 'Adversarial Resilience', blurb: 'Attack simulations', group: 'defense' }, { id: 'supply-chain', label: 'Supply Chain Attestation', blurb: 'SBOM + vendor risk', group: 'defense' }, { id: 'agent-zero-trust', label: 'Agent Zero Trust', blurb: 'Ephemeral identity', group: 'defense' }, { id: 'gard-robustness', label: 'GARD Robustness', blurb: 'Adversarial robustness', group: 'resilience' }, { id: 'cyber-resilience', label: 'Cyber Resilience', blurb: 'DARPA hub', group: 'resilience' }, ]; export function defensePath(id: DefensePageId) { return `${base}/${id}`; } interface RelatedItem { id: DefensePageId; reason?: string; } export function DefenseCrossNav({ currentId, related, }: { currentId: DefensePageId; related?: RelatedItem[]; }) { const reasonMap = new Map((related ?? []).map(r => [r.id, r.reason])); const relatedIds = new Set((related ?? []).map(r => r.id)); return (
Defense Suite — Related Pages
{DEFENSE_PAGES.filter(p => p.id !== currentId).map(page => { const isRelated = relatedIds.has(page.id); const reason = reasonMap.get(page.id); return (
{page.label} {isRelated && ( related )}
{reason ?? page.blurb}
); })}
); } export function DefenseLink({ to, children, title, }: { to: DefensePageId; children: React.ReactNode; title?: string; }) { return ( {children} ); }