57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { Vazirmatn } from "next/font/google";
|
|
import "./globals.css";
|
|
import { TopBar } from "@/components/layout/TopBar";
|
|
import { Header } from "@/components/layout/Header";
|
|
import { Footer } from "@/components/layout/Footer";
|
|
import { getNavCategories } from "@/lib/categories";
|
|
import { getLogoSrc } from "@/lib/media";
|
|
import { getBusinessInfo, parseMetaTagHtml } from "@/lib/meshkee";
|
|
|
|
const vazir = Vazirmatn({
|
|
subsets: ["arabic", "latin"],
|
|
variable: "--font-vazir",
|
|
display: "swap",
|
|
weight: ["300", "400", "500", "600", "700", "800"],
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
title: "داروخانه دکتر ارجمند | صفحه اصلی",
|
|
description:
|
|
"خرید آنلاین دارو، مکمل، محصولات بهداشتی و آرایشی از داروخانه دکتر ارجمند در قم، سالاریه.",
|
|
};
|
|
|
|
export default async function RootLayout({ children }: { children: React.ReactNode }) {
|
|
const [logoSrc, categories, businessInfo] = await Promise.all([
|
|
Promise.resolve(getLogoSrc()),
|
|
getNavCategories(),
|
|
getBusinessInfo(),
|
|
]);
|
|
|
|
const cmsMetaTags = (businessInfo?.metaTags ?? []).flatMap((tag, index) => {
|
|
const attrs = parseMetaTagHtml(tag.html ?? "");
|
|
if (!attrs) return [];
|
|
return [<meta key={`cms-meta-${index}`} {...attrs} />];
|
|
});
|
|
|
|
return (
|
|
<html lang="fa" dir="rtl" className={vazir.variable}>
|
|
<head>
|
|
{cmsMetaTags}
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
</head>
|
|
<body className={`${vazir.className} min-h-screen antialiased`}>
|
|
<TopBar />
|
|
<Header logoSrc={logoSrc} categories={categories} />
|
|
<main className="pb-12">{children}</main>
|
|
<Footer logoSrc={logoSrc} trustBadges={businessInfo?.trustBadges} />
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|