import { useState, useEffect } from 'react'; import { Container, Box, Fade, } from '@mui/material'; import { useAuth } from '../contexts/AuthContext'; import DashboardLayout from '../components/dashboard/DashboardLayout'; import SkeletonCard from '../components/shared/SkeletonCard'; import UserProfile from '../components/dashboard/UserProfile'; import NextcloudTalkWidget from '../components/dashboard/NextcloudTalkWidget'; import UpcomingEventsWidget from '../components/dashboard/UpcomingEventsWidget'; import AtemschutzDashboardCard from '../components/atemschutz/AtemschutzDashboardCard'; import EquipmentDashboardCard from '../components/equipment/EquipmentDashboardCard'; import VehicleDashboardCard from '../components/vehicles/VehicleDashboardCard'; import PersonalWarningsBanner from '../components/dashboard/PersonalWarningsBanner'; function Dashboard() { const { user } = useAuth(); const canViewAtemschutz = user?.groups?.some(g => ['dashboard_admin', 'dashboard_kommando', 'dashboard_atemschutz', 'dashboard_moderator'].includes(g) ) ?? false; const [dataLoading, setDataLoading] = useState(true); useEffect(() => { const timer = setTimeout(() => { setDataLoading(false); }, 800); return () => clearTimeout(timer); }, []); return ( {/* User Profile Card — full width, contains welcome greeting */} {user && ( {dataLoading ? ( ) : ( )} )} {/* Personal Warnings Banner — full width, conditionally rendered */} {user && ( )} {/* Vehicle Status Card */} {/* Equipment Status Card */} {/* Atemschutz Status Card */} {canViewAtemschutz && ( )} {/* Upcoming Events Widget */} {/* Nextcloud Talk Widget */} {dataLoading ? ( ) : ( )} ); } export default Dashboard;