import React, { useState, useRef, useEffect } from 'react'; import ReactMarkdown from 'react-markdown'; import { Ticket, KBArticle, ChatMessage, TicketPriority, TicketStatus, SurveyResult, Attachment, ClientUser, TicketQueue, AppSettings } from '../types'; import { getSupportResponse } from '../services/geminiService'; import { ToastType } from './Toast'; import { Search, Send, FileText, AlertCircle, MessageSquare, Star, X, Paperclip, LogOut, Home, PlusCircle, Clock, CheckCircle, ChevronRight, ArrowLeft, MoreVertical, Minus, ExternalLink, BookOpen, Download, Loader2 } from 'lucide-react'; interface ClientPortalProps { currentUser: ClientUser; articles: KBArticle[]; queues: TicketQueue[]; settings: AppSettings; onCreateTicket: (ticket: Omit) => void; onReplyTicket: (ticketId: string, message: string, attachments?: Attachment[]) => void; onSubmitSurvey: (survey: Omit) => void; tickets?: Ticket[]; onLogout: () => void; showToast: (message: string, type: ToastType) => void; } // Configurazione stili per ReactMarkdown // Estraiamo 'node' dai props per non passarlo al componente DOM, evitando warning di React const MarkdownComponents = { h1: ({node, ...props}: any) =>

, h2: ({node, ...props}: any) =>

, h3: ({node, ...props}: any) =>

, p: ({node, ...props}: any) =>

, ul: ({node, ...props}: any) =>