"use client"; export interface StaticFallbackProps { variant?: "signal" | "orb"; count?: number; className?: string; } /** * 2D SVG silhouette used when WebGL is unavailable — so the hero still reads * as a living visual, never blank. `variant="signal"` = drifting dot grid; * `variant="orb"` = speaker orbs. */ export function StaticFallback({ variant = "signal", count = 60, className, }: StaticFallbackProps) { if (variant === "orb") { const orbs = Array.from({ length: count > 12 ? 12 : count }, (_, i) => { const angle = (i / 12) * Math.PI * 2; const r = 60; return { x: 100 + Math.cos(angle) * r, y: 100 + Math.sin(angle) * r, d: i * 0.3, }; }); return ( {orbs.map((o, i) => ( ))} ); } const dots = Array.from({ length: count }, (_, i) => ({ x: (i * 53) % 200, y: (i * 89) % 200, r: 1.5 + ((i * 7) % 3), })); return ( {dots.map((d, i) => ( ))} ); }