پرتوپرتو

اعلان (Sonner)

سیستم toast برای نمایش اعلان‌های موقت

معرفی

کامپوننت Sonner (Toaster) برای نمایش اعلان‌های موقت و پیام‌های سیستمی استفاده می‌شود.

نصب

ابتدا Toaster را در layout اصلی خود اضافه کنید:

import { Toaster } from '@parto/ui';

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        {children}
        <Toaster />
      </body>
    </html>
  );
}

استفاده

import { toast } from 'sonner';

// toast ساده
toast('پیام شما اینجاست');

// toast موفقیت
toast.success('عملیات موفقیت‌آمیز بود');

// toast خطا
toast.error('خطایی رخ داد');

// toast هشدار
toast.warning('این یک هشدار است');

// toast اطلاعات
toast.info('اطلاعاتی برای شما');

با توضیحات

toast('رویداد برنامه‌ریزی شد', {
  description: 'جلسه شما برای فردا ساعت ۱۰ صبح برنامه‌ریزی شده است',
});

با دکمه Action

toast('آیا مطمئن هستید؟', {
  action: {
    label: 'بازگشت',
    onClick: () => console.log('بازگشت'),
  },
});

Promise Toast

toast.promise(
  fetch('/api/data'),
  {
    loading: 'در حال بارگذاری...',
    success: 'داده‌ها بارگذاری شد',
    error: 'خطا در بارگذاری',
  }
);

با مدت زمان سفارشی

toast('این پیام ۱۰ ثانیه نمایش داده می‌شود', {
  duration: 10000,
});

Dismissible

// قابل بستن (پیش‌فرض)
toast('پیام قابل بستن');

// غیرقابل بستن
toast('پیام مهم', {
  dismissible: false,
});

موقعیت

<Toaster position="top-center" />
<Toaster position="top-right" />
<Toaster position="bottom-center" />
<Toaster position="bottom-right" />

با آیکون سفارشی

toast('پیام سفارشی', {
  icon: <Icons.star className="w-4 h-4" />,
});

حذف Toast

const toastId = toast('پیام');

// حذف toast خاص
toast.dismiss(toastId);

// حذف همه
toast.dismiss();

Props

Toaster

PropTypeDefaultتوضیحات
position'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right''bottom-right'موقعیت نمایش
expandbooleanfalseباز شدن با hover
richColorsbooleanfalseرنگ‌های پررنگ‌تر
closeButtonbooleanfalseدکمه بستن

toast options

OptionTypeتوضیحات
descriptionstringتوضیحات اضافی
durationnumberمدت نمایش (ms)
action{ label, onClick }دکمه عمل
dismissiblebooleanقابل بستن
iconReactNodeآیکون سفارشی
onDismiss() => voidcallback بستن
onAutoClose() => voidcallback بستن خودکار

انواع

  • toast() - پیام عادی
  • toast.success() - موفقیت
  • toast.error() - خطا
  • toast.warning() - هشدار
  • toast.info() - اطلاعات
  • toast.promise() - با promise
  • toast.loading() - لودینگ
  • toast.custom() - سفارشی

ویژگی‌ها

  • انیمیشن‌های نرم
  • پشتیبانی از Promise
  • قابل بستن با swipe
  • تم روشن/تاریک خودکار
  • آیکون‌های از پیش تعریف شده
  • صف مدیریت شده
  • سازگار با RTL