// frontend/src/components/Dashboard.tsx import { useState, useEffect } from 'react'; import toast from 'react-hot-toast'; import { dashboardService } from '../services/apiService'; import type { DashboardStats } from '../types/interfaces'; import OsChart from './OsChart'; import SectorChart from './SectorChart'; import CpuChart from './CpuChart'; import RamChart from './RamChart'; import styles from './Dashboard.module.css'; import skeletonStyles from './Skeleton.module.css'; const Dashboard = () => { const [stats, setStats] = useState(null); const [isLoading, setIsLoading] = useState(true); useEffect(() => { setIsLoading(true); dashboardService.getStats() .then(data => { setStats(data); }) .catch(() => { toast.error('No se pudieron cargar las estadísticas del dashboard.'); }) .finally(() => { setIsLoading(false); }); }, []); if (isLoading) { return (

Dashboard de Inventario

{/* Replicamos la estructura de la grilla con esqueletos */}
); } if (!stats) { return (

No hay datos disponibles para mostrar.

); } return (

Dashboard de Inventario

{/* Fila 1, Columna 1 */}
{/* Fila 1, Columna 2 */}
{/* Fila 2, Columna 1 */}
{/* Fila 2, Columna 2 */}
); }; export default Dashboard;