Skip to main content
Glama
thinking-block.tsx2.77 kB
"use client" import { useState } from "react" import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card" import { Brain, ChevronDown, ChevronUp } from "lucide-react" import { Button } from "@/components/ui/button" import type { Message, ProviderType } from "@/lib/types" export interface ThinkingBlockProps { message: Message provider?: ProviderType className?: string } export function ThinkingBlock({ message, provider, className = "" }: ThinkingBlockProps) { const [isExpanded, setIsExpanded] = useState(true) const getProviderInfo = (provider?: ProviderType) => { switch (provider) { case "openai": return { name: "OpenAI", color: "text-green-700 dark:text-green-300", bgColor: "bg-green-50 dark:bg-green-950/20", borderColor: "border-green-300", } case "anthropic": return { name: "Anthropic", color: "text-orange-700 dark:text-orange-300", bgColor: "bg-orange-50 dark:bg-orange-950/20", borderColor: "border-orange-300", } case "gemini": return { name: "Gemini", color: "text-blue-700 dark:text-blue-300", bgColor: "bg-blue-50 dark:bg-blue-950/20", borderColor: "border-blue-300", } default: return { name: "AI", color: "text-blue-700 dark:text-blue-300", bgColor: "bg-blue-50 dark:bg-blue-950/20", borderColor: "border-blue-300", } } } const providerInfo = getProviderInfo(provider) const toggleExpanded = () => { setIsExpanded(!isExpanded) } return ( <Card className={`border-dashed ${providerInfo.borderColor} ${providerInfo.bgColor} ${className}`}> <CardHeader className="pb-2 relative"> <CardTitle className={`text-sm flex items-center gap-2 ${providerInfo.color} pr-10`}> <Brain className="h-4 w-4" /> {providerInfo.name} is Thinking... </CardTitle> <Button variant="ghost" size="sm" onClick={toggleExpanded} className={`absolute top-0 right-3 h-6 w-6 p-0 ${providerInfo.color} hover:bg-black/10 dark:hover:bg-white/10`} aria-label={isExpanded ? "Collapse thinking" : "Expand thinking"} > {isExpanded ? <ChevronUp className="h-4 w-4" /> : <ChevronDown className="h-4 w-4" />} </Button> </CardHeader> {isExpanded && ( <CardContent className="pt-0"> <div className={`text-sm ${providerInfo.color.replace("700", "800").replace("300", "200")} whitespace-pre-wrap font-mono`} > {message.content} </div> </CardContent> )} </Card> ) }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/myeong-ga/research-agent-mcp-0.36-pro-preview-06-01'

If you have feedback or need assistance with the MCP directory API, please join our Discord server