# thinking-orbs
Dotted thought-orb loading indicators for AI & agent UIs. Six hand-tuned animated states, each shipped at two purpose-tuned sizes, rendered on a plain 2D canvas — no WebGL, no filters, works identically in Chrome, Safari and Firefox.
[Live demo](https://orbs.jakubantalik.com) · [Repository](https://github.com/Jakubantalik/thinking-orbs) · [Report an issue](https://github.com/Jakubantalik/thinking-orbs/issues)
## Install
```bash
npm install thinking-orbs
```
## Quick start
```tsx
import { ThinkingOrb } from 'thinking-orbs';
function Status() {
return ;
}
```
## States
Six verbs an agent can be doing, each a distinct animation:
```tsx
{/* particles on tilted orbits */}
{/* a scan meridian sweeps a dotted globe */}
{/* bands scramble, then click back solved */}
{/* a waveform rolls through the rings */}
{/* an undulating multi-band sash */}
{/* dotted outline: circle → triangle → square */}
```
## Sizes
Two tuned presets — separate designs, not a scale factor. `64` for chat-avatar scale, `20` for inline-text scale. Each carries its own dot count, dot size and speed tuning:
```tsx
```
## Theme
Strictly monochrome — light ink for dark backgrounds, dark ink for light backgrounds — with the mode picked automatically from the host project:
```tsx
{/* default — detects from the project */}
{/* pin: light dots for dark backgrounds */}
{/* pin: dark dots for light backgrounds */}
```
`auto` resolves in three layers and updates live when any of them change:
1. an ancestor `data-theme="dark|light"` attribute or `dark`/`light` class (the Tailwind / shadcn convention), watched via `MutationObserver`;
2. otherwise `prefers-color-scheme`, subscribed for live OS theme switches;
3. SSR-safe — the canvas paints only on the client, after the theme has resolved.
## Other props
```tsx
```
All other `