import { useEffect, useRef } from 'react' import { motion } from 'framer-motion' import { gsap } from 'gsap' import AudioVisualizer3D from './AudioVisualizer3D' import HeroParticles from './HeroParticles' const fadeUp = (delay = 0) => ({ initial: { opacity: 0, y: 32 }, animate: { opacity: 1, y: 0 }, transition: { duration: 0.85, ease: [0.22, 1, 0.36, 1], delay }, }) export default function Hero({ isPlaying, onTogglePlay }) { const headingRef = useRef() useEffect(() => { const ctx = gsap.context(() => { gsap.from('.hero-line', { y: 80, opacity: 0, duration: 1, stagger: 0.14, ease: 'power4.out', delay: 0.2, }) }) return () => ctx.revert() }, []) return (
{/* Particle bg */}
{/* Ambient blobs */}
{/* 3D Visualizer */}
{/* Main content */}
{/* Badge */} Now Streaming · 40M tracks {/* Headline */}
Feel The
Music
In Three Dimensions
{/* Subtitle */} Where sound becomes sculpture. Every frequency, every beat — visualized in real time across a living 3D canvas. {/* CTAs */} {isPlaying ? <> Pause : <> Start Listening } Explore Collection {/* Stats row */} {[['40M+', 'Tracks'], ['2.1M', 'Artists'], ['180+', 'Countries'], ['99.9%', 'Uptime']].map(([num, label]) => (

{num}

{label}

))}
{/* Scroll cue */} Scroll
) } function PlayIcon() { return ( ) } function PauseIcon() { return ( ) }