67 lines
2.0 KiB
TypeScript
67 lines
2.0 KiB
TypeScript
// /src/app/layout.tsx
|
|
|
|
import type { Metadata } from "next";
|
|
import { Geist, Geist_Mono } from "next/font/google";
|
|
import "./globals.css";
|
|
import PrelineScriptWrapper from './components/PrelineScriptWrapper';
|
|
import { Providers } from './components/Providers';
|
|
import Sidebar from './components/Sidebar';
|
|
import ThemeProvider from "@/theme/theme-provider";
|
|
import Script from "next/script";
|
|
import NotificationBell from './components/NotificationBell';
|
|
import SSEHandler from "./lib/SSEHandler";
|
|
import UserActivityTracker from "./components/UserActivityTracker";
|
|
import AudioPrimer from "./components/AudioPrimer";
|
|
import ReadyOverlayHost from "./components/ReadyOverlayHost";
|
|
|
|
const geistSans = Geist({
|
|
variable: "--font-geist-sans",
|
|
subsets: ["latin"],
|
|
});
|
|
|
|
const geistMono = Geist_Mono({
|
|
variable: "--font-geist-mono",
|
|
subsets: ["latin"],
|
|
});
|
|
|
|
export const metadata = {
|
|
title: 'Ironie Open',
|
|
description: 'Steam Auth Dashboard',
|
|
}
|
|
|
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
|
return (
|
|
<html lang="en" suppressHydrationWarning>
|
|
<body className="antialiased bg-white dark:bg-black min-h-dvh">
|
|
<ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
|
|
<Providers>
|
|
<SSEHandler />
|
|
<UserActivityTracker />
|
|
<AudioPrimer />
|
|
<ReadyOverlayHost />
|
|
|
|
{/* App-Shell: Sidebar | Main */}
|
|
<div className="min-h-dvh grid grid-cols-1 sm:grid-cols-[16rem_1fr]">
|
|
<Sidebar />
|
|
|
|
{/* rechte Spalte */}
|
|
<div className="min-w-0 flex flex-col">
|
|
<main className="flex-1 in-w-0 overflow-hidden">
|
|
<div className="h-full box-border p-4 sm:p-6">
|
|
{children}
|
|
</div>
|
|
</main>
|
|
</div>
|
|
</div>
|
|
|
|
<NotificationBell />
|
|
</Providers>
|
|
</ThemeProvider>
|
|
<PrelineScriptWrapper />
|
|
</body>
|
|
</html>
|
|
)
|
|
}
|
|
|
|
|