82 lines
2.4 KiB
TypeScript
82 lines
2.4 KiB
TypeScript
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>
|
|
);
|
|
} |