Skip to content

主題定制台 ​

不想只用預設?在下面的定製臺裡選一個預設作起點,逐令牌調成自己的配色,預覽區即時生效, 最後匯出一份 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 對比度, 自訂主題建議照著預設主題的註解自查一遍。