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;
}