'use client'; import { useRef, useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { gsap } from 'gsap'; import PageLayout from './components/PageLayout'; import Crosshair from './components/Crosshair'; import Waves from './components/background/waves'; import SplitText from './components/SplitText'; export default function HomePage() { const containerRef = useRef(null); const [isHover, setIsHover] = useState(false); const [isMobile, setIsMobile] = useState(() => { if (typeof window === 'undefined') return false; return window.matchMedia('(max-width: 768px)').matches; }); const router = useRouter(); // Mobile: instantly redirect to login useEffect(() => { if (!isMobile) return; router.replace('/login'); }, [isMobile, router]); // Keep breakpoint updated (resize/orientation) useEffect(() => { const mq = window.matchMedia('(max-width: 768px)'); const apply = () => setIsMobile(mq.matches); mq.addEventListener?.('change', apply); window.addEventListener('resize', apply, { passive: true }); return () => { mq.removeEventListener?.('change', apply); window.removeEventListener('resize', apply); }; }, []); const handleLoginClick = () => { // Mobile: no page fade animation if (isMobile || !containerRef.current) { router.push('/login'); return; } gsap.to(containerRef.current, { opacity: 0, duration: 0.6, ease: 'power2.out', onComplete: () => router.push('/login'), }); }; // Ensure LOGIN never stays stuck after scrolling / wheel (desktop only) useEffect(() => { if (isMobile) return; const resetHover = () => setIsHover(false); window.addEventListener('wheel', resetHover, { passive: true }); window.addEventListener('scroll', resetHover, { passive: true }); return () => { window.removeEventListener('wheel', resetHover); window.removeEventListener('scroll', resetHover); }; }, [isMobile]); // Prevent any home UI flash on mobile if (isMobile) return null; return (
{/* Waves background */}

setIsHover(true)} onMouseLeave={isMobile ? undefined : () => setIsHover(false)} className="cursor-pointer" > {isMobile ? ( PROFIT PLANET ) : ( )}

{/* No parallax/crosshair on mobile */} {!isMobile && }
); }