Mercato

الرموز

الألوان

نظام لوني كامل من طبقتين: مدرجات أساسية خام، وطبقة دلالية قائمة على الأدوار تحكم كل قرار لوني، الخلفية والنص والحد والتركيز، في الوضعين الفاتح والداكن.

مبني على مدرجاتنا

طبقة دلالية قائمة على الأدوار موفّقة على مدرجات ميركاتو: التمييز والمعلومة على الأزرق، والإيجابي على الأخضر، والتنبيه على البرتقالي، والسلبي على الأحمر، والمحايد على الرمادي. كل رمز دلالي يشير إلى مدرج من مدرجاتنا، لا إلى قيمة ثابتة.

المعمار

طبقتان، والتغيير يتدفّق من الأعلى للأسفل. المدرجات الأساسية هي القيم الخام المنظّمة حسب الصبغة والدرجة. الطبقة الدلالية أسماء قائمة على الأدوار تشير إلى الأساسيات وتُحلّ لقيمة مختلفة في كل سمة. القاعدة الذهبية: المكوّنات تستخدم الرموز الدلالية فقط، لا الأساسيات مباشرة، ولا قيم ثابتة أبداً.

الطبقة ١

الرموز الأساسية

ست مدرجات (٦٦ درجة) + طبقات ألفا. قيم خام حسب الصبغة والدرجة.

الطبقة ٢

الرموز الدلالية

١٠٣ رمز في أربع مجموعات (خلفية، مقدمة، حد، تركيز)، تُحلّ لكل سمة.

المدرجات الأساسية

المادة الخام لكل عائلة لون، وما تشير إليه كل عائلة في الطبقة الدلالية. في الوضع الداكن تُعرض المدرجات بنسختها المهيّأة للخلفيات الداكنة. لا تستخدمها مباشرة في المنتج.

أزرق · الأساسيتمييز · معلومةcolor.dodger-blue
رمادي · محايدمحايدcolor.black-oud
أخضر · النجاحإيجابيcolor.apple
برتقالي · مخزون منخفضتنبيهcolor.blaze-orange
أحمر · نفد ومنتهٍسلبيcolor.red-ribbon
بنفسجي · متاحأساسي متاحcolor.purple

الطبقة الدلالية

الرموز الـ١٠٣ التي تبني بها، مجمّعة حسب الخاصية ثم الدور. كل صف يعرض قيمتَي الفاتح والداكن معاً، فتبني لأي سمة. المربّع الأول فاتح والثاني داكن. انقر أي رمز لنسخ متغيّره.

خلفية · أساسيسلّم عمق الأسطح من الصفحة إلى النافذة.
خلفية · دلالةحالة بتمييز منخفض (خفيف) أو عالٍ (قوي).
خلفية · إجراءحالات تعبئة الأزرار: أساسي/ثانوي/شبحي.
خلفية · حالة
مقدمة · أساسيتدرّج المحتوى القابل للقراءة.
مقدمة · دلالة
مقدمة · إجراء
حد · أساسي
حد · دلالة
حد · إجراء
حد · حالة
تركيز

طبقات الأسطح

ست درجات عمق تحدّد البنية العمودية لكل شاشة، من Canvas (الجذر) إلى Elevated (النوافذ). خطوات الإضاءة توحي بالارتفاع. الحاجب Overlay طبقة عمق لا سطح محتوى.

عائلات الدلالة

ست عائلات تحمل معنى ثابتاً عبر النظام. لكل عائلة سطح خفيف وسطح قوي ونص وحد. البنفسجي يبقى أساسياً متاحاً بلا دلالة مربوطة.

تمييزcolor.dodger-blue

هوية العلامة واللحظات التفاعلية المهمة.

خفيفقوي
إيجابيcolor.apple

النتائج الناجحة والتغذية الراجعة المطمئنة.

خفيفقوي
تنبيهcolor.blaze-orange

الحذر والانتباه المرتفع والمخاطر القابلة للاستدراك.

خفيفقوي
سلبيcolor.red-ribbon

النية المدمّرة والمشاكل الحرجة والفشل.

خفيفقوي
معلومةcolor.dodger-blue

الإرشاد المحايد وحالة النظام والتغذية الراجعة.

خفيفقوي

أدوار اللون

