section-046

Integrations Orbit

Included in the Vault Get the Vault
Open in new tab

A SaaS integrations section: the product mark sits at the centre of slowly counter-rotating rings of tool marks. Hover or focus a tool to stop its ring and open its detail card; category chips re-space the rings around the matches.

intermediate
8 more details
ticker-driven-layoutstate-transitioninterruptible-transitionskeyboard-navigationreduced-motionprogressive-enhancementcontainer-queriesresponsive-section

Released

About this section

Integrations Orbit answers the evaluator's first question about any SaaS product: does it work with the tools we already use? The product mark sits at the centre of three hairline rings, and every integration orbits it as a tinted tile. The rings turn slowly in alternating directions while the tiles stay upright.

Read the full section overview

Hovering, focusing or tapping a tool stops its ring, lifts the tile, grows a connector line from the centre and opens a card with the tool's name, what it syncs and a Connect action. Category chips (CRM, Payments, Analytics, Messaging) dim the other tools and each ring re-spaces itself around the matches. Quarry, a fictional customer workspace, is the worked example with fifteen invented tools. Every tool is one list item, so adding one is copying one block; on phones and without JavaScript the same list reads as a directory of cards.

Integrations Orbit - website section preview

What's included

8 items
  • Two to four concentric rings built from a data-ring attribute on each tool; alternating rotation with upright tiles
  • Hover, focus or tap a tool: its ring eases to a stop, a connector draws from the centre and a detail card opens beside it
  • Category chips dim non-matching tools and re-space every ring around the matches, interruptible mid-move
  • Each tool's Connect link is its keyboard stop; Escape closes the card
  • Icon pause and play control; rotation stops while the section is offscreen
  • Scroll-in reveal: rings draw in and tools spiral out onto their orbits, with no start-state flash
  • Below 620px the orbit becomes a two-row swipe row of tool cards
  • Full no-JS, missing-GSAP and reduced-motion directory; reduced motion keeps the rings still

Perfect for

4 use cases
  • SaaS integrations and "works with" sections
  • API platform SDK and language support
  • Smart-home hubs and their compatible devices
  • Marketplace or partner ecosystem overviews

How it works

1 section

Each tool is a list item with a ring number and a category, so the rings, the counts and the filters all come from the markup. The rings turn continuously while the tiles keep upright, and every change, whether a ring easing to a stop, a filter re-spacing a ring or the scroll-in spiral, blends into that motion instead of interrupting it. A filter gives matching tools a full share of their ring and dimmed tools about a third, so the matches spread out while the rest gather in the gaps. The detail card opens beside the tile, along the ring rather than across the connector, and stays inside the orbit at every position.

Difficulty Intermediate
Includes HTML + JS + CSS source, documentation, AI setup prompt, lifetime updates

Lighthouse, as measured

Google Lighthouse on this website section's demo, from the latest scan. A measurement of the demo as shipped, not a promise for your page.

Accessibility
100
Best practices
100

No performance score, on purpose. That figure depends on how you deploy: your server's compression and caching, your CDN, the connection and the device doing the test, none of which the code controls. The same page can score very differently on two consecutive runs, so measure it where it will live.

Integrations Orbit comes with the Vault.

Each product gives you the HTML, CSS and JavaScript source, the full documentation and an AI setup prompt, licensed for unlimited personal and commercial projects. Every paid product is tested for desktop and mobile layouts, reduced-motion handling, animation cleanup and keyboard controls wherever there is something to operate.

One payment, over 350 products, and future additions to the library.

Documentation

Quick start

Files:

  • index.html: the demo page. The section is everything from <section class="orbit-int" data-orbit …> to its closing </section>.
  • assets/style.css: all styles, scoped to .orbit-int.
  • assets/script.js: the behaviour (readable source).

Dependencies: GSAP 3.15.0 core (no plugins) and two Google Fonts, Onest and Red Hat Mono. No build step.

In your downloadThe working code for this step, in index.html.

The script mounts every [data-orbit] on the page when the DOM is ready. The <style> block in the demo's <head> only colours the demo page and is not needed.

The one-line inline <script> just inside the section adds orbit-int--pending, which hides the orbit stage until the main script has laid it out, so the tools never flash as a grid first. It removes itself after four seconds if the main script or GSAP never arrives, leaving the full directory. Keep it if you can; without it the section still works, with a brief grid-to-orbit jump on load.

Make it yours

Copy and actions

The heading, paragraph, the two action links and the note are plain HTML at the top of the section. Point the two https://example.com/... links at your integration directory and API docs, and delete the "fictional" note. The heading is an h2; change the tag freely, but keep its id matching the section's aria-labelledby.

The eyebrow count (<span data-orbit-count>) is filled in from the number of tools, so it never drifts.

Tools

Each tool is one <li> in <ul data-orbit-tools>:

