36 lines
1.2 KiB
TypeScript
36 lines
1.2 KiB
TypeScript
|
|
export default function Loading() {
|
||
|
|
return (
|
||
|
|
<div className="p-8 max-w-7xl mx-auto">
|
||
|
|
<div className="animate-pulse space-y-6">
|
||
|
|
{/* 标题骨架 */}
|
||
|
|
<div className="h-8 w-48 bg-gray-700/50 rounded" />
|
||
|
|
<div className="h-4 w-64 bg-gray-700/30 rounded" />
|
||
|
|
|
||
|
|
{/* Tab骨架 */}
|
||
|
|
<div className="flex gap-2 pb-4 border-b border-gray-700">
|
||
|
|
{[1, 2, 3, 4].map(i => (
|
||
|
|
<div key={i} className="h-10 w-28 bg-gray-700/30 rounded-lg" />
|
||
|
|
))}
|
||
|
|
</div>
|
||
|
|
|
||
|
|
{/* 卡片骨架 */}
|
||
|
|
<div className="grid grid-cols-4 gap-4">
|
||
|
|
{[1, 2, 3, 4].map(i => (
|
||
|
|
<div key={i} className="bg-[#0f2137] border border-gray-700/50 rounded-lg p-6">
|
||
|
|
<div className="h-4 w-20 bg-gray-700/30 rounded mb-2" />
|
||
|
|
<div className="h-8 w-16 bg-gray-700/50 rounded" />
|
||
|
|
</div>
|
||
|
|
))}
|
||
|
|
</div>
|
||
|
|
|
||
|
|
{/* 大卡片骨架 */}
|
||
|
|
<div className="grid grid-cols-2 gap-4">
|
||
|
|
{[1, 2].map(i => (
|
||
|
|
<div key={i} className="bg-[#0f2137] border border-gray-700/50 rounded-lg p-6 h-48" />
|
||
|
|
))}
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
</div>
|
||
|
|
)
|
||
|
|
}
|