JSFiddle - React, Tailwind, and code Playground

HTML

<div class="toster">
    <div class="top top-item">
    </div>
    <div class="bottom transition-transform">
        <div class="bottom-wrap transition-transform bottom-item">
            <img src="https://toster.ru/images/favicons/apple-touch-icon-72x72.png" alt="Toster">
        </div>
    </div>
</div>

CSS

/* core */

.toster {
    position: relative;
    overflow: hidden;
    width: 250px;
    height: 250px;
}

.toster .transition-transform {
    -webkit-transition: transform 200ms ease-in-out;
    -moz-transition: transform 200ms ease-in-out;
    -ms-transition: transform 200ms ease-in-out;
    -o-transition: transform 200ms ease-in-out;
    transition: transform 200ms ease-in-out;
    -webkit-backface-visibility: hidden;
}

.toster > .bottom {
    width: 142%;
    height: 142%;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
    position: absolute;
    overflow: hidden;
    top: 29%;
    left: 29%;
}

.toster > .top {
    width: 100%;
    height: 100%;
    position: relative;
}

.toster .bottom-wrap {
    width: 70.7106%;
    height: 70.7106%;
    -webkit-transform: rotate(-45deg);
    -moz-transform: rotate(-45deg);
    transform: rotate(-45deg);
    position: relative;
    top: 14.9%;
    left: -35.25%;
}

.toster > .top:hover + .bottom {
    -webkit-transform: rotate(45deg) translate3d(50%, 0, 0);
    -moz-transform: rotate(45deg) translate3d(50%, 0, 0);
    -ms-transform: rotate(45deg) translate3d(50%, 0, 0);
    -o-transform: rotate(45deg) translate3d(50%, 0, 0);
    transform: rotate(45deg) translate3d(50%, 0, 0);
}

.toster > .bottom:hover {
     -webkit-transform: rotate(45deg) translate3d(-50%, 0, 0);
    -moz-transform: rotate(45deg) translate3d(-50%, 0, 0);
    -ms-transform: rotate(45deg) translate3d(-50%, 0, 0);
    -o-transform: rotate(45deg) translate3d(-50%, 0, 0);
    transform: rotate(45deg) translate3d(-50%, 0, 0);
}

.toster > .bottom:hover > .bottom-wrap {
    -webkit-transform: rotate(-45deg) translate3d(50%, 50%, 0);
    -moz-transform: rotate(-45deg) translate3d(50%, 50%, 0);
    -ms-transform: rotate(-45deg) translate3d(50%, 50%, 0);
    -o-transform: rotate(-45deg) translate3d(50%, 50%, 0);
    transform:...