Initial commit
This commit is contained in:
commit
bcca176137
88 files changed
+8725
No files matched your search
+104
@@ -0,0 +1,104 @@
|
||||
import CookieConsentBanner from "@/components/CookieConsent";
|
||||
import type { Metadata, Viewport } from "next";
|
||||
import { Manrope, Nunito_Sans } from "next/font/google";
|
||||
import "./globals.css";
|
||||
|
||||
import Footer from "@/components/Footer";
|
||||
import Header from "@/components/Header";
|
||||
|
||||
const nunitoSans = Nunito_Sans({
|
||||
subsets: ["latin"],
|
||||
weight: ["400", "600", "700"],
|
||||
variable: "--font-body",
|
||||
display: "swap",
|
||||
});
|
||||
|
||||
const manrope = Manrope({
|
||||
subsets: ["latin"],
|
||||
weight: ["400", "500", "600", "700"],
|
||||
variable: "--font-heading",
|
||||
display: "swap",
|
||||
});
|
||||
|
||||
export const viewport: Viewport = {
|
||||
width: "device-width",
|
||||
initialScale: 1,
|
||||
};
|
||||
|
||||
const siteName = "ENVU";
|
||||
const title = "ENVU - Code Connect";
|
||||
const description = "Wir bieten Ihnen maßgeschneiderte Lösungen.";
|
||||
const siteUrl = "https://envu.de";
|
||||
|
||||
const ogImage = {
|
||||
url: "/images/envu.png",
|
||||
alt: "Envu Wallpaper",
|
||||
width: 1200,
|
||||
height: 628,
|
||||
};
|
||||
|
||||
export const metadata: Metadata = {
|
||||
metadataBase: new URL(siteUrl),
|
||||
title: {
|
||||
default: title,
|
||||
template: `%s | ${siteName}`,
|
||||
},
|
||||
description,
|
||||
keywords: "Envu, Hannover",
|
||||
authors: [{ name: siteName }],
|
||||
robots: "index, follow",
|
||||
alternates: {
|
||||
canonical: siteUrl,
|
||||
},
|
||||
appleWebApp: {
|
||||
title: siteName,
|
||||
},
|
||||
openGraph: {
|
||||
type: "website",
|
||||
siteName,
|
||||
locale: "de_DE",
|
||||
title,
|
||||
description,
|
||||
images: [ogImage],
|
||||
url: siteUrl,
|
||||
},
|
||||
twitter: {
|
||||
card: "summary_large_image",
|
||||
site: "@envu",
|
||||
title,
|
||||
description,
|
||||
images: [{ url: ogImage.url, alt: ogImage.alt }],
|
||||
},
|
||||
};
|
||||
|
||||
const jsonLd = {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "LocalBusiness",
|
||||
name: siteName,
|
||||
url: siteUrl,
|
||||
description,
|
||||
address: {
|
||||
"@type": "PostalAddress",
|
||||
addressLocality: "Hannover",
|
||||
addressCountry: "DE",
|
||||
},
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
children,
|
||||
}: Readonly<{ children: React.ReactNode }>) {
|
||||
return (
|
||||
<html lang="de" className={`${nunitoSans.variable} ${manrope.variable}`}>
|
||||
<body>
|
||||
<script
|
||||
type="application/ld+json"
|
||||
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd) }}
|
||||
/>
|
||||
<Header />
|
||||
{children}
|
||||
<Footer />
|
||||
<CookieConsentBanner />
|
||||
</body>
|
||||
</html>
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user