Import source: src/app/layout
Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
This commit is contained in:
@@ -0,0 +1,49 @@
|
|||||||
|
import type { Metadata } from "next";
|
||||||
|
import { Bricolage_Grotesque, Instrument_Sans, JetBrains_Mono } from "next/font/google";
|
||||||
|
import "./globals.css";
|
||||||
|
import { Providers } from "@/app/providers";
|
||||||
|
|
||||||
|
const fontDisplay = Bricolage_Grotesque({
|
||||||
|
subsets: ["latin"],
|
||||||
|
variable: "--font-display",
|
||||||
|
display: "swap",
|
||||||
|
});
|
||||||
|
|
||||||
|
const fontSans = Instrument_Sans({
|
||||||
|
subsets: ["latin"],
|
||||||
|
variable: "--font-sans",
|
||||||
|
display: "swap",
|
||||||
|
});
|
||||||
|
|
||||||
|
const fontMono = JetBrains_Mono({
|
||||||
|
subsets: ["latin"],
|
||||||
|
variable: "--font-mono",
|
||||||
|
display: "swap",
|
||||||
|
});
|
||||||
|
|
||||||
|
export const metadata: Metadata = {
|
||||||
|
title: "CoaxysPanel — Server Hosting Control Center",
|
||||||
|
description: "A frontend-only hosting control center for CoaxysPanel.",
|
||||||
|
icons: [{ rel: "icon", url: "/favicon.svg" }],
|
||||||
|
};
|
||||||
|
|
||||||
|
// Applies persisted appearance preferences before first paint to avoid a
|
||||||
|
// flash of the wrong theme. Mirrors the logic in Providers.
|
||||||
|
const themeInitScript = `(function(){try{var s=(JSON.parse(localStorage.getItem("coaxyspanel-ui")||"{}").state)||{};var r=document.documentElement;var t=s.theme||"dark";r.classList.toggle("dark",t==="dark"||(t==="system"&&matchMedia("(prefers-color-scheme: dark)").matches));r.dataset.accent=s.accent||"azure";r.dataset.glass=s.glass||"subtle";r.dataset.radius=s.radius||"rounded";r.dataset.ambiance=s.ambiance===true?"on":"off";r.classList.add("density-"+(s.density||"compact"));}catch(e){document.documentElement.classList.add("dark");document.documentElement.dataset.glass="subtle";document.documentElement.dataset.ambiance="off";}})();`;
|
||||||
|
|
||||||
|
export default function RootLayout({ children }: { children: React.ReactNode }) {
|
||||||
|
return (
|
||||||
|
<html
|
||||||
|
lang="en"
|
||||||
|
suppressHydrationWarning
|
||||||
|
className={`${fontDisplay.variable} ${fontSans.variable} ${fontMono.variable}`}
|
||||||
|
>
|
||||||
|
<head>
|
||||||
|
<script dangerouslySetInnerHTML={{ __html: themeInitScript }} />
|
||||||
|
</head>
|
||||||
|
<body className="font-sans">
|
||||||
|
<Providers>{children}</Providers>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user