diff --git a/src/components/chat/Message.tsx b/src/components/chat/Message.tsx index 40212bc..4ab6aa6 100644 --- a/src/components/chat/Message.tsx +++ b/src/components/chat/Message.tsx @@ -1,6 +1,6 @@ -import { memo } from 'react' +import { memo, useState } from 'react' import { cn } from '@/lib/utils' -import { ArrowDownIcon, SparklesIcon } from 'lucide-react' +import { ArrowDownIcon, SparklesIcon, ChevronDown, ChevronRight } from 'lucide-react' interface MessageProps { message: { @@ -14,6 +14,7 @@ interface MessageProps { function PureMessage({ message, isLoading }: MessageProps) { const isUser = message.role === 'user' + const [reasoningCollapsed, setReasoningCollapsed] = useState(true) return (
{message.parts?.map((part: { type: string; text?: string }, i: number) => { const safeString = (val: unknown): string => { @@ -36,7 +37,7 @@ function PureMessage({ message, isLoading }: MessageProps) { if (part.type === 'text') { return ( -
+
{safeString(part.text)}
) @@ -45,11 +46,17 @@ function PureMessage({ message, isLoading }: MessageProps) { if (part.type === 'reasoning') { return (
-
+
setReasoningCollapsed(!reasoningCollapsed)} + > + {reasoningCollapsed ? : } Thinking
-
{safeString(part.text)}
+ {!reasoningCollapsed && ( +
{safeString(part.text)}
+ )}
) } diff --git a/src/components/chat/Messages.tsx b/src/components/chat/Messages.tsx index d8e04a6..266fc90 100644 --- a/src/components/chat/Messages.tsx +++ b/src/components/chat/Messages.tsx @@ -48,12 +48,12 @@ export function Messages({ messages, status, hasMoreMessages, loadMoreMessages } } return ( -
+
-
+
{hasMoreMessages && (