主題定制台
不想只用預設?在下面的定製臺裡選一個預設作起點,逐令牌調成自己的配色,預覽區即時生效, 最後匯出一份 scss 檔案直接放進專案——無需重新編譯元件庫。
主色
--lh-primary-color
--lh-primary-color-hover
--lh-primary-color-active
--lh-primary-color-bg
--lh-primary-color-border
主色衍生
--lh-color-on-primary
--lh-selected-color
功能色
--lh-success-color
--lh-warning-color
--lh-danger-color
--lh-info-color
文本
--lh-text-primary
--lh-text-regular
--lh-text-secondary
背景
--lh-bg-color
--lh-bg-color-page
边框
--lh-border-color-base
--lh-border-color-light
实时预览
标签标签标签
主要文字·常规文字·次要文字
编辑的令牌只作用于预览区(与 ConfigProvider 同机制);导出的文件已包含暗色适配。
导出 SCSS
採納匯出的主題
定製臺匯出的檔案長這樣(令牌源在 @lh-ui/share/styles/theme/common/var.scss):
scss
@use '@lh-ui/share/styles/index.scss';
:root {
--lh-primary-color: #2B4C7C;
/* ... */
}
[data-theme='dark'],
.dark {
--lh-primary-color-bg: color-mix(in srgb, var(--lh-primary-color) 25%, transparent);
--lh-selected-color: color-mix(in srgb, var(--lh-primary-color) 40%, #fff);
}兩種採納方式:
方式一:靜態引入(推薦)——把匯出的 lh-theme.scss 放進專案,在入口引入:
ts
// main.ts
import './lh-theme.scss'@use '@lh-ui/share/styles/index.scss' 已包含全部元件樣式與主題令牌,一行即可; 暗色塊與 share 的預設機制同源,data-theme="dark" 下自動切換。
方式二:執行時注入——用 LhConfigProvider 的 themeVars 局部覆寫(鍵為簡寫, 自動補 --lh- 前綴),適合同一頁面並列多套主題:
vue
<script setup lang="ts">
import { LhConfigProvider, LhButton } from '@lh-ui/vue3'
</script>
<template>
<LhConfigProvider :theme-vars="{ primaryColor: '#2B4C7C', onPrimary: '#FFFFFF' }">
<LhButton type="primary">主要按钮</LhButton>
</LhConfigProvider>
</template>範例程式碼統一使用 npm 套件名稱(
@lh-ui/vue3/@lh-ui/share),拷貼即用; 本文件站點的實際執行走家族本地原始碼,因此改動即時可見。
注意事項
- 淺主色必須顯式宣告
--lh-color-on-primary:白字在淺主色上不達 AA 對比度(4.5:1), 預設裡松花綠 / 藤黃都因此改用了墨字。定製臺的「主色底文字」欄位即對應此令牌。 --lh-selected-color留空時跟隨--lh-primary-color-active的預設鏈路; 淺主色下作選中文字往往需要單獨加深(預設裡同樣有體現)。- 對比度門禁:share 的
pnpm verify:theme按真實消費配對複算每個預設的 AA 對比度, 自訂主題建議照著預設主題的註解自查一遍。