Publish Meshkee sitemap-config, map product-source specials without variants, restore hero autoplay, and tighten page heroes, product images, and section order. Co-authored-by: Cursor <cursoragent@cursor.com>
50 lines
1.4 KiB
TypeScript
50 lines
1.4 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { Montserrat, Vazirmatn } from "next/font/google";
|
|
import "./globals.css";
|
|
import { Footer } from "@/components/layout/Footer";
|
|
import { Header } from "@/components/layout/Header";
|
|
import { TopBar } from "@/components/layout/TopBar";
|
|
import { getNavCategories } from "@/lib/categories";
|
|
import { websiteDomain } from "@/lib/config";
|
|
import { site } from "@/lib/data";
|
|
|
|
const vazir = Vazirmatn({
|
|
subsets: ["arabic", "latin"],
|
|
variable: "--font-vazir",
|
|
display: "swap",
|
|
weight: ["300", "400", "500", "600", "700", "800"],
|
|
});
|
|
|
|
const montserrat = Montserrat({
|
|
subsets: ["latin"],
|
|
variable: "--font-montserrat",
|
|
display: "swap",
|
|
weight: ["400", "500", "600", "700"],
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
metadataBase: new URL(`https://${websiteDomain}`),
|
|
title: {
|
|
default: `${site.name} | ${site.tagline}`,
|
|
template: `%s | ${site.name}`,
|
|
},
|
|
description: site.description,
|
|
keywords: site.keywords,
|
|
icons: { icon: "/favicon.ico" },
|
|
};
|
|
|
|
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
|
const categories = await getNavCategories();
|
|
|
|
return (
|
|
<html lang="fa" dir="rtl" className={`${vazir.variable} ${montserrat.variable}`}>
|
|
<body className={`${vazir.className} min-h-screen antialiased`}>
|
|
<TopBar />
|
|
<Header categories={categories} />
|
|
<main>{children}</main>
|
|
<Footer />
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|