Toast
اعلان کوتاهی که گوشهٔ صفحه ظاهر میشود و خودش میرود؛ برای تأیید یک عمل، گزارش خطا یا دادن فرصت «بازگرداندن». یک Toaster در ریشهٔ اپ بگذارید و بعد هرجا لازم شد toast() را صدا بزنید.
این کامپوننت فعلاً برای ۱ فریمورک از ۴ فریمورک آماده است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
نصب
با CLI اختصاصی dig-ui کامپوننت را از رجیستری دیگ نصب کنید؛ وابستگیها و فایلها خودکار اضافه میشوند.
pnpm dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/toast.jsonnpx dig-ui@latest add https://design-system-tau-green.vercel.app/r/toast.jsonyarn dlx dig-ui@latest add https://design-system-tau-green.vercel.app/r/toast.jsonbunx --bun dig-ui@latest add https://design-system-tau-green.vercel.app/r/toast.jsonاین کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
استفاده
// ۱) یک بار در ریشهٔ اپ (app/layout.tsx)
import { Toaster } from "@/components/ui/toast"
<body>
{children}
<Toaster />
</body>
// ۲) هرجا لازم شد
"use client"
import { toast } from "@/components/ui/toast"
toast.success("تغییرات ذخیره شد.")این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
ترکیب اجزا
دسترسپذیری
- هر اعلان با نقش status (و alert برای خطا) ساخته میشود تا متن تازه به صفحهخوان اعلام شود، بدون اینکه فوکوس را بدزدد.
- برای اعلانی که دکمهٔ اقدام دارد مدت را بلندتر بگذارید یا duration: Infinity بدهید؛ کاربر صفحهکلید باید فرصت رسیدن به دکمه را داشته باشد.
- پیام خطای مهم را فقط با توست نگویید؛ خطای فرم باید کنار خود فیلد هم دیده شود.
- اعلانها را کوتاه بنویسید؛ متن بلند در چند ثانیه خوانده نمیشود.
- Toaster را یک بار و در ریشه بگذارید؛ چند Toaster یعنی چند ناحیهٔ اعلام و پیامهای تکراری برای صفحهخوان.
مرجع API
Toaster
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| position | "top-left" | "top-center" | "top-right" | "bottom-left" | "bottom-center" | "bottom-right" | "bottom-left" | گوشهٔ نمایش. پیشفرض برای راستبهچپ پایین چپ است. |
| dir | "rtl" | "ltr" | "rtl" | جهت متن اعلانها. |
| theme | "light" | "dark" | "system" | — | از next-themes خوانده میشود؛ معمولاً دست نزنید. |
| richColors | boolean | false | رنگ پررنگتر برای حالتهای موفق و خطا؛ با توکنهای دیگ هم کار میکند. |
| closeButton | boolean | false | افزودن دکمهٔ بستن به هر اعلان. |
toast()
| ویژگی | نوع | پیشفرض | توضیح |
|---|---|---|---|
| toast(message, options) | (message: ReactNode, options?) => string | number | — | اعلان ساده؛ شناسهٔ اعلان را برمیگرداند. |
| toast.success / error / warning / info | (message, options?) | — | همان اعلان با آیکون و رنگ حالت. |
| toast.promise | (promise, { loading, success, error }) | — | اعلانی که با نتیجهٔ Promise بهروزرسانی میشود. |
| toast.dismiss | (id?: string | number) => void | — | بستن یک اعلان یا همهٔ اعلانها. |
| options.duration | number | 4000 | مدت ماندن بر حسب میلیثانیه؛ Infinity یعنی تا بسته شدن دستی. |
| options.action | { label: string; onClick: () => void } | — | دکمهٔ اقدام داخل اعلان. |
این کامپوننت هنوز برای Vue پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Reka UI در دست کار است.
این کامپوننت هنوز برای Svelte پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Bits UI در دست کار است.
این کامپوننت هنوز برای Angular پورت نشده است.
نسخهٔ ریاکت آماده است؛ پورت این فریمورک روی Angular CDK در دست کار است.
نمونهها
Variants
چهار حالت آماده: موفق، خطا، هشدار و اطلاع. رنگ موفق و خطا از توکنهای success و destructive میآید.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
With Description
خط دوم برای جزئیاتی که در عنوان جا نمیشود.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
With Action
الگوی «بازگرداندن»: بهجای پرسیدن تأیید پیش از حذف، عمل را انجام دهید و راه برگشت بدهید.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
Promise
یک اعلان که سه حالت دارد: در حال انجام، موفق و ناموفق. برای ذخیره یا آپلود مناسب است.
این نمونه هنوز برای Vue پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Svelte پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
این نمونه هنوز برای Angular پورت نشده است؛ آنچه میبینید نسخهٔ ریاکت است.
کدام نمونه برای کدام موقعیت
| نمونه | کجا به کار میآید |
|---|---|
| Variants | چهار حالت آماده: موفق، خطا، هشدار و اطلاع |
| With Description | خط دوم برای جزئیاتی که در عنوان جا نمیشود. |
| With Action | الگوی «بازگرداندن»: بهجای پرسیدن تأیید پیش از حذف، عمل را انجام دهید و راه برگشت بدهید. |
| Promise | یک اعلان که سه حالت دارد: در حال انجام، موفق و ناموفق |
دستورالعمل استفاده
پیام کوتاه و یکخطی
انجام بده
اعلان چند ثانیه بیشتر روی صفحه نمیماند؛ نتیجه را در یک جملهٔ کوتاه بگویید تا کاربر فرصت خواندنش را داشته باشد.
انجام نده
متن بلند تا بسته شدن اعلان خوانده نمیشود؛ توضیح مفصل جایش داخل خود صفحه است، نه توست.
مهلت کافی برای دکمهٔ اقدام
انجام بده
اعلانی که دکمهٔ «بازگرداندن» دارد باید دستکم چند ثانیه بماند؛ کاربر صفحهکلید هم باید فرصت رسیدن به دکمه را داشته باشد.
انجام نده
مهلت خیلی کوتاه یعنی دکمهٔ اقدام عملاً وجود ندارد؛ پیش از اینکه کاربر برسد، اعلان رفته است.
خطای فرم کنار خود فیلد
قالب ایمیل درست نیست.
انجام بده
خطای اعتبارسنجی را کنار همان ورودی نشان دهید تا ماندگار و قابلبازگشت باشد؛ توست برای بازخورد گذرا است، نه خطای فرم.
انجام نده
اگر تنها نشانهٔ خطا یک توست باشد، بعد از رفتنش کاربر نمیداند کدام فیلد ایراد داشت و باید دوباره ارسال کند تا بفهمد.