'use client' import { useState, useRef, useEffect } from 'react' import { Send, User } from 'lucide-react' import ReactMarkdown from 'react-markdown' // Random Bible-related loading messages const LOADING_MESSAGES = [ "Searching the Scriptures...", "Seeking wisdom from God's Word...", "Consulting the Holy Scriptures...", "Finding relevant Bible verses...", "Exploring God's eternal truth..." ] export function ChatInterface() { const [messages, setMessages] = useState>([]) const [input, setInput] = useState('') const [loading, setLoading] = useState(false) const [loadingMessage, setLoadingMessage] = useState('') const [isAuthenticated, setIsAuthenticated] = useState(false) const messagesEndRef = useRef(null) const scrollToBottom = () => { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }) } useEffect(scrollToBottom, [messages]) // Check authentication status on mount useEffect(() => { const checkAuth = async () => { try { const token = localStorage.getItem('authToken') if (token) { const response = await fetch('/api/auth/me', { headers: { 'Authorization': `Bearer ${token}` } }) setIsAuthenticated(response.ok) } } catch (error) { setIsAuthenticated(false) } } checkAuth() }, []) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() if (!input.trim() || loading) return const userMessage = { role: 'user', content: input } setMessages(prev => [...prev, userMessage]) setInput('') // Pick a random loading message const randomMessage = LOADING_MESSAGES[Math.floor(Math.random() * LOADING_MESSAGES.length)] setLoadingMessage(randomMessage) setLoading(true) try { const token = localStorage.getItem('authToken') const headers: any = { 'Content-Type': 'application/json' } if (token) { headers['Authorization'] = `Bearer ${token}` } const res = await fetch('/api/chat', { method: 'POST', headers, body: JSON.stringify({ messages: [...messages, userMessage] }) }) const data = await res.json() setMessages(prev => [...prev, { role: 'assistant', content: data.response || 'Ne pare rău, nu am putut genera un răspuns.' }]) } catch (error) { console.error('Chat error:', error) setMessages(prev => [...prev, { role: 'assistant', content: 'Ne pare rău, a apărut o eroare. Vă rugăm să încercați din nou.' }]) } finally { setLoading(false) } } return (

Chat Biblic AI

Pune întrebări despre Biblie și primește răspunsuri fundamentate

{!isAuthenticated ? (

Bun venit la AI Chat Biblic!

Pentru a accesa chat-ul AI și a salva conversațiile tale, te rugăm să îți creezi un cont sau să te conectezi.

) : ( <> {messages.length === 0 && (

Bună ziua! Sunt aici să vă ajut cu întrebările despre Biblie.

Puteți începe prin a întreba ceva despre un verset sau o temă biblică.

)} {messages.map((msg, idx) => (
{msg.role === 'assistant' ? (
{msg.content}
) : (

{msg.content}

)}
))} {loading && (
{loadingMessage}
)}
)}
{isAuthenticated && (
setInput(e.target.value)} placeholder="Întreabă despre Biblie..." className="flex-1 px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" disabled={loading} />
)}
) }