'use client';
import * as React from 'react';
import { motion, useReducedMotion } from 'framer-motion';
type Props = {
className?: string; // e.g. "w-full h-64"
bg?: string; // defaults to white
};
// Palette (only these)
const ACCENT = '#00b8db';
const STROKE = '#111827';
const GRAY = '#9CA3AF';
const GRAY_LT = '#E5E7EB';
function Magnifier({
x = 0,
y = 0,
flip = false,
delay = 0,
duration = 3,
}: {
x?: number;
y?: number;
flip?: boolean; // rotate handle direction
delay?: number;
duration?: number;
}) {
const prefersReduced = useReducedMotion();
return (
{/* glass */}
{/* subtle scanning pulse inside the glass */}
{/* handle */}
);
}
function ServerBox({
x,
y,
w = 88,
h = 50,
delay = 0,
accentPulse = false,
}: {
x: number;
y: number;
w?: number;
h?: number;
delay?: number;
accentPulse?: boolean;
}) {
const prefersReduced = useReducedMotion();
return (
{/* outer box */}
{/* top bar */}
{/* activity line */}
{/* “detected” indicator */}
);
}
export default function ProxyDetection({ className, bg = '#ffffff' }: Props) {
// Canvas
const W = 900;
const H = 180;
// Layout: a row of proxy servers
const rowY = H / 2;
const xs = [180, 320, 460, 600, 740];
// Sequence timings so boxes light up as magnifier passes
const delays = [0.8, 0.6, 0.4, 0.2, 0.0];
return (
);
}