Files
gridpilot.gg/apps/website/templates/HomeTemplate.tsx
2026-01-26 17:56:11 +01:00

76 lines
1.8 KiB
TypeScript

import { CtaSection } from '@/components/home/CtaSection';
import { Hero } from '@/components/home/Hero';
import { LeagueIdentityPreview } from '@/components/home/LeagueIdentityPreview';
import { MigrationSection } from '@/components/home/MigrationSection';
import { StewardingPreview } from '@/components/home/StewardingPreview';
import { TelemetryStrip } from '@/components/home/TelemetryStrip';
import { ValuePillars } from '@/components/home/ValuePillars';
import { ViewData } from '@/lib/contracts/view-data/ViewData';
import { Stack } from '@/ui/Stack';
export interface HomeViewData extends ViewData {
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;
}
/**
* HomeTemplate - Radically redesigned for League Admin focus.
* Theme: Modern Precision.
* Architecture: Composition of semantic components.
*/
export function HomeTemplate({ viewData }: HomeTemplateProps) {
return (
<main>
<Stack gap={0}>
{/* Hero Section - Admin Focus */}
<Hero />
{/* Admin Pain/Solution Strip */}
<TelemetryStrip />
{/* Core Admin Features */}
<ValuePillars />
{/* Stewarding Workflow Preview */}
<StewardingPreview
race={viewData.upcomingRaces[0]}
team={viewData.teams[0]}
/>
{/* League Identity Showcase */}
<LeagueIdentityPreview
league={viewData.topLeagues[0]}
/>
{/* Migration Offer */}
<MigrationSection />
{/* Final CTA */}
<CtaSection />
</Stack>
</main>
);
}