Status Light
Indicator lamp with six states: a bezelled panel LED, a dot or a live pulse, plus a group for service lists.
Halcyon status
14:02 UTCOne incident open. Webhook deliveries are queued and will retry in order.
- API gatewayp95 182 ms across 4 regionsOperational
- AuthSign-ins, sessions and tokensOperational
- RealtimeElevated latency in eu-west-1Degraded
- WebhooksRetrying 1,204 deliveriesInvestigating
- Nightly backupsNext run at 02:00 UTCScheduled
- Legacy v1 APIRetired on 30 SeptemberRetired
Installation
npx shadcn@latest add https://neonkit.heyaadi.com/r/status-light.jsonUsage
import { StatusLight } from "@/components/ui/status-light"
<StatusLight state="standby" label="Nightly backups" />Examples
Equipment panel
The panel variant is an LED in a turned metal bezel: a domed lens with a hot centre, bloom on the bezel's lip and light thrown onto the panel. Standby breathes, alert blinks.
States, variants and sizes
Six states, three variants, three sizes.
Live
The pulse variant rings while lit, for anything happening right now.
API reference
StatusLight
| Prop | Type | Default |
|---|---|---|
state | "off"Standby breathes slowly and alert blinks about twice a second. Off shows the unlit lens. | "on" |
variant | "dot"A bare lamp, a lamp with a ring that pulses while lit, or an LED in a bezel. | "dot" |
size | "sm"Dots of 6, 8 or 10px; panel bezels of 14, 18 or 24px. | "md" |
label | ReactNodeWhat the light belongs to. Without one the light is an image named by its state. | None |
description | ReactNodeA second line under the label. | None |
showState | booleanPrints the state word. When it's hidden, screen readers still hear it after the label. | false (true in a group) |
stateLabel | stringThe word for the state, like "Degraded" or "Live". | None |
color | NeonColorTints on, standby and alert. Warning is always amber and error always red. | inherited |
StatusLightGroup
A list with one row per light. Each child goes in its own list item.
| Prop | Type | Default |
|---|---|---|
variant | "dot"Default variant for the lights inside. | None |
size | "sm"Default size for the lights inside. | None |
color | NeonColorTints on, standby and alert lights that don't set their own color. | inherited |
Accessibility
- Color is never the only signal: a labelled light reads its state word after the label, and an unlabelled one is an image named by its state.
- Name an unlabelled light with aria-label when the state word alone doesn't say enough, like "Port 2, traffic".
- With reduced motion, standby holds at a steady glow, alert stays lit and the pulse ring is hidden.