پرتوپرتو

اسکلتون (Skeleton)

نمایش‌دهنده لودینگ به شکل placeholder

معرفی

کامپوننت Skeleton برای نمایش وضعیت لودینگ استفاده می‌شود.

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

  • برای نمایش placeholder محتوا هنگام بارگذاری اولیه صفحه
  • وقتی layout محتوا از قبل مشخص است و می‌خواهید layout shift را حذف کنید
  • برای عملیات‌هایی که بیش از ۲۰۰ms طول می‌کشند

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

  • برای عملیات‌های کوتاه‌تر از ۲۰۰ms — نمایش skeleton و حذف آن ناگهانی به نظر می‌رسد
  • برای حالت‌های خطا — از ErrorState استفاده کنید
  • برای نمودارها — از prop isLoading در کامپوننت نمودار استفاده کنید

استفاده

import { Skeleton } from '@parto-system-design/ui'

export default function MyComponent() {
  return (
    <div className="flex flex-col gap-3">
      <Skeleton className="h-12 w-12 rounded-full" />
      <div className="space-y-2">
        <Skeleton className="h-4 w-[250px]" />
        <Skeleton className="h-4 w-[200px]" />
      </div>
    </div>
  )
}

اشکال مختلف

از prop shape برای تعیین شکل اسکلتون استفاده کنید:

<Skeleton shape="rect" className="h-12 w-full" />
<Skeleton shape="circle" size="lg" />
<Skeleton shape="line" />
<Skeleton shape="text" />

تکرار

از prop count برای نمایش چند اسکلتون پشت سر هم استفاده کنید:

<Skeleton shape="line" count={3} />

پریست‌های آماده

سه پریست آماده برای استفاده سریع:

import { MetricCardSkeleton, ChartSkeleton, TableSkeleton } from '@parto-system-design/ui';

<MetricCardSkeleton />
<ChartSkeleton />
<TableSkeleton rows={5} />

Props

Skeleton

Prop

Type

MetricCardSkeleton

اسکلتون آماده برای MetricCard. بدون props اضافی.

ChartSkeleton

اسکلتون آماده برای نمودارها. بدون props اضافی.

TableSkeleton

Prop

Type

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

بکنید

  • شکل Skeleton را مشابه محتوای نهایی بسازید تا layout shift نداشته باشید - از پریست‌های آماده (MetricCardSkeleton، TableSkeleton) استفاده کنید - از count برای تکرار خطوط متنی استفاده کنید

نکنید

  • Skeleton را برای عملیات‌های کوتاه‌تر از ۲۰۰ms استفاده نکنید — از Spinner استفاده کنید - Skeleton را بدون اندازه مشخص (width/height) رها نکنید — باعث layout shift می‌شود - از Skeleton برای حالت خطا استفاده نکنید — از ErrorState استفاده کنید

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

  • Skeleton از aria-hidden="true" استفاده می‌کند تا صفحه‌خوان‌ها آن را نادیده بگیرند
  • انیمیشن pulse در صورت فعال بودن prefers-reduced-motion: reduce غیرفعال می‌شود
  • محتوای واقعی پس از بارگذاری جایگزین Skeleton می‌شود بدون تغییر layout

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

  • Spinner — اگر عملیات کوتاه است و layout محتوا مشخص نیست، از Spinner استفاده کنید
  • ErrorState — اگر بارگذاری با خطا مواجه شد، از ErrorState استفاده کنید