'use client'; import * as React from 'react'; import { Card, CardHeader, CardContent, CardFooter } from '../../ui/card'; import { Skeleton } from '../../ui/skeleton'; import { cn } from '../../shared/utils'; export interface ProjectCardSkeletonProps extends React.HTMLAttributes { /** Number of member avatar placeholders in the footer */ memberCount?: number; } /** * Loading placeholder for `ProjectCard`. * * @description * Mirrors the visual layout of `ProjectCard`: title + badge in header, * progress bar in content, and member avatars + due date in footer. * * @example * ```tsx * {isLoading ? : } * ``` */ export function ProjectCardSkeleton({ memberCount = 3, className, ...props }: ProjectCardSkeletonProps) { return (
{/* Title */} {/* Description */}
{/* Status badge */}
{/* "Progress" label + % */}
{/* Progress bar */}
{/* Member avatars */}
{Array.from({ length: Math.min(memberCount, 4) }).map((_, i) => ( ))}
{/* Due date */}
); }