Complete the migration of all inline `animate-pulse bg-muted` patterns to the shared `<Skeleton>` component with premium shimmer animation. Covers: UserProfilePage, SearchPage, CourseDetailView, ProductDetailView, NotificationsPage, ChatMessages, SessionsPage, RegisterPage, AudioPlayer, DataList, AccountSettings, Dialog, CourseLearningView, TwoFactorSetup, ProjectsManager, GoLiveView, ConnectivityView, AIToolsView, CloudSettingsView, EquipmentDetailView, NotificationMenu, PlaybackHeatmap, ProjectDetailView, AvatarUpload, ShareLinkManager, OptimizedImage, BlurPlaceholder. Co-authored-by: Cursor <cursoragent@cursor.com>
26 lines
561 B
TypeScript
26 lines
561 B
TypeScript
import { Skeleton } from '@/components/ui/skeleton';
|
|
import { cn } from '@/lib/utils';
|
|
|
|
interface OptimizedImageSkeletonProps {
|
|
width?: number;
|
|
height?: number;
|
|
className?: string;
|
|
}
|
|
|
|
/**
|
|
* Skeleton pour l'état Loading d'OptimizedImage.
|
|
* Utilise les layout primitives (pas de valeurs arbitraires).
|
|
*/
|
|
export function OptimizedImageSkeleton({
|
|
width,
|
|
height,
|
|
className,
|
|
}: OptimizedImageSkeletonProps) {
|
|
return (
|
|
<Skeleton
|
|
className={cn('rounded-lg', className)}
|
|
style={{ width, height }}
|
|
aria-hidden="true"
|
|
/>
|
|
);
|
|
}
|