"use client" import React, { useEffect, useState } from 'react' interface StatusData { driftBalance: number activeTrades: number dailyPnL: number systemStatus: 'online' | 'offline' | 'error' } export default function StatusOverview() { const [status, setStatus] = useState({ driftBalance: 0, activeTrades: 0, dailyPnL: 0, systemStatus: 'offline' }) const [loading, setLoading] = useState(true) useEffect(() => { async function fetchStatus() { try { setLoading(true) // Get Drift positions for active trades const driftRes = await fetch('/api/drift/positions') let activeTrades = 0 if (driftRes.ok) { const driftData = await driftRes.json() activeTrades = driftData.positions?.length || 0 } // Get Drift balance let driftBalance = 0 try { const balanceRes = await fetch('/api/drift/balance') if (balanceRes.ok) { const balanceData = await balanceRes.json() driftBalance = balanceData.netUsdValue || 0 } } catch (e) { console.warn('Could not fetch balance:', e) } setStatus({ driftBalance, activeTrades, dailyPnL: driftBalance * 0.1, // Approximate daily as 10% for demo systemStatus: driftRes.ok ? 'online' : 'error' }) } catch (error) { console.error('Error fetching status:', error) setStatus(prev => ({ ...prev, systemStatus: 'error' })) } setLoading(false) } fetchStatus() // Refresh every 30 seconds const interval = setInterval(fetchStatus, 30000) return () => clearInterval(interval) }, []) const statusColor = { online: 'text-green-400', offline: 'text-yellow-400', error: 'text-red-400' } const statusIcon = { online: '🟢', offline: '🟡', error: '🔴' } return (

System Status

{statusIcon[status.systemStatus]} {status.systemStatus.toUpperCase()}
{loading ? (
Loading status...
) : (
💎

${status.driftBalance.toFixed(2)}

Drift Balance

🔄

{status.activeTrades}

Active Trades

📈

= 0 ? 'text-green-400' : 'text-red-400'}`}> {status.dailyPnL >= 0 ? '+' : ''}${status.dailyPnL.toFixed(2)}

Daily P&L

)}
) }