# ConfigProvider 설정

하위 트리에 전역 크기, 언어, 테마 변수를 제공합니다. provide하는 것은 computed 참조 (스냅샷 아님) 이며, provider의 prop 변화가 모든 소비 컴포넌트에 실시간으로 전달됩니다.

부분 테마 사용자 정의
<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">죽청 테마 버튼</LhButton>
        <LhTag type="primary">죽청 태그</LhTag>
        <LhInput placeholder="죽청 입력 상자" style="width: 180px" />
      </div>
    </LhConfigProvider>
    <p class="demo-note">themeVars가 전역 --lh-* 변수를 덮어씁니다. patternComponents 화이트리스트 내 컴포넌트에만 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">파인그린 버튼 (componentTheme 개별 덮어쓰기)</LhButton>
        <LhTag type="primary">파인그린 태그</LhTag>
      </div>
    </LhConfigProvider>
    <p class="demo-note">componentTheme로 컴포넌트별 개별 덮어쓰기 (전역 themeVars보다 우선순위가 높음).</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 전역 크기 + locale로 언어 팩 전환 (페이지네이션 텍스트가 영어로 바뀜).</p>
  </div>
</template>

# Props

프로퍼티 설명 타입 기본값
size 전역 크기 (하위 컴포넌트가 size를 명시하지 않았을 때 적용) LhSizes —
locale 전역 언어 (watch immediate로 lhlocale 싱글톤에 동기화) LhLocaleType —
themeVars 전역 테마 변수 (키에서 --lh- 접두사 생략 가능) Record<string, string> —
patternComponents bg-pattern 적용 화이트리스트 LhThemeableComponent[] —
componentTheme 컴포넌트별 테마 변수 덮어쓰기 Partial<Record<Component, Vars>> —

# 컴포지션 API

import { useLhConfigContext } from '@lh-ui/vue2'
// 사용자 정의 컴포넌트 내 주입: ComputedRef<LhConfigContext> | null 반환
const ctx = useLhConfigContext()

경고

명령형 서비스 (new Vue 마운트) 는 provide/inject 컨텍스트를 상속하지 않으며, 전역 size/locale은 lhlocale 싱글톤을 통해 읽습니다.

Copyright © 2024-2026 FengMo WenXue