import type { Metadata } from "next";
import { Plus_Jakarta_Sans, Geist_Mono } from "next/font/google";
import "./globals.css";
import { api } from "@/lib/api";

const jakartaSans = Plus_Jakarta_Sans({
  variable: "--font-jakarta-sans",
  subsets: ["latin"],
});

const geistMono = Geist_Mono({
  variable: "--font-geist-mono",
  subsets: ["latin"],
});

export async function generateMetadata(): Promise<Metadata> {
  try {
    const response = await api.getSettings();
    const settings = response.data || {};

    const siteName =
      (settings as any).site_name || "SmartGrocery SaaS";
    const siteDescription =
      (settings as any).site_description ||
      "Premium organic groceries with ultra-fast delivery and concierge support.";
    const favicon =
      (settings as any).favicon || "/favicon.ico";

    const baseUrl =
      process.env.NEXT_PUBLIC_SITE_URL || "https://your-website-domain.com";

    return {
      title: {
        default: siteName,
        template: `%s | ${siteName}`,
      },
      description: siteDescription,
      metadataBase: new URL(baseUrl),
      openGraph: {
        siteName,
        type: "website",
      },
      robots: {
        index: true,
        follow: true,
      },
      icons: {
        icon: favicon,
      },
    };
  } catch {
    return {
      title: {
        default: "SmartGrocery SaaS",
        template: "%s | SmartGrocery SaaS",
      },
      description:
        "Premium organic groceries with ultra-fast delivery and concierge support.",
      icons: {
        icon: "/favicon.ico",
      },
    };
  }
}

import { CartProvider } from "@/context/CartContext";
import { AuthProvider } from "@/context/AuthContext";
import { SettingsProvider } from "@/context/SettingsContext";
import { WishlistProvider } from "@/context/WishlistContext";
import { NotificationsProvider } from "@/context/NotificationsContext";
import OneSignalInitializer from "@/components/onesignal/OneSignalInitializer";

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="en">
      <head>
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css" />
        <meta name="theme-color" content="#10b981" />
      </head>
      <body
        className={`${jakartaSans.variable} ${geistMono.variable} antialiased font-sans`}
      >
        <AuthProvider>
          <SettingsProvider>
            <NotificationsProvider>
              <WishlistProvider>
                <CartProvider>
                  <OneSignalInitializer />
                  {children}
                </CartProvider>
              </WishlistProvider>
            </NotificationsProvider>
          </SettingsProvider>
        </AuthProvider>
      </body>
    </html>
  );
}
