Ticker
A strip of label · value · change, with the values rolling to their new readings.
Each value is a NumberRoll, so a new reading rolls to its place rather than cutting to it and the number a screen reader hears is always the true one rather than a frame of the roll; the roll never runs on mount, so the first frame is already right. A change is a MetricDelta, which puts the direction in a word and an arrow before the colour. scrolling hands the whole strip to Marquee — duplicated for the loop, parked on hover and focus, still under reduced motion; without it the row scrolls sideways under the reader's own finger instead, which is what keeps it usable at 390px. Give each item its own format for the ones that are not counts: a price, a duration, a percentage.
Install
npx shadcn@latest add @vibra/tickerNeeds the @vibra registry in your components.json — set it up once.