المحتوى
الرقم دائما بالأرقام الغربية (الإنجليزية)، لا يُكتب بحروف ولا بالأرقام الهندية الشرقية. عند تجاوز العدد 99 يُعرض "+99" بدل الرقم الكامل.
لا تُخفِ العدد الحقيقي عن تقنية المساعدة
المكونات
حبة صغيرة تحمل عددا أو نصا قصيرا: عناصر غير مقروءة، طلبات معلّقة، أو وسم مثل "جديد". استخدم شارة الحالة بدلا منها لمفردات حالة الطلب والمنتج القياسية.
تعرض الشارة عددا قصيرا أو نصا قصيرا، مثل عدد العناصر الجديدة أو وسم "جديد". اختر الحالة حسب ما يمثله المحتوى، وقوة التأكيد حسب بروزه المطلوب على الشاشة.
| الحالة | الرمز الأساسي | متى تستخدمه | |
|---|---|---|---|
| default | color.black-oud.500 | عدد افتراضي أو غير نشط. | |
| info | brand.primary | عدد إعلامي عام، الاستخدام الافتراضي. | |
| success | brand.success | عدد يمثل نجاحا أو اكتمالا. | |
| warning | color.blaze-orange.600 | تحذير أقوى من شارة قلة المخزون. | |
| attention | color.purple.500 | بلا معنى دلالي محدد بعد، خصّصه لحالة واحدة متعمّدة فقط. | |
| critical | brand.critical-expired | عدد عاجل يستدعي انتباها فوريا. |
بالإضافة إلى الحالة، تتحكم ثلاث خصائص في المظهر: قوة التأكيد، والحجم، ونقطة الحالة الاختيارية.
| الخاصية | القيم | ملاحظة |
|---|---|---|
| strong | soft · strong | ناعم = تعبئة خفيفة بنص غامق. صلب = تعبئة كاملة بنص أبيض للتأكيد الأعلى. |
| size | small · large | صغير بارتفاع 20 بكسل، كبير بارتفاع 24 بكسل. |
| icon | on · off | أيقونة صغيرة تسبق الرقم عند التفعيل (تُعرض في فيغما كنقطة نائبة). |
خمس خصائص تحكم الشارة. القيم المذكورة شاملة.
| الخاصية | النوع | الافتراضي |
|---|---|---|
| status | default | info | success | warning | attention | critical | info |
| strong | boolean | false |
| size | small | large | small |
| icon | boolean | false |
| count | number | 0 |
تعرّف الشارة حالة واحدة فقط، الافتراضية. لا تحويم ولا تعطيل ولا تحميل، لأن الشارة ليست عنصرا تفاعليا وليست قابلة للنقر بشكل مستقل.
الشارة عنصر عرض غير تفاعلي: لا تركيز ولا تحويم ولا نقر بذاتها، فلا تحمل حلقة تركيز خاصة بها. حين توضع على عنصر قابل للنقر مثل أيقونة تنقّل أو زر، يخص التفاعل ذلك العنصر المضيف لا الشارة، وتتبع مساحة اللمس المضيف. تحديث العدد يجري فوريا دون حركة انتقال، ويُعلن العدد الجديد لتقنية المساعدة عبر تسمية العنصر المضيف.
الرقم دائما بالأرقام الغربية (الإنجليزية)، لا يُكتب بحروف ولا بالأرقام الهندية الشرقية. عند تجاوز العدد 99 يُعرض "+99" بدل الرقم الكامل.
لا تُخفِ العدد الحقيقي عن تقنية المساعدة
الاتجاه منطقي: النقطة الرائدة في صيغة الحلقة توضع عند بداية المحتوى منطقيا، فتنعكس تلقائيا بين العربية والإنجليزية دون أي تبديل يدوي بين اليسار واليمين. الأرقام نفسها تبقى بصيغتها الغربية وتُقرأ من اليسار إلى اليمين داخل الشارة، بصرف النظر عن اتجاه الشاشة.
| الدور | الرمز |
|---|---|
| محايد، تعبئة | color.black-oud.500 |
| محايد، خفيف | color.black-oud.100 |
| أزرق، تعبئة | brand.primary |
| أزرق، خفيف | color.dodger-blue.100 |
| أخضر، تعبئة | brand.success |
| أخضر، خفيف | color.apple.100 |
| برتقالي، تعبئة | color.blaze-orange.600 |
| برتقالي، خفيف | color.blaze-orange.200 |
| أحمر، تعبئة | brand.critical-expired |
| أحمر، خفيف | color.red-ribbon.100 |
| أرجواني، تعبئة | color.purple.500 |
| أرجواني، خفيف | color.purple.100 |
| الحشو الأفقي | space.200 |
| الفراغ بين النقطة والرقم | space.100 |
ملاحظة: تعبئة البرتقالي والمحايد في هذه الشارة أغمق درجة من الرمزين الدلاليين الأقرب (brand.warning-low-stock ومحايد الحالة brand.status-neutral)، وهذا مقصود حسب تصميم Figma النهائي، وليس خطأ.
الشارة تُستورد من حزمة المكوّنات، وتُنسّق بالكامل من الرموز الدلالية. الاستخدام في React أولا، ثم الجزء الجوهري من تنفيذها: خرائط الحالة الناعمة والصلبة، وكل واحدة تحمل زوج الوضع الفاتح والداكن معا.
import { Badge } from "@mercato/components";
<Badge status="info" content="12" />
<Badge status="critical" strong content="99+" />
<Badge status="success" size="large" icon content="4" />
<Badge status="warning" content="جديد" />// Tone by status, emphasis by `strong`. Soft is a tint fill with deep
// text; strong is a full-color fill. Each entry carries the light and
// dark pair, so dark mode flows through the same class.
const SOFT = {
info: "bg-dodger-blue-50 text-dodger-blue-600 dark:bg-dodger-blue-950 dark:text-dodger-blue-300",
success: "bg-apple-100 text-apple-700 dark:bg-apple-950 dark:text-apple-300",
critical: "bg-red-ribbon-100 text-red-ribbon-600 dark:bg-red-ribbon-950 dark:text-red-ribbon-300",
// ...default / warning / attention
};
const SOLID = { info: "bg-primary text-primary-on", critical: "bg-red-ribbon-600 text-white" /* ... */ };
const tone = strong ? SOLID[status] : SOFT[status];
// Cap a pure numeric count at 99+; text content is shown as-is.
const label = /^\d+$/.test(content) && Number(content) > 99 ? "99+" : content;
<span className={`inline-flex items-center justify-center rounded-full font-bold leading-none ${sz} ${tone}`}>
{label}
</span>لا تحمل الشارة قيمة لون خام: كل حالة تحمل زوج الفاتح والداكن معا، فتبديل الوضع الداكن أو إعادة العلامة يسري تلقائيا.
| الخطأ | ما يفسد | الصواب |
|---|---|---|
| لون سداسي ثابت للتعبئة | يكسر الوضع الداكن وإعادة العلامة | bg-primary / dark:bg-... |
| تلوين بلا زوج dark: | تختفي الشارة في الوضع الداكن | أضف صيغة dark: لكل حالة |
| عرض شارة بعدد صفر | ضجيج بصري بلا معلومة | أخفِ الشارة بدل عرض "0" |
| استخدام الشارة لكلمة حالة | يخلط مفردات الحالة القياسية | استخدم شارة الحالة (StatusBadge) |