语法主题
@astryxdesign/core v0.7.1 · SyntaxTheme
One Dark Pro preset
tsxasync function save() {await api.update(values);toast.show('Saved');}
使用方法
SyntaxTheme 是代码颜色的提供者。它给里面的每个 CodeBlock 写上 --astryx-code-syntax-* 和 --astryx-code-block-background。useSyntaxTheme() 读取最近的语法主题,也包括 defineTheme({ syntax }) 带上的那份。
单个代码块可以直接传 syntaxTheme。一整块区域共用一套预设时,用 SyntaxTheme 包起来。
预设从 @astryx-vue/core/Code 导出:oneDarkPro、dracula、monokai、nord、tokyoNight、catppuccinMocha、githubDark、githubLight、solarizedLight、oneLight、catppuccinLatte、tokyoNightLight。defineSyntaxTheme() 用来做自定义主题。14 个颜色 token 都要给。差异行另外有五个可选槽,名字仍是 --astryx-code-syntax-*:added、removed、diff-header、added-marker、removed-marker。不写时,标记跟着标点色,差异头不另铺底色。[浅色, 深色] 会存成 light-dark()。
vue
<script setup lang="ts">
import { CodeBlock, dracula, SyntaxTheme } from '@astryx-vue/core/Code'
const code = `const status = response.ok ? 'success' : 'error'`
</script>
<template>
<SyntaxTheme :theme="dracula">
<CodeBlock :code="code" language="ts" />
</SyntaxTheme>
</template>最佳实践
| 指引 | 实践 |
|---|---|
| 推荐 | 整个应用共用一套代码配色时,写在 defineTheme() 的 syntax 上。 |
| 推荐 | 只有某一段要换预设时,用 SyntaxTheme。 |
| 推荐 | 只有一个 CodeBlock 时,直接传 syntaxTheme,不必再包一层。 |
| 避免 | 用一次性 CSS 给代码块上色。预设会把 token 颜色和背景放在一起。 |
示例
SyntaxTheme — Dark Preset
Dracula preset — tsxfunction greet(name: string) {return `Hello, ${name}!`;}
用 SyntaxTheme 包住代码块,套上 Dracula 这类深色预设。
SyntaxTheme — Light Preset
GitHub Light preset — tsxconst status = response.ok ? 'success' : 'error';console.log({status});
浅色文档上的代码示例,用 GitHub Light 这类浅色预设。