Reasoning Text

Status line that shows an agent is still working.

Thinking…Searching the web…Indexing repo…

Installation

pnpm dlx shadcn@latest add @paneui/reasoning-text

Usage

Examples

Spinners

Use to match the spinner to the tone of your interface.

Controlled Index

Use when you know the agent's real current step; it then stops cycling on its own.

Custom Indicator

Use when your product already has its own loading mark.

Without Ellipsis

Use when your phrases carry their own punctuation.

ASCII Spinner

Motion

Under reduced motion the swap mode cross-fades instead of blurring and rolling, the cascade mask stops sweeping, and AsciiSpinner holds its first frame with a soft pulse.

Accessibility

The line is a polite role="status" region. The current phrase is read from a screen-reader-only copy; the animated text and the spinner are aria-hidden.

API Reference

ReasoningText

A spinner plus a shimmering phrase that cycles while the agent works. Also accepts every prop of span.

phrases= ["Thinking", "Reading the context", "Weighing the options", "Drafting a reply"]
string[]
Phrases cycled while the agent works. A single phrase never changes.
mode= "swap"
"swap" | "cascade" | "scramble"
Transition between phrases. swap blurs and rolls, cascade rolls letter by letter, scramble scrambles the letters.
interval= 2400
number
Milliseconds each phrase stays up.
index
number
Controlled phrase index; when set, the component stops cycling on its own.
shimmerDuration= 1.8
number
Seconds per shimmer sweep.
indicator
ReactNode
Leading glyph. Defaults to an AsciiSpinner; pass null to hide.
spinner= "braille"
"braille" | "dots" | "line" | "star"
Frame set used by the default indicator.
ellipsis= true
boolean
Append an ellipsis to every phrase.
PropTypeDefaultDescription
phrasesstring[]["Thinking", "Reading the context", "Weighing the options", "Drafting a reply"]Phrases cycled while the agent works. A single phrase never changes.
mode"swap" | "cascade" | "scramble""swap"Transition between phrases. swap blurs and rolls, cascade rolls letter by letter, scramble scrambles the letters.
intervalnumber2400Milliseconds each phrase stays up.
indexnumber—Controlled phrase index; when set, the component stops cycling on its own.
shimmerDurationnumber1.8Seconds per shimmer sweep.
indicatorReactNode—Leading glyph. Defaults to an AsciiSpinner; pass null to hide.
spinner"braille" | "dots" | "line" | "star""braille"Frame set used by the default indicator.
ellipsisbooleantrueAppend an ellipsis to every phrase.
data-mode
The current mode.
Data attributeDescription
data-modeThe current mode.

AsciiSpinner

A decorative monospace glyph that ticks through terminal spinner frames. Also accepts every prop of span.

kind= "braille"
"braille" | "dots" | "line" | "star"
Which frame set to cycle.
interval= 80
number
Milliseconds per frame.
PropTypeDefaultDescription
kind"braille" | "dots" | "line" | "star""braille"Which frame set to cycle.
intervalnumber80Milliseconds per frame.