Visual Bellv1.0.0

نوار فشردهٔ تک‌خطی برای خبری کوتاه که کار کاربر را قطع نمی‌کند، مثل «فایل شما دریافت شد». رنگ معنا را می‌رساند، آیکونِ پر نوع را نشان می‌دهد و در صورت نیاز یک دکمهٔ کنش و دکمهٔ بستن در انتها می‌نشیند.

شبیه به این هم هست:NotificationAlertToast
ری‌اکت ۱۹ و 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/visual-bell.json
pnpm dlx digdesign@latest add https://docs.digdesign.ir/r/visual-bell.json
yarn dlx digdesign@latest add https://docs.digdesign.ir/r/visual-bell.json
bunx --bun digdesign@latest add https://docs.digdesign.ir/r/visual-bell.json

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

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

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

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

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

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

استفاده

import { VisualBell } from "@/components/ui/visual-bell"

<VisualBell color="warning" dismissible action={{ label: "بیشتر بدانید", onClick: openHelp }}>
  فایل مورد نظر یافت نشد.
</VisualBell>

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

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

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

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

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

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

ترکیب اجزا

نوار از چهار بخش پشت‌سرهم ساخته می‌شود: آیکون، متن، کنش و بستن. فقط متن الزامی است؛ بقیه با icon، action و dismissible روشن می‌شوند و هر بخش با خطِ جداکننده از قبلی جدا می‌ماند. کنش زمینهٔ تیره‌تر می‌گیرد تا دکمه بودنش دیده شود.

رنگ‌ها همان شش رنگ Alert هستند (default، primary، info، success، warning، destructive). جداکننده و زمینهٔ تیره‌تر از خودِ رنگ ساخته می‌شوند، پس با تغییر تم یا برند بی‌دردسر عوض می‌شوند. اگر خبر چند خط توضیح یا عنوان دارد، به‌جای نوار از Notification یا Alert استفاده کنید.

دسترس‌پذیری

  • نوار role=status دارد و صفحه‌خوان آن را بدون قطعِ کاربر می‌خواند؛ رنگِ destructive از role=alert استفاده می‌کند تا فوری اعلام شود.
  • رنگ تنها حاملِ معنا نیست؛ هر رنگ آیکونِ مخصوص خودش را دارد (اطلاع، تیک، مثلثِ هشدار، علامتِ خطا) و متن هم نوع را می‌گوید.
  • دکمه‌های کنش و بستن دکمهٔ واقعی‌اند و با Tab و Enter کار می‌کنند؛ دکمهٔ بستن برچسبِ «بستن» دارد و آیکون برای صفحه‌خوان پنهان است.
  • جفتِ رنگِ پس‌زمینه و متنِ هر رنگ از توکن‌های کنترل‌شدهٔ تم می‌آید و در هر دو تم روشن و تیره کنتراستِ خوانا دارد.

مرجع API

VisualBell

ویژگینوعپیش‌فرضتوضیح
color"default" | "primary" | "info" | "success" | "warning" | "destructive""default"رنگِ معنایی نوار؛ آیکونِ پیش‌فرض هم از روی آن انتخاب می‌شود.
radius"none" | "sm" | "md" | "lg" | "full""lg"گردیِ گوشه‌ها.
iconReact.ReactNode | false—آیکونِ ابتدای نوار؛ ندهید تا آیکونِ پرِ هم‌رنگ بیاید، false یعنی بدون آیکون.
action{ label: React.ReactNode; onClick?: (event) => void }—دکمهٔ کنش با زمینهٔ تیره‌تر بعد از متن.
dismissiblebooleanfalseدکمهٔ بستن را در انتها نشان می‌دهد و با کلیک نوار را از DOM برمی‌دارد.
open / defaultOpen / onOpenChangeboolean / boolean / (open: boolean) => voiddefaultOpen: trueنمایشِ کنترل‌شده یا کنترل‌نشده؛ onOpenChange هنگام بستن با false صدا زده می‌شود.
childrenReact.ReactNode—متنِ نوار؛ کوتاه و تک‌خط نگهش دارید.

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

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

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

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

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

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