Estudio de temas
¿No te basta con los presets? En el estudio siguiente puedes elegir un preset como punto de partida, ajustar la paleta token a token y ver la zona de vista previa actualizarse en tiempo real, para finalmente exportar un archivo scss que se puede colocar directamente en el proyecto, sin necesidad de recompilar la biblioteca de componentes.
主要文字·常规文字·次要文字
编辑的令牌只作用于预览区(与 ConfigProvider 同机制);导出的文件已包含暗色适配。
Adoptar el tema exportado
El archivo exportado por el estudio tiene esta forma (la fuente de los tokens está en @lh-ui/share/styles/theme/common/var.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);
}Dos formas de adoptarlo:
Forma uno: importación estática (recomendada): coloca el lh-theme.scss exportado en el proyecto e impórtalo en el punto de entrada:
// main.ts
import './lh-theme.scss'@use '@lh-ui/share/styles/index.scss' ya incluye todos los estilos de los componentes y los tokens del tema, con una sola línea es suficiente; el bloque del modo oscuro comparte el mismo origen que el mecanismo de presets de share, de modo que se conmuta automáticamente con data-theme="dark".
Forma dos: inyección en tiempo de ejecución: utiliza la sobreescritura local de themeVars de LhConfigProvider (las claves son abreviadas y reciben automáticamente el prefijo --lh-), práctica cuando se muestran varios temas en paralelo en una misma página:
<script setup lang="ts">
import { LhConfigProvider, LhButton } from '@lh-ui/vue3'
</script>
<template>
<LhConfigProvider :theme-vars="{ primaryColor: '#2B4C7C', onPrimary: '#FFFFFF' }">
<LhButton type="primary">Botón principal</LhButton>
</LhConfigProvider>
</template>El código de ejemplo utiliza de forma uniforme los nombres de paquete npm (
@lh-ui/vue3/@lh-ui/share), listo para copiar y usar; el sitio de documentación, en cambio, se ejecuta sobre el código fuente local de la familia, por lo que los cambios son visibles de inmediato.
Consideraciones
- Los colores principales claros deben declarar
--lh-color-on-primaryexplícitamente: el texto blanco sobre un color principal claro no alcanza el contraste AA (4.5:1); por ello, en los presets 松花绿 / 藤黄 se ha cambiado a texto de color tinta. El campo «Texto sobre el color principal» del estudio corresponde a este token. - Cuando
--lh-selected-colorse deja vacío, sigue la cadena predeterminada de--lh-primary-color-active; con un color principal claro, el texto seleccionado suele necesitar una oscurecimiento independiente (los presets también lo reflejan). - Control de contraste:
pnpm verify:themede share recalcula el contraste AA de cada preset según los pares de consumo reales; para un tema personalizado se recomienda revisarlo a mano siguiendo los comentarios de Temas predefinidos.