Announcement Barv1.0.0

نواری تمام‌عرض که بالای صفحه (یا بالای هدر) می‌نشیند و یک پیام واحد و سطح‌سایت را اعلان می‌کند: تخفیف، معرفی قابلیت تازه، یا یک هشدار زمان‌بندی‌شده. برخلاف Alert که کنار محتوا و برای یک بخش خاص است، این نوار مالِ کل صفحه است.

ری‌اکت ۱۹ و Next.js با پیاده‌سازی دسترس‌پذیری داخلی دیگویو ۳ با Composition API — هنوز برای این کامپوننت پورت نشدهSvelte ۵ با runes — هنوز برای این کامپوننت پورت نشدهانگولار با signals و دایرکتیوهای standalone — هنوز برای این کامپوننت پورت نشده

این کامپوننت فعلاً برای ۱ فریم‌ورک از ۴ فریم‌ورک آماده است.

نسخهٔ تازهٔ دیگ منتشر شد.مشاهدهٔ تغییرات

این نمونه هنوز برای Vue پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Svelte پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

این نمونه هنوز برای Angular پورت نشده است؛ آنچه می‌بینید نسخهٔ ری‌اکت است.

نصب

با CLI اختصاصی digdesign کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگی‌ها و فایل‌ها خودکار اضافه می‌شوند.

پکیج‌منیجر پیش‌فرض Node.jsنصب سریع با لینک سخت و دیسک مشترکYarn نسخهٔ ۲ به بالا (Berry)رانتایم و پکیج‌منیجر Bun
npx digdesign@latest add https://docs.digdesign.ir/r/announcement-bar.json
pnpm dlx digdesign@latest add https://docs.digdesign.ir/r/announcement-bar.json
yarn dlx digdesign@latest add https://docs.digdesign.ir/r/announcement-bar.json
bunx --bun digdesign@latest add https://docs.digdesign.ir/r/announcement-bar.json

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

استفاده

import {
  AnnouncementBar,
  AnnouncementBarIcon,
  AnnouncementBarTitle,
  AnnouncementBarAction,
} from "@/components/ui/announcement-bar"

<AnnouncementBar color="primary" dismissible>
  <AnnouncementBarTitle>پیام شما اینجا.</AnnouncementBarTitle>
  <AnnouncementBarAction href="#">بیشتر بدانید</AnnouncementBarAction>
</AnnouncementBar>

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

ترکیب اجزا

AnnouncementBar یک ردیفِ وسط‌چینِ افقی است؛ آیکون، عنوان و اقدام هرکدام اختیاری‌اند و کنار هم قرار می‌گیرند (نه یک گرید دوستونه مثل Alert، چون این نوار باریک و تک‌خطی طراحی شده).

رنگ با همان الگوی دو‌محوریِ Button/Alert/Badge کار می‌کند: محور color چهار متغیر CSS را ست می‌کند و محور variant تصمیم می‌گیرد کجا بنشینند — solid برای پس‌زمینهٔ توپرِ رنگی (پرتوجه‌ترین حالت، مناسب کمپین) و flat برای پس‌زمینهٔ ملایم‌ترِ کمتر مزاحم.

برای چسبیدن به بالای صفحه هنگام اسکرول، sticky بدهید؛ چون از position: sticky استفاده می‌کند (نه fixed)، المان‌های بعدی صفحه فضایش را می‌گیرند و چیدمان جابه‌جا نمی‌شود.

دسترس‌پذیری

  • اگر پیام واقعاً فوری/تراکنشی است (مثلاً قطعی سرویس)، رنگ warning یا destructive با variant="solid" کنتراست کافی برای جلب توجه دارد.
  • دکمهٔ بستن aria-label="بستن اعلان" دارد؛ اگر متن دیگری لازم دارید، dismissible را کنار بگذارید و دکمهٔ بستن دستی داخل نوار قرار دهید.
  • AnnouncementBarAction یک تگ a معمولی است؛ href واقعی بدهید تا با کیبورد و صفحه‌خوان مثل هر لینک دیگری کار کند.

مرجع API

ویژگینوعپیش‌فرضتوضیح
variant"solid" | "flat""solid"حالت بصری؛ تعیین می‌کند رنگ کجا بنشیند.
color"default" | "primary" | "info" | "success" | "warning" | "destructive""primary"رنگ معنایی، مستقل از variant.
stickybooleanfalseچسباندن نوار به بالای صفحه هنگام اسکرول.
dismissiblebooleanfalseدکمهٔ بستن را نشان می‌دهد.
open / defaultOpen / onOpenChangeboolean / boolean / (open: boolean) => void—الگوی کنترل‌شده/کنترل‌نشدهٔ نمایش، مثل Alert.

این کامپوننت هنوز برای Vue پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Svelte پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.

این کامپوننت هنوز برای Angular پورت نشده است.

نسخهٔ ری‌اکت آماده است؛ پورت این فریم‌ورک در دست کار است.