{{- $dest := .Destination -}}
{{- $url := urls.Parse $dest -}}

{{- if and $dest (hasPrefix $dest "/") -}}
  {{- with or (.PageInner.GetPage $url.Path) (.PageInner.Resources.Get $url.Path) (resources.Get $url.Path) -}}
    {{- $query := cond $url.RawQuery (printf "?%s" $url.RawQuery) "" -}}
    {{- $fragment := cond $url.Fragment (printf "#%s" $url.Fragment) "" -}}
    {{- $dest = printf "%s%s%s" .RelPermalink $query $fragment -}}
  {{- else -}}
    {{- $hasBasePrefix := and (ne site.Home.RelPermalink "/") (hasPrefix $dest site.Home.RelPermalink) -}}
    {{- if not $hasBasePrefix -}}
      {{- $dest = (relURL (strings.TrimPrefix "/" $dest)) -}}
    {{- end -}}
  {{- end -}}
{{- end -}}

{{- with . -}}
{{- $isExternal := strings.HasPrefix .Destination "http" -}}
<a href="{{ $dest | safeURL }}"
   {{- with .Title -}}title="{{ . }}"{{- end -}}
   {{- if $isExternal -}}target="_blank" rel="noopener"{{- end -}}
>
  {{- .Text | safeHTML -}}
  {{- if and .Page.Site.Params.externalLinkDecoration $isExternal -}}
    {{- partial "utils/icon.html" (dict "name" "arrow-up-right" "attributes" `class="hx:inline hx:rtl:rotate-270 hx:align-baseline" height="1em" aria-hidden="true"`) -}}
  {{- end -}}
</a>
{{- end -}}
