Primitives
Overview

Sk.* Primitives

Pure CSS shimmer components — no runtime dependencies. Used in auto-generated .skeleton.tsx files and available for manual use:

import { Sk } from 'skeletal-ui'

All primitives are:

  • CSS-only (no JavaScript animation)
  • Server-safe
  • Zero-dependency
  • aria-hidden="true" — screen readers skip them

Available primitives

ComponentDescription
Sk.TextSingle or multi-line text placeholder
Sk.HeadingHeading-height shimmer block
Sk.AvatarCircle or square avatar placeholder
Sk.ImageRectangular image / aspect-ratio placeholder
Sk.ButtonButton-shaped shimmer
Sk.BadgeBadge or chip placeholder
Sk.NumberNumeric value placeholder
Sk.IconSquare icon placeholder
Sk.ListRepeated list of skeleton items
Sk.CardBlock container with composable children

Customization

Override defaults globally via skeletal.config.ts:

primitives: {
  avatar: { size: 32 },
  list: { count: 4 },
}

Or per-subtree via SkeletonProvider:

<SkeletonProvider primitives={{ avatar: { size: 32 } }}>
  <App />
</SkeletonProvider>

CSS variables (set globally or via SkeletonProvider):

:root {
  --sk-color: #e2e8f0;
  --sk-radius: 4px;
  --sk-duration: 2s;
}