# ConfigProvider (إعداد)

يوفّر للشجرة الفرعية الحجم العام واللغة ومتغيّرات السمة. ما يُمرَّر عبر provide هو مرجع computed (وليس لقطة)، فأي تغيير في 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