import type { Metadata } from "next";
import localFont from "next/font/local";
import "./globals.css";
import { NextAuthSessionProvider } from "./_components/AuthSessionProvider";
import { getServerSession } from "./api/auth/[...nextauth]/auth";
import { Toaster } from "react-hot-toast";
import { QueryProvider } from "_components/QueryProvider";
import { Error as ErrorComp } from "_components/Error";

const geistSans = localFont({
	src: "./fonts/GeistVF.woff",
	variable: "--font-geist-sans",
});
const geistMono = localFont({
	src: "./fonts/GeistMonoVF.woff",
	variable: "--font-geist-mono",
});

export const metadata: Metadata = {
	title: "VAR Leitstelle v2",
	description: "Die neue VAR Leitstelle.",
};

export default async function RootLayout({
	children,
}: Readonly<{
	children: React.ReactNode;
}>) {
	const session = await getServerSession();
	return (
		<html lang="de" data-theme="dark">
			<body
				className={`${geistSans.variable} ${geistMono.variable} h-screen flex flex-col overflow-hidden`}
			>
				<Toaster
					containerStyle={{
						top: 200,
						left: 20,
						right: 20,
					}}
					toastOptions={{
						style: {
							background: "var(--color-base-100)",
							color: "var(--color-base-content)",
						},
						duration: 4000,
					}}
					position="top-left"
					reverseOrder={false}
				/>
				<QueryProvider>
					<NextAuthSessionProvider session={session}>
						{session?.user.isBanned && (
							<ErrorComp title="You are banned from using this service" statusCode={403} />
						)}
						{!session?.user.isBanned && children}
					</NextAuthSessionProvider>
				</QueryProvider>
			</body>
		</html>
	);
}
