import { useTranslation } from 'react-i18next'; import { Card, Col, Progress, Row, Tooltip } from 'antd'; import { AreaChartOutlined } from '@ant-design/icons'; import { CPUFormatter, SizeFormatter } from '@/utils'; import { useTheme } from '@/hooks/useTheme'; import type { Status } from '@/models/status'; import './StatusCard.css'; interface StatusCardProps { status: Status; isMobile: boolean; } export default function StatusCard({ status, isMobile }: StatusCardProps) { const { t } = useTranslation(); const { isDark, isUltra } = useTheme(); const gaugeSize = isMobile ? 60 : 90; const strokeWidth = isMobile ? 7 : 5; const railColor = isDark ? isUltra ? 'rgba(255, 255, 255, 0.1)' : 'rgba(255, 255, 255, 0.16)' : 'rgba(0, 0, 0, 0.08)'; return (
{t('pages.index.cpu')}: {CPUFormatter.cpuCoreFormat(status.cpuCores)}
{t('pages.index.logicalProcessors')}: {status.logicalPro}
{t('pages.index.frequency')}:{' '} {CPUFormatter.cpuSpeedFormat(status.cpuSpeedMhz)}
} >
{t('pages.index.memory')}: {SizeFormatter.sizeFormat(status.mem.current)} /{' '} {SizeFormatter.sizeFormat(status.mem.total)}
{t('pages.index.swap')}: {SizeFormatter.sizeFormat(status.swap.current)} /{' '} {SizeFormatter.sizeFormat(status.swap.total)}
{t('pages.index.storage')}: {SizeFormatter.sizeFormat(status.disk.current)} /{' '} {SizeFormatter.sizeFormat(status.disk.total)}
); }