"use client" import { cn } from "@/lib/utils" import { Skeleton } from "@/components/ui/skeleton" import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow, } from "@/components/ui/table" interface DataTableSkeletonProps extends React.HTMLAttributes { /** * The number of columns in the table. * @type number */ columnCount: number /** * The number of rows in the table. * @default 10 * @type number | undefined */ rowCount?: number /** * The number of searchable columns in the table. * @default 0 * @type number | undefined */ searchableColumnCount?: number /** * The number of filterable columns in the table. * @default 0 * @type number | undefined */ filterableColumnCount?: number /** * Flag to show the table view options. * @default undefined * @type boolean | undefined */ showViewOptions?: boolean /** * The width of each cell in the table. * The length of the array should be equal to the columnCount. * Any valid CSS width value is accepted. * @default ["auto"] * @type string[] | undefined */ cellWidths?: string[] /** * Flag to show the pagination bar. * @default true * @type boolean | undefined */ withPagination?: boolean /** * Flag to prevent the table cells from shrinking. * @default false * @type boolean | undefined */ shrinkZero?: boolean } export function DataTableSkeleton(props: DataTableSkeletonProps) { const { columnCount, rowCount = 10, searchableColumnCount = 0, filterableColumnCount = 0, showViewOptions = true, cellWidths = ["auto"], withPagination = true, shrinkZero = false, className, ...skeletonProps } = props return (
{searchableColumnCount > 0 ? Array.from({ length: searchableColumnCount }).map((_, i) => ( )) : null} {filterableColumnCount > 0 ? Array.from({ length: filterableColumnCount }).map((_, i) => ( )) : null}
{showViewOptions ? ( ) : null}
{Array.from({ length: 1 }).map((_, i) => ( {Array.from({ length: columnCount }).map((_, j) => ( ))} ))} {Array.from({ length: rowCount }).map((_, i) => ( {Array.from({ length: columnCount }).map((_, j) => ( ))} ))}
{withPagination ? (
) : null}
) }