import React from 'react';
import { cn } from '@/lib/utils';
import { LoadingSpinner } from './loading-spinner';
/**
* CRITIQUE FIX #20: Composant LoadingState standardisé pour uniformiser les états de chargement
*
* Ce composant fournit une interface cohérente pour afficher les états de chargement
* à travers toute l'application, améliorant l'UX et la cohérence visuelle.
*/
export interface LoadingStateProps {
/**
* Si true, affiche l'état de chargement
*/
isLoading?: boolean;
/**
* Type de chargement à afficher
* - 'spinner': Spinner centré avec texte optionnel (par défaut)
* - 'inline': Spinner inline avec texte à côté
* - 'skeleton': Skeleton loader pour le contenu
* - 'minimal': Spinner minimal sans conteneur
*/
variant?: 'spinner' | 'inline' | 'skeleton' | 'minimal';
/**
* Taille du spinner
*/
size?: 'sm' | 'md' | 'lg';
/**
* Texte à afficher pendant le chargement
*/
text?: string;
/**
* Message à afficher si aucun texte n'est fourni
*/
defaultText?: string;
/**
* Classes CSS personnalisées
*/
className?: string;
/**
* Contenu à afficher quand isLoading est false
*/
children?: React.ReactNode;
/**
* Si true, affiche un skeleton loader au lieu d'un spinner
* (utilisé avec variant='skeleton')
*/
showSkeleton?: boolean;
}
/**
* LoadingState - Composant standardisé pour les états de chargement
*
* CRITIQUE FIX #20: Standardise tous les états de chargement dans l'application
*
* @example
* ```tsx
* // Spinner centré (par défaut)
*