Files
MineGeo/app/layout.tsx

55 lines
1.5 KiB
TypeScript

import type { Metadata } from "next";
import "./globals.css";
import "./block-theme.css";
import "./account.css";
import "./map-theme.css";
import "./workshop.css";
import "./leaderboard.css";
import "./home-map.css";
import "./rounded-theme.css";
import "./cursor.css";
import { SiteCursor } from "@/components/SiteCursor";
import { I18nProvider } from "@/components/I18nProvider";
import { getI18n } from "@/lib/i18n";
import "./polish.css";
import { SiteSettingsProvider } from "@/components/SiteSettingsProvider";
import { initialSiteSettings } from "@/lib/site-settings";
export async function generateMetadata(): Promise<Metadata> {
const { t } = await getI18n();
return {
title: {
default: t("MineGeo — Get lost in a familiar world"),
template: "%s · MineGeo",
},
description: t(
"Guess where you are in Minecraft. Explore community servers through 360° panoramas and place your pin on the map.",
),
};
}
export default async function RootLayout({
children,
}: {
children: React.ReactNode;
}) {
const [{ locale, preference, detectedLocale }, settings] = await Promise.all([
getI18n(),
initialSiteSettings(),
]);
return (
<html lang={locale}>
<body>
<I18nProvider
locale={locale}
preference={preference}
detectedLocale={detectedLocale}
>
<SiteSettingsProvider initialSettings={settings}>
{children}
<SiteCursor />
</SiteSettingsProvider>
</I18nProvider>
</body>
</html>
);
}