Skip to main content
Version: Next

Orbiter

ui-orbiter powers Orbiter, formerly OrbitingCircles, as the framework-agnostic orbital motion primitive from @editora/ui-core. It arranges slotted items around one or more circular paths with an optional center node, making it useful for launch heroes, product diagrams, status clusters, and motion-forward navigation or system maps.

Best For

  • Hero sections that need structured motion
  • Product or AI system maps
  • Status clusters around a single control center
  • Branded, premium motion surfaces that still keep content legible

Import

import '@editora/ui-core';

Basic Usage

<ui-orbiter variant="glass" tone="brand" rings="2" path="true" pause-on-hover>
<div slot="center" data-ui-orbiter-center>Core</div>

<button data-ui-orbiter-item aria-label="Search">🔎</button>
<button data-ui-orbiter-item aria-label="Alerts">🔔</button>
<button data-ui-orbiter-item aria-label="Assets">📁</button>
</ui-orbiter>

Multi-Ring Layout

<ui-orbiter
variant="solid"
tone="info"
size="lg"
rings="3"
radius="84"
ring-gap="26"
center-size="148"
icon-size="46"
direction="alternate"
animation="snappy"
path="true"
>
<div slot="center" data-ui-orbiter-center>
<strong>Synced</strong>
<div>12 active systems</div>
</div>

<button data-ui-orbiter-item aria-label="Signals"></button>
<button data-ui-orbiter-item aria-label="Alerts">🔔</button>
<button data-ui-orbiter-item aria-label="Trust">🛡️</button>
<button data-ui-orbiter-item aria-label="Metrics">📈</button>
</ui-orbiter>

Slot Structure

Use these markers:

  • data-ui-orbiter-item: marks an orbiting node
  • slot="center" and data-ui-orbiter-center: marks the center node

If you omit the marker attributes, the element will apply them automatically to slotted children it manages.

Motion And Layout

  • rings distributes items across multiple concentric orbits.
  • radius controls the first ring size.
  • ring-gap adds spacing between outer rings.
  • start-angle rotates the starting arrangement.
  • direction supports clockwise, counterclockwise, and alternate.
  • reverse flips the orbit direction.
  • delay and speed control start timing and playback speed.
  • pause-on-item-hover pauses only when the pointer is over a slotted orbit node.
  • animation picks a named motion profile: calm, smooth, snappy, or bouncy.

Multiple rings automatically offset their starting angle so the next ring does not land items directly on top of the inner one.

Variants And Tone

ui-orbiter uses the same token-driven surface model as the stronger design-system components:

  • surface
  • soft
  • solid
  • glass
  • contrast
  • minimal

The chosen tone affects the shell, orbital paths, center node, and orbiting item surfaces.

Attributes

AttributeTypeDefaultDescription
durationCSS time18sFull orbit duration
delayCSS time0sDelay before the orbit starts
speednumber1Playback speed multiplier
reversebooleanabsentReverses the orbit direction
radiusCSS length88pxRadius of the first ring
pathboolean-liketrueShows the circular guide paths
icon-sizeCSS length52pxOrbiting node size
center-sizeCSS length128pxCenter node size
ring-gapCSS length28pxGap between rings
ringsnumber1Number of orbit rings
start-anglenumber-90Initial angle in degrees
directionclockwise | counterclockwise | alternateclockwiseOrbit direction pattern
animationcalm | smooth | snappy | bouncysmoothNamed motion preset
variantsurface | soft | solid | glass | contrast | minimalsurfaceSurface treatment
tonebrand | neutral | info | success | warning | dangerbrandAccent tone
sizexs | sm | md | lg | xl | 0 | 1 | 2 | 3 | 4mdPreset scale
surface-radiusCSS length or semantic tokenShell radius override
elevationnone | low | highlowSurface shadow depth
paddingCSS lengthsize-basedShell padding
pause-on-hoverbooleanabsentPauses while hovered
pause-on-item-hoverbooleanabsentPauses only while hovering an orbit item
pause-on-focusbooleanabsentPauses while any child is focused
pausedbooleanabsentForces the orbit to pause

Methods

const orbit = document.querySelector('ui-orbiter');
orbit?.pause();
orbit?.play();
orbit?.refresh();

Notes

  • Reduced-motion environments disable the orbital animation automatically but keep the layout intact.
  • Numeric length and time values are normalized for you.
  • This component is intended for small-to-medium item counts; it is not a dense graph visualization.
  • Legacy aliases orbit-radius, item-size, and show-paths still work, but radius, icon-size, and path are the preferred names.