JSFiddle - React, Tailwind, and code Playground

HTML

<label>
  <input type="checkbox">
  <div></div>
</label>

CSS

input {
  display: none;
}

div {
  position: relative;
  width: 1em;
  height: 1em;
  border: 1px solid;
  cursor: pointer;
  color: gray;
  transition: 0.25s;
}

div::after {
  content: '✓';
  font: 900 80% sans-serif;
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity 0.25s;
}

input:checked + div {
  color: #000;
  background: greenyellow;
}

input:checked + div::after {
  opacity: 1;
}