KQ-742 · THINKING/FOLD
Thinking Fold
A collapsed strip that stands in for the reasoning while the model thinks. A cobalt wash breathes across the strip on an ambient loop and a mono readout counts tenths from an interval that pauses in a hidden tab; when the answer starts the wash fades, the lamp becomes a tick drawn on flick, and the label cross-fades to the time it took. Enter or Space unfolds the strip to a measured height on glide, and folded lines are inert.
KQ-742 · THINKING/FOLD
Reasoning
Idle · press play
Install
One command — the source lands in your repo. Or copy it from the Code tab.
$ pnpm dlx shadcn@latest add @kinetiq/thinking-fold
Props
- thinking
- boolean
- default false
- The model is still reasoning: the strip pulses and the clock runs.
- lines
- string[]
- default []
- Reasoning lines that have arrived so far, in order. Append-only.
- elapsed
- number
- default —
- Seconds of thinking owned by the host. Omit to count from the moment thinking turns true.
- open / defaultOpen
- boolean
- default false
- Controlled or initial unfolded state.
- onOpenChange
- (open: boolean) => void
- default —
- Fires from the strip's click or key press.
- label
- string
- default "Thinking"
- Copy while thinking.
- idleLabel
- string
- default "Reasoning"
- Copy before any thinking has happened; also names the panel.
- settledLabel
- (seconds: number) => string
- default s => `Thought for ${s.toFixed(1)}s`
- Copy once the answer has started.
| Prop | Type | Default | Description |
|---|---|---|---|
| thinking | boolean | false | The model is still reasoning: the strip pulses and the clock runs. |
| lines | string[] | [] | Reasoning lines that have arrived so far, in order. Append-only. |
| elapsed | number | — | Seconds of thinking owned by the host. Omit to count from the moment thinking turns true. |
| open / defaultOpen | boolean | false | Controlled or initial unfolded state. |
| onOpenChange | (open: boolean) => void | — | Fires from the strip's click or key press. |
| label | string | "Thinking" | Copy while thinking. |
| idleLabel | string | "Reasoning" | Copy before any thinking has happened; also names the panel. |
| settledLabel | (seconds: number) => string | s => `Thought for ${s.toFixed(1)}s` | Copy once the answer has started. |