{% macro flashed_messages(messages=None, container=True, transform={
  'critical': 'danger',
  'error': 'danger',
  'info': 'info',
  'warning': 'warning',
  'debug': 'info',
  'notset': 'info',
  'message': 'info',
}, default_category=None, dismissible=False) -%}

{% with messages = messages or get_flashed_messages(with_categories=True) -%}

{% if messages -%}
{# don't output anything if there are no messages #}

{% if container -%}
<!-- begin message block -->
<div class="container flashed-messages">
  <div class="row">
    <div class="col-md-12">
      {% endif -%}

      {% for cat, msg in messages %}
      <div
        class="alert alert-{{- transform.get(cat.lower(), default_category or cat) }} {% if dismissible %} alert-dismissible {% endif %} fade"
        role="alert">
        {{ msg }}
        {% if dismissible %}
        <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
        {% endif %}
      </div>
      {%- endfor -%}

      {% if container %}
    </div>
  </div>
</div>
<!-- end message block -->
{% endif -%}

{% endif -%}
{% endwith -%}
{% endmacro -%}


{% macro icon(type=None, extra_classes=[]) -%}
<span{{ ({'class': (['glyphicon', 'glyphicon-' + type] + extra_classes) | join(' ')}) | xmlattr }}{{ kwargs | xmlattr }}>
  </span>
  {%- endmacro %}


  {% macro form_button(url, content, method='post', class='btn-link') -%}
  <form style="display: inline;" action='{{ url }}' method='{{ method }}'>
    <button class="{{ class | safe }}">
      {{ content }}
    </button>
  </form>
  {%- endmacro %}
