圣堂之魂
Fumadocs 折腾记

UI 组件样式

包含所有 fumadocs-ui 界面组件的使用示例和效果展示

简介

本文档展示了 Fumadocs 提供的所有 UI 组件及其样式效果。你可以在 MDX 文件中直接使用这些组件来丰富文档内容。


一、 Callout 提示框

Callout 组件用于在文档中显示重要提示信息。支持 infowarnerrorsuccesswarningidea 六种类型。

1. Info 提示

这是一条信息提示,用于向读者提供额外的背景信息或说明。

<Callout type="info">
  这是一条信息提示,用于向读者提供额外的背景信息或说明。
</Callout>

2. Warn 警告

这是一条警告提示,用于提醒读者注意潜在的问题或风险。

<Callout type="warn">
  这是一条警告提示,用于提醒读者注意潜在的问题或风险。
</Callout>

3. Error 错误

这是一条错误提示,用于标识严重的问题或不可逆的操作。

<Callout type="error">
  这是一条错误提示,用于标识严重的问题或不可逆的操作。
</Callout>

4. Success 成功

这是一条成功提示,用于确认操作已成功完成。

<Callout type="success">
  这是一条成功提示,用于确认操作已成功完成。
</Callout>

5. Warning 注意

这是一条注意事项,用于提醒读者特别关注某个配置或行为。

<Callout type="warning">
  这是一条注意事项,用于提醒读者特别关注某个配置或行为。
</Callout>

6. Idea 想法

这是一条想法提示,用于提供技巧、最佳实践或改进建议。

<Callout type="idea">
  这是一条想法提示,用于提供技巧、最佳实践或改进建议。
</Callout>

7. 带标题的 Callout

自定义标题

你可以通过 title 属性为 Callout 设置自定义标题,使提示更加清晰明确。

<Callout type="info" title="自定义标题">
  你可以通过 `title` 属性为 Callout 设置自定义标题,使提示更加清晰明确。
</Callout>

二、 Cards 卡片

Card 和 Cards 组件用于创建卡片式布局,适合展示导航链接、功能列表等。

1. 基础卡片

快速开始

快速搭建你的第一个文档站点。

配置指南

了解所有可用的配置选项。

部署

将你的文档站点部署到生产环境。
<Cards>
  <Card title="卡片标题">展示文字。</Card>
</Cards>

2. 带链接的卡片

<Cards>
  <Card title="标题" href="https://uecook.top" description="副标题">
    展示文字。
  </Card>
</Cards>

3. 长卡片

这是一个长卡片

相比普通卡片,可以占满整个视口宽度。
<CardsLong>mdx
  <Card title="标题">展示文字。</Card>
</CardsLong>

警告:长卡片支持是本人修改了 Fumadocs 的底层代码加入的,原生主题并无此选项。


三、 Accordion 手风琴

Accordion 组件用于创建可折叠的内容面板,适合展示 FAQ 。

<Accordions>
  <Accordion title="标题1">
    文字1
  </Accordion>
  <Accordion title="标题2">
    文字2
  </Accordion>
  <Accordion title="标题3">
    文字3
  </Accordion>
</Accordions>

四、 Steps 步骤

Steps 组件用于创建带编号的分步指南,帮助读者按顺序完成任务。

安装依赖 : 在终端中运行 pnpm add fumadocs-ui fumadocs-core fumadocs-mdx 安装 Fumadocs 相关依赖。
创建配置文件 : 在项目根目录创建 source.config.ts,定义文档目录和 MDX 编译选项。
启动开发服务器 : 运行 pnpm dev 启动开发服务器,即可在浏览器中查看文档效果。
<Steps>
<Step>例子1</Step>
<Step>例子2</Step>
<Step>例子3</Step>
</Steps>

五、 Tabs 标签页

Tabs 组件用于创建选项卡式内容,适合展示同一事物的不同版本或变体。

1. 基础标签页(展开模式)

提示:基础标签页仅支持单行显示。

pnpm add fumadocs-ui
npm install fumadocs-ui
yarn add fumadocs-ui
<Tabs items={['1', '2', '3']}>
  <Tab>展示1</Tab>
  <Tab>展示2</Tab>
  <Tab>展示3</Tab>
</Tabs>

