It's done using the Layout feature and your own custom CSS. All fields now have Layouts parameters which allow you to override their display behavior. This can be used to add custom content to a fields display. As long as getFields is used the layout usage will also be displayed no matter the location. CB GroupJive uses getFields so your layout changes would be visible there too.
For example you could have the below layout then use whatever CSS you need to customize the location of things.
Code:
<div class="cbImageWithGender">
[value]
<span class="cbImageGender fa fa-male"></span>
</div>
Sorry, I don't have the article or tutorial link for what you're wanting; you'll need to search.