JSFiddle - React, Tailwind, and code Playground

HTML

<div class="item-align-right">
  <div id="a">A</div>
  <div id="b">B</div>
</div>

CSS

body {
  padding:10px;
}

/** the common design of the items. */
#a, #b {
  display:inline-block;
  height:54px;
  line-height:54px;
  position:relative;
  text-align:center;
  vertical-align:middle;
}

/** the alignment of the items. */
.item-align-left, .item-align-right {
  display:flex;
  margin-bottom:10px;
}
.item-align-right #a, .item-align-left #b {
  order:2;
}

/** the design of item A (cicle). */
#a {
  background:grey;
  border-radius:50%;
  width:54px;
  height: 54px;
  z-index:1;
}

/** the design of item B (cut out). */
#b {
  width: 42px;
  height: 60px;
}

/** the right aligned item B (cut out on right side). */
.item-align-right #b {
  
  /** the gap between item  A and B. */
  margin:0 -20px 0 0;
  padding:0 40px 0 0;
  
  /** the real border. */
  border-radius: 0;
  border-radius:20px 0 0 20px;
  border-width:0 0 0 0;
  
  /** the cut out on the right side. */
  background-image: -moz-radial-gradient(calc(100% + 23px) 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
  background-image: -webkit-radial-gradient(calc(100% + 23px) 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
  background-image: -ms-radial-gradient(calc(100% + 23px) 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
  background-image: -o-radial-gradient(calc(100% + 23px) 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
  background-image: radial-gradient(calc(100% + 23px) 50%, circle closest-corner, rgba(0, 0, 0, 0) 0, rgba(0, 0, 0, 0) 55px, black 56px, grey 57px);
}