KQ-697 · LIVENESS/DOTS

Liveness Dots

A liveness check where a dot travels on glide to each of N stops and waits; catching it there — the pointer entering it, a press, or Space and Enter while it holds focus — stamps the stop with a ring that lands on recoil and stays, while a stop left uncaught is marked with a still dashed ring. When the last stop resolves, a clean run draws a closed loop through every stop with pathLength on glide and a tick lands at the centre; any miss ends in a plain count and a Try again.

KQ-697 · LIVENESS/DOTS
Basinworks Exchange0 / 6
Follow the dot with your pointer, or press it as it stops.

Withdrawals over 2,000 BSN need a liveness check.

Idle

Install

One command — the source lands in your repo. Or copy it from the Code tab.

$ pnpm dlx shadcn@latest add @kinetiq/liveness-dots

Props

positions
{ x: number; y: number }[]
default
Where the dot stops, in order, as 0–100 percentages of the stage; six seeded stops by default.
windowMs
number
default 1600
How long the dot waits at each stop before moving on.
status / defaultStatus
"idle" | "running" | "passed" | "failed"
default "idle"
Controlled or initial state of the check; setting running starts a fresh run.
onStatusChange
(status) => void
default
Fires from the press or the timer that moved the check.
onResolve
(index: number, caught: boolean) => void
default
Fires as each stop is caught or missed.
label
ReactNode
default
Visible heading; omit it and pass aria-label.