75 lines
2.6 KiB
TypeScript
75 lines
2.6 KiB
TypeScript
import type { Metadata } from "next";
|
||
import { Halant } from "next/font/google";
|
||
import { Inter } from "next/font/google";
|
||
import "./globals.css";
|
||
import "@/lib/gsap-setup";
|
||
import { ServiceWrapper } from "@/components/ServiceWrapper";
|
||
import Tag from "@/tag/Tag";
|
||
import { getVisualEditScript } from "@/utils/visual-edit-script";
|
||
import { Libre_Baskerville } from "next/font/google";
|
||
import { Montserrat } from "next/font/google";
|
||
|
||
|
||
|
||
export const metadata: Metadata = {
|
||
title: 'Cardinal Roofing & Remodeling | The Gold Standard',
|
||
description: 'Experience unparalleled craftsmanship in roofing and home remodeling. Invest in peace of mind with Cardinal Roofing Company LLC – your trusted partner for quality and legacy protection.',
|
||
openGraph: {
|
||
"title": "Cardinal Roofing & Remodeling | The Gold Standard",
|
||
"description": "Experience unparalleled craftsmanship in roofing and home remodeling. Invest in peace of mind with Cardinal Roofing Company LLC – your trusted partner for quality and legacy protection.",
|
||
"url": "https://www.cardinalroofing.com",
|
||
"siteName": "Cardinal Roofing Company LLC",
|
||
"images": [
|
||
{
|
||
"url": "http://img.b2bpic.net/free-photo/close-up-experienced-carpenter-his-younger-employee_329181-15622.jpg",
|
||
"alt": "Luxurious slate roof on a modern home"
|
||
}
|
||
],
|
||
"type": "website"
|
||
},
|
||
twitter: {
|
||
"card": "summary_large_image",
|
||
"title": "Cardinal Roofing & Remodeling | The Gold Standard",
|
||
"description": "Experience unparalleled craftsmanship in roofing and home remodeling. Invest in peace of mind with Cardinal Roofing Company LLC – your trusted partner for quality and legacy protection.",
|
||
"images": [
|
||
"http://img.b2bpic.net/free-photo/close-up-experienced-carpenter-his-younger-employee_329181-15622.jpg"
|
||
]
|
||
},
|
||
robots: {
|
||
"index": true,
|
||
"follow": true
|
||
},
|
||
};
|
||
|
||
const libreBaskerville = Libre_Baskerville({
|
||
variable: "--font-libre-baskerville",
|
||
subsets: ["latin"],
|
||
weight: ["400", "700"],
|
||
});
|
||
const montserrat = Montserrat({
|
||
variable: "--font-montserrat",
|
||
subsets: ["latin"],
|
||
});
|
||
|
||
export default function RootLayout({
|
||
children,
|
||
}: Readonly<{
|
||
children: React.ReactNode;
|
||
}>) {
|
||
return (
|
||
<html lang="en" suppressHydrationWarning>
|
||
<ServiceWrapper>
|
||
<body className={`${libreBaskerville.variable} ${montserrat.variable} antialiased`}>
|
||
<Tag />
|
||
{children}
|
||
<script
|
||
dangerouslySetInnerHTML={{
|
||
__html: `${getVisualEditScript()}`
|
||
}}
|
||
/>
|
||
</body>
|
||
</ServiceWrapper>
|
||
</html>
|
||
);
|
||
}
|