import { useState } from 'react'
export default function ServerCard({ server, onClick }) {
const [isHovered, setIsHovered] = useState(false)
const formatUptime = (seconds) => {
const hours = Math.floor(seconds / 3600)
if (hours > 24) {
const days = Math.floor(hours / 24)
return days + 'd ' + (hours % 24) + 'h'
}
const minutes = Math.floor((seconds % 3600) / 60)
return hours + 'h ' + minutes + 'm'
}
const cpuPercent = Math.min(server.metrics.cpu, 100)
const memPercent = Math.min(server.metrics.memory, 100)
return (
setIsHovered(true)}
onMouseLeave={() => setIsHovered(false)}
>
{/* Header */}
{server.name.toUpperCase()}
{server.running ? 'ONLINE' : 'OFFLINE'}
{/* CPU & RAM Bars */}
{/* CPU */}
CPU
{server.metrics.cpu.toFixed(1)}%
{/* RAM */}
RAM
{server.metrics.memoryUsed?.toFixed(1) || 0} / {server.metrics.memoryTotal?.toFixed(1) || 0} {server.metrics.memoryUnit}
{/* Stats Row */}
{server.players.online}
PLAYERS
{server.running && (
{formatUptime(server.metrics.uptime)}
UPTIME
)}
{server.metrics.cpuCores}
CORES
{/* Players List */}
{server.players?.list?.length > 0 && (
{server.players.list.map((player, i) => (
{player}
))}
)}
{/* Click Indicator */}
CLICK FOR DETAILS
)
}