{{- /*
    Piece Link Component
    Creates appropriate links to pieces/beiträge based on their structure

    Usage: {{ template "_piece_link" (dict
        "Piece" $piece
        "DisplayMode" "search|akteure|place|kategorie|issue"
        "ShowUnifiedEntry" true|false
        "LongForm" true|false
        "CurrentActorID" $currentActorID
    ) }}

    Parameters:
    - Piece: The piece object to create links for
    - DisplayMode: Context for formatting ("search", "akteure", "place", "kategorie", "issue")
    - ShowUnifiedEntry: Whether to show the unified piece description (default: true)
    - LongForm: Whether to use long form for unified entry (default: false for search only)
    - CurrentActorID: ID of current actor (for akteure view context, optional)

    Link Logic:
    - Single-issue pieces: Link directly to the issue/page
    - Multi-issue pieces: Link to /beitrag/{piece-id} endpoint
    - Always wraps the unified piece entry in appropriate link(s)
*/ -}}

{{- $piece := .Piece -}}
{{- $displayMode := .DisplayMode -}}
{{- if not $displayMode -}}{{ $displayMode = "search" }}{{- end -}}
{{- $showUnifiedEntry := .ShowUnifiedEntry -}}
{{- if eq $showUnifiedEntry nil -}}{{ $showUnifiedEntry = true }}{{- end -}}
{{- $longForm := .LongForm -}}
{{- if eq $longForm nil -}}{{ $longForm = (eq $displayMode "search") }}{{- end -}}
{{- $currentActorID := .CurrentActorID -}}

{{- /* Determine if this is a multi-issue piece */ -}}
{{- $isMultiIssue := gt (len $piece.IssueRefs) 1 -}}

{{- /* Always show the unified entry without any link wrapper */ -}}
{{- if $showUnifiedEntry -}}
    {{ template "_unified_piece_entry" (dict
        "Piece" $piece
        "DisplayMode" $displayMode
        "ShowPlaceTags" true
        "UseColonFormat" (eq $displayMode "place")
        "ShowContinuation" (eq $displayMode "issue")
        "LongForm" $longForm
        "CurrentActorID" $currentActorID
    ) }}
{{- end -}}