Scheletro
Un blocco segnaposto lampeggiante per schede, avatar e tabelle mentre i dati vengono caricati — con il bordo spesso in stile neobrutalista.
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonDemo() {Lo skeleton è un segnaposto pulsante che conserva la forma di una porzione di interfaccia mentre i suoi dati si caricano. È un singolo div — nessuna primitiva sotto — con animate-pulse, uno sfondo attenuato e il bordo spesso della ricetta neobrutalista.
Quando usarlo:
- Card ed elenchi — rispecchia il layout finale, così il contenuto compare senza spostamenti.
- Avatar e media — riserva il cerchio o il riquadro della miniatura prima che arrivi l’immagine.
- Tabelle e moduli — tiene righe e campi al loro posto durante un fetch lento.
Installazione#
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
Copia e incolla il seguente codice nel tuo progetto.
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 }
Aggiorna i percorsi di importazione in base alla struttura del tuo progetto.
Utilizzo#
import { Skeleton } from "@/components/ui/skeleton"<Skeleton className="h-[20px] w-[100px] rounded-full" />Esempi#
Avatar#
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonAvatar() {Scheda#
import { Card, CardContent, CardHeader } from "@/components/ui/card"
import { Skeleton } from "@/components/ui/skeleton"
Testo#
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonText() {Modulo#
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonForm() {Tabella#
import { Skeleton } from "@/components/ui/skeleton"
export function SkeletonTable() {RTL#
Per abilitare il supporto RTL in Neobrutalism, consulta la guida alla configurazione RTL.
"use client"
import * as React from "react"Accessibilità#
Gli skeleton sono decorativi — nascondili alle tecnologie assistive con aria-hidden="true", così gli screen reader non annunciano scatole vuote che pulsano. Comunica lo stato di caricamento a parte: imposta aria-busy="true" sulla regione in caricamento, oppure aggiorna una live region nascosta visivamente (“Caricamento dei risultati…”) che si svuota all’arrivo del contenuto. Una volta reso il contenuto reale, rimuovi del tutto gli skeleton dal DOM.