southernmonsarysupply/app/layout.tsx

74 lines
1.8 KiB
TypeScript

import type { Metadata } from "next";
import "./globals.css";
import { SiteFooter } from "@/components/site-footer";
import { SiteHeader } from "@/components/site-header";
import { ScrollReveal } from "@/components/scroll-reveal";
import { JsonLd } from "@/components/json-ld";
import {
buildMetadataBase,
businessSchema,
websiteSchema,
} from "@/lib/seo";
import { siteConfig } from "@/data/site-content";
export const metadata: Metadata = {
metadataBase: buildMetadataBase(),
title: {
default: `${siteConfig.name} | Masonry & Landscaping Supplies`,
template: `%s | ${siteConfig.name}`,
},
description: siteConfig.description,
alternates: {
canonical: "/",
},
openGraph: {
type: "website",
title: `${siteConfig.name} | Masonry & Landscaping Supplies`,
description: siteConfig.description,
siteName: siteConfig.name,
images: [
{
url: siteConfig.defaultOgImage,
alt: siteConfig.name,
},
],
},
twitter: {
card: "summary_large_image",
title: `${siteConfig.name} | Masonry & Landscaping Supplies`,
description: siteConfig.description,
images: [siteConfig.defaultOgImage],
},
icons: {
icon: "/icon.png",
shortcut: "/icon.png",
apple: "/icon.png",
},
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="en">
<body>
<ScrollReveal />
<JsonLd
id="global-schema"
data={{
"@context": "https://schema.org",
"@graph": [websiteSchema(), businessSchema()],
}}
/>
<div className="site-shell">
<SiteHeader />
<main>{children}</main>
<SiteFooter />
</div>
</body>
</html>
);
}