diff --git a/content/docs/comparisons.mdx b/content/docs/comparisons.mdx
deleted file mode 100644
index 8e58733..0000000
--- a/content/docs/comparisons.mdx
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: Comparisons
-description: How is Fumadocs different from other existing frameworks?
-icon: GitCompareArrows
----
-
-## Nextra
-
-Fumadocs is highly inspired by Nextra. For example, the Routing Conventions. That is why
-`meta.json` also exists in Fumadocs.
-
-Nextra is more opinionated than Fumadocs. Fumadocs is accelerated by App Router. As a result, It provides many server-side functions, and you have to
-configure things manually compared to simply editing a configuration file.
-
-Fumadocs works great if you want more control over everything, such as
-adding it to an existing codebase or implementing advanced routing.
-
-### Feature Table
-
-| Feature | Fumadocs | Nextra |
-| ------------------- | ------------ | ------------------------- |
-| Static Generation | Yes | Yes |
-| Cached | Yes | Yes |
-| Light/Dark Mode | Yes | Yes |
-| Syntax Highlighting | Yes | Yes |
-| Table of Contents | Yes | Yes |
-| Full-text Search | Yes | Yes |
-| i18n | Yes | Yes |
-| Last Git Edit Time | Yes | Yes |
-| Page Icons | Yes | Yes, via `_meta.js` files |
-| RSC | Yes | Yes |
-| Remote Source | Yes | Yes |
-| SEO | Via Metadata | Yes |
-| Built-in Components | Yes | Yes |
-| RTL Layout | Yes | Yes |
-
-### Additional Features
-
-Features supported via 3rd party libraries like [TypeDoc](https://typedoc.org) will not be listed here.
-
-| Feature | Fumadocs | Nextra |
-| -------------------------- | -------- | ------ |
-| OpenAPI Integration | Yes | No |
-| TypeScript Docs Generation | Yes | No |
-| TypeScript Twoslash | Yes | Yes |
-
-## Mintlify
-
-Mintlify is a documentation service, as compared to Fumadocs, it offers a free tier but isn't completely free and open source.
-
-Fumadocs is not as powerful as Mintlify, for example, the OpenAPI integration of Mintlify.
-As the creator of Fumadocs, I wouldn't recommend switching to Fumadocs from Mintlify if you're satisfied with the current way you build docs.
-However, I believe Fumadocs is a suitable tool for all Next.js developers who want to have elegant docs.
-
-## Docusaurus
-
-Docusaurus is a powerful framework based on React.js. It offers many cool
-features with plugins and custom themes.
-
-### Better DX
-
-Since Fumadocs is built on the top of Next.js, you'll have to start the Next.js dev
-server every time to review changes, and initial boilerplate code is relatively more
-compared to Docusaurus.
-
-For a simple docs, Docusaurus might be a better choice if you don't need any Next.js specific functionality.
-
-However, when you want to use Next.js, or seek extra customizability like tuning default UI components, Fumadocs could be a better choice.
-
-### Plugins
-
-You can easily achieve many things with plugins, their ecosystem is indeed larger and maintained by many contributors.
-
-In comparison, the flexibility of Fumadocs allows you to implement them on your own, it may take longer to tune it to your satisfaction.
diff --git a/content/docs/comparisons.zh.mdx b/content/docs/comparisons.zh.mdx
deleted file mode 100644
index adf80ea..0000000
--- a/content/docs/comparisons.zh.mdx
+++ /dev/null
@@ -1,68 +0,0 @@
----
-title: 对比
-description: Fumadocs 与其他现有框架有何不同?
-icon: GitCompareArrows
----
-
-## Nextra
-
-Fumadocs 深受 Nextra 启发。例如,路由约定。这就是为什么 Fumadocs 中也存在 `meta.json`。
-
-Nextra 比 Fumadocs 更加固执己见。Fumadocs 由 App Router 加速。因此,它提供了许多服务器端功能,与简单编辑配置文件相比,您必须手动配置一些内容。
-
-如果您想要对一切都有更多的控制,比如将其添加到现有代码库或实现高级路由,Fumadocs 会表现得很出色。
-
-### 功能表
-
-| 功能 | Fumadocs | Nextra |
-| ------------------- | ------------ | ------------------------- |
-| 静态生成 | 是 | 是 |
-| 缓存 | 是 | 是 |
-| 明/暗模式 | 是 | 是 |
-| 语法高亮 | 是 | 是 |
-| 目录 | 是 | 是 |
-| 全文搜索 | 是 | 是 |
-| 国际化 | 是 | 是 |
-| 最后 Git 编辑时间 | 是 | 是 |
-| 页面图标 | 是 | 是,通过 `_meta.js` 文件 |
-| RSC | 是 | 是 |
-| 远程源 | 是 | 是 |
-| SEO | 通过元数据 | 是 |
-| 内置组件 | 是 | 是 |
-| RTL 布局 | 是 | 是 |
-
-### 附加功能
-
-通过第三方库支持的功能(如 [TypeDoc](https://typedoc.org))不会在此列出。
-
-| 功能 | Fumadocs | Nextra |
-| -------------------------- | -------- | ------ |
-| OpenAPI 集成 | 是 | 否 |
-| TypeScript 文档生成 | 是 | 否 |
-| TypeScript Twoslash | 是 | 是 |
-
-## Mintlify
-
-Mintlify 是一项文档服务,与 Fumadocs 相比,它提供免费套餐,但并非完全免费和开源。
-
-Fumadocs 不如 Mintlify 强大,例如 Mintlify 的 OpenAPI 集成。
-作为 Fumadocs 的创建者,如果您对当前构建文档的方式感到满意,我不建议从 Mintlify 切换到 Fumadocs。
-然而,我相信 Fumadocs 是所有想要拥有优雅文档的 Next.js 开发者的合适工具。
-
-## Docusaurus
-
-Docusaurus 是一个基于 React.js 的强大框架。它通过插件和自定义主题提供了许多酷炫的功能。
-
-### 更好的开发者体验
-
-由于 Fumadocs 构建在 Next.js 之上,您每次都必须启动 Next.js 开发服务器来查看更改,并且相对于 Docusaurus,初始样板代码较多。
-
-对于简单的文档,如果您不需要任何特定于 Next.js 的功能,Docusaurus 可能是更好的选择。
-
-然而,当您想要使用 Next.js,或寻求更多的可定制性,如调整默认 UI 组件时,Fumadocs 可能是更好的选择。
-
-### 插件
-
-您可以通过插件轻松实现许多功能,他们的生态系统确实更大,并由许多贡献者维护。
-
-相比之下,Fumadocs 的灵活性允许您自己实现它们,可能需要更长的时间来调整它以达到您的满意度。
\ No newline at end of file
diff --git a/content/docs/components/accordion.mdx b/content/docs/components/accordion.mdx
deleted file mode 100644
index 4d95995..0000000
--- a/content/docs/components/accordion.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Accordion
-description: Add Accordions to your documentation
-preview: accordion
----
-
-## Usage
-
-Based on
-[Radix UI Accordion](https://www.radix-ui.com/primitives/docs/components/accordion), useful for FAQ sections.
-
-```tsx
-import React from 'react';
-import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
-
-
- My Content
-;
-```
-
-### Accordions
-
-{/* */}
-
-### Accordion
-
-{/* */}
-
-### Linking to Accordion
-
-You can specify an `id` for accordion. The accordion will automatically open when the user is navigating to the page with the specified `id` in hash parameter.
-
-```mdx
-
-
-
-My Content
-
-
-
-```
-
-> The value of accordion is same as title by default. When an id presents, it will be used as the value instead.
diff --git a/content/docs/components/accordion.zh.mdx b/content/docs/components/accordion.zh.mdx
deleted file mode 100644
index fe608e1..0000000
--- a/content/docs/components/accordion.zh.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: 手风琴
-description: 在文档中添加手风琴组件
-preview: accordion
----
-
-## 使用方法
-
-基于 [Radix UI Accordion](https://www.radix-ui.com/primitives/docs/components/accordion),对 FAQ 部分特别有用。
-
-```tsx
-import React from 'react';
-import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';
-
-
- 我的内容
-;
-```
-
-### Accordions
-
-{/* */}
-
-### Accordion
-
-{/* */}
-
-### 链接到手风琴
-
-您可以为手风琴指定一个 `id`。当用户导航到带有指定 `id` 的哈希参数的页面时,手风琴将自动打开。
-
-```mdx
-
-
-
-我的内容
-
-
-
-```
-
-> 手风琴的值默认与标题相同。当存在 id 时,它将被用作值。
\ No newline at end of file
diff --git a/content/docs/components/banner.mdx b/content/docs/components/banner.mdx
deleted file mode 100644
index 500b173..0000000
--- a/content/docs/components/banner.mdx
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: Banner
-description: Add a banner to your site
-preview: banner
----
-
-## Usage
-
-Put the element at the top of your root layout, you can use it for displaying announcements.
-
-```tsx
-import { Banner } from 'fumadocs-ui/components/banner';
-
-export default function RootLayout({
- children,
-}: {
- children: React.ReactNode;
-}): React.ReactElement {
- return (
-
-
- Hello World
- {children}
-
-
- );
-}
-```
-
-### Variant
-
-Change the default variant.
-
-```tsx
-import { Banner } from 'fumadocs-ui/components/banner';
-
-Hello World;
-```
-
-### Change Layout
-
-By default, the banner uses a `style` tag to modify Fumadocs layouts (e.g. reduce the sidebar height).
-You can disable it with:
-
-```tsx
-import { Banner } from 'fumadocs-ui/components/banner';
-
-Hello World;
-```
-
-### Close
-
-To allow users to close the banner, give the banner an ID.
-
-```tsx
-import { Banner } from 'fumadocs-ui/components/banner';
-
-Hello World;
-```
-
-The state will be automatically persisted.
diff --git a/content/docs/components/banner.zh.mdx b/content/docs/components/banner.zh.mdx
deleted file mode 100644
index 558c232..0000000
--- a/content/docs/components/banner.zh.mdx
+++ /dev/null
@@ -1,61 +0,0 @@
----
-title: 横幅
-description: 在您的网站添加横幅
-preview: banner
----
-
-## 使用方法
-
-将元素放在根布局的顶部,您可以用它来显示公告。
-
-```tsx
-import { Banner } from 'fumadocs-ui/components/banner';
-
-export default function RootLayout({
- children,
-}: {
- children: React.ReactNode;
-}): React.ReactElement {
- return (
-
-
- Hello World
- {children}
-
-
- );
-}
-```
-
-### 变体
-
-更改默认变体。
-
-```tsx
-import { Banner } from 'fumadocs-ui/components/banner';
-
-Hello World;
-```
-
-### 更改布局
-
-默认情况下,横幅使用 `style` 标签来修改 Fumadocs 布局(例如减少侧边栏高度)。
-您可以通过以下方式禁用它:
-
-```tsx
-import { Banner } from 'fumadocs-ui/components/banner';
-
-Hello World;
-```
-
-### 关闭
-
-要允许用户关闭横幅,请给横幅一个 ID。
-
-```tsx
-import { Banner } from 'fumadocs-ui/components/banner';
-
-Hello World;
-```
-
-状态将自动保持。
\ No newline at end of file
diff --git a/content/docs/components/dynamic-codeblock.mdx b/content/docs/components/dynamic-codeblock.mdx
deleted file mode 100644
index d7ea276..0000000
--- a/content/docs/components/dynamic-codeblock.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Code Block (Dynamic)
-description: A codeblock that also highlights code
-preview: dynamicCodeBlock
----
-
-## Usage
-
-```tsx
-import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock';
-
-;
-```
-
-This component, different from the MDX [`CodeBlock`](/docs/mdx/codeblock) component, can be used without MDX.
-It highlights the code with Shiki and use the default component to render it.
-
-Features:
-
-- Can be pre-rendered on server
-- load languages and themes on browser lazily
-
-### Options
-
-```tsx
-import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock';
-
-;
-```
diff --git a/content/docs/components/dynamic-codeblock.zh.mdx b/content/docs/components/dynamic-codeblock.zh.mdx
deleted file mode 100644
index 13fed15..0000000
--- a/content/docs/components/dynamic-codeblock.zh.mdx
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: 代码块(动态)
-description: 也能高亮代码的代码块
-preview: dynamicCodeBlock
----
-
-## 使用方法
-
-```tsx
-import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock';
-
-;
-```
-
-这个组件与 MDX [`CodeBlock`](/docs/mdx/codeblock) 组件不同,可以在不使用 MDX 的情况下使用。
-它使用 Shiki 高亮代码,并使用默认组件渲染它。
-
-特点:
-
-- 可以在服务器上预渲染
-- 在浏览器上懒加载语言和主题
-
-### 选项
-
-```tsx
-import { DynamicCodeBlock } from 'fumadocs-ui/components/dynamic-codeblock';
-
-;
-```
\ No newline at end of file
diff --git a/content/docs/components/files.mdx b/content/docs/components/files.mdx
deleted file mode 100644
index 0873bde..0000000
--- a/content/docs/components/files.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: Files
-description: Display file structure in your documentation
-preview: 'files'
----
-
-## Usage
-
-Wrap file components in `Files`.
-
-```mdx
-import { File, Folder, Files } from 'fumadocs-ui/components/files';
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### File
-
-{/* */}
-
-### Folder
-
-{/* */}
diff --git a/content/docs/components/files.zh.mdx b/content/docs/components/files.zh.mdx
deleted file mode 100644
index 48b124b..0000000
--- a/content/docs/components/files.zh.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: 文件
-description: 在文档中显示文件结构
-preview: 'files'
----
-
-## 使用方法
-
-将文件组件包装在 `Files` 中。
-
-```mdx
-import { File, Folder, Files } from 'fumadocs-ui/components/files';
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-```
-
-### File
-
-{/* */}
-
-### Folder
-
-{/* */}
\ No newline at end of file
diff --git a/content/docs/components/github-info.mdx b/content/docs/components/github-info.mdx
deleted file mode 100644
index fa76172..0000000
--- a/content/docs/components/github-info.mdx
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: GitHub Info
-description: Display your GitHub repository information
-preview: githubInfo
----
-
-## Usage
-
-```tsx
-import { GithubInfo } from 'fumadocs-ui/components/github-info';
-
-;
-```
-
-It's recommended to add it to your docs layout with `links` option:
-
-```tsx title="app/docs/layout.tsx"
-import { DocsLayout, type DocsLayoutProps } from 'fumadocs-ui/layouts/notebook';
-import type { ReactNode } from 'react';
-import { baseOptions } from '@/app/layout.config';
-import { source } from '@/lib/source';
-import { GithubInfo } from 'fumadocs-ui/components/github-info';
-
-const docsOptions: DocsLayoutProps = {
- ...baseOptions,
- tree: source.pageTree,
- links: [
- {
- type: 'custom',
- children: (
-
- ),
- },
- ],
-};
-
-export default function Layout({ children }: { children: ReactNode }) {
- return {children};
-}
-```
diff --git a/content/docs/components/github-info.zh.mdx b/content/docs/components/github-info.zh.mdx
deleted file mode 100644
index a8684b6..0000000
--- a/content/docs/components/github-info.zh.mdx
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: GitHub 信息
-description: 显示您的 GitHub 仓库信息
-preview: githubInfo
----
-
-## 使用方法
-
-```tsx
-import { GithubInfo } from 'fumadocs-ui/components/github-info';
-
-;
-```
-
-建议将其添加到您的文档布局中,使用 `links` 选项:
-
-```tsx title="app/docs/layout.tsx"
-import { DocsLayout, type DocsLayoutProps } from 'fumadocs-ui/layouts/notebook';
-import type { ReactNode } from 'react';
-import { baseOptions } from '@/app/layout.config';
-import { source } from '@/lib/source';
-import { GithubInfo } from 'fumadocs-ui/components/github-info';
-
-const docsOptions: DocsLayoutProps = {
- ...baseOptions,
- tree: source.pageTree,
- links: [
- {
- type: 'custom',
- children: (
-
- ),
- },
- ],
-};
-
-export default function Layout({ children }: { children: ReactNode }) {
- return {children};
-}
-```
\ No newline at end of file
diff --git a/content/docs/components/image-zoom.mdx b/content/docs/components/image-zoom.mdx
deleted file mode 100644
index 97f34a1..0000000
--- a/content/docs/components/image-zoom.mdx
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Zoomable Image
-description: Allow zoom-in images in your documentation
-preview: zoomImage
----
-
-## Usage
-
-Replace `img` with `ImageZoom` in your MDX components.
-
-```tsx title="app/docs/[[...slug]]/page.tsx"
-import { ImageZoom } from 'fumadocs-ui/components/image-zoom';
-import defaultMdxComponents from 'fumadocs-ui/mdx';
-
-return (
- ,
- // other Mdx components
- }}
- />
-);
-```
-
-Now image zoom will be automatically enabled on all images.
-
-```mdx
-
-```
-
-### Image Optimization
-
-A default [`sizes` property](https://nextjs.org/docs/app/api-reference/components/image#sizes) will be defined for Next.js `` component if not specified.
diff --git a/content/docs/components/image-zoom.zh.mdx b/content/docs/components/image-zoom.zh.mdx
deleted file mode 100644
index 0f0c5c8..0000000
--- a/content/docs/components/image-zoom.zh.mdx
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: 可缩放图片
-description: 在文档中允许放大图片
-preview: zoomImage
----
-
-## 使用方法
-
-在 MDX 组件中用 `ImageZoom` 替换 `img`。
-
-```tsx title="app/docs/[[...slug]]/page.tsx"
-import { ImageZoom } from 'fumadocs-ui/components/image-zoom';
-import defaultMdxComponents from 'fumadocs-ui/mdx';
-
-return (
- ,
- // 其他 Mdx 组件
- }}
- />
-);
-```
-
-现在,所有图片都将自动启用图片缩放功能。
-
-```mdx
-
-```
-
-### 图片优化
-
-如果未指定,将为 Next.js `` 组件定义默认的 [`sizes` 属性](https://nextjs.org/docs/app/api-reference/components/image#sizes)。
\ No newline at end of file
diff --git a/content/docs/components/index.mdx b/content/docs/components/index.mdx
deleted file mode 100644
index e7b7476..0000000
--- a/content/docs/components/index.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: Components
-description: Additional components to improve your docs
-index: true
----
diff --git a/content/docs/components/index.zh.mdx b/content/docs/components/index.zh.mdx
deleted file mode 100644
index e49d3de..0000000
--- a/content/docs/components/index.zh.mdx
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: 组件
-description: 改进文档的额外组件
-index: true
----
\ No newline at end of file
diff --git a/content/docs/components/inline-toc.mdx b/content/docs/components/inline-toc.mdx
deleted file mode 100644
index 2ef1ced..0000000
--- a/content/docs/components/inline-toc.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Inline TOC
-description: Add Inline TOC into your documentation
-preview: inlineTOC
----
-
-## Usage
-
-Pass TOC items to the component.
-
-```mdx
-import { InlineTOC } from 'fumadocs-ui/components/inline-toc';
-
-
-```
-
-### Use in Pages
-
-You can add inline TOC into every page.
-
-```tsx
-
- ...
-
- ...
-
-```
-
-## Reference
-
-{/* */}
diff --git a/content/docs/components/inline-toc.zh.mdx b/content/docs/components/inline-toc.zh.mdx
deleted file mode 100644
index 73e42a2..0000000
--- a/content/docs/components/inline-toc.zh.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: 内联目录
-description: 在文档中添加内联目录
-preview: inlineTOC
----
-
-## 使用方法
-
-将 TOC 项目传递给组件。
-
-```mdx
-import { InlineTOC } from 'fumadocs-ui/components/inline-toc';
-
-
-```
-
-### 在页面中使用
-
-您可以在每个页面中添加内联目录。
-
-```tsx
-
- ...
-
- ...
-
-```
-
-## 参考
-
-{/* */}
\ No newline at end of file
diff --git a/content/docs/components/root-toggle.mdx b/content/docs/components/root-toggle.mdx
deleted file mode 100644
index f4725b4..0000000
--- a/content/docs/components/root-toggle.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: Root Toggle
-description: Switch between page trees
-preview: rootToggle
----
-
-## Usages
-
-Add this component to your sidebar or other places you want.
-
-```tsx
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-import { RootToggle } from 'fumadocs-ui/components/layout/root-toggle';
-
-
- ),
- }}
-/>;
-```
diff --git a/content/docs/components/root-toggle.zh.mdx b/content/docs/components/root-toggle.zh.mdx
deleted file mode 100644
index 85f568f..0000000
--- a/content/docs/components/root-toggle.zh.mdx
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: 根切换器
-description: 在页面树之间切换
-preview: rootToggle
----
-
-## 使用方法
-
-将此组件添加到您的侧边栏或您想要的其他地方。
-
-```tsx
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-import { RootToggle } from 'fumadocs-ui/components/layout/root-toggle';
-
-
- ),
- }}
-/>;
-```
\ No newline at end of file
diff --git a/content/docs/components/steps.mdx b/content/docs/components/steps.mdx
deleted file mode 100644
index 54e3e39..0000000
--- a/content/docs/components/steps.mdx
+++ /dev/null
@@ -1,57 +0,0 @@
----
-title: Steps
-description: Adding steps to your docs
-preview: steps
----
-
-## Usage
-
-Put your steps into the `Steps` container.
-
-```mdx
-import { Step, Steps } from 'fumadocs-ui/components/steps';
-
-
-
-
-### Hello World
-
-
-
-
-
-### Hello World
-
-
-
-```
-
-> We recommend using Tailwind CSS utility classes directly on Tailwind CSS projects.
-
-### Without imports
-
-You can use the Tailwind CSS utilities without importing it.
-
-```mdx
-
-
-
-```
-
-It supports adding step styles to only headings with arbitrary variants.
-
-```mdx
-
-
-### Hello World
-
-
-```
-
-
-
-### Hello World
-
-You no longer need to use the step component anymore.
-
-
\ No newline at end of file
diff --git a/content/docs/components/tabs.mdx b/content/docs/components/tabs.mdx
deleted file mode 100644
index c6955b6..0000000
--- a/content/docs/components/tabs.mdx
+++ /dev/null
@@ -1,146 +0,0 @@
----
-title: Tabs
-description:
- A Tabs component built with Radix UI, with additional features such as
- persistent and shared value.
-preview: tabs
----
-
-## Usage
-
-Import it in your MDX documents.
-
-```mdx
-import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
-
-
- Javascript is weird
- Rust is fast
-
-```
-
-### Without `value`
-
-Without a `value`, it detects from the children index. Note that it might cause errors on re-renders, it's not encouraged if the tabs might change.
-
-```mdx
-import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
-
-
- Javascript is weird
- Rust is fast
-
-```
-
-#### Demo with Re-renders
-
-
- Javascript is weird
- Rust is fast
-
-
-{/* */}
-
-### Shared Value
-
-By passing an `groupId` property, you can share a value across all tabs with the same
-id.
-
-```mdx
-
- Javascript is weird
- Rust is fast
-
-```
-
-### Persistent
-
-You can enable persistent by passing a `persist` property. The value will be
-stored in `localStorage`, with its id as the key.
-
-```mdx
-
- Javascript is weird
- Rust is fast
-
-```
-
-> Persistent only works if you have passed an `id`.
-
-### Default Value
-
-Set a default value by passing `defaultIndex`.
-
-```mdx
-
- Javascript is weird
- Rust is fast
-
-```
-
-### Link to Tab
-
-Use HTML `id` attribute to link to a specific tab.
-
-```mdx
-
- Javascript is weird
- Rust is fast
-
- `Hello World`
-
-
-```
-
-You can add the hash `#tab-cpp` to your URL and reload, the C++ tab will be activated.
-
-
- Javascript is weird
- Rust is fast
-
- `Hello World`
-
-
-
-Additionally, the `updateAnchor` property can be set to `true` in the `Tabs` component
-to automatically update the URL hash whenever time a new tab is selected:
-
-```mdx
-
-
- Javascript is weird
-
-
- Rust is fast
-
-
- `Hello World`
-
-
-```
-
-{/* */}
-
-
-
- Hello!
-
-
- World!
-
-
-
-### Advanced
-
-You can use the styled Radix UI primitive directly from exported `Primitive`.
-
-```mdx
-import { Primitive } from 'fumadocs-ui/components/tabs';
-
-
-
-
-
-
-
-```
diff --git a/content/docs/components/tabs.zh.mdx b/content/docs/components/tabs.zh.mdx
deleted file mode 100644
index 7d3f0ed..0000000
--- a/content/docs/components/tabs.zh.mdx
+++ /dev/null
@@ -1,114 +0,0 @@
----
-title: 选项卡
-description:
- 使用 Radix UI 构建的选项卡组件,具有持久性和共享值等附加功能。
-preview: tabs
----
-
-## 使用方法
-
-在 MDX 文档中导入它。
-
-```mdx
-import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
-
-
- Javascript 很奇怪
- Rust 很快
-
-```
-
-### 不使用 `value`
-
-如果没有 `value`,它会从子元素索引中检测。请注意,这可能会在重新渲染时导致错误,如果选项卡可能会改变,不建议这样做。
-
-```mdx
-import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
-
-
- Javascript 很奇怪
- Rust 很快
-
-```
-
-### 共享值
-
-通过传递 `groupId` 属性,您可以在具有相同 ID 的所有选项卡之间共享值。
-
-```mdx
-
- Javascript 很奇怪
- Rust 很快
-
-```
-
-### 持久性
-
-您可以通过传递 `persist` 属性启用持久性。该值将存储在 `localStorage` 中,以其 ID 作为键。
-
-```mdx
-
- Javascript 很奇怪
- Rust 很快
-
-```
-
-> 持久性仅在您传递了 `id` 时有效。
-
-### 默认值
-
-通过传递 `defaultIndex` 设置默认值。
-
-```mdx
-
- Javascript 很奇怪
- Rust 很快
-
-```
-
-### 链接到选项卡
-
-使用 HTML `id` 属性链接到特定选项卡。
-
-```mdx
-
- Javascript 很奇怪
- Rust 很快
-
- `Hello World`
-
-
-```
-
-您可以在 URL 中添加哈希 `#tab-cpp` 并重新加载,C++ 选项卡将被激活。
-
-此外,可以在 `Tabs` 组件中将 `updateAnchor` 属性设置为 `true`,以便在每次选择新选项卡时自动更新 URL 哈希:
-
-```mdx
-
-
- Javascript 很奇怪
-
-
- Rust 很快
-
-
- `Hello World`
-
-
-```
-
-### 高级用法
-
-您可以直接从导出的 `Primitive` 中使用样式化的 Radix UI 原语。
-
-```mdx
-import { Primitive } from 'fumadocs-ui/components/tabs';
-
-
-
-
-
-
-
-```
\ No newline at end of file
diff --git a/content/docs/components/type-table.mdx b/content/docs/components/type-table.mdx
deleted file mode 100644
index 497cce5..0000000
--- a/content/docs/components/type-table.mdx
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: Type Table
-description: A table for documenting types
-preview: typeTable
----
-
-## Usage
-
-It accepts a `type` property.
-
-```mdx
-import { TypeTable } from 'fumadocs-ui/components/type-table';
-
-
-```
-
-## References
-
-### Type Table
-
-{/* */}
-
-### Object Type
-
-{/* */}
diff --git a/content/docs/components/type-table.zh.mdx b/content/docs/components/type-table.zh.mdx
deleted file mode 100644
index f51089b..0000000
--- a/content/docs/components/type-table.zh.mdx
+++ /dev/null
@@ -1,34 +0,0 @@
----
-title: 类型表格
-description: 用于记录类型的表格
-preview: typeTable
----
-
-## 使用方法
-
-它接受一个 `type` 属性。
-
-```mdx
-import { TypeTable } from 'fumadocs-ui/components/type-table';
-
-
-```
-
-## 参考
-
-### Type Table
-
-{/* */}
-
-### Object Type
-
-{/* */}
\ No newline at end of file
diff --git a/content/docs/customisation.mdx b/content/docs/customisation.mdx
deleted file mode 100644
index 070d00a..0000000
--- a/content/docs/customisation.mdx
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: Overview
-description: An overview of Fumadocs UI
----
-
-## Architecture
-
-### Page Tree
-
-Navigation elements like sidebar take a [Page Tree](/docs/headless/page-tree) to render navigation links, it's a tree that describes all available pages and folders.
-
-Normally, it is generated from your file structure using [`loader()`](/docs/headless/source-api), you can learn [how to organize pages](/docs/page-conventions).
-
-## Customisation
-
-### Layouts
-
-You can use the exposed options of different layouts:
-
-
-
- Layout for docs
-
-
- Layout for docs content
-
-
- A more compact version of Docs Layout
-
-
- Layout for other pages
-
-
-
-### Components
-
-Fumadocs UI also offers styled components for interactive examples to enhance your docs, you can customise them with exposed props like `style` and `className`.
-
-See [Components](/docs/components).
-
-### Design System
-
-Since the design system is built on Tailwind CSS, you can customise it [with CSS Variables](/docs/theme#colors).
-
-### CLI
-
-If none of them suits you, Fumadocs CLI is a tool to install Fumadocs UI components and layouts to your codebase, similar to Shadcn UI. Allowing you to fully customise Fumadocs UI:
-
-```package-install
-npx fumadocs add
-```
diff --git a/content/docs/customisation.zh.mdx b/content/docs/customisation.zh.mdx
deleted file mode 100644
index 54e6f33..0000000
--- a/content/docs/customisation.zh.mdx
+++ /dev/null
@@ -1,51 +0,0 @@
----
-title: 概览
-description: Fumadocs UI 的概览
----
-
-## 架构
-
-### 页面树
-
-侧边栏等导航元素使用[页面树](/docs/headless/page-tree)来渲染导航链接,它是描述所有可用页面和文件夹的树形结构。
-
-通常,它是使用 [`loader()`](/docs/headless/source-api) 从您的文件结构生成的,您可以了解[如何组织页面](/docs/page-conventions)。
-
-## 自定义
-
-### 布局
-
-您可以使用不同布局的暴露选项:
-
-
-
- 文档的布局
-
-
- 文档内容的布局
-
-
- 文档布局的更紧凑版本
-
-
- 其他页面的布局
-
-
-
-### 组件
-
-Fumadocs UI 还提供了样式化组件,用于交互式示例以增强您的文档,您可以使用暴露的道具如 `style` 和 `className` 来自定义它们。
-
-参见[组件](/docs/components)。
-
-### 设计系统
-
-由于设计系统是基于 Tailwind CSS 构建的,您可以[通过 CSS 变量](/docs/theme#colors)自定义它。
-
-### CLI
-
-如果这些都不适合您,Fumadocs CLI 是一个工具,可以将 Fumadocs UI 组件和布局安装到您的代码库中,类似于 Shadcn UI。允许您完全自定义 Fumadocs UI:
-
-```package-install
-npx fumadocs add
-```
\ No newline at end of file
diff --git a/content/docs/index.mdx b/content/docs/index.mdx
deleted file mode 100644
index 193ebc8..0000000
--- a/content/docs/index.mdx
+++ /dev/null
@@ -1,278 +0,0 @@
----
-title: Quick Start
-description: Getting Started with Fumadocs
-icon: Album
----
-
-## Introduction
-
-Fumadocs (Foo-ma docs) is a **documentation framework** based on Next.js, designed to be fast, flexible,
-and composes seamlessly into Next.js App Router.
-
-Fumadocs has different parts:
-
-
-
-} title='Fumadocs Core'>
-
-Handles most of the logic, including document search, content source adapters, and Markdown extensions.
-
-
-
-} title='Fumadocs UI'>
-
-The default theme of Fumadocs offers a beautiful look for documentation sites and interactive components.
-
-
-
-} title='Content Source'>
-
-The source of your content, can be a CMS or local data layers like [Content Collections](https://www.content-collections.dev) and [Fumadocs MDX](/docs/mdx), the official content source.
-
-
-
-} title='Fumadocs CLI'>
-
-A command line tool to install UI components and automate things, useful for customizing layouts.
-
-
-
-
-
-
- Read our in-depth [What is Fumadocs](/docs/what-is-fumadocs) introduction.
-
-
-### Terminology
-
-**Markdown/MDX:** Markdown is a markup language for creating formatted text. Fumadocs supports Markdown and MDX (superset of Markdown) out-of-the-box.
-
-Although not required, some basic knowledge of Next.js App Router would be useful for further customisations.
-
-## Automatic Installation
-
-A minimum version of Node.js 18 required, note that Node.js 23.1 might have problems with Next.js production build.
-
-
-
-```bash tab="npm"
-npm create fumadocs-app
-```
-
-```bash tab="pnpm"
-pnpm create fumadocs-app
-```
-
-```bash tab="yarn"
-yarn create fumadocs-app
-```
-
-```bash tab="bun"
-bun create fumadocs-app
-```
-
-
-
-It will ask you the framework and content source to use, a new fumadocs app should be initialized. Now you can start hacking!
-
-
-
- You can follow the [Manual Installation](/docs/manual-installation) guide to get started.
-
-
-
-### Enjoy!
-
-Create your first MDX file in the docs folder.
-
-```mdx title="content/docs/index.mdx"
----
-title: Hello World
----
-
-## Yo what's up
-```
-
-Run the app in development mode and see http://localhost:3000/docs.
-
-```package-install
-npm run dev
-```
-
-## Explore
-
-In the project, you can see:
-
-- `lib/source.ts`: Code for content source adapter, [`loader()`](/docs/headless/source-api) provides an interface to interact with your content source, and assigns URL to your pages.
-- `app/layout.config.tsx`: Shared options for layouts, optional but preferred to keep.
-
-| Route | Description |
-| ------------------------- | ------------------------------------------------------ |
-| `app/(home)` | The route group for your landing page and other pages. |
-| `app/docs` | The documentation layout and pages. |
-| `app/api/search/route.ts` | The Route Handler for search. |
-
-### Writing Content
-
-For authoring docs, make sure to read:
-
-
-
- Fumadocs has some additional features for authoring content too.
-
-
- Learn how to customise navigation links/sidebar items.
-
-
-
-### Content Source
-
-Content source handles all your content, like compiling Markdown files and validating frontmatter.
-
-
-
-
-
- Read the [Introduction](/docs/mdx) to learn how it handles your content.
-
- A `source.config.ts` config file has been included, you can customise different options like frontmatter schema.
-
-
-
-
-
- Fumadocs is not Markdown-exclusive. For other sources like Sanity, you can build a [custom content source](/docs/headless/custom-source).
-
-
-
-
-
-### Customise UI
-
-See [Customisation Guide](/docs/customisation).
-
-## FAQ
-
-Some common questions you may encounter.
-
-
-
-
-Sometimes, `fumadocs-ui` is not installed in the workspace of your Tailwind CSS configuration file. (e.g. a monorepo setup).
-
-You have to ensure the `fumadocs-ui` package is scanned by Tailwind CSS, and give a correct relative path to `@source`.
-
-For example, add `../../` to point to the `node_modules` folder in root workspace.
-
- ```css
- @import 'tailwindcss';
- @import 'fumadocs-ui/css/neutral.css';
- @import 'fumadocs-ui/css/preset.css';
-
- /* [!code --] */
- @source '../node_modules/fumadocs-ui/dist/**/*.js';
- /* [!code ++] */
- @source '../../../node_modules/fumadocs-ui/dist/**/*.js';
- ```
-
-
-
-
-You can change the base route of docs (e.g. from `/docs/page` to `/info/page`).
-Since Fumadocs uses Next.js App Router, you can simply rename the route:
-
-
-
-
-
-
-
-
-
-
-And tell Fumadocs to use the new route in `source.ts`:
-
-```ts title="lib/source.ts"
-import { loader } from 'fumadocs-core/source';
-
-export const source = loader({
- baseUrl: '/info',
- // other options
-});
-```
-
-
-
-
-Next.js turns dynamic route into static routes when `generateStaticParams` is configured.
-Hence, it is as fast as static pages.
-
-You can enable Static Exports on Next.js to get a static build output. (Notice that Route Handler doesn't work with static export, you have to configure static search)
-
-
-
-
-Same as managing layouts in Next.js App Router, remove the original MDX file from content directory (`/content/docs`).
-This ensures duplicated pages will not cause errors.
-
-Now, You can add the page to another route group, which isn't a descendant of docs layout.
-
-For example, under your `app` folder:
-
-
-
-
-
-
-
-
-
-will replace the `/docs` page with your `page.tsx`.
-
-
-
-
- Use a separate deployment for each version.
-
- On Vercel, this can be done by creating another branch for a specific version on your GitHub repository.
- To link to the sites of other versions, use the Links API or a custom navigation component.
-
-
-
- We recommend to use [Sidebar Tabs](/docs/navigation/sidebar#sidebar-tabs).
-
-
-
-
-## Video Tutorials
-
-
-
-## Learn More
-
-New to here? Don't worry, we are welcome for your questions.
-
-If you find anything confusing, please give your feedback on [Github Discussion](https://github.com/fuma-nama/fumadocs/discussions)!
-
-
-
-
-
-
-
diff --git a/content/docs/index.zh.mdx b/content/docs/index.zh.mdx
deleted file mode 100644
index 0c50edd..0000000
--- a/content/docs/index.zh.mdx
+++ /dev/null
@@ -1,253 +0,0 @@
----
-title: 快速入门
-description: Fumadocs 入门指南
-icon: Album
----
-
-## 简介
-
-Fumadocs (Foo-ma docs) 是一个基于 Next.js 的**文档框架**,设计为快速、灵活,
-并无缝集成到 Next.js App Router 中。
-
-Fumadocs 由不同部分组成:
-
-
-
-} title='Fumadocs Core'>
-
-处理大部分逻辑,包括文档搜索、内容源适配器和 Markdown 扩展。
-
-
-
-} title='Fumadocs UI'>
-
-Fumadocs 的默认主题为文档站点提供了美观的外观和交互式组件。
-
-
-
-} title='Content Source'>
-
-您内容的来源,可以是 CMS 或本地数据层,如 [Content Collections](https://www.content-collections.dev) 和 [Fumadocs MDX](/docs/mdx),即官方内容源。
-
-
-
-} title='Fumadocs CLI'>
-
-一个命令行工具,用于安装 UI 组件和自动化操作,对于自定义布局非常有用。
-
-
-
-
-
-
- 阅读我们深入的 [什么是 Fumadocs](/docs/what-is-fumadocs) 介绍。
-
-
-### 术语
-
-**Markdown/MDX:** Markdown 是一种用于创建格式化文本的标记语言。Fumadocs 默认支持 Markdown 和 MDX(Markdown 的超集)。
-
-虽然不是必需的,但对 Next.js App Router 的基本了解对于进一步的自定义会很有帮助。
-
-## 自动安装
-
-需要 Node.js 18 或更高版本,请注意 Node.js 23.1 可能在 Next.js 生产构建中存在问题。
-
-
-
-```bash tab="npm"
-npm create fumadocs-app
-```
-
-```bash tab="pnpm"
-pnpm create fumadocs-app
-```
-
-```bash tab="yarn"
-yarn create fumadocs-app
-```
-
-```bash tab="bun"
-bun create fumadocs-app
-```
-
-
-
-它会询问您要使用的框架和内容源,随后将初始化一个新的 fumadocs 应用程序。现在您可以开始动手了!
-
-
-
- 您可以按照 [手动安装](/docs/manual-installation) 指南开始。
-
-
-
-### 尽情使用!
-
-在 docs 文件夹中创建您的第一个 MDX 文件。
-
-```mdx title="content/docs/index.mdx"
----
-title: Hello World
----
-
-## Yo what's up
-```
-
-在开发模式下运行应用程序并查看 http://localhost:3000/docs。
-
-```package-install
-npm run dev
-```
-
-## 探索
-
-在项目中,您可以看到:
-
-- `lib/source.ts`:内容源适配器的代码,[`loader()`](/docs/headless/source-api) 提供了与内容源交互的接口,并为您的页面分配 URL。
-- `app/layout.config.tsx`:布局的共享选项,可选但建议保留。
-
-| 路由 | 描述 |
-| ------------------------- | -------------------------------------- |
-| `app/(home)` | 您的登陆页面和其他页面的路由组。 |
-| `app/docs` | 文档布局和页面。 |
-| `app/api/search/route.ts` | 搜索的路由处理器。 |
-
-### 编写内容
-
-对于编写文档,请务必阅读:
-
-
-
- Fumadocs 还有一些额外的内容创作功能。
-
-
- 了解如何自定义导航链接/侧边栏项目。
-
-
-
-### 内容源
-
-内容源处理您的所有内容,例如编译 Markdown 文件和验证前言。
-
-
-
-
-
- 阅读 [介绍](/docs/mdx) 了解它如何处理您的内容。
-
- 项目中已包含 `source.config.ts` 配置文件,您可以自定义不同的选项,如前言模式。
-
-
-
-
-
- Fumadocs 不仅限于 Markdown。对于其他源(如 Sanity),您可以构建 [自定义内容源](/docs/headless/custom-source)。
-
-
-
-
-
-### 自定义 UI
-
-请参阅 [自定义指南](/docs/customisation)。
-
-## 常见问题
-
-您可能遇到的一些常见问题。
-
-
-
-
-有时,`fumadocs-ui` 没有安装在您的 Tailwind CSS 配置文件的工作区中(例如,在 monorepo 设置中)。
-
-您必须确保 Tailwind CSS 扫描 `fumadocs-ui` 包,并为 `@source` 提供正确的相对路径。
-
-例如,添加 `../../` 指向根工作区中的 `node_modules` 文件夹。
-
- ```css
- @import 'tailwindcss';
- @import 'fumadocs-ui/css/neutral.css';
- @import 'fumadocs-ui/css/preset.css';
-
- /* [!code --] */
- @source '../node_modules/fumadocs-ui/dist/**/*.js';
- /* [!code ++] */
- @source '../../../node_modules/fumadocs-ui/dist/**/*.js';
- ```
-
-
-
-
-您可以更改文档的基本路由(例如,从 `/docs/page` 更改为 `/info/page`)。
-由于 Fumadocs 使用 Next.js App Router,您可以简单地重命名路由:
-
-
-
-
-
-
-
-
-
-
-并在 `source.ts` 中告诉 Fumadocs 使用新的路由:
-
-```ts title="lib/source.ts"
-import { loader } from 'fumadocs-core/source';
-
-export const source = loader({
- baseUrl: '/info',
- // other options
-});
-```
-
-
-
-
-当配置了 `generateStaticParams` 时,Next.js 会将动态路由转换为静态路由。
-因此,它与静态页面一样快。
-
-您可以在 Next.js 上启用静态导出,获得静态构建输出。(请注意,路由处理器不适用于静态导出,您必须配置静态搜索)
-
-
-
-
-与在 Next.js App Router 中管理布局相同,从内容目录(`/content/docs`)中删除原始 MDX 文件。
-这确保重复的页面不会导致错误。
-
-现在,您可以将页面添加到另一个路由组,该组不是文档布局的后代。
-
-例如,在您的 `app` 文件夹下:
-
-
-
-
-
-
-
-
-
-将用您的 `page.tsx` 替换 `/docs` 页面。
-
-
-
-
- 为每个版本使用单独的部署。
-
- 在 Vercel 上,可以通过在 GitHub 存储库中为特定版本创建另一个分支来实现。
- 要链接到其他版本的站点,请使用 Links API 或自定义导航组件。
-
-
-
- 我们建议使用 [侧边栏标签](/docs/navigation/sidebar#sidebar-tabs)。
-
-
-
-
-## 视频教程
-
-
-
-## 了解更多
-
-刚来这里?别担心,我们欢迎您的问题。
\ No newline at end of file
diff --git a/content/docs/internationalization.mdx b/content/docs/internationalization.mdx
deleted file mode 100644
index e783c3d..0000000
--- a/content/docs/internationalization.mdx
+++ /dev/null
@@ -1,222 +0,0 @@
----
-title: Internationalization
-description: Support multiple languages in your documentation
----
-
-
-
- Fumadocs is not a full-powered i18n library, it manages only its own components and utilities.
-
- You can use other libraries like [next-intl](https://github.com/amannn/next-intl) for the rest of your app.
- Read the [Next.js Docs](https://nextjs.org/docs/app/building-your-application/routing/internationalization) to learn more about implementing I18n in Next.js.
-
-
-
-## Manual Setup
-
-Define the i18n configurations in a file, we will import it with `@/ilb/i18n` in this guide.
-
-{/*
- ../../examples/i18n/lib/i18n.ts
- */}
-
-Pass it to the source loader.
-
-```ts title="lib/source.ts"
-import { i18n } from '@/lib/i18n';
-import { loader } from 'fumadocs-core/source';
-
-export const source = loader({
- i18n, // [!code highlight]
- // other options
-});
-```
-
-And update Fumadocs UI layout options.
-
-```tsx title="app/layout.config.tsx"
-import { i18n } from '@/lib/i18n';
-import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
-
-export function baseOptions(locale: string): BaseLayoutProps {
- return {
- i18n,
- // different props based on `locale`
- };
-}
-```
-
-### Middleware
-
-Create a middleware that redirects users to appropriate locale.
-
-```json doc-gen:file
-{
- "file": "../../examples/i18n/middleware.ts",
- "codeblock": {
- "lang": "ts",
- "meta": "title=\"middleware.ts\""
- }
-}
-```
-
-See [Middleware](/docs/headless/internationalization#middleware) for customisable options.
-
-> Note that this is optional, you can also use your own middleware or the one provided by i18n libraries.
-
-### Routing
-
-Create a `/app/[lang]` folder, and move all files (e.g. `page.tsx`, `layout.tsx`) from `/app` to the folder.
-
-Wrap the root provider inside `I18nProvider`, and provide available languages & translations to it.
-Note that only English translations are provided by default.
-
-```tsx title="app/[lang]/layout.tsx"
-import { RootProvider } from 'fumadocs-ui/provider';
-import { I18nProvider, type Translations } from 'fumadocs-ui/i18n';
-
-const cn: Partial = {
- search: 'Translated Content',
- // other translations
-};
-
-// available languages that will be displayed on UI
-// make sure `locale` is consistent with your i18n config
-const locales = [
- {
- name: 'English',
- locale: 'en',
- },
- {
- name: 'Chinese',
- locale: 'cn',
- },
-];
-
-export default async function RootLayout({
- params,
- children,
-}: {
- params: Promise<{ lang: string }>;
- children: React.ReactNode;
-}) {
- const lang = (await params).lang;
-
- return (
-
-
-
- {children}
-
-
-
- );
-}
-```
-
-### Pass Locale
-
-Pass the locale to Fumadocs in your pages and layouts.
-
-{/* ```tsx title="/app/[lang]/(home)/layout.tsx" tab="Home Layout"
-import type { ReactNode } from 'react';
-import { HomeLayout } from 'fumadocs-ui/layouts/home';
-import { baseOptions } from '@/app/layout.config';
-
-export default async function Layout({
- params,
- children,
-}: {
- params: Promise<{ lang: string }>;
- children: ReactNode;
-}) {
- const { lang } = await params;
-
- return {children};
-}
-```
-
-```tsx title="/app/[lang]/docs/layout.tsx" tab="Docs Layout"
-import type { ReactNode } from 'react';
-import { source } from '@/lib/source';
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-import { baseOptions } from '@/app/layout.config';
-
-export default async function Layout({
- params,
- children,
-}: {
- params: Promise<{ lang: string }>;
- children: ReactNode;
-}) {
- const { lang } = await params;
-
- return (
-
- {children}
-
- );
-}
-```
-
-```ts title="page.tsx" tab="Docs Page"
-import { source } from '@/lib/source';
-
-export default async function Page({
- params,
-}: {
- params: Promise<{ lang: string; slug?: string[] }>;
-}) {
- const { slug, lang } = await params;
- // get page
- source.getPage(slug); // [!code --]
- source.getPage(slug, lang); // [!code ++]
-
- // get pages
- source.getPages(); // [!code --]
- source.getPages(lang); // [!code ++]
-}
-``` */}
-
-### Search
-
-Configure i18n on your search solution.
-
-- **Built-in Search (Orama):**
- For [Supported Languages](https://docs.orama.com/open-source/supported-languages#officially-supported-languages), no further changes are needed.
-
- Otherwise, additional config is required (e.g. Chinese & Japanese). See [Special Languages](/docs/headless/search/orama#special-languages).
-
-- **Cloud Solutions (e.g. Algolia):**
- They usually have official support for multilingual.
-
-## Writing Documents
-
-{/* ../../shared/page-conventions.i18n.mdx */}
-
-## Navigation
-
-Fumadocs only handles navigation for its own layouts (e.g. sidebar).
-For other places, you can use the `useParams` hook to get the locale from url, and attend it to `href`.
-
-```tsx
-import Link from 'next/link';
-import { useParams } from 'next/navigation';
-
-const { lang } = useParams();
-
-return This is a link;
-```
-
-In addition, the [`fumadocs-core/dynamic-link`](/docs/headless/components/link#dynamic-hrefs) component supports dynamic hrefs, you can use it to attend the locale prefix.
-It is useful for Markdown/MDX content.
-
-```mdx title="content.mdx"
-import { DynamicLink } from 'fumadocs-core/dynamic-link';
-
-This is a link
-```
diff --git a/content/docs/internationalization.zh.mdx b/content/docs/internationalization.zh.mdx
deleted file mode 100644
index 7e4af26..0000000
--- a/content/docs/internationalization.zh.mdx
+++ /dev/null
@@ -1,222 +0,0 @@
----
-title: 国际化
-description: 在您的文档中支持多种语言
----
-
-
-
- Fumadocs 不是一个功能齐全的 i18n 库,它只管理自己的组件和工具。
-
- 您可以使用其他库,如 [next-intl](https://github.com/amannn/next-intl),用于应用程序的其余部分。
- 阅读 [Next.js 文档](https://nextjs.org/docs/app/building-your-application/routing/internationalization),了解更多关于在 Next.js 中实现 I18n 的信息。
-
-
-
-## 手动设置
-
-在一个文件中定义 i18n 配置,我们将在本指南中使用 `@/ilb/i18n` 导入它。
-
-{/*
- ../../examples/i18n/lib/i18n.ts
- */}
-
-将其传递给源加载器。
-
-```ts title="lib/source.ts"
-import { i18n } from '@/lib/i18n';
-import { loader } from 'fumadocs-core/source';
-
-export const source = loader({
- i18n, // [!code highlight]
- // other options
-});
-```
-
-并更新 Fumadocs UI 布局选项。
-
-```tsx title="app/layout.config.tsx"
-import { i18n } from '@/lib/i18n';
-import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
-
-export function baseOptions(locale: string): BaseLayoutProps {
- return {
- i18n,
- // different props based on `locale`
- };
-}
-```
-
-### 中间件
-
-创建一个将用户重定向到适当语言环境的中间件。
-
-```json doc-gen:file
-{
- "file": "../../examples/i18n/middleware.ts",
- "codeblock": {
- "lang": "ts",
- "meta": "title=\"middleware.ts\""
- }
-}
-```
-
-查看[中间件](/docs/headless/internationalization#middleware)了解可自定义选项。
-
-> 请注意,这是可选的,您也可以使用自己的中间件或 i18n 库提供的中间件。
-
-### 路由
-
-创建一个 `/app/[lang]` 文件夹,并将所有文件(例如 `page.tsx`、`layout.tsx`)从 `/app` 移动到该文件夹。
-
-将根提供程序包装在 `I18nProvider` 中,并向其提供可用语言和翻译。
-请注意,默认情况下只提供英文翻译。
-
-```tsx title="app/[lang]/layout.tsx"
-import { RootProvider } from 'fumadocs-ui/provider';
-import { I18nProvider, type Translations } from 'fumadocs-ui/i18n';
-
-const cn: Partial = {
- search: 'Translated Content',
- // other translations
-};
-
-// available languages that will be displayed on UI
-// make sure `locale` is consistent with your i18n config
-const locales = [
- {
- name: 'English',
- locale: 'en',
- },
- {
- name: 'Chinese',
- locale: 'cn',
- },
-];
-
-export default async function RootLayout({
- params,
- children,
-}: {
- params: Promise<{ lang: string }>;
- children: React.ReactNode;
-}) {
- const lang = (await params).lang;
-
- return (
-
-
-
- {children}
-
-
-
- );
-}
-```
-
-### 传递区域设置
-
-在您的页面和布局中将区域设置传递给 Fumadocs。
-
-{/* ```tsx title="/app/[lang]/(home)/layout.tsx" tab="Home Layout"
-import type { ReactNode } from 'react';
-import { HomeLayout } from 'fumadocs-ui/layouts/home';
-import { baseOptions } from '@/app/layout.config';
-
-export default async function Layout({
- params,
- children,
-}: {
- params: Promise<{ lang: string }>;
- children: ReactNode;
-}) {
- const { lang } = await params;
-
- return {children};
-}
-```
-
-```tsx title="/app/[lang]/docs/layout.tsx" tab="Docs Layout"
-import type { ReactNode } from 'react';
-import { source } from '@/lib/source';
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-import { baseOptions } from '@/app/layout.config';
-
-export default async function Layout({
- params,
- children,
-}: {
- params: Promise<{ lang: string }>;
- children: ReactNode;
-}) {
- const { lang } = await params;
-
- return (
-
- {children}
-
- );
-}
-```
-
-```ts title="page.tsx" tab="Docs Page"
-import { source } from '@/lib/source';
-
-export default async function Page({
- params,
-}: {
- params: Promise<{ lang: string; slug?: string[] }>;
-}) {
- const { slug, lang } = await params;
- // get page
- source.getPage(slug); // [!code --]
- source.getPage(slug, lang); // [!code ++]
-
- // get pages
- source.getPages(); // [!code --]
- source.getPages(lang); // [!code ++]
-}
-``` */}
-
-### 搜索
-
-在您的搜索解决方案上配置 i18n。
-
-- **内置搜索 (Orama):**
- 对于[支持的语言](https://docs.orama.com/open-source/supported-languages#officially-supported-languages),无需进一步更改。
-
- 否则,需要额外配置(例如中文和日语)。请参阅[特殊语言](/docs/headless/search/orama#special-languages)。
-
-- **云解决方案(例如 Algolia):**
- 它们通常官方支持多语言。
-
-## 编写文档
-
-{/* ../../shared/page-conventions.i18n.mdx */}
-
-## 导航
-
-Fumadocs 只处理其自己的布局(例如侧边栏)的导航。
-对于其他地方,您可以使用 `useParams` 钩子从 url 获取区域设置,并将其添加到 `href`。
-
-```tsx
-import Link from 'next/link';
-import { useParams } from 'next/navigation';
-
-const { lang } = useParams();
-
-return This is a link;
-```
-
-另外,[`fumadocs-core/dynamic-link`](/docs/headless/components/link#dynamic-hrefs) 组件支持动态 hrefs,您可以使用它来添加区域设置前缀。
-这对于 Markdown/MDX 内容很有用。
-
-```mdx title="content.mdx"
-import { DynamicLink } from 'fumadocs-core/dynamic-link';
-
-This is a link
-```
\ No newline at end of file
diff --git a/content/docs/layouts/docs.mdx b/content/docs/layouts/docs.mdx
deleted file mode 100644
index c429b89..0000000
--- a/content/docs/layouts/docs.mdx
+++ /dev/null
@@ -1,166 +0,0 @@
----
-title: Docs Layout
-description: The layout of documentation
----
-
-The layout of documentation pages, it includes a sidebar and mobile-only navbar.
-
-> It is a server component, you should not reference it in a client component.
-
-## Usage
-
-Pass your page tree to the component.
-
-```tsx title="layout.tsx"
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-import { baseOptions } from '@/app/layout.config';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return (
-
- {children}
-
- );
-}
-```
-
-{/* */}
-
-## Sidebar
-
-```tsx title="layout.tsx"
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-
-;
-```
-
-{/* */}
-
-### Sidebar Tabs
-
-See [Navigation Guide](/docs/navigation/sidebar#sidebar-tabs) for usages.
-
-#### Decoration
-
-Change the icon/styles of tabs.
-
-```tsx
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-
- ({
- ...option,
- icon: 'my icon',
- }),
- },
- }}
-/>;
-```
-
-## Nav
-
-A mobile-only navbar, we recommend to customise it from `baseOptions`.
-
-
-
-
-
-
-
-```tsx
-import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
-
-export const baseOptions: BaseLayoutProps = {
- githubUrl: 'https://github.com/fuma-nama/fumadocs',
- nav: {
- title: 'My App',
- },
-};
-```
-
-{/* */}
-
-### Transparent Mode
-
-To make the navbar background transparent, you can configure transparent mode.
-
-```tsx
-import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
-
-export const baseOptions: BaseLayoutProps = {
- nav: {
- transparentMode: 'top',
- },
-};
-```
-
-| Mode | Description |
-| -------- | ---------------------------------------- |
-| `always` | Always use a transparent background |
-| `top` | When at the top of page |
-| `none` | Disable transparent background (default) |
-
-### Replace Navbar
-
-To replace the navbar in Docs Layout, set `nav.component` to your own component.
-
-```tsx title="layout.tsx"
-import { baseOptions } from '@/app/layout.config';
-import { DocsLayout } from 'fumadocs-ui/layouts/notebook';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return (
- ,
- }}
- >
- {children}
-
- );
-}
-```
-
-Fumadocs uses **CSS Variables** to share the size of layout components, and fit each layout component into appropriate position.
-
-You need to override `--fd-nav-height` to the exact height of your custom navbar, this can be done with a CSS stylesheet (e.g. in `global.css`):
-
-```css
-:root {
- --fd-nav-height: 80px !important;
-}
-```
-
-## Advanced
-
-### Disable Prefetching
-
-By default, it uses the Next.js Link component with prefetch enabled.
-When the link component appears into the browser viewport, the content (RSC payload) will be prefetched.
-
-On Vercel, this may cause a high usage of serverless functions and Data Cache.
-It can also hit the limits of some other hosting platforms.
-
-You can disable prefetching to reduce the amount of RSC requests.
-
-```tsx
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-
-;
-```
diff --git a/content/docs/layouts/docs.zh.mdx b/content/docs/layouts/docs.zh.mdx
deleted file mode 100644
index c3075f3..0000000
--- a/content/docs/layouts/docs.zh.mdx
+++ /dev/null
@@ -1,160 +0,0 @@
----
-title: 文档布局
-description: 文档的布局
----
-
-文档页面的布局,它包括一个侧边栏和仅限移动设备的导航栏。
-
-> 它是一个服务器组件,您不应该在客户端组件中引用它。
-
-## 使用方法
-
-将您的页面树传递给组件。
-
-```tsx title="layout.tsx"
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-import { baseOptions } from '@/app/layout.config';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return (
-
- {children}
-
- );
-}
-```
-
-{/* */}
-
-## 侧边栏
-
-```tsx title="layout.tsx"
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-
-;
-```
-
-{/* */}
-
-### 侧边栏标签
-
-有关用法,请参见[导航指南](/docs/navigation/sidebar#sidebar-tabs)。
-
-#### 装饰
-
-更改标签的图标/样式。
-
-```tsx
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-
- ({
- ...option,
- icon: 'my icon',
- }),
- },
- }}
-/>;
-```
-
-## 导航栏
-
-一个仅限移动设备的导航栏,我们建议从 `baseOptions` 自定义它。
-
-```tsx
-import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
-
-export const baseOptions: BaseLayoutProps = {
- githubUrl: 'https://github.com/fuma-nama/fumadocs',
- nav: {
- title: 'My App',
- },
-};
-```
-
-{/* */}
-
-### 透明模式
-
-要使导航栏背景透明,您可以配置透明模式。
-
-```tsx
-import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';
-
-export const baseOptions: BaseLayoutProps = {
- nav: {
- transparentMode: 'top',
- },
-};
-```
-
-| 模式 | 描述 |
-| -------- | ------------------------------ |
-| `always` | 始终使用透明背景 |
-| `top` | 在页面顶部时 |
-| `none` | 禁用透明背景(默认) |
-
-### 替换导航栏
-
-要替换文档布局中的导航栏,将 `nav.component` 设置为您自己的组件。
-
-```tsx title="layout.tsx"
-import { baseOptions } from '@/app/layout.config';
-import { DocsLayout } from 'fumadocs-ui/layouts/notebook';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return (
- ,
- }}
- >
- {children}
-
- );
-}
-```
-
-Fumadocs 使用 **CSS 变量**来共享布局组件的大小,并将每个布局组件放置在适当的位置。
-
-您需要将 `--fd-nav-height` 覆盖为自定义导航栏的确切高度,这可以通过 CSS 样式表(例如在 `global.css` 中)完成:
-
-```css
-:root {
- --fd-nav-height: 80px !important;
-}
-```
-
-## 高级
-
-### 禁用预取
-
-默认情况下,它使用启用了预取的 Next.js Link 组件。
-当链接组件出现在浏览器视口中时,内容(RSC 有效载荷)将被预取。
-
-在 Vercel 上,这可能会导致大量使用无服务器函数和数据缓存。
-它也可能会达到一些其他托管平台的限制。
-
-您可以禁用预取以减少 RSC 请求的数量。
-
-```tsx
-import { DocsLayout } from 'fumadocs-ui/layouts/docs';
-
-;
-```
\ No newline at end of file
diff --git a/content/docs/layouts/home-layout.mdx b/content/docs/layouts/home-layout.mdx
deleted file mode 100644
index 08a5cc7..0000000
--- a/content/docs/layouts/home-layout.mdx
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: Home Layout
-description: Shared layout for other pages
----
-
-## Usage
-
-Add a navbar and search dialog across other pages.
-
-```tsx title="/app/(home)/layout.tsx"
-import { HomeLayout } from 'fumadocs-ui/layouts/home';
-import { baseOptions } from '@/app/layout.config';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return {children};
-}
-```
-
-Create a [Route Group](https://nextjs.org/docs/app/building-your-application/routing/route-groups) to share the same layout across multiple pages.
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/content/docs/layouts/home-layout.zh.mdx b/content/docs/layouts/home-layout.zh.mdx
deleted file mode 100644
index 2dd56ef..0000000
--- a/content/docs/layouts/home-layout.zh.mdx
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: 主页布局
-description: 其他页面的共享布局
----
-
-## 使用方法
-
-在其他页面上添加导航栏和搜索对话框。
-
-```tsx title="/app/(home)/layout.tsx"
-import { HomeLayout } from 'fumadocs-ui/layouts/home';
-import { baseOptions } from '@/app/layout.config';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return {children};
-}
-```
-
-创建一个[路由组](https://nextjs.org/docs/app/building-your-application/routing/route-groups)来在多个页面之间共享相同的布局。
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/content/docs/layouts/notebook.mdx b/content/docs/layouts/notebook.mdx
deleted file mode 100644
index 8c9df1b..0000000
--- a/content/docs/layouts/notebook.mdx
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: Notebook
-description: A more compact version of Docs Layout
----
-
-## Usage
-
-Enable the notebook layout with `fumadocs-ui/layouts/notebook`, it's a more compact layout than the default one.
-
-
-
-```tsx title="layout.tsx"
-import { DocsLayout } from 'fumadocs-ui/layouts/notebook';
-import { baseOptions } from '@/app/layout.config';
-import { source } from '@/lib/source';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return (
-
- {children}
-
- );
-}
-```
diff --git a/content/docs/layouts/notebook.zh.mdx b/content/docs/layouts/notebook.zh.mdx
deleted file mode 100644
index 356c009..0000000
--- a/content/docs/layouts/notebook.zh.mdx
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: 笔记本
-description: 文档布局的更紧凑版本
----
-
-## 使用方法
-
-使用 `fumadocs-ui/layouts/notebook` 启用笔记本布局,它比默认布局更加紧凑。
-
-
-
-```tsx title="layout.tsx"
-import { DocsLayout } from 'fumadocs-ui/layouts/notebook';
-import { baseOptions } from '@/app/layout.config';
-import { source } from '@/lib/source';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return (
-
- {children}
-
- );
-}
-```
\ No newline at end of file
diff --git a/content/docs/layouts/page.mdx b/content/docs/layouts/page.mdx
deleted file mode 100644
index e4d2573..0000000
--- a/content/docs/layouts/page.mdx
+++ /dev/null
@@ -1,217 +0,0 @@
----
-title: Docs Page
-description: A page in your documentation
----
-
-Page is the base element of a documentation, it includes Table of contents,
-Footer, and Breadcrumb.
-
-## Usage
-
-```tsx title="page.tsx"
-import {
- DocsPage,
- DocsDescription,
- DocsTitle,
- DocsBody,
-} from 'fumadocs-ui/page';
-
-
- title
- description
- ...
-;
-```
-
-
-
-Instead of rendering the title with `DocsTitle` in `page.tsx`, you can put the title into MDX file.
-This will render the title in the MDX body.
-
-
-
-### Body
-
-It applies the [Typography](/docs/theme#typography) styles, wrap your content inside.
-
-```tsx
-import { DocsBody } from 'fumadocs-ui/page';
-
-
-
This heading looks good!
-;
-```
-
-### Category
-
-Optional, link the other pages in its (page tree) folder with cards.
-
-> You can use this component without ``.
-
-```tsx title="page.tsx"
-import { source } from '@/lib/source';
-import { DocsCategory } from 'fumadocs-ui/page';
-
-const page = source.getPage(['...']);
-
-;
-```
-
-**Demo:**
-
-{/* DocsCategory is not supported */}
-{/* */}
-
-## Configurations
-
-### Full Mode
-
-To extend the page to fill up all available space, pass `full` to the page component.
-This will force TOC to be shown as a popover.
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-
-...;
-```
-
-### Table of Contents
-
-An overview of all the headings in your article, it requires an array of headings.
-
-For Markdown and MDX documents, You can obtain it using the
-[TOC Utility](/docs/headless/utils/get-toc). Content sources like Fumadocs MDX offer this out-of-the-box.
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-
-...;
-```
-
-Customise or disable TOC from your documentation with the `tableOfContent` option.
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-
-...;
-```
-
-{/* */}
-
-#### Style
-
-You can choose another style for TOC, like `clerk` inspired by https://clerk.com:
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-
-
- ...
-;
-```
-
-#### Popover Mode
-
-On smaller devices, it is shown on a popover instead.
-Customise it with the `tableOfContentPopover` option.
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-
-...;
-```
-
-{/* */}
-
-### Last Updated Time
-
-Display last updated time of the page.
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-
-;
-```
-
-Since you might have different version controls (e.g. Github) or it's from
-remote sources like Sanity, Fumadocs UI doesn't display the last updated time by
-default.
-
-For Github hosted documents, you can use
-the [`getGithubLastEdit`](/docs/headless/utils/git-last-edit) utility.
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-import { getGithubLastEdit } from 'fumadocs-core/server';
-
-const time = await getGithubLastEdit({
- owner: 'fuma-nama',
- repo: 'fumadocs',
- path: `content/docs/${page.file.path}`,
-});
-
-;
-```
-
-
-
- You can also specify the last updated time of documents (e.g. using frontmatter).
- Don't forget to [update the schema type](/docs/mdx/collections#schema) on Fumadocs MDX first.
-
-
-
-### Edit on GitHub
-
-Add "Edit on GitHub" button to the page.
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-
-;
-```
-
-### Footer
-
-Footer is a navigation element that has two buttons to jump to the next and previous pages. When not specified, it shows the neighbour pages found from page tree.
-
-Customise the footer with the `footer` option.
-
-```tsx
-import { DocsPage, DocsBody } from 'fumadocs-ui/page';
-
-
- ...
-;
-```
-
-{/* */}
-
-### Breadcrumb
-
-A navigation element, shown only when user is navigating in folders.
-
-{/* */}
-
-### MDX Page
-
-In conjunction of Fumadocs MDX, you may create a `page.mdx` file and add the following.
-
-```mdx
-export { withArticle as default } from 'fumadocs-ui/page';
-
-## Hello World
-```
-
-This creates a page with MDX, with proper typography styles applied.
diff --git a/content/docs/layouts/page.zh.mdx b/content/docs/layouts/page.zh.mdx
deleted file mode 100644
index fd5dea1..0000000
--- a/content/docs/layouts/page.zh.mdx
+++ /dev/null
@@ -1,238 +0,0 @@
----
-title: 文档页面
-description: 文档中的页面
----
-
-可以渲染完整页面的组件(标题、目录等)。
-
-## 正文
-
-```tsx title="page.tsx"
-import { DocsPage } from 'fumadocs-ui/page';
-
-export default function Page({ params }: { params: { slug?: string[] } }) {
- const page = getPage(params);
-
- return (
-
- );
-}
-```
-
-{/* */}
-
-### SEO
-
-为页面添加 SEO 优化,有几种方法。首先,允许文档生成器提供 `metadata` 帮助程序:
-
-```tsx title="api.ts"
-export { createMetadata } from 'fumadocs-core/docs';
-```
-
-默认值包括 **标题**、**描述**、**开放图形**(Open Graph)和 **Twitter** 图片、**规范**(Canonical)URL 和 locale 元数据。
-
-现在您可以直接使用它:
-
-```tsx title="page.tsx"
-import type { Metadata } from 'next';
-import { createMetadata } from '@/app/api';
-
-export async function generateMetadata({
- params,
-}: {
- params: { slug?: string[] };
-}): Promise {
- const page = await getPage(params);
-
- return createMetadata({
- page,
- params,
- });
-}
-```
-
-或者您可以手动构建它:
-
-```tsx title="page.tsx"
-import type { Metadata } from 'next';
-import { absoluteUrl } from 'fumadocs-core/utils/absolute-url';
-
-export const metadata: Metadata = {
- title: 'My Page',
- description: 'Page Description',
- openGraph: {
- title: 'My Page',
- description: 'Page Description',
- type: 'article',
- url: absoluteUrl('/docs/my-page'),
- },
- twitter: {
- title: 'My Page',
- description: 'Page Description',
- card: 'summary_large_image',
- },
- alternates: {
- canonical: absoluteUrl('/docs/my-page'),
- },
-};
-```
-
-## 内容目录
-
-支持无限级别的标题。从页面内容中提取,您应该通过 `toc` 字段传递它。
-
-```tsx title="page.tsx"
-import { DocsPage } from 'fumadocs-ui/page';
-import { getToc } from 'fumadocs-core';
-
-export default function Page() {
- const toc = getToc(content);
-
- return ;
-}
-```
-
-{/* */}
-
-### 自定义内容目录
-
-可以定制 TOC(目录)的呈现方式,但您仍然需要通过 `toc` 字段传递真实的 TOC 项目。
-
-```tsx title="page.tsx"
-import { DocsPage } from 'fumadocs-ui/page';
-
-export default function Page() {
- return (
-
-
Custom TOC
-
- );
-}
-```
-
-## 最后更新时间
-
-```tsx title="page.tsx"
-import { DocsPage } from 'fumadocs-ui/page';
-
-export default function Page() {
- return ;
-}
-```
-
-## 页脚
-
-```tsx title="layout.tsx"
-import { DocsPage } from 'fumadocs-ui/page';
-import { baseOptions } from '@/app/layout.config';
-
-export default function Page() {
- return (
-
- );
-}
-```
-
-### 使用基础配置
-
-您可以创建一个 `baseOptions` 对象,用于所有页面和布局组件。
-
-```tsx title="layout.config.ts"
-import type { BasePageConfig } from 'fumadocs-ui/page';
-
-export const baseOptions: BasePageConfig = {
- githubUrl: 'https://github.com/fuma-nama/fumadocs',
- footer: {
- text: 'Built with Fumadocs',
- },
-};
-```
-
-```tsx title="page.tsx"
-import { DocsPage } from 'fumadocs-ui/page';
-import { baseOptions } from '@/app/layout.config';
-
-export default function Page() {
- return ;
-}
-```
-
-### 编辑链接
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-
-export default function Page() {
- return (
-
- );
-}
-```
-
-### 页面导航
-
-```tsx
-import { DocsPage } from 'fumadocs-ui/page';
-import { getPagesPath } from 'fumadocs-core';
-
-export default function Page({ params }: { params: { slug?: string[] } }) {
- const pagePath = getPagesPath(params);
- const prev = getAdjacentPages({ current: pagePath, dir: 'prev' });
- const next = getAdjacentPages({ current: pagePath, dir: 'next' });
-
- return (
-
- );
-}
-```
-
-#### 自定义获取相邻页面
-
-您可以在 `createAdjacentPages` 方法中应用 `includeInPageNav` 过滤器,该方法由文档生成器创建:
-
-```tsx title="api.ts"
-import { createAdjacentPages } from 'fumadocs-core/docs';
-import { tree } from '@/app/source';
-
-export const getAdjacentPages = createAdjacentPages(tree, {
- includeInPageNav: (page) => !page.data.preview,
-});
-```
\ No newline at end of file
diff --git a/content/docs/layouts/root-provider.mdx b/content/docs/layouts/root-provider.mdx
deleted file mode 100644
index 6c39b53..0000000
--- a/content/docs/layouts/root-provider.mdx
+++ /dev/null
@@ -1,54 +0,0 @@
----
-title: Root Provider
-description: The context provider of Fumadocs UI.
----
-
-The context provider of all the components, including `next-themes` and context
-for search dialog. It should be located at the root layout.
-
-## Usage
-
-```jsx
-import { RootProvider } from 'fumadocs-ui/provider';
-
-export default function Layout({ children }) {
- return (
-
-
- {children}
-
-
- );
-}
-```
-
-### Search Dialog
-
-Customize or disable the search dialog with `search` option.
-
-```jsx
-
- {children}
-
-```
-
-Learn more from [Search](/docs/search).
-
-### Theme Provider
-
-Fumadocs supports light/dark modes with [`next-themes`](https://github.com/pacocoursey/next-themes).
-Customise or disable it with `theme` option.
-
-```jsx
-
- {children}
-
-```
diff --git a/content/docs/layouts/root-provider.zh.mdx b/content/docs/layouts/root-provider.zh.mdx
deleted file mode 100644
index 870bf2e..0000000
--- a/content/docs/layouts/root-provider.zh.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: 根提供者
-description: Fumadocs UI 的上下文提供者
----
-
-所有组件的上下文提供者,包括 `next-themes` 和搜索对话框的上下文。它应该位于根布局中。
-
-## 使用方法
-
-```jsx
-import { RootProvider } from 'fumadocs-ui/provider';
-
-export default function Layout({ children }) {
- return (
-
-
- {children}
-
-
- );
-}
-```
-
-### 搜索对话框
-
-使用 `search` 选项自定义或禁用搜索对话框。
-
-```jsx
-
- {children}
-
-```
-
-从[搜索](/docs/search)了解更多信息。
-
-### 主题提供者
-
-Fumadocs 通过 [`next-themes`](https://github.com/pacocoursey/next-themes) 支持明/暗模式。
-使用 `theme` 选项自定义或禁用它。
-
-```jsx
-
- {children}
-
-```
\ No newline at end of file
diff --git a/content/docs/manual-installation.mdx b/content/docs/manual-installation.mdx
deleted file mode 100644
index d8bcdf6..0000000
--- a/content/docs/manual-installation.mdx
+++ /dev/null
@@ -1,193 +0,0 @@
----
-title: Manual Installation
-description: Create a new fumadocs project from scratch.
----
-
-> Read the [Quick Start](/docs) guide first for basic concept.
-
-## Getting Started
-
-Create a new Next.js application with `create-next-app`, and install required packages.
-
-```package-install
-fumadocs-ui fumadocs-core
-```
-
-### Content Source
-
-Fumadocs supports different content sources, you can choose one you prefer.
-
-There is a list of officially supported sources:
-
-- [Setup Fumadocs MDX](/docs/mdx)
-- [Setup Content Collections](/docs/headless/content-collections)
-
-Make sure to configure the library correctly following their setup guide before continuing, we will import the source adapter using `@/lib/source.ts` in this guide.
-
-### Root Layout
-
-Wrap the entire application inside [Root Provider](/docs/layouts/root-provider), and add required styles to `body`.
-
-```tsx
-import { RootProvider } from 'fumadocs-ui/provider';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return (
-
-
- {children}
-
-
- );
-}
-```
-
-### Styles
-
-Setup Tailwind CSS v4 on your Next.js app, add the following to `global.css`.
-
-```css title="Tailwind CSS"
-@import 'tailwindcss';
-@import 'fumadocs-ui/css/neutral.css';
-@import 'fumadocs-ui/css/preset.css';
-
-/* path of `fumadocs-ui` relative to the CSS file */
-@source '../node_modules/fumadocs-ui/dist/**/*.js';
-```
-
-> It doesn't come with a default font, you may choose one from `next/font`.
-
-### Layout
-
-Create a `app/layout.config.tsx` file to put the shared options for our layouts.
-
-```json doc-gen:file
-{
- "file": "../../examples/next-mdx/app/layout.config.tsx",
- "codeblock": {
- "meta": "title=\"app/layout.config.tsx\""
- }
-}
-```
-
-Create a folder `/app/docs` for our docs, and give it a proper layout.
-
-```json doc-gen:file
-{
- "file": "../../examples/next-mdx/app/docs/layout.tsx",
- "codeblock": {
- "meta": "title=\"app/docs/layout.tsx\""
- }
-}
-```
-
-> `pageTree` refers to Page Tree, it should be provided by your content source.
-
-### Page
-
-Create a catch-all route `/app/docs/[[...slug]]` for docs pages.
-
-In the page, wrap your content in the [Page](/docs/layouts/page) component.
-It may vary depending on your content source. You should configure static rendering with `generateStaticParams` and metadata with `generateMetadata`.
-
-
-
-
-```json doc-gen:file
-{
- "file": "../../examples/next-mdx/app/docs/[[...slug]]/page.tsx",
- "codeblock": {
- "meta": "title=\"app/docs/[[...slug]]/page.tsx\" tab=\"Fumadocs MDX\""
- }
-}
-```
-
-
-
-```json doc-gen:file
-{
- "file": "../../examples/content-collections/app/docs/[[...slug]]/page.tsx",
- "codeblock": {
- "meta": "title=\"app/docs/[[...slug]]/page.tsx\" tab=\"Content Collections\""
- }
-}
-```
-
-
-
-
-### Search
-
-Use the default document search based on Orama.
-
-
-
-
-```json doc-gen:file
-{
- "file": "../../examples/next-mdx/app/api/search/route.ts",
- "codeblock": {
- "meta": "title=\"app/api/search/route.ts\" tab=\"Fumadocs MDX\""
- }
-}
-```
-
-
-
-```json doc-gen:file
-{
- "file": "../../examples/content-collections/app/api/search/route.ts",
- "codeblock": {
- "meta": "title=\"app/api/search/route.ts\" tab=\"Content Collections\""
- }
-}
-```
-
-
-
-
-Learn more about [Document Search](/docs/headless/search).
-
-### Done
-
-You can start the dev server and create MDX files.
-
-```mdx title="content/docs/index.mdx"
----
-title: Hello World
----
-
-## Introduction
-
-I love Anime.
-```
-
-## Customise
-
-You can use [Home Layout](/docs/layouts/home-layout) for other pages of the site, it includes a navbar with theme toggle.
-
-## Deploying
-
-It should work out-of-the-box with Vercel & Netlify.
-
-### Docker Deployment
-
-If you want to deploy your Fumadocs app using Docker with **Fumadocs MDX configured**, make sure to add the `source.config.ts` file to the `WORKDIR` in the Dockerfile.
-The following snippet is taken from the official [Next.js Dockerfile Example](https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile):
-
-```zsh title="Dockerfile"
-WORKDIR /app
-
-# Install dependencies based on the preferred package manager
-COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* source.config.ts ./
-```
-
-This ensures Fumadocs MDX can access your configuration file during builds.
diff --git a/content/docs/manual-installation.zh.mdx b/content/docs/manual-installation.zh.mdx
deleted file mode 100644
index 8d61bcf..0000000
--- a/content/docs/manual-installation.zh.mdx
+++ /dev/null
@@ -1,191 +0,0 @@
----
-title: 手动安装
-description: 从零开始创建一个新的 Fumadocs 项目
----
-
-> 请先阅读[快速入门](/docs)指南了解基本概念。
-
-## 入门
-
-使用 `create-next-app` 创建一个新的 Next.js 应用程序,并安装所需的包。
-
-```package-install
-fumadocs-ui fumadocs-core
-```
-
-### 内容源
-
-Fumadocs 支持不同的内容源,您可以选择您喜欢的一种。
-
-以下是官方支持的源列表:
-
-- [设置 Fumadocs MDX](/docs/mdx)
-- [设置 Content Collections](/docs/headless/content-collections)
-
-请确保在继续之前按照其设置指南正确配置库,我们将在本指南中使用 `@/lib/source.ts` 导入源适配器。
-
-### 根布局
-
-将整个应用程序包装在 [Root Provider](/docs/layouts/root-provider) 中,并为 `body` 添加所需的样式。
-
-```tsx
-import { RootProvider } from 'fumadocs-ui/provider';
-import type { ReactNode } from 'react';
-
-export default function Layout({ children }: { children: ReactNode }) {
- return (
-
-
- {children}
-
-
- );
-}
-```
-
-### 样式
-
-在您的 Next.js 应用程序上设置 Tailwind CSS v4,将以下内容添加到 `global.css`。
-
-```css title="Tailwind CSS"
-@import 'tailwindcss';
-@import 'fumadocs-ui/css/neutral.css';
-@import 'fumadocs-ui/css/preset.css';
-
-/* path of `fumadocs-ui` relative to the CSS file */
-@source '../node_modules/fumadocs-ui/dist/**/*.js';
-```
-
-> 它不附带默认字体,您可以从 `next/font` 中选择一个。
-
-### 布局
-
-创建一个 `app/layout.config.tsx` 文件,放置我们布局的共享选项。
-
-```json doc-gen:file
-{
- "file": "../../examples/next-mdx/app/layout.config.tsx",
- "codeblock": {
- "meta": "title=\"app/layout.config.tsx\""
- }
-}
-```
-
-为我们的文档创建一个文件夹 `/app/docs`,并给它一个适当的布局。
-
-```json doc-gen:file
-{
- "file": "../../examples/next-mdx/app/docs/layout.tsx",
- "codeblock": {
- "meta": "title=\"app/docs/layout.tsx\""
- }
-}
-```
-
-> `pageTree` 指的是页面树,应该由您的内容源提供。
-
-### 页面
-
-为文档页面创建一个捕获所有路由 `/app/docs/[[...slug]]`。
-
-在页面中,将您的内容包装在 [Page](/docs/layouts/page) 组件中。
-这可能因您的内容源而异。您应该使用 `generateStaticParams` 配置静态渲染,并使用 `generateMetadata` 配置元数据。
-
-
-
-
-```json doc-gen:file
-{
- "file": "../../examples/next-mdx/app/docs/[[...slug]]/page.tsx",
- "codeblock": {
- "meta": "title=\"app/docs/[[...slug]]/page.tsx\" tab=\"Fumadocs MDX\""
- }
-}
-```
-
-
-
-```json doc-gen:file
-{
- "file": "../../examples/content-collections/app/docs/[[...slug]]/page.tsx",
- "codeblock": {
- "meta": "title=\"app/docs/[[...slug]]/page.tsx\" tab=\"Content Collections\""
- }
-}
-```
-
-
-
-### 搜索
-
-使用基于 Orama 的默认文档搜索。
-
-
-
-
-```json doc-gen:file
-{
- "file": "../../examples/next-mdx/app/api/search/route.ts",
- "codeblock": {
- "meta": "title=\"app/api/search/route.ts\" tab=\"Fumadocs MDX\""
- }
-}
-```
-
-
-
-```json doc-gen:file
-{
- "file": "../../examples/content-collections/app/api/search/route.ts",
- "codeblock": {
- "meta": "title=\"app/api/search/route.ts\" tab=\"Content Collections\""
- }
-}
-```
-
-
-
-了解更多关于[文档搜索](/docs/headless/search)的信息。
-
-### 完成
-
-您可以启动开发服务器并创建 MDX 文件。
-
-```mdx title="content/docs/index.mdx"
----
-title: Hello World
----
-
-## Introduction
-
-I love Anime.
-```
-
-## 自定义
-
-您可以为网站的其他页面使用 [Home Layout](/docs/layouts/home-layout),它包含一个带有主题切换的导航栏。
-
-## 部署
-
-它应该在 Vercel 和 Netlify 上开箱即用。
-
-### Docker 部署
-
-如果您想使用 Docker 部署您的 Fumadocs 应用程序,并且已**配置了 Fumadocs MDX**,请确保将 `source.config.ts` 文件添加到 Dockerfile 中的 `WORKDIR`。
-以下片段取自官方 [Next.js Dockerfile 示例](https://github.com/vercel/next.js/blob/canary/examples/with-docker/Dockerfile):
-
-```zsh title="Dockerfile"
-WORKDIR /app
-
-# Install dependencies based on the preferred package manager
-COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* source.config.ts ./
-```
-
-这确保 Fumadocs MDX 在构建期间可以访问您的配置文件。
\ No newline at end of file
diff --git a/content/docs/markdown.mdx b/content/docs/markdown.mdx
deleted file mode 100644
index 2f74fbe..0000000
--- a/content/docs/markdown.mdx
+++ /dev/null
@@ -1,380 +0,0 @@
----
-title: Markdown
-description: How to write documents
----
-
-## Introduction
-
-Fumadocs provides many useful extensions to MDX, a markup language. Here is a brief introduction to the default MDX syntax of Fumadocs UI.
-
-> MDX is not the only supported format of Fumadocs. In fact, you can use any renderers such as `next-mdx-remote` or CMS.
-
-## Markdown
-
-We use GFM (GitHub Flavored Markdown), a superset of Markdown (CommonMark).
-See [GFM Specification](https://github.github.com/gfm).
-
-````md
-# Heading
-
-## Heading
-
-### Heading
-
-#### Heading
-
-Hello World, **Bold**, _Italic_, ~~Hidden~~
-
-```js
-console.log('Hello World');
-```
-
-1. First
-2. Second
-3. Third
-
-- Item 1
-- Item 2
-
-> Quote here
-
-
-
-| Table | Description |
-| ----- | ----------- |
-| Hello | World |
-````
-
-### Auto Links
-
-Internal links use the `next/link` component to allow prefetching and avoid hard-reload.
-
-External links will get the default `rel="noreferrer noopener" target="_blank"` attributes for security.
-
-```mdx
-[My Link](https://github.github.com/gfm)
-
-This also works: https://github.github.com/gfm.
-```
-
-## MDX
-
-MDX is a superset of Markdown, with support of JSX syntax.
-It allows you to import components, and use them right in the document, or even export values.
-
-```mdx
-import { Component } from './component';
-
-
-```
-
-see [MDX Syntax](https://mdxjs.com/docs/what-is-mdx/#mdx-syntax) to learn more.
-
-### Cards
-
-Useful for adding links, it is included by default.
-
-```mdx
-
-
- Learn more about caching in Next.js
-
-
-```
-
-
-
- Learn more about caching in Next.js
-
-
-
-#### Icon
-
-You can specify an icon to cards.
-
-```mdx
-import { HomeIcon } from 'lucide-react';
-
-
- } href="/" title="Home">
- Go back to home
-
-
-```
-
-
- } href="/" title="Go back to home">
- The home page of Fumadocs.
-
-
-
-#### Without href
-
-```mdx
-
-
- Learn more about `fetch` in Next.js.
-
-
-```
-
-
-
- Learn more about `fetch` in Next.js.
-
-
-
-### Callouts
-
-Useful for adding tips/warnings, it is included by default.
-
-```mdx
-Hello World
-```
-
-Hello World
-
-#### Title
-
-Specify a callout title.
-
-```mdx
-Hello World
-```
-
-Hello World
-
-#### Types
-
-You can specify the type of callout.
-
-- `info` (default)
-- `warn`
-- `error`
-
-```mdx
-
- Hello World
-
-```
-
-
- Hello World
-
-
-### Customise Components
-
-See [all MDX components and available options](/docs/mdx).
-
-## Headings
-
-An anchor is automatically applied to each heading, it sanitizes invalid characters like spaces. (e.g. `Hello World` to `hello-world`)
-
-```md
-# Hello `World`
-```
-
-### TOC Settings
-
-The table of contents (TOC) will be generated based on headings, you can also customise the effects of headings:
-
-```md
-# Heading [!toc]
-
-This heading will be hidden from TOC.
-
-# Another Heading [toc]
-
-This heading will **only** be visible in TOC, you can use it to add additional TOC items.
-Like headings rendered in a React component:
-
-
-```
-
-### Custom Anchor
-
-You can add `[#slug]` to customise heading anchors.
-
-```md
-# heading [#my-heading-id]
-```
-
-You can also chain it with TOC settings like:
-
-```md
-# heading [toc] [#my-heading-id]
-```
-
-To link people to a specific heading, add the heading id to hash fragment: `/page#my-heading-id`.
-
-## Frontmatter
-
-We support YAML frontmatter. It is a way to specify common information of the document (e.g. title).
-Place it at the top of document.
-
-```mdx
----
-title: Hello World
----
-
-## Title
-```
-
-See [Page Conventions](/docs/page-conventions#frontmatter) for a list of properties available for frontmatter.
-
-## Codeblock
-
-Syntax Highlighting is supported by default using [Rehype Code](/docs/headless/mdx/rehype-code).
-
-````mdx
-```js
-console.log('Hello World');
-```
-````
-
-You can add a title to the codeblock.
-
-````mdx
-```js title="My Title"
-console.log('Hello World');
-```
-````
-
-### Highlight Lines
-
-You can highlight specific lines by adding `[!code highlight]`.
-
-````md
-```tsx
-
Hello World
// [\!code highlight]
-
Hello World
-
Goodbye
-
Hello World
-```
-````
-
-### Highlight Words
-
-You can highlight a specific word by adding `[!code word:]`.
-
-````md
-```js
-// [\!code word:config]
-const config = {
- reactStrictMode: true,
-};
-```
-````
-
-### Diffs
-
-````mdx
-```ts
-console.log('hewwo'); // [\!code --]
-console.log('hello'); // [\!code ++]
-```
-````
-
-```ts
-console.log('hewwo'); // [!code --]
-console.log('hello'); // [!code ++]
-```
-
-### Tab Groups
-
-You can use code blocks with the `` component.
-
-````mdx
-import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
-
-
-
- ```ts
- console.log('A');
- ```
-
-
- ```ts
- console.log('B');
- ```
-
-
-````
-
-> Note that you can add MDX components instead of importing them in MDX files.
-
-
-
- ```ts
- console.log('A');
- ```
-
-
- ```ts
- console.log('B');
- ```
-
-
-
-### Using Typescript Twoslash
-
-Write Typescript codeblocks with hover type information and detected types errors.
-
-Not enabled by default. See [Twoslash](/docs/twoslash).
-
-## Images
-
-All built-in content sources handle images properly.
-Images are automatically optimized for `next/image`.
-
-```mdx
-
-```
-
-
-
-## Optional
-
-Some optional plugins you can enable.
-
-### Math Equations
-
-Write math equations with TeX.
-
-````md
-```math
-f(x) = x * e^{2 pi i \xi x}
-```
-````
-
-```math
-f(x) = x * e^{2 pi i \xi x}
-```
-
-To enable, see [Math Integration](/docs/math).
-
-### Package Install
-
-Generate code blocks for installing packages via package managers (JS/Node.js).
-
-````md
-```package-install
-npm i next -D
-```
-````
-
-```package-install
-npm i next -D
-```
-
-To enable, see [Remark Install](/docs/headless/mdx/install).
-
-### More
-
-You can see [a list of plugins](/docs/headless/mdx) supported by Fumadocs.
diff --git a/content/docs/markdown.zh.mdx b/content/docs/markdown.zh.mdx
deleted file mode 100644
index 85a0ecc..0000000
--- a/content/docs/markdown.zh.mdx
+++ /dev/null
@@ -1,342 +0,0 @@
----
-title: Markdown
-description: 如何撰写文档
----
-
-## 介绍
-
-Fumadocs 为 MDX(一种标记语言)提供了许多有用的扩展。以下是 Fumadocs UI 默认 MDX 语法的简要介绍。
-
-> MDX 不是 Fumadocs 唯一支持的格式。实际上,您可以使用任何渲染器,如 `next-mdx-remote` 或 CMS。
-
-## Markdown
-
-我们使用 GFM(GitHub 风格的 Markdown),这是 Markdown(CommonMark)的超集。
-参见 [GFM 规范](https://github.github.com/gfm)。
-
-````md
-# Heading
-
-## Heading
-
-### Heading
-
-#### Heading
-
-Hello World, **Bold**, _Italic_, ~~Hidden~~
-
-```js
-console.log('Hello World');
-```
-
-1. First
-2. Second
-3. Third
-
-- Item 1
-- Item 2
-
-> Quote here
-
-
-
-| Table | Description |
-| ----- | ----------- |
-| Hello | World |
-````
-
-### 自动链接
-
-内部链接使用 `next/link` 组件,允许预取并避免硬重载。
-
-外部链接将获得默认的 `rel="noreferrer noopener" target="_blank"` 属性以增强安全性。
-
-```mdx
-[My Link](https://github.github.com/gfm)
-
-This also works: https://github.github.com/gfm.
-```
-
-## MDX
-
-MDX 是 Markdown 的超集,支持 JSX 语法。
-它允许您导入组件,并直接在文档中使用它们,甚至导出值。
-
-```mdx
-import { Component } from './component';
-
-
-```
-
-参见 [MDX 语法](https://mdxjs.com/docs/what-is-mdx/#mdx-syntax) 了解更多信息。
-
-### 卡片
-
-对于添加链接很有用,默认包含。
-
-```mdx
-
-
- Learn more about caching in Next.js
-
-
-```
-
-
-
- Learn more about caching in Next.js
-
-
-
-#### 图标
-
-您可以为卡片指定图标。
-
-```mdx
-import { HomeIcon } from 'lucide-react';
-
-
- } href="/" title="Home">
- Go back to home
-
-
-```
-
-
- } href="/" title="Go back to home">
- The home page of Fumadocs.
-
-
-
-#### 无 href
-
-```mdx
-
-
- Learn more about `fetch` in Next.js.
-
-
-```
-
-
-
- Learn more about `fetch` in Next.js.
-
-
-
-### 提示框
-
-对于添加提示/警告很有用,默认包含。
-
-```mdx
-Hello World
-```
-
-Hello World
-
-#### 标题
-
-指定提示框标题。
-
-```mdx
-Hello World
-```
-
-Hello World
-
-#### 类型
-
-您可以指定提示框的类型。
-
-- `info`(默认)
-- `warn`
-- `error`
-
-```mdx
-
- Hello World
-
-```
-
-
- Hello World
-
-
-### 自定义组件
-
-参见[所有 MDX 组件和可用选项](/docs/mdx)。
-
-## 标题
-
-每个标题会自动应用锚点,它会清理空格等无效字符。(例如,`Hello World` 变为 `hello-world`)
-
-```md
-# Hello `World`
-```
-
-### 目录设置
-
-目录 (TOC) 将基于标题生成,您还可以自定义标题的效果:
-
-```md
-# Heading [!toc]
-
-This heading will be hidden from TOC.
-
-# Another Heading [toc]
-
-This heading will **only** be visible in TOC, you can use it to add additional TOC items.
-Like headings rendered in a React component:
-
-
-```
-
-### 自定义锚点
-
-您可以添加 `[#slug]` 来自定义标题锚点。
-
-```md
-# heading [#my-heading-id]
-```
-
-您也可以将其与目录设置链接起来,例如:
-
-```md
-# heading [toc] [#my-heading-id]
-```
-
-要将人们链接到特定标题,请将标题 ID 添加到哈希片段:`/page#my-heading-id`。
-
-## 前言
-
-我们支持 YAML 前言。这是一种指定文档常见信息(例如标题)的方式。
-将其放在文档顶部。
-
-```mdx
----
-title: Hello World
----
-
-## Title
-```
-
-有关前言可用属性的列表,请参见[页面约定](/docs/page-conventions#frontmatter)。
-
-## 代码块
-
-默认使用 [Rehype Code](/docs/headless/mdx/rehype-code) 支持语法高亮。
-
-````mdx
-```js
-console.log('Hello World');
-```
-````
-
-您可以为代码块添加标题。
-
-````mdx
-```js title="My Title"
-console.log('Hello World');
-```
-````
-
-### 高亮行
-
-````md
-```tsx
-
-
-
-Display code blocks, added by default.
-
-- Copy button
-- Custom titles and icons
-
-## Usage
-
-Wrap the pre element in ``, which acts as the wrapper of code block.
-
-```tsx
-import { Pre, CodeBlock } from 'fumadocs-ui/components/codeblock';
-
- (
-
-
{props.children}
{/* [!code highlight] */}
-
- ),
- }}
-/>;
-```
-
-See [Markdown](/docs/markdown#codeblock) for usages.
-
-### Keep Background
-
-Use the background color generated by Shiki (the Rehype Code plugin).
-
-```tsx
-import { Pre, CodeBlock } from 'fumadocs-ui/components/codeblock';
-
- (
-
-
{props.children}
-
- ),
- }}
-/>;
-```
-
-### Icons
-
-Specify a custom icon by passing an `icon` prop to `CodeBlock` component.
-
-By default, the icon will be injected by the custom Shiki transformer.
-
-```js title="config.js"
-console.log('js');
-```
diff --git a/content/docs/mdx/codeblock.zh.mdx b/content/docs/mdx/codeblock.zh.mdx
deleted file mode 100644
index 1e9c797..0000000
--- a/content/docs/mdx/codeblock.zh.mdx
+++ /dev/null
@@ -1,79 +0,0 @@
----
-title: 代码块
-description: 在文档中添加代码块
----
-
-
-
-```
-
-> 该插件仅与 Fumadocs UI 的 MDX 组件一起工作,它可能与 `@tailwindcss/typography` 冲突。
-> 如果您需要使用 `@tailwindcss/typography` 而不是默认插件,请[设置类名选项](https://github.com/tailwindlabs/tailwindcss-typography/blob/main/README.md#changing-the-default-class-name)以避免冲突。
\ No newline at end of file
diff --git a/content/docs/what-is-fumadocs.mdx b/content/docs/what-is-fumadocs.mdx
deleted file mode 100644
index 729a072..0000000
--- a/content/docs/what-is-fumadocs.mdx
+++ /dev/null
@@ -1,58 +0,0 @@
----
-title: What is Fumadocs
-description: Introducing Fumadocs, a docs framework that you can break.
-icon: CircleHelp
----
-
-Fumadocs was created because I wanted a more customisable experience for building docs, to be a docs framework that is not opinionated, **a "framework" that you can break**.
-
-## Philosophy
-
-**Less Abstraction:** Fumadocs expects you to write code and cooperate with the rest of your software.
-While most frameworks are configured with a configuration file, they usually lack flexibility when you hope to tune its details.
-You can’t control how they render the page nor the internal logic. Fumadocs shows you how the app works, instead of a single configuration file.
-
-**Next.js Fundamentals:** It gives you the utilities and a good-looking UI.
-You are still using features of Next.js App Router, like **Static Site Generation**. There is nothing new for Next.js developers, so you can use it with confidence.
-
-**Opinionated on UI:** The only thing Fumadocs UI (the default theme) offers is **User Interface**. The UI is opinionated for bringing better mobile responsiveness and user experience.
-Instead, we use a much more flexible approach inspired by Shadcn UI — [Fumadocs CLI](/docs/cli), so we can iterate our design quick, and welcome for more feedback about the UI.
-
-## Why Fumadocs
-
-Fumadocs is designed with flexibility in mind.
-
-You can use `fumadocs-core` as a headless UI library and bring your own styles.
-Fumadocs MDX is also a useful library to handle MDX content in Next.js. It also includes:
-
-- Many built-in components.
-- Typescript Twoslash, OpenAPI, and Math (KaTeX) integrations.
-- Fast and optimized by default, natively built on App Router.
-- Tight integration with Next.js, you can add it to an existing Next.js project easily.
-
-You can read [Comparisons](/docs/comparisons) if you're interested.
-
-### Documentation
-
-Fumadocs focuses on **authoring experience**, it provides a beautiful theme and many docs automation tools.
-
-It helps you to iterate your codebase faster while never leaving your docs behind.
-You can take this site as an example of docs site built with Fumadocs.
-
-### Blog sites
-
-Since Next.js is already a powerful framework, most features can be implemented with **just Next.js**.
-
-Fumadocs provides additional tooling for Next.js, including syntax highlighting, document search, and a default theme (Fumadocs UI).
-It helps you to avoid reinventing the wheels.
-
-## When to use Fumadocs
-
-For most of the web applications, vanilla React.js is no longer enough.
-Nowadays, we also wish to have a blog, a showcase page, a FAQ page, etc. With a
-fancy UI that's breathtaking, in these cases, Fumadocs can help you build the
-docs easier, with less boilerplate.
-
-Fumadocs is maintained by Fuma and many contributors, with care on the maintainability of codebase.
-While we don't aim to offer every functionality people wanted, we're more focused on making basic features perfect and well-maintained.
-You can also help Fumadocs to be more useful by contributing!
diff --git a/content/docs/what-is-fumadocs.zh.mdx b/content/docs/what-is-fumadocs.zh.mdx
deleted file mode 100644
index ff975fe..0000000
--- a/content/docs/what-is-fumadocs.zh.mdx
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: 什么是 Fumadocs
-description: 介绍 Fumadocs,一个可以打破常规的文档框架
-icon: CircleHelp
----
-
-Fumadocs 的创建是因为我想要一种更加可定制化的文档构建体验,一个不固执己见的文档框架,**一个你可以"打破"的"框架"**。
-
-## 理念
-
-**更少的抽象:** Fumadocs 期望您编写代码并与您的其余软件协作。
-虽然大多数框架都是通过配置文件进行配置,但当您希望调整其细节时,它们通常缺乏灵活性。
-您无法控制它们如何渲染页面或内部逻辑。Fumadocs 向您展示应用程序如何工作,而不是仅提供单一的配置文件。
-
-**Next.js 基础:** 它为您提供实用工具和美观的 UI。
-您仍然使用 Next.js App Router 的功能,如**静态站点生成**。对于 Next.js 开发者来说没有新的东西,所以您可以放心使用。
-
-**对 UI 有自己的看法:** Fumadocs UI(默认主题)提供的唯一东西是**用户界面**。UI 的设计理念是提供更好的移动响应性和用户体验。
-相反,我们使用受 Shadcn UI 启发的更灵活的方法 — [Fumadocs CLI](/docs/cli),这样我们可以快速迭代设计,并欢迎更多关于 UI 的反馈。
-
-## 为什么选择 Fumadocs
-
-Fumadocs 的设计考虑了灵活性。
-
-您可以将 `fumadocs-core` 用作无头 UI 库并带来您自己的样式。
-Fumadocs MDX 也是处理 Next.js 中 MDX 内容的有用库。它还包括:
-
-- 许多内置组件。
-- Typescript Twoslash、OpenAPI 和 Math (KaTeX) 集成。
-- 默认情况下快速且优化,原生构建在 App Router 上。
-- 与 Next.js 紧密集成,您可以轻松将其添加到现有的 Next.js 项目中。
-
-如果您感兴趣,可以阅读 [比较](/docs/comparisons)。
-
-### 文档
-
-Fumadocs 专注于**创作体验**,它提供了一个漂亮的主题和许多文档自动化工具。
-
-它帮助您更快地迭代代码库,同时不会落下您的文档。
-您可以将此站点作为使用 Fumadocs 构建的文档站点的示例。
-
-### 博客站点
-
-由于 Next.js 已经是一个强大的框架,大多数功能可以**仅使用 Next.js** 实现。
-
-Fumadocs 为 Next.js 提供了额外的工具,包括语法高亮、文档搜索和默认主题(Fumadocs UI)。
-它帮助您避免重新发明轮子。
-
-## 何时使用 Fumadocs
-
-对于大多数 Web 应用程序,原生 React.js 已经不够用了。
-如今,我们还希望有一个博客、展示页面、FAQ 页面等。带有令人惊叹的精美 UI,在这些情况下,Fumadocs 可以帮助您更轻松地构建文档,减少样板代码。
-
-Fumadocs 由 Fuma 和许多贡献者维护,关注代码库的可维护性。
-虽然我们不打算提供人们想要的每一项功能,但我们更专注于使基本功能完美且维护良好。
-您也可以通过贡献来帮助 Fumadocs 变得更加有用!
\ No newline at end of file
diff --git a/public/images/docs/banner.png b/public/images/docs/banner.png
deleted file mode 100644
index 971f1a2..0000000
Binary files a/public/images/docs/banner.png and /dev/null differ
diff --git a/public/images/docs/docs-nav.png b/public/images/docs/docs-nav.png
deleted file mode 100644
index 5e193de..0000000
Binary files a/public/images/docs/docs-nav.png and /dev/null differ
diff --git a/public/images/docs/nav.png b/public/images/docs/nav.png
deleted file mode 100644
index cc609e0..0000000
Binary files a/public/images/docs/nav.png and /dev/null differ
diff --git a/public/images/docs/notebook.png b/public/images/docs/notebook.png
deleted file mode 100644
index 7888f84..0000000
Binary files a/public/images/docs/notebook.png and /dev/null differ
diff --git a/public/images/docs/sidebar-tabs.png b/public/images/docs/sidebar-tabs.png
deleted file mode 100644
index d831df1..0000000
Binary files a/public/images/docs/sidebar-tabs.png and /dev/null differ
diff --git a/public/images/docs/sidebar.png b/public/images/docs/sidebar.png
deleted file mode 100644
index 8425f23..0000000
Binary files a/public/images/docs/sidebar.png and /dev/null differ
diff --git a/public/images/docs/themes/black.png b/public/images/docs/themes/black.png
deleted file mode 100644
index c073e68..0000000
Binary files a/public/images/docs/themes/black.png and /dev/null differ
diff --git a/public/images/docs/themes/catppuccin.png b/public/images/docs/themes/catppuccin.png
deleted file mode 100644
index 0f5decd..0000000
Binary files a/public/images/docs/themes/catppuccin.png and /dev/null differ
diff --git a/public/images/docs/themes/dusk.png b/public/images/docs/themes/dusk.png
deleted file mode 100644
index e23b68d..0000000
Binary files a/public/images/docs/themes/dusk.png and /dev/null differ
diff --git a/public/images/docs/themes/neutral.png b/public/images/docs/themes/neutral.png
deleted file mode 100644
index ca310df..0000000
Binary files a/public/images/docs/themes/neutral.png and /dev/null differ
diff --git a/public/images/docs/themes/ocean.png b/public/images/docs/themes/ocean.png
deleted file mode 100644
index c32d4a6..0000000
Binary files a/public/images/docs/themes/ocean.png and /dev/null differ
diff --git a/public/images/docs/themes/purple.png b/public/images/docs/themes/purple.png
deleted file mode 100644
index ad203eb..0000000
Binary files a/public/images/docs/themes/purple.png and /dev/null differ
diff --git a/public/images/docs/themes/vitepress.png b/public/images/docs/themes/vitepress.png
deleted file mode 100644
index f6ca5b3..0000000
Binary files a/public/images/docs/themes/vitepress.png and /dev/null differ
diff --git a/src/app/[locale]/docs/[[...slug]]/page.tsx b/src/app/[locale]/docs/[[...slug]]/page.tsx
deleted file mode 100644
index 8258d61..0000000
--- a/src/app/[locale]/docs/[[...slug]]/page.tsx
+++ /dev/null
@@ -1,141 +0,0 @@
-import * as Preview from '@/components/docs';
-import { CustomMDXContent } from '@/components/shared/custom-mdx-content';
-import {
- HoverCard,
- HoverCardContent,
- HoverCardTrigger,
-} from '@/components/ui/hover-card';
-import { LOCALES } from '@/i18n/routing';
-import { source } from '@/lib/docs/source';
-import { constructMetadata } from '@/lib/metadata';
-import { getUrlWithLocale } from '@/lib/urls/urls';
-import Link from 'fumadocs-core/link';
-import {
- DocsBody,
- DocsDescription,
- DocsPage,
- DocsTitle,
-} from 'fumadocs-ui/page';
-import type { Locale } from 'next-intl';
-import { getTranslations } from 'next-intl/server';
-import { notFound } from 'next/navigation';
-import type { ReactNode } from 'react';
-
-export function generateStaticParams() {
- const slugParams = source.generateParams();
- const params = LOCALES.flatMap((locale) =>
- slugParams.map((param) => ({
- locale,
- slug: param.slug,
- }))
- );
-
- return params;
-}
-
-export async function generateMetadata({ params }: DocPageProps) {
- const { slug, locale } = await params;
- const language = locale as string;
- const page = source.getPage(slug, language);
- if (!page) {
- console.warn('docs page not found', slug, language);
- notFound();
- }
-
- const t = await getTranslations({ locale, namespace: 'Metadata' });
-
- return constructMetadata({
- title: `${page.data.title} | ${t('title')}`,
- description: page.data.description,
- canonicalUrl: getUrlWithLocale(`/docs/${page.slugs.join('/')}`, locale),
- });
-}
-
-function PreviewRenderer({ preview }: { preview: string }): ReactNode {
- if (preview && preview in Preview) {
- const Comp = Preview[preview as keyof typeof Preview];
- return ;
- }
-
- return null;
-}
-
-export const revalidate = false;
-
-interface DocPageProps {
- params: Promise<{
- slug?: string[];
- locale: Locale;
- }>;
-}
-
-/**
- * Doc Page
- *
- * ref:
- * https://github.com/fuma-nama/fumadocs/blob/dev/apps/docs/app/docs/%5B...slug%5D/page.tsx
- */
-export default async function DocPage({ params }: DocPageProps) {
- const { slug, locale } = await params;
- const language = locale as string;
- const page = source.getPage(slug, language);
-
- if (!page) {
- console.warn('docs page not found', slug, language);
- notFound();
- }
-
- const preview = page.data.preview;
-
- return (
-
- {page.data.title}
- {page.data.description}
-
- {/* Preview Rendered Component */}
- {preview ? : null}
-
- {/* MDX Content */}
- {
- const found = source.getPageByHref(href ?? '', {
- dir: page.file.dirname,
- });
-
- if (!found) return ;
-
- return (
-
-
-
-
-
-