import type { ReactNode } from "react"; import { unstable_noStore as noStore } from "next/cache"; import { redirect } from "next/navigation"; import { SiteAmbientBackdrop } from "@/components/layout/site-ambient-backdrop"; import { SiteFooter } from "@/components/layout/site-footer"; import { SiteHeader } from "@/components/layout/site-header"; import { isAdminAuthenticated } from "@/lib/admin-auth"; import { getMaintenanceMode, getSiteSettingsMediaBindings } from "@/lib/app-config"; import { getLocalizedPath, resolveLocale } from "@/lib/locale"; type SiteLayoutProps = { children: ReactNode; params: { locale: string; }; }; export const dynamic = "force-dynamic"; export const revalidate = 0; export default async function SiteLayout({ children, params: { locale } }: SiteLayoutProps) { noStore(); const localeKey = resolveLocale(locale); const [maintenanceEnabled, mediaBindings] = await Promise.all([ getMaintenanceMode(), getSiteSettingsMediaBindings(), ]); const authenticated = isAdminAuthenticated(); if (maintenanceEnabled && !authenticated) { redirect(getLocalizedPath(localeKey, "/coming-soon")); } return (
{children}
); }