import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { ScrollArea } from '@/components/ui/scroll-area'; import { Textarea } from '@/components/ui/textarea'; import { Sparkle, PaperPlaneRight } from '@phosphor-icons/react'; import { toast } from 'sonner'; interface Message { role: 'user' | 'assistant'; content: string; } interface AIChatProps { currentCode: string; } export function AIChat({ currentCode }: AIChatProps) { const [messages, setMessages] = useState([ { role: 'assistant', content: 'Hi! I\'m your AI assistant for Roblox Lua development. Ask me anything about your code, Roblox scripting, or game development!', }, ]); const [input, setInput] = useState(''); const [isLoading, setIsLoading] = useState(false); const handleSend = async () => { if (!input.trim() || isLoading) return; const userMessage = input.trim(); setInput(''); setMessages((prev) => [...prev, { role: 'user', content: userMessage }]); setIsLoading(true); try { const promptText = `You are an expert Roblox Lua developer helping a user with their code. The user is working on this code: \`\`\`lua ${currentCode} \`\`\` User question: ${userMessage} Provide helpful, concise answers. Include code examples when relevant. Keep responses friendly and encouraging.`; const response = await window.spark.llm(promptText, 'gpt-4o-mini'); setMessages((prev) => [...prev, { role: 'assistant', content: response }]); } catch (error) { console.error('AI Error:', error); toast.error('Failed to get AI response. Please try again.'); setMessages((prev) => [...prev, { role: 'assistant', content: 'Sorry, I encountered an error. Please try asking again.' }]); } finally { setIsLoading(false); } }; const handleKeyDown = (e: React.KeyboardEvent) => { if (e.key === 'Enter' && !e.shiftKey) { e.preventDefault(); handleSend(); } }; return (

AI Assistant

{messages.map((message, index) => (

{message.content}

))} {isLoading && (
)}