{{/* Determine the correct context and scope */}}
{{/* This allows for different logic depending on where the partial is called */}}
{{ $context := . }}
{{ $scope := default nil }}

{{ if (reflect.IsMap . ) }}
  {{ $context = .context }}
  {{ $scope = cond (not .scope) nil .scope }}
{{ end }}

{{ with $context }}
  {{ $meta := newScratch }}

  {{/* Gather partials for this context */}}
  {{ $shouldShowDate := false }}
  {{ if .Params.showDate | default (.Site.Params.article.showDate | default true) }}
    {{ $shouldShowDate = true }}
  {{ else }}
    {{ $shouldShowDate = false }}
  {{ end }}

  {{ if (.Params.showDateOnlyInArticle | default (.Site.Params.article.showDateOnlyInArticle | default false)) }}
    {{ if (ne $scope "single") }}
      {{/* only takes effect when not called directly in the header of single.html */}}
      {{ $shouldShowDate = false }}
    {{ end }}
  {{ end }}

  {{ if $shouldShowDate }}
    {{ $meta.Add "partials" (slice (partial "meta/date.html" .Date)) }}
  {{ end }}

  {{ if and (.Params.showDateUpdated | default (.Site.Params.article.showDateUpdated | default false)) (ne (partial
    "functions/date.html" .Date) (partial "functions/date.html" .Lastmod)) (gt (.Lastmod | time.Format "2006") 1)
  }}
    {{ $meta.Add "partials" (slice (partial "meta/date-updated.html" .Lastmod)) }}
  {{ end }}

  {{ if and (.Params.showWordCount | default (.Site.Params.article.showWordCount | default false)) (ne .WordCount 0) }}
    {{ $meta.Add "partials" (slice (partial "meta/word-count.html" .)) }}
  {{ end }}

  {{ if and (.Params.showReadingTime | default (.Site.Params.article.showReadingTime | default true)) (ne .ReadingTime 0) }}
    {{ $meta.Add "partials" (slice (partial "meta/reading-time.html" .)) }}
  {{ end }}

  {{ if and (not .Params.externalURL) (.Params.showViews | default (.Site.Params.article.showViews | default false)) }}
    {{ $meta.Add "partials" (slice (partial "meta/views.html" .)) }}
  {{ end }}

  {{ if and (not .Params.externalURL) (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
    {{ $meta.Add "partials" (slice (partial "meta/likes.html" .)) }}
  {{ end }}

  {{ if and (eq $scope "single") (not .Params.externalURL) (.Params.showLikes | default (.Site.Params.article.showLikes | default false)) }}
    {{ $meta.Add "partials" (slice (partial "meta/likes_button.html" .)) }}
  {{ end }}

  {{ if and (eq $scope "single") (.Params.showEdit | default (.Site.Params.article.showEdit | default false)) }}
    {{ $meta.Add "partials" (slice (partial "meta/edit.html" .)) }}
  {{ end }}

  {{ if and (eq $scope "single") (.Params.showZenMode | default (.Site.Params.article.showZenMode | default false)) }}
    {{ $meta.Add "partials" (slice (partial "meta/zen-mode.html" .)) }}
  {{ end }}


  <div class="flex flex-row flex-wrap items-center">
    {{/* Output partials */}}
    {{ with ($meta.Get "partials") }}
      {{ delimit . "<span class=\"px-2 text-primary-500\">&middot;</span>" | safeHTML }}
    {{ end }}

    {{/* Output draft label */}}
    {{ if and (eq $scope "single") (and .Draft .Site.Params.article.showDraftLabel) }}
      <span class="ps-2">{{ partial "badge.html" (i18n "article.draft" | emojify) }}</span>
    {{ end }}
  </div>

  {{ if .Params.showAuthorsBadges | default (.Site.Params.article.showAuthorsBadges | default false) }}
    <div class="flex flex-row flex-wrap items-center">
      {{ range $taxonomy, $terms := .Site.Taxonomies }}
        {{ if (eq $taxonomy "authors") }}
          {{ if (gt (len ($context.GetTerms $taxonomy)) 0) }}
            {{ range $i, $a := $context.GetTerms $taxonomy }}
              {{ if not (eq $i 0) }}
                ,&nbsp;
              {{ end }}
              <a href="{{ $a.RelPermalink }}" class="relative">{{ $a.LinkTitle }}</a>
            {{ end }}
          {{ end }}
        {{ end }}
      {{ end }}
    </div>
  {{ end }}

  {{/* Output taxonomies */}}
  {{ if .Params.showTaxonomies | default (.Site.Params.article.showTaxonomies | default false) }}
    <div class="flex flex-row flex-wrap items-center">
      {{ range $taxonomy, $terms := .Site.Taxonomies }}
        {{ if (gt (len ($context.GetTerms $taxonomy)) 0) }}
          {{ range $context.GetTerms $taxonomy }}
            {{ if .Params.showCategories | default (.Site.Params.article.showCategories | default true) }}
              {{ if (eq $taxonomy "categories") }}
                <a class="relative mt-[0.5rem] me-2" href="{{ .RelPermalink }}">
                  {{ $useSecondaryColor := .Params.showCategoriesInSecondaryColor | default (.Site.Params.article.showCategoriesInSecondaryColor | default false) }}
                  {{ partial "badge.html" (dict "linkTitle" .LinkTitle "useSecondaryColor" $useSecondaryColor) }}
                </a>
              {{ end }}
            {{ end }}
            {{ if .Params.showTags | default (.Site.Params.article.showTags | default true) }}
              {{ if (eq $taxonomy "tags") }}
                <a class="relative mt-[0.5rem] me-2" href="{{ .RelPermalink }}">
                  {{ partial "badge.html" .LinkTitle }}
                </a>
              {{ end }}
            {{ end }}
          {{ end }}
        {{ end }}
      {{ end }}
    </div>
  {{ end }}
{{ end }}
