69 lines
2.0 KiB
TypeScript
69 lines
2.0 KiB
TypeScript
import { getSession } from "@/lib/auth-utils";
|
|
import { headers } from "next/headers";
|
|
import type { Metadata } from "next";
|
|
import { Manrope } from "next/font/google";
|
|
import "./globals.css";
|
|
import { Toaster } from "@/components/ui/sonner";
|
|
import { UmamiAnalytics } from "@/components/analytics/umami-analytics";
|
|
|
|
const manrope = Manrope({
|
|
variable: "--font-manrope",
|
|
subsets: ["latin"],
|
|
weight: ["400", "500", "600", "700"],
|
|
});
|
|
|
|
export const metadata: Metadata = {
|
|
metadataBase: new URL(
|
|
process.env.NEXT_PUBLIC_SITE_URL ?? "https://mein-kitaplaner.de",
|
|
),
|
|
title: {
|
|
default: "Der digitale Kita-Planer für Elternvereine",
|
|
template: "%s | Kita-Planer",
|
|
},
|
|
description:
|
|
"Kita-Planer bündelt Dienste, Termine, Notdienste, Abwesenheiten und sichere Kommunikation für Elternvereine an einem Ort.",
|
|
openGraph: {
|
|
title: "Der digitale Kita-Planer für Elternvereine",
|
|
description:
|
|
"Organisiert Dienste, teilt Neuigkeiten und behaltet Termine gemeinsam im Blick.",
|
|
type: "website",
|
|
locale: "de_DE",
|
|
images: [
|
|
{
|
|
url: "/og-image.png",
|
|
width: 1200,
|
|
height: 630,
|
|
alt: "Ein Kind spielt mit bunten Holzklötzen.",
|
|
},
|
|
],
|
|
},
|
|
twitter: {
|
|
card: "summary_large_image",
|
|
title: "Der digitale Kita-Planer für Elternvereine",
|
|
description:
|
|
"Organisiert Dienste, teilt Neuigkeiten und behaltet Termine gemeinsam im Blick.",
|
|
images: ["/og-image.png"],
|
|
},
|
|
};
|
|
|
|
export default async function RootLayout({
|
|
children,
|
|
}: Readonly<{
|
|
children: React.ReactNode;
|
|
}>) {
|
|
const [requestHeaders, session] = await Promise.all([headers(), getSession()]);
|
|
const nonce = requestHeaders.get("x-nonce") ?? undefined;
|
|
return (
|
|
<html
|
|
lang="de"
|
|
className={`${manrope.variable} h-full antialiased`}
|
|
>
|
|
<body className="min-h-full flex flex-col">
|
|
{children}
|
|
<UmamiAnalytics nonce={nonce} enabled={!session?.user?.id} />
|
|
<Toaster />
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|