@define refs {
  name: slideX;
  left: slideLeft;
  right: slideRight;
}

@define props {
  duration: 0.5s;
}

@alga {refs.name} {
  .{refs.left}-enter-active,
  html[dir=rtl] .{refs.right}-enter-active {
    ref-animation: {refs.left} {props.duration};
  }
  
  .{refs.left}-leave-active,
  html[dir=rtl] .{refs.right}-leave-active {
    ref-animation: {refs.left} {props.duration} reverse;
  }
  
  @keyframes {refs.left} {
    0% {
      ref: visibility-visible;
      ref-transform: translate3d(-100%,0,0);
    }
    100% {
      ref-transform: translateZ(0);
    }
  }
  
  .{refs.right}-enter-active,
  html[dir=rtl] .{refs.left}-enter-active {
    ref-animation: {refs.right} {props.duration};
  }
  
  .{refs.right}-leave-active,
  html[dir=rtl] .{refs.left}-leave-active {
    ref-animation: {refs.right} {props.duration} reverse;
  }
  
  @keyframes {refs.right} {
    0% {
      ref: visibility-visible;
      ref-transform: translate3d(100%,0,0);
    }
    100% {
      ref-transform: translateZ(0);
    }
  }
}
