پیام متنی (Callout)

بلوک اطلاع‌رسانی برای نمایش پیام‌های اطلاعاتی، هشدار، خطا و موفقیت

معرفی

کامپوننت Callout برای نمایش پیام‌های متنی در سطح صفحه استفاده می‌شود. برخلاف Alert که بیشتر برای هشدارهای کوتاه است، Callout برای بلوک‌های اطلاعاتی بزرگ‌تر با عنوان و توضیحات مناسب است.

چه زمانی استفاده نکنیم:

  • برای اعلان‌های گذرا (transient) — از Sonner (toast) استفاده کنید
  • برای خطاهای داخل فرم — از FormMessage استفاده کنید
  • برای پیام بالای کل صفحه (نه درون محتوا) — از Banner استفاده کنید
اطلاع:

راهنما

برای مشاهده گزارش کامل اینفلوئنسرها، فیلترهای مورد نظر خود را اعمال کنید.

موفقیت:

عملیات موفق

گزارش تحلیل احساسات ساخته شد.

یادداشت:

یادداشت

این بخش در نسخه آزمایشی است و ممکن است تغییر کند.

Alert در 5.0 حذف شد

کد قدیمی Alert را npx --no parto-migrate-v5 به Callout تبدیل می‌کند: variant="default" ← neutral، AlertTitle/AlertDescription ← CalloutTitle/CalloutDescription.

زمین بازی

با تغییر تنظیمات زیر، پیش‌نمایش زنده را مشاهده کنید.

زمین بازی
اطلاع:
این یک یادآوری مهم برای کاربران است.
تنظیمات
ظاهر
محتوا
import { Callout } from '@partodata/ui'

<Callout>
  این یک یادآوری مهم برای کاربران است.
</Callout>

استفاده

import { Callout, CalloutTitle, CalloutDescription } from '@partodata/ui'
<Callout>
  <CalloutTitle>توجه</CalloutTitle>
  <CalloutDescription>این یک پیام اطلاعاتی است.</CalloutDescription>
</Callout>

مثال‌ها

انواع مختلف

<div className="flex flex-col gap-4">
  <Callout variant="info">
    <CalloutTitle>اطلاعات</CalloutTitle>
    <CalloutDescription>این قابلیت به‌زودی فعال خواهد شد.</CalloutDescription>
  </Callout>

  <Callout variant="warning">
    <CalloutTitle>هشدار</CalloutTitle>
    <CalloutDescription>اعتبار حساب شما رو به اتمام است.</CalloutDescription>
  </Callout>

  <Callout variant="destructive">
    <CalloutTitle>خطا</CalloutTitle>
    <CalloutDescription>ارتباط با سرور قطع شده است.</CalloutDescription>
  </Callout>

  <Callout variant="success">
    <CalloutTitle>موفقیت</CalloutTitle>
    <CalloutDescription>تغییرات ذخیره شد.</CalloutDescription>
  </Callout>

  <Callout variant="neutral">
    <CalloutTitle>یادداشت</CalloutTitle>
    <CalloutDescription>این بخش در حال بروزرسانی است.</CalloutDescription>
  </Callout>
</div>

بدون آیکون

<Callout variant="info" icon={null}>
  این پیام بدون آیکون نمایش داده می‌شود.
</Callout>

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

import { RocketIcon } from 'lucide-react'
;<Callout variant="info" icon={<RocketIcon className="size-5" />}>
  <CalloutTitle>قابلیت جدید</CalloutTitle>
  <CalloutDescription>نسخه جدید با امکانات بیشتر منتشر شد.</CalloutDescription>
</Callout>

متن ساده بدون عنوان

<Callout variant="warning">پیش از خروج، تغییرات را ذخیره کنید.</Callout>

با اقدامات (actions)

با prop actions می‌توانید دکمه یا لینک را کنار/زیر محتوای Callout بگذارید. با layout چیدمان آن را کنترل کنید.

import { Callout, Button } from '@partodata/ui'

// اقدامات زیر محتوا (پیش‌فرض)
;<Callout variant="info" actions={<Button size="sm">تنظیم دسترسی</Button>}>
  برای مشاهدهٔ داده‌های این کمپین به دسترسی بیشتری نیاز دارید.
</Callout>

// اقدامات در همان ردیف محتوا
;<Callout
  variant="warning"
  layout="horizontal"
  actions={
    <Button size="sm" variant="outline">
      تمدید
    </Button>
  }
>
  سهمیهٔ این ماه رو به پایان است.
</Callout>

// پشته در عرض کم، کنار هم در عرض زیاد
;<Callout variant="neutral" layout="responsive" actions={<Button size="sm">مشاهده</Button>}>
  گزارش جدیدی برای این کمپین آماده شده است.
</Callout>

Props

Callout

Prop

Type

CalloutTitle

Prop

Type

CalloutDescription

Prop

Type

دسترسی‌پذیری

  • حالت‌های destructive و warning دارای role="alert" هستند؛ live این را برای هر حالتی تعیین می‌کند (live={false} ← role="note")
  • سایر حالت‌ها دارای role="note" هستند
  • آیکون‌ها دارای aria-hidden="true" هستند
  • نوع پیام («هشدار»، «خطا»، «اطلاع»، «موفقیت»، «یادداشت») به‌صورت متن sr-only در ابتدای بلوک درج می‌شود، تا تفاوت warning و destructive تنها با رنگ و آیکون منتقل نشود. این متن داخل ناحیه‌ی زنده قرار دارد، بنابراین هم در خواندن عادی و هم هنگام اعلام role="alert" شنیده می‌شود
  • زبان این برچسب با prop locale تعیین می‌شود (پیش‌فرض fa)
  • aria-label روی کامپوننت، نام دسترس‌پذیرِ بلوک را تعیین می‌کند؛ برچسب sr-only همچنان بخشی از محتوای خوانده‌شده باقی می‌ماند

راهنمای استفاده

بکنید

  • از Callout برای بلوک‌های اطلاعاتی که کاربر باید قبل از ادامه بخواند استفاده کنید - variant مناسب را انتخاب کنید — info برای اطلاعات، warning برای هشدار، destructive برای خطا - از CalloutTitle و CalloutDescription برای ساختاردهی بهتر پیام استفاده کنید

نکنید

  • از Callout برای پیام‌های گذرا (مثل «ذخیره شد») استفاده نکنید — از Sonner استفاده کنید - بیش از 2-3 Callout در یک صفحه قرار ندهید — اهمیت پیام‌ها کاهش می‌یابد

کامپوننت‌های مرتبط

  • Sonner — اگر نیاز به اعلان گذرا دارید که خودکار ناپدید شود