Glin UI
Primitive / Moleculebeta

Thinking

Reasoning indicator with animated dots or pulsing text and collapsible reasoning details.

Edit on GitHub

Q3 revenue review

Glin assistant, 3 sources

Online
MK
Summarize how Q3 went compared with Q2.
q3-revenue.csv47 KB
board-notes.pdf1.1 MB
G
Revenue grew 12% quarter over quarter, driven mostly by the Pro plan. Churn stayed flat at 1.8%, so the gain came from expansion rather than new logos.
MK
Which regions grew fastest?
G
Europe led with 19% growth, followed by North America at 11%. APAC was flat after the pricing change in August.
G
Thinking...

Installation

Install from
pnpm dlx @glinui/cli@latest add thinking

Prefer the package?

Usage

A collapsed reasoning summary on a finished answer and a live indicator at the bottom.

Accessibility

  • Active state without details is a role="status" element so assistive tech announces it.
  • With details the header is a native button using aria-expanded and aria-controls.
  • Dots are decorative (aria-hidden); the label carries the meaning.

Keyboard Interactions

KeyAction
Enter / SpaceToggle the reasoning details.

ARIA Attributes

  • `role="status"` while active
  • `aria-expanded` and `aria-controls` on the toggle

Reduced Motion

Pulse animation is removed under reduced motion. Dots stay visible at reduced opacity.

Affected properties

opacitytransform

API Reference

PropTypeRequiredDefaultDescription
activebooleanNotrueWorking state. False shows the done label.
indicator"dots" | "shimmer"NodotsAnimated dots or pulsing text.
label / doneLabelstring-"Thinking" / "Thought process"Text for each state.
childrenReact.ReactNodeNo-Reasoning details. Makes the header a disclosure button.
open / defaultOpen / onOpenChangeboolean / callback--Controlled or uncontrolled disclosure.
defaultOpenbooleanNofalseAuto-generated from TypeScript source.
doneLabelstringNo"Thought process"Label once finished, e.g. "Thought for 4 seconds".
labelstringNo"Thinking"Auto-generated from TypeScript source.
onOpenChange(open: boolean) => voidNo-Auto-generated from TypeScript source.
openbooleanNo-Auto-generated from TypeScript source.

Source

Import directly from the package or browse the source on GitHub. Click any file to view it.

Import

import { Thinking } from "@glinui/ui"

Source Files

Dependencies

@glinui/ui@phosphor-icons/react

Generated API Snapshot

Beta

Auto-extracted from TypeScript source in packages/ui/src/components/thinking.tsx. This section is in beta and may lag behind hand-curated docs. Regenerate with pnpm --filter @glinui/docs api:generate.

Generated: 2026-10-08T01:41:21.546Z · Full index: /docs/api-metadata

Primary Props Type

ThinkingProps

ThinkingProps

PropTypeRequiredDefaultDescription
activebooleanNotrueTrue while the model is working. False renders the finished label.
childrenReact.ReactNodeNo-Reasoning details. When provided the header becomes a disclosure button.
defaultOpenbooleanNofalse-
doneLabelstringNo"Thought process"Label once finished, e.g. "Thought for 4 seconds".
indicator"dots" | "shimmer"No"dots"Indicator style while active.
labelstringNo"Thinking"-
onOpenChange(open: boolean) => voidNo--
openbooleanNo--