GitPedia

Orbit

๐Ÿ’ซ Orbit is a framework designed for building any kind of radial UI.

From zumerlabยทUpdated June 11, 2026ยทView on GitHubยท

**Orbit** is a CSS framework for building radial UIs โ€” gauges, donuts, knobs, pie menus, dashboards โ€” with **CSS only**. No layout JavaScript. Works with plain HTML and any framework (React, Vue, Svelte). The project is written primarily in JavaScript, distributed under the MIT License license, first published in 2023. Key topics include: composer, css, css-framework, design-system, hacktoberfest.

Latest release: v1.4.8

Orbit CSS Composer

Orbit is a CSS framework for building radial UIs โ€” gauges, donuts, knobs, pie menus, dashboards โ€” with CSS only. No layout JavaScript. Works with plain HTML and any framework (React, Vue, Svelte).

<p align="center"> <a href="https://zumerlab.github.io/orbit-docs" target="_blank"><strong>๐Ÿš€ Live showcase &amp; docs</strong></a> </p> <p align="center"> <a href="https://www.npmjs.com/package/@zumer/orbit"><img src="https://img.shields.io/npm/v/@zumer/orbit" alt="npm"></a> <a href="https://github.com/zumerlab/orbit/stargazers"><img src="https://img.shields.io/github/stars/zumerlab/orbit" alt="Stars"></a> </p>

Why Orbit?

Radial UIs usually need JavaScript to compute angles, radii, and positions. Orbit handles all of that with CSS classes and a couple of Web Components. Drop in two files and start building.

Want ready-made components? orbit-kit wraps the common Orbit patterns into one-line custom elements โ€” gauges, charts, activity rings, knobs, pie menus, cockpit instruments, analog clocks, compasses and radars.

Installation

CDN (fastest):

html
<link rel="stylesheet" href="https://unpkg.com/@zumer/orbit@latest/dist/orbit.css"> <script src="https://unpkg.com/@zumer/orbit@latest/dist/orbit.js"></script>

npm:

bash
npm install @zumer/orbit
js
import '@zumer/orbit/style' import '@zumer/orbit'

Quick start

Minimal gauge in 10 lines:

html
<div class="bigbang"> <div class="gravity-spot"> <div class="orbit-4"> <o-progress value="72"></o-progress> </div> </div> </div>

Structure: bigbang (container) โ†’ gravity-spot (center) โ†’ orbit-N (ring level) โ†’ o-progress or o-arc (the visual element).


Core elements

ElementRole
.bigbangRoot container, sets viewport
.gravity-spotCenter of the radial layout; holds rings
.orbit-1 โ€ฆ .orbit-7Rings at different radii (1 = innermost)
.satelliteItem placed on a ring (dot, label, icon)
<o-arc>Arc segment (donut slice, gauge needle, menu sector); value 0โ€“100, shape e.g. arrow, circle-a
<o-progress>Simple progress ring
.vectorTick/marker on a ring
.sideStretch content along arc
.capsuleWrapper for content inside satellite; required when satellite holds more than plain text

Structure rules (avoid visual warnings):

  • .bigbang โ†’ direct children: .gravity-spot only
  • .gravity-spot โ†’ direct children: .orbit, .orbit-N, or .gravity-spot only
  • .satellite โ†’ direct children: .capsule or .gravity-spot (for nesting) only
  • .orbit / .orbit-N โ†’ do not nest other orbits; orbits live inside gravity-spot
  • o-arc and o-progress โ†’ only work in circular orbits; they are hidden in elliptical shapes

Useful classes: range-180, range-270, range-360 (arc span); from-180 (start angle); fit-range (distribute items); shrink-50, gap-4 (spacing); at-center (place satellite in middle).


Themes

Orbit includes built-in themes. Add the theme class to .bigbang:

ThemeClassDescription
Default(none)Transparent borders, gray fills, satellites use currentColor
Cyantheme-cyanCyan satellite borders, cyan vectors/sides, light cyan fills for o-arc and o-progress
Developerdev-orbitDashed red borders on orbits and satellites to visualize structure while debugging
html
<!-- Default (no class) --> <div class="bigbang">...</div> <!-- Cyan theme --> <div class="bigbang theme-cyan">...</div> <!-- Developer mode for layout debugging --> <div class="bigbang dev-orbit">...</div>

You can combine themes, e.g. class="bigbang theme-cyan dev-orbit".


Visual aids & development

Orbit provides CSS visual warnings to catch invalid structure. When rules are broken (e.g. wrong children in gravity-spot or satellite), Orbit shows a red dotted border, grays out content, and displays a โš ๏ธ icon.

Add class="dev-orbit" to your root container to enable developer mode: dashed red borders on gravity-spot, orbit, and satellite to visualize the layout structure. Useful for debugging.

html
<div class="bigbang dev-orbit"> <div class="gravity-spot"> ... </div> </div>

Orbit also checks browser support for :has() and trigonometric CSS functions (cos, sin); unsupported browsers show an upgrade message. See CSS visual aids in the full docs.


Examples

Browse examples on the Orbit docs site:

ExampleLink
Circular timercircular_time
Progress barsprogress
Charts (donut, pie, sunburst)charts
Gauges (180ยฐ, 240ยฐ, fuel)gauges
Knobsknobs
Pie menuspiemenu
Watch faceswatches
Chemical structureschemical_structures
Calendars & time plannerscalendar
Mandalasmandalas
Dashboarddashboard
Abstract orbital mapabstract_map

Use cases

  • Dashboards: gauges, status rings, KPIs
  • Automotive / HUD: speedometers, tachometers, battery, temp
  • IoT / Smart home: thermostats, energy rings, scenes
  • Ops / monitoring: status rings, uptime gauges
  • Fitness / health: activity rings (Move, Exercise, Stand)
  • Controls: knobs, radial menus, compass

Using Orbit with AI / LLMs

Orbit's radial model is unlike the box-flow layouts most models were trained on,
so an assistant generating Orbit markup from scratch will struggle. Give it the
reference first โ€” these files are written for that purpose:

  • llms.txt โ€” concise overview, structure rules, quick recipes.
  • llms-full.txt โ€” complete reference: every class, custom property, web component, and copy-paste pattern.

Paste the relevant one into your prompt (or your tool's context/rules) before
asking the model to build a radial UI.

Resources


License

MIT

Contributors

Showing top 2 contributors by commit count.

View all contributors on GitHub โ†’

This article is auto-generated from zumerlab/orbit via the GitHub API.Last fetched: 6/22/2026