Browse components

Skeleton

Neutral placeholder that mirrors the shape of content while it loads. Use it where the layout is predictable, to reduce perceived latency.

atoms 3 variants
Variants / states: textcircleblock

Live example

Default usage you can copy and adapt.

Default

A single text line placeholder that fills its container.

Avatar

Circle variant for avatars and icon placeholders.

Media block

Block variant for cards, images, thumbnails, and hero regions.

Custom size

Use width / height for CSS lengths or pixel values, or Tailwind width utilities via class.

User row

A realistic list-row pattern: avatar beside two lines of text.

Article card

Drop-in placeholder for feed cards, blog previews, and product tiles.

Props

The props you are most likely to need, with types and defaults.

Props / API
NameTypeRequiredDefaultDescription
variant'text' | 'circle' | 'block'No'text'Shape preset. text is a short rounded bar for lines of copy, circle is a square with full rounding for avatars and icon placeholders, block is a taller rectangle for media, cards, and hero regions.
widthstring | numberNofills parent (circle: 2.5rem)Explicit width as a CSS length (e.g. '50%', '12rem') or pixel number. Omit to fill the parent, or pass a fixed Tailwind width via class (e.g. w-64).
heightstring | numberNopreset per variantExplicit height as a CSS length or pixel number. Defaults: text ≈ 0.75rem, circle matches width, block ≈ 8rem.
classstringNo''Extra classes forwarded to the root element. Useful for fixed Tailwind widths, rounding overrides, or margins.
aria-labelstringNo'Loading…'Label announced by assistive tech. Keep the default for generic loading, or set to something more specific (e.g. 'Loading profile') when the skeleton stands in for a named region.