{{ $is_list := .is_list }} {{ $page := .page }} {{/* Build normalized links (new API) */}} {{ $built := partial "functions/build_links" (dict "page" $page "is_list" $is_list) }} {{ $ctx := cond $is_list "list" "page" }} {{/* English fallbacks if i18n key is missing in a locale */}} {{ $fallbackByKey := dict "btn_pdf" "PDF" "btn_preprint" "Preprint" "btn_doi" "DOI" "btn_code" "Code" "btn_dataset" "Dataset" "btn_model" "Model" "btn_slides" "Slides" "btn_video" "Video" "btn_poster" "Poster" "btn_project" "Project" "btn_site" "Site" "btn_source" "Source Document" "btn_canonical" "Canonical" "btn_crosspost" "Crosspost" "btn_discussion" "Discussion" "btn_event" "Event" "btn_calendar" "Calendar" "btn_registration" "Registration" "btn_demo" "Demo" "btn_cite" "Cite" }} {{ range $built }} {{ if in .contexts $ctx }} {{ $url := .url | default "" }} {{ $scheme := (urls.Parse $url).Scheme }} {{ $target := "" }} {{ $rel := slice }} {{ with .rel }}{{ $rel = . }}{{ end }} {{ if not $scheme }} {{ with ($page.Resources.GetMatch $url) }} {{ $url = .RelPermalink }} {{ else }} {{ $url = $url | relURL }} {{ end }} {{ else if in (slice "http" "https") $scheme }} {{ $target = "target=\"_blank\"" }} {{ $rel = $rel | append "noopener" }} {{ end }} {{ $classes := printf "hb-attachment-link %s" (cond $is_list "hb-attachment-link-small" "hb-attachment-link-large") }} {{ $label := .label }} {{ with .labelKey }} {{ if not $label }} {{ $label = (i18n .) | default (index $fallbackByKey .) | default "Link" }} {{ end }} {{ end }} {{ if not $label }} {{ $label = "Link" }} {{ end }} {{ if eq .type "bibtex" }} {{ else }} {{ partial "functions/get_icon" (dict "name" (.icon | default "hero/link") "attributes" "style=\"height: 1em\" class='inline-block'") }} {{ $label }} {{ end }} {{ end }} {{ end }}