<!--
  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 .Unit.IsCommand}}command
      {{else if .Unit.IsPackage}}package
      {{else if .Unit.IsModule}}module
      {{else}}directory{{end}}
      {{.Title}} information">
    <div class="UnitHeader-container">
      <div class="UnitHeader-breadcrumb">
        {{with .Breadcrumb}}
          {{range .Links}}
            <span class="UnitHeader-breadcrumbItem">
              <a href="{{.Href}}">{{.Body}}</a>
            </span>
          {{end}}
          <span class="UnitHeader-breadcrumbItem">{{.Current}}</span>
        {{end}}
      </div>
      <div class="UnitHeader-heading">
        <h1 class="UnitHeader-title">
          {{.Title}}
        </h1>
        {{if .Unit.IsCommand}}
          <span class="UnitHeader-badge">command</span>
        {{else if .Unit.IsPackage}}
          <span class="UnitHeader-badge">package</span>
        {{end}}
        {{if .Unit.IsModule}}
          <span class="UnitHeader-badge">module</span>
        {{end}}
        {{if not (or .Unit.IsPackage .Unit.IsModule)}}
          <span class="UnitHeader-badge">directory</span>
        {{end}}
      </div>
      <div class="UnitHeader-versionBanner $$GODISCOVERY_LATESTMAJORCLASS$$">
        <img height="19px" width="16px" class="UnitHeader-detailIcon" src="/static/img/pkg-icon-info_19x16.svg">
        <span>
          The latest 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">
            <img class="UnitHeader-detailItemLarge" height="16px" width="16px" src="/static/img/pkg-icon-arrowBranch_16x16.svg">
            <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-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">
            <img height="16px" width="16px" src="/static/img/pkg-icon-circularArrows_16x16.svg">
            {{.LastCommitTime}}
          </span>
          <span class="UnitHeader-detailItem">
            <img height="16px" width="16px" src="/static/img/pkg-icon-scale_16x16.svg">
            {{range $i, $e := .Licenses}}
              {{if $i}}, {{end}}
              <a href="{{$.CanonicalURLPath}}?tab=licenses#{{.Anchor}}">{{$e.Type}}</a>
            {{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">
              <img height="16px" width="16px" src="/static/img/pkg-icon-boxClosed_16x16.svg">
              <a href="{{$.CanonicalURLPath}}?tab=imports">
                {{len .Unit.Imports}} <span>Imports</span>
              </a>
            </span>
            <span class="UnitHeader-detailItem">
              <img height="16px" width="16px" src="/static/img/pkg-icon-boxClosed_16x16.svg">
              <a href="{{$.CanonicalURLPath}}?tab=importedby">
                {{len .Unit.Imports}} <span>Imported by</span>
              </a>
            </span>
          {{end}}
        </div>
      {{else}}
        <!-- 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="?">
          <img height="16px" width="16px" src="/static/img/pkg-icon-arrowLeft_16x16.svg"> Go to main page
        </a>
      {{end}}
    </div>
  </header>
{{end}}
