import Footer from '@/components/Footer'; import Header from '@/components/Header'; import JsonLd from '@/components/JsonLd'; import AnalyticsProvider from '@/components/analytics/AnalyticsProvider'; import CMSConnectivityNotice from '@/components/CMSConnectivityNotice'; import { FeedbackOverlay } from '@/components/feedback/FeedbackOverlay'; import { Metadata, Viewport } from 'next'; import { NextIntlClientProvider } from 'next-intl'; import { getMessages } from 'next-intl/server'; import '../../styles/globals.css'; import { SITE_URL } from '@/lib/schema'; import { config } from '@/lib/config'; export const metadata: Metadata = { metadataBase: new URL(SITE_URL), icons: { icon: [ { url: '/favicon.ico', sizes: 'any' }, { url: '/logo-blue.svg', type: 'image/svg+xml' }, ], apple: [{ url: '/apple-touch-icon.png', sizes: '180x180', type: 'image/png' }], }, }; export const viewport: Viewport = { width: 'device-width', initialScale: 1, maximumScale: 1, userScalable: false, viewportFit: 'cover', themeColor: '#001a4d', }; export default async function LocaleLayout({ children, params, }: { children: React.ReactNode; params: Promise<{ locale: string }>; }) { const { locale } = await params; // Ensure locale is a valid string, fallback to 'en' const supportedLocales = ['en', 'de']; const localeStr = (typeof locale === 'string' ? locale : '').trim(); const safeLocale = supportedLocales.includes(localeStr) ? localeStr : 'en'; let messages = {}; try { messages = await getMessages(); } catch (error) { console.error(`Failed to load messages for locale '${safeLocale}':`, error); messages = {}; } return (
{children}