{% if variant and variant != 'default' %}
  {% set variants = variant|split('__')|map(v => v|replace({(v): 'btn-' ~ v})|replace({'_': '-'})) %}
  {% set attributes = attributes.addClass(variants) %}
  {% set attributes = attributes.addClass('btn') %}
{% endif %}

{% if label_visually_hidden %}
  {% set label %}
    <span class="visually-hidden">
      {{ label }}
    </span>
  {% endset %}
{% endif %}

{% if url or attributes.href %}
  {% set url = url|default(attributes.href) %}
  {% set attributes = attributes.setAttribute('href', url) %}
  {% if disabled %}
    {% set attributes = attributes
      .setAttribute('href', false)
      .setAttribute('tabindex', '-1')
      .setAttribute('aria-disabled', 'true')
      .addClass('disabled')
    %}
  {% endif %}

  <a{{ attributes }}>{{ label }}</a>
{% else %}
  {% if disabled %}
    {% set attributes = attributes.setAttribute('disabled', '') %}
  {% endif %}

  <button{{ attributes.setAttribute('type', 'button') }}>{{ label }}</button>
{% endif %}
