For the complete documentation index, see llms.txt. Markdown variants are available by appending .md to any URL or sending an Accept: text/markdown header. The asciicn agent skill, for building any ASCII effect on the engine, is at /.well-known/agent-skills/asciicn/SKILL.md.

Status dot

A one-glyph status indicator for online, busy, offline and error, with a distinct shape per state and a ping, turn or flash in glyphs.

Controls
Your status
Glyphs
Size
Animate

Installation

pnpm dlx shadcn@latest add https://asciicn.dev/r/status-dot.json

Usage

import { StatusDot } from "@/components/asciicn/status-dot";
 
export function Presence({ away }: { away: boolean }) {
  return <StatusDot status={away ? "offline" : "online"} />;
}

Each state has its own glyph and colour, so the shape tells them apart even without colour:

StatusdotbrailleColour
online●, pings ◉ ◎⠶, pulses ⣿green
busy◐, turns ◓ ◑ ◒⣾, orbits ⣽ ⣻ ⢿orange
offline○, still⠤, stillgrey
error✕, flashes ×⣿, flashes ⠶red

label replaces the state name next to the glyph, such as "Degraded" for a busy service. Set showLabel={false} to show the glyph alone; screen readers still hear the label.

Examples

Service health

The braille variant in a table, with labels for each service.

Changing state

A deploy that moves through every state every 2.2 seconds, at size="lg".

Props

PropTypeDefault
status

The state to show.

Type: "online" | "busy" | "offline" | "error"Default "online"
label

Text next to the glyph and the name screen readers hear.

Type: stringDefault The state, as in "Online"
showLabel

Show the label. When false it is read to screen readers only.

Type: booleanDefault true
variant

Geometric glyphs or one Braille cell per state.

Type: "dot" | "braille"Default "dot"
animate

Online pings, busy turns and error flashes.

Type: booleanDefault true
color

Glyph colour override, a palette name or any CSS colour.

Type: AsciiColorDefault Green, orange, grey or red by state
size

Glyph cell height: 12, 16 or 20px.

Type: "sm" | "md" | "lg"Default "md"
cell

Glyph cell height in CSS pixels. Overrides size.

Type: numberDefault –

Notes

  • The root has role="status", so screen readers announce a new state once, politely. The glyph is hidden from them; they hear the label.
  • The animation swaps one glyph a few times a second. It pauses offscreen and in hidden tabs, and with reduced motion each state holds its first glyph.
  • The glyph is DOM text in --ascii-font, one cell wide, so the label never shifts as it changes.