خمس فئات قائمة على الأدوار تحدّد كيف يُطبَّق كل رمز لوني.

الدورالغرضالقاعدة
خلفيةتحديد تسلسل الأسطح والتراكب البصري.أنشئ التسلسل دوماً عبر الارتفاع والتباين.
نصنقل تدرّج المحتوى والتأكيد الدلالي.يجب أن يحقّق القراءة والتباين في كل سمة.
حدفصل البنية وتحديد الحدود ودعم القابلية.يدعم البنية دون أن يصبح الإشارة البصرية الأساسية.
أيقونةتواصل بصري للإجراءات والحالة.تتوافق مع النص المجاور دون تأكيد متعارض.
تركيزالإشارة إلى تركيز لوحة المفاتيح وحالة الوصول.محصور برؤية التركيز، لا يُعاد استخدامه للزينة.

المبادئ

عشرة مبادئ حاكمة تفسّر القرارات خلف النظام.

01التسلسل الهرمي

وزن اللون يوجّه الانتباه عبر طبقات الواجهة. احجز أعلى تباين للمحتوى والإجراءات الأساسية.

02الدلالة المقصودة

كل صبغة تحمل معنى تواصلياً ثابتاً. استخدم ألوان الحالة لوظيفتها فقط، لا للزينة.

03التباين الميسّر

النص والعناصر التفاعلية تحقّق حدود التباين الدنيا. افحص كل زوج مقدمة/خلفية عند التصميم والبناء (WCAG AA).

04فصل الأدوار

العلامة والمحايد والحالة والبيانات لأغراض مميّزة لا تتداخل. لا تخلط فئات الأدوار في مكوّن واحد.

05وضوح الحالات

الحالات التفاعلية تُميّز بتغيّر لوني يحقّق التباين. لا تعتمد على اللون وحده لمؤشر التركيز.

06تكيّف السمة

الرموز الدلالية تحفظ معناها وتباينها عبر الفاتح والداكن. لا استخدام مباشر للأساسيات ولا قيم ثابتة.

07ضبط التشبّع

الألوان عالية التشبّع تميّز ولا تملأ الأسطح الكبيرة. احصرها في العناصر التفاعلية ومؤشرات الحالة.

08عمق الأسطح

خطوات الإضاءة توحي بالارتفاع دون الاعتماد على الظلال وحدها. استخدم خطوات الخلفية المتسلسلة.

09ثبات المعنى

دور الرمز الدلالي لا يتغيّر عبر السياقات. دقّق المكوّنات الجديدة على الأدوار القائمة قبل إضافة رموز.

10استقلال الإشارة

أي معلومة ينقلها اللون تُنقل أيضاً بالشكل أو النص أو الأيقونة. 8% من الذكور لديهم عمى ألوان.

مصفوفة الاقتران

ما يقبله كل سطح من مقدمة وحد وتركيز. اتبعها ليبقى كل زوج ميسّراً ومتّسق الدلالة.

أسطح محايدة أساسية (canvas / section / surface / raised / elevated)

كل رموز fg الأساسية والدلالية · كل حدود base والدلالية · focus.default و focus.negative.

bg.base.disabled

fg.base.disabled و border.base.disabled فقط. بلا حلقة تركيز.

bg.base.inverse

رموز inverse فقط: fg.inverse و border.inverse و focus.inverse (و focus.negative).

bg.base.overlay

لا اقترانات مباشرة. طبقة عمق لا سطح محتوى.

دلالة خفيفة (accent/positive/warning/negative/info · subtle)

fg الأساسي primary/secondary/tertiary + fg الدلالي المطابق · حدود base + الحد الدلالي المطابق · focus.default/negative.

دلالة قوية (accent/positive/negative/info · strong)

fg.base.on-color فقط · focus.inverse.

تنبيه قوي (warning.strong)

fg.base.on-tint فقط (أفتح من غيره) · focus.inverse.

اقترانات ممنوعة

تركيبات صريحة تكسر منطق الأدوار أو التماسك الدلالي أو التباين. لا تستخدمها أبداً.

