LPX55's picture
Upload components/TmaButton.tsx with huggingface_hub
e853a52 verified
import React from 'react';
interface TmaButtonProps {
text: string;
onClick?: () => void;
className?: string;
disabled?: boolean;
loading?: boolean;
}
export default function TmaButton({ text, onClick, className = '', disabled = false, loading = false }: TmaButtonProps) {
const baseStyles = 'w-full py-3 px-4 rounded-lg font-medium transition-all duration-200 flex items-center justify-center gap-2';
const disabledStyles = 'opacity-50 cursor-not-allowed bg-gray-300 text-gray-600';
const primaryStyles = 'bg-tg-secondary text-white shadow-md hover:bg-blue-600 active:scale-95';
const finalClassName = `${baseStyles} ${disabled ? disabledStyles : primaryStyles} ${className}`;
return (
<button
onClick={onClick}
disabled={disabled || loading}
className={finalClassName}
>
{loading ? (
<svg className="animate-spin h-5 w-5 text-white" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
<circle className="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" strokeWidth="4"></circle>
<path className="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
</svg>
) : (
text
)}
</button>
);
}