import { ModalStatus } from "@/types";
import React from "react";

interface ButtonProps {
  status: ModalStatus;
  text: string;
}
export const Button = ({ status, text }: ButtonProps) => {
  const className = (() => {
    switch (status) {
      case ModalStatus.Loading:
        return "btn text-primary bg-white hover:bg-white shadow disabled:text-white disabled:shadow-none";

      case ModalStatus.Success:
        return "btn text-primary bg-white hover:bg-white shadow disabled:text-white disabled:shadow-none";

      case ModalStatus.Default:
        return "btn text-primary bg-white hover:bg-white shadow";

      default:
        return "btn text-primary bg-white hover:bg-white shadow";
    }
  })();
  return (
    <button
      type="submit"
      className={className}
      disabled={
        status === ModalStatus.Success || status === ModalStatus.Loading
      }
    >
      {status === ModalStatus.Loading ? (
        <svg
          xmlns="http://www.w3.org/2000/svg"
          fill="none"
          className="animate-spin -ml-1 mr-3 h-5 w-5 text-white"
          viewBox="0 0 24 24"
        >
          <circle
            cx="12"
            cy="12"
            r="10"
            stroke="currentColor"
            strokeWidth="4"
            className="opacity-25"
          ></circle>
          <path
            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"
            className="opacity-75"
          ></path>
        </svg>
      ) : (
        <></>
      )}
      {text}
    </button>
  );
};

export default Button;
