diff --git a/contrib/chat-plugin/src/app/ChatHistory.tsx b/contrib/chat-plugin/src/app/ChatHistory.tsx index 59e18201..c7388a0e 100644 --- a/contrib/chat-plugin/src/app/ChatHistory.tsx +++ b/contrib/chat-plugin/src/app/ChatHistory.tsx @@ -1,9 +1,8 @@ "use client"; import React, { useEffect, useRef, useState } from "react"; -import { IoIosArrowDown, IoIosArrowUp } from 'react-icons/io'; import moment from "moment"; -import { Bot, User, Trash2, SigmaIcon } from "lucide-react"; +import { Bot, User, Trash2, ClipboardCopy } from "lucide-react"; import Markdown, { Components } from "react-markdown"; import remarkGfm from "remark-gfm"; @@ -107,6 +106,7 @@ const CustomMarkdown: React.FC<{ content: string }> = ({ content }) => { // Message component const Message: React.FC<{ message: ChatMessage }> = ({ message }) => { const [expanded, setExpanded] = useState(true); + const [isHovered, setIsHovered] = useState(false); const contentRef = useRef(null); // Reference to the content div const handleToggle = () => { @@ -123,36 +123,67 @@ const Message: React.FC<{ message: ChatMessage }> = ({ message }) => { }, [message.message.length]); return ( -
- - {/* Reasoning part with fold/unfold */} - {message.reasoning && ( -
-
- { - e.preventDefault(); - handleToggle(); - }} - > - Reasoning - -
- {message.reasoning} -
-
-
- )} +
setIsHovered(true)} + onMouseLeave={() => setIsHovered(false)} + >
- {message.message} + {/* Reasoning part with fold/unfold */} + {message.reasoning && ( +
+
+ { + e.preventDefault(); + handleToggle(); + }} + > + Reasoning + +
+ +
+
+
+ )} +
+ +
+
+
+ {isHovered ? ( +
+ +
) : + ((
)) + }
);