import type { Metadata } from "next" import localFont from "next/font/local" import { AppConfigProvider } from "@/components/providers/app-config-provider" import { AuthProvider } from "@/components/providers/session-provider" import { appName } from "@/lib/app-config" import { SkipLink } from "@/components/skip-link" import { Toaster } from "@/components/ui/sonner" import "./globals.css" // Lokal ausgeliefert aus /font/Inter – keine Anfrage an Google Fonts. const inter = localFont({ src: [ { path: "../font/Inter/Inter_18pt-Regular.ttf", weight: "400", style: "normal" }, { path: "../font/Inter/Inter_18pt-Italic.ttf", weight: "400", style: "italic" }, { path: "../font/Inter/Inter_18pt-Medium.ttf", weight: "500", style: "normal" }, { path: "../font/Inter/Inter_18pt-MediumItalic.ttf", weight: "500", style: "italic" }, { path: "../font/Inter/Inter_18pt-SemiBold.ttf", weight: "600", style: "normal" }, { path: "../font/Inter/Inter_18pt-SemiBoldItalic.ttf", weight: "600", style: "italic" }, { path: "../font/Inter/Inter_18pt-Bold.ttf", weight: "700", style: "normal" }, { path: "../font/Inter/Inter_18pt-BoldItalic.ttf", weight: "700", style: "italic" }, ], variable: "--font-inter", display: "swap", fallback: ["system-ui", "Segoe UI", "Arial", "sans-serif"], }) // APP_COMPANY_NAME wird erst zur Laufzeit gelesen. Ohne dynamisches Rendern // würde beim Bauen des Images der Vorgabename festgeschrieben. export const dynamic = "force-dynamic" export async function generateMetadata(): Promise { const name = appName() return { title: { default: name, template: `%s · ${name}`, }, description: "Datenschutzerklärungen nach DSGVO – transparent und zentral verwaltet", } } export default function RootLayout({ children, }: { children: React.ReactNode }) { return (