Thinking Orbs

Dotted thought-orb loading indicators for AI & agent UIs — nine hand-tuned animated states, rendered on a plain 2D canvas. No WebGL, no filters, identical pixels in every browser.

working
searching
solving
listening
connecting
weaving
composing
breathing
shaping

Installation

Terminal
npx gotlui add thinking-orbs

Usage

page.tsx
import { ThinkingOrb } from "@/components/gotlui/thinking-orbs"

function Status() {
  return <ThinkingOrb state="searching" size={64} />
}

Key props

PropTypeDescription
state'working' | 'searching' | 'solving' | 'listening' | 'connecting' | 'weaving' | 'composing' | 'breathing' | 'shaping'Which of the nine tuned animations to show. Default 'working'.
size64 | 32 | 20Tuned size preset in CSS px — 64 (avatar) and 20 (inline) are hand-tuned designs, 32 is interpolated. Default 64.
theme'auto' | 'dark' | 'light'Ink color for the substrate; auto detects from an ancestor's data-theme/.dark class or prefers-color-scheme, live.
speednumberMultiplier on the preset's baked speed. Default 1.
pausedbooleanFreeze on the current frame. Default false.
colorstringOptional ink tint (#rgb, #rrggbb or rgb()), keeping the depth-shading ramp. Omit for stock grayscale.
dotsnumberDensity multiplier for dot/strand/node counts. Default 1.
dotSizenumberRadius multiplier for every dot. Default 1.
gravityboolean | GravityOptionsThe orb pulls the pointer in as it nears, warping a raster of the real cursor toward its centre. Off by default; needs a supplied cursor sprite.