Status Dot

Presence and live indicator where away, offline and do-not-disturb have their own shapes, not just colours. Comes as a plain dot, a dot with a cut-out edge for avatars, or a labelled pill.

Preview

Installation

npx @lumioui/cli add status-dot

Usage

import { StatusDot } from "@/components/ui/status-dot/status-dot";
<StatusDot />

Examples

Live

A creator app's live tab.

Presence

A team chat's "set your status" sheet.

System status

An infrastructure status page.

API reference

Prop Type Default
status PresenceStatus

Presence or live state. Default "online".

"online"
size keyof typeof DIAMETER

Dot diameter — xs 8 · sm 10 · md 12 · lg 14. Default "sm".

"sm"
variant "dot" | "pill"

"dot" renders the bare indicator; "pill" pairs it with a text label. Default "dot".

"dot"
label string

Pill text. Defaults to the status name ("Active", "Away", "Live"…).

—
ring boolean

Surface-coloured cut-out ring so the dot reads as punched out of an avatar or thumbnail. Default false.

false
ringClassName string

Ring classes — border AND fill matching the surface the dot sits on (the fill shows through hollow away/offline rings). Default "border-card bg-card".

"border-card bg-card"
animate boolean

Run the live breath. Defaults to true for live; ignored for other statuses. Set false when the row is off-screen or the stream is paused.

true
glow boolean

Status as light: online gets a faint halo of its own light, away and offline dim to unlit filaments. Default false.

false
accessibilityLabel string

Screen-reader label. Defaults to the status label ("Active").

—
className string —
textClassName string

Extra classes for the pill label.

—