{{- /*
  Icon renderer for Font Awesome classes and SVG sources.
  - Renders `<i>` element when `.Class` is provided.
  - Resolves local SVG resources or external SVG URL fallback.
  - Supports Simple Icons shorthand by icon name.
  @param {String} [.Class] - Icon class name for `<i>`
  @param {String} [.Src] - SVG source path or URL
  @param {String} [.Simpleicons] - Simple-icons icon name
  @param {String} [.Prefix] - Custom prefix for simple-icons source path
*/ -}}

{{- with .Class -}}
  <i class="{{ . }}" aria-hidden="true"></i>
{{- else -}}
  {{- $src := .Src -}}
  {{- with .Simpleicons -}}
    {{- $prefix := $.Prefix | default "lib/simple-icons/icons" | strings.TrimSuffix "/" -}}
    {{- $src = printf "%v/%v.svg" $prefix . -}}
  {{- end -}}

  {{- if not $src -}}
    {{- errorf "Icon src is missing: %s" templates.Current.Filename -}}
  {{- end -}}

  {{- if (urls.Parse $src).Host | not -}}
    {{- with resources.Get $src -}}
      {{- $resource := . | resources.Minify -}}
      {{- $resource.Content | replaceRE `<svg ` `<svg class="icon" ` | safeHTML -}}
    {{- else -}}
      {{- errorf "Icon does not exist %v" $src -}}
    {{- end -}}
  {{- else -}}
    {{- /* fetch svg icon from external source */ -}}
    <i data-svg-src="{{ $src }}" aria-hidden="true"></i>
  {{- end -}}
{{- end -}}
