import type { Metadata } from "next";
import { Inter, Noto_Kufi_Arabic } from "next/font/google";
import "./globals.css";
import { AuthSessionProvider } from "@/components/providers/session-provider";
import { AppProviders } from "@/components/providers/app-providers";
import { APP_METADATA_DESCRIPTION, APP_NAME } from "@/lib/constants";
import { getBrandSettings } from "@/server/services/brand-settings.service";

const inter = Inter({
  subsets: ["latin"],
  variable: "--font-inter",
  display: "swap",
  weight: ["400", "500", "600", "700"],
});

const notoKufi = Noto_Kufi_Arabic({
  subsets: ["arabic"],
  variable: "--font-arabic",
  display: "swap",
  weight: ["400", "500", "600", "700"],
});

export async function generateMetadata(): Promise<Metadata> {
  try {
    const brand = await getBrandSettings();
    return {
      title: brand.platformName || APP_NAME,
      description: APP_METADATA_DESCRIPTION,
      icons: brand.favicon ? { icon: brand.favicon } : undefined,
    };
  } catch {
    return {
      title: APP_NAME,
      description: APP_METADATA_DESCRIPTION,
    };
  }
}

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="ar" dir="rtl" suppressHydrationWarning>
      <body
        className={`${inter.variable} ${notoKufi.variable} min-h-screen overflow-x-hidden antialiased`}
      >
        <AuthSessionProvider>
          <AppProviders>{children}</AppProviders>
        </AuthSessionProvider>
      </body>
    </html>
  );
}
