import { useState } from "react"; import { useSelector } from "react-redux"; import { PiRobot, PiBrain, PiGraduationCap, PiCode, PiFlask, PiBook, PiStar, PiRocket, PiLightning, PiSparkle, PiGlobe, PiHeart, PiShield, PiWrench, PiMagnifyingGlass, PiChartLine, PiPenNib, PiMusicNotes, PiCamera, PiGameController, PiPencil, } from "react-icons/pi"; import { FiSearch, FiEdit2, FiTrash2, FiGlobe as FiGlobeIcon, FiLock, } from "react-icons/fi"; const iconMap = { robot: PiRobot, brain: PiBrain, graduation: PiGraduationCap, code: PiCode, flask: PiFlask, book: PiBook, star: PiStar, rocket: PiRocket, lightning: PiLightning, sparkle: PiSparkle, globe: PiGlobe, heart: PiHeart, shield: PiShield, wrench: PiWrench, search: PiMagnifyingGlass, chart: PiChartLine, pen: PiPenNib, music: PiMusicNotes, camera: PiCamera, game: PiGameController, pencil: PiPencil, }; // Mock data - sau này sẽ thay bằng API call const mockAgents = [ { id: "math-tutor", name: "Trợ lý Toán học", icon: "graduation", color: "#6366f1", description: "Giải thích các bài toán từ cơ bản đến nâng cao", visibility: "public", tools: ["calculator", "web_search"], createdAt: "2026-04-15", }, { id: "code-reviewer", name: "Code Reviewer", icon: "code", color: "#10b981", description: "Review code và gợi ý cải thiện", visibility: "private", tools: ["code_interpreter"], createdAt: "2026-04-18", }, { id: "translator-bot", name: "Dịch thuật AI", icon: "globe", color: "#3b82f6", description: "Dịch đa ngôn ngữ chính xác cao", visibility: "public", tools: ["translator", "web_search"], createdAt: "2026-04-20", }, ]; function ManageAgent({ onEditAgent }) { const { isDark } = useSelector((state) => state.theme); const [searchQuery, setSearchQuery] = useState(""); const [agents, setAgents] = useState(mockAgents); const filteredAgents = agents.filter( (agent) => agent.name.toLowerCase().includes(searchQuery.toLowerCase()) || agent.description.toLowerCase().includes(searchQuery.toLowerCase()) ); const handleDelete = (agentId, e) => { e.stopPropagation(); if (window.confirm("Bạn có chắc chắn muốn xóa agent này?")) { setAgents((prev) => prev.filter((a) => a.id !== agentId)); } }; const toggleVisibility = (agentId, e) => { e.stopPropagation(); setAgents((prev) => prev.map((a) => a.id === agentId ? { ...a, visibility: a.visibility === "public" ? "private" : "public" } : a ) ); }; const handleEdit = (agent, e) => { e.stopPropagation(); if (onEditAgent) { onEditAgent(agent); } }; const getAgentIcon = (iconId) => { const IconComponent = iconMap[iconId]; return IconComponent || PiRobot; }; return (
{/* Header */}
Quản lý Agent
Xem và quản lý các agent đã tạo
{/* Content */}
{/* Search */}
setSearchQuery(e.target.value)} placeholder="Tìm kiếm agent..." className="w-full pl-9 pr-3 py-2 rounded-md text-sm border outline-none" style={{ background: "var(--input-bg)", borderColor: "var(--input-border)", color: "var(--input-text)", }} onFocus={(e) => (e.currentTarget.style.borderColor = "var(--primary)") } onBlur={(e) => (e.currentTarget.style.borderColor = "var(--input-border)") } />
{/* Agent count */}
{filteredAgents.length} agent
{/* Agent list */}
{filteredAgents.map((agent) => { const AgentIcon = getAgentIcon(agent.icon); return (
handleEdit(agent, e)} onMouseEnter={(e) => { e.currentTarget.style.background = "var(--hover-primary)"; }} onMouseLeave={(e) => { e.currentTarget.style.background = "var(--card-bg-secondary)"; }} >
{/* Icon */}
{/* Info */}
{agent.name}
{agent.visibility === "public" ? ( Công khai ) : ( Riêng tư )}
{agent.description}
{agent.tools.length} công cụ Tạo ngày {agent.createdAt}
{/* Actions */}
); })} {filteredAgents.length === 0 && (
Không tìm thấy agent nào
Thử tìm kiếm với từ khóa khác
)}
); } export default ManageAgent;