<!--
  Copyright 2020 The Go Authors. All rights reserved.
  Use of this source code is governed by a BSD-style
  license that can be found in the LICENSE file.
-->

{{define "unit_header"}}
  <header class="UnitHeader" role="complementary"
      aria-label="{{if eq .PageType "std"}}module{{else}}{{.PageType}}{{end}} {{.Title}} information">
    <div class="UnitHeader-container">
      <div class="UnitHeader-breadcrumb" data-test-id="UnitHeader-breadcrumb">
        {{with .Breadcrumb}}
          {{range .Links}}
            <span class="UnitHeader-breadcrumbItem" data-test-id="UnitHeader-breadcrumbItem">
              <a href="{{.Href}}">{{.Body}}</a>
            </span>
          {{end}}
          <span class="UnitHeader-breadcrumbItem">
            <span data-test-id="UnitHeader-breadcrumbCurrent">{{.Current}}</span>
            {{if .CopyData}}
              <button class="CopyToClipboardButton js-copyToClipboard"
                  title="Copy path to clipboard.&#10;&#10;{{.CopyData}}"
                  data-to-copy="{{.CopyData}}"
                  tabindex="-1">
                <img class="CopyToClipboardButton-image" src="/static/img/copy-click.svg" alt="">
              </button>
            {{end}}
          </span>
        {{end}}
      </div>
      <div class="UnitHeader-heading">
        <h1 class="UnitHeader-title" data-test-id="UnitHeader-title">
          {{.Title}}
        </h1>
        {{range .PageLabels}}
          <span class="UnitHeader-badge">{{.}}</span>
        {{end}}
      </div>
      <div class="UnitHeader-majorVersionBanner $$GODISCOVERY_LATESTMAJORCLASS$$" data-test-id="UnitHeader-majorVersionBanner">
        <img height="19px" width="16px" class="UnitHeader-detailIcon" src="/static/img/pkg-icon-info_19x16.svg" alt="">
        <span>
          The highest tagged major version is <a href="/$$GODISCOVERY_LATESTMAJORVERSIONURL$$">$$GODISCOVERY_LATESTMAJORVERSION$$</a>.
        </span>
      </div>

      <div class="js-fixedHeaderSentinel"></div>
      {{if (eq .SelectedTab.Name "")}}
        <div class="UnitHeader-detail">

          <span class="UnitHeader-detailItem" data-test-id="UnitHeader-version">
            <img class="UnitHeader-detailItemLarge" height="16px" width="16px" src="/static/img/pkg-icon-arrowBranch_16x16.svg" alt="">
            <a href="?tab=versions">Version {{.DisplayVersion}}</a>
            <!-- Do not reformat the data attributes of the following div: the server uses a regexp to extract them. -->
            <div class="DetailsHeader-badge $$GODISCOVERY_LATESTMINORCLASS$$"
                data-test-id="UnitHeader-minorVersionBanner"
                data-version="{{.LinkVersion}}"
                data-mpath="{{.Unit.ModulePath}}"
                data-ppath="{{.Unit.Path}}"
                data-pagetype="{{.PageType}}">
              <span>Latest</span>
              <a href="{{.LatestURL}}">Go to latest</a>
            </div>
          </span>

          <span class="UnitHeader-detailItem" data-test-id="UnitHeader-commitTime">
            <img height="16px" width="16px" src="/static/img/pkg-icon-circularArrows_16x16.svg" alt="">
            {{.Details.CommitTime}}
          </span>
          <span class="UnitHeader-detailItem" data-test-id="UnitHeader-licenses">
            <img height="16px" width="16px" src="/static/img/pkg-icon-scale_16x16.svg" alt="">
            {{- if .Details.Licenses -}}
              {{- if .Unit.IsRedistributable -}}
                <a href="{{$.URLPath}}?tab=licenses" data-test-id="UnitHeader-license">
                  {{- range $i, $e := .Details.Licenses -}}
                    {{if $i}}, {{end}}{{$e.Type}}
                  {{- end -}}
                </a>
              {{else}}
                <span>
                  {{- range $i, $e := .Details.Licenses -}}
                    {{if $i}}, {{end}} {{$e.Type}}
                  {{- end -}}
                </span>
                <a href="/license-policy" class="Disclaimer-link"><em>not legal advice</em></a>
              {{end}}
            {{else}}
              <span>None detected</span>
              <a href="/license-policy" class="Disclaimer-link"><em>not legal advice</em></a>
            {{end}}
          </span>
          {{if .Unit.IsPackage}}
            <span class="UnitHeader-detailItem" data-test-id="UnitHeader-imports">
              <img height="16px" width="16px" src="/static/img/pkg-icon-boxClosed_16x16.svg" alt="">
              <a href="{{$.URLPath}}?tab=imports">
                {{.Details.NumImports}} <span>Imports</span>
              </a>
            </span>
            <span class="UnitHeader-detailItem" data-test-id="UnitHeader-importedby">
              <img height="16px" width="16px" src="/static/img/pkg-icon-boxClosed_16x16.svg" alt="">
              <a href="{{$.URLPath}}?tab=importedby">
                {{.Details.ImportedByCount}} <span>Imported by</span>
              </a>
            </span>
          {{end}}
        </div>
      {{else}}
        <div class="UnitHeader-detail">
          <span class="UnitHeader-detailItem">
          <!-- Do not reformat the data attributes of the following div: the server uses a regexp to extract them. -->
          <div style="display: none;" class="DetailsHeader-badge $$GODISCOVERY_LATESTMINORCLASS$$"
              data-version="{{.LinkVersion}}" data-mpath="{{.Unit.ModulePath}}" data-ppath="{{.Unit.Path}}" data-pagetype="{{.PageType}}">
          </div>
          <a class="UnitHeader-backLink" href="{{.URLPath}}">
            <img height="16px" width="16px" src="/static/img/pkg-icon-arrowLeft_16x16.svg" alt=""> Go to main page
          </a>
          </span>
        </div>
      {{end}}
    </div>
  </header>
{{end}}
