import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Badge } from "@/components/ui/badge"; import { Container, Play, Square, AlertTriangle } from "lucide-react"; import { DockerStats } from "@/types/docker.types"; import { useTheme } from "@/contexts/ThemeContext"; import { useLanguage } from "@/contexts/LanguageContext"; interface DockerStatsCardsProps { stats: DockerStats; } export const DockerStatsCards = ({ stats }: DockerStatsCardsProps) => { const { theme } = useTheme(); const { t } = useLanguage(); const cards = [ { title: t('totalContainers', 'docker'), value: stats.total, icon: Container, color: "text-blue-600", gradient: theme === 'dark' ? "linear-gradient(135deg, rgba(65, 59, 55, 0.8) 0%, rgba(59, 130, 246, 0.6) 100%)" : "linear-gradient(135deg, rgba(65, 59, 55, 0.8) 0%, #3b82f6 100%)" }, { title: t('running', 'docker'), value: stats.running, icon: Play, color: "text-green-600", gradient: theme === 'dark' ? "linear-gradient(135deg, rgba(65, 59, 55, 0.8) 0%, rgba(16, 185, 129, 0.6) 100%)" : "linear-gradient(135deg, rgba(65, 59, 55, 0.8) 0%, #10b981 100%)" }, { title: t('stopped', 'docker'), value: stats.stopped, icon: Square, color: "text-gray-600", gradient: theme === 'dark' ? "linear-gradient(135deg, rgba(65, 59, 55, 0.8) 0%, rgba(107, 114, 128, 0.6) 100%)" : "linear-gradient(135deg, rgba(65, 59, 55, 0.8) 0%, #6b7280 100%)" }, { title: t('warning', 'docker'), value: stats.warning, icon: AlertTriangle, color: "text-amber-600", gradient: theme === 'dark' ? "linear-gradient(135deg, rgba(65, 59, 55, 0.8) 0%, rgba(245, 158, 11, 0.6) 100%)" : "linear-gradient(135deg, rgba(65, 59, 55, 0.8) 0%, #f59e0b 100%)" }, ]; return (
{cards.map((card) => { const IconComponent = card.icon; return ( {/* Grid Pattern Overlay */}
{card.title}
{card.value}
{t('containersLabel', 'docker')}
); })}
); };