Aller au contenu principal

Thèmes prédéfinis

@lh-ui/share intègre cinq palettes préréglées de style chinois, que @lh-ui/react consomme telles quelles. Les préréglages modifient les variables de couleur --lh-* et sont orthogonaux au mode clair / sombre (useLhTheme).

Liste des préréglages​

NomDescription
cerblue青蓝 (bleu azur, par défaut)
songhua松花 (vert pin)
zhusha朱砂 (cinabre)
shuimo水墨 (encre de Chine)
golden鎏金 (or brillant)

Bascule à l'exécution​

Utiliser useLhPresetTheme pour changer de préréglage. Les variables du préréglage sont écrites dans un <style id="lh-preset-theme"> (au niveau :root), avec une portée globale :

import { useLhPresetTheme } from '@lh-ui/react'

function PresetSwitcher() {
const { preset, setPreset, presets } = useLhPresetTheme()

return (
<select value={preset} onChange={(e) => setPreset(e.target.value as never)}>
{presets.map((p) => (
<option key={p.name} value={p.name}>
{p.name}
</option>
))}
</select>
)
}

Valeurs de retour :

ChampTypeDescription
presetThemePresetNameNom du préréglage courant
setPreset(name) => voidChange de préréglage (écriture synchrone dans localStorage)
presetsThemePreset[]Liste complète des préréglages
themeVarsRecord<string, string>Variables compatibles ConfigProvider du préréglage courant (clés sans le préfixe --lh-)

Utilisation conjointe avec ConfigProvider​

La valeur de retour themeVars peut être fournie directement à LhConfigProvider, afin que le préréglage n'agisse que sur un sous-arbre plutôt que sur l'ensemble de la page :

import { LhConfigProvider, useLhPresetTheme } from '@lh-ui/react'

function App() {
const { themeVars } = useLhPresetTheme({ initialPreset: 'zhusha' })
return (
<LhConfigProvider themeVars={themeVars}>
<YourApp />
</LhConfigProvider>
)
}

Anti-scintillement​

À la construction du site, la correspondance « nom de préréglage → texte de style » est sérialisée dans un script synchrone de l'en-tête HTML ; celui-ci applique le préréglage mémorisé dans localStorage avant le premier rendu, afin d'éviter un flash des couleurs par défaut au moment du rafraîchissement. La configuration se trouve dans le PRESET_FOUC_SCRIPT de docs/docusaurus.config.ts.

Pas de style en ligne

Les variables du préréglage doivent être écrites dans un élément <style>, jamais dans document.documentElement.style : un style en ligne a une spécificité de 1,0,0,0 qui surpasse toujours les feuilles de style — la page continuerait de lire les valeurs en ligne obsolètes lors d'un changement de préréglage à l'exécution, et cela écraserait tout le bloc de variables sombres de var-dark.scss.