45 lines
1.6 KiB
TypeScript
45 lines
1.6 KiB
TypeScript
"use client";
|
|
|
|
import { LanguageProvider } from "@/contexts/LanguageProvider";
|
|
import type { AppLanguage } from "@/lib/i18n/registry";
|
|
import { ThemeProvider } from "@/contexts/ThemeContext";
|
|
import { ReactQueryProvider } from "@/providers/ReactQueryProvider";
|
|
import { Toaster } from "react-hot-toast";
|
|
import BackgroundPrefetch from "@/components/BackgroundPrefetch";
|
|
import ScrollRestorationInit from "@/components/ScrollRestorationInit";
|
|
import TitleGuardian from "@/components/TitleGuardian";
|
|
import AuthSessionSync from "@/components/auth/AuthSessionSync";
|
|
import PwaInstallPrompt from "@/components/pwa/PwaInstallPrompt";
|
|
import PwaBootSplash from "@/components/pwa/PwaBootSplash";
|
|
import PwaHead from "@/components/PwaHead";
|
|
import NotificationBridge from "@/components/notifications/NotificationBridge";
|
|
import AnalyticsTracker from "@/components/AnalyticsTracker";
|
|
|
|
interface ILayoutProps {
|
|
children: React.ReactNode;
|
|
initialLanguage: AppLanguage;
|
|
}
|
|
function Layout({ children, initialLanguage }: ILayoutProps) {
|
|
return (
|
|
<ThemeProvider>
|
|
<LanguageProvider initialLanguage={initialLanguage}>
|
|
<ReactQueryProvider>
|
|
<PwaHead />
|
|
<PwaBootSplash />
|
|
<ScrollRestorationInit />
|
|
<TitleGuardian />
|
|
<Toaster />
|
|
<AuthSessionSync />
|
|
<PwaInstallPrompt />
|
|
<BackgroundPrefetch />
|
|
<NotificationBridge />
|
|
<AnalyticsTracker />
|
|
{children}
|
|
</ReactQueryProvider>
|
|
</LanguageProvider>
|
|
</ThemeProvider>
|
|
);
|
|
}
|
|
|
|
export default Layout;
|