اسکلتون (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
MetricCardSkeleton
اسکلتون آماده برای MetricCard. بدون props اضافی.
ChartSkeleton
اسکلتون آماده برای نمودارها. بدون props اضافی.
TableSkeleton
راهنمای استفاده
بکنید
- شکل 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 استفاده کنید