اسکلتون
یک بلوک نگهدارندهٔ پالسی برای کارتها، آواتارها و جداول در حین بارگذاری دادهها — با جلوهی حاشیهکلفتِ نئوبروتالیست.
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonDemo() {Skeleton یک placeholder پالسی است که شکل تکهای از UI را هنگام بارگذاری داده نگه میدارد. یک div واحد است — بدون primitive زیرین — با animate-pulse، پسزمینهٔ muted و حاشیهٔ ضخیم دستور پخت نئوبروتالیستی.
برای این موارد از آن استفاده کنید:
- کارت و فهرست — layout نهایی را آینه کنید تا محتوا بدون جابهجایی ظاهر شود.
- آواتار و رسانه — دایره یا جعبهٔ thumbnail را قبل از رسیدن تصویر رزرو کنید.
- جدول و فرم — ردیف و فیلد را هنگام fetch کند سر جایشان نگه دارید.
نصب#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/skeleton.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/skeleton.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/skeleton.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/skeleton.json
کد زیر را کپی کرده و در پروژهٔ خود بچسبانید.
import { cn } from "@/lib/utils"
function Skeleton({ className, ...props }: React.ComponentProps<"div">) {
return (
<div
data-slot="skeleton"
className={cn("animate-pulse rounded border-2 bg-muted", className)}
{...props}
/>
)
}
export { Skeleton }
مسیرهای ایمپورت را مطابق با تنظیمات پروژهٔ خود بهروزرسانی کنید.
استفاده#
import { Skeleton } from "@/components/ui/skeleton"<Skeleton className="h-[20px] w-[100px] rounded-full" />نمونهها#
Avatar#
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonAvatar() {کارت#
import { Card, CardContent, CardHeader } from "@/components/ui/card"
import { Skeleton } from "@/components/ui/skeleton"
متن#
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonText() {فرم#
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonForm() {جدول#
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonTable() {RTL#
برای فعالکردن پشتیبانی از RTL در Neobrutalism، راهنمای پیکربندی RTL را ببینید.
"use client"
import * as React from "react"دسترسیپذیری#
Skeletonها تزئینیاند — با aria-hidden="true" از فناوری کمکی پنهانشان کنید تا صفحهخوان جعبههای پالسی خالی را اعلام نکند. خود وضعیت بارگذاری را جداگانه برسانید: aria-busy="true" را روی ناحیهای که بارگذاری میشود بگذارید، یا یک live region visually hidden («در حال بارگذاری نتایج…») بهروز کنید که با رسیدن محتوا پاک شود. وقتی محتوای واقعی رندر شد، skeletonها را کاملاً از DOM بردارید.