     div className: bn,
       for row, j in rows when _.compact(row).length > 0
         div key: j, className: "#{bn}__row #{bn}__row--#{j}", row
-
-
-  renderJoinDate: =>
-    joinDate = moment(@props.user.join_date)
-    joinDateTitle = joinDate.format('LL')
-
-    if joinDate.isBefore moment('2008-01-01')
-      div
-        className: "#{bn}__item"
-        key: 'join_date'
-        title: joinDateTitle
-        osu.trans 'users.show.first_members'
-    else
-      div
-        className: "#{bn}__item"
-        key: 'join_date'
-        dangerouslySetInnerHTML:
-          __html:
-            osu.trans 'users.show.joined_at',
-              date: rowValue joinDate.format(osu.trans('common.datetime.year_month.moment')), title: joinDateTitle
-
-
-  renderLastVisit: =>
-    value = @props.user.last_visit
-
-    return unless value?
-
-    div
-      className: "#{bn}__item"
-      key: 'last_visit'
-      dangerouslySetInnerHTML:
-        __html:
-          osu.trans 'users.show.lastvisit',
-            date: rowValue osu.timeago(value)
 
 
   renderLink: (key) =>

      text: (val) -> val.replace(/^https?:\/\//, '')


  render: =>
    rows = [
      [
        @renderJoinDate()
        @renderLastVisit()
        @renderPlaystyle()
        @renderPostCount()
      ]
      ['location', 'interests', 'occupation'].map @renderLink
      ['twitter', 'discord', 'skype', 'lastfm', 'website'].map @renderLink
    ]

        className: componentClass
        text?(value) ? value


  renderText: (key) =>
    value = @props.user[key]

    return unless value?

    {html, title} = textMapping[key](value, @props.user)

    div
      className: "#{bn}__item"
      key: key
      title: title
      dangerouslySetInnerHTML:
        __html: html
