"use client";
import { motion, useReducedMotion } from "framer-motion";
import clsx from "clsx";
type Props = {
className?: string;
accent?: string; // cyan highlight
gridStroke?: string; // grid color (default #2b2a2a as requested)
};
const W = 760;
const H = 420;
const Server = ({
x,
y,
w = 140,
h = 90,
rows = 3,
}: {
x: number;
y: number;
w?: number;
h?: number;
rows?: number;
}) => {
const rowH = (h - 24) / rows;
return (
{/* chassis */}
{/* bays */}
{Array.from({ length: rows }).map((_, i) => (
{/* bay indicators */}
))}
{/* subtle top highlight */}
);
};
export default function SovereignCompute({
className,
accent = "#00b8db",
gridStroke = "#2b2a2a",
}: Props) {
const prefers = useReducedMotion();
// Positions
const left = { x: 140, y: 120 };
const mid = { x: 310, y: 150 };
const right= { x: 500, y: 120 };
// Shield position (trust boundary)
const shield = { cx: 600, cy: 250, r: 38 };
// Attestation paths from racks to shield
const pathFromLeft = `M ${left.x + 140} ${left.y + 45} C 330 150, 470 200, ${shield.cx - 50} ${shield.cy}`;
const pathFromMid = `M ${mid.x + 140} ${mid.y + 45} C 420 190, 500 215, ${shield.cx - 50} ${shield.cy}`;
const pathFromRight = `M ${right.x + 140} ${right.y + 45} C 520 180, 560 220, ${shield.cx - 50} ${shield.cy}`;
return (
);
}