- **ThinkingBlock**
- Added `ThoughtStep` type and UI handling for step kinds: `thought`, `tool_call`, `tool_output`, and `done`.
- Integrated `Check` icon for completed steps and formatted duration (seconds) display.
- Implemented streaming paragraph extraction, fade‑in/out animation, and improved loading state handling.
- Updated header to show dynamic titles (thinking/thought + duration) and disabled expand/collapse while loading.
- Utilized `cn` utility for conditional class names and added relevant imports.
- **ThreadContent**
- Defined `ToolCall` and `ThoughtStep` types for type safety.
- Constructed `allSteps` via `useMemo`, extracting thought paragraphs, tool calls/outputs, and a final `done` step with total thinking time.
- Passed `steps`, `loading`, and `duration` props to `ThinkingBlock`.
- Introduced `hasReasoning` flag to conditionally render the reasoning block and avoid duplicate tool call rendering.
- Adjusted rendering logic to hide empty reasoning and ensure tool call blocks only appear when no reasoning is present.
- **useChat**
- Refactored `getCurrentThread` for clearer async flow while preserving temporary‑chat behavior.
- Captured `startTime` at message creation and computed `totalThinkingTime` on completion.
- Included `totalThinkingTime` in message metadata when appropriate.
- Minor cleanup: improved error handling for image ingestion and formatting adjustments.
Overall, these changes provide a richer, step‑by‑step thinking UI, better state handling during streaming, and expose total thinking duration for downstream components.