import { ChevronDown, UserCog, Loader2 } from "lucide-react"; import { Button } from "@/components/ui/button"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog"; import { Textarea } from "@/components/ui/textarea"; import { useState, useEffect } from "react"; import { fetchModelsFromDatabase, ModelConfig } from "@/config/models"; // Texto padrão da personalidade (mesmo valor usado em ChatView) const DEFAULT_SYSTEM_PROMPT = "Você é um assistente útil e prestativo."; interface ChatHeaderProps { showModelSelector?: boolean; selectedModel?: string; onModelChange?: (model: string) => void; systemPrompt?: string; onSystemPromptChange?: (prompt: string) => void; } export const ChatHeader = ({ showModelSelector = false, selectedModel = "GPT-4o", onModelChange, systemPrompt = DEFAULT_SYSTEM_PROMPT, onSystemPromptChange }: ChatHeaderProps) => { const [isPersonalityOpen, setIsPersonalityOpen] = useState(false); const [tempSystemPrompt, setTempSystemPrompt] = useState(systemPrompt); const [models, setModels] = useState([]); const [isLoadingModels, setIsLoadingModels] = useState(true); // Carrega modelos da API ao montar o componente useEffect(() => { const loadModels = async () => { setIsLoadingModels(true); try { const modelsFromAPI = await fetchModelsFromDatabase(); setModels(modelsFromAPI); } catch (error) { console.error('Erro ao carregar modelos:', error); } finally { setIsLoadingModels(false); } }; loadModels(); }, []); const handleSavePersonality = () => { if (onSystemPromptChange) { onSystemPromptChange(tempSystemPrompt); } setIsPersonalityOpen(false); }; return (
Online
{showModelSelector && onModelChange && ( {models.map((model) => ( onModelChange(model.name)} >
{model.name} {model.description && ( {model.description} )}
))}
)} {showModelSelector && onSystemPromptChange && ( Personalidade da IA Defina o estilo, tom ou função da IA nesta conversa