源码
这里展示 registry 中会被 shadcn 安装到目标项目的组件源码。
import { Card, CardContent, CardHeader } from "@/components/ui/card"
import { Skeleton } from "@/components/ui/skeleton"
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@/components/ui/table"
type LoadingStateProps = {
rows?: number
}
export function LoadingState({ rows = 4 }: LoadingStateProps) {
return (
<Card className="w-full max-w-3xl">
<CardHeader className="gap-3">
<div className="flex flex-wrap items-center justify-between gap-3">
<div className="flex min-w-0 flex-col gap-2">
<Skeleton className="h-5 w-44" />
<Skeleton className="h-4 w-72 max-w-full" />
</div>
<Skeleton className="h-8 w-24" />
</div>
</CardHeader>
<CardContent>
<Table>
<TableHeader>
<TableRow>
<TableHead>
<Skeleton className="h-4 w-24" />
</TableHead>
<TableHead>
<Skeleton className="h-4 w-20" />
</TableHead>
<TableHead>
<Skeleton className="h-4 w-16" />
</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{Array.from({ length: rows }).map((_, index) => (
<TableRow key={index}>
<TableCell>
<div className="flex items-center gap-3">
<Skeleton className="size-8 rounded-full" />
<div className="flex min-w-0 flex-col gap-2">
<Skeleton className="h-4 w-32" />
<Skeleton className="h-3 w-44" />
</div>
</div>
</TableCell>
<TableCell>
<Skeleton className="h-5 w-20 rounded-full" />
</TableCell>
<TableCell>
<Skeleton className="h-4 w-24" />
</TableCell>
</TableRow>
))}
</TableBody>
</Table>
</CardContent>
</Card>
)
}