presentation/widgets/skeletons library

Classes

SkeletonBlock
Static placeholder shapes used in place of CircularProgressIndicator for async-loading sections. No animation — the design system rule is that non-functional motion is forbidden (StreakSparkline's placeholder bars follow the same rule). The shapes mirror the eventual content's geometry so there's no layout shift when real data arrives.
SkeletonCard
Bordered card placeholder — matches the geometry of ActiveGoalCard, DueTodayCard, and DomainStatTile so swapping in real content doesn't jolt the layout. Adapts inner content to short vs tall cards so the placeholder lines never overflow the bordered box.
SkeletonCardList
A vertical stack of count SkeletonCards with consistent spacing — drop-in replacement for an inline _InlineLoading() spinner block.
SkeletonDomainGrid
Grid of count domain-tile-shaped skeletons. Mirrors the home screen's GridView.count(crossAxisCount: cols, childAspectRatio: …) shape.
SkeletonLine
Single line of "text" sized at the given width fraction. Use for heading or row placeholders. Default height matches body line-height.
SkeletonSessionList
Vertical list of count SkeletonSessionRows with separator dividers, mirroring _RecentSessionsList.
SkeletonSessionRow
A single row of "session metadata" placeholder — a small icon block plus two text lines, matching _SessionRow's layout in the home screen.