KQ-532 · SAVE/MARK

Save Mark

An autosave indicator that tells the truth about time. Unsaved breathes on drift, saving bounces three dots on snap a beat out of phase, saved draws its check with pathLength on flick, and error shakes once on a tween before offering Retry. "Saved just now" relaxes into a live "Saved 2m ago" from a timer that runs only while a save is on screen, and the chip is a polite status region whose spoken text changes on state rather than on every tick; Retry is a real button in the tab order, and under reduced motion nothing bounces or breathes while the check still appears.

KQ-532 · SAVE/MARK
No changes

Autosave · idle · 0 written

Install

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

$ pnpm dlx shadcn@latest add @kinetiq/save-mark

Props

state
"idle" | "dirty" | "saving" | "saved" | "error"
default —
Which of the five save states to show. Each has its own mark and its own physics.
savedAt
number
default —
Epoch ms of the last save. Drives the relative time, which ticks from a timer and is never read during render.
onRetry
() => void
default —
Fires from the Retry action, which appears only in the error state.