import type { CSSProperties, ReactNode } from 'react'; export type DiagramKind = 'network' | 'server' | 'sccm' | 'voice'; const INK = '#D7E2EA'; const TEAL = '#2BB3A6'; const MUTED = 'rgba(215,226,234,0.55)'; const FILL = '#14161a'; function Box({ x, y, w, h, label, sub, accent }: { x: number; y: number; w: number; h: number; label: string; sub?: string; accent?: boolean }) { return ( {label} {sub && {sub}} ); } function Line({ x1, y1, x2, y2, dashed }: { x1: number; y1: number; x2: number; y2: number; dashed?: boolean }) { return ; } function Arrow({ x1, y, x2, label }: { x1: number; y: number; x2: number; label?: string }) { return ( {label && {label}} ); } function Dot({ cx, cy, r = 14 }: { cx: number; cy: number; r?: number }) { return ; } function Wifi({ cx, cy }: { cx: number; cy: number }) { return ( ); } const diagrams: Record = { network: { label: 'Network topology: Fortinet firewall connects to Fortinet 48P switches, which connect to access points.', body: ( <> {[90, 210, 390, 510].map((x, i) => ( ))} Access point uplift Network topology upgrade ), }, server: { label: 'Server upgrade: virtual machines and services move from the existing server to the upgraded server, with updated network settings.', body: ( <> Existing server Upgraded server ), }, sccm: { label: 'SCCM implementation: install and configure SCCM, prepare settings, then establish the task-sequence process for endpoints.', body: ( <> {[150, 250, 350, 450].map((x) => ( ))} Endpoints built through the task sequence ), }, voice: { label: 'Microsoft Teams calling: number porting, dial-plan and call-flow design, then users supported by training, documentation and adoption monitoring.', body: ( <> {[100, 300, 500].map((x) => ( ))} User training Documentation Adoption monitoring Microsoft Teams calling ), }, }; export default function ProjectDiagram({ kind, className, style }: { kind: DiagramKind; className?: string; style?: CSSProperties }) { const d = diagrams[kind]; return ( {d.body} ); }