"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 (
);
}
const dots = Array.from({ length: count }, (_, i) => ({
x: (i * 53) % 200,
y: (i * 89) % 200,
r: 1.5 + ((i * 7) % 3),
}));
return (
);
}