// hero-orb.jsx — Premium abstract 3D orb visual for the hero // Pure SVG. Renders an iridescent metallic sphere with an // orbiting agent/process diagram overlaid — looks like a real product visual, // not a stock AI gradient. const HeroOrb = () => { const ref = React.useRef(null); const [t, setT] = React.useState(0); React.useEffect(() => { let raf, start = performance.now(); const tick = (now) => { setT((now - start) / 1000); raf = requestAnimationFrame(tick); }; raf = requestAnimationFrame(tick); return () => cancelAnimationFrame(raf); }, []); // Parallax to mouse const [pt, setPt] = React.useState({ x: 0, y: 0 }); React.useEffect(() => { const onMove = (e) => { const r = ref.current?.getBoundingClientRect(); if (!r) return; const cx = r.left + r.width / 2; const cy = r.top + r.height / 2; const nx = (e.clientX - cx) / r.width; const ny = (e.clientY - cy) / r.height; setPt({ x: Math.max(-1, Math.min(1, nx)), y: Math.max(-1, Math.min(1, ny)) }); }; window.addEventListener("mousemove", onMove, { passive: true }); return () => window.removeEventListener("mousemove", onMove); }, []); const px = pt.x * 8; const py = pt.y * 8; // Orbit nodes const nodes = [ { label: "INPUT", angle: -110, r: 230, k: "in" }, { label: "AGENT", angle: -35, r: 250, k: "ag" }, { label: "TOOLS", angle: 55, r: 235, k: "tl" }, { label: "OUTPUT", angle: 140, r: 245, k: "ou" }, ]; return (