beta/components/task-table/data-table-loading.tsx
Christopher Arraya 53c3cd3d6e initial commit
2023-11-04 14:57:25 -04:00

78 lines
2.6 KiB
TypeScript

import { Skeleton } from "@/components/ui/skeleton";
import {
Table,
TableBody,
TableCell,
TableHead,
TableHeader,
TableRow,
} from "@/components/ui/table";
interface DataTableLoadingProps {
columnCount: number;
rowCount?: number;
}
export function DataTableLoading({
columnCount,
rowCount = 10,
}: DataTableLoadingProps) {
return (
<div className="w-full space-y-3 overflow-auto">
<div className="flex w-full items-center justify-between space-x-2 overflow-auto p-1">
<div className="flex flex-1 items-center space-x-2">
<Skeleton className="h-7 w-[150px] lg:w-[250px]" />
<Skeleton className="h-7 w-[70px] border-dashed" />
</div>
<Skeleton className="ml-auto hidden h-7 w-[70px] lg:flex" />
</div>
<div className="rounded-md border">
<Table>
<TableHeader>
{Array.from({ length: 1 }).map((_, i) => (
<TableRow key={i} className="hover:bg-transparent">
{Array.from({ length: columnCount }).map((_, i) => (
<TableHead key={i}>
<Skeleton className="h-6 w-full" />
</TableHead>
))}
</TableRow>
))}
</TableHeader>
<TableBody>
{Array.from({ length: rowCount }).map((_, i) => (
<TableRow key={i} className="hover:bg-transparent">
{Array.from({ length: columnCount }).map((_, i) => (
<TableCell key={i}>
<Skeleton className="h-6 w-full" />
</TableCell>
))}
</TableRow>
))}
</TableBody>
</Table>
</div>
<div className="flex w-full flex-col items-center justify-between gap-4 overflow-auto px-2 py-1 sm:flex-row sm:gap-8">
<div className="flex-1">
<Skeleton className="h-8 w-40" />
</div>
<div className="flex flex-col items-center gap-4 sm:flex-row sm:gap-6 lg:gap-8">
<div className="flex items-center space-x-2">
<Skeleton className="h-8 w-24" />
<Skeleton className="h-8 w-[70px]" />
</div>
<div className="flex w-[100px] items-center justify-center text-sm font-medium">
<Skeleton className="h-8 w-20" />
</div>
<div className="flex items-center space-x-2">
<Skeleton className="hidden h-8 w-8 lg:block" />
<Skeleton className="h-8 w-8" />
<Skeleton className="h-8 w-8" />
<Skeleton className="hidden h-8 w-8 lg:block" />
</div>
</div>
</div>
</div>
);
}