import type { Metadata } from "next";
import { DM_Sans, DM_Mono } from "next/font/google";
import { ThemeProvider } from "@/presentation/components/providers/theme-provider";
import { AuthProvider } from "@/presentation/components/providers/auth-provider";
import { RepositoryProvider } from "@/di/repository-provider";
import { TooltipProvider } from "@/presentation/components/ui/tooltip";
import { Toaster } from "@/presentation/components/ui/sonner";
import { I18nProvider } from "@/shared/i18n/client";
import { getLocale } from "@/shared/i18n/server";
import "./globals.css";

const dmSans = DM_Sans({
  variable: "--font-dm-sans",
  subsets: ["latin"],
  weight: ["300", "400", "500", "600", "700"],
});

const dmMono = DM_Mono({
  variable: "--font-dm-mono",
  subsets: ["latin"],
  weight: ["400", "500"],
});

export const metadata: Metadata = {
  title: "Dadycar Admin",
  description: "Dadycar Super Admin Dashboard",
};

export default async function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  const locale = await getLocale();
  return (
    <html
      lang={locale}
      className={`${dmSans.variable} ${dmMono.variable}`}
      suppressHydrationWarning
    >
      <body
        className="min-h-screen antialiased"
        style={{ fontFamily: "var(--font-dm-sans), system-ui, sans-serif" }}
      >
        <I18nProvider locale={locale}>
          <ThemeProvider
            attribute="class"
            defaultTheme="light"
            enableSystem={false}
            disableTransitionOnChange
          >
            <TooltipProvider delayDuration={0}>
              <RepositoryProvider>
                <AuthProvider>
                  {children}
                </AuthProvider>
              </RepositoryProvider>
            </TooltipProvider>
            <Toaster position="top-right" richColors />
          </ThemeProvider>
        </I18nProvider>
      </body>
    </html>
  );
}
