Adding Loading Button
import { Button, ButtonProps, CircularProgress } from "@mui/material";
 
interface ILoadingButtonProps extends ButtonProps {
  loading?: boolean;
  loadingLabel?: React.ReactNode;
  children: React.ReactNode;
}
 
const LoadingButton = ({
  loading = false,
  loadingLabel = "Loading...",
  children,
  ...rest
}: ILoadingButtonProps) => {
  return (
    <Button
      {...rest}
      disabled={loading || rest.disabled}
      endIcon={loading ? null : rest.endIcon}
      startIcon={loading ? null : rest.startIcon}
    >
      {loading ? (
        <div className="flex gap-2 items-center">
          <CircularProgress size={16} color="inherit" />
          <div>{loadingLabel}</div>
        </div>
      ) : (
        children
      )}
    </Button>
  );
};
 
export default LoadingButton;