'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 NotificationCardSkeletonProps extends React.HTMLAttributes { /** Number of notification rows to display (mirrors `maxItems` on NotificationCard) */ rows?: number; /** Whether to show the "View all" footer button placeholder */ showViewAll?: boolean; } /** * Loading placeholder for `NotificationCard`. * * @description * Mirrors the visual layout of `NotificationCard`: header with title + badge, * a list of notification rows (icon + title + message + timestamp), and an * optional "View all" footer. * * @example * ```tsx * {isLoading ? : } * ``` */ export function NotificationCardSkeleton({ rows = 4, showViewAll = false, className, ...props }: NotificationCardSkeletonProps) { return (
{/* Title */} {/* Unread count badge */}
{/* "Mark all as read" action */}
    {Array.from({ length: rows }).map((_, i) => (
  • {/* Icon / avatar circle */}
    {/* Title row */}
    {/* Message */} {/* Timestamp */}
    {/* Unread dot */}
  • ))}
{showViewAll && ( )}
); }