import { cn } from "@/lib/utils"; interface SkeletonProps { className?: string; variant?: 'text' | 'avatar' | 'card' | 'button' | 'image'; lines?: number; animate?: boolean; } export function Skeleton({ className, variant = 'text', lines = 1, animate = true }: SkeletonProps) { const baseClasses = cn( "bg-muted rounded", animate && "skeleton", className ); switch (variant) { case 'avatar': return
; case 'button': return
; case 'image': return
; case 'card': return (
); case 'text': default: return (
{Array.from({ length: lines }).map((_, i) => (
))}
); } } export function SkeletonCard() { return (
); } export function SkeletonStats() { return (
{Array.from({ length: 4 }).map((_, i) => (
))}
); } export function SkeletonUserPath() { return (
{Array.from({ length: 4 }).map((_, i) => (
{Array.from({ length: 4 }).map((_, j) => ( ))}
))}
); } export function SkeletonOnboardingStep() { return (
{Array.from({ length: 4 }).map((_, i) => (
))}
); } export function SkeletonLayout() { return (
{/* Header Skeleton */}
{Array.from({ length: 4 }).map((_, i) => ( ))}
{/* Content Skeleton */}
); }