feat: 重构博客为水墨纸质风格 + 搭建后台管理系统

- 重新设计全站 UI:parchment/ink/terracotta 水墨纸质色系,宋式 serif 排版
- 新增页面:文章列表、文章详情、分类、标签、关于
- GSAP ScrollTrigger 滚动动画 + 逐字揭示效果
- 后台管理系统 /admin:文章/分类/标签 CRUD,JSON 文件存储
- 登录认证(cookie session)
- 设计系统文档 UI.md
This commit is contained in:
胡旭
2026-06-24 08:45:28 +08:00
parent 507f12e501
commit dce8fe62ea
35 changed files with 3124 additions and 96 deletions
+29
View File
@@ -0,0 +1,29 @@
import { notFound } from "next/navigation";
import { posts } from "@/data/posts";
import PostContent from "@/components/PostContent";
export async function generateStaticParams() {
return posts.map((post) => ({ slug: post.slug }));
}
export async function generateMetadata({ params }: { params: Promise<{ slug: string }> }) {
const { slug } = await params;
const post = posts.find((p) => p.slug === slug);
if (!post) return {};
return {
title: post.title,
description: post.excerpt,
};
}
export default async function PostPage({ params }: { params: Promise<{ slug: string }> }) {
const { slug } = await params;
const post = posts.find((p) => p.slug === slug);
if (!post) notFound();
const currentIndex = posts.findIndex((p) => p.slug === slug);
const prevPost = currentIndex > 0 ? posts[currentIndex - 1] : null;
const nextPost = currentIndex < posts.length - 1 ? posts[currentIndex + 1] : null;
return <PostContent post={post} prevPost={prevPost} nextPost={nextPost} />;
}