JSFiddle - React, Tailwind, and code Playground

HTML

<p>Radio:</p>
<div class="box">
  <label><input type="radio" name="box"><i>Left</i></label>
  <label><input type="radio" name="box"><i>Middle</i></label>
  <label><input type="radio" name="box"><i>Middle</i></label>
  <label><input type="radio" name="box"><i>Right</i></label>
</div>

<p>Checkbox:</p>
<div class="box">
  <label><input type="checkbox" name="box"><i>Left</i></label>
  <label><input type="checkbox" name="box"><i>Middle</i></label>
  <label><input type="checkbox" name="box"><i>Middle</i></label>
  <label><input type="checkbox" name="box"><i>Right</i></label>
</div>

<p>Single:</p>
<div class="box">
  <label><input type="checkbox" name="box"><i>Left</i></label>
</div>

CSS

.box {
  margin-top: 20px;
  font-family: Arial, sans-serif;
  
  font-size: 0;
}

.box input[type="radio"],
.box input[type="checkbox"] {
  display: none;
}

.box label i {
  background-color: #fff;
  padding: 10px;
  font-style: normal;
  cursor: pointer;
  
  border-top: 1px solid #aaa;
  border-bottom: 1px solid #aaa;
  border-right: 1px solid #aaa;
  
  -webkit-touch-callout: none; /* iOS Safari */
    -webkit-user-select: none; /* Safari */
       -moz-user-select: none; /* Firefox */
        -ms-user-select: none; /* Internet Explorer/Edge */
            user-select: none; /* Chrome and Opera */
            
  font-size: 16px;
}

.box input:checked + i {
  background-color: #e6e6e6;
}

.box input + i:active {
  box-shadow: inset 10px 10px 10px -10px rgba(0, 0, 0, 0.3);
  background-color: #ccc;
}

.box label:first-child i {
  border-radius: 5px 0 0 5px;
  border-left: 1px solid #aaa;
}

.box label:last-child i {
  border-radius: 0 5px 5px 0;
}