الرمزعلىلماذا
fg.base.on-colorأسطح محايدة أو خفيفةon-color محجوز للتعبئات القوية؛ على المحايد يكسر الدور والوضوح.
fg.base.on-colorbg.intent.warning.strongالتنبيه القوي أفتح، يحتاج on-tint لا on-color.
fg.base.primary/secondary/tertiaryأسطح ملوّنة عالية التأكيدالتعبئات القوية تتطلّب مقدمات on-color.
fg.base.primary/secondary/tertiaryأسطح معكوسةالأسطح المعكوسة تتطلّب معالجة inverse.
border.base.subtle/medium/strongسياقات بنيوية معكوسةالأسطح المعكوسة تتطلّب حدود inverse.
fg.base.inverse / border.base.inverseأسطح فاتحة قياسيةرموز inverse تُنشئ انعكاساً زائفاً على القياسي.
border.base.subtleفصل بنيوي عالي التأكيدالحدود الخفيفة لا توفّر فصلاً كافياً.
border.intent.*تأطير بنيوي محايدحدود الدلالة إشارات لا فواصل بنيوية.
fg.intent.*محتوى قراءة طويل أو أيقونات افتراضيةرموز الدلالة لمّاحات؛ الإفراط يقلّل وضوح الإشارة.
أي رمز دلاليسطح بدلالة مختلفةالاقترانات متعارضة الدلالة تكسر التماسك.
محتوى قابل للقراءةbg.base.overlayالحاجب طبقة عمق لا سطح محتوى.
أي رمز معطّلسياقات فعّالة أو تفاعليةرموز المعطّل تعني عدم التوفّر لا خفض التأكيد.
focus.defaultأسطح ملوّنة عالية التأكيدقد يفشل التباين؛ استخدم focus.inverse.
focus.inverseأسطح فاتحة قياسيةيكسر اتساق التركيز على القياسي.

قواعد الاستخدام

افعل / تجنّب لكل فئة دور.

مقدمة أساسية

افعل · primary للمحتوى الأساسي، secondary/tertiary لخفض التأكيد تدريجياً.

تجنّب · الإشارة الدلالية، أو استبدال المعطّل بـ secondary/tertiary.

حد أساسي

افعل · التحكّم بالبروز في السياقات البنيوية المحايدة.

تجنّب · الحالة أو التحقّق أو الإشارة الدلالية.

مقدمة دلالية

افعل · على المستوى المضمّن للتغذية الراجعة ونص التحقّق والحالة.

تجنّب · المتن الطويل أو محتوى الصفحة أو الأيقونات الزخرفية.

حد دلالي

افعل · حين يجب أن ينقل الحد الحالة أو الشدّة أو التحقّق.

تجنّب · البنية المحايدة أو فصل التخطيط أو حدود التحكّم الافتراضية.

on-color

افعل · حين يجلس المحتوى مباشرة على سطح ملوّن عالي التأكيد.

تجنّب · الأسطح الخفيفة أو المحايدة أو warning.strong.

on-tint

افعل · حين يكون السطح فاتحاً بحيث لا يكفي on-color (warning.strong).

تجنّب · التعبئات الداكنة أو عالية التشبّع.

inverse

افعل · حين يكون المحيط معكوساً: حواجب داكنة، حاويات inverse مرتفعة.

تجنّب · الأسطح الفاتحة القياسية والنماذج الافتراضية.

معطّل

افعل · لكل التحكّمات غير المتوفّرة والأسطح غير التفاعلية.

تجنّب · التأكيد الثانوي أو خفض الوزن خارج حالات المعطّل.

تركيز

افعل · default للقياسي، inverse للداكن/القوي، negative للمدمّر.

تجنّب · الحدود الزخرفية أو تنسيق الاختيار الدائم أو مؤشرات التحويم.

الوصول

طبقة الألوان تحكم كل قرار لوني، والمخاطر الأساسية هي فشل التباين، وترميز المعلومة باللون وحده، ورؤية التركيز. الهدف WCAG 2.1 AA في الوضعين.

المعيارالمستوىلماذا ينطبق
1.4.1 · استخدام اللونAالدلالة لا تكون الوسيلة الوحيدة للمعلومة، اقرنها بأيقونة أو نص.
1.4.3 · التباين (الأدنى)AAكل رموز نص fg تحقّق 4.5:1 (أو 3:1 للنص الكبير).
1.4.11 · تباين غير النصAAحدود الدلالة والإجراء وحلقات التركيز تحقّق 3:1 مع خلفيتها.
2.4.7 · التركيز مرئيAAرموز focus مميّزة بصرياً على كل سياقات الخلفية.

