Skip to content

Design Tokens

N-UI 使用 CSS 自定义属性作为 Design Token,分为 Element Plus 兼容层(--el-*)和 N-UI 别名层(--n-*)。

Token 架构

ThemeConfig
  ├── colors     → --el-color-* / --el-text-color-* / --el-border-color-* / --el-fill-color-* / --el-bg-color-*
  ├── typography → --el-font-size-* / --el-font-family
  ├── borderRadius → --el-border-radius-*
  ├── spacing    → --n-spacing-*
  ├── shadows    → --el-box-shadow-*
  └── transitions → --el-transition-duration-*

颜色 Token

主色与功能色

Token说明默认值
--el-color-primary主色#409eff
--el-color-success成功#67c23a
--el-color-warning警告#e6a23c
--el-color-danger危险#f56c6c
--el-color-info信息#909399

每个功能色还会自动生成 light-3/5/7/8/9dark-2 变体。

文本色

Token说明亮色值
--el-text-color-primary主文本#303133
--el-text-color-regular常规文本#606266
--el-text-color-secondary次要文本#909399
--el-text-color-placeholder占位文本#a8abb2

背景、边框、填充

Token说明亮色值
--el-bg-color背景色#ffffff
--el-bg-color-page页面背景#f2f3f5
--el-border-color边框#dcdfe6
--el-fill-color填充#f0f2f5

N-UI 别名 Token

Token说明映射
--n-color-primary主色别名var(--el-color-primary)
--n-color-success成功色别名var(--el-color-success)
--n-color-warning警告色别名var(--el-color-warning)
--n-color-danger危险色别名var(--el-color-danger)
--n-color-info信息色别名var(--el-color-info)
--n-color-text文本色别名var(--el-text-color-primary)
--n-color-text-secondary次要文本别名var(--el-text-color-regular)
--n-color-bg背景色别名var(--el-bg-color)
--n-color-border边框色别名var(--el-border-color)
--n-radius圆角别名var(--el-border-radius-base)
--n-font-size字号别名var(--el-font-size-base)
--n-transition-duration过渡时长别名var(--el-transition-duration)

间距 Token

Token
--n-spacing-xs4px
--n-spacing-sm8px
--n-spacing-base16px
--n-spacing-lg24px
--n-spacing-xl32px

圆角 Token

Token
--el-border-radius-base4px
--el-border-radius-small2px
--el-border-radius-round20px
--el-border-radius-circle100%

字号 Token

Token
--el-font-size-extra-large20px
--el-font-size-large18px
--el-font-size-medium16px
--el-font-size-base14px
--el-font-size-small13px
--el-font-size-extra-small12px

自定义 Token

业务可在 ThemeConfig 中扩展自定义字段,并通过 applyCustomTheme 应用到 :root

ts
import { useTheme } from '@n-ui/hooks'

const { applyTheme } = useTheme()

applyCustomTheme({
  name: 'custom',
  mode: 'light',
  // ... 标准字段
  // 自定义字段会自动生成对应的 CSS 变量
} as any)

标准 Token 建议使用 ThemeConfig 类型完整定义,确保颜色变体正确生成。