ThemeProvider.tsx 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import { NextUIProvider } from "@nextui-org/react";
  2. import { ThemeProvider as NextThemesProvider } from "next-themes";
  3. import FullLoading from "@/components/FullLoading"; // 全局 Loading
  4. import Header from "@/components/Header"; // 头部布局
  5. import Menu from "@/components/Menu"; // 菜单
  6. import Login from "@/components/Login";
  7. export function ThemeProvider({ children }: { children: React.ReactNode }) {
  8. return (
  9. <>
  10. <NextUIProvider>
  11. <NextThemesProvider
  12. attribute="class"
  13. defaultTheme={process.env.DEFAULT_THEME}
  14. >
  15. <FullLoading />
  16. <Header name={process.env.SITE_TITLE || "AI智能体广场"} />
  17. <div
  18. className="flex justify-between items-center bg-slate-200 dark:bg-[#000]"
  19. style={{ height: "calc(100vh - 3.5rem)" }}
  20. >
  21. <div
  22. className="shadow-md mx-2 bg-[#ffffff] dark:bg-[#202123] rounded-md p-2"
  23. style={{ height: "calc(100vh - 5rem)", width: "5.2rem" }}
  24. >
  25. <Menu/>
  26. </div>
  27. <div
  28. className="relative shadow-md mr-2 bg-[#ffffff] dark:bg-[#202123] rounded-md overflow-auto scroll-smooth"
  29. style={{
  30. height: "calc(100vh - 5rem)",
  31. width: "calc(100% - 5.2rem)",
  32. }}
  33. >
  34. <main>{children}</main>
  35. </div>
  36. </div>
  37. </NextThemesProvider>
  38. </NextUIProvider>
  39. <Login/>
  40. </>
  41. );
  42. }