Logo Orbit
Concentric rotating rings of logos, icons, or labels around a central hub. Optional links per item.
Default
Live controls for orbit scale, per-ring motion, proximity slowdown, presets, and reset
logo-orbit-example.tsx
1import {2 Bell,3 Camera,4 Cloud,5 Code2,6 Folder,7 Heart,8 Layers3,9 Search,10 Sparkles,11 Star,12} from "lucide-react";1314import { LogoOrbit, type OrbitRing } from "@/registry/ui/logo-orbit";1516const rings: OrbitRing[] = [17 {18 id: "inner",19 diameter: 20,20 duration: 16,21 direction: "clockwise",22 items: [23 {24 id: "search",25 label: "Search",26 content: <Search />,27 },28 {29 id: "heart",30 label: "Favourites",31 content: <Heart />,32 },33 {34 id: "star",35 label: "Featured",36 content: <Star />,37 },38 {39 id: "notifications",40 label: "Notifications",41 content: <Bell />,42 },43 ],44 },45 {46 id: "middle",47 diameter: 40,48 duration: 28,49 direction: "counter-clockwise",50 offset: 20,51 opacity: 0.8,52 items: [53 {54 id: "react",55 content: "React",56 variant: "label",57 },58 {59 id: "typescript",60 content: "TypeScript",61 variant: "label",62 },63 {64 id: "camera",65 label: "Media",66 content: <Camera />,67 },68 {69 id: "cloud",70 label: "Cloud",71 content: <Cloud />,72 },73 {74 id: "code",75 label: "Development",76 content: <Code2 />,77 },78 {79 id: "folder",80 label: "Projects",81 content: <Folder />,82 },83 ],84 },85 {86 id: "outer",87 diameter: 60,88 duration: 44,89 direction: "clockwise",90 offset: 10,91 opacity: 0.45,92 items: [93 {94 id: "next",95 content: "Next.js",96 variant: "label",97 },98 {99 id: "supabase",100 content: "Supabase",101 variant: "label",102 },103 {104 id: "stripe",105 content: "Stripe",106 variant: "label",107 },108 {109 id: "vercel",110 content: "Vercel",111 variant: "label",112 },113 {114 id: "node",115 content: "Node.js",116 variant: "label",117 },118 {119 id: "tailwind",120 content: "Tailwind",121 variant: "label",122 },123 {124 id: "postgres",125 content: "Postgres",126 variant: "label",127 },128 {129 id: "motion",130 content: "Motion",131 variant: "label",132 },133 ],134 },135];136137export function LogoOrbitDemo() {138 return (139 <LogoOrbit140 orbitScale={1}141 proximitySlowFactor={2.5}142 rings={rings}143 center={144 <div className="grid size-10 place-items-center rounded-xl bg-linear-to-br from-white to-violet-500 text-sm font-black text-neutral-950">145 TT146 </div>147 }148 />149 );150}
Logo Orbit Controls
Select a ring to tune its motion independently.
Selected ringinner
Orbit scale1
Diameter20%
Duration16s
Directionclockwise
Global proximity slowdown2.5
Applies while the pointer hovers an orbit item.
Edge cases
Concentric rotating rings of logos, icons, or labels around a central hub. Optional links per item.
Custom integration
v2.4
Operational
React
A deliberately long integration name
Beta
UI
Sign in to view this example's source code.
Sign inLabel only
Concentric rotating rings of logos, icons, or labels around a central hub. Optional links per item.
Sign in to view this example's source code.
Sign inProps
| Name | Type | Default | Description |
|---|---|---|---|
| center | ReactNode | Required | Content rendered in the fixed hub at the center of the orbit |
| rings | OrbitRing[] | Required | Concentric orbit layers. Each ring has id, diameter (% of container, recommended 30-88), optional duration (seconds per rotation, default 24), direction (clockwise | counter-clockwise), offset (starting angle in degrees), opacity, proximitySlowFactor, items, and className. Each OrbitItem has id, content (icon, image, label, or custom node), optional label, angle, variant (tile | label | bare), and className |
| centerClassName | string | undefined | Classes applied to the center hub container |
| ringClassName | string | undefined | Shared classes applied to every ring border |
| itemClassName | string | undefined | Shared classes applied to every orbiting item |
| orbitScale | number | 1 | Scales every ring's diameter without editing each ring individually |
| proximitySlowFactor | number | 1.65 | How much rings slow when the pointer is near an item. 1 = no slowdown, 2 = half speed, 4 = quarter speed. Individual rings can override with their own proximitySlowFactor |
| decorative | boolean | true | When true, marks orbiting items as decorative for assistive technology |
| className | string | undefined | Classes on the outer shell |