JSFiddle - React, Tailwind, and code Playground

HTML

<!--
  Loader width: 70
  SVG width: 70√2 = 98.994... ≈ 100
-->
<svg width="100" height="100" viewbox="0 0 100 100" clip-path="url(#loaderClipper)">
    <use xlink:href="#loader" class="loader" x="15" y="15" />
    <polygon class="spinner" points="0,0 100,0 50,50" x="30" y="30" />
</svg>

<svg height="0" width="0">
    <defs>
        <polygon id="loader" points="0,0 0,70 70,70 70,0 0,0 15,15 55,15 55,55 15,55 15,15" />
        <clipPath id="loaderClipper">
            <use xlink:href="#loader" x="15" y="15" />
        </clipPath>
    </defs>
</svg>

CSS

body {
  background-image: repeating-linear-gradient(-45deg, #fff, #fff 8px, #eee 8px, #eee 15px);
  height: 100vh;
  margin: 0;
}

svg {
  position: relative;
  left: 15px;
  top: 15px;
  -webkit-animation: rotate 2s linear infinite;
  animation: rotate 2s linear infinite;
  transform-origin: 50px 50px;
}

.loader {
  fill: #dcdada;
}

.spinner {
  fill: #5cb85c;
  -webkit-animation: rotate 1s linear infinite reverse;
  animation: rotate 1s linear infinite reverse;
  transform-origin: 50px 50px;
}

@-webkit-keyframes rotate {
  0% { -webkit-transform: rotate(0deg); }
  100% { -webkit-transform: rotate(360deg); }
}

@keyframes rotate {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}