مسبقات السمة
المسبقات الداخلية الخمس هي مقترح lh-ui الجمالي الافتراضي: يأخذ كل واحد منها لونًا رئيسيًا من الألوان الصينية التقليدية، مع مجموعة كاملة من الألوان الفاتحة والداكنة.
نظرة عامة على المسبقات
Section titled “نظرة عامة على المسبقات”| المسبقة | name |
المعرّف | labelEn | الوصف | لون رئيسي فاتح |
|---|---|---|---|---|---|
| 青花瓷 (الخزف الأزرق) | 'cerblue' |
LhCerblue |
Ceramic Blue | خزف مزخرف تحت التزجيج، أنيق وبسيط | لا |
| 松花绿 (أخضر الصنوبر) | 'songhua' |
LhSonghua |
Pine Green | غابة خيزران ناضرة، مفعمة بالحياة | نعم |
| 朱砂 (الزنجفر) | 'zhusha' |
LhZhusha |
Vermilion | أحمر الزنجفر التقليدي للأختام، احتفالي ووقور | لا |
| 水墨 (رسم الحبر) | 'shuimo' |
LhShuimo |
Ink Wash | رسم الحبر، أنيق وبسيط للغاية | لا |
| 藤黄 (أصفر عشبي) | 'golden' |
LhGolden |
Golden Autumn | أصفر القيقب في أواخر الخريف، ذهبي دافئ | نعم |
cerblue · Ceramic Blue青花瓷釉下彩,清雅素净
--lh-primary-color#2B4C7C--lh-primary-color-hover#3D649E--lh-primary-color-active#1F3A5F--lh-primary-color-bg#E8EDF3--lh-primary-color-border#D4DCE8
songhua · Pine Green竹林修竹,生机勃勃
--lh-primary-color#5B8C5A--lh-primary-color-hover#7BB079--lh-primary-color-active#4F8F4C--lh-primary-color-bg#E8F5E8--lh-primary-color-border#D0E8CF--lh-color-on-primary#101410--lh-selected-color#456F44
zhusha · Vermilion传统印章朱砂红,喜庆庄重
--lh-primary-color#B23A3A--lh-primary-color-hover#C45050--lh-primary-color-active#9A3030--lh-primary-color-bg#FDF0F0--lh-primary-color-border#F0D8D8
shuimo · Ink Wash水墨丹青,素雅极简
--lh-primary-color#2C2C2C--lh-primary-color-hover#5A5A5A--lh-primary-color-active#1A1A1A--lh-primary-color-bg#F5F5F5--lh-primary-color-border#E0E0E0
golden · Golden Autumn深秋枫黄,温暖金黄
--lh-primary-color#B8860B--lh-primary-color-hover#D4A843--lh-primary-color-active#A87F0A--lh-primary-color-bg#FBF6EA--lh-primary-color-border#F0E8D0--lh-color-on-primary#1E1A16--lh-selected-color#82600A
vars الخاصة بكل مسبقة
Section titled “vars الخاصة بكل مسبقة”المفاتيح الخمسة الأساسية (في جميع المسبقات)
Section titled “المفاتيح الخمسة الأساسية (في جميع المسبقات)”{ '--lh-primary-color': '...', '--lh-primary-color-hover': '...', '--lh-primary-color-active': '...', '--lh-primary-color-bg': '...', '--lh-primary-color-border': '...',}المفتاحان الإضافيان للمسبقات ذات اللون الرئيسي الفاتح
Section titled “المفتاحان الإضافيان للمسبقات ذات اللون الرئيسي الفاتح”كل من songhua (松花绿) و golden (藤黄) ذوا لون رئيسي فاتح، وتباين النص الأبيض
فيهما لا يبلغ مستوى AA، فيجب إضافة مفتاحين:
| المفتاح | الدور |
|---|---|
--lh-color-on-primary |
لون النص على زر اللون الرئيسي (في اللون الفاتح يُستبدل بالنص الأسود) |
--lh-selected-color |
لون نص الحالة المحدَّدة (لون active على خلفية التحويم كنص محدد لا يكفي تباينه، فيُعمَّق وحده) |
لماذا هما ضروريان: زر بلون رئيسي فاتح مع نص أبيض تبلغ نسبة تباينه 3.x:1 فقط، دون
بلوغ 4.5:1 لمستوى AA. وستمسكه بوابة verify:theme.
نأخذ 松花绿 (أخضر الصنوبر) مثالًا، فقد سُجِّل سبب التعديل في تعليقات المصدر:
--lh-color-on-primary: 松花绿 (أخضر الصنوبر) لون رئيسي فاتح، تباين النص الأبيض 3.93:1 فقط، فيُستبدل بالنص الأسود 4.73:1--lh-selected-color: لون active كنص محدد على خلفية التحويم 3.48:1 فقط، فتُعامَل الحالة المحددة وحدها بالتعميق (لا يتأثر لون خلفية active للزر)--lh-primary-color-active: القيمة الأصلية#4B7A4Aتباينها 3.70:1 →#4F8F4Cتباينها 4.75:1
ويُعامل 藤黄 (أصفر عشبي) بالمثل: نص أبيض 3.25:1 → نص أسود 5.31:1؛ نص محدد 3.41:1 →
يُعمَّق إلى #82600A؛ وactive #9A7208 تباينه 3.94:1 → #A87F0A تباينه 4.70:1.
مطلب صارم عند إضافة مسبقة بلون رئيسي فاتح: يجب توفير --lh-color-on-primary و
--lh-selected-color، وإلا سيفشل بند AA 4.5:1 في بوابة verify:theme.
استخدام المسبقات
Section titled “استخدام المسبقات”جلب المسبقة
Section titled “جلب المسبقة”import { LH_THEME_PRESETS, getThemePreset, getThemeVars } from '@lh-ui/share/theme'
LH_THEME_PRESETS // الخمس جميعهاgetThemePreset('cerblue') // كائن LhCerbluegetThemePreset('not-exists') // undefinedgetThemeVars('cerblue')?.['--lh-primary-color']حقن المسبقة (طبقة واجهة المستخدم)
Section titled “حقن المسبقة (طبقة واجهة المستخدم)”import { buildPresetStyleText, LH_PRESET_THEME_STYLE_ID } from '@lh-ui/share/theme'
function applyPreset(name: LhThemePresetName) { const vars = getThemeVars(name) if (!vars) return
const text = buildPresetStyleText(vars) let style = document.getElementById(LH_PRESET_THEME_STYLE_ID) if (!style) { style = document.createElement('style') style.id = LH_PRESET_THEME_STYLE_ID document.head.appendChild(style) } style.textContent = text // استبدال لا إلحاق، كي لا تتبقى أنماط مخصصة قديمة عند تبديل السمة}النقطة الرئيسية (انظر قيد الحقن في النظرة العامة على السمة):
يجب كتابة عنصر <style> فقط، لا style مضمَّن على documentElement، وإلا فسدت ألوان
الوضع الداكن.
ConfigProvider في كل مكتبة واجهة
Section titled “ConfigProvider في كل مكتبة واجهة”<!-- lh-ui-plus / lh-ui-vue2 --><lh-config-provider theme="cerblue"> <App /></lh-config-provider>تستقبل خاصية theme نوع LhThemePresetName، ويسير المكوّن داخليًا عبر منطق الحقن
أعلاه. وتمر صفحة تخصيص السمة في موقع docs وThemeStudio على LH_THEME_PRESETS لتسرد
جميع المسبقات تلقائيًا —— فلا حاجة لتعديل صفحات التوثيق في كل مكتبة بعد إضافة مسبقة.
مسبقة مخصصة
Section titled “مسبقة مخصصة”import { registerTheme, getThemePreset } from '@lh-ui/share/theme'
registerTheme({ name: 'my-brand', label: 'لون العلامة التجارية', labelEn: 'Brand', description: 'اللون الرئيسي للعلامة التجارية للشركة', vars: { '--lh-primary-color': '#722ED1', '--lh-primary-color-hover': '#9254DE', '--lh-primary-color-active': '#531DAB', '--lh-primary-color-bg': '#F9F0FF', '--lh-primary-color-border': '#D3ADF7', // وفي اللون الرئيسي الفاتح يجب إضافة المفتاحين: // '--lh-color-on-primary': '#101410', // '--lh-selected-color': '#..., },})
getThemePreset('my-brand') // تتوفر فور التسجيلدلالات registerTheme:
- الكتابة فوق الاسم نفسه: تكتب
registerTheme({ name: 'cerblue', ... })فوق 青花瓷 (الخزف الأزرق) الداخلية — وهذا مقصود، كي يستطيع جانب العمل ضبط السمة الافتراضية دون تعديل المكوّنات. - الأسماء الجديدة تُضاف إلى نهاية المصفوفة: ترتيب
LH_THEME_PRESETSهو «الخمس الداخلية + المُسجَّلة». - السجل حالة على مستوى الوحدة: يُشارَك بمجرد الاستيراد، نسخة واحدة للتطبيق كله.
تدفق إضافة مسبقة داخلية
Section titled “تدفق إضافة مسبقة داخلية”- أضِف
LhThemePresetفيsrc/theme/themes/index.ts(خمسة مفاتيح--lh-primary-*على الأقل؛ ويجب على المسبقة ذات اللون الرئيسي الفاتح توفير--lh-color-on-primaryو--lh-selected-colorإضافةً). - أضِفها إلى مصفوفة
LH_THEME_PRESETS، وأكمل الاسم في إعادة التصدير داخلsrc/theme/index.ts. - شغّل
pnpm test(يوجد فيtheme.specاختبار ارتجاع لاتساق المسبقات) +pnpm verify:theme(بوابة AA 4.5:1). - أرفق changeset؛ وستسرد صفحة تخصيص السمة في توثيق كل مكتبة المسبقة الجديدة تلقائيًا.
ملاحظة: لا تخدم vars إلا استهلاك JS في وقت التشغيل؛ أما اللون الرئيسي المستخدم في
SCSS المكوّنات فلا يزال في styles/theme/common/variables.scss —— وعند الكتابة فوق
اللون الرئيسي لسمة داخلية يجب تعديل المصدرين معًا (يوجد ارتجاع في theme.spec).
اتفاقيات التسمية
Section titled “اتفاقيات التسمية”قيمة النص للمسبقة (name: 'cerblue') هي قيمة يكتبها المستخدم في theme الخاص بـ
ConfigProvider، وتغييرها يكسر كل التكوينات في المستوى الأدنى — وهي إحدى بنود
تسجيل إعفاءات التسمية. أما معرّف TS المقابل
فلا يزال يحمل البادئة (LhCerblue).
ملاحظات
Section titled “ملاحظات”- تُعيد الأسماء غير المُسجَّلة
undefined: فلا يُطلِقgetThemePreset/getThemeVarsخطأً، فعلى طبقة واجهة المستخدم ألا تنسَ التحقق من القيمة الفارغة. --lh-primary-color-activeو--lh-selected-colorشيئان مختلفان: فالأول لون خلفية الزر عند الضغط، والثاني لون النص للقوائم / العناصر المحدَّدة. وفي المسبقات ذات اللون الرئيسي الفاتح لا يكفي تباين لون active كنص محدد، لذا يلزم--lh-selected-colorمستقل.- التفتيح التلقائي للوضع الداكن في المسبقات ذات اللون الرئيسي الداكن: يحكم
buildPresetDarkVarsعلى اللون الرئيسي بأنه داكن إذا كان تباينه مقابل خلفية الصفحة الداكنة#1A1A2Eأقل من 3 فيُفتَّح (لمزيد من التفاصيل انظر النظرة العامة على السمة).
وثائق ذات صلة
Section titled “وثائق ذات صلة”Copyright © 2024-2026 FengMo WenXue