Orbital Image Wheel

A circle of images that rotates with drag momentum, auto-rotation, and keyboard stepping, highlighting the item at the top of the circle.

Open in v0

Last updated: August 13, 2026

Installation

npx smoothui-cli add orbital-image-wheel

Features

  • Images arranged on a circle, positioned with trigonometry from a single rotation value
  • Drag to spin with momentum that decays naturally after release
  • Optional snap to settle on the nearest item after a drag or momentum
  • Optional continuous autoRotate, paused on hover, focus, and when the tab is hidden
  • faceOutward tilts each thumbnail to face away from the center
  • Fully controlled or uncontrolled rotation, plus an activeId override for the highlighted item

Accessibility

ARIA Attributes

AttributeElementPurpose
role="application"Wheel containerMarks the wheel as a custom interactive widget with its own keyboard/drag behavior
aria-label="Orbital image wheel"Wheel containerGives the widget a descriptive name
aria-labelEach thumbnail buttonAnnounces the item's label or alt text
aria-current="true"Highlighted thumbnailMarks the item currently at the top of the circle
aria-live="polite"Visually-hidden status textAnnounces which item becomes highlighted

Keyboard

KeyAction
Arrow RightStep forward by one item
Arrow LeftStep backward by one item
TabMove focus between thumbnail buttons
Enter / SpaceActivate a focused thumbnail, bringing it to the top

Screen Reader

  • Every image is rendered inside a real <button> with an aria-label, so each item is independently focusable and announced.
  • The highlighted item is marked with aria-current="true", and a visually-hidden live region announces the current selection as the wheel rotates.

Reduced Motion

This component respects prefers-reduced-motion via useReducedMotion from Motion. When reduced motion is preferred, autoRotate never starts, drag release never applies momentum (rotation stops immediately), and keyboard/click stepping snaps instantly instead of tweening.

Props

Created by

Powered by

motion.dev

© 2026 SmoothUI. Built by Eduardo Calvo.