oxios 1.10.1

Oxios Agent OS — Agent Operating System powered by oxi-sdk
import { Server } from 'lucide-react'
import { useTranslation } from 'react-i18next'
import { ServerCard } from '@/components/mcp/server-card'
import { EmptyState } from '@/components/shared/empty-state'
import { ErrorState } from '@/components/shared/error-state'
import { LoadingCards } from '@/components/shared/loading'
import {
  useMcpDeleteServer,
  useMcpRefreshServer,
  useMcpServers,
  useMcpToggleServer,
} from '@/hooks/use-mcp'

export function ServerList() {
  const { t } = useTranslation()
  const { data: servers, isLoading, isError, refetch } = useMcpServers()
  const deleteServer = useMcpDeleteServer()
  const toggleServer = useMcpToggleServer()
  const refreshServer = useMcpRefreshServer()

  if (isLoading) return <LoadingCards count={3} />
  if (isError) return <ErrorState onRetry={() => refetch()} />

  if (!servers || servers.length === 0) {
    return (
      <EmptyState
        icon={<Server className="h-8 w-8" />}
        title={t('mcp.noServers', 'No MCP servers configured')}
        description={t('mcp.noServersDescription', 'Add an MCP server to get started.')}
        className="py-6"
      />
    )
  }

  return (
    <div className="space-y-3">
      {servers.map((server) => (
        <ServerCard
          key={server.name}
          server={server}
          onToggle={() => toggleServer.mutate(server.name)}
          onRefresh={() => refreshServer.mutate(server.name)}
          onDelete={() => deleteServer.mutate(server.name)}
          isToggling={toggleServer.isPending}
          isRefreshing={refreshServer.isPending}
          isDeleting={deleteServer.isPending}
        />
      ))}
    </div>
  )
}