layout.tsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { NextUIProvider } from "@nextui-org/react";
  2. import { Inter } from "next/font/google";
  3. import type { Metadata, Viewport } from "next";
  4. import "./globals.scss";
  5. import { ThemeProvider } from "@/providers/ThemeProvider";
  6. import { GlobalProvider } from "@/providers/GlobalProvider";
  7. const inter = Inter({ subsets: ["latin"] });
  8. export const metadata: Metadata = {
  9. title: `${process.env.SITE_TITLE}`, // 网站标题
  10. description: process.env.SITE_DESCRIPTION, // 网站描述
  11. applicationName: process.env.PROJECT_NAME, // 应用名称
  12. authors: { name: process.env.AUTHOR_NAME, url: process.env.AUTHOR_BLOG }, // 网站作者
  13. keywords: process.env.SITE_KEYWORDS, // 网站关键词
  14. icons: {
  15. icon: "/favicon.ico",
  16. shortcut: "/favicon-16x16.png",
  17. apple: "/apple-touch-icon.png",
  18. },
  19. };
  20. export const viewport: Viewport = {
  21. themeColor: [
  22. { media: "(prefers-color-scheme: light)", color: "#fff" },
  23. { media: "(prefers-color-scheme: dark)", color: "#000" },
  24. ],
  25. };
  26. export default function RootLayout({
  27. children,
  28. }: Readonly<{
  29. children: React.ReactNode;
  30. }>) {
  31. return (
  32. <html suppressHydrationWarning>
  33. <body className={inter.className}>
  34. <NextUIProvider>
  35. <GlobalProvider>
  36. <ThemeProvider>{children}</ThemeProvider>
  37. </GlobalProvider>
  38. </NextUIProvider>
  39. </body>
  40. </html>
  41. );
  42. }