BeatSense / frontend /src /app /[lang] /layout.tsx
devrup404's picture
BeatSense: unified FastAPI + Next.js deployment
f4102c2
Raw
History Blame Contribute Delete
1 kB
import { notFound } from "next/navigation";
import { isLocale, locales } from "@/i18n/config";
import { getDictionary } from "@/i18n/dictionaries";
import { Providers } from "@/components/providers";
import { Sidebar } from "@/components/layout/sidebar";
import { Header } from "@/components/layout/header";
export async function generateStaticParams() {
return locales.map((lang) => ({ lang }));
}
export default async function LangLayout({
children,
params,
}: {
children: React.ReactNode;
params: Promise<{ lang: string }>;
}) {
const { lang } = await params;
if (!isLocale(lang)) notFound();
const dict = await getDictionary(lang);
return (
<Providers dict={dict} locale={lang}>
<div className="flex min-h-screen bg-background text-foreground">
<Sidebar />
<div className="flex flex-1 flex-col">
<Header />
<main className="flex-1 overflow-x-hidden p-6 lg:p-8">{children}</main>
</div>
</div>
</Providers>
);
}