// 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) => (
))}
)
}
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) => (
))}
))}
)
}