// Reusable skeleton components for loading states export function SkeletonCard() { return (
) } export function SkeletonStatCard() { return (
) } export function SkeletonTable({ rows = 5, cols = 6 }) { return (
{[...Array(cols)].map((_, i) => (
))}
{[...Array(rows)].map((_, i) => (
{[...Array(cols)].map((_, j) => (
))}
))}
) } export function SkeletonKanbanBoard() { return (
{[...Array(5)].map((_, colIdx) => (
{[...Array(3)].map((_, cardIdx) => (
))}
))}
) } export function SkeletonCalendar() { return (
{[...Array(7)].map((_, i) => (
))}
{[...Array(35)].map((_, i) => (
{i % 3 === 0 &&
}
))}
) } export function SkeletonAssetGrid({ count = 10 }) { return (
{[...Array(count)].map((_, i) => (
))}
) } export function SkeletonDashboard() { return (
{/* Header */}
{/* Stat cards */}
{[...Array(4)].map((_, i) => ( ))}
{/* Content cards */}
{[...Array(2)].map((_, i) => (
{[...Array(5)].map((_, j) => (
))}
))}
) }