import { cn } from '@/lib/utils';
/**
* LoadingSpinnerProps - Propriétés du composant LoadingSpinner
*
* @interface LoadingSpinnerProps
*/
interface LoadingSpinnerProps {
/**
* Taille du spinner
*
* - `sm`: Petit (h-4 w-4)
* - `md`: Moyen (h-8 w-8) - par défaut
* - `lg`: Grand (h-12 w-12)
*
* @default 'md'
*/
size?: 'sm' | 'md' | 'lg';
/**
* Classes CSS personnalisées
*/
className?: string;
/**
* Texte à afficher sous le spinner
*
* @example
* ```tsx
*
* ```
*/
text?: string;
}
/**
* LoadingSpinner - Composant de spinner de chargement
*
* Composant de spinner animé pour indiquer un état de chargement.
* Inclut un texte optionnel et supporte plusieurs tailles.
*
* @example
* ```tsx
* // Spinner simple
*
*
* // Spinner avec texte
*
*
* // Spinner de grande taille
*
* ```
*
* @component
* @param {LoadingSpinnerProps} props - Propriétés du composant
* @returns {JSX.Element} Spinner animé avec texte optionnel
*/
export function LoadingSpinner({
size = 'md',
className,
text,
}: LoadingSpinnerProps) {
const sizeClasses = {
sm: 'h-4 w-4',
md: 'h-8 w-8',
lg: 'h-12 w-12',
};
return (
Chargement...
{text && (
{text}
)}
);
}