JSFiddle - React, Tailwind, and code Playground

HTML

<div id="some-overlay" class="overlay">
  <div class="overlay--body">
    <p>
      Lorem ipsum dolor sit amet, consectetur adipisicing elit.
      Repellendus autem qui, quas totam. Odio corporis alias sequi
      numquam a itaque qui, enim dicta, eos minima rem, error, labore aliquid. Odio.
    </p>
    
    <a class="js-btn-overlay" data-action="close" href="#some-overlay">close</a>
  </div>
</div>

<a class="js-btn-overlay" data-action="toggle" href="#some-overlay">toggle</a>

CSS

.overlay {
  visibility: hidden;
  overflow: auto;
  
  position: fixed;
  top: 0;     left: 0;
  bottom: 0;  right: 0;
  
  background: #fff;
}

.overlay.-active {
  visibility: visible;
}

.overlay[data-animation="in"] {  
  animation: overlay-in 0.5s ease 1;
}

.overlay[data-animation="out"] {  
  animation: overlay-out 0.5s ease 1;
}

@keyframes overlay-in {
  
  0% {
    visibility: hidden;
    opacity: 0;    
    transform: translateX(100%);
  }
  
  100% {
    visibility: visible;
    opacity: 1;    
    transform: translateX(0);
  }
  
}

@keyframes overlay-out {
  
  0% {
    visibility: visible;
    opacity: 1;    
    transform: translateX(0);
  }
  
  100% {
    visibility: hidden;
    opacity: 0;    
    transform: translateX(-100%);
  }
  
}

.overlay--body {
  max-width: 400px;
  
  margin: auto;
  padding: 60px 30px;
}

JavaScript

Overlay = (function() {
	
  var mill = {};
  
  mill.init = function() {
    
    $('.js-btn-overlay').on('click', function(e) {
  	 
      e.preventDefault();

      var trigger = $(e.target),
      	  target = e.target.hash,
          action = mill[trigger.attr('data-action')];
      
      if (action) action(target);

    });
  
  };
  
  mill.open = function(target) {
    
    target = $(target);
  
  	target.addClass('-active');
  	target.attr('data-animation', 'in');
    
  };
  
  mill.close = function(target) {
  	
    target = $(target);
  
  	target.removeClass('-active');
  	target.attr('data-animation', 'out');
    
  };
  
  mill.toggle = function(target) {
  
  	target = $(target);
  	
    if (target.hasClass('-active')) {
    	mill.close(target);
    }
    else {
    	mill.open(target);
		}
    
  };
  
  return mill;
  
})();

//

Overlay.init();