"use client"; import type React from "react"; import { useEffect, useState } from "react"; import { cn } from "@/lib/utils"; interface MeteorsProps { number?: number; minDelay?: number; maxDelay?: number; minDuration?: number; maxDuration?: number; angle?: number; className?: string; } export const Meteors = ({ number = 20, minDelay = 0.2, maxDelay = 1.2, minDuration = 2, maxDuration = 10, angle = 215, className, }: MeteorsProps) => { const [meteorStyles, setMeteorStyles] = useState>( [] ); useEffect(() => { const styles = [...new Array(number)].map(() => ({ "--angle": `${-angle}deg`, top: "-5%", left: `calc(0% + ${Math.floor(Math.random() * window.innerWidth)}px)`, animationDelay: `${Math.random() * (maxDelay - minDelay) + minDelay}s`, animationDuration: Math.floor(Math.random() * (maxDuration - minDuration) + minDuration) + "s", })); setMeteorStyles(styles); }, [number, minDelay, maxDelay, minDuration, maxDuration, angle]); return ( <> {[...meteorStyles].map((style, idx) => ( // Meteor Head {/* Meteor Tail */}
))} ); };