# ConfigProvider (configuration)

Fournit à la sous-arborescence la taille globale, la langue et les variables de thème. Ce qui est fourni est une référence computed (et non un instantané) : les changements de props du provider se propagent en temps réel à tous les composants consommateurs.

Personnalisation de thème locale
<template>
  <div class="demo-col" style="gap: 20px">
    <LhConfigProvider
      :theme-vars="{
        'primary-color': '#4a6741',
        'bg-color': '#f4f7ee',
        'text-primary': '#2c2a26',
        'text-regular': '#5a5a5a',
      }"
      :pattern-components="['button', 'tag']"
    >
      <div
        style="
          padding: 16px;
          background: var(--lh-bg-color);
          border: 1px dashed var(--lh-primary-color);
          display: flex;
          gap: 12px;
          flex-wrap: wrap;
        "
      >
        <LhButton type="primary">Bouton thème bambou</LhButton>
        <LhTag type="primary">Étiquette thème bambou</LhTag>
        <LhInput placeholder="Champ thème bambou" style="width: 180px" />
      </div>
    </LhConfigProvider>
    <p class="demo-note">themeVars remplace les variables --lh-* globales ; seuls les composants de la liste blanche patternComponents appliquent bg-pattern.</p>
    <LhConfigProvider
      :theme-vars="{ 'primary-color': '#8b5a2b' }"
      :component-theme="{ button: { 'primary-color': '#2f6f5e' }, tag: { 'primary-color': '#2f6f5e' } }"
    >
      <div style="padding: 16px; display: flex; gap: 12px; flex-wrap: wrap">
        <LhButton type="primary">Bouton vert pin (componentTheme remplace individuellement)</LhButton>
        <LhTag type="primary">Étiquette vert pin</LhTag>
      </div>
    </LhConfigProvider>
    <p class="demo-note">componentTheme remplace le thème composant par composant (prioritaire sur les themeVars globales).</p>
    <LhConfigProvider size="large" locale="en-US">
      <div style="padding: 16px; display: flex; gap: 12px; flex-wrap: wrap; align-items: center">
        <LhInput placeholder="size=large" style="width: 180px" />
        <LhPagination :total="50" :page-size="10" />
      </div>
    </LhConfigProvider>
    <p class="demo-note">size définit la taille globale + locale change le pack de langue (les textes du paginateur passent en anglais).</p>
  </div>
</template>

# Props

Prop Description Type Valeur par défaut
size Taille globale (effective lorsque le composant enfant ne reçoit pas de size explicite) LhSizes —
locale Langue globale (synchronisée avec le singleton lhlocale via watch immediate) LhLocaleType —
themeVars Variables de thème globales (le préfixe --lh- peut être omis) Record<string, string> —
patternComponents Liste blanche des composants pour lesquels bg-pattern s'applique LhThemeableComponent[] —
componentTheme Remplacement des variables de thème par composant Partial<Record<Component, Vars>> —

# Composition API

import { useLhConfigContext } from '@lh-ui/vue2'
// Injection dans un composant personnalisé : renvoie ComputedRef<LhConfigContext> | null
const ctx = useLhConfigContext()

Avertissement

Les services impératifs (montage via new Vue) n'héritent pas du contexte provide/inject ; ils lisent la taille et la langue globales via le singleton lhlocale.

Copyright © 2024-2026 FengMo WenXue