'use client'; import React from 'react'; import { LandingHero } from '@/ui/LandingHero'; import { AlternatingSection } from '@/ui/AlternatingSection'; import { FeatureGrid } from '@/ui/FeatureGrid'; import { DiscordCTA } from '@/ui/DiscordCTA'; import { FAQ } from '@/components/landing/FAQ'; import { Footer } from '@/ui/Footer'; import { CareerProgressionMockup } from '@/components/mockups/CareerProgressionMockup'; import { RaceHistoryMockup } from '@/components/mockups/RaceHistoryMockup'; import { CompanionAutomationMockup } from '@/components/mockups/CompanionAutomationMockup'; import { SimPlatformMockup } from '@/components/mockups/SimPlatformMockup'; import { Card } from '@/ui/Card'; import { Button } from '@/ui/Button'; import { Box } from '@/ui/Box'; import { Stack } from '@/ui/Stack'; import { Text } from '@/ui/Text'; import { Heading } from '@/ui/Heading'; import { Image } from '@/ui/Image'; import { Link } from '@/ui/Link'; import { Container } from '@/ui/Container'; import { Grid } from '@/ui/Grid'; import { Surface } from '@/ui/Surface'; import { getMediaUrl } from '@/lib/utilities/media'; import { routes } from '@/lib/routing/RouteConfig'; import { FeatureItem, ResultItem, StepItem } from '@/ui/LandingItems'; import { ModeGuard } from '@/components/shared/ModeGuard'; export interface HomeViewData { isAlpha: boolean; upcomingRaces: Array<{ id: string; track: string; car: string; formattedDate: string; }>; topLeagues: Array<{ id: string; name: string; description: string; }>; teams: Array<{ id: string; name: string; description: string; logoUrl?: string; }>; } interface HomeTemplateProps { viewData: HomeViewData; } export function HomeTemplate({ viewData }: HomeTemplateProps) { return ( {/* Section 1: A Persistent Identity */} Your races, your seasons, your progress — finally in one place. iRacing gives you physics. GridPilot gives you a career. } mockup={} layout="text-left" /> {/* Section 2: Results That Actually Stay */} Every race you run stays with you. Your racing career, finally in one place. } mockup={} layout="text-right" /> {/* Section 3: Automatic Session Creation */} Setting up league races used to mean clicking through iRacing's wizard 20 times. Automation instead of repetition. } mockup={} layout="text-left" /> {/* Section 4: Game-Agnostic Platform */} Right now, we're focused on making iRacing league racing better. But sims come and go. Your leagues, your teams, your rating — those stay. GridPilot is built to outlast any single platform. When the next sim arrives, your competitive identity moves with you. } mockup={} layout="text-right" /> {/* Alpha-only discovery section */} Discover the grid Explore leagues, teams, and races that make up the GridPilot ecosystem. {/* Top leagues */} Featured leagues {viewData.topLeagues.slice(0, 4).map((league) => ( {league.name.split(' ').map((word) => word[0]).join('').slice(0, 3).toUpperCase()} {league.name} {league.description} ))} {/* Teams */} Teams on the grid {viewData.teams.slice(0, 4).map(team => ( {team.name} {team.name} {team.description} ))} {/* Upcoming races */} Upcoming races {viewData.upcomingRaces.length === 0 ? ( No races scheduled in this demo snapshot. ) : ( {viewData.upcomingRaces.map(race => ( {race.track} {race.car} {race.formattedDate} ))} )}