{% if variant and variant|lower != 'default' and not external %}
  {% set attributes = attributes.addClass('fr-link--' ~ variant|lower|replace({_: '-'})) %}
{% endif %}

{% set attributes = attributes.addClass('fr-link') %}

{% if icon %}
  {% set attributes = attributes.addClass(icon) %}
{% endif %}

{% if icon_position %}
  {% set attributes = attributes.addClass('fr-link--icon-' ~ icon_position) %}
{% endif %}

{% if external %}
  {% set attributes = attributes.setAttribute('rel', 'noopener') %}
  {% set target = 'blank' %}
  {% if not force_internal %}
    {% set attributes = attributes.removeClass('fr-link') %}
  {% endif %}
{% endif %}

{% if target %}
  {% set attributes = attributes.setAttribute('target', '_' ~ target) %}
{% endif %}

{% if target and target == 'blank' %}
  {% set title = '@title - new window'|t({'@title': title}) %}
{% endif %}

{% if title %}
  {% set attributes = attributes.setAttribute('title', title) %}
{% endif %}

{% if tooltip %}
  {% set tooltip_id = 'tooltip-' ~ link_id|default(random()) %}
  {% set attributes = attributes.addClass('fr-link').setAttribute('aria-describedby', tooltip_id) %}
  <span class="fr-tooltip fr-placement" id="{{ tooltip_id }}" role="tooltip" aria-hidden="true">{{ tooltip }}</span>
{% endif %}

{% set url = url|default(attributes.href) %}
<a{{ attributes.setAttribute('href', url) }}>
  {{ label }}
</a>
