التثبيت
npx sdaia-ui@latest add toast
الاستخدام
import { Toast, ToastProvider, useToast } from '@/components/ui/Toast';1<Toast2type="success"3title="تم حفظ التغييرات"4message="تم حفظ التغييرات الخاصة بك بنجاح."5actionLabel="تراجع"6onAction={undo}7onClose={() => setOpen(false)}8labels={{ close: "إغلاق" }}9/>
1const toast = useToast();2toast.show({ type: "success", title: "تم حفظ السجل", actionLabel: "تراجع", onAction: undo });
أمثلة
الافتراضي
عنوان ورسالة وإجراء واحد وزر الإغلاق. يُغلق الإشعار نفسه بعد خمس ثوانٍ، ويتوقف المؤقت عند تمرير المؤشر أو التركيز عليه.
جارٍ تحميل العرض التوضيحي: toast-default
الأنواع
خمسة أنواع يجمع كل منها بين لون وأيقونة لتتضح النتيجة بنظرة.
جارٍ تحميل العرض التوضيحي: toast-types
محايد
معلومة عامة ليست خبراً جيداً أو سيئاً.
جارٍ تحميل العرض التوضيحي: toast-neutral
معلومات
سياق مفيد عمّا يفعله النظام.
جارٍ تحميل العرض التوضيحي: toast-info
نجاح
اكتمل الإجراء كما هو متوقع.
جارٍ تحميل العرض التوضيحي: toast-success
تحذير
نجح الإجراء لكنه يحتاج إلى انتباه.
جارٍ تحميل العرض التوضيحي: toast-warning
خطأ
فشل الإجراء. أرفقه بإجراء لإعادة المحاولة. يبقى إشعار الخطأ حتى يغلقه المستخدم.
جارٍ تحميل العرض التوضيحي: toast-error
العنوان فقط
الرسالة والإجراء اختياريان.
جارٍ تحميل العرض التوضيحي: toast-title-only
ToastProvider و useToast
اعرض الإشعارات من أي مكان داخل المزوّد. تظهر في الزاوية السفلية عند نهاية الشاشة، واحداً تلو الآخر؛ ينتظر الإشعار التالي حتى يُغلق الحالي.
جارٍ تحميل العرض التوضيحي: toast-provider
العربية (من اليمين إلى اليسار)
ينعكس التخطيط ويُقرأ من اليمين إلى اليسار.
جارٍ تحميل العرض التوضيحي: toast-rtl
متى تستخدمه
استخدم الإشعار المنبثق لـ:
- تأكيد الحفظ أو الحذف أو الإرسال
- إتاحة تراجع سريع بعد إجراء
- الإبلاغ عن انتهاء مهمة في الخلفية
- تحديثات الحالة منخفضة الأهمية
لا تستخدمه لـ:
- الأخطاء التي تمنع إكمال المهمة: استخدم تنبيهاً داخل الصفحة
- الرسائل التي تتطلب قراراً: استخدم نافذة حوار
- المحتوى الطويل أو المفصّل
- عرض عدة إشعارات فوق بعضها في وقت واحد
أفضل الممارسات
- اجعل الرسالة قصيرة: قل ما حدث في جملة واحدة، فالإشعار يُغلق بعد نحو خمس ثوانٍ.
- طابق النوع مع الرسالة: النجاح للإجراءات المكتملة، والتحذير لما يحتاج إلى مراجعة، والخطأ للإخفاق.
- امنح المستخدم التحكم: أتِح إجراءً واحداً مثل التراجع وأبقِ زر الإغلاق متاحاً.
الخصائص
Toast
الخاصية | النوع | القيمة الافتراضية | مطلوبة |
|---|---|---|---|
type | "neutral" | "info" | "success" | "warning" | "error" | "neutral" | اختيارية |
title | ReactNode | — | مطلوبة |
message | ReactNode | — | اختيارية |
actionLabel | ReactNode | — | اختيارية |
onAction | (event) => void | — | اختيارية |
actionHref | string | — | اختيارية |
closeButton | boolean | true | اختيارية |
onClose | (reason: "timeout" | "close-button" | "escape" | "action") => void | — | اختيارية |
duration | number | null | 5000 | اختيارية |
dir | "ltr" | "rtl" | — | اختيارية |
labels | { close?: string } | { close: "Close" } | اختيارية |
ToastProvider
الخاصية | النوع | القيمة الافتراضية | مطلوبة |
|---|---|---|---|
placement | "top-start" | "top-center" | "top-end" | "bottom-start" | "bottom-center" | "bottom-end" | "bottom-end" | اختيارية |
limit | number | 1 | اختيارية |
hotkey | string | null | "F8" | اختيارية |
dir | "ltr" | "rtl" | — | اختيارية |
labels | { region?: string; close?: string } | { region: "Notifications", close: "Close" } | اختيارية |
useToast()
الخاصية | النوع | القيمة الافتراضية | مطلوبة |
|---|---|---|---|
show | (options: ToastProps & { id?: string }) => string | — | اختيارية |
dismiss | (id?: string) => void | — | اختيارية |
إمكانية الوصول
- تُعلَن إشعارات المحايد والمعلومات والنجاح والتحذير بهدوء (role="status")، وتُعلَن إشعارات الخطأ فوراً (role="alert"). يُقرأ العنوان والرسالة فقط.
- لا يأخذ الإشعار التركيز أبداً. يصل مفتاح Tab إلى الإجراء وزر الإغلاق، ومع ToastProvider ينقل المفتاح F8 التركيز إلى الإشعارات.
- يُغلق مفتاح Escape الإشعار الذي عليه التركيز، ويعود التركيز إلى حيث كان المستخدم.
- لا تقل المدة عن خمس ثوانٍ، ويتوقف المؤقت عند تمرير المؤشر أو التركيز أو إخفاء الصفحة. إشعارات الخطأ لا تُغلق نفسها.
- اسم زر الإغلاق «Close» قابل للترجمة، وحجمه 32 × 32 بكسل. يظهر النوع بالأيقونة والعنوان وليس باللون وحده.
السلوك المتجاوب
- أقصى عرض للإشعار 420 بكسل ويتقلص ليناسب شاشة الهاتف؛ تلتف الرسائل الطويلة ويزداد ارتفاع الإشعار.
- يحافظ ToastProvider على مسافة 16 بكسل من حواف الشاشة في كل العروض.
- تتبع أحجام النصوص والمسافات والأيقونات الرموز المتجاوبة العامة.