first commit

This commit is contained in:
2026-02-28 23:01:30 +08:00
commit 3956ee4806
415 changed files with 74538 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
import { getDocBySlug, getAllDocSlugs } from "../../../lib/docs";
import { DocContent } from "../../../components/DocContent";
import { notFound } from "next/navigation";
import { Metadata } from "next";
export async function generateStaticParams() {
const slugs = getAllDocSlugs();
return slugs.map((slug) => ({
slug,
}));
}
export async function generateMetadata(
{ params }: { params: Promise<{ slug: string[] }> }
): Promise<Metadata> {
const resolvedParams = await params;
const slug = resolvedParams?.slug || [];
const doc = await getDocBySlug(slug);
if (!doc) {
return {
title: "Not Found",
};
}
return {
title: doc.meta.title,
description: doc.meta.description || doc.meta.summary,
};
}
export default async function DocPage({ params }: { params: Promise<{ slug: string[] }> }) {
const resolvedParams = await params;
const slug = resolvedParams?.slug || [];
const doc = await getDocBySlug(slug);
if (!doc) {
notFound();
}
return (
<article className="doc-page-container">
<h1 className="text-4xl font-bold mb-4">{doc.meta.title}</h1>
{doc.meta.description && (
<p className="text-xl text-gray-500 dark:text-gray-400 mb-8">{doc.meta.description}</p>
)}
<DocContent contentHtml={doc.contentHtml} />
</article>
);
}

19
app/docs/layout.tsx Normal file
View File

@@ -0,0 +1,19 @@
import { Sidebar } from "../../components/Sidebar";
import { getSidebarStructure } from "../../lib/docs";
export default function DocsLayout({
children,
}: {
children: React.ReactNode;
}) {
const sidebarData = getSidebarStructure();
return (
<>
<Sidebar sidebarData={sidebarData} />
<main className="doc-main">
{children}
</main>
</>
);
}