Xzero UI
Pro library

Orbit logosPro

An integrations showcase with brand logos orbiting your product mark on tilted rings. Hover or focus one to rest the orbit, draw a connection, and see what it does.

$ pnpm dlx shadcn@4.23.0 add @xzero-ui-pro/orbit-logos
Live · keyboard ready

When to use

When not to use

Installation

Register both Xzero UI namespaces in your project's components.json:

{
  "registries": {
    "@xzero-ui": "https://mcp.xzero.co.uk/r/{name}.json",
    "@xzero-ui-pro": "https://mcp.xzero.co.uk/r/pro/{name}.json"
  }
}
npx shadcn@4.23.0 add @xzero-ui-pro/orbit-logos

Install xzero-foundation once, and import @/components/xzero/foundation.css in your app root. No Xzero token is used by this snapshot. For sample portraits, photos, fonts, or logos, download https://mcp.xzero.co.uk/install-assets.mjs and run node xzero-install-assets.mjs <receiving-project>.

Usage

import { OrbitLogos } from "@/components/xzero/orbit-logos/orbit-logos";

// Path data from Simple Icons (CC0) follows the text color; image URLs keep full brand color.
const integrations = [
  { name: "Stripe", icon: "/logos/stripe-color.svg", category: "Payments", description: "Starts trials and bills usage", href: "https://docs.stripe.com" },
  { name: "Vercel", icon: "m12 1.608 12 20.784H0Z", category: "Dev", description: "Comments preview links on builds", connected: true },
  { name: "Slack", icon: "/logos/slack-color.svg", category: "Comms", description: "Posts deploy alerts to your channels" },
];

export function Integrations() {
  return <OrbitLogos
    logos={integrations}
    center={<ProductMark />}
    onConnect={logo => api.connect(logo.id ?? logo.name)}
  />;
}

API reference

OrbitLogos

An integrations orbit: your product mark at the center with brand logos on two flat rings that turn slowly and hold still whenever the pointer or keyboard focus is inside. Category chips turn the matching logos toward the detail side and dim the rest. Choosing a logo springs its ring so the logo glides to a fixed focus spot, draws an accent connector from the center, and morphs a detail card out of the chip with a description, status, a Connect action, Docs, and previous and next.

PropTypeDefaultDescription
logos (required){ id?: string; name: string; icon: string | ReactNode; color?: string; category?: string; description?: string; connected?: boolean; href?: string }[]–Logos to show. icon is SVG path data on a 24 by 24 viewBox (the Simple Icons format) painted in color, an image URL for a full color mark, or any ReactNode. Leave color out for black and white brands so the mark follows the text color. category builds the filter chips, description is the line in the card, connected sets the starting status, and href adds a Docs link.
centerReactNode–Content of the center disc, such as your product mark. Defaults to a simple mark in the accent color.
onSelect(logo: OrbitLogo | null, index: number) => void–Called when a logo opens, when previous or next steps to another, and with null and -1 when the card closes.
onConnect(logo, index) => void | Promise<unknown>–Called by the Connect button. Return a promise to hold the connecting state until it settles; a rejection shows Try again. Without a promise the card simulates a short connection.
defaultSelectedstring | nullnullId (or name) of the logo open on first render.
selectedstring | null–Controlled id (or name) of the open logo; null closes the card. Pair it with onSelect.
speednumber1Multiplies the rotation speed. At 1 the inner ring turns once every 64s and the outer ring every 88s. 0 holds the orbit still.
pausedbooleanfalseHolds the orbit still, for a page level motion control.
allLabelstring"All"Label of the first category chip.
labelstring"Integrations"Accessible name of the logo list and the idle panel title.
classNamestring–Extra class on the root.
styleCSSProperties–Inline styles on the root.

Keyboard interactions

KeysAction
TabMoves into the category chips, then to one logo in the orbit, then into the card. The orbit holds still while focus is inside.
Arrow keysStep to the previous or next logo in the current category. With a card open, the card and the ring follow.
Home / EndJump to the first or last logo in the current category.
Enter / SpaceOpens the focused logo, or closes it if it is already open.
EscapeCloses the card and returns focus to its logo.

Accessibility

Motion

Responsive behavior

Performance

Notes for AI

Also in playful

Guidance for AI tools

Orbit logos: An integrations showcase with brand logos orbiting your product mark on tilted rings. Hover or focus one to rest the orbit, draw a connection, and see what it does. Follow the declared prop types and do not invent props. Keep keyboard access, reduced motion support, and both light and dark themes intact when adapting it.

Full library index: https://ui.xzero.co.uk/llms.txt

Browse all components