import React from 'react'; import { cn } from '@/lib/utils'; /** Base pulsing block */ export function Skeleton({ className, ...props }: React.HTMLAttributes) { return (
); } export function SkeletonText({ lines = 3, className, }: { lines?: number; className?: string; }) { return (
{Array.from({ length: lines }).map((_, i) => ( ))}
); } /** Product card placeholder */ export function ProductCardSkeleton({ className }: { className?: string }) { return (
); } /** Horizontal featured mini-card */ export function FeaturedCardSkeleton() { return (
); } /** Section header with title + action */ export function SectionHeaderSkeleton() { return (
); } /** Brand logo tile */ export function BrandTileSkeleton() { return ; } /** Category circle */ export function CategorySkeleton() { return (
); } /** Promo banner pair */ export function PromoBannerSkeleton() { return (
{[0, 1].map((i) => ( ))}
); } /** Shop / catalog grid with sidebar */ export function CatalogSkeleton() { return (
{Array.from({ length: 8 }).map((_, i) => ( ))} {Array.from({ length: 5 }).map((_, i) => ( ))}
{Array.from({ length: 8 }).map((_, i) => (
))}
); } /** PDP skeleton */ export function ProductDetailSkeleton() { return (
{[1, 2, 3, 4].map((i) => ( ))}
); } /** Cart / checkout style page */ export function CartPageSkeleton() { return (
{Array.from({ length: 3 }).map((_, i) => (
))}
); } /** Full homepage skeleton matching storefront sections */ export function HomePageSkeleton() { return (
{/* Announcement */} {/* Header */}
{/* Nav */}
{Array.from({ length: 5 }).map((_, i) => ( ))}
{/* Hero */} {/* Promo cards ×3 */}
{[0, 1, 2].map((i) => ( ))}
{/* Categories */}
{Array.from({ length: 8 }).map((_, i) => ( ))}
{/* New arrivals */}
{Array.from({ length: 5 }).map((_, i) => (
))}
{/* Promo banners */} {/* Hot deals */}
{Array.from({ length: 6 }).map((_, i) => ( ))}
{/* Brands */}
{Array.from({ length: 10 }).map((_, i) => ( ))}
{/* Features */}
{Array.from({ length: 4 }).map((_, i) => ( ))}
); } /** Generic content page skeleton */ export function PageSkeleton({ variant = 'home', }: { variant?: 'home' | 'catalog' | 'product' | 'cart' | 'simple'; }) { if (variant === 'catalog') { return (
); } if (variant === 'product') { return (
); } if (variant === 'cart') { return (
); } if (variant === 'simple') { return (
); } return ; }