المحتوى
جملة واحدة فقط. في حالة النجاح اذكر ما حدث، وفي حالة الفشل اذكر ما فشل بالإضافة إلى إجراء الاسترداد إن وُجد.
إشعار واحد في كل مرة
المكونات
تأكيد موجز لإجراء، نجاح أو فشل، يُعرض في موضع لا يحجب المحتوى أبدا.
يُستخدم الإشعار المؤقت لتأكيد موجز لإجراء، نجاحا كان أم فشلا. جملة واحدة كحد أقصى، ولا يُعرض أكثر من إشعار واحد في الوقت نفسه.
| الصيغة | متى تستخدمها |
|---|---|
| success | يؤكد نجاح إجراء، ويختفي تلقائيا بعد مدة قصيرة. |
| error | يوضّح فشل إجراء، ويبقى ظاهرا مع إجراء استرداد عند الإمكان. |
الخاصية الوحيدة الأساسية هي الصيغة. القيم المذكورة شاملة.
| الخاصية | النوع | الافتراضي |
|---|---|---|
| variant | success | error | success |
يعرّف الإشعار المؤقت حالتين: الافتراضية (النجاح) والخطأ.
الإشعار المؤقت عابر: يطفو فوق المحتوى دون أن يحجبه أو يوقف التفاعل معه، فيبقى المستخدم قادرا على متابعة عمله خلفه. تُعرض رسالة واحدة فقط في كل مرة، فإن تتالت الأحداث تُصفّ الرسائل في طابور وتظهر واحدة تلو الأخرى. إشعار النجاح يختفي تلقائيا بعد 4 إلى 5 ثوانٍ، بينما يبقى إشعار الخطأ ثابتا حتى يتصرّف المستخدم أو يضغط إجراء الاسترداد.
لا يحجب ولا يتطلّب قرارا
جملة واحدة فقط. في حالة النجاح اذكر ما حدث، وفي حالة الفشل اذكر ما فشل بالإضافة إلى إجراء الاسترداد إن وُجد.
إشعار واحد في كل مرة
الاتجاه هنا انعكاس صريح وليس منطقيا: على الويب يظهر الإشعار المؤقت أسفل يمين الشاشة في LTR، وأسفل يسارها في RTL. هذا موضع مطلق (bottom-right / bottom-left) وليس حشوا منطقيا (start/end) ينعكس تلقائيا مع المنصة، لذلك يجب عكسه صراحة في الكود عند التبديل إلى العربية بدل الاعتماد على الانعكاس التلقائي. على الجوال يبقى الموضع أسفل المنتصف (bottom-center) في الاتجاهين، فلا حاجة لأي عكس هناك.
| الدور | الرمز |
|---|---|
| لهجة النجاح | brand.success |
| لهجة الخطأ | brand.danger-out |
| السطح | brand.surface |
| النص | brand.text-default |
<Toast variant="success">تم إرسال الطلبية</Toast>
<Toast variant="error">فشل الإرسال. تحقق من اتصالك.</Toast>الإشعار المؤقت يُستورد من حزمة المكوّنات، ويُبنى على السطح المعكوس مع أيقونة حالة تونية من رمز دلالي. الاستخدام في React أولا، ثم قلب التطبيق.
import { Toast } from "@mercato/components";
<Toast variant="success">تم إرسال الطلبية</Toast>
<Toast variant="error">فشل الإرسال. تحقق من اتصالك.</Toast>// Status icon + its color per variant, from tokens.
const TOAST_ICON = {
success: { icon: "check_circle", color: "var(--brand-success)" },
error: { icon: "error", color: "var(--brand-danger-out)" },
};
const t = TOAST_ICON[variant];
// bg-ink / text-canvas keep the inverse surface pair token-driven.
<div role="status" className="inline-flex items-center gap-2 rounded-full bg-ink px-4 py-2.5 text-canvas shadow-lg">
<span className="material-symbol" style={{ color: t.color }}>{t.icon}</span>
<span className="truncate">{children}</span>
</div>السطح المعكوس والنص من رمزَي bg-ink وtext-canvas، لا من أبيض وأسود صريحين: الوضع الداكن وإعادة العلامة يسريان تلقائيا.
| الخطأ | ما يفسد | الصواب |
|---|---|---|
| إشعار مؤقت لتأكيد حاجب أو مدمّر | يمكن تفويته ولا يتطلّب قرارا متعمدا | استخدم نافذة الحوار Modal للتأكيدات المدمّرة |
| إشعار مؤقت لأخطاء التحقق من النموذج | يزول الخطأ بعيدا عن الحقل | خطأ داخل الحقل مباشرة |
| أكثر من إشعار في الوقت نفسه | يغرق المستخدم ويُقرأ الأخير فقط | إشعار واحد، وصفّ البقية في طابور |
| إشعار نجاح ثابت لا يختفي | يزحم الشاشة | أخفِ النجاح بعد 4 إلى 5 ثوانٍ وأبقِ الخطأ ثابتا |