UI Design System
build dev

CodeBlock

展示带语法高亮的代码。中文惯用名:代码块。
稳定本期新增已接入

元信息

字段值
规范 IDcomponent.code-block
名称CodeBlock
二级分类媒体与内容(media)
用途展示带语法高亮的代码
描述中文惯用名:代码块。

预览

静态结构:卡片(border rounded-md bg-muted)= 复制按钮(右上角,复制成功变 √ 两秒)+ 高亮体(复用 @pactor-app/markdown 的 Prism Light 高亮器,已注册 bash/css/js/jsx/ts/tsx/json/md/python/yaml 及别名,未注册语言降级纯文本)。

DSL 结构

DslNode
{
  "type": "CodeBlock",
  "props": {
    "code": "export const hello = () => console.log(\"hello\");",
    "language": "ts",
    "copyable": true
  }
}

何时用

何时使用

  • 展示带语法高亮的代码:接口示例、配置片段、错误堆栈。
  • 需要一键复制的代码分享场景。

何时不用

  • Markdown 文档中的行内代码:由 Markdown 组件的代码块承接。
  • 代码编辑:本组件只读,编辑场景需代码编辑器。

变体

变体视觉形态适用场景
高亮代码Prism one-light 配色接口 / 配置示例
纯文本未注册语言降级日志、堆栈、任意文本

API 属性

属性类型默认值说明
codestring''代码内容
languagestring'text'语言(Prism 注册表;未注册降级纯文本)
copyablebooleantrue是否显示复制按钮
className / stylestring / CSSProperties—通用:根节点 class 合并 / 内联样式

使用规范

  • language 标注准确,高亮才有意义;不确定就用 text。
  • 超长代码(百行以上)考虑折叠或只贴关键片段。
  • 密钥 / 令牌等敏感内容不要渲染进代码块。

正例

  • ✓ API 文档:请求示例 ts/json 高亮 + 一键复制。
  • ✓ 错误详情:堆栈文本以 text 语言展示。

反例

  • ✕ 把 CodeBlock 当编辑器(只读组件)。
  • ✕ 展示含真实密钥的配置(应脱敏)。

Design Token 映射

不适用:组件 tokenRefs 为空:样式 Token 数据尚未接入,三层映射(Primitive → Semantic → Component)待样式 Token 接入后回填。