2. 高级标签页(触发模式)

提示:支持多行显示、代码插入、长文本等。

使用 TypeScript 时,可以定义类型接口来获得更好的类型安全性和开发体验。

例如 interface Config { title: string; theme: 'light' | 'dark'; }

使用 JavaScript 时,配置对象不需要类型定义,直接使用普通对象即可。

例如 const config = { title: 'My Docs', theme: 'light' };

这是一个测试代码样例。

#include <stdio.h>

int main() 
{
  printf("Hello, World!");
  return 0;
}
<Tabs>
  <TabsList>
    <TabsTrigger value="1">1</TabsTrigger>
    <TabsTrigger value="2">2</TabsTrigger>
  </TabsList>
  <TabsContent value="1">
    在这里输入文字。

    留空行换行。
  </TabsContent>
  <TabsContent value="2">
    测试代码样例。

    在这里使用 markdown 语法引用代码即可。
  </TabsContent>
</Tabs>

六、 Files 文件树

Files 组件用于展示项目文件结构,支持文件和文件夹。

3.js
4.html
REMADE.md
package.json
<Files>
  <Folder name="父文件夹1" defaultOpen>
    <Folder name="子文件夹1">
      <File name="1.docx" />
      <File name="2.md" />
    </Folder>
    <File name="3.js" />
    <File name="4.html" />
  </Folder>
  <Folder name="父文件夹2" defaultOpen>
    <Folder name="子文件夹2">
      <File name="index.mdx" />
      <File name="ui.css" />
    </Folder>
  </Folder>
  <File name="REMADE.md" />
  <File name="package.json" />
</Files>

七、 TypeTable 类型表格

TypeTable 组件用于展示 API 类型定义,适合文档化组件 Props 或配置接口。

Prop

Type

<TypeTable
  type={{
    title: {
      type: 'string',
      description: '文档页面的标题',
      required: true,
    },
    description: {
      type: 'string',
      description: '文档页面的描述信息',
    },
    theme: {
      type: "'light' | 'dark' | 'system'",
      description: '主题模式,默认跟随系统',
      default: "'system'",
    },
    full: {
      type: 'boolean',
      description: '是否使用全宽布局',
      default: 'false',
    },
  }}
/>

八、 代码块

1. 基础代码块

// 标准代码块
#include <stdio.h>

int main() 
{
  printf("Hello, World!");
  return 0;
}

2. 带行号显示的代码块

// 带行号的代码块
// 在 markdown 代码语法后添加 "lineNumbers" 字段
#include <stdio.h>

int main() 
{
    printf("Hello, World!");
    return 0;
}

3. 带标题的代码块

初级语法
// 带标题的代码块
// 在 markdown 代码语法后添加 "title="标题"" 字段
#include <stdio.h>

int main() 
{
    printf("Hello, World!");
    return 0;
}

4. 带高亮行的代码块

初级语法
// 带高亮行的代码块
// 在 markdown 代码语法后添加 "{n}" 字段

#include <stdio.h>

int main() 
{
    printf("Hello, World!");
    return 0;
}

九、 表格

1. 基础表格

组件说明来源
Callout提示框组件fumadocs-ui/components/callout
Card卡片组件fumadocs-ui/components/card
Accordion手风琴组件fumadocs-ui/components/accordion
Steps步骤组件fumadocs-ui/components/steps
Tabs标签页组件fumadocs-ui/components/tabs
Files文件树组件fumadocs-ui/components/files
TypeTable类型表格组件fumadocs-ui/components/type-table
|  A  |  B  |  C  |
|-----|-----|-----|
|  1  |  2  |  3  |

提示:在默认模式下,表格为左对齐显示

2. 带对齐的表格

属性类型默认值必填
titlestring
iconReactNode自动
childrenReactNode
|  A  |  B  |  C  |
|:----|:---:|----:|  //(从左到右)左对齐、居中对齐、右对齐
|  1  |  2  |  3  |

十、 引用

1. 普通引用

Fumadocs 是一个强大的文档框架,基于 Next.js 构建。

它提供了美观的 UI 组件、出色的 MDX 支持和灵活的配置选项。

— Fumadocs 官方文档

> 123
>
> ABC
>
> 一二三

2. 嵌套引用

这是一级引用

