48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import type { Metadata } from "next";
|
||
import { Geist, Geist_Mono, Noto_Sans_SC } from "next/font/google";
|
||
import "./globals.css";
|
||
import { ThemeProvider } from "./providers/ThemeProvider";
|
||
import { themeInitScript } from "./theme-init";
|
||
|
||
const geistSans = Geist({
|
||
variable: "--font-geist-sans",
|
||
subsets: ["latin"],
|
||
});
|
||
|
||
const geistMono = Geist_Mono({
|
||
variable: "--font-geist-mono",
|
||
subsets: ["latin"],
|
||
});
|
||
|
||
const notoSansSC = Noto_Sans_SC({
|
||
variable: "--font-noto-sans-sc",
|
||
subsets: ["latin"],
|
||
weight: ["400", "500", "600", "700"],
|
||
});
|
||
|
||
export const metadata: Metadata = {
|
||
title: "数字游民实战课 | 从朝九晚五到边旅行边赚钱",
|
||
description:
|
||
"数字游民实战课,21节课程带你掌握远程变现、被动收入、全球旅居,异度世界、大师兄、小美联合授课",
|
||
manifest: "/manifest.json",
|
||
};
|
||
|
||
export default function RootLayout({
|
||
children,
|
||
}: Readonly<{
|
||
children: React.ReactNode;
|
||
}>) {
|
||
return (
|
||
<html lang="zh-CN" suppressHydrationWarning>
|
||
<body
|
||
className={`${geistSans.variable} ${geistMono.variable} ${notoSansSC.variable} antialiased font-sans`}
|
||
>
|
||
<script
|
||
dangerouslySetInnerHTML={{ __html: themeInitScript }}
|
||
/>
|
||
<ThemeProvider>{children}</ThemeProvider>
|
||
</body>
|
||
</html>
|
||
);
|
||
}
|