خالی (Empty)

نمایش وضعیت خالی

معرفی

کامپوننت Empty برای نمایش وضعیت خالی بودن استفاده می‌شود: کادر حالت خالی با آیکون، عنوان، توضیح و یک اقدام.

در صفحه: Empty را خودتان نسازید

در صفحه‌های اپلیکیشن Empty را قالب صفحه می‌کشد و شما آن را نمی‌نویسید:

  • فهرست خالی یا بی‌نتیجه: state={pageState({ data: data?.items, isLoading, error, onRetry: load, emptyCopy: { title: '…' } })} در ListPage (یا DetailSection و PageState برای یک بلوک). وقتی جست‌وجو یا فیلتری فعال است (filtered صفحه) قالب «نتیجه‌ای یافت نشد» را با «پاک کردن فیلترها» نشان می‌دهد؛ وگرنه عنوان emptyCopy را. حالت خالی جای کل جدول می‌نشیند و سرستون‌ها نمی‌مانند؛ هرگز در emptyState جدول یا داخل کارت نیست.
  • صفحه‌ای از منو که هنوز چیزی ندارد (هنوز گزارشی ساخته نشده): UtilityPage با kind="empty"، title که وضعیت را می‌گوید و description؛ action فقط وقتی چیزی در محصول اولین مورد را می‌سازد.
  • صفحهٔ 404: UtilityPage با kind="404".

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

  • درون جزئی از رابط که حالت خالی‌اش را خودش می‌کشد و قالب صفحه ندارد: پنل کناری، Popover، یک Sheet، یا محتوای یک CustomPage
  • در کامپوننتی که prop حالت خالی دارد و فهرست یک صفحه نیست (emptyState در ActionTimeline، empty در EntityCollection، …)، از طریق همان prop

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

  • برای فهرست یا جدول یک صفحه — state قالب صفحه (بالا)؛ نه Empty در emptyState جدول
  • برای صفحه‌ای که هنوز محتوایی ندارد — UtilityPage kind="empty"
  • برای حالت خطا — از ErrorState استفاده کنید (در صفحه: state قالب)
  • برای صفحه 404 — UtilityPage kind="404"

زمین بازی

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

زمین بازی

هیچ داده‌ای موجود نیست

هنوز رکوردی برای نمایش وجود ندارد.

تنظیمات
ظاهر
محتوا
کد این نمونه به‌صورت خودکار قابل تولید نیست — برای کد آماده‌ی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.

استفاده

هنوز منبعی به این پنل افزوده نشده است

منبعی را که می‌خواهید در این پنل ببینید از فهرست منبع‌ها انتخاب کنید.

import { Empty, EmptyIcon, EmptyTitle, EmptyDescription, EmptyAction } from '@partodata/ui'
import { Icons } from '@partodata/ui/icons'

export default function MyComponent() {
  return (
    <Empty>
      <EmptyIcon>
        <Icons.inbox className="h-6 w-6" />
      </EmptyIcon>
      <EmptyTitle>هیچ موردی یافت نشد</EmptyTitle>
      <EmptyDescription>شما هنوز هیچ موردی اضافه نکرده‌اید</EmptyDescription>
    </Empty>
  )
}

کامپوننت‌ها

Empty ترکیبی است: عنوان، توضیح و اقدام فرزند آن هستند، نه ویژگی. <Empty title="…"> از نسخهٔ 4.0 خطای نوع می‌دهد، چون پیش از آن کامپایل می‌شد ولی هیچ عنوانی نمایش نمی‌داد (فقط یک راهنمای شناور HTML). description و action هم ویژگی Empty نیستند؛ از EmptyTitle، EmptyDescription و EmptyAction استفاده کنید.

  • Empty — wrapper اصلی با layout عمودی مرکزچین
  • EmptyIcon — محل نمایش آیکون؛ رنگِ معناییِ اختیاری دارد (پایین را ببینید)
  • EmptyTitle — عنوان وضعیت خالی
  • EmptyDescription — توضیح تکمیلی
  • EmptyAction — wrapper دکمه اقدام (CTA) با فاصله‌گذاری خودکار

