Я бы сделал через связь input[radio] совмесно с label. Инпут бы скрыл, а визуализацию всю строил в лейбле. Для текущего активного радио задавал бы класс, в котором был бы этот белый круг с синей обводкой. Получал индекс текущего выбранного, всем предыдущим радио добавил бы класс который бы задавал синюю полоску и синий круг. Так же по индексу находился блок с текстом и задавался ему белый background.