Skip to content

主题与暗色模式

设计令牌(--ew-* 命名空间)

全库仅使用 --ew-* 单一命名空间(构建期 check-token-rule.mjs 强制,禁用其它库的令牌前缀),双层架构:

语义层(主题 API 入口)

令牌默认值说明
--ew-color-primary#0D70FFLaunch Blue 主色(light-3/5/7/8/9、dark-2、rgb 游标配套)
--ew-text-primary/regular/secondary#1A2947藏青墨色文本层级
--ew-bg-page/soft/muted/container#FFFFFF页面 / hero 淡蓝灰 / 淡雾 / 卡面
--ew-border-color(-light/-dark)#E4E8F1边框
--ew-fill-1/2/3#F5F7FC填充与悬浮底
--ew-pastel-cream/blue/mint/pink/lime粉彩卡片底
--ew-color-accent-lime/orange促销点缀

设计层(本库设计语言)

令牌说明
--ew-ease-spring弹性微交互曲线 cubic-bezier(0.3, 1.3, 0.3, 1)
--ew-duration-fast/base/slow/slower0.15 / 0.2 / 0.3 / 0.5s
--ew-space-1…204px 网格间距
--ew-font-size-xs…5xl字号阶(base 15px)
--ew-radius-sm…2xl/full6 / 10 / 14 / 20 / 28 / 999px
--ew-shadow-1…4藏青染色软阴影四级
--ew-display-letter-spacing展示型标题字距 -0.03em
--ew-container-width内容容器宽 1152px

暗色模式

组件库不自动开启暗色,两步接入:

1. useTheme(推荐)

vue
<script setup>
import { EwThemeToggle } from '@wil-works/evoke-ui'
// 或底层 API:const { isDark, toggleTheme, setTheme } = useTheme()
</script>

<template>
  <!-- 日/月图标随状态切换,内部基于 useTheme -->
  <EwThemeToggle variant="soft" />
</template>
  • 优先级:localStorage 记忆(key ew-theme)> 系统偏好
  • 机制:切换 html.dark 类,variables.csshtml.dark 块重映射全部语义令牌
  • app.use(EvokeUI) 时自动初始化一次(读记忆/系统偏好并落类)

2. 直接操作

js
document.documentElement.classList.add('dark') // 开启暗色

与文档站一致

VitePress 默认主题同样以 html.dark 驱动暗色 —— 本文档站右上角切换按钮即同时驱动库的暗色令牌,下列演示可直接体验。

明暗切换实测
点击切换右上角或下方按钮,卡片与按钮令牌即时重映射。
贴纸卡:奶油底在暗色下呈暖褐调

令牌定制

覆盖语义层令牌即可整体换肤(组件层全部经令牌取值):

css
:root {
  --ew-color-primary: #7c3aed;
  --ew-color-primary-light-9: #f3ecfe;
  --ew-radius-lg: 12px;
}

基于 MIT 许可证发布