<div role="tabpanel" class="tab-pane" id="tab-user-details">
  <div class="panel panel-default">
    <div class="panel-heading">{{ lang.user.mailbox_details }}</div>
    <div class="panel-body">
      <div class="row">
        <div class="col-sm-4 col-md-3 col-xs-12 text-right text-xs-left"><i class="bi bi-pin-angle"></i> {{ lang.user.direct_aliases }}:
          <p class="small">{{ lang.user.direct_aliases_desc }}</p>
        </div>
        <div class="col-sm-8 col-md-9 col-xs-12">
          {% for direct_alias, direct_alias_meta in user_get_alias_details.direct_aliases %}
            {% if direct_alias_meta.public_comment %}
              {{ direct_alias }} &mdash; <i class="bi bi-chat-left"></i> {{ direct_alias_meta.public_comment }}<br>
            {% else %}
              {{ direct_alias }}<br>
            {% endif %}
          {% else %}
           <i class="bi bi-x-lg"></i>
          {% endfor %}
        </div>
      </div>
      <br>
      <div class="row">
        <div class="col-sm-4 col-md-3 col-xs-12 text-right text-xs-left"><i class="bi bi-share"></i> {{ lang.user.shared_aliases }}:
          <p class="small">{{ lang.user.shared_aliases_desc }}</p>
        </div>
        <div class="col-sm-8 col-md-9 col-xs-12">
          {% for shared_alias, shared_alias_meta in user_get_alias_details.shared_aliases %}
            {% if shared_alias_meta.public_comment %}
              {{ shared_alias }} &mdash; <i class="bi bi-chat-left"></i> {{ shared_alias_meta.public_comment }}<br>
            {% else %}
              {{ shared_alias }}<br>
            {% endif %}
          {% else %}
            <i class="bi bi-x-lg"></i>
          {% endfor %}
        </div>
      </div>
      <hr>
      <div class="row">
        <div class="col-sm-4 col-md-3 col-xs-12 text-right text-xs-left space20">{{ lang.user.aliases_also_send_as }}:</div>
        <div class="col-sm-8 col-md-9 col-xs-12">
          <p>
            {% if user_get_alias_details.aliases_also_send_as == '*' %}
              {{ lang.user.sender_acl_disabled }}
            {% elseif user_get_alias_details.aliases_also_send_as %}
              {{ user_get_alias_details.aliases_also_send_as }}
            {% else %}
              <i class="bi bi-x-lg"></i>
            {% endif %}
          </p>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-4 col-md-3 col-xs-12 text-right text-xs-left space20">{{ lang.user.aliases_send_as_all }}:</div>
        <div class="col-sm-8 col-md-9 col-xs-12">
          <p>{% if not user_get_alias_details.aliases_send_as_all %}<i class="bi bi-x-lg"></i>{% endif %}</p>
        </div>
      </div>
      <div class="row">
        <div class="col-sm-4 col-md-3 col-xs-12 text-right text-xs-left space20">{{ lang.user.is_catch_all }}:</div>
        <div class="col-sm-8 col-md-9 col-xs-12">
          <p>{% if not user_get_alias_details.is_catch_all %}<i class="bi bi-x-lg"></i>{% endif %}</p>
        </div>
      </div>
    </div>
  </div>
</div>
