ironie-nextjs/src/app/layout.tsx
2025-09-09 13:12:57 +02:00

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>
)
}