Vibary.ai
← Vibe Coding

Story Ring Progress

A segmented ring traces around the avatar, one arc per clip, then goes quiet.

socialenergeticpremiumautomatic · finite · advanced · ~4.5s
Variant

The animated component in this preview is rendered from the canonical file shown here. The surrounding demo shell only provides context and is not part of the copied code.

222 lines · react + motion only
import { useCallback, useEffect, useState } from "react";
import { motion, useReducedMotion } from "motion/react";

/**
 * Vibary · Story Ring Progress
 *
 * One arc per clip, tracing around the avatar. The rate is linear on
 * purpose: an eased timer lies about how much time is left. Completed

About this pattern

The ring does two jobs at once: it says how much of this clip is left, and how many clips are in the set. Each arc traces at a constant rate — linear, never eased, because an eased timer lies about how much time remains — and the arcs behind it stay filled so the position in the set is always readable. When the last one lands the whole ring drops to a neutral tone, which is the difference between an avatar you have watched and one you have not.

Story playback timerMulti-clip sequence indicatorUnwatched versus watched avatarAuto-advancing carousel position

Where it shows up

Screens we drew to show where this motion usually sits. Illustrations, not captures of any product.

  • Priya Raman2hFinally got the trail loop under an hour. Four months of Tuesdays.
    12814
    Marcus Bell5hNew supplier signed. Same rate, twelve more months.
    423
    Social feed

    Segmented ring around an avatar, one arc per clip in the set.

Related patterns