File size: 1,333 Bytes
e853a52
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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>
  );
}