Orbiting Circles - Animated Rotating Icons Component A mesmerizing orbiting circles component with icons rotating in opposite directions on multiple rings. Features infinite animation, pause on hover/focus, customizable speed, and center content. Perfect for showcasing integrations, tech stacks, and social links.
Orbiting Circles
An animated component featuring icons that orbit around a center point on multiple rings. Supports opposite rotation directions, customizable speeds, and pauses on hover for better interaction.
Installation
npx shadcn@latest add "https://ui-struct.vercel.app/r/orbiting-circles"
Usage
Ts Js
import OrbitingCircles from "@/components/ui/orbiting-circles" ;
centerContent ={ < CenterIcon /> }
Preview
Icons orbit in opposite directions and pause when you hover over them.
Tech Stack
Showcase your technology stack with orbiting framework and tool icons.
Social Links
Display social media icons in a dynamic, attention-grabbing way.
Animation Speed
Control the speed of each ring independently for visual hierarchy.
Minimal Style
A clean, minimal design with simple dots orbiting the center.
Gradient Icons
Beautiful gradient icons with glow effects for a modern look.
Integration Showcase
Perfect for landing pages to showcase product integrations.
Ring Configuration
Each ring in the rings array can be configured independently:
Ts Js
radius: 80 , // Distance from center in pixels
duration: 20 , // Animation duration in seconds (slower = higher)
reverse: false , // Rotation direction (false = clockwise)
initialRotation: 45 , // Starting angle in degrees
icon: < Icon />, // Any React node
className: '' , // Optional additional classes
Props
Prop Type Default Description ringsOrbitRing[]Required Array of orbit ring configurations centerContentReactNodeundefinedContent to display at the center pauseOnHoverbooleantruePause animation on hover/focus showOrbitsbooleantrueShow orbit path circles orbitClassNamestring""Additional classes for orbit paths classNamestring""Additional classes for container
OrbitRing Interface
Ts Js
radius : number ; // Distance from center
items : OrbitItem []; // Icons/elements on this ring
duration ?: number ; // Animation duration (default: 20s)
reverse ?: boolean ; // Reverse direction (default: false)
initialRotation ?: number ; // Starting angle (default: 0)
Tips
Opposite Directions : Alternate reverse between rings for visual interest
Speed Variation : Inner rings faster, outer rings slower creates depth
Icon Count : More icons on outer rings maintain visual balance
Pause on Hover : Allows users to focus on specific icons
Center Content : Use for logos, CTAs, or key messaging
Accessibility
Component is focusable with tabIndex={0}
Animation pauses on focus for keyboard users
Icons remain upright (counter-rotated) for readability
Code