Components
Logo Orbit
Logos spaced evenly around a ring that rotates while each stays upright.
Logos sit evenly spaced around a ring that rotates continuously, while GSAP
counter-rotates each logo so it always stays upright. Hover pauses the
orbit by default (pauseOnHover). Set the size and speed to taste. Driven
by GSAP.
Installation
pnpm dlx shadcn@latest add @tween-ui/logo-orbitUsage
app/page.tsx
import LogoOrbit from '@/components/tweenui/orbit/logo-orbit';
const logos = [
{ src: '/logos/slack.svg', alt: 'Slack' },
{ src: '/logos/figma.svg', alt: 'Figma' },
{ src: '/logos/github.svg', alt: 'GitHub' },
{ src: '/logos/linear.svg', alt: 'Linear' },
];
export default function Page() {
return <LogoOrbit logos={logos} size={320} speed={1} />;
}Props
| Prop | Type | Default | Description |
|---|---|---|---|
logos | { src, srcDark?, alt }[] | — | Logos placed evenly around the ring. srcDark swaps in under .dark. |
size | number | 320 | Ring diameter in pixels. |
speed | number | 1 | Rotation multiplier (1 = one turn every ~20s). |
pauseOnHover | boolean | true | Pause the orbit while the pointer is over it. |
Extends native <div> attributes (className, style, …).
Accessibility
Each logo keeps its alt text. The rotation is decorative; under
prefers-reduced-motion: reduce the ring holds still with the logos laid out
statically around it.