import type React from "react" import { cn } from "../../utils/cn" import { OrganizationIconSkeleton } from "./organization-icon-skeleton" import { TextSkeleton, MediaSkeleton, InteractiveSkeleton } from "./unified-skeleton" export interface OrganizationCardSkeletonProps { /** * Additional CSS classes */ className?: string /** * Show footer stats area */ showFooter?: boolean /** * Show description area */ showDescription?: boolean /** Optional tailwind classes to override the card container background & border */ containerClassName?: string } /** * OrganizationCardSkeleton - Loading skeleton matching OrganizationCard exact layout * * Matches VendorCard skeleton structure for 100% visual parity. * * Structure: * - Header: 60x60px org logo + title + subtitle * - Description: Fixed 48px height with 2-line clamp * - Footer: Stats display area * * Prevents layout jumps by matching exact dimensions. */ export function OrganizationCardSkeleton({ className, containerClassName, showFooter = true, showDescription = true }: OrganizationCardSkeletonProps) { return (
{/* Header Section - Row layout matching OrganizationCard/VendorCard */}
{/* Logo Frame - 60px width fixed, matching actual structure */} {/* Text Container - Column layout, matching actual structure */}
{/* Title - Single line with proper width */} {/* Subtitle (industry/tier) - Single line, shorter */}
{/* Description Section - Fixed 48px height matching VendorCard */} {showDescription && (
)} {/* Footer Section - Stats display */} {showFooter && (
{/* Stats Container */}
{/* Stat 1 */}
{/* Stat 2 */}
{/* Tag/Badge Section */}
)}
) } /** * OrganizationCardSkeletonGrid - Grid of organization card skeletons * * Matches responsive grid layout: * - Mobile: 1 column * - Tablet (md): 2 columns * - Desktop (xl): 3 columns */ export function OrganizationCardSkeletonGrid({ count = 12, className, containerClassName, showFooter = true, showDescription = true }: { count?: number className?: string containerClassName?: string showFooter?: boolean showDescription?: boolean }) { return (
{Array.from({ length: count }, (_, index) => ( ))}
) }