'use client'; import React, { useState, useEffect, useRef } from 'react'; import { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react'; import { ChatMessage, UserUsage } from '@/lib/types'; import { useLanguage } from '@/providers/LanguageProvider'; interface AIPanelProps { chatHistory: ChatMessage[]; onSendMessage: (msg: string) => void; onInsertText: (text: string) => void; selectedText: string; isGenerating: boolean; usage?: UserUsage; } const AIPanel: React.FC = ({ chatHistory, onSendMessage, onInsertText, selectedText, isGenerating, usage }) => { const { t } = useLanguage(); const [input, setInput] = useState(""); const messagesEndRef = useRef(null); useEffect(() => { messagesEndRef.current?.scrollIntoView({ behavior: "smooth" }); }, [chatHistory, isGenerating]); const handleSubmit = (e: React.FormEvent) => { e.preventDefault(); if (!input.trim() || isGenerating) return; onSendMessage(input); setInput(""); }; const isLimitReached = usage ? usage.aiActionsCurrent >= usage.aiActionsLimit : false; return (
{/* Header with Usage Counter */}

{t('ai_panel.title')}

{usage && (
{usage.aiActionsCurrent} / {usage.aiActionsLimit === 999999 ? '∞' : usage.aiActionsLimit}
)}
{selectedText && (
{t('ai_panel.context')}
"{selectedText.substring(0, 60)}..."
)}
{chatHistory.length === 0 && (

{t('ai_panel.greeting')}

{isLimitReached && (
{t('ai_panel.limit_reached_upgrade')}
)}
)} {chatHistory.map((msg) => (
{msg.role === 'model' && msg.responseType === 'reflection' && (
{t('ai_panel.reflection')}
)}
{msg.text}
))} {isGenerating && (
{t('ai_panel.ai_working')}
)}
setInput(e.target.value)} placeholder={isLimitReached ? t('ai_panel.limit_reached') : t('ai_panel.your_message')} className="w-full pl-4 pr-12 py-3 bg-theme-bg text-theme-text border border-theme-border rounded-2xl text-sm focus:outline-none focus:border-indigo-500 transition-all disabled:opacity-50" disabled={isGenerating || isLimitReached} />
); }; export default AIPanel;