这是嵌套的二级引用

这是三级引用

> 这是一级引用
>
> > 这是嵌套的二级引用
> >
> > > 这是三级引用

十一、 列表

1. 无序列表

  • 文档生成
    • 静态生成(SSG)
    • 服务端渲染(SSR)
  • UI 组件
    • Callout 提示框
    • Card 卡片
    • Tabs 标签页
  • 搜索功能
    • 内置搜索
    • Algolia 搜索
    • Orama 搜索
- A
  - 1
  - 2
- B
  - 1
  - 2
  - 3
- C
  - 1
  - 2
  - 3

2. 有序列表

  1. 安装依赖包
    1. 安装 fumadocs-core
    2. 安装 fumadocs-ui
    3. 安装 fumadocs-mdx
  2. 配置项目
    1. 创建 source.config.ts
    2. 配置 Next.js
    3. 设置 Tailwind CSS
  3. 编写文档
    1. 创建 MDX 文件
    2. 使用 UI 组件
    3. 预览和发布
1. AA
   1. a
   2. b
   3. c
2. BB
   1. a
   2. b
   3. c
3. CC
   1. a
   2. b
   3. c

3. 任务列表

  • 项目初始化
  • 安装依赖
  • 配置 MDX
  • 编写文档内容
  • 部署上线
- [x] 1
- [x] 2
- [x] 3
- [ ] 4
- [ ] 5

十二、 文本样式

1. 行内样式

  • 粗体文本:使用两个星号包裹
  • 斜体文本:使用一个星号包裹
  • 删除线:使用两个波浪号包裹
  • 行内代码:使用反引号包裹
  • 超链接:使用方括号和圆括号

2. 组合样式

这是正常文本,包含 粗体斜体代码链接 的组合使用。

也可以使用 粗斜体 组合,或者 删除线加粗体

**粗体文本**
*斜体文本*
~~删除线~~
`行内代码`
[超链接](https://uecook.topuecook.top)

十三、 标题层级

三级标题

四级标题

五级标题
六级标题
## 二级标题

### 三级标题

#### 四级标题

##### 五级标题

###### 六级标题

十四、 分隔线

使用三个 “---” 创建分隔线。


上面就是一条分隔线。

---   //没错这就是分割线

十五、 图片

1. 普通图片

使用标准的 Markdown 语法插入图片:

Fumadocs Logo

![图片描述](图片链接)

2. 可缩放图片

使用 ImageZoom 组件可以实现点击图片放大的效果:

Fumadocs Logo(可缩放)
<ImageZoom
  src="https://fumadocs.dev/logo.png"  //图片链接地址
  alt="图片描述"
  width={200}   // 图片宽度(单位:像素)
  height={50}   // 图片高度(单位:像素)
/>

十六、 内联目录

<InlineTOC
  items={[
    { title: '标题1', url: '#标题1', depth: 2 },
    { title: '标题2', url: '#标题2', depth: 2 },
    { title: '标题3', url: '#标题3', depth: 2 },
  ]}
>
  目录导航
</InlineTOC>

提示:外标题文字通过 children(即组件标签之间的内容)自定义;url 应与标题的 id 一致;depth 表示缩进层级(2 为二级标题,3 为三级标题,以此类推)。


十七、 组件导入参考

components/mdx.tsx 中注册组件时,需要从以下路径导入:

组件导入路径
Calloutfumadocs-ui/components/callout
Card, Cardsfumadocs-ui/components/card
Accordion, Accordionsfumadocs-ui/components/accordion
Steps, Stepfumadocs-ui/components/steps
Tabs, Tab, TabsList, TabsTrigger, TabsContentfumadocs-ui/components/tabs
Files, File, Folderfumadocs-ui/components/files
TypeTablefumadocs-ui/components/type-table
ImageZoomfumadocs-ui/components/image-zoom
InlineTOCfumadocs-ui/components/inline-toc
Bannerfumadocs-ui/components/banner
CodeBlockfumadocs-ui/components/codeblock

注意CalloutCardCardsCodeBlockTabCodeBlockTabsCodeBlockTabsListCodeBlockTabsTrigger 等组件已通过 defaultMdxComponents 自动注册,无需额外导入即可在 MDX 中使用。



本页目录