'use client'; import * as React from 'react'; import { motion, useReducedMotion } from 'framer-motion'; type Props = { className?: string; // e.g. "w-full h-72" bg?: string; // default white }; /** Palette */ const ACCENT = '#00b8db'; const STROKE = '#111827'; // black-ish const GRAY = '#9CA3AF'; const GRAY_LT = '#E5E7EB'; function Laptop({ x, y }: { x: number; y: number }) { return ( {/* screen */} {/* base */} ); } function ServerStack({ x, y }: { x: number; y: number }) { return ( {[0, 1, 2].map((i) => ( ))} {/* tiny rack base */} ); } function Cloud({ x, y }: { x: number; y: number }) { return ( ); } function Arrow({ d, delay = 0 }: { d: string; delay?: number }) { return ( ); } /** Small packet traveling along keyframe x/y arrays */ function Packet({ xs, ys, delay = 0, color = ACCENT, duration = 2.2, }: { xs: number[]; ys: number[]; delay?: number; color?: string; duration?: number; }) { const prefersReduced = useReducedMotion(); return ( ); } export default function ProxyForwarding({ className, bg = '#ffffff' }: Props) { const W = 1000; const H = 420; // Key points const C1 = { x: 140, y: 90 }; const C2 = { x: 140, y: 210 }; const C3 = { x: 140, y: 330 }; const PROXY = { x: 420, y: 210 }; const CLOUD = { x: 640, y: 210 }; const DEST = { x: 860, y: 210 }; return ( ); }