Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | /** * Monitoring Loading State * * Skeleton UI displayed while monitoring dashboards are loading. * Matches the layout of dashboard components for smooth transitions. */ export default function MonitoringLoading() { return ( <div className="p-6 space-y-6"> {/* Header skeleton */} <div className="h-8 w-64 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" /> {/* Stats cards skeleton */} <div className="grid grid-cols-1 md:grid-cols-3 lg:grid-cols-4 gap-4"> {[1, 2, 3, 4].map((i) => ( <div key={i} className="h-28 bg-gray-200 dark:bg-gray-700 rounded-lg animate-pulse" /> ))} </div> {/* Chart skeleton */} <div className="bg-white dark:bg-gray-800 rounded-lg p-6 shadow-sm"> <div className="h-6 w-32 bg-gray-200 dark:bg-gray-700 rounded mb-4 animate-pulse" /> <div className="h-64 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" /> </div> {/* Table skeleton */} <div className="bg-white dark:bg-gray-800 rounded-lg p-6 shadow-sm"> <div className="h-6 w-40 bg-gray-200 dark:bg-gray-700 rounded mb-4 animate-pulse" /> <div className="space-y-3"> {[1, 2, 3, 4, 5].map((i) => ( <div key={i} className="h-12 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" /> ))} </div> </div> </div> ); } |