- 新增事件总线式toast通知系统 - 新增头像、阅读进度、404/500错误页等基础组件 - 重构页脚、布局、分页、点赞按钮等现有组件 - 新增用户个人页、通知中心、帖子编辑/发布/置顶/推荐管理功能 - 优化登录注册页面样式与交互 - 修复路径类型文件引用,更新站点元信息与字体配置
58 lines
1.8 KiB
TypeScript
58 lines
1.8 KiB
TypeScript
import type { Metadata } from "next";
|
|
import { cookies } from "next/headers";
|
|
import "./globals.css";
|
|
import Header from "@/components/Header";
|
|
import Footer from "@/components/Footer";
|
|
import Toaster from "@/components/Toaster";
|
|
|
|
export const metadata: Metadata = {
|
|
title: {
|
|
default: "姜十三论坛 · J13 FORUM",
|
|
template: "%s · 姜十三论坛",
|
|
},
|
|
description: "姜十三论坛 - 技术分享与讨论社区",
|
|
openGraph: {
|
|
title: "姜十三论坛 · J13 FORUM",
|
|
description: "姜十三论坛 - 技术分享与讨论社区",
|
|
type: "website",
|
|
},
|
|
};
|
|
|
|
export default async function RootLayout({
|
|
children,
|
|
}: {
|
|
children: React.ReactNode;
|
|
}) {
|
|
const cookieStore = await cookies();
|
|
// 浅色优先的设计系统,仅在显式选择暗色时挂 .dark
|
|
const theme = cookieStore.get("j13-theme")?.value === "dark" ? "dark" : "light";
|
|
|
|
return (
|
|
<html lang="zh-CN" className={theme === "dark" ? "dark" : ""}>
|
|
<head>
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossOrigin="anonymous" />
|
|
<link
|
|
href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;700&family=Noto+Sans+SC:wght@400;500;700;900&display=swap"
|
|
rel="stylesheet"
|
|
/>
|
|
</head>
|
|
<body className="min-h-screen flex flex-col">
|
|
<a href="#main" className="skip-link">
|
|
跳到主要内容
|
|
</a>
|
|
<Header />
|
|
<main
|
|
id="main"
|
|
tabIndex={-1}
|
|
className="flex-1 w-full max-w-6xl mx-auto px-4 sm:px-6 py-7 sm:py-9 outline-none"
|
|
>
|
|
{children}
|
|
</main>
|
|
<Footer />
|
|
<Toaster />
|
|
</body>
|
|
</html>
|
|
);
|
|
}
|