import './Loader.css'; /** * Loader component — Spinner + Skeleton variants * @param {Object} props * @param {boolean} [props.fullScreen] - Show centered full-screen loader * @param {string} [props.size] - 'sm' | 'md' | 'lg' * @param {string} [props.text] - Loading text */ export default function Loader({ fullScreen = false, size = 'md', text = '' }) { const spinner = (
{text &&

{text}

}
); if (fullScreen) { return
{spinner}
; } return spinner; } /** * Skeleton — Placeholder loading state */ export function Skeleton({ width = '100%', height = '20px', radius = '8px', className = '' }) { return (
); } /** * Card Skeleton */ export function CardSkeleton({ count = 1 }) { return ( <> {Array.from({ length: count }).map((_, i) => (
))} ); }