'use client'; import { useState } from 'react'; import { Button } from '@/components/ui/button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuCheckboxItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu'; import { Badge } from '@/components/ui/badge'; import { Server, CheckCircle2 } from 'lucide-react'; import { cn } from '@/lib/utils'; import { McpServerInfo } from '@/hooks/use-mcp-servers'; interface McpServerSelectorProps { servers: McpServerInfo[]; selectedServers: string[]; onSelectionChange: (servers: string[]) => void; isLoading?: boolean; className?: string; } export function McpServerSelector({ servers, selectedServers, onSelectionChange, isLoading = false, className, }: McpServerSelectorProps) { const [open, setOpen] = useState(false); // Filter only running servers const runningServers = servers.filter(s => s.status === 'running'); const handleToggle = (serverName: string) => { if (selectedServers.includes(serverName)) { onSelectionChange(selectedServers.filter(s => s !== serverName)); } else { onSelectionChange([...selectedServers, serverName]); } }; const handleSelectAll = () => { if (selectedServers.length === runningServers.length) { onSelectionChange([]); } else { onSelectionChange(runningServers.map(s => s.name)); } }; const getButtonText = () => { if (selectedServers.length === 0) { return 'Servidores MCP'; } if (selectedServers.length === 1) { return selectedServers[0]; } return `${selectedServers.length} servidores`; }; return ( Servidores MCP {selectedServers.length > 0 && ( {selectedServers.length} selecionado{selectedServers.length !== 1 ? 's' : ''} )} 0} onCheckedChange={handleSelectAll} className="font-medium" > Selecionar Todos {runningServers.map((server) => ( handleToggle(server.name)} className="flex items-center justify-between" >
{server.name}
{server.toolCount !== undefined && server.toolCount > 0 && ( {server.toolCount} )}
))} {runningServers.length === 0 && (
Nenhum servidor rodando
)}
); }