import type { Metadata, Viewport } from "next";
import { Fraunces, Manrope, Fragment_Mono } from "next/font/google";
import "./globals.css";
import { Providers } from "@/components/Providers";
import ToastNotificationContainer from "@/components/notifications/ToastNotification";
import CookieConsentBanner from "@/components/legal/CookieConsentBanner";

const BASE_URL = process.env.NEXT_PUBLIC_SITE_URL || "https://routecommerce.com";

const fraunces = Fraunces({
  subsets: ["latin"],
  display: "swap",
  variable: "--font-fraunces",
  axes: ["SOFT", "WONK", "opsz"],
});

const manrope = Manrope({
  subsets: ["latin"],
  display: "swap",
  variable: "--font-manrope",
});

const fragmentMono = Fragment_Mono({
  subsets: ["latin"],
  display: "swap",
  variable: "--font-fragment-mono",
  weight: "400",
});

export const viewport: Viewport = {
  width: "device-width",
  initialScale: 1,
  themeColor: "#0a0a0a",
};

export const metadata: Metadata = {
  title: {
    default: "Route Commerce | Fresh Produce Wholesale Platform",
    template: "%s | Route Commerce",
  },
  description: "Multi-tenant B2B e-commerce platform for fresh produce wholesale distribution. Brands sell to customers who pick up at scheduled stops or receive shipments.",
  keywords: ["wholesale produce", "farm fresh", "B2B e-commerce", "produce distribution", "pickup stops", "fresh produce"],
  metadataBase: new URL(BASE_URL),
  openGraph: {
    title: "Route Commerce | Fresh Produce Wholesale Platform",
    description: "Multi-tenant B2B e-commerce platform for fresh produce wholesale distribution.",
    url: BASE_URL,
    siteName: "Route Commerce",
    locale: "en_US",
    type: "website",
  },
  twitter: {
    card: "summary_large_image",
    title: "Route Commerce | Fresh Produce Wholesale Platform",
    description: "Multi-tenant B2B e-commerce platform for fresh produce wholesale distribution.",
    site: "@RouteCommerce",
  },
  robots: {
    index: true,
    follow: true,
    googleBot: {
      index: true,
      follow: true,
    },
  },
};

export default function RootLayout({
  children,
}: Readonly<{
  children: React.ReactNode;
}>) {
  return (
    <html lang="en" suppressHydrationWarning data-scroll-behavior="smooth" className={`${fraunces.variable} ${manrope.variable} ${fragmentMono.variable}`}>
      <body className="font-sans">
        <Providers>{children}</Providers>
        <ToastNotificationContainer />
        <CookieConsentBanner />
      </body>
    </html>
  );
}