Text Lines
Stacked lines that fill the width they are given.
<div style={{ width: 260 }}>
<Skeleton.Text lines={3} />
</div>Holds the shape of content that has not arrived yet.
import { Skeleton } from "@/fragments/ui";Source<Skeleton width={200} height={20} />npx @usefragments/cli add skeletonWrites src/fragments/ui/components/Skeleton plus what it imports, the globals stylesheet, and .fragments/registry-lock.json, then prints the packages to add. No account, no key.
Your own registry: publish from Fragments Cloud and add --registry org/name. Connect a workspace.
Skeleton is a compound: import the root and reach its parts through dot notation.
Skeleton.TextSkeleton.CircleStacked lines that fill the width they are given.
<div style={{ width: 260 }}>
<Skeleton.Text lines={3} />
</div>Heading sits taller than the body lines under it.
<div
style={{
width: 260,
display: 'flex',
flexDirection: 'column',
gap: 'var(--fui-space-2)',Circles matching the three avatar sizes.
<div style={{ display: 'flex', gap: 'var(--fui-space-1)', alignItems: 'center' }}>
<Skeleton.Circle size="sm" />
<Skeleton.Circle size="md" />
<Skeleton.Circle size="lg" />
</div>Media, title, then body — the card before it loads.
<div
style={{
width: 300,
padding: 'var(--fui-space-2)',
border: '1px solid var(--fui-border)',
borderRadius: 'var(--fui-radius-lg)',Prop | Type | Default | Description |
|---|---|---|---|
shape | enumtextheadingavatarbuttoninputrect | rect | Semantic shape that auto-sizes |
size | enumsmmdlg | md | Size for avatar/button shapes |
width | union | Not set | Custom width (string or number) |
height | union | Not set | Custom height (string or number) |
fill | boolean | false | Fill parent container |
radius | enumsmmdlgnonefull | Not set | Border radius override |
static | boolean | false | Disable skeleton animation |