تخطَّ إلى المحتوى

Notification

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

الإصدار 0.4.1 ·

الإشعار

التثبيت

bunx --bun shadcn@latest add @dga/notification

الاستخدام

page.tsx
tsx
import { Notification } from "@/components/ui/notification";

export function MaintenanceNotice() {
  return (
    <Notification
      variant="warning"
      title="تنبيه:"
      dismissible
      dismissLabel="تجاهل"
      action={<a href="/status">التفاصيل</a>}
    >
      ستتوقف البوابة للصيانة يوم الجمعة.
    </Notification>
  );
}

استخدم Notification في أعلى صفحة أو قسم لما يخصها كلها: صيانة مجدولة أو خدمة جديدة أو مشكلة في الحساب. ويبقى حتى يتجاهله الشخص أو يزول سببه. ولرسالة تخص نموذجًا أو بطاقة واحدة استخدم Inline Alert؛ وللحدث الذي وقع للتو استخدم Toast. أضف Notification عند انطباقه لا قبله: فالمنطقة الحية تُعلَن عند ظهور محتواها. وابدأه بـ title قصير بخط عريض («مهم:»).

البنية

  • الشريط (role="status" أو role="alert" لـ critical): بعرض كامل وحشوة 8 في 24px وانحناء radius-xs وحد سفلي بسمك 2px بلون النوع.
  • الأيقونة (اختيارية) والعنوان (نص افتتاحي بخط عريض) والرسالة.
  • الإجراء (رابط أو Button صغير) وزر الإغلاق، في جهة النهاية.

أمثلة

الأنواع

قيمة variant هي neutral أو info أو success أو warning أو critical. ولكل نوع تظليل 50 ونص وأيقونة بلونه. تجاهل أحدها لتراه يزول.

الأنواع

دون أيقونة ومُغلق

تزيل hideIcon أيقونة الحالة: ويبقى اللون والعنوان العريض حاملين للنوع. وبعد أن يغلق الشخص الإشعار تُستدعى onDismiss ولا يُعرض شيء مكانه، فاحتفظ بالحالة في الصفحة إن أردت إعادته.

دون أيقونة ومُغلق

RTL

الأيقونة على اليمين، والإجراء وزر الإغلاق على اليسار، ويبدأ النص من اليمين. ولا شيء يُعكس يدويًا.

LTR (الإنجليزية)
RTL (العربية)

إمكانية الوصول

المفتاحالإجراء
Tabينقل التركيز إلى الإجراء ثم إلى زر الإغلاق.
Enterيضغط الرابط أو الزر المركَّز.
Spaceيضغط الزر المركَّز.
  • منطقة حية: لـ critical الدور role="alert" ويقاطع؛ وغيره role="status" وينتظر فاصلًا. ولا يتحرك التركيز.
  • يظهر النوع من الأيقونة والنص الافتتاحي إضافة إلى اللون. والنص بنسبة 4.5:1 والأيقونات 3:1 أو أفضل على التظليل، فاتحًا وداكنًا.
  • لزر الإغلاق اسم (dismissLabel) وحد تركيز بسمك 2px. وتحتفظ الروابط في الرسالة بخطها السفلي.

مرجع API

Notification

شريط بعرض كامل لرسالة تخص الصفحة كلها (في DGA: Notification)، في أعلى الصفحة أو قسم منها. هو منطقة حية: تُعلَن `critical` فورًا (`role="alert"`) وغيرها بأدب (`role="status"`). أضفه عند انطباق الرسالة لا قبله ليُعلَن.

خصائص Notification
الخاصيةالنوعالقيمة الافتراضية
"neutral" | "critical" | "success" | "warning" | "info"

النوع: `neutral` أو `info` أو `success` أو `warning` أو `critical`.

"neutral"
string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<AwaitedReactNode>

نص افتتاحي بخط عريض قبل الرسالة، مثل «مهم:».

لا توجد قيمة افتراضية
boolean

يخفي أيقونة الحالة.

لا توجد قيمة افتراضية
string | number | bigint | boolean | ReactElement<unknown, string | JSXElementConstructor<any>> | Iterable<ReactNode> | ReactPortal | Promise<AwaitedReactNode>

رابط أو Button صغير بعد الرسالة.

لا توجد قيمة افتراضية
() => void

تُستدعى بعد إغلاق الإشعار.

لا توجد قيمة افتراضية
boolean

يعرض زر الإغلاق. يخفي الإشعار نفسه ثم يستدعي `onDismiss`.

لا توجد قيمة افتراضية
string

الاسم الذي يقرؤه قارئ الشاشة لزر الإغلاق. ترجمه في الصفحات العربية.

"Dismiss"

يقبل أيضًا خصائص العنصر الذي يُصيّره.

الاختلافات عن DGA

  • يلوّن Figma الأيقونة بـ icon-oncolor (أبيض) على تظليل 50: أي 1.0 إلى 1.1:1، فلا تُرى. وتستخدم الأيقونة لون أيقونة النوع.
  • يرسم CSS النجاح بأخضر العلامة بينما يستخدم Figma رموز النجاح؛ ويُعتمد Figma. وكل نوع يُعلَن بوصفه منطقة حية.
التغييرالسبب
Notification: the icon colourA white icon on a 50 tint is 1.0 to 1.1:1: it cannot be seen. The kinds should read as one set.
Notification, Inline Alert: live regionsA message that appears on its own must be announced without moving focus (WCAG 4.1.3). Urgent kinds interrupt; the rest wait.

عرض جميع الاختلافات (2) لهذا المكوّن أسباب الاختلافات مكتوبة بالإنجليزية.

التباين

80 زوجًا لونيًا فُحص · جميعها تجتاز WCAG 2.1 AAعرض 20 حالة
النمط / الحالةالفاتحالداكن
neutral / text9.73:1 AAA12.93:1 AAA
neutral / icon17.31:1 3:117.04:1 3:1
neutral / close icon17.31:1 3:117.04:1 3:1
neutral / focus ring17.31:1 3:118.77:1 3:1
info / text5.57:1 AA8.53:1 AAA
info / icon5.57:1 3:18.53:1 3:1
info / close icon16.83:1 3:113.69:1 3:1
info / focus ring16.83:1 3:115.09:1 3:1
success / text5.39:1 AA9.08:1 AAA
success / icon5.39:1 3:19.08:1 3:1
success / close icon17.15:1 3:113.34:1 3:1
success / focus ring17.15:1 3:114.70:1 3:1
warning / text5.20:1 AA9.75:1 AAA
warning / icon5.20:1 3:19.75:1 3:1
warning / close icon17.34:1 3:113.70:1 3:1
warning / focus ring17.34:1 3:115.09:1 3:1
critical / text6.04:1 AA7.94:1 AAA
critical / icon6.04:1 3:17.94:1 3:1
critical / close icon16.64:1 3:114.00:1 3:1
critical / focus ring16.64:1 3:115.42:1 3:1

يحتاج النص إلى تباين 4.5:1، والأيقونات وحلقات التركيز إلى 3:1. الحالات المعطّلة مستثناة. تقرير التباين الكامل