WebberUI

Orbiting Circles

A ring of icons or avatars circling a round orbit, stackable into multiple orbits with reverse directions and different speeds.

A ring of icons or avatars spaced evenly along a circular orbit. Several instances can be stacked into inner and outer orbits, each with its own radius, speed, and direction — a common way to express "a technology ecosystem around a core" or a set of integrations.

Loading preview…
npx shadcn@latest add https://webberui.com/r/orbiting-circles.json

Playground

Tune the props live — the code snippet updates as you go, so you can dial in the look you want before copying it.

100
20
40
0
<OrbitingCircles />

Installation

npx shadcn@latest add https://webberui.com/r/orbiting-circles.json

Or, once registries are configured in components.json, install it as @webberui/orbiting-circles.

Usage

children are distributed evenly around the circumference. Stack two instances to build inner and outer orbits, using reverse to send the outer ring the other way and startAngle to stagger the nodes.

import { OrbitingCircles } from "@/components/ui/orbiting-circles";

<div className="relative flex h-[360px] items-center justify-center">
  <OrbitingCircles radius={62} duration={16} iconSize={34} className="absolute">
    <Github />
    <Twitter />
    <Figma />
  </OrbitingCircles>

  <OrbitingCircles
    radius={122}
    duration={28}
    iconSize={42}
    reverse
    startAngle={20}
    className="absolute"
  >
    <Chrome />
    <Slack />
    <Cloud />
    <Database />
  </OrbitingCircles>
</div>

Props

PropTypeDefaultDescription
childrenReact.ReactNodeElements circling the orbit, distributed evenly around the circumference
radiusnumber100Orbit radius (px)
durationnumber20Duration of one full lap (seconds); larger is slower
reversebooleanfalseOrbit in reverse (counter-clockwise)
iconSizenumber40Edge length of a single element (px)
startAnglenumber0Starting angle of the first element (degrees)
pathbooleantrueShow the faint circular orbit
classNamestringForwarded to the outermost container

Accessibility

  • When the user has "reduce motion" enabled at the system level, the elements land at their static positions on the orbit with no circling animation
  • The orbit path is marked aria-hidden and is decorative only

On this page