<!--
  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}}
            {{if .CopyData}}
              <button class="CopyToClipboardButton js-copyToClipboard"
                  title="Copy path to clipboard"
                  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">
          {{.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">
            {{if .Licenses}}
              <a href="{{$.URLPath}}?tab=licenses">
                {{range $i, $e := .Licenses}}
                {{if $i}}, {{end}} {{$e.Type}}
                {{end}}
              </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="{{$.URLPath}}?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="{{$.URLPath}}?tab=importedby">
                {{.ImportedByCount}} <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}}
