lty/qy-lty-admin/app/props/[id]/loading.tsx
2026-03-17 13:17:02 +08:00

149 lines
5.8 KiB
TypeScript

import { DashboardShell } from "@/components/dashboard-shell"
import { DashboardHeader } from "@/components/dashboard-header"
import { Button } from "@/components/ui/button"
import { Card, CardContent, CardHeader } from "@/components/ui/card"
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
import { ArrowLeft } from "lucide-react"
import { Skeleton } from "@/components/ui/skeleton"
import Link from "next/link"
export default function PropDetailLoading() {
return (
<DashboardShell>
<div className="absolute top-0 right-0 w-1/2 h-48 bg-gradient-to-bl from-purple-200 via-pink-200 to-transparent opacity-20 rounded-bl-full" />
<div className="flex items-center mb-6">
<Button variant="ghost" size="sm" className="mr-4" asChild>
<Link href="/props">
<ArrowLeft className="mr-2 h-4 w-4" />
</Link>
</Button>
<DashboardHeader heading={<Skeleton className="h-8 w-48" />} text={<Skeleton className="h-5 w-32" />}>
<div className="flex space-x-2">
<Skeleton className="h-10 w-24" />
<Skeleton className="h-10 w-32" />
</div>
</DashboardHeader>
</div>
<Tabs defaultValue="details" className="w-full">
<TabsList className="grid w-full md:w-auto grid-cols-2 md:grid-cols-3 mb-4">
<TabsTrigger value="details"></TabsTrigger>
<TabsTrigger value="batches"></TabsTrigger>
<TabsTrigger value="analytics"></TabsTrigger>
</TabsList>
<TabsContent value="details" className="space-y-6">
<div className="grid gap-6 md:grid-cols-3">
<Card className="md:col-span-1 border-none shadow-lg bg-white">
<CardHeader>
<Skeleton className="h-6 w-32" />
</CardHeader>
<CardContent className="flex justify-center">
<Skeleton className="w-full aspect-square max-w-[300px] rounded-lg" />
</CardContent>
</Card>
<Card className="md:col-span-2 border-none shadow-lg bg-gradient-to-br from-white to-purple-50">
<CardHeader>
<Skeleton className="h-6 w-32" />
</CardHeader>
<CardContent>
<div className="grid grid-cols-2 gap-4">
{Array.from({ length: 6 }).map((_, i) => (
<div key={i} className="space-y-1">
<Skeleton className="h-4 w-24" />
<Skeleton className="h-6 w-32" />
</div>
))}
</div>
<div className="mt-6">
<Skeleton className="h-4 w-24 mb-2" />
<Skeleton className="h-20 w-full" />
</div>
</CardContent>
</Card>
</div>
</TabsContent>
<TabsContent value="batches" className="space-y-6">
<Card className="border-none shadow-lg bg-gradient-to-br from-white to-blue-50">
<CardHeader className="flex flex-row items-center justify-between">
<div>
<Skeleton className="h-6 w-40" />
<Skeleton className="h-4 w-64 mt-2" />
</div>
<Skeleton className="h-10 w-32" />
</CardHeader>
<CardContent>
<div className="rounded-md border">
<div className="p-4">
<div className="flex justify-between mb-4">
{Array.from({ length: 8 }).map((_, i) => (
<Skeleton key={i} className="h-4 w-16" />
))}
</div>
{Array.from({ length: 3 }).map((_, i) => (
<div key={i} className="flex justify-between py-3 border-b">
{Array.from({ length: 8 }).map((_, j) => (
<Skeleton key={j} className="h-4 w-16" />
))}
</div>
))}
</div>
</div>
</CardContent>
</Card>
<Card className="border-none shadow-lg bg-white">
<CardHeader>
<Skeleton className="h-6 w-32" />
<Skeleton className="h-4 w-48 mt-2" />
</CardHeader>
<CardContent>
<div className="flex flex-wrap gap-4">
<Skeleton className="h-10 w-32" />
<Skeleton className="h-10 w-32" />
</div>
</CardContent>
</Card>
</TabsContent>
<TabsContent value="analytics" className="space-y-6">
<Card className="border-none shadow-lg bg-white">
<CardHeader>
<Skeleton className="h-6 w-40" />
<Skeleton className="h-4 w-56 mt-2" />
</CardHeader>
<CardContent>
<Skeleton className="h-[300px] w-full rounded-lg" />
</CardContent>
</Card>
<div className="grid gap-6 md:grid-cols-2">
<Card className="border-none shadow-lg bg-gradient-to-br from-white to-green-50">
<CardHeader>
<Skeleton className="h-6 w-32" />
</CardHeader>
<CardContent>
<Skeleton className="h-[200px] w-full rounded-lg" />
</CardContent>
</Card>
<Card className="border-none shadow-lg bg-gradient-to-br from-white to-blue-50">
<CardHeader>
<Skeleton className="h-6 w-32" />
</CardHeader>
<CardContent>
<Skeleton className="h-[200px] w-full rounded-lg" />
</CardContent>
</Card>
</div>
</TabsContent>
</Tabs>
</DashboardShell>
)
}