'use client'; import { motion, useReducedMotion } from 'framer-motion'; import { useState, useEffect } from 'react'; import { Box } from '@/ui/Box'; import { Text } from '@/ui/Text'; import { Stack } from '@/ui/Stack'; export function LeagueDiscoveryMockup() { const shouldReduceMotion = useReducedMotion(); const [hoveredIndex, 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.region} {league.drivers} drivers {league.schedule} {[...Array(5)].map((_, i) => ( {/* eslint-disable-next-line gridpilot-rules/component-classification */} ))} Join ))} ); } const containerVariants = { hidden: { opacity: 0 }, visible: { opacity: 1, transition: { staggerChildren: shouldReduceMotion ? 0 : 0.15 } } }; const cardVariants = { hidden: { opacity: 0, y: shouldReduceMotion ? 0 : 20 }, visible: { opacity: 1, y: 0, transition: { type: 'spring' as const, stiffness: 200, damping: 20 } } }; return ( {['Game', 'Region', 'Skill'].map((filter, i) => ( ))} {leagues.map((league, index) => ( !shouldReduceMotion && setHoveredIndex(index)} onHoverEnd={() => setHoveredIndex(null)} whileHover={shouldReduceMotion ? {} : { scale: 1.02, y: -4, transition: { duration: 0.2 } }} bg="bg-iron-gray/80" border borderColor="border-charcoal-outline" rounded="lg" p={{ base: 1.5, sm: 2, md: 3, lg: 4 }} // eslint-disable-next-line gridpilot-rules/component-classification className="backdrop-blur-sm" > {league.icon} {league.carClass} {league.region} {league.skill} {/* eslint-disable-next-line gridpilot-rules/component-classification */} {league.drivers} drivers {/* eslint-disable-next-line gridpilot-rules/component-classification */} {league.schedule} {[...Array(5)].map((_, i) => ( {/* eslint-disable-next-line gridpilot-rules/component-classification */} ))} {league.rating} Join View ))} ); }