← All components
Motion / component

Orbiting Circles

Upright icons trace quiet circular paths, with independently controlled rings and responsive spacing.

PLAYGROUND
Live preview
Preparing preview…

Take it with you.

SOURCE ACCESS

Preview freely. Unlock the files.

Enter the shared password to copy the complete source, download every file, and install components in your app.

Access lasts 24 hours. Your preview settings stay with you.

Component notes

  • Adapted from Magic UI’s MIT-licensed Orbiting Circles, preserving its counter-rotation geometry so children remain upright.
  • Place OrbitingCircles in a positioned parent with sufficient width and height. It fills that parent. Radius is explicit in the primitive; Demo.tsx fits both rings to the available width.
  • Import Demo.tsx for the complete two-ring composition and original geometric icon artwork. The inner ring counter-rotates at 1.6 times the chosen speed and 60% of the radius.
  • Pause holds the current pose. Hidden/offscreen animation stops without accumulating wall time. Reduced motion uses evenly spaced stationary children. Replay resets phase without remounting children.
  • React and modern SVG/ResizeObserver are sufficient. No Tailwind or animation-library dependency is needed. Use --orbit-path-color to customize the guide stroke.
React 19.2Modern browsers

Magic UI · MIT. See bundled notice.

Props

PropTypeDefaultDescription
children (required)ReactNode—Elements distributed evenly around the circle.
radiusnumber160Orbit radius in pixels; primitive range 0–1000.
durationnumber20Seconds per revolution at speed 1; bounded to 0.1–3600.
speednumber1Playback multiplier, bounded to 0–10. Zero stops scheduling.
iconSizenumber30Square wrapper size; 40 in the gallery demo.
reversebooleanfalseReverse travel while retaining phase.
pathbooleantrueShow the circular SVG guide.
pausedbooleanfalseStop decorative motion while keeping content usable.
replayTokennumber0Change to reset decorative motion without remounting primitive children.