oxyn

Circle Ping: a loader for api and tool calls

A circle of dots sends a ring out and gets a faint echo back. A React loader for an API call, tool call or MCP request.

Installation

Install with the shadcn CLI, or copy the component file. It only needs React.

npx shadcn@latest add https://oxyn.space/r/circle-ping.json

Usage

Updates live with the parameters you set.

import { CirclePing } from "@/components/circle-ping";

export function Thinking() {
  return (
    <CirclePing />
  );
}

Props

PropTypeDefaultDescription
dotShape"round"|"square""round"Shape of each dot.
dotSizenumber2.5Resting dot size in px.
scalenumber1.5How many times larger a dot grows at the peak of the animation.
densitynumber11Dots across the width of the sheet.
sizenumber160Width and height of the orb in px.
durationnumber0.9Seconds for the ping to reach the edge, and for the echo to come back.
waitnumber0.35Seconds between the ping reaching the edge and the echo setting off back.
gapnumber0.5Seconds to rest after the echo lands, before the next ping.
ringWidthnumber0.3Thickness of the ring of large dots, as a fraction of the sheet radius.
minOpacitynumber0.25Opacity of resting dots. Dots inside the outgoing ring are always fully opaque.
colorstring"#e4e4e7"Dot color.
pausedbooleanfalseCoast to a stop on the current frame without unmounting. Turning it off eases back up to speed.
labelstring"Thinking"Accessible name; the wrapper is role="status".
className / style——Spread onto the wrapper div, along with any other div props.

Switch states

Circle Ping is one of the animations in Dot Circle. Use the group when the agent's state changes, and it morphs between them.

More states