feat: scaffold headless frontend integration per design doc

This commit is contained in:
2026-08-06 15:51:59 +08:00
parent b0919bf8b5
commit 7e30631c68
28 changed files with 708 additions and 126 deletions
+24
View File
@@ -0,0 +1,24 @@
export default function Footer() {
return (
<footer className="mt-auto border-t border-slate-100 bg-slate-950 py-10 text-slate-400">
<div className="mx-auto max-w-7xl px-6 text-center text-sm">
<p>&copy; {new Date().getFullYear()} . All rights reserved.</p>
{/*
合规要求:中国大陆网站需展示 ICP 备案号并链接至工信部备案查询。
详见 documents/设计方案分析与完善版.md §2.15。
实际备案号需在完成 ICP 备案后替换。
*/}
<p className="mt-2">
<a
href="https://beian.miit.gov.cn/"
target="_blank"
rel="noreferrer"
className="hover:text-white"
>
ICP备XXXXXXXX号-1
</a>
</p>
</div>
</footer>
);
}
+25
View File
@@ -0,0 +1,25 @@
import Link from "next/link";
const navItems = [
{ title: "首页", href: "/" },
{ title: "博客", href: "/blog" },
];
export default function Header() {
return (
<header className="sticky top-0 z-50 border-b border-slate-100 bg-white/80 backdrop-blur">
<div className="mx-auto flex h-16 max-w-7xl items-center justify-between px-6">
<Link href="/" className="text-xl font-bold text-primary">
</Link>
<nav className="flex gap-8">
{navItems.map((item) => (
<Link key={item.href} href={item.href} className="text-slate-700">
{item.title}
</Link>
))}
</nav>
</div>
</header>
);
}