استقلال الإشارة

كل إشارة حالة (نجاح، تنبيه، خطأ، معلومة) تُقرَن دائماً بأيقونة أو نص، لا باللون وحده. ثابت غير قابل للتفاوض: النص القوي يحتاج on-color، وwarning.strong يحتاج on-tint، والحاجب ليس سطح محتوى.

الشيفرة للمطوّرين

التسليم الأساسي لطبقة اللون هو متغيّرات CSS المخصّصة. المكوّنات تستهلك الرموز الدلالية فقط (bg، fg، border، focus)، ولا تلمس المدرّجات الأوّلية ولا قيم hex خام أبداً.

سلسلة المتغيّرات

المتغيّرات تُبنى على ثلاث طبقات: مدرّج أوّلي، ثم رمز أوّلي، ثم رمز دلالي يُحلّ حسب الوضع. المكوّنات تستهلك الطبقة الدلالية فقط.

عقد CSS
/* Tier 1 — primitive ramp (from @mercato/tokens) */
--color-dodger-blue-600: #1b79f5;
--color-dodger-blue-500: #3d8bf8;

/* Tier 2 — alpha overlay primitive (added by the color foundation) */
--color-alpha-black-200: rgba(0, 0, 0, 0.08);

/* Tier 3 — semantic role, resolved per mode; components consume THIS */
:root {
  --color-bg-action-accent-primary-default: var(--color-dodger-blue-600);
  --color-fg-action-accent-on-color: #ffffff;
  --color-focus-default: var(--color-dodger-blue-500);
}
:root[data-theme="dark"] {
  --color-bg-action-accent-primary-default: var(--color-dodger-blue-500);
  --color-focus-default: var(--color-dodger-blue-400);
}

جدول المرجع

الرمزمتغيّر CSSالقيمةالاستخدام
bg.action.accent.primary.default--color-bg-action-accent-primary-defaultblue-600 / blue-500تعبئة الزر الأساسي
fg.action.accent.on-color--color-fg-action-accent-on-color#ffffffالنص فوق التعبئة الملوّنة
bg.base.canvas--color-bg-base-canvas#ffffff / #15161bخلفية الصفحة، العمق 0
bg.base.section--color-bg-base-sectionoud-50 / #191a20سطح مجمّع داخل الصفحة
fg.base.primary--color-fg-base-primaryنص العلامة الأساسيالنص الأساسي
focus.default--color-focus-defaultblue-500 / blue-400حلقة التركيز

الاستخدام

مثال
.primary-button {
  background: var(--color-bg-action-accent-primary-default);
  color: var(--color-fg-action-accent-on-color);
}
.primary-button:focus-visible {
  outline: 2px solid var(--color-focus-default);
}
/* Dark mode needs no override here: the semantic tokens self-resolve
   under :root[data-theme="dark"]. */

أخطاء شائعة

الخطأما يفسدالصواب
#1b79f5لا يتبدّل مع الوضع الداكنvar(--color-bg-action-accent-primary-default)
استهلاك مدرّج أوّلي مباشرةيتجاوز الطبقة الدلاليةvar(--color-fg-base-primary)
لون على سطح حاجب كسطح محتوىيفشل تباين النصاستخدم bg.base.canvas أو section
الإشارة باللون وحدهيفشل الوصول للمكفوفين لونياًاقرن اللون بأيقونة أو نص

كيف تُستهلك

الرموز مصدرها واحد آلي القراءة (tokens.json في المهارة). حزمة @mercato/tokens تولّد منه: متغيّرات CSS (التسليم الأساسي)، وإعداد Tailwind جاهز، وكائن سمة مطبوع بـ TypeScript. أهداف المنصّات الأخرى (Style Dictionary وDTCG وiOS وAndroid وCompose) تتولّد من المصدر نفسه عند الطلب.

الاستيراد
// CSS variables (canonical) — import once at the app root
import "@mercato/tokens/css";

// Tailwind preset
// tailwind.config: { presets: [require("@mercato/tokens/tailwind")] }

// Typed theme object (JS/TS)
import { tokens } from "@mercato/tokens";