56 lines
1.6 KiB
TypeScript
56 lines
1.6 KiB
TypeScript
import type { Metadata } from "next";
|
||
import { Geist, Geist_Mono } from "next/font/google";
|
||
import "./globals.css";
|
||
import { ThemeProvider } from "@/components/theme-provider";
|
||
import { Navbar } from "@/components/navbar";
|
||
import { Footer } from "@/components/sections";
|
||
import { AmbientBackground } from "@/components/ambient-background";
|
||
import { OpsPopup } from "@/components/ops-popup";
|
||
import { EventDebugPanel } from "@/components/event-debug-panel";
|
||
import { AuthProvider } from "@/components/auth-provider";
|
||
import { DeveloperFlagsProvider } from "@/components/developer-flags-provider";
|
||
|
||
const geistSans = Geist({
|
||
variable: "--font-geist-sans",
|
||
subsets: ["latin"],
|
||
});
|
||
|
||
const geistMono = Geist_Mono({
|
||
variable: "--font-geist-mono",
|
||
subsets: ["latin"],
|
||
});
|
||
|
||
export const metadata: Metadata = {
|
||
title: "Download Nova",
|
||
description: "高颜值下载站前端(Next.js)",
|
||
};
|
||
|
||
export default function RootLayout({
|
||
children,
|
||
}: Readonly<{
|
||
children: React.ReactNode;
|
||
}>) {
|
||
return (
|
||
<html
|
||
lang="zh-CN"
|
||
className={`${geistSans.variable} ${geistMono.variable} h-full antialiased`}
|
||
suppressHydrationWarning
|
||
>
|
||
<body className="min-h-full flex flex-col bg-slate-950 text-slate-100">
|
||
<ThemeProvider>
|
||
<DeveloperFlagsProvider>
|
||
<AuthProvider>
|
||
<AmbientBackground />
|
||
<Navbar />
|
||
<main className="mx-auto w-full max-w-7xl flex-1 px-4 md:px-6">{children}</main>
|
||
<Footer />
|
||
<OpsPopup />
|
||
<EventDebugPanel />
|
||
</AuthProvider>
|
||
</DeveloperFlagsProvider>
|
||
</ThemeProvider>
|
||
</body>
|
||
</html>
|
||
);
|
||
}
|