File size: 1,474 Bytes
c3bf538 |
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 |
import React from 'react';
const SkeletonBlock = ({ className }) => (
<div className={`bg-gray-700 rounded-md animate-pulse ${className}`} />
);
function LoadingSkeleton() {
return (
<div className="mt-8 p-6 bg-gray-800/50 border border-gray-700 rounded-lg">
{/* Header Skeleton */}
<div className="mb-6 pb-6 border-b border-gray-700">
<SkeletonBlock className="h-12 w-3/4 mb-3" />
<SkeletonBlock className="h-6 w-1/2" />
</div>
{/* Key Metrics Skeleton */}
<div className="grid grid-cols-2 md:grid-cols-5 gap-4 mb-10">
<SkeletonBlock className="h-20" />
<SkeletonBlock className="h-20" />
<SkeletonBlock className="h-20" />
<SkeletonBlock className="h-20" />
<SkeletonBlock className="h-20" />
</div>
{/* Chart Skeleton */}
<div className="mb-12 bg-gray-900/40 p-6 rounded-xl">
<SkeletonBlock className="h-8 w-1/3 mb-4" />
<SkeletonBlock className="h-72 w-full" />
</div>
{/* AI Report Skeleton */}
<div className="mb-12">
<SkeletonBlock className="h-8 w-1/3 mb-4" />
<div className="p-6 bg-gray-900/40 rounded-xl space-y-4">
<SkeletonBlock className="h-6 w-full" />
<SkeletonBlock className="h-6 w-5/6" />
<SkeletonBlock className="h-6 w-full" />
<SkeletonBlock className="h-6 w-3/4" />
</div>
</div>
</div>
);
}
export default LoadingSkeleton; |