Files
carrotskin/src/app/layout.tsx

46 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-12-04 10:17:03 +08:00
import type { Metadata } from "next";
import { Inter } from "next/font/google";
2025-12-04 10:17:03 +08:00
import "./globals.css";
import Navbar from "@/components/Navbar";
import { AuthProvider } from "@/contexts/AuthContext";
import { MainContent } from "@/components/MainContent";
import { ErrorNotificationContainer } from "@/components/ErrorNotification";
import ScrollToTop from "@/components/ScrollToTop";
2025-12-04 10:17:03 +08:00
const inter = Inter({
2025-12-04 10:17:03 +08:00
subsets: ["latin"],
weight: ['100', '200', '300', '400', '500', '600', '700', '800', '900'],
display: 'swap',
2025-12-04 10:17:03 +08:00
});
export const metadata: Metadata = {
title: "CarrotSkin - 现代化Minecraft Yggdrasil皮肤站",
description: "新一代Minecraft Yggdrasil皮肤站为创作者打造的现代化皮肤管理平台",
keywords: "Minecraft, 皮肤站, Yggdrasil, CarrotSkin, 我的世界, 皮肤管理",
authors: [{ name: "CarrotSkin Team" }],
openGraph: {
title: "CarrotSkin - 现代化Minecraft Yggdrasil皮肤站",
description: "新一代Minecraft Yggdrasil皮肤站为创作者打造的现代化皮肤管理平台",
type: "website",
},
2025-12-04 10:17:03 +08:00
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="zh-CN">
<body className={inter.className}>
<AuthProvider>
<Navbar />
<MainContent>{children}</MainContent>
<ErrorNotificationContainer />
<ScrollToTop />
</AuthProvider>
2025-12-04 10:17:03 +08:00
</body>
</html>
);
}