SakaniUI

Reasoning Trace

The thinking panel above a reply: quiet text that streams in word by word, then folds to "Thought for 6s".

While streaming the reasoning arrives in a short, five-line window that glides up as text comes in, the oldest line fading out at the top. Each new word fades up out of a soft blur, a touch brighter, then settles into the muted ink. When it is done the panel folds away to one row, and opens again to the full text.

Streaming, then done

Append text as it arrives (whole paragraphs, or a paragraph growing word by word: only the new words animate), then set status="done" with the final elapsed. This loops.

Done: closed and open

Closed, it shows summary on the same row. Click to open the full reasoning.

Looking at which deals changed stage in the last seven days.

Three moved forward. Acme went quiet after the proposal and Globex asked for a quote.

Looking at which deals changed stage in the last seven days.

Three moved forward. Acme went quiet after the proposal and Globex asked for a quote.

Props

PropTypeDefaultDescription
status'streaming' | 'done''done'Streaming is always open: the ray spinner turns and the label shimmers. Done reads "Thought for Ns".
elapsednumberSeconds. Streaming: the running time (whole seconds). Done: the final time.
summarystringOne line about what it concluded, shown on the closed row.
childrenReactNodeThe reasoning, one paragraph per child.
openbooleanControlled open state (once done).
defaultOpenbooleanfalseInitial open state (once done).
onOpenChange(open: boolean) => voidCalled when the header is clicked.
classNamestringExtra class on the root.