<!--
	Copyright 2018 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.
-->
<!--
	Note: Static (i.e., not template-generated) href and id
	attributes start with "pkg-" to make it impossible for
	them to conflict with generated attributes (some of which
	correspond to Go identifiers).
-->
{{define "layout"}}

<article class="Pkg Article">

<h1>{{.title}}</h1>

{{$pkg := .pkg}}

{{with $pkg.Dirs}}
	{{/* DirList entries are numbers and strings - no need for FSet */}}
	{{if $pkg.PDoc}}
		<h2 id="pkg-subdirectories">Subdirectories</h2>
	{{end}}
		<div id="manual-nav">
			<dl>
				<dt><a href="#stdlib">Standard library</a></dt>
				<dt><a href="#other">Other packages</a></dt>
				<dd><a href="#subrepo">Sub-repositories</a></dd>
				<dd><a href="#community">Community</a></dd>
			</dl>
		</div>

		<div id="stdlib" class="toggleVisible">
			<div class="collapsed">
				<h2 class="toggleButton" title="Click to show Standard library section">Standard library ▸</h2>
			</div>
			<div class="expanded">
				<h2 class="toggleButton" title="Click to hide Standard library section">Standard library ▾</h2>
				<img alt="" class="gopher" src="/doc/gopher/pkg.png"/>
				<div class="pkg-dir">
					<table>
						<tr>
							<th class="pkg-name">Name</th>
							<th class="pkg-synopsis">Synopsis</th>
						</tr>

						{{range .}}
							<tr>
							{{if $pkg.DirFlat}}
								{{if .HasPkg}}
										<td class="pkg-name">
											<a href="{{.Path}}/{{$pkg.ModeQuery}}">{{.Path}}</a>
										</td>
								{{end}}
							{{else}}
									<td class="pkg-name" style="padding-left: {{mul (sub .Depth 1) 20}}px;">
										<a href="{{.Path}}/{{$pkg.ModeQuery}}">{{.Name}}</a>
									</td>
							{{end}}
							<td class="pkg-synopsis">
								{{.Synopsis}}
							</td>
							</tr>
						{{end}}
					</table>
				</div> <!-- .pkg-dir -->
			</div> <!-- .expanded -->
		</div> <!-- #stdlib .toggleVisible -->

	<h2 id="other">Other packages</h2>
	<h3 id="subrepo">Sub-repositories</h3>
	<p>
	These packages are part of the Go Project but outside the main Go tree.
	They are developed under looser <a href="/doc/go1compat">compatibility requirements</a> than the Go core.
	Install them with "<a href="/cmd/go/#hdr-Download_and_install_packages_and_dependencies">go get</a>".
	</p>
	<ul>
		<li><a href="https://pkg.go.dev/golang.org/x/benchmarks">benchmarks</a> — benchmarks to measure Go as it is developed.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/blog">blog</a> — <a href="https://blog.golang.org">blog.golang.org</a>'s implementation.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/build">build</a> — <a href="https://build.golang.org">build.golang.org</a>'s implementation.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/crypto">crypto</a> — additional cryptography packages.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/debug">debug</a> — an experimental debugger for Go.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/image">image</a> — additional imaging packages.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/mobile">mobile</a> — experimental support for Go on mobile platforms.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/net">net</a> — additional networking packages.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/perf">perf</a> — packages and tools for performance measurement, storage, and analysis.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/pkgsite">pkgsite</a> — home of the pkg.go.dev website.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/review">review</a> — a tool for working with Gerrit code reviews.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/sync">sync</a> — additional concurrency primitives.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/sys">sys</a> — packages for making system calls.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/text">text</a> — packages for working with text.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/time">time</a> — additional time packages.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/tools">tools</a> — godoc, goimports, gorename, and other tools.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/tour">tour</a> — <a href="https://tour.golang.org">tour.golang.org</a>'s implementation.</li>
		<li><a href="https://pkg.go.dev/golang.org/x/exp">exp</a> — experimental and deprecated packages (handle with care; may change without warning).</li>
	</ul>

	<h3 id="community">Community</h3>
	<p>
	These services can help you find Open Source packages provided by the community.
	</p>
	<ul>
		<li><a href="https://pkg.go.dev">Pkg.go.dev</a> - the Go package discovery site.</li>
		<li><a href="/wiki/Projects">Projects at the Go Wiki</a> - a curated list of Go projects.</li>
	</ul>
{{end}}

</article>

{{end}}