Props

Empty

Prop

Type

EmptyIcon

Prop

Type

EmptyTitle

Prop

Type

EmptyDescription

Prop

Type

EmptyAction

Prop

Type

حالت‌ها و انواع

با دکمه اقدام

<Empty>
  <EmptyIcon>
    <Icons.inbox className="h-6 w-6" />
  </EmptyIcon>
  <EmptyTitle>هنوز منبعی به این پنل افزوده نشده است</EmptyTitle>
  <EmptyDescription>منبعی را که می‌خواهید در این پنل ببینید از فهرست منبع‌ها انتخاب کنید.</EmptyDescription>
  <EmptyAction>
    {/* اقدام حالت خالی ثانوی است (default) و کاری می‌کند: یک handler یا پیوند، هرگز دکمه‌ای بی‌عمل */}
    <Button variant="default" onClick={openSources}>
      انتخاب منبع
    </Button>
  </EmptyAction>
</Empty>

با آیکونِ رنگی

برای وضعیت‌هایی که «خالی بودن» خودش خبرِ خوبی است (مثلاً «هیچ هشداری ثبت نشده») یا نیاز به یک نشانهٔ رنگیِ معنایی دارید، variant را به EmptyIcon بدهید:

هیچ هشداری ثبت نشده

این خوبه — در 24 ساعت گذشته بدون مشکل بوده.

import { CheckCircle2 } from 'lucide-react'
;<Empty>
  <EmptyIcon variant="success">
    <CheckCircle2 className="h-6 w-6" />
  </EmptyIcon>
  <EmptyTitle>هیچ هشداری ثبت نشده</EmptyTitle>
  <EmptyDescription>این خوبه — در 24 ساعت گذشته بدون مشکل بوده.</EmptyDescription>
</Empty>

شش مقدار در دسترس است: brand، success، warning، destructive، info، neutral (پیش‌فرض — دقیقاً همان دیسکِ خاکستریِ قبلی، پس این prop تغییری در ظاهرِ کد قبلی ایجاد نمی‌کند).

حالت ساده بدون آیکون

<Empty>
  <EmptyTitle>نتیجه‌ای یافت نشد</EmptyTitle>
  <EmptyDescription>فیلترهای جستجو را تغییر دهید و دوباره تلاش کنید.</EmptyDescription>
</Empty>

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

بکنید

  • همیشه یک پیام واضح و راهنما به کاربر نمایش دهید - دکمهٔ اقدام را فقط وقتی بگذارید که کاری انجام می‌دهد (یک onClick یا پیوند)، با variant="default"، تا اقدام اصلی صفحه تنها دکمهٔ اصلی بماند - از آیکون مرتبط با نوع محتوا استفاده کنید

نکنید

  • از پیام‌های مبهم مانند «چیزی نیست» استفاده نکنید — دلیل خالی بودن را توضیح دهید - از Empty برای حالت خطا استفاده نکنید — از ErrorState استفاده کنید

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

  • متن عنوان و توضیحات توسط screen reader خوانده می‌شود
  • اگر دکمه اقدام دارید، با Tab قابل دسترسی است
  • سازگار با RTL

تصویرها و نمودار خالی

تصویرهای حالت خالی و EmptyChart (حالت خالی داخلی نمودارها) زیرمجموعهٔ همین کامپوننت‌اند. قاعده: یک بلوک → PageState؛ یک صفحهٔ کامل → UtilityPage؛ یک سطح سفارشی → Empty و ErrorState.

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

  • ErrorState — وقتی خطایی رخ داده و نیاز به نمایش وضعیت خطا دارید، نه وضعیت خالی
  • حالت‌های خالی — راهنمای کامل الگوهای empty state