Capítulo 60 de 108
Placeholder visual (retângulo pulsante) usado para preencher o espaço de um conteúdo que ainda está carregando, evitando layout shift quando o conteúdo real chegar.
Skeleton é só um div estilizado; toda a forma (tamanho, formato) vem de className (h-4 w-[250px], rounded-full, aspect-video, etc).<Skeleton> nas dimensões do conteúdo real (avatar + linhas de texto, card, formulário, tabela).<div className="flex items-center gap-4">
<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>
export function SkeletonTable() {
return (
<div className="flex w-full max-w-sm flex-col gap-2">
{Array.from({ length: 5 }).map((_, index) => (
<div className="flex gap-4" key={index}>
<Skeleton className="h-4 flex-1" />
<Skeleton className="h-4 w-24" />
<Skeleton className="h-4 w-20" />
</div>
))}
</div>
)
}
className — a "modelagem" acontece 100% via Tailwind.Array.from({ length: N }) para gerar linhas repetidas de skeleton em listas/tabelas.SkeletonCard que espelha CardHeader/CardContent.