From b5c165714b1176c909bac512216d9e2704b98a06 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Wed, 6 Nov 2024 15:21:28 +0300 Subject: [PATCH] Add thinking placeholder message (#496) --- components/custom/app-sidebar.tsx | 9 +------- components/custom/chat.tsx | 8 ++++++- components/custom/icons.tsx | 27 +++++++++++++++++++++-- components/custom/message.tsx | 36 +++++++++++++++++++++++++++++-- 4 files changed, 67 insertions(+), 13 deletions(-) diff --git a/components/custom/app-sidebar.tsx b/components/custom/app-sidebar.tsx index 964209d..c1375c0 100644 --- a/components/custom/app-sidebar.tsx +++ b/components/custom/app-sidebar.tsx @@ -3,17 +3,10 @@ import Link from 'next/link'; import { type User } from 'next-auth'; -import { PlusIcon, VercelIcon } from '@/components/custom/icons'; +import { PlusIcon } from '@/components/custom/icons'; import { SidebarHistory } from '@/components/custom/sidebar-history'; import { SidebarUserNav } from '@/components/custom/sidebar-user-nav'; import { Button } from '@/components/ui/button'; -import { - Card, - CardDescription, - CardFooter, - CardHeader, - CardTitle, -} from '@/components/ui/card'; import { Sidebar, SidebarContent, diff --git a/components/custom/chat.tsx b/components/custom/chat.tsx index 041827a..463be31 100644 --- a/components/custom/chat.tsx +++ b/components/custom/chat.tsx @@ -8,7 +8,7 @@ import useSWR, { useSWRConfig } from 'swr'; import { useWindowSize } from 'usehooks-ts'; import { ChatHeader } from '@/components/custom/chat-header'; -import { PreviewMessage } from '@/components/custom/message'; +import { PreviewMessage, ThinkingMessage } from '@/components/custom/message'; import { useScrollToBottom } from '@/components/custom/use-scroll-to-bottom'; import { Vote } from '@/db/schema'; import { fetcher } from '@/lib/utils'; @@ -100,6 +100,12 @@ export function Chat({ /> ))} + {isLoading && + messages.length > 0 && + messages[messages.length - 1].role === 'user' && ( + + )} +
( > ); - + export const ChevronDownIcon = ({ size = 16 }: { size?: number }) => ( - ( > ); + +export const SparklesIcon = ({ size = 16 }: { size?: number }) => ( + + + + + +); diff --git a/components/custom/message.tsx b/components/custom/message.tsx index 9934c72..f80b388 100644 --- a/components/custom/message.tsx +++ b/components/custom/message.tsx @@ -3,13 +3,13 @@ import { Message } from 'ai'; import cx from 'classnames'; import { motion } from 'framer-motion'; -import { Sparkles } from 'lucide-react'; import { Dispatch, SetStateAction } from 'react'; import { Vote } from '@/db/schema'; import { UICanvas } from './canvas'; import { DocumentToolCall, DocumentToolResult } from './document'; +import { SparklesIcon } from './icons'; import { Markdown } from './markdown'; import { MessageActions } from './message-actions'; import { PreviewAttachment } from './preview-attachment'; @@ -49,7 +49,7 @@ export const PreviewMessage = ({ > {message.role === 'assistant' && (
- +
)} @@ -148,3 +148,35 @@ export const PreviewMessage = ({ ); }; + +export const ThinkingMessage = () => { + const role = 'assistant'; + + return ( + +
+
+ +
+ +
+
+ Thinking... +
+
+
+
+ ); +};