import { useState } from "react"; import { IconChevronDown, IconLoader3, IconBulb } from "@tabler/icons-react"; import { cn } from "@/lib/utils"; import { Markdown } from "./Markdown"; import { useSettingsStore } from "@/stores"; interface ThinkingBlockProps { content: string; finished?: boolean; compact?: boolean; } export function ThinkingBlock({ content, finished, compact }: ThinkingBlockProps) { const { extensionConfig } = useSettingsStore(); const showThinkingContent = extensionConfig.showThinkingContent; const [expanded, setExpanded] = useState(extensionConfig.showThinkingExpanded); const isStreaming = !finished; if (!showThinkingContent) { // Hidden mode: static label, no interaction return (
Thinking {isStreaming && }
); } // Show mode: clickable, expandable/collapsible if (!content && !isStreaming) { return null; } return (
{expanded && content && ( )}
); }