پرش به مطلب اصلی

NotificationBadge

کامپوننت NotificationBadge برای نمایش شمارنده‌ی اعلان روی یک عنصر استفاده می‌شود؛ مثل تعداد پیام‌های خوانده‌نشده روی آیکون زنگوله.

Import​

import { NotificationBadge } from "fara-ui";

اگر هنوز FaraUI را نصب و راه‌اندازی نکرده‌ای، ابتدا صفحه‌ی شروع به کار را ببین.

Basic Usage​

<NotificationBadge count={3}>
<Button variant="secondary">اعلان‌ها</Button>
</NotificationBadge>

Playground​

3
<NotificationBadge count={3} variant="danger">
<Button variant="secondary">اعلان‌ها</Button>
</NotificationBadge>

Variant​

  • danger — مناسب اعلان‌ها و موارد نیازمند توجه (قرمز)
  • primary — شمارنده‌های خنثی با رنگ اصلی برند

Displaying Zero​

به‌صورت پیش‌فرض وقتی count صفر یا undefined باشد نشانگر نمایش داده نمی‌شود. با showZero حالت صفر هم نمایش داده می‌شود — مثلاً برای صفحات سبد خرید که می‌خواهی همیشه وضعیت نمایش داده شود.

<NotificationBadge count={0} showZero variant="danger">
<Button aria-label="اعلان‌ها">🔔</Button>
</NotificationBadge>

مقادیر منفی نیز مانند صفر بدون showZero نمایش داده نمی‌شوند؛ برای شمارنده از عدد غیرمنفی استفاده کن.

Accessibility​

NotificationBadge خودش ارتباط معنایی اعلان با عنصر فرزند را ایجاد نمی‌کند. برای اینکه مقدار شمارنده برای screen reader قابل فهم باشد، روی فرزند یا wrapper مناسب aria-label، aria-describedby یا متن قابل دسترس قرار بده:

<NotificationBadge count={3} variant="danger">
<Button aria-label="اعلان‌ها، ۳ مورد خوانده‌نشده">🔔</Button>
</NotificationBadge>

شمارنده فقط نمایشی است و عنصر تعاملی نیست؛ action باید روی children مثل Button یا لینک قرار بگیرد.

Data Attributes and Customize CSS​

NotificationBadge hookهای زیر را تولید می‌کند:

Attributeکاربرد
data-fara-notification-badgewrapper اطراف children و شمارنده
data-fara-notification-badge-countشمارنده؛ فقط وقتی قابل نمایش باشد
data-variantvariant شمارنده: primary یا danger
[data-fara-notification-badge] {
margin-inline: 8px;
}

[data-fara-notification-badge-count][data-variant="danger"] {
min-width: 24px;
background: #dc2626;
}

در API فعلی برای wrapper یا count prop className وجود ندارد؛ برای سفارشی‌سازی از selectorهای data-* استفاده کن.

Props​

PropTypeDefaultDescription
childrenReactNode-عنصری که نشانگر روی آن قرار می‌گیرد (الزامی)
countnumber-تعداد اعلان‌ها
variant"primary" | "danger""primary"رنگ نشانگر
showZerobooleanfalseنمایش نشانگر وقتی count صفر است