website refactor
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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'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.
|
||||
|
||||
@@ -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;
|
||||
});
|
||||
|
||||
|
||||
@@ -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()}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user