import React from 'react'; import { useTranslation } from 'react-i18next'; import { useServerData } from '@/hooks/useServerData'; import { Server } from '@/types'; const DashboardPage: React.FC = () => { const { t } = useTranslation(); const { servers, error, setError, isLoading } = useServerData({ refreshOnMount: true }); // Calculate server statistics const serverStats = { total: servers.length, online: servers.filter((server: Server) => server.status === 'connected').length, offline: servers.filter((server: Server) => server.status === 'disconnected').length, connecting: servers.filter((server: Server) => server.status === 'connecting').length, oauthRequired: servers.filter((server: Server) => server.status === 'oauth_required').length, }; // Map status to translation keys const statusTranslations: Record = { connected: 'status.online', disconnected: 'status.offline', connecting: 'status.connecting', oauth_required: 'status.oauthRequired', }; return (

{t('pages.dashboard.title')}

{error && (

{t('app.error')}

{error}

)} {isLoading && (

{t('app.loading')}

)} {!isLoading && (
{/* Total servers */}

{t('pages.dashboard.totalServers')}

{serverStats.total}

{/* Online servers */}

{t('pages.dashboard.onlineServers')}

{serverStats.online}

{/* Offline servers */}

{t('pages.dashboard.offlineServers')}

{serverStats.offline}

{/* Connecting servers */}

{t('pages.dashboard.connectingServers')}

{serverStats.connecting}

)} {/* Recent activity list */} {servers.length > 0 && !isLoading && (

{t('pages.dashboard.recentServers')}

{servers.slice(0, 5).map((server, index) => ( ))}
{t('server.name')} {t('server.status')} {t('server.tools')} {t('server.prompts')} {t('server.enabled')}
{server.name} {server.status === 'oauth_required' && '🔐 '} {t(statusTranslations[server.status] || server.status)} {server.tools?.length || 0} {server.prompts?.length || 0} {server.enabled !== false ? ( ) : ( )}
)}
); }; export default DashboardPage;