JSFiddle - React, Tailwind, and code Playground
HTML
<div class="basket__wrap">
<div class="basket__item">
<input class="basket__group" id="b_ukr" name="b_method" type="radio" data-count="18">
<label for="b_ukr" class="basket__elem">
text 1
</label>
</div>
<div class="basket__item">
<input class="basket__group" id="b_nova" name="b_method" type="radio" data-count="3">
<label for="b_nova" class="basket__elem">
text 2
</label>
</div>
<div class="basket__item">
<input class="basket__group" id="b_dhl" name="b_method" type="radio" data-count="8">
<label for="b_dhl" class="basket__elem">
text 3
</label>
</div>
</div>
CSS
.basket__wrap {
display: flex;
flex-wrap: wrap;
margin: 0 -20px;
}
.basket__item {
width: calc(100% / 3 - 40px);
display: flex;
align-items: center;
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
padding: 15px 25px;
margin: 0 20px;
margin-bottom: 55px;
}
.basket__item input {
display: none;
}
.basket__item input:checked + .basket__elem:before {
opacity: 1;
}
.basket__elem {
cursor: pointer;
position: relative;
user-select: none;
display: inline-block;
padding-left: 48px;
}
.basket__elem:after,
.basket__elem:before {
position: absolute;
content: ' ';
border-radius: 50%;
}
.basket__elem:after {
top: calc(50% - 12px);
left: 0px;
width: 24px;
height: 24px;
border: 2px solid #959595;
}
.basket__elem:before {
opacity: 0;
top: calc(50% - 7px);
left: 5px;
width: 14px;
height: 14px;
background-color: #959595;
}
* {
box-sizing: border-box;
}
*:after,
&:before{
box-sizing: border-box;
}