.slide-motion(@className, @keyframeName) {
    .make-motion(@className, @keyframeName);
    .@{className}-enter-active, .@{className}-appear {
        opacity: 0;
        animation-timing-function: @ease-in-out;
    }
    .@{className}-leave-active {
        animation-timing-function: @ease-in-out;
    }
}

.slide-motion(transition-drop, haloeTransitionDrop);
.slide-motion(slide-up, haloeSlideUp);
.slide-motion(slide-down, haloeSlideDown);
.slide-motion(slide-left, haloeSlideLeft);
.slide-motion(slide-right, haloeSlideRight);

@keyframes haloeTransitionDropIn {
    0% {
        opacity: 0;
        transform: scaleY(0.8);
    }
    100% {
        opacity: 1;
        transform: scaleY(1);
    }
}

@keyframes haloeTransitionDropOut {
    0% {
        opacity: 1;
        transform: scaleY(1);
    }
    100% {
        opacity: 0;
        transform: scaleY(0.8);
    }
}

@keyframes haloeSlideUpIn {
    0% {
        opacity: 0;
        transform-origin: 0% 0%;
        transform: scaleY(.8);
    }
    100% {
        opacity: 1;
        transform-origin: 0% 0%;
        transform: scaleY(1);
    }
}

@keyframes haloeSlideUpOut {
    0% {
        opacity: 1;
        transform-origin: 0% 0%;
        transform: scaleY(1);
    }
    100% {
        opacity: 0;
        transform-origin: 0% 0%;
        transform: scaleY(.8);
    }
}

@keyframes haloeSlideDownIn {
    0% {
        opacity: 0;
        transform-origin: 100% 100%;
        transform: scaleY(.8);
    }
    100% {
        opacity: 1;
        transform-origin: 100% 100%;
        transform: scaleY(1);
    }
}

@keyframes haloeSlideDownOut {
    0% {
        opacity: 1;
        transform-origin: 100% 100%;
        transform: scaleY(1);
    }
    100% {
        opacity: 0;
        transform-origin: 100% 100%;
        transform: scaleY(.8);
    }
}

@keyframes haloeSlideLeftIn {
    0% {
        opacity: 0;
        transform-origin: 0% 0%;
        transform: scaleX(.8);
    }
    100% {
        opacity: 1;
        transform-origin: 0% 0%;
        transform: scaleX(1);
    }
}

@keyframes haloeSlideLeftOut {
    0% {
        opacity: 1;
        transform-origin: 0% 0%;
        transform: scaleX(1);
    }
    100% {
        opacity: 0;
        transform-origin: 0% 0%;
        transform: scaleX(.8);
    }
}

@keyframes haloeSlideRightIn {
    0% {
        opacity: 0;
        transform-origin: 100% 0%;
        transform: scaleX(.8);
    }
    100% {
        opacity: 1;
        transform-origin: 100% 0%;
        transform: scaleX(1);
    }
}

@keyframes haloeSlideRightOut {
    0% {
        opacity: 1;
        transform-origin: 100% 0%;
        transform: scaleX(1);
    }
    100% {
        opacity: 0;
        transform-origin: 100% 0%;
        transform: scaleX(.8);
    }
}