import { cn } from '@/lib/utils'; import { CheckCheck, CopyIcon } from 'lucide-react'; import { useState } from 'react'; import { Prism as SyntaxHighlighter } from 'react-syntax-highlighter'; import { oneDark } from 'react-syntax-highlighter/dist/cjs/styles/prism'; import { Message } from './ChatWindow'; import MessageTabs from './MessageTabs'; import ThinkBox from './ThinkBox'; const ThinkTagProcessor = ({ children }: { children: React.ReactNode }) => { return ; }; const CodeBlock = ({ className, children, }: { className?: string; children: React.ReactNode; }) => { // Extract language from className (format could be "language-javascript" or "lang-javascript") let language = ''; if (className) { if (className.startsWith('language-')) { language = className.replace('language-', ''); } else if (className.startsWith('lang-')) { language = className.replace('lang-', ''); } } const content = children as string; const [isCopied, setIsCopied] = useState(false); const handleCopyCode = () => { navigator.clipboard.writeText(content); setIsCopied(true); setTimeout(() => setIsCopied(false), 2000); }; console.log('Code block language:', language, 'Class name:', className); // For debugging return (
{language}
1} useInlineStyles={true} PreTag="div" > {content}
); }; const MessageBox = ({ message, messageIndex, history, loading, isLast, rewrite, sendMessage, }: { message: Message; messageIndex: number; history: Message[]; loading: boolean; isLast: boolean; rewrite: (messageId: string) => void; sendMessage: ( message: string, options?: { messageId?: string; rewriteIndex?: number; suggestions?: string[]; }, ) => void; }) => { return (
{message.role === 'user' && (

{message.content}

)} {message.role === 'assistant' && ( )}
); }; export default MessageBox;