Shadcn Table
componentdata-grid-skeletonsource: ok · hit
Data Grid Skeleton
A composable skeleton component for the data grid with toolbar and grid parts
npx shadcn add "https://tablecn.com/r/data-grid-skeleton.json"free
No selection tags yet — empty means no evidence, not lack of support.
Dependencies
Bundle weight · lightRegistry dependencies
skeleton
Files1 · source cached 10/9/2026, 3:26:07 AM
src/registry/bases/base/components/data-grid/data-grid-skeleton.tsx
import type * as React from "react";
import { cn } from "cn";
import { Skeleton } from "@/registry/bases/base/ui/skeleton";
interface DivProps extends React.ComponentProps<"div"> {}
function DataGridSkeleton({ className, ...props }: DivProps) {
return (
<div
data-slot="grid-skeleton"
className={cn(
"flex h-[calc(100dvh-(--spacing(16)))] w-full flex-col gap-4 has-[>[data-slot=grid-skeleton-toolbar]]:h-[calc(100dvh-(--spacing(20)))]",
className,
)}
{...props}
/>
);
}
interface DataGridSkeletonToolbarProps extends DivProps {
align?: "start" | "center" | "end";
actionCount?: number;
}
function DataGridSkeletonToolbar({
align = "end",
actionCount = 4,
className,
...props
}: DataGridSkeletonToolbarProps) {
return (
<div
data-slot="grid-skeleton-toolbar"
className={cn(
"flex items-center gap-2",
{
"justify-start": align === "start",
"justify-center": align === "center",
"justify-end": align === "end",
},
className,
)}
{...props}
>
{Array.from({ length: actionCount }).map((_, i) => (
<Skeleton key={i} className="h-8 w-20 shrink-0 rounded-lg" />
))}
</div>
);
}
function DataGridSkeletonGrid({ className, ...props }: DivProps) {
return (
<Skeleton
data-slot="grid-skeleton-grid"
className={cn("flex-1", className)}
{...props}
/>
);
}
export { DataGridSkeleton, DataGridSkeletonGrid, DataGridSkeletonToolbar };