import React, { useState, useRef, useEffect } from 'react'; import { Send, Circle, Bot, User, Sparkles, Brain } from 'lucide-react'; import { CodetteResponseCard, CodetteResponse } from './CodetteComponents'; interface Message { role: string; content: string; timestamp: Date; metadata?: CodetteResponse; } interface ChatInterfaceProps { messages: Message[]; sendMessage: (content: string) => void; isProcessing: boolean; darkMode: boolean; } const ChatInterface: React.FC = ({ messages, sendMessage, isProcessing, darkMode }) => { const [input, setInput] = useState(''); const [isDreamMode, setIsDreamMode] = useState(false); const messagesEndRef = useRef(null); const inputRef = useRef(null); useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); }, [messages]); useEffect(() => { inputRef.current?.focus(); }, []); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (input.trim() && !isProcessing) { const finalInput = isDreamMode ? `dream about ${input.trim()}` : input.trim(); sendMessage(finalInput); setInput(''); } }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); handleSubmit(e); } }; const toggleDreamMode = () => { setIsDreamMode(!isDreamMode); if (!isDreamMode) { inputRef.current?.focus(); } }; return (

Conversation with Codette

{messages.map((message, index) => (
{message.role === 'assistant' && message.metadata ? ( ) : (
{message.role === 'user' ? ( ) : message.role === 'system' ? ( ) : ( )}
{message.role === 'user' ? 'You' : message.role === 'system' ? 'System' : 'Codette'}
{message.content}
{message.timestamp.toLocaleTimeString()}
)}
))} {isProcessing && (
Codette
{isDreamMode ? 'Weaving dreams through quantum threads...' : 'Processing through recursive thought loops...'}
)}