website refactor

This commit is contained in:
2026-01-17 02:03:19 +01:00
parent 75ffe0798e
commit 6a49448e0a
18 changed files with 168 additions and 47 deletions

View File

@@ -17,12 +17,12 @@ export const viewport: Viewport = {
maximumScale: 1,
userScalable: false,
viewportFit: 'cover',
themeColor: '#0a0a0a',
};
export const metadata: Metadata = {
title: 'GridPilot - SimRacing Platform',
description: 'The dedicated home for serious sim racing leagues. Automatic results, standings, team racing, and professional race control.',
themeColor: '#0a0a0a',
appleWebApp: {
capable: true,
statusBarStyle: 'black-translucent',

View File

@@ -607,7 +607,7 @@ export function CreateLeagueWizard({ stepName, onStepChange }: CreateLeagueWizar
Create a new league
</Heading>
<Text size="sm" color="text-gray-500" block>
We'll also set up your first season in {steps.length} easy steps.
We&apos;ll also set up your first season in {steps.length} easy steps.
</Text>
<Text size="xs" color="text-gray-500" block mt={1}>
A league is your long-term brand. Each season is a block of races you can run again and again.

View File

@@ -1,19 +1,17 @@
import { PageWrapper } from '@/components/shared/state/PageWrapper';
import { HomeTemplate, type HomeViewData } from '@/templates/HomeTemplate';
import { PageDataFetcher } from '@/lib/page/PageDataFetcher';
import { HomeService } from '@/lib/services/home/HomeService'; // @server-safe
import { HomePageQuery } from '@/lib/page-queries/HomePageQuery';
import { notFound, redirect } from 'next/navigation';
import { routes } from '@/lib/routing/RouteConfig';
export default async function Page() {
const homeService = new HomeService();
if (await homeService.shouldRedirectToDashboard()) {
if (await HomePageQuery.shouldRedirectToDashboard()) {
redirect(routes.protected.dashboard);
}
const data = await PageDataFetcher.fetchManual(async () => {
const result = await homeService.getHomeData();
const result = await HomePageQuery.execute();
return result.isOk() ? result.unwrap() : null;
});

View File

@@ -1,5 +1,5 @@
import { notFound } from 'next/navigation';
import { StatefulPageWrapper } from '@/components/shared/state/StatefulPageWrapper';
import { PageWrapper } from '@/components/shared/state/PageWrapper';
import { RaceResultsPageQuery } from '@/lib/page-queries/races/RaceResultsPageQuery';
import RaceResultsPageClient from './RaceResultsPageClient';
@@ -25,13 +25,12 @@ export default async function RaceResultsPage({ params }: RaceResultsPageProps)
if (error === 'notFound') {
notFound();
}
// For other errors, let StatefulPageWrapper handle it
// For other errors, let PageWrapper handle it
return (
<StatefulPageWrapper
<PageWrapper
data={undefined}
Template={RaceResultsPageClient as any}
error={new Error('Failed to load race results')}
retry={() => Promise.resolve()}
/>
);
}
@@ -39,10 +38,9 @@ export default async function RaceResultsPage({ params }: RaceResultsPageProps)
const viewData = result.unwrap();
return (
<StatefulPageWrapper
<PageWrapper
data={viewData}
Template={RaceResultsPageClient}
retry={() => Promise.resolve()}
/>
);
}