In your downloadThe working code for this step, in index.html.

  • Add, remove or reorder tools by copying, deleting or moving whole <li> blocks. Order inside a ring is markup order.
  • data-ring puts the tool on a ring: 1 is the innermost. The rings are built from whatever numbers you use, so 1, 2 and 3 give three rings; two or three rings read best, four is the most that fits. Inner rings hold fewer tiles: about 4 on ring 1, 5 or 6 on ring 2 and 6 to 8 on ring 3 at the default size. A single tool on a ring is fine.
  • data-category must match one chip's data-orbit-filter value.
  • --tool is the tile colour. The glyph is white, so choose a mid-to-dark colour.
  • The mark is decorative (aria-hidden); the name in the card is what screen readers announce. To use a real logo, replace the <svg> with your own inline SVG or an <img src="logos/fernpay.svg" alt="" width="26" height="26">. Logos are shown at 26px in the orbit and 22px in the directory.
  • The Connect link is the tool's keyboard stop. Keep the hidden tool name inside it so every link has a distinct label.

Categories

The chips live in <div data-orbit-filters>. Each <button data-orbit-filter="crm"> matches tools with data-category="crm"; keep the all chip first. Add or remove chips freely. The status line under the chips reads its wording from data-orbit-status-all and data-orbit-status-some, where {count} and {category} (the chip's text) are filled in.

Brand variables

All on .orbit-int in assets/style.css:

Variable Default Controls
--orbit-ground #0b0c0f Section background
--orbit-ink #eef0f3 Headline and names
--orbit-muted / --orbit-quiet #9aa1ab / #878e98 Secondary and small text
--orbit-accent / --orbit-on-accent #c8f25a / #0b0c0f Primary button, Connect pill, connector line, focus ring, centre glyph
--orbit-panel #15171c Detail cards and directory cards
--orbit-line / --orbit-line-strong white at 10% / 20% Rings, borders
--orbit-display / --orbit-mono Onest / Red Hat Mono Type roles
--orbit-width 1240px Content width
--orbit-stage 640px Largest orbit diameter
--orbit-tile 56px Tile size in the orbit
--orbit-radius 14px Card corners

A light rebrand, for example: --orbit-ground:#f6f5f2; --orbit-ink:#16171a; --orbit-muted:#55595f; --orbit-quiet:#61656b; --orbit-panel:#ffffff; --orbit-line:rgba(0,0,0,.1); --orbit-line-strong:rgba(0,0,0,.2); --orbit-accent:#3048d9; --orbit-on-accent:#ffffff; and set color-scheme:light on the same rule. Check text contrast after any colour change.

The centre mark is the inline SVG in .orbit-int__hub-mark, with the product name in .orbit-int__hub-name; replace both with your own.

Behaviour and options

  • Layout switch: at 620px of section width and wider the tools orbit; below it they read as a two-row swipe row of cards. Without JavaScript, or if GSAP fails to load, the tools read as a directory grid at every width.
  • Speed: data-orbit-speed="0.5" on the section halves the rotation speed; 2 doubles it. Ring periods are 60, 85 and 120 seconds per turn at speed 1 (RING_PERIODS near the top of the script).
  • Pause: the round icon button pauses and resumes all rings. Rotation also stops whenever the section is off screen.
  • Reveal: the first time the section is 15% visible, the rings draw in and the tools spiral out onto their orbits.
  • API: window.IntegrationsOrbit has mount(root), mountAll(scope), destroy(root) and get(root). get(root) returns { filter(category), pause(), play(), destroy() }. destroy stops the ticker and observers, removes listeners and the generated SVG, and returns the section to the plain directory layout.

Accessibility and integration

  • Every tool's details are real text in the markup at all times; the orbit only positions them.
  • Keyboard: Tab reaches each tool's Connect link, which opens that tool's card, stops its ring and draws the connector. Escape closes the card. Chips are buttons with aria-pressed; the status line announces the highlight politely.
  • Touch: tap a tile to open its card, tap it again or anywhere else to close it.
  • Reduced motion: the rings start still with no reveal, and filter changes jump into place. The play button lets a visitor opt in to rotation. Changing the setting while the page is open is followed.
  • Dimmed tools stay reachable and readable; the filter highlights, it never hides.
  • The section never installs smooth scrolling or changes the host page's scrolling. The phone swipe row is an ordinary horizontal scroller.
  • Each section instance runs independently; several can share a page. A duplicated heading id is made unique automatically.
  • The section sets overflow:hidden on its root so the orbit never causes sideways page scroll.

Dependencies and credits

  • GSAP 3.15.0 core, loaded from jsDelivr.
  • Onest and Red Hat Mono, SIL Open Font License, from Google Fonts.
  • All tool names, glyphs and the Quarry mark are original placeholders drawn for this section. They are not real products or brands.

Also in your download: the full source, worked examples, the events and programmatic API, and the class reference.

Included in the Vault Get the Vault