Download
128 lines 6.8 KiBHTMLModified 2026-10-19 raw
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
{{define "repo-actions"}}
{{- if .Views}}
<details class="dl branches">
<summary class="btn" title="Switch branch"><span aria-hidden="true">⎇</span> {{.Branch}}</summary>
<div class="dl-menu">
{{- range .Views}}
<a href="{{.URL}}"{{if .Current}} aria-current="true"{{end}}>{{.Name}}</a>
{{- end}}
</div>
</details>
{{- end}}
<div class="clone-box">
<input class="clone" type="text" readonly value="git clone {{.CloneURL}}" aria-label="Clone command" title="Clone command">
<button type="button" class="copy needs-js" data-copy>Copy</button>
</div>
{{- if .DownloadsURL}}
<details class="dl">
<summary class="btn download"><span aria-hidden="true">⬇</span> Download</summary>
<div class="dl-menu">
<iframe class="tags-frame" src="{{.DownloadsURL}}" title="Downloads" loading="lazy" data-fit></iframe>
</div>
</details>
{{- end}}
{{end}}
{{define "entries"}}
{{- range .}}
<tr class="{{.Kind}}{{if .Extra}} extra{{end}}">
<td class="name">{{icon .Kind}}{{range .Dirs}}<a class="path-dir" href="{{.URL}}">{{.Name}}</a><span class="sep" aria-hidden="true">/</span>{{end}}{{if .URL}}<a href="{{.URL}}">{{.Name}}</a>{{else}}{{.Name}}{{end}}
{{- if eq .Kind "symlink"}} <span class="target">→ {{.Target}}</span>{{end}}
{{- if eq .Kind "submodule"}} <span class="target">@ {{.Target}}</span>{{end}}
{{- if .Exec}} <span class="target" title="executable">*</span>{{end}}
{{- with .Note}} <span class="target">{{.}}</span>{{end}}</td>
<td class="when">{{if .Modified}}<time class="ago" datetime="{{.ModifiedISO}}" title="{{.ModifiedFull}}">{{.Modified}}</time>{{end}}</td>
{{- with .Bars}}{{template "bar" .Lines}}{{template "bar" .Size}}
{{- else}}
<td class="num">{{.Size}}</td>
{{- end}}
</tr>
{{- end}}
{{end}}
{{define "bar"}}
<td class="bar {{.Col}}" title="{{.Title}}">
{{- if .URL}}<a class="bar-link" href="{{.URL}}" tabindex="-1" aria-hidden="true">{{else}}<span class="bar-link">{{end}}<svg class="ring" viewBox="0 0 16 16" aria-hidden="true"><circle class="track" cx="8" cy="8" r="6"/>{{range .Arcs}}<circle class="{{.Class}}" cx="8" cy="8" r="6" pathLength="100" stroke-dasharray="{{.Len}} 100"{{with .Off}} stroke-dashoffset="{{.}}"{{end}}/>{{end}}</svg>{{if .URL}}</a>{{else}}</span>{{end}}<span class="amount">{{.Text}}</span><span class="vis">{{.Title}}</span></td>
{{- end}}
{{define "path-items"}}
{{- range $i, $c := .Crumbs}}{{if $i}}<span class="sep" aria-hidden="true">/</span>{{end}}
{{- if $c.URL}}<a href="{{$c.URL}}">{{$c.Name}}</a>{{else}}<span aria-current="page">{{$c.Name}}</span>{{end}}{{end -}}
{{end}}
{{define "path"}}<nav class="pathbar" aria-label="Path">{{template "path-items" .}}</nav>{{end}}
{{define "menu-icon"}}<svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><path d="M2 4h12M2 8h12M2 12h12" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg>{{end}}
{{define "base"}}<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{- if .NoIndex}}
<meta name="robots" content="noindex">
{{- end}}
<title>{{if .Title}}{{.Title}} · {{end}}{{.SiteTitle}}</title>
{{- if .Description}}
<meta name="description" content="{{.Description}}">
{{- end}}
<meta property="og:type" content="website">
<meta property="og:site_name" content="{{.SiteTitle}}">
<meta property="og:title" content="{{or .Title .SiteTitle}}">
{{- if .Description}}
<meta property="og:description" content="{{.Description}}">
{{- end}}
{{- if .URL}}
<meta property="og:url" content="{{.URL}}">
{{- end}}
<meta name="twitter:card" content="summary">
<link rel="icon" href="{{.FaviconURL}}"{{if .FaviconType}} type="{{.FaviconType}}"{{end}}>
<link rel="stylesheet" href="{{asset "style.css"}}">
<link rel="stylesheet" href="{{asset "chroma.css"}}">
<script src="{{asset "ui.js"}}"></script>
</head>
<body class="{{.BodyClass}}{{if .Drawer}} has-drawer{{end}}">
<a class="skip" href="#main">Skip to content</a>
{{- if .Drawer}}
<input type="checkbox" id="drawer-toggle" class="vis" aria-label="Hide file drawer">
{{- end}}
<header class="top">
<div class="top-row">
{{- if .Drawer}}
<label for="drawer-toggle" class="drawer-btn wide" title="Toggle file drawer">{{template "menu-icon"}}<span class="sr">Files</span></label>
<button type="button" class="drawer-btn narrow" popovertarget="drawer" title="Files">{{template "menu-icon"}}<span class="sr">Files</span></button>
{{- end}}
<nav class="crumbs" aria-label="Site">
<a class="site" href="/">{{.SiteTitle}}</a>
{{- if .Repo}}<span class="sep" aria-hidden="true">/</span><a class="crumb-repo" href="{{.RepoURL}}">{{.Repo}}</a>{{end}}
</nav>
{{- if .Repo}}
<form class="qsearch" id="search" action="{{.SearchURL}}" method="get" role="search"
{{- with .Search}} data-max="{{.MaxResults}}" data-data="{{.DataURL}}" data-code="{{$.RepoURL}}"{{end}}>
<input type="search" id="q" name="q" placeholder="Search {{.Repo}}…" autocomplete="off" aria-label="Search {{.Repo}}">
<span class="qopts">
<input type="checkbox" id="case" name="c" value="1" class="vis"><label for="case" title="Match case">Aa</label>
<input type="checkbox" id="regex" name="r" value="1" class="vis"><label for="regex" title="Regular expression">.*</label>
<input type="checkbox" id="word" name="w" value="1" class="vis"><label for="word" title="Whole word">\b</label>
</span>
<button type="submit" class="sr">Search</button>
</form>
<button type="button" class="actions-btn" popovertarget="repo-actions" title="Branch, clone and download"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><circle cx="3" cy="8" r="1.5" fill="currentColor"/><circle cx="8" cy="8" r="1.5" fill="currentColor"/><circle cx="13" cy="8" r="1.5" fill="currentColor"/></svg><span class="sr">Branch, clone and download</span></button>
<div class="repo-actions" id="repo-actions" popover>
{{- template "repo-actions" .}}
</div>
{{- end}}
<button type="button" class="theme-toggle needs-js" data-theme-toggle title="Switch between dark and light" aria-label="Switch between dark and light mode"><svg viewBox="0 0 16 16" width="16" height="16" aria-hidden="true"><circle cx="8" cy="8" r="6" fill="none" stroke="currentColor" stroke-width="1.5"/><path d="M8 2a6 6 0 0 1 0 12z" fill="currentColor"/></svg></button>
</div>
</header>
<div class="layout">
{{- with .Drawer}}
<nav class="drawer" id="drawer" popover aria-label="Files">
<button type="button" class="drawer-close" popovertarget="drawer" popovertargetaction="hide"><svg viewBox="0 0 16 16" width="14" height="14" aria-hidden="true"><path d="M3 3l10 10M13 3 3 13" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round"/></svg> Close</button>
<iframe class="drawer-frame" src="{{.Src}}" title="Files"></iframe>
</nav>
{{- end}}
<main id="main">
{{template "body" .}}
<footer class="bottom">
{{- if .Footer}}<div class="custom">{{.Footer}}</div>{{end}}
<span class="gen">Generated {{.Generated}}</span>
</footer>
</main>
</div>
</body>
</html>
{{end}}