import React, { useState, useEffect, useRef } from 'react'; import { Sparkles, Send, RefreshCw, BookOpen, Bot, ArrowLeft, BrainCircuit, Zap } from 'lucide-react'; import { ChatMessage, UserUsage } from '../types'; 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 [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 */}

Assistant IA

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

Bonjour ! Comment puis-je vous aider aujourd'hui ?

{isLimitReached && (
Limite atteinte ! Améliorez votre plan.
)}
)} {chatHistory.map((msg) => (
{msg.role === 'model' && msg.responseType === 'reflection' && (
Réflexion
)}
{msg.text}
))} {isGenerating && (
L'IA travaille...
)}
setInput(e.target.value)} placeholder={isLimitReached ? "Limite atteinte..." : "Votre message..."} className="w-full pl-4 pr-12 py-3 bg-slate-100 rounded-2xl text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500 transition-shadow disabled:opacity-50" disabled={isGenerating || isLimitReached} />
); }; export default AIPanel;