diff --git a/apps/website/app/404/page.tsx b/apps/website/app/404/page.tsx
index 280b3ffa0..03b11e3af 100644
--- a/apps/website/app/404/page.tsx
+++ b/apps/website/app/404/page.tsx
@@ -1,4 +1,4 @@
-import { NotFoundPageClient } from './NotFoundPageClient';
+import { NotFoundPageClient } from '@/client-wrapper/NotFoundPageClient';
/**
* Custom404Page
diff --git a/apps/website/app/500/ServerErrorPageClient.test.tsx b/apps/website/app/500/ServerErrorPageClient.test.tsx
deleted file mode 100644
index ba5db8336..000000000
--- a/apps/website/app/500/ServerErrorPageClient.test.tsx
+++ /dev/null
@@ -1,50 +0,0 @@
-import { render, screen, fireEvent } from '@testing-library/react';
-import { describe, it, expect, vi } from 'vitest';
-import { ServerErrorPageClient } from './ServerErrorPageClient';
-import { useRouter } from 'next/navigation';
-
-vi.mock('next/navigation', () => ({
- useRouter: vi.fn(),
-}));
-
-describe('ServerErrorPageClient', () => {
- it('renders the server error page with correct content', () => {
- const push = vi.fn();
- (useRouter as any).mockReturnValue({ push });
-
- render();
-
- expect(screen.getByText('CRITICAL_SYSTEM_FAILURE')).toBeDefined();
- expect(screen.getByText(/The application engine encountered an unrecoverable state/)).toBeDefined();
- expect(screen.getByText(/Internal Server Error/)).toBeDefined();
- });
-
- it('handles home navigation', () => {
- const push = vi.fn();
- (useRouter as any).mockReturnValue({ push });
-
- render();
-
- const homeButton = screen.getByText('Return to Pits');
- fireEvent.click(homeButton);
-
- expect(push).toHaveBeenCalledWith('/');
- });
-
- it('handles retry via page reload', () => {
- const push = vi.fn();
- (useRouter as any).mockReturnValue({ push });
-
- const reloadFn = vi.fn();
- vi.stubGlobal('location', { reload: reloadFn });
-
- render();
-
- const retryButton = screen.getByText('Retry Session');
- fireEvent.click(retryButton);
-
- expect(reloadFn).toHaveBeenCalled();
-
- vi.unstubAllGlobals();
- });
-});
diff --git a/apps/website/app/500/page.tsx b/apps/website/app/500/page.tsx
index bec83f4b1..34433d8b2 100644
--- a/apps/website/app/500/page.tsx
+++ b/apps/website/app/500/page.tsx
@@ -1,4 +1,4 @@
-import { ServerErrorPageClient } from './ServerErrorPageClient';
+import { ServerErrorPageClient } from '@/client-wrapper/ServerErrorPageClient';
/**
* Custom500Page
diff --git a/apps/website/app/admin/page.tsx b/apps/website/app/admin/page.tsx
index 83d6467a6..b563da58b 100644
--- a/apps/website/app/admin/page.tsx
+++ b/apps/website/app/admin/page.tsx
@@ -1,5 +1,5 @@
import { AdminDashboardPageQuery } from '@/lib/page-queries/AdminDashboardPageQuery';
-import { AdminDashboardWrapper } from './AdminDashboardWrapper';
+import { AdminDashboardWrapper } from '@/client-wrapper/AdminDashboardWrapper';
import { ErrorBanner } from '@/ui/ErrorBanner';
export default async function AdminPage() {
diff --git a/apps/website/app/admin/users/page.tsx b/apps/website/app/admin/users/page.tsx
index b7221c54c..51d43d7d5 100644
--- a/apps/website/app/admin/users/page.tsx
+++ b/apps/website/app/admin/users/page.tsx
@@ -1,5 +1,5 @@
import { AdminUsersPageQuery } from '@/lib/page-queries/AdminUsersPageQuery';
-import { AdminUsersWrapper } from './AdminUsersWrapper';
+import { AdminUsersWrapper } from '@/client-wrapper/AdminUsersWrapper';
import { ErrorBanner } from '@/ui/ErrorBanner';
export default async function AdminUsersPage() {
diff --git a/apps/website/app/auth/forgot-password/page.tsx b/apps/website/app/auth/forgot-password/page.tsx
index d8db14464..f2044c7e3 100644
--- a/apps/website/app/auth/forgot-password/page.tsx
+++ b/apps/website/app/auth/forgot-password/page.tsx
@@ -8,7 +8,7 @@
import { AuthError } from '@/components/auth/AuthError';
import { ForgotPasswordPageQuery } from '@/lib/page-queries/auth/ForgotPasswordPageQuery';
-import { ForgotPasswordClient } from './ForgotPasswordClient';
+import { ForgotPasswordClient } from '@/client-wrapper/ForgotPasswordClient';
export default async function ForgotPasswordPage({
searchParams,
diff --git a/apps/website/app/auth/login/page.tsx b/apps/website/app/auth/login/page.tsx
index 435aa5d16..485a92f75 100644
--- a/apps/website/app/auth/login/page.tsx
+++ b/apps/website/app/auth/login/page.tsx
@@ -8,7 +8,7 @@
import { AuthError } from '@/components/auth/AuthError';
import { LoginPageQuery } from '@/lib/page-queries/auth/LoginPageQuery';
-import { LoginClient } from './LoginClient';
+import { LoginClient } from '@/client-wrapper/LoginClient';
export default async function LoginPage({
searchParams,
diff --git a/apps/website/app/auth/reset-password/page.tsx b/apps/website/app/auth/reset-password/page.tsx
index 2d563f1da..4780a6f79 100644
--- a/apps/website/app/auth/reset-password/page.tsx
+++ b/apps/website/app/auth/reset-password/page.tsx
@@ -8,7 +8,7 @@
import { AuthError } from '@/components/auth/AuthError';
import { ResetPasswordPageQuery } from '@/lib/page-queries/auth/ResetPasswordPageQuery';
-import { ResetPasswordClient } from './ResetPasswordClient';
+import { ResetPasswordClient } from '@/client-wrapper/ResetPasswordClient';
export default async function ResetPasswordPage({
searchParams,
diff --git a/apps/website/app/auth/signup/page.tsx b/apps/website/app/auth/signup/page.tsx
index 14b1577f4..48c5e8a8e 100644
--- a/apps/website/app/auth/signup/page.tsx
+++ b/apps/website/app/auth/signup/page.tsx
@@ -8,7 +8,7 @@
import { AuthError } from '@/components/auth/AuthError';
import { SignupPageQuery } from '@/lib/page-queries/auth/SignupPageQuery';
-import { SignupClient } from './SignupClient';
+import { SignupClient } from '@/client-wrapper/SignupClient';
export default async function SignupPage({
searchParams,
diff --git a/apps/website/app/drivers/[id]/page.tsx b/apps/website/app/drivers/[id]/page.tsx
index 92700b29e..3dae44cb3 100644
--- a/apps/website/app/drivers/[id]/page.tsx
+++ b/apps/website/app/drivers/[id]/page.tsx
@@ -1,7 +1,7 @@
import { redirect } from 'next/navigation';
import { routes } from '@/lib/routing/RouteConfig';
import { DriverProfilePageQuery } from '@/lib/page-queries/DriverProfilePageQuery';
-import { DriverProfilePageClient } from './DriverProfilePageClient';
+import { DriverProfilePageClient } from '@/client-wrapper/DriverProfilePageClient';
export default async function DriverProfilePage({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params;
diff --git a/apps/website/app/drivers/page.tsx b/apps/website/app/drivers/page.tsx
index 660d110d9..100dfd221 100644
--- a/apps/website/app/drivers/page.tsx
+++ b/apps/website/app/drivers/page.tsx
@@ -1,7 +1,7 @@
import { redirect } from 'next/navigation';
import { routes } from '@/lib/routing/RouteConfig';
import { DriversPageQuery } from '@/lib/page-queries/DriversPageQuery';
-import { DriversPageClient } from './DriversPageClient';
+import { DriversPageClient } from '@/client-wrapper/DriversPageClient';
export default async function Page() {
const result = await DriversPageQuery.execute();
diff --git a/apps/website/app/leaderboards/drivers/page.tsx b/apps/website/app/leaderboards/drivers/page.tsx
index 96dfae373..751a13117 100644
--- a/apps/website/app/leaderboards/drivers/page.tsx
+++ b/apps/website/app/leaderboards/drivers/page.tsx
@@ -1,6 +1,6 @@
import { notFound, redirect } from 'next/navigation';
import { DriverRankingsPageQuery } from '@/lib/page-queries/DriverRankingsPageQuery';
-import { DriverRankingsPageClient } from './DriverRankingsPageClient';
+import { DriverRankingsPageClient } from '@/client-wrapper/DriverRankingsPageClient';
import { routes } from '@/lib/routing/RouteConfig';
import { logger } from '@/lib/infrastructure/logging/logger';
diff --git a/apps/website/app/leaderboards/page.tsx b/apps/website/app/leaderboards/page.tsx
index c67fd6b71..844d79da6 100644
--- a/apps/website/app/leaderboards/page.tsx
+++ b/apps/website/app/leaderboards/page.tsx
@@ -1,6 +1,6 @@
import { notFound, redirect } from 'next/navigation';
import { LeaderboardsPageQuery } from '@/lib/page-queries/LeaderboardsPageQuery';
-import { LeaderboardsPageClient } from './LeaderboardsPageClient';
+import { LeaderboardsPageClient } from '@/client-wrapper/LeaderboardsPageClient';
import { routes } from '@/lib/routing/RouteConfig';
import { logger } from '@/lib/infrastructure/logging/logger';
diff --git a/apps/website/app/leagues/[id]/roster/admin/page.tsx b/apps/website/app/leagues/[id]/roster/admin/page.tsx
index 2feefd29b..bfe325e11 100644
--- a/apps/website/app/leagues/[id]/roster/admin/page.tsx
+++ b/apps/website/app/leagues/[id]/roster/admin/page.tsx
@@ -1,6 +1,6 @@
'use client';
-import { RosterAdminPage } from './RosterAdminPage';
+import { RosterAdminPage } from '@/client-wrapper/RosterAdminPage';
export default function LeagueRosterAdminPage() {
return ;
diff --git a/apps/website/app/leagues/[id]/schedule/admin/page.tsx b/apps/website/app/leagues/[id]/schedule/admin/page.tsx
index 8767362a2..358271af7 100644
--- a/apps/website/app/leagues/[id]/schedule/admin/page.tsx
+++ b/apps/website/app/leagues/[id]/schedule/admin/page.tsx
@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { LeagueScheduleAdminPageQuery } from '@/lib/page-queries/LeagueScheduleAdminPageQuery';
-import { LeagueAdminSchedulePageClient } from './LeagueAdminSchedulePageClient';
+import { LeagueAdminSchedulePageClient } from '@/client-wrapper/LeagueAdminSchedulePageClient';
interface Props {
params: Promise<{ id: string }>;
diff --git a/apps/website/app/leagues/[id]/stewarding/page.tsx b/apps/website/app/leagues/[id]/stewarding/page.tsx
index 9b71fa107..afb2cdb5d 100644
--- a/apps/website/app/leagues/[id]/stewarding/page.tsx
+++ b/apps/website/app/leagues/[id]/stewarding/page.tsx
@@ -1,5 +1,5 @@
import { LeagueStewardingPageQuery } from '@/lib/page-queries/LeagueStewardingPageQuery';
-import { StewardingPageClient } from './StewardingPageClient';
+import { StewardingPageClient } from '@/client-wrapper/StewardingPageClient';
import { notFound } from 'next/navigation';
interface Props {
diff --git a/apps/website/app/leagues/[id]/stewarding/protests/[protestId]/page.tsx b/apps/website/app/leagues/[id]/stewarding/protests/[protestId]/page.tsx
index 6fb3e91bf..5bcff0fbb 100644
--- a/apps/website/app/leagues/[id]/stewarding/protests/[protestId]/page.tsx
+++ b/apps/website/app/leagues/[id]/stewarding/protests/[protestId]/page.tsx
@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { LeagueProtestDetailPageQuery } from '@/lib/page-queries/LeagueProtestDetailPageQuery';
-import { ProtestDetailPageClient } from './ProtestDetailPageClient';
+import { ProtestDetailPageClient } from '@/client-wrapper/ProtestDetailPageClient';
interface Props {
params: Promise<{ id: string; protestId: string }>;
diff --git a/apps/website/app/leagues/[id]/wallet/page.tsx b/apps/website/app/leagues/[id]/wallet/page.tsx
index 45ced84c7..21bdeeb2b 100644
--- a/apps/website/app/leagues/[id]/wallet/page.tsx
+++ b/apps/website/app/leagues/[id]/wallet/page.tsx
@@ -1,5 +1,5 @@
import { LeagueWalletPageQuery } from '@/lib/page-queries/LeagueWalletPageQuery';
-import { LeagueWalletPageClient } from './LeagueWalletPageClient';
+import { LeagueWalletPageClient } from '@/client-wrapper/LeagueWalletPageClient';
import { notFound } from 'next/navigation';
interface Props {
diff --git a/apps/website/app/leagues/create/page.tsx b/apps/website/app/leagues/create/page.tsx
index 1c6fb9e0b..72a1af1bd 100644
--- a/apps/website/app/leagues/create/page.tsx
+++ b/apps/website/app/leagues/create/page.tsx
@@ -2,7 +2,7 @@
import React from 'react';
import { useRouter, useSearchParams } from 'next/navigation';
-import { CreateLeagueWizard } from './CreateLeagueWizard';
+import { CreateLeagueWizard } from '@/client-wrapper/CreateLeagueWizard';
import { Section } from '@/ui/Section';
import { Container } from '@/ui/Container';
import { SearchParamParser } from '@/lib/routing/search-params/SearchParamParser';
diff --git a/apps/website/app/leagues/page.tsx b/apps/website/app/leagues/page.tsx
index b06a7e449..b53b5bea7 100644
--- a/apps/website/app/leagues/page.tsx
+++ b/apps/website/app/leagues/page.tsx
@@ -1,5 +1,5 @@
import { notFound } from 'next/navigation';
-import { LeaguesPageClient } from './LeaguesPageClient';
+import { LeaguesPageClient } from '@/client-wrapper/LeaguesPageClient';
import { LeaguesPageQuery } from '@/lib/page-queries/LeaguesPageQuery';
export default async function Page() {
diff --git a/apps/website/app/media/avatar/page.tsx b/apps/website/app/media/avatar/page.tsx
index 5c882ade7..d8b55deed 100644
--- a/apps/website/app/media/avatar/page.tsx
+++ b/apps/website/app/media/avatar/page.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { MediaPageClient } from '../MediaPageClient';
+import { MediaPageClient } from '@/client-wrapper/MediaPageClient';
export default async function AvatarsPage() {
const assets = [
diff --git a/apps/website/app/media/leagues/page.tsx b/apps/website/app/media/leagues/page.tsx
index 6ad4745a1..45cc65875 100644
--- a/apps/website/app/media/leagues/page.tsx
+++ b/apps/website/app/media/leagues/page.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { MediaPageClient } from '../MediaPageClient';
+import { MediaPageClient } from '@/client-wrapper/MediaPageClient';
export default async function LeaguesMediaPage() {
const assets = [
diff --git a/apps/website/app/media/page.tsx b/apps/website/app/media/page.tsx
index 66f4fdb19..cfaea7032 100644
--- a/apps/website/app/media/page.tsx
+++ b/apps/website/app/media/page.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { MediaPageClient } from './MediaPageClient';
+import { MediaPageClient } from '@/client-wrapper/MediaPageClient';
export default async function MediaPage() {
// In a real app, we would fetch this data from an API or database
diff --git a/apps/website/app/media/sponsors/page.tsx b/apps/website/app/media/sponsors/page.tsx
index 9cbbde0f2..905a9e6dc 100644
--- a/apps/website/app/media/sponsors/page.tsx
+++ b/apps/website/app/media/sponsors/page.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { MediaPageClient } from '../MediaPageClient';
+import { MediaPageClient } from '@/client-wrapper/MediaPageClient';
export default async function SponsorsMediaPage() {
const assets = [
diff --git a/apps/website/app/media/teams/page.tsx b/apps/website/app/media/teams/page.tsx
index ebb1ebba2..972c498e4 100644
--- a/apps/website/app/media/teams/page.tsx
+++ b/apps/website/app/media/teams/page.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { MediaPageClient } from '../MediaPageClient';
+import { MediaPageClient } from '@/client-wrapper/MediaPageClient';
export default async function TeamsMediaPage() {
const assets = [
diff --git a/apps/website/app/media/tracks/page.tsx b/apps/website/app/media/tracks/page.tsx
index ddfddcc70..ee8d10ce6 100644
--- a/apps/website/app/media/tracks/page.tsx
+++ b/apps/website/app/media/tracks/page.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { MediaPageClient } from '../MediaPageClient';
+import { MediaPageClient } from '@/client-wrapper/MediaPageClient';
export default async function TracksMediaPage() {
const assets = [
diff --git a/apps/website/app/onboarding/page.tsx b/apps/website/app/onboarding/page.tsx
index 0bf2fb839..2f1f1288e 100644
--- a/apps/website/app/onboarding/page.tsx
+++ b/apps/website/app/onboarding/page.tsx
@@ -1,5 +1,5 @@
import { redirect } from 'next/navigation';
-import { OnboardingWizardClient } from './OnboardingWizardClient';
+import { OnboardingWizardClient } from '@/client-wrapper/OnboardingWizardClient';
import { OnboardingPageQuery } from '@/lib/page-queries/OnboardingPageQuery';
import { SearchParamBuilder } from '@/lib/routing/search-params/SearchParamBuilder';
import { routes } from '@/lib/routing/RouteConfig';
diff --git a/apps/website/app/profile/liveries/upload/page.tsx b/apps/website/app/profile/liveries/upload/page.tsx
index 0e6c85aa5..bc909610b 100644
--- a/apps/website/app/profile/liveries/upload/page.tsx
+++ b/apps/website/app/profile/liveries/upload/page.tsx
@@ -1,5 +1,5 @@
import React from 'react';
-import { ProfileLiveryUploadPageClient } from './ProfileLiveryUploadPageClient';
+import { ProfileLiveryUploadPageClient } from '@/client-wrapper/ProfileLiveryUploadPageClient';
export default async function ProfileLiveryUploadPage() {
return ;
diff --git a/apps/website/app/profile/page.tsx b/apps/website/app/profile/page.tsx
index c69bef3dd..5a1ecfd3e 100644
--- a/apps/website/app/profile/page.tsx
+++ b/apps/website/app/profile/page.tsx
@@ -1,6 +1,6 @@
import { ProfilePageQuery } from '@/lib/page-queries/ProfilePageQuery';
import { notFound } from 'next/navigation';
-import { ProfilePageClient } from './ProfilePageClient';
+import { ProfilePageClient } from '@/client-wrapper/ProfilePageClient';
export default async function ProfilePage() {
const query = new ProfilePageQuery();
diff --git a/apps/website/app/profile/settings/page.tsx b/apps/website/app/profile/settings/page.tsx
index f4136eee8..8cce15edf 100644
--- a/apps/website/app/profile/settings/page.tsx
+++ b/apps/website/app/profile/settings/page.tsx
@@ -1,7 +1,7 @@
import { ProfilePageQuery } from '@/lib/page-queries/ProfilePageQuery';
import { notFound } from 'next/navigation';
import { updateProfileAction } from '@/app/actions/profileActions';
-import { ProfileSettingsPageClient } from './ProfileSettingsPageClient';
+import { ProfileSettingsPageClient } from '@/client-wrapper/ProfileSettingsPageClient';
export default async function ProfileSettingsPage() {
const query = new ProfilePageQuery();
diff --git a/apps/website/app/profile/sponsorship-requests/page.tsx b/apps/website/app/profile/sponsorship-requests/page.tsx
index c20bbba86..630d982aa 100644
--- a/apps/website/app/profile/sponsorship-requests/page.tsx
+++ b/apps/website/app/profile/sponsorship-requests/page.tsx
@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { SponsorshipRequestsPageQuery } from '@/lib/page-queries/SponsorshipRequestsPageQuery';
-import { SponsorshipRequestsClient } from './SponsorshipRequestsClient';
+import { SponsorshipRequestsClient } from '@/client-wrapper/SponsorshipRequestsClient';
import { acceptSponsorshipRequest, rejectSponsorshipRequest } from '@/app/actions/sponsorshipActions';
export default async function SponsorshipRequestsPage() {
diff --git a/apps/website/app/races/[id]/page.tsx b/apps/website/app/races/[id]/page.tsx
index 44ab5c6b3..bfec3bae5 100644
--- a/apps/website/app/races/[id]/page.tsx
+++ b/apps/website/app/races/[id]/page.tsx
@@ -1,7 +1,7 @@
import { notFound } from 'next/navigation';
import { PageWrapper } from '@/ui/PageWrapper';
import { RaceDetailPageQuery } from '@/lib/page-queries/races/RaceDetailPageQuery';
-import { RaceDetailPageClient } from './RaceDetailPageClient';
+import { RaceDetailPageClient } from '@/client-wrapper/RaceDetailPageClient';
interface RaceDetailPageProps {
params: Promise<{
diff --git a/apps/website/app/races/[id]/results/page.tsx b/apps/website/app/races/[id]/results/page.tsx
index 1a42ae803..05183e2bd 100644
--- a/apps/website/app/races/[id]/results/page.tsx
+++ b/apps/website/app/races/[id]/results/page.tsx
@@ -1,7 +1,7 @@
import { notFound } from 'next/navigation';
import { PageWrapper } from '@/ui/PageWrapper';
import { RaceResultsPageQuery } from '@/lib/page-queries/races/RaceResultsPageQuery';
-import { RaceResultsPageClient } from './RaceResultsPageClient';
+import { RaceResultsPageClient } from '@/client-wrapper/RaceResultsPageClient';
interface RaceResultsPageProps {
params: Promise<{
diff --git a/apps/website/app/races/all/page.tsx b/apps/website/app/races/all/page.tsx
index 8081fe78f..cd3843393 100644
--- a/apps/website/app/races/all/page.tsx
+++ b/apps/website/app/races/all/page.tsx
@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { RacesAllPageQuery } from '@/lib/page-queries/races/RacesAllPageQuery';
-import { RacesAllPageClient } from './RacesAllPageClient';
+import { RacesAllPageClient } from '@/client-wrapper/RacesAllPageClient';
export default async function Page() {
// Execute the PageQuery
diff --git a/apps/website/app/races/page.tsx b/apps/website/app/races/page.tsx
index ddd541723..97c56fe79 100644
--- a/apps/website/app/races/page.tsx
+++ b/apps/website/app/races/page.tsx
@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { RacesPageQuery } from '@/lib/page-queries/races/RacesPageQuery';
-import { RacesPageClient } from './RacesPageClient';
+import { RacesPageClient } from '@/client-wrapper/RacesPageClient';
export default async function Page() {
const query = new RacesPageQuery();
diff --git a/apps/website/app/sponsor/leagues/[id]/page.tsx b/apps/website/app/sponsor/leagues/[id]/page.tsx
index 2586a3e13..cfbdfa610 100644
--- a/apps/website/app/sponsor/leagues/[id]/page.tsx
+++ b/apps/website/app/sponsor/leagues/[id]/page.tsx
@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { PageWrapper } from '@/ui/PageWrapper';
-import { SponsorLeagueDetailPageClient } from './SponsorLeagueDetailPageClient';
+import { SponsorLeagueDetailPageClient } from '@/client-wrapper/SponsorLeagueDetailPageClient';
import { SponsorsApiClient } from '@/lib/api/sponsors/SponsorsApiClient';
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
diff --git a/apps/website/app/sponsor/leagues/page.tsx b/apps/website/app/sponsor/leagues/page.tsx
index c474b13f1..af1e355d4 100644
--- a/apps/website/app/sponsor/leagues/page.tsx
+++ b/apps/website/app/sponsor/leagues/page.tsx
@@ -1,5 +1,5 @@
import { PageWrapper } from '@/ui/PageWrapper';
-import { SponsorLeaguesPageClient } from './SponsorLeaguesPageClient';
+import { SponsorLeaguesPageClient } from '@/client-wrapper/SponsorLeaguesPageClient';
import { SponsorsApiClient } from '@/lib/api/sponsors/SponsorsApiClient';
import { EnhancedErrorReporter } from '@/lib/infrastructure/EnhancedErrorReporter';
import { ConsoleLogger } from '@/lib/infrastructure/logging/ConsoleLogger';
diff --git a/apps/website/app/teams/[id]/page.tsx b/apps/website/app/teams/[id]/page.tsx
index ac22cbcd0..4d28b064c 100644
--- a/apps/website/app/teams/[id]/page.tsx
+++ b/apps/website/app/teams/[id]/page.tsx
@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { TeamDetailPageQuery } from '@/lib/page-queries/TeamDetailPageQuery';
-import { TeamDetailPageClient } from './TeamDetailPageClient';
+import { TeamDetailPageClient } from '@/client-wrapper/TeamDetailPageClient';
export default async function Page({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params;
diff --git a/apps/website/app/teams/leaderboard/page.tsx b/apps/website/app/teams/leaderboard/page.tsx
index 8a054843f..9d97c8c74 100644
--- a/apps/website/app/teams/leaderboard/page.tsx
+++ b/apps/website/app/teams/leaderboard/page.tsx
@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { TeamLeaderboardPageQuery } from '@/lib/page-queries/TeamLeaderboardPageQuery';
-import { TeamLeaderboardPageWrapper } from './TeamLeaderboardPageWrapper';
+import { TeamLeaderboardPageWrapper } from '@/client-wrapper/TeamLeaderboardPageWrapper';
export default async function TeamLeaderboardPage() {
const query = new TeamLeaderboardPageQuery();
diff --git a/apps/website/app/teams/page.tsx b/apps/website/app/teams/page.tsx
index 769e8f818..68475ac4c 100644
--- a/apps/website/app/teams/page.tsx
+++ b/apps/website/app/teams/page.tsx
@@ -1,6 +1,6 @@
import { notFound } from 'next/navigation';
import { TeamsPageQuery } from '@/lib/page-queries/TeamsPageQuery';
-import { TeamsPageClient } from './TeamsPageClient';
+import { TeamsPageClient } from '@/client-wrapper/TeamsPageClient';
export default async function Page() {
const query = new TeamsPageQuery();
diff --git a/apps/website/app/admin/AdminDashboardWrapper.tsx b/apps/website/client-wrapper/AdminDashboardWrapper.tsx
similarity index 100%
rename from apps/website/app/admin/AdminDashboardWrapper.tsx
rename to apps/website/client-wrapper/AdminDashboardWrapper.tsx
diff --git a/apps/website/app/admin/users/AdminUsersWrapper.tsx b/apps/website/client-wrapper/AdminUsersWrapper.tsx
similarity index 100%
rename from apps/website/app/admin/users/AdminUsersWrapper.tsx
rename to apps/website/client-wrapper/AdminUsersWrapper.tsx
diff --git a/apps/website/app/leagues/create/CreateLeagueWizard.tsx b/apps/website/client-wrapper/CreateLeagueWizard.tsx
similarity index 100%
rename from apps/website/app/leagues/create/CreateLeagueWizard.tsx
rename to apps/website/client-wrapper/CreateLeagueWizard.tsx
diff --git a/apps/website/app/drivers/[id]/DriverProfilePageClient.tsx b/apps/website/client-wrapper/DriverProfilePageClient.tsx
similarity index 100%
rename from apps/website/app/drivers/[id]/DriverProfilePageClient.tsx
rename to apps/website/client-wrapper/DriverProfilePageClient.tsx
diff --git a/apps/website/app/leaderboards/drivers/DriverRankingsPageClient.tsx b/apps/website/client-wrapper/DriverRankingsPageClient.tsx
similarity index 100%
rename from apps/website/app/leaderboards/drivers/DriverRankingsPageClient.tsx
rename to apps/website/client-wrapper/DriverRankingsPageClient.tsx
diff --git a/apps/website/app/drivers/DriversPageClient.tsx b/apps/website/client-wrapper/DriversPageClient.tsx
similarity index 100%
rename from apps/website/app/drivers/DriversPageClient.tsx
rename to apps/website/client-wrapper/DriversPageClient.tsx
diff --git a/apps/website/app/auth/forgot-password/ForgotPasswordClient.tsx b/apps/website/client-wrapper/ForgotPasswordClient.tsx
similarity index 100%
rename from apps/website/app/auth/forgot-password/ForgotPasswordClient.tsx
rename to apps/website/client-wrapper/ForgotPasswordClient.tsx
diff --git a/apps/website/app/leaderboards/LeaderboardsPageClient.tsx b/apps/website/client-wrapper/LeaderboardsPageClient.tsx
similarity index 100%
rename from apps/website/app/leaderboards/LeaderboardsPageClient.tsx
rename to apps/website/client-wrapper/LeaderboardsPageClient.tsx
diff --git a/apps/website/app/leagues/[id]/schedule/admin/LeagueAdminSchedulePageClient.tsx b/apps/website/client-wrapper/LeagueAdminSchedulePageClient.tsx
similarity index 100%
rename from apps/website/app/leagues/[id]/schedule/admin/LeagueAdminSchedulePageClient.tsx
rename to apps/website/client-wrapper/LeagueAdminSchedulePageClient.tsx
diff --git a/apps/website/app/leagues/[id]/rulebook/LeagueRulebookPageClient.tsx b/apps/website/client-wrapper/LeagueRulebookPageClient.tsx
similarity index 100%
rename from apps/website/app/leagues/[id]/rulebook/LeagueRulebookPageClient.tsx
rename to apps/website/client-wrapper/LeagueRulebookPageClient.tsx
diff --git a/apps/website/app/leagues/[id]/wallet/LeagueWalletPageClient.tsx b/apps/website/client-wrapper/LeagueWalletPageClient.tsx
similarity index 100%
rename from apps/website/app/leagues/[id]/wallet/LeagueWalletPageClient.tsx
rename to apps/website/client-wrapper/LeagueWalletPageClient.tsx
diff --git a/apps/website/app/leagues/LeaguesPageClient.tsx b/apps/website/client-wrapper/LeaguesPageClient.tsx
similarity index 100%
rename from apps/website/app/leagues/LeaguesPageClient.tsx
rename to apps/website/client-wrapper/LeaguesPageClient.tsx
diff --git a/apps/website/app/auth/login/LoginClient.tsx b/apps/website/client-wrapper/LoginClient.tsx
similarity index 100%
rename from apps/website/app/auth/login/LoginClient.tsx
rename to apps/website/client-wrapper/LoginClient.tsx
diff --git a/apps/website/app/media/MediaPageClient.tsx b/apps/website/client-wrapper/MediaPageClient.tsx
similarity index 100%
rename from apps/website/app/media/MediaPageClient.tsx
rename to apps/website/client-wrapper/MediaPageClient.tsx
diff --git a/apps/website/app/404/NotFoundPageClient.tsx b/apps/website/client-wrapper/NotFoundPageClient.tsx
similarity index 100%
rename from apps/website/app/404/NotFoundPageClient.tsx
rename to apps/website/client-wrapper/NotFoundPageClient.tsx
diff --git a/apps/website/app/onboarding/OnboardingWizardClient.tsx b/apps/website/client-wrapper/OnboardingWizardClient.tsx
similarity index 100%
rename from apps/website/app/onboarding/OnboardingWizardClient.tsx
rename to apps/website/client-wrapper/OnboardingWizardClient.tsx
diff --git a/apps/website/app/profile/liveries/upload/ProfileLiveryUploadPageClient.tsx b/apps/website/client-wrapper/ProfileLiveryUploadPageClient.tsx
similarity index 100%
rename from apps/website/app/profile/liveries/upload/ProfileLiveryUploadPageClient.tsx
rename to apps/website/client-wrapper/ProfileLiveryUploadPageClient.tsx
diff --git a/apps/website/app/profile/ProfilePageClient.tsx b/apps/website/client-wrapper/ProfilePageClient.tsx
similarity index 100%
rename from apps/website/app/profile/ProfilePageClient.tsx
rename to apps/website/client-wrapper/ProfilePageClient.tsx
diff --git a/apps/website/app/profile/settings/ProfileSettingsPageClient.tsx b/apps/website/client-wrapper/ProfileSettingsPageClient.tsx
similarity index 100%
rename from apps/website/app/profile/settings/ProfileSettingsPageClient.tsx
rename to apps/website/client-wrapper/ProfileSettingsPageClient.tsx
diff --git a/apps/website/app/leagues/[id]/stewarding/protests/[protestId]/ProtestDetailPageClient.tsx b/apps/website/client-wrapper/ProtestDetailPageClient.tsx
similarity index 100%
rename from apps/website/app/leagues/[id]/stewarding/protests/[protestId]/ProtestDetailPageClient.tsx
rename to apps/website/client-wrapper/ProtestDetailPageClient.tsx
diff --git a/apps/website/app/races/[id]/RaceDetailPageClient.tsx b/apps/website/client-wrapper/RaceDetailPageClient.tsx
similarity index 100%
rename from apps/website/app/races/[id]/RaceDetailPageClient.tsx
rename to apps/website/client-wrapper/RaceDetailPageClient.tsx
diff --git a/apps/website/app/races/[id]/results/RaceResultsPageClient.tsx b/apps/website/client-wrapper/RaceResultsPageClient.tsx
similarity index 100%
rename from apps/website/app/races/[id]/results/RaceResultsPageClient.tsx
rename to apps/website/client-wrapper/RaceResultsPageClient.tsx
diff --git a/apps/website/app/races/all/RacesAllPageClient.tsx b/apps/website/client-wrapper/RacesAllPageClient.tsx
similarity index 100%
rename from apps/website/app/races/all/RacesAllPageClient.tsx
rename to apps/website/client-wrapper/RacesAllPageClient.tsx
diff --git a/apps/website/app/races/RacesPageClient.tsx b/apps/website/client-wrapper/RacesPageClient.tsx
similarity index 100%
rename from apps/website/app/races/RacesPageClient.tsx
rename to apps/website/client-wrapper/RacesPageClient.tsx
diff --git a/apps/website/app/auth/reset-password/ResetPasswordClient.tsx b/apps/website/client-wrapper/ResetPasswordClient.tsx
similarity index 100%
rename from apps/website/app/auth/reset-password/ResetPasswordClient.tsx
rename to apps/website/client-wrapper/ResetPasswordClient.tsx
diff --git a/apps/website/app/leagues/[id]/roster/admin/RosterAdminPage.tsx b/apps/website/client-wrapper/RosterAdminPage.tsx
similarity index 100%
rename from apps/website/app/leagues/[id]/roster/admin/RosterAdminPage.tsx
rename to apps/website/client-wrapper/RosterAdminPage.tsx
diff --git a/apps/website/app/500/ServerErrorPageClient.tsx b/apps/website/client-wrapper/ServerErrorPageClient.tsx
similarity index 100%
rename from apps/website/app/500/ServerErrorPageClient.tsx
rename to apps/website/client-wrapper/ServerErrorPageClient.tsx
diff --git a/apps/website/app/auth/signup/SignupClient.tsx b/apps/website/client-wrapper/SignupClient.tsx
similarity index 100%
rename from apps/website/app/auth/signup/SignupClient.tsx
rename to apps/website/client-wrapper/SignupClient.tsx
diff --git a/apps/website/app/sponsor/leagues/[id]/SponsorLeagueDetailPageClient.tsx b/apps/website/client-wrapper/SponsorLeagueDetailPageClient.tsx
similarity index 100%
rename from apps/website/app/sponsor/leagues/[id]/SponsorLeagueDetailPageClient.tsx
rename to apps/website/client-wrapper/SponsorLeagueDetailPageClient.tsx
diff --git a/apps/website/app/sponsor/leagues/SponsorLeaguesPageClient.tsx b/apps/website/client-wrapper/SponsorLeaguesPageClient.tsx
similarity index 100%
rename from apps/website/app/sponsor/leagues/SponsorLeaguesPageClient.tsx
rename to apps/website/client-wrapper/SponsorLeaguesPageClient.tsx
diff --git a/apps/website/app/profile/sponsorship-requests/SponsorshipRequestsClient.tsx b/apps/website/client-wrapper/SponsorshipRequestsClient.tsx
similarity index 100%
rename from apps/website/app/profile/sponsorship-requests/SponsorshipRequestsClient.tsx
rename to apps/website/client-wrapper/SponsorshipRequestsClient.tsx
diff --git a/apps/website/app/profile/sponsorship-requests/SponsorshipRequestsPageClient.tsx b/apps/website/client-wrapper/SponsorshipRequestsPageClient.tsx
similarity index 100%
rename from apps/website/app/profile/sponsorship-requests/SponsorshipRequestsPageClient.tsx
rename to apps/website/client-wrapper/SponsorshipRequestsPageClient.tsx
diff --git a/apps/website/app/leagues/[id]/stewarding/StewardingPageClient.tsx b/apps/website/client-wrapper/StewardingPageClient.tsx
similarity index 100%
rename from apps/website/app/leagues/[id]/stewarding/StewardingPageClient.tsx
rename to apps/website/client-wrapper/StewardingPageClient.tsx
diff --git a/apps/website/app/teams/[id]/TeamDetailPageClient.tsx b/apps/website/client-wrapper/TeamDetailPageClient.tsx
similarity index 100%
rename from apps/website/app/teams/[id]/TeamDetailPageClient.tsx
rename to apps/website/client-wrapper/TeamDetailPageClient.tsx
diff --git a/apps/website/app/teams/leaderboard/TeamLeaderboardPageWrapper.tsx b/apps/website/client-wrapper/TeamLeaderboardPageWrapper.tsx
similarity index 100%
rename from apps/website/app/teams/leaderboard/TeamLeaderboardPageWrapper.tsx
rename to apps/website/client-wrapper/TeamLeaderboardPageWrapper.tsx
diff --git a/apps/website/app/teams/TeamsPageClient.tsx b/apps/website/client-wrapper/TeamsPageClient.tsx
similarity index 100%
rename from apps/website/app/teams/TeamsPageClient.tsx
rename to apps/website/client-wrapper/TeamsPageClient.tsx