Prodular UI

Data display

Status

A colored dot with a label for system and record states, with an optional live pulse and a pill appearance for tables.

npx prodular-ui add status

Variants

Plain for headers and lists, pill for table cells where it has to stand out from neighbouring text.

OperationalDegradedSyncingOutagePaused
PaidPast dueDeployingFailedDraft

System status

Live states pulse. The pulse is removed when the person prefers reduced motion.

Platform statusUpdated 2 minutes ago
Partial outage
  • REST APIus-east-1
    Operational
  • Webhooksus-east-1
    Degraded
  • DashboardGlobal
    Operational
  • Data warehouse synceu-west-1
    Syncing
  • SMS notificationsGlobal
    Outage

Anatomy

<Status variant="success">Operational</Status><Status variant="info" appearance="pill" pulse>Syncing</Status>

Guidance

Use it when

  • The state of a system, a sync, a deploy or a record: Operational, Degraded, Syncing, Paid, Failed.
  • pulse for states that are actively changing right now: Syncing, Deploying, Live.

Avoid

  • Color as the only signal. Always keep the label.
  • Pulsing more than one or two items in a view. Motion stops meaning anything when everything moves.
  • Badge for states. Badge is for counts and tags; Status is for state.

Rules for AI agents

Published in llms-full.txt and the registry, so coding agents follow them when they build with this component.

  • Map states to variants consistently: success for healthy or done, warning for degraded or needs attention, destructive for failed or down, info for in progress, neutral for paused, draft or archived.
  • Always pass a text label as children. Use StatusIndicator alone only next to text that already names the state.
  • Use appearance="pill" inside data table cells and appearance="plain" in headers, lists and sentences.
  • Use pulse only for live or in-progress states. It is motion-reduce safe; do not add your own animation.
  • Use size="xs" on Status for dense toolbars and inspectors instead of overriding its height.

API

Status

PropTypeDefaultDescription
variant"success" | "warning" | "info" | "destructive" | "neutral""neutral"Color of the dot, and of the tint for pills.
appearance"plain" | "pill""plain"plain is a dot and text. pill adds a tinted rounded background.
size"default" | "sm" | "xs""default"sm uses 13px text.
pulsebooleanfalseA soft ping around the dot. Hidden with prefers-reduced-motion.
indicatorbooleantrueSet false to place StatusIndicator yourself.

StatusIndicator

PropTypeDefaultDescription
variant / pulseStatusVariant / booleanThe dot on its own, for filter options or next to text that already names the state.