● Primitives / StatusIndicator
StatusIndicator.
StatusIndicator combines an animated green dot with a text label. It replaces repeated ping markup in hero, contact, and Superbloom headers.
How the primitive behaves
The outer wrapper is inline-flex with gap-2. The dot stack is aria-hidden because the label carries the status for screen readers.
Source of truth
Custom primitive in system/primitives/status-indicator. Exported from $lib/system.
Primitive roles
Availability signal
Animated dot beside “Open to work” on the homepage hero and contact page.
Product status
Live meta label on the Superbloom overview and Storybook introduction.
Metadata slot
Composes into SectionHeader or MetadataLabel meta snippets as a single unit.
Anatomy
Open to work
Open to workIn MetadataLabel
● Intro
Open to work
Live
LivePing layer
Absolute span with animate-ping and green-500 at 75% opacity.
Dot
Solid h-2 w-2 green circle on top of the ping.
label
Optional string or children snippet for text beside the dot.
Guidelines
- Use StatusIndicator when motion plus text communicates availability or live status.
- Pair with MetadataLabel or SectionHeader meta slots; avoid duplicating ping markup in routes.
- Respect prefers-reduced-motion: ping is decorative; label still conveys meaning.
- Do not use for static “Live” nav badges; use LiveBadge instead.
- Keep labels short (Open to work, Live) so they fit metadata rows on small screens.
In practice
Hero intro meta?
label="Open to work" in MetadataLabel meta.
Contact page header?
Same label in SectionHeader meta.
Superbloom overview?
label="Live".
Design System menu?
LiveBadge without animation.
Related primitives
Other primitives in the system, in the same order as the documentation sidebar.