99 lines
2.5 KiB
TypeScript
99 lines
2.5 KiB
TypeScript
import type { Metadata, Viewport } from "next";
|
|
import { Lato } from "next/font/google";
|
|
import "./globals.css";
|
|
import { MotionProvider } from "@/components/layout/MotionProvider";
|
|
import { PremiumNavbar } from "@/components/layout/PremiumNavbar";
|
|
import { PremiumFooter } from "@/components/layout/PremiumFooter";
|
|
|
|
const lato = Lato({
|
|
subsets: ["latin"],
|
|
weight: ["100", "300", "400", "700", "900"],
|
|
variable: "--font-lato",
|
|
display: "swap",
|
|
preload: true,
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
metadataBase: new URL("https://nearle.in"),
|
|
title: {
|
|
default: "Nearle: Your Neighborhood, Delivered",
|
|
template: "%s | Nearle",
|
|
},
|
|
description:
|
|
"Hyper-local essentials, hot meals, and professional services from verified businesses. India's #1 neighborhood commerce platform.",
|
|
keywords: [
|
|
"hyperlocal",
|
|
"neighborhood delivery",
|
|
"Coimbatore",
|
|
"local grocery",
|
|
"Nearle",
|
|
"home services",
|
|
"India delivery",
|
|
"neighborhood commerce",
|
|
],
|
|
openGraph: {
|
|
title: "Nearle: Your Neighborhood, Delivered",
|
|
description:
|
|
"Hyper-local essentials, hot meals, and professional services from verified businesses",
|
|
url: "https://nearle.in",
|
|
siteName: "Nearle",
|
|
locale: "en_IN",
|
|
type: "website",
|
|
images: [
|
|
{
|
|
url: "/logo.png",
|
|
width: 512,
|
|
height: 512,
|
|
alt: "Nearle logo",
|
|
},
|
|
],
|
|
},
|
|
twitter: {
|
|
card: "summary",
|
|
title: "Nearle: Your Neighborhood, Delivered",
|
|
description:
|
|
"India's hyperlocal neighborhood commerce platform",
|
|
images: ["/logo.png"],
|
|
},
|
|
alternates: { canonical: "/" },
|
|
icons: {
|
|
icon: "/favicon.ico",
|
|
shortcut: "/favicon.ico",
|
|
apple: "/apple-icon.png",
|
|
},
|
|
robots: { index: true, follow: true },
|
|
};
|
|
|
|
export const viewport: Viewport = {
|
|
themeColor: "#4d046a",
|
|
width: "device-width",
|
|
initialScale: 1,
|
|
};
|
|
|
|
export default function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
return (
|
|
<html
|
|
lang="en"
|
|
className={lato.variable}
|
|
data-scroll-behavior="smooth"
|
|
suppressHydrationWarning
|
|
>
|
|
<body className="bg-[#E8DCF2] text-on-surface font-body antialiased" suppressHydrationWarning>
|
|
<MotionProvider>
|
|
<div className="min-h-screen bg-white font-body text-[#16001D] antialiased flex flex-col">
|
|
<PremiumNavbar />
|
|
<main className="w-full overflow-x-hidden bg-white">
|
|
{children}
|
|
</main>
|
|
<PremiumFooter />
|
|
</div>
|
|
</MotionProvider>
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|