mixvideo-v2/apps/desktop/src/components/LoadingSpinner.tsx

29 lines
625 B
TypeScript

import React from 'react';
import { Loader2 } from 'lucide-react';
interface LoadingSpinnerProps {
size?: 'small' | 'medium' | 'large';
text?: string;
}
/**
* 加载动画组件
*/
export const LoadingSpinner: React.FC<LoadingSpinnerProps> = ({
size = 'medium',
text
}) => {
const sizeMap = {
small: 16,
medium: 24,
large: 32
};
return (
<div className={`flex items-center justify-center gap-3 ${size === 'small' ? 'p-4' : 'p-8'}`}>
<Loader2 size={sizeMap[size]} className="spinner text-primary-600" />
{text && <span className="text-gray-600">{text}</span>}
</div>
);
};