Openstatus www.openstatus.dev
at 4c0f4c00a38753a5d0dfd7e7b7b7706dec6f1503 64 lines 1.9 kB view raw
1import { Skeleton } from "@/components/ui/skeleton"; 2import { 3 Table, 4 TableBody, 5 TableCell, 6 TableHead, 7 TableHeader, 8 TableRow, 9} from "@/components/ui/table"; 10 11interface DataTableSkeletonProps { 12 /** 13 * Number of rows to render 14 * @default 10 15 */ 16 rows?: number; 17} 18 19// TODO: add checkbox skeleton (for MonitorTable e.g.) 20 21export function DataTableSkeleton({ rows = 3 }: DataTableSkeletonProps) { 22 return ( 23 <Table> 24 <TableHeader className="bg-muted/50"> 25 <TableRow className="hover:bg-transparent"> 26 <TableHead> 27 <Skeleton className="my-1.5 h-4 w-24" /> 28 </TableHead> 29 <TableHead className="hidden sm:table-cell"> 30 <Skeleton className="my-1.5 h-4 w-32" /> 31 </TableHead> 32 <TableHead className="hidden md:table-cell"> 33 <Skeleton className="my-1.5 h-4 w-16" /> 34 </TableHead> 35 <TableHead> 36 <Skeleton className="my-1.5 h-4 w-20" /> 37 </TableHead> 38 <TableHead className="flex items-center justify-end" /> 39 </TableRow> 40 </TableHeader> 41 <TableBody> 42 {[rows].fill(0).map((_, i) => ( 43 <TableRow key={i} className="hover:bg-transparent"> 44 <TableCell> 45 <Skeleton className="my-1.5 h-4 w-full max-w-40" /> 46 </TableCell> 47 <TableCell className="hidden sm:table-cell"> 48 <Skeleton className="my-1.5 h-4 w-full max-w-52" /> 49 </TableCell> 50 <TableCell className="hidden md:table-cell"> 51 <Skeleton className="my-1.5 h-4 w-24" /> 52 </TableCell> 53 <TableCell> 54 <Skeleton className="my-1.5 h-4 w-full max-w-40" /> 55 </TableCell> 56 <TableCell className="flex justify-end"> 57 <Skeleton className="my-1.5 h-5 w-5" /> 58 </TableCell> 59 </TableRow> 60 ))} 61 </TableBody> 62 </Table> 63 ); 64}