import React from 'react'; import { cn } from '../../lib/utils'; export interface SpinnerProps extends React.SVGAttributes { size?: 'sm' | 'md' | 'lg' | 'xl'; color?: 'primary' | 'secondary' | 'accent' | 'white' | 'current'; center?: boolean; srText?: string; 'aria-label'?: string; } const sizeClasses = { sm: 'w-3 h-3', md: 'w-4 h-4', lg: 'w-6 h-6', xl: 'w-8 h-8', }; const colorClasses = { primary: 'text-primary', secondary: 'text-secondary', accent: 'text-accent', white: 'text-white', current: 'text-current', }; /** * Spinner component for loading states * @param props - Spinner props including size, color, and centering options * @returns Animated spinner with screen reader support */ export const Spinner: React.FC = ({ size = 'md', color = 'primary', center = false, srText = 'Loading...', className, 'aria-label': ariaLabel = 'Loading', ...props }) => { const spinner = ( {srText} ); if (center) { return (
{spinner}
); } return spinner; };