# thinking-indicator
Animated thinking state while the agent works.
──
examples
Default
Dim thinking row with the animated dot matrix.
Thinking…
Dot matrix variations
TerminalDotMatrix is customizable — speed, trail, pulseCenter, dotSize, color, or fully custom frames for your own pattern.
default (spin)
fast · long trail
short trail
no center pulse
active tone
green · larger
custom frames (ripple)
──
install
npx shadcn@latest add "https://www.terminal-kit.com/r/thinking-indicator.json"
──
component api
ThinkingIndicator
Animated thinking state while the agent works. BusyIndicator is a deprecated alias.
PropTypeDefaultDescription
labelstringStatus text. Alias for children when both are strings.
childrenReactNodeStatus content. Overrides label when provided.
variant"auto" | "dots" | "ascii" | "cursor""auto"auto — ASCII symbol loop on Claude, blinking cursor on grok, dot matrix on default. ascii, cursor, and dots force a specific animation.
tone"default" | "active""default"Text emphasis — active uses brighter foreground.
dotPropsPartial<TerminalDotMatrixProps>Customize the dot animation — speed, trail, pulseCenter, dotSize, color.
asciiPropsPartial<TerminalAsciiSpinnerProps>Customize the Claude-style symbol loop — frames, speed, color. Defaults to CLAUDE_THINKING_FRAMES.
sessionTailbooleanSessionContent integration — skip the streaming queue and render at the transcript tail (e.g. live thinking). Not used by ThinkingIndicator itself; SessionContent reads this off the child element.
classNamestringAdditional CSS classes.
advanced
TerminalDotMatrix
Low-level 3×3 dot animation primitive used by ThinkingIndicator.
PropTypeDefaultDescription
speednumber120Milliseconds per ring step (lower is faster).
trailnumber4Number of cells that fade behind the comet head.
pulseCenterbooleantruePulse the center dot as a core. Pass false to leave it dark.
dotSizenumber2Dot size in pixels.
colorstringOverride the dot color (any CSS color). Defaults to the tone color.
tone"default" | "active""default"Color preset used when color is not set.
framesReadonlyArray<number[]>Custom animation — a list of frames, each 9 opacity values (0–1) for the 3x3 grid, row-major. Overrides the built-in spin.