feat(docs): enhance documentation structure and add Docker support for standalone Next.js app

This commit is contained in:
HouYunFei
2026-06-02 13:23:11 +08:00
parent 7802771e56
commit 6413011e54
24 changed files with 250 additions and 94 deletions
+4 -2
View File
@@ -1,9 +1,11 @@
import { source } from '@/lib/source';
import { createDocsSearchTokenizer } from '@/lib/search-tokenizer';
import { createFromSource } from 'fumadocs-core/search/server';
export const revalidate = false;
export const { staticGET: GET } = createFromSource(source, {
// https://docs.orama.com/docs/orama-js/supported-languages
language: 'english',
components: {
tokenizer: createDocsSearchTokenizer(),
},
});
+9
View File
@@ -2,10 +2,19 @@
@import 'fumadocs-ui/css/neutral.css';
@import 'fumadocs-ui/css/preset.css';
:root {
--font-body: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif;
--font-display: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', Arial, sans-serif;
}
html {
scrollbar-gutter: stable;
}
body {
font-family: var(--font-body);
}
html > body[data-scroll-locked] {
margin-right: 0px !important;
--removed-body-scroll-bar-size: 0px !important;
+1 -18
View File
@@ -1,26 +1,9 @@
import { Noto_Sans_SC, Sora } from 'next/font/google';
import { Provider } from '@/components/provider';
import './global.css';
const bodyFont = Noto_Sans_SC({
subsets: ['latin'],
weight: ['400', '500', '600'],
variable: '--font-body',
});
const displayFont = Sora({
subsets: ['latin'],
weight: ['500', '600', '700'],
variable: '--font-display',
});
export default function Layout({ children }: LayoutProps<'/'>) {
return (
<html
lang="zh-CN"
className={`${bodyFont.className} ${bodyFont.variable} ${displayFont.variable}`}
suppressHydrationWarning
>
<html lang="zh-CN" suppressHydrationWarning>
<body className="flex flex-col min-h-screen">
<Provider>{children}</Provider>
</body>
-28
View File
@@ -1,28 +0,0 @@
import { getPageImage, source } from '@/lib/source';
import { notFound } from 'next/navigation';
import { ImageResponse } from 'next/og';
import { generate as DefaultImage } from 'fumadocs-ui/og';
import { appName } from '@/lib/shared';
export const revalidate = false;
export async function GET(_req: Request, { params }: RouteContext<'/og/docs/[...slug]'>) {
const { slug } = await params;
const page = source.getPage(slug.slice(0, -1));
if (!page) notFound();
return new ImageResponse(
<DefaultImage title={page.data.title} description={page.data.description} site={appName} />,
{
width: 1200,
height: 630,
},
);
}
export function generateStaticParams() {
return source.getPages().map((page) => ({
lang: page.locale,
slug: getPageImage(page).segments,
}));
}