import type { Metadata, Viewport } from "next";
import { Inter } from "next/font/google";
import "./globals.css";
import { Toaster } from "@/components/ui/toast";
import { SessionProviderWrapper } from "@/components/session-provider-wrapper";

const inter = Inter({
  subsets: ["latin"],
});

export const metadata: Metadata = {
  title: "Memento - Your Digital Notepad",
  description: "A beautiful note-taking app inspired by Google Keep, built with Next.js 16",
  manifest: "/manifest.json",
  icons: {
    icon: [
      { url: "/icons/icon-192.png", sizes: "192x192", type: "image/png" },
      { url: "/icons/icon-512.png", sizes: "512x512", type: "image/png" },
    ],
    apple: "/apple-icon.png",
  },
  appleWebApp: {
    capable: true,
    statusBarStyle: "default",
    title: "Memento",
  },
};

export const viewport: Viewport = {
  themeColor: "#f59e0b",
};



import { getAISettings } from "@/app/actions/ai-settings";
import { getUserSettings } from "@/app/actions/user-settings";
import { ThemeInitializer } from "@/components/theme-initializer";

// ... existing imports

import { DebugTheme } from "@/components/debug-theme";

// ...

import { getThemeScript } from "@/lib/theme-script";

// ...

import { auth } from "@/auth";

export default async function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  const session = await auth();
  const userId = session?.user?.id;

  // Fetch user settings server-side with optimized single session check
  const [aiSettings, userSettings] = await Promise.all([
    getAISettings(userId),
    getUserSettings(userId)
  ])



  return (
    <html suppressHydrationWarning>
      <body className={inter.className}>
        <script
          dangerouslySetInnerHTML={{
            __html: getThemeScript(userSettings.theme),
          }}
        />
        <SessionProviderWrapper>
          <ThemeInitializer theme={userSettings.theme} fontSize={aiSettings.fontSize} />
          {children}
          <Toaster />
        </SessionProviderWrapper>
      </body>
    </html>
  );
}
