Feat : Gitbook

This commit is contained in:
decolua
2026-05-11 11:50:24 +07:00
parent 7ad538bcf2
commit fd92af77a0
124 changed files with 34154 additions and 4 deletions

View File

@@ -0,0 +1,36 @@
import DocsLayout from "@/components/DocsLayout";
import DocsContent from "@/components/DocsContent";
import { extractHeadings } from "@/utils/markdown";
import { loadContent, getAllSlugs } from "@/lib/content";
import { LANG_CODES, isValidLang, DEFAULT_LANG } from "@/constants/languages";
import { notFound } from "next/navigation";
export const dynamicParams = false;
export async function generateStaticParams() {
// Build params for every (lang × slug) combination based on default language slugs.
const slugs = getAllSlugs(DEFAULT_LANG);
const params = [];
for (const lang of LANG_CODES) {
for (const slug of slugs) {
params.push({ lang, slug });
}
}
return params;
}
export default async function DocPage({ params }) {
const { lang, slug } = await params;
if (!isValidLang(lang)) notFound();
const content = loadContent(lang, slug);
if (!content) notFound();
const headings = extractHeadings(content);
return (
<DocsLayout headings={headings} lang={lang}>
<DocsContent content={content} />
</DocsLayout>
);
}

View File

@@ -0,0 +1,26 @@
import DocsLayout from "@/components/DocsLayout";
import DocsContent from "@/components/DocsContent";
import { extractHeadings } from "@/utils/markdown";
import { loadContent } from "@/lib/content";
import { LANG_CODES, isValidLang } from "@/constants/languages";
import { notFound } from "next/navigation";
export const dynamicParams = false;
export async function generateStaticParams() {
return LANG_CODES.map(lang => ({ lang }));
}
export default async function LangHomePage({ params }) {
const { lang } = await params;
if (!isValidLang(lang)) notFound();
const content = loadContent(lang, "index") || "# 9Router Documentation\n\nContent coming soon...";
const headings = extractHeadings(content);
return (
<DocsLayout headings={headings} lang={lang}>
<DocsContent content={content} />
</DocsLayout>
);
}