{% set BUTTON_DEFAULTS = {
  _templateClass: 'button',
  className: '',
  text: 'Default text',
  href: '',
  iconBefore: [],
  iconAfter: [],
  useSymbol: false,
  symbolType: 'outlined',
  symbolName: '',
  attrs: {},
  textAttrs: {}
} %}

{% set BUTTON_PRESETS = {
  RSS: {
    text: 'RSS',
    href: '#',
    className: 'rss',
    iconAfter: 'icons/rss'
  }
} %}

{% macro Button(settings = {}) %}
  {% set settings = merge(BUTTON_DEFAULTS, settings) %}
  {% set classNames = [settings._templateClass, settings.className] %}

  {# Switch tag to a if href params was provided #}
  {% set tag = 'a' if settings.href else 'button' %}

  {# Set type for button by default #}
  {% set type = settings.type if settings.type else 'button' %}

  {# Set noopener for links with target _blank #}
  {% set noopener = 'noopener noreferrer' if settings.attrs.target === '_blank' else false %}

  {% if tag === 'a' %}
    {% set type = false %}
  {% endif %}

  <{{ tag }}
    class="{{ setClass(classNames) }}"
    {{ Helpers.setAttr('href', settings.href) }}
    {{ Helpers.setAttr('type', type) }}
    {{ Helpers.setAttr('rel', noopener) }}
    {{ Helpers.setAttributes(settings.attrs) }}
  >
    {% if settings.iconBefore.length %}
      {% for icon in settings.iconBefore %}
        <span class="{{ settings._templateClass }}__icon" aria-hidden="true">
          {{ Helpers.svg('icons/' + icon) }}
        </span>
      {% endfor %}
    {% endif %}

    {% if settings.useSymbol %}
      {% set symbol = 'material-symbols-' + settings.symbolType %}

      <span class="{{ settings._templateClass }}__symbol {{ symbol }}">
        {{ settings.symbolName }}
      </span>
    {% endif %}
    {% if caller %}
      {{ caller() }}
    {% elseif settings.text %}
      <span
      class="{{ settings._templateClass }}__text"
      {{ Helpers.setAttributes(settings.textAttrs) }}>{{ settings.text }}</span>
    {% endif %}
    {% if settings.iconAfter.length %}
      {% for icon in settings.iconAfter %}
        <span class="{{ settings._templateClass }}__icon" aria-hidden="true">
          {{ Helpers.svg('icons/' + icon) }}
        </span>
      {% endfor %}
    {% endif %}
  </{{ tag }}>
{% endmacro %}

{% macro RenderButtonsList(list = []) %}
  {% for buttonSettings in list %}
    {{ Button(buttonSettings) }}
  {% endfor %}
{% endmacro %}
