Files
infinite-canvas/web/src/app/layout.tsx
T
HouYunFei dd6e426d78 refactor(layout): 组件文件迁移至layout目录
- 将AppProviders组件从src/components迁移到src/components/layout
- 将AppTopNav组件从src/components迁移到src/components/layout
- 将UserStatusActions组件从src/components迁移到src/components/layout
- 将ClientRootInit组件从src/components迁移到src/components/layout
- 将GitHubLink组件从src/components迁移到src/components/layout
- 将VersionReleaseModal组件从src/components迁移到src/components/layout
- 更新所有相关组件导入路径引用新的layout目录位置
2026-05-21 14:52:33 +08:00

42 lines
1.3 KiB
TypeScript

import type { Metadata } from "next";
import Script from "next/script";
import { AntdRegistry } from "@ant-design/nextjs-registry";
import { AppProviders } from "@/components/layout/app-providers";
import "antd/dist/reset.css";
import "./globals.css";
import React from "react";
export const metadata: Metadata = {
title: "无限画布",
description: "一个无限画布创作工具",
};
export default function RootLayout({
children,
}: Readonly<{
children: React.ReactNode;
}>) {
return (
<html lang="zh-CN" suppressHydrationWarning className="font-sans">
<body
className="bg-background text-foreground antialiased"
style={{
fontFamily:
'"SF Pro Display","SF Pro Text","PingFang SC","Microsoft YaHei","Helvetica Neue",sans-serif',
}}
>
<Script
id="theme-script"
strategy="beforeInteractive"
dangerouslySetInnerHTML={{
__html: `try{var s=JSON.parse(localStorage.getItem("infinite-canvas:theme_store")||"{}");var t=s.state&&s.state.theme==="light"?"light":"dark";document.documentElement.classList.toggle("dark",t==="dark");document.documentElement.style.colorScheme=t}catch(e){}`,
}}
/>
<AntdRegistry>
<AppProviders>{children}</AppProviders>
</AntdRegistry>
</body>
</html>
);
}