Frontend/src/app/layout.tsx
2024-04-19 23:13:14 +01:00

64 lines
1.6 KiB
TypeScript

import { Metadata, Viewport } from "next";
import Script from "next/script";
import { ReactElement } from "react";
import Container from "./components/container";
import ThemeProvider from "./components/theme-provider";
import { Toaster } from "./components/ui/toaster";
import { TooltipProvider } from "./components/ui/tooltip";
import "./globals.css";
import config from "@root/config.json";
import { inter } from "@/app/font/fonts";
export const viewport: Viewport = {
themeColor: "#3498DB",
};
export const metadata: Metadata = {
metadataBase: new URL(config.publicUrl),
title: {
template: "%s - " + config.name,
default: config.name,
},
description: config.description,
keywords: "Minecraft, APIs, wrapper, utility, development",
openGraph: {
title: config.name,
description: config.description,
url: config.publicUrl,
locale: "en_US",
type: "website",
images: [
{
url: `${config.publicUrl}/media/logo.png`,
},
],
},
twitter: {
card: "summary",
},
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>): ReactElement {
return (
<>
<Script defer data-domain="mcutils.xyz" src="https://analytics.fascinated.cc/js/script.js" />
<html className={inter.className} lang="en" suppressHydrationWarning>
<head />
<body>
<ThemeProvider attribute="class" defaultTheme="dark" enableSystem disableTransitionOnChange>
<TooltipProvider>
<Toaster />
<Container>{children}</Container>
</TooltipProvider>
</ThemeProvider>
</body>
</html>
</>
);
}