'use client'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; import { motion, useReducedMotion } from 'framer-motion'; import { useEffect, useState } from 'react'; export function LeagueDiscoveryMockup() { const shouldReduceMotion = useReducedMotion(); const [, setHoveredIndex] = useState(null); const [isMobile, setIsMobile] = useState(false); useEffect(() => { const checkMobile = () => setIsMobile(window.innerWidth < 768); checkMobile(); window.addEventListener('resize', checkMobile); return () => window.removeEventListener('resize', checkMobile); }, []); const leagues = [ { name: 'Championship Series', carClass: 'GT3', region: 'EU', skill: '2.5k iRating', drivers: 48, schedule: 'Wed 20:00 CET', rating: 4.8, icon: '🏁' }, { name: 'Touring Car Challenge', carClass: 'TCR', region: 'NA', skill: 'Open skill', drivers: 32, schedule: 'Sat 18:00 EST', rating: 4.6, icon: '🏎️' } ]; if (isMobile) { return ( {['Game', 'Region'].map((filter) => ( ))} {leagues.map((league) => ( {league.icon} {league.carClass} {league.drivers} DRIVERS • {league.schedule.toUpperCase()} JOIN ))} ); } const containerVariants = { hidden: { opacity: 0 }, visible: { opacity: 1, transition: { staggerChildren: shouldReduceMotion ? 0 : 0.15 } } }; const cardVariants = { hidden: { opacity: 0, x: shouldReduceMotion ? 0 : -20 }, visible: { opacity: 1, x: 0, transition: { duration: 0.4 } } }; return ( {['Game', 'Region', 'Skill'].map((filter, i) => ( ))} {leagues.map((league, index) => ( !shouldReduceMotion && setHoveredIndex(index)} onHoverEnd={() => setHoveredIndex(null)} whileHover={shouldReduceMotion ? {} : { x: 4, borderColor: '#198CFF30', transition: { duration: 0.2 } }} bg="panel-gray/20" border borderColor="border-gray/50" rounded="none" p={{ base: 1.5, sm: 2, md: 3, lg: 4 }} > {league.icon} {league.carClass} {league.region} {league.drivers} DRIVERS {league.schedule.toUpperCase()} JOIN ))} ); }