import { ReactNode } from 'react' export type LoadingType = 'spinner' | 'dots' | 'progress' export type LoadingSize = 'small' | 'medium' | 'large' interface LoadingIndicatorProps { size?: LoadingSize type?: LoadingType message?: string progress?: number className?: string } /** * Versatile loading indicator component * Supports multiple visual styles and sizes */ const LoadingIndicator = ({ size = 'medium', type = 'spinner', message, progress = 0, className = '', }: LoadingIndicatorProps) => { // Size class mapping const sizeClass = { small: 'loading-small', medium: 'loading-medium', large: 'loading-large', }[size] // Render loading indicator based on type const renderLoadingIndicator = (): ReactNode => { switch (type) { case 'spinner': return
case 'dots': return ({message}
}