<!-- source-hash: 85a298f4c8461aee81841a6a960437a6 -->
Collapsible UI component that displays AI "thinking" or reasoning text with a muted markdown aesthetic, supporting both streaming and completed states.

## Key Components

- **`ThinkingDisplay`** — `forwardRef` component rendering AI thought content inside a bordered card with expand/collapse behavior
- **`thoughtMdClasses`** — Tailwind override class string that tunes `SimpleMarkdownRenderer` output to a quieter secondary-tone aesthetic (muted text, tighter spacing, flat code chips)
- **`useCollapsible`** — Hook managing overflow detection, container height animation, and collapsed/expanded state
- **`ExpandChevron`** — Chevron indicator shown only when content overflows or is already expanded
- **`SimpleMarkdownRenderer`** — Underlying markdown renderer wrapped with thought-specific style overrides

## Props (`ThinkingDisplayProps`)

| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `text` | `string` | — | Markdown content to render |
| `isStreaming` | `boolean` | `false` | Shows animated dots loader and "Thinking" label when `true` |
| `className` | `string` | — | Additional classes for the outer card |

## Usage Example

```typescript
import { ThinkingDisplay } from "./thinking-display"

// Streaming state (model is still generating)
<ThinkingDisplay
  text="Analyzing the user's request..."
  isStreaming={true}
/>

// Completed thought (collapsible if content overflows)
<ThinkingDisplay
  text="## Approach\nI need to check the ticket status first, then query the CMDB for affected assets."
  isStreaming={false}
/>
```

## Behavior Notes

- Label switches between `"Thinking"` (streaming) and `"Thought"` (complete)
- Collapsed height is `19px` (~one line of `text-sm leading-snug`); transitions are disabled while streaming to avoid layout thrashing
- Toggle is keyboard-accessible (`Enter`/`Space`) with proper `aria-expanded`; `tabIndex` is `-1` when content fits in one line