import type { Metadata, Viewport } from "next"; import { Geist, Geist_Mono } from "next/font/google"; import Script from "next/script"; import "../globals.css"; // Adjusted path import { NextIntlClientProvider } from 'next-intl'; import { getMessages } from 'next-intl/server'; import { notFound } from 'next/navigation'; import { config } from "@/lib/config"; import InstallPrompt from "@/components/InstallPrompt"; import AppFooter from "@/components/AppFooter"; const geistSans = Geist({ variable: "--font-geist-sans", subsets: ["latin"], }); const geistMono = Geist_Mono({ variable: "--font-geist-mono", subsets: ["latin"], }); export const metadata: Metadata = { title: config.appName, description: config.appDescription, }; export const viewport: Viewport = { themeColor: config.colors.themeColor, width: "device-width", initialScale: 1, maximumScale: 1, }; export default async function LocaleLayout({ children, params }: { children: React.ReactNode; params: Promise<{ locale: string }>; }) { const { locale } = await params; console.log('[app/[locale]/layout] params locale:', locale); // Ensure that the incoming `locale` is valid if (!['en', 'de'].includes(locale)) { console.log('[app/[locale]/layout] invalid locale, triggering notFound()'); notFound(); } // Providing all messages to the client const messages = await getMessages(); return (