Status dot
One 14px status slot for chat rows: idle, unread, attention, error, draft or running.
import { StatusDot } from "@arcadia/ui"One 14×14 slot for chat rows and lists: a 6px dot, a hollow ring, the alert glyph or the running pine, so a row never shifts as its chat changes state. Idle draws nothing. attention is the only lit status: waiting on you is the one moment that is literally a light. unread is the same light without the halo, which rootStyle can tint with a product's own colour, red included: status reads by shape before hue, and only error draws the alert glyph.
enter pops the mark in once, from --badge-scale over --duration-badge, for a state that just appeared: a badge on an avatar's corner, a row's unread dot.
A change pops
A dot that turns unread, attention or error after it mounted pops the same way on --ease-enter. A turn to running or idle changes in place.
A dot that changed less than a second before holds still, so a state that flaps never flickers; so does a change under data-instant (a list hydrating), under reduced motion and while the page is hidden.
A run's six marks
Subagents, workflows and the chats a chat started read in six states. Only Working moves, only Needs you takes a colour, Failed only its glyph's ink.
A thing's state
tone marks the state of something that is not a run or a chat: a connector, a plugin, an account.
A steady dot in the tone's ink beside the word that names it, with no pop and no glyph. A scope or a tag is a Badge.
Statuses
rootStyle takes layout and these knobs, each a palette token. The status sets them; set them yourself for a status the kit doesn't have, or to tint a mark with a product's own colour.
--status-dot-color- PaintDefault var(--status-idle)
- The dot's fill, a glyph's ink.
--status-dot-ring- PaintDefault transparent
- A 1px ring inside the dot (a draft's hollow ring).
--status-dot-halo- Paint | `color-mix(in srgb, ${Ref<Palette>} ${number}%, transparent)`Default transparent
- A steady 2px halo around the dot (needs-you).
Decorative unless given a label, which makes it an img with that name. Colour alone never carries the status: say it in the row's text, its aria-label, or the dot's label ("Needs your answer"). The attention halo holds steady and never blinks.
StatusDot
status- "idle" | "unread" | "attention" | "error" | "draft" | "running" | "waiting" | "done" | "stopped" | "skipped"Default "idle"
idle: done and seen (draws nothing).unread: done while away (tint it throughrootStyle).attention: waiting on the user (a steady halo).error: failed (the alert glyph).draft: never sent (a hollow ring).running: live (the PineSweep). A run'swaiting(a hollow circle),done(a check),stopped(the stop square),skipped(a dash), glyphs at text height.tone- "success" | "warning" | "danger" | "muted" | "neutral"
- The state of a thing that is not a run or a chat (a connector's Off, Needs trust, Can't connect), beside the word that names it: a steady dot in the tone's ink, never a pop or a glyph. Set, it stands in for
status. label- string
- Accessible name ("Needs your answer"). Omit when the status is also stated in text.
enter- boolean
- Pops in once on mount (a badge on an avatar, a row's unread dot). A later change into
unread,attentionorerrorpops on its own. Never under reduced motion,data-instantor a hidden page. rootStyle- RootStyle<StatusDotKnobs>
- Typed StyleX override: layout and the
--status-dot-*knobs.
Rest props go to <span> props and render.