import { mockDb } from '../../lib/mockDb'; import type { Metadata } from "next"; import { Unbounded, Golos_Text, IBM_Plex_Mono } from "next/font/google"; import { NextIntlClientProvider } from 'next-intl'; import { getMessages, setRequestLocale } from 'next-intl/server'; import { notFound } from 'next/navigation'; import { routing } from '@/i18n/routing'; import { headers } from 'next/headers'; import Script from 'next/script'; import Navbar from '@/components/Navbar'; import Footer from '@/components/Footer'; import { SITE_URL, buildAlternates, ogLocale } from '@/lib/seo'; import "../globals.css"; const unbounded = Unbounded({ variable: "--font-unbounded", subsets: ["latin", "cyrillic"], weight: ["400", "600", "800"], }); const golosText = Golos_Text({ variable: "--font-golos", subsets: ["latin", "cyrillic"], weight: ["400", "500", "600"], }); const ibmPlexMono = IBM_Plex_Mono({ variable: "--font-mono", subsets: ["latin", "cyrillic"], weight: ["400", "500"], }); export function generateStaticParams() { return routing.locales.map((locale) => ({locale})); } export async function generateMetadata({ params }: { params: Promise<{ locale: string }> }): Promise { const { locale } = await params const headersList = await headers(); const pathname = headersList.get('x-pathname') || `/${locale}`; const title = locale === 'en' ? 'Marmaris Local — Local Guide, Not the Tourist Trail' : locale === 'ru' ? 'Marmaris Local — Местный гид по Мармарису' : 'Marmaris Local — Yerel Rehber'; const description = locale === 'en' ? "Marmaris' best local spots — restaurants, apart hotels and businesses, curated and locally approved." : locale === 'ru' ? 'Лучшие места Мармариса — рестораны, апарт-отели и заведения, проверенные местными жителями.' : "Marmaris'in en iyi yerel mekanları, restoranları ve saklı apart otelleri."; return { title, description, metadataBase: new URL(SITE_URL), manifest: '/manifest.json', alternates: buildAlternates(pathname), openGraph: { title, description, url: `${SITE_URL}${pathname}`, siteName: 'Marmaris Local', locale: ogLocale(locale), type: 'website', }, twitter: { card: 'summary_large_image', title, description, }, }; } export default async function RootLayout({ children, params }: Readonly<{ children: React.ReactNode; params: Promise<{ locale: string }>; }>) { const { locale } = await params; if (!routing.locales.includes(locale as any)) { notFound(); } setRequestLocale(locale); const messages = await getMessages(); const headersList = await headers(); const pathname = headersList.get('x-pathname') || ''; const hideNavbarFooter = pathname.includes('/admin') || pathname.includes('/login') || pathname.includes('/widget'); const categories = await mockDb.getCategories(); return ( {/* VPS Panel Analytics */} {!hideNavbarFooter && } {children} {!hideNavbarFooter &&