{{- $tags := .tags -}}
{{- $limit := default 3 .limit -}}
{{- $currentPath := .page.RelPermalink -}}

{{- $related := where (where site.RegularPages "Type" "articles") "RelPermalink" "!=" $currentPath -}}
{{- $matchingArticles := slice -}}

{{/* First try to find articles with matching tags */}}
{{- range $related -}}
    {{- $matches := 0 -}}
    {{- range .Params.tags -}}
        {{- if in $tags . -}}
            {{- $matches = add $matches 1 -}}
        {{- end -}}
    {{- end -}}
    {{- if gt $matches 0 -}}
        {{- $matchingArticles = $matchingArticles | append (dict "page" . "matches" $matches) -}}
    {{- end -}}
{{- end -}}

{{/* If we found matching articles, sort by number of matching tags */}}
{{- $finalArticles := slice -}}
{{- if gt (len $matchingArticles) 0 -}}
    {{- $finalArticles = first $limit (sort $matchingArticles "matches" "desc") -}}
{{- else -}}
    {{/* Fallback to showing other articles sorted by date */}}
    {{- $finalArticles = first $limit (sort $related "Date" "desc") -}}
{{- end -}}

{{- if gt (len $finalArticles) 0 -}}
<div class="related-articles flex flex-col gap-4">
    <h2 class="title text-3xl font-bold">Related Articles</h2>
    <ul class="flex flex-col gap-4 w-full">
      {{ partial "article-list" (dict "Pages" $finalArticles) }}
    </ul>
</div>
{{- end -}}
