import React, { useState } from 'react'; import { Search, RefreshCw, Filter } from 'lucide-react'; import { useToolsInventory } from './useToolsInventory'; import { ToolsGrid } from './ToolsGrid'; import { ToolsEmptyState } from './ToolsEmptyState'; import { ToolDetailDrawer } from './ToolDetailDrawer'; const TYPE_BUTTONS = [ { value: 'all', label: 'All' }, { value: 'tool', label: 'Tools' }, { value: 'a2a', label: 'A2A Agents' }, ]; export function ToolsTab({ backendUrl, apiKey, onGoToMcpServers }) { const { items, counts, loading, error, refresh, search, setSearch, statusFilter, setStatusFilter, typeFilter, setTypeFilter, forgeHealthy, } = useToolsInventory({ backendUrl, apiKey }); const [selectedItem, setSelectedItem] = useState(null); const [refreshing, setRefreshing] = useState(false); const handleRefresh = async () => { setRefreshing(true); try { await refresh(); } finally { setRefreshing(false); } }; const hasItems = !loading && !error && items.length > 0; const showEmpty = !loading && !error && items.length === 0 && !search && statusFilter === 'all' && typeFilter === 'all'; return (
{/* Stats bar */}
{/* Total capabilities */}
Total {counts.total}
{/* Tools count */}
Tools {counts.tools.total}
{/* A2A count */}
A2A {counts.a2a.total}
{/* Active / Inactive */}
Active {counts.active}
Inactive {counts.inactive}
{/* Forge status */} {forgeHealthy !== null && (<>
Forge {forgeHealthy ? 'Online' : 'Offline'} )}
{/* Search + filter bar */} {(counts.total > 0 || search || statusFilter !== 'all' || typeFilter !== 'all') && (
setSearch(e.target.value)} placeholder="Search by name, description, or ID..." className="w-full bg-white/5 border border-white/10 rounded-xl pl-10 pr-4 py-2.5 text-sm text-white placeholder-white/30 focus:outline-none focus:border-purple-500/50 transition-colors"/>
{/* Type filter */}
{TYPE_BUTTONS.map((t) => ())}
{/* Status filter */}
{['all', 'active', 'inactive'].map((s) => ())}
)} {/* Content */} {loading && } {error && } {showEmpty && } {!loading && !error && items.length === 0 && (search || statusFilter !== 'all' || typeFilter !== 'all') && !showEmpty && (

No capabilities match your search or filters.

)} {hasItems && ()} {/* Detail drawer */} {selectedItem && ( setSelectedItem(null)}/>)}
); }