Files
CubeAdmin/app/layout.tsx
2026-03-08 15:49:34 +01:00

82 lines
2.2 KiB
TypeScript

import type { Metadata, Viewport } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import { Providers } from "@/components/layout/providers";
// ---------------------------------------------------------------------------
// Fonts
// ---------------------------------------------------------------------------
const geistSans = Geist({
variable: "--font-geist-sans",
subsets: ["latin"],
display: "swap",
});
const geistMono = Geist_Mono({
variable: "--font-geist-mono",
subsets: ["latin"],
display: "swap",
});
// ---------------------------------------------------------------------------
// Metadata
// ---------------------------------------------------------------------------
export const metadata: Metadata = {
title: {
default: "CubeAdmin | Minecraft Server Manager",
template: "%s | CubeAdmin",
},
description:
"A professional, self-hosted admin panel for managing your Minecraft server. Monitor performance, manage players, control files, and more.",
keywords: [
"Minecraft",
"server admin",
"panel",
"management",
"console",
"monitoring",
],
authors: [{ name: "CubeAdmin" }],
creator: "CubeAdmin",
robots: {
index: false, // Admin panel should not be indexed
follow: false,
},
icons: {
icon: "/favicon.ico",
},
};
export const viewport: Viewport = {
themeColor: [
{ media: "(prefers-color-scheme: dark)", color: "#0a0a0a" },
{ media: "(prefers-color-scheme: light)", color: "#ffffff" },
],
width: "device-width",
initialScale: 1,
};
// ---------------------------------------------------------------------------
// Root Layout
// ---------------------------------------------------------------------------
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html
lang="en"
// Apply dark class by default; next-themes will manage it from here
className="dark"
suppressHydrationWarning
>
<body
className={`${geistSans.variable} ${geistMono.variable} font-sans antialiased`}
>
<Providers>{children}</Providers>
</body>
</html>
);
}