Vibary.ai
← Vibe Coding

Presence Dot

The status dot eases between tints, settles once, and sends a single ring out on coming online.

socialsubtlefriendlyautomatic · finite · starter · ~3.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.

257 lines · react + motion only
import { useEffect, useState } from "react";
import {
  AnimatePresence,
  animate,
  motion,
  useMotionValue,
  useReducedMotion,
} from "motion/react";

About this pattern

Presence is the smallest status in an interface and one of the most watched, which makes restraint the whole design. The dot crosses between its state colors on a short ease and settles once — a three-keyframe tween rather than a spring, so a twelve-pixel mark can never ring around its own size — and coming online sends exactly one expanding ring, because a dot that pulses forever is a distraction carrying no news. State is never left to color alone: a hole punched off-centre reads as away, a centred hole reads as offline, and a solid disc is online, with the hole taking the page's own background color so the shape holds up in either theme. The wording underneath swaps in a fixed-height slot, so the row never grows when someone steps away.

Online status on an avatarTeam member list presenceAway and offline statesAvailability in a directory

Where it shows up

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

  • 10:15
    Dana Whitfieldonline
    Morning — did the venue confirm?
    They did, contract came back signed.10:14
    Are we still on for Thursday?
    Yes — booked the room for 2pm.10:14
    Perfect. I'll bring the printouts.
    See you then.10:14
    Message
    Chat thread

    A member's presence marker fills when they become active and hollows out when they are away.

Related patterns