"use client"; import { motion, useReducedMotion } from "framer-motion"; import clsx from "clsx"; type Props = { className?: string; accent?: string; bg?: string; }; const W = 760; const H = 420; /** Node = local data cluster */ const Node = ({ x, y, r = 10, accent = "#00b8db", pulse = false, delay = 0, }: { x: number; y: number; r?: number; accent?: string; pulse?: boolean; delay?: number; }) => { const prefers = useReducedMotion(); return ( <> {/* outer glow */} {/* data core */} ); }; /** A data particle traveling along a given path */ const Particle = ({ path, delay = 0, accent = "#00b8db", duration = 2, reverse = false, }: { path: string; delay?: number; accent?: string; duration?: number; reverse?: boolean; }) => { const prefers = useReducedMotion(); return ( ); }; export default function NoExtraction({ className, accent = "#00b8db", bg = "#0a0a0a", }: Props) { const center = { x: 380, y: 210 }; const WBOX = 360; const HBOX = 220; const boxX = center.x - WBOX / 2; const boxY = center.y - HBOX / 2; // local nodes within boundary const nodes = [ { x: center.x - 80, y: center.y - 40 }, { x: center.x + 60, y: center.y - 50 }, { x: center.x, y: center.y + 50 }, { x: center.x - 50, y: center.y + 30 }, ]; // internal circulation paths const internalPaths = [ `M ${center.x - 80} ${center.y - 40} Q ${center.x} ${center.y - 80} ${center.x + 60} ${center.y - 50}`, `M ${center.x - 50} ${center.y + 30} Q ${center.x} ${center.y + 70} ${center.x} ${center.y + 50}`, ]; // escape attempt path const attemptPath = `M ${center.x} ${center.y} Q ${center.x + 200} ${center.y - 50} ${center.x + 130} ${center.y}`; return ( ); }