/**
 * Spinner standard de l'app. Consolide les variantes maison (divs à bordure,
 * usages ad-hoc de Loader2/LoaderCircle) en un seul composant cohérent.
 */
import { Loader2 } from 'lucide-react';
import { cn } from '@/lib/utils';

const sizes = {
    sm: 'size-4',
    md: 'size-6',
    lg: 'size-8',
} as const;

export interface SpinnerProps {
    size?: keyof typeof sizes;
    className?: string;
    /** Libellé accessible. Si absent, le spinner est purement décoratif. */
    label?: string;
}

export function Spinner({ size = 'md', className, label }: SpinnerProps) {
    return (
        <Loader2
            role={label ? 'status' : undefined}
            aria-label={label}
            aria-hidden={label ? undefined : true}
            className={cn('text-primary animate-spin', sizes[size], className)}
        />
    );
}
