A transparent warm arc that fades along a thin circular track, with a blurred bloom behind it. Rotation is opt-in and pauses under reduced motion; the backdrop and grain are left to the consumer.
The source comes with full access.
One payment of $149 ($49 for now) opens the source right here and lets the CLI install every paid component, with lifetime updates.
pnpm dlx shadcn add @01orbital/ember-orbitnpx shadcn add @01orbital/ember-orbityarn shadcn add @01orbital/ember-orbitbunx --bun shadcn add @01orbital/ember-orbitPart of the 01orbital library. With a license, put ORBITAL_TOKEN in .env.local and the same command installs it (licensed install, pricing).
It lands at components/motion/ember-orbit.tsx, as source you own and edit.
The example also uses orbital-v4. Install it too:
pnpm dlx shadcn add @01orbital/orbital-v4npx shadcn add @01orbital/orbital-v4yarn shadcn add @01orbital/orbital-v4bunx --bun shadcn add @01orbital/orbital-v4import { EmberOrbit } from "@/components/motion/ember-orbit"
import { Orbital } from "@/components/orbs/orbital-v4"
const EMBER = {
ground: "oklch(0.30 0.07 40)",
upper:
"radial-gradient(ellipse 135% 105% at 50% 35%, oklch(0.88 0.12 70) 0%, oklch(0.72 0.15 50 / 0.7) 52%, transparent 100%)",
lower:
"radial-gradient(ellipse 130% 95% at 50% 80%, oklch(0.30 0.09 30) 0%, oklch(0.30 0.09 30 / 0.8) 56%, transparent 100%)",
glow: "oklch(0.86 0.11 65)",
form: "strong",
} as const
// The orb is the lamp: warm ground close in, cooling to near-black at the edge.
const LIT_GROUND =
"radial-gradient(circle at 50% 50%, oklch(0.40 0.09 45 / 0.6) 0%, oklch(0.28 0.06 40 / 0.4) 20%, oklch(0.20 0.03 35 / 0.15) 46%, transparent 70%)"
export default function EmberOrbitDemo({
animated = false,
}: {
animated?: boolean
}) {
return (
<div
data-demo="ember-orbit"
className="relative grid min-h-full w-full flex-1 place-items-center overflow-hidden"
style={{ backgroundImage: LIT_GROUND }}
>
<div className="relative grid size-[min(84vw,600px)] place-items-center">
<EmberOrbit
size={600}
animated={animated}
className="absolute inset-0"
style={{ width: "100%", height: "100%" }}
/>
<EmberOrbit
size={600}
duration={38}
animated={animated}
className="absolute inset-[13%] rotate-150 opacity-70"
style={{ width: "74%", height: "74%" }}
/>
<Orbital palette={EMBER} size={190} grain={0.25} className="relative" />
</div>
</div>
)
}Prop
Type
It also accepts the HTML attributes of the element it renders.
npm: cn. The CLI installs them for you.
No other registry pieces.
Bead Ring
A hairline ring in one color with a lit bead riding its track. Only the ring turns, so rings nest and an orb can sit still in the centre; rotation stops under reduced motion.
Fish Orb Bowl
A circular window onto the sunlit Fish School scene, where each fish orbits on its own CSS motion path among rising bubbles. Seed, fish count and bubble count vary the school; requires fish-school-light-scene.