import React, { useState, useRef, useEffect } from 'react'; import { useNavigate } from 'react-router-dom'; interface Message { id: number; text: string; sender: 'user' | 'clone'; } const CloneChatPage: React.FC = () => { const navigate = useNavigate(); const [messages, setMessages] = useState([ { id: 1, text: "Hello! You can start training me by talking to me. What's on your mind?", sender: 'clone' } ]); const [inputValue, setInputValue] = useState(''); const [isTyping, setIsTyping] = useState(false); const messagesEndRef = useRef(null); const scrollToBottom = () => { messagesEndRef.current?.scrollIntoView({ behavior: 'smooth' }); }; useEffect(scrollToBottom, [messages, isTyping]); const handleSendMessage = (e: React.FormEvent) => { e.preventDefault(); if (inputValue.trim() === '') return; const userMessage: Message = { id: Date.now(), text: inputValue, sender: 'user', }; setMessages(prev => [...prev, userMessage]); setInputValue(''); setIsTyping(true); // Simulate clone response setTimeout(() => { const cloneResponse: Message = { id: Date.now() + 1, text: `That's an interesting point. It reminds me of how you once said... (simulated response based on your persona).`, sender: 'clone', }; setIsTyping(false); setMessages(prev => [...prev, cloneResponse]); }, 1500 + Math.random() * 1000); }; return (
{/* Header */}

Train My Digital Clone

{/* Chat Area */}
{messages.map(msg => (
{msg.sender === 'clone' && (
)}

{msg.text}

))} {isTyping && (
)}
{/* Input Form */}
); }; export default CloneChatPage;