Thinking Orbs
A TOOLANDTEA TOOL + GUIDE

A little orb.
A lot of possibilities.

Give your interface a little movement. Explore nine Thinking Orbs animations, find your favorite, and copy the code for your own site.

Open the playground Free to explore · No setup needed
A white dotted Thinking Orb in the Listening state against a charcoal background.

What is the orb playground?

It’s a big, interactive preview of Thinking Orbs: small animated components for loading, thinking, and other interface states. Choose an animation, adjust its appearance, and use Copy JSX to take your settings into a React project. You can play with everything here before writing any code.

Find your kind of movement.

Open the playground and choose a state on the left. Focus gives the orb most of the canvas. Switch to Compare to see the nine animations together, then select one to get a closer look.

Working
Particles following their own little orbits.
Searching
A scan sweeping across a dotted globe.
Solving
Bands scrambling, then finding their place.
Listening
A waveform rolling through rings.
Connecting
A constellation finding its connections.
Weaving
Three strands plaiting around a sphere.
Composing
A ribbon that keeps taking shape.
Breathing
A soft ring expanding and shifting.
Shaping
A circle, triangle, and square in motion.

These are visual states. Your app decides when to show each one.

Make it feel right.

Slow it down or speed it up. Try the grey-and-white dark theme, or switch to light. Pause when you want to study a shape, and use fullscreen for a closer look.

Speed
Changes the animation pace, from 0.1× to 3×.
Scale
Magnifies the preview from 30% to 150%. It does not change the size in your copied code.
Detail
Choose the 64 px detailed preset or the 20 px compact preset. This is the size included in your code.
Theme & pause
Your light or dark choice and paused state are included in the snippet too.

Give the cursor a little Gravity.

Turn Gravity on and move your mouse or trackpad pointer near the orb. The cursor bends toward it while its click position stays in place. Try this in Focus view on a desktop.

The copied code updates to include gravity={{ sprite: arrowCursor }}. It also switches to the included Gravity component and cursor imports.

Taking Gravity into your own project?

Download the helpers too. Unzip them and place the gravity folder beside the component where you paste your snippet. The supplied adapter works with thinking-orbs@0.3.1, which does not include Gravity on its own.

Download Gravity files

Gravity uses a desktop pointer and switches off when reduced motion is enabled. Touch users can still explore every orb animation.

Copy it. Make it part of your site.

Once you like the result, choose Copy JSX in the playground. The snippet follows your selected state, detail, theme, speed, pause, and Gravity settings.

For a React project, install the version used in this playground:

npm install thinking-orbs@0.3.1

Put the import at the top of your component file and the orb inside its returned JSX. Here is a simple example with Gravity off:

import { ThinkingOrb } from 'thinking-orbs';

export default function Orb() {
  return (
    <ThinkingOrb
      state="listening"
      size={64}
      theme="dark"
    />
  );
}

Working with an AI coding assistant? Paste your copied snippet with this prompt. If Gravity is on, attach the downloaded helpers as well.

Add my orb
Add the Thinking Orb from the snippet below to my React project. Install thinking-orbs@0.3.1 and preserve the settings in the snippet. Keep the orb on a background that suits its selected theme, and give its status a useful text label.

If the snippet uses Gravity, use the attached helper files and keep their relative imports working. If this is a Next.js App Router project, put the interactive orb in a client component.

Here is my snippet:
[Paste the code copied from the playground here]
Make it yours: replace anything in [brackets].
Find your orb

Common questions

Does the Listening animation use my microphone?

No. Listening is the name of a visual animation. This playground does not record audio or request microphone access.

Why is the orb smaller when I copy it?

Scale is a preview magnifier so you can see the movement clearly. The copied size follows the detailed 64 px or compact 20 px preset. The preview scale is not an extra ThinkingOrb prop.

Why is Gravity not visible?

Use a mouse or trackpad in Focus view and move close to the orb. Gravity is disabled for reduced motion and touch input, and can suspend during zoom changes or expensive frames.

Why does my preview start paused?

The playground starts paused when your device requests reduced motion. You can choose Play if you want to view the animation.

Can I use this without a React project?

You can explore the entire playground in your browser. The copied JSX is for React, so adding it to another type of site will need a React integration or help from your site developer.

Sources & notes

Playground and guide by toolandtea. The orb animations and Gravity implementation come from Jakub Antalik’s MIT-licensed Thinking Orbs / Libraries.dev project. This playground uses the 0.3.1 animation engine and includes the Gravity adapter and license with the download.