diff options
Diffstat (limited to 'vrsite/templates/layout.tmpl')
| -rw-r--r-- | vrsite/templates/layout.tmpl | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/vrsite/templates/layout.tmpl b/vrsite/templates/layout.tmpl new file mode 100644 index 0000000..c3fe250 --- /dev/null +++ b/vrsite/templates/layout.tmpl @@ -0,0 +1,71 @@ +<!doctype html> +<html lang="en"{{if .Live}} data-live="1"{{end}}> +<head> +<meta charset="utf-8"> +<meta name="viewport" content="width=device-width, initial-scale=1"> +<title>{{.Title}}</title> +<script> +{const d = document.documentElement, t = localStorage.getItem("vrsite-theme"); + if (t && t !== "system") d.dataset.theme = t; + d.dataset.mode = localStorage.getItem("vrsite-mode") || "trace";} +</script> +<link rel="stylesheet" href="{{.Href "asset" "style.css"}}"> +{{if .Live}}<script src="{{.Href "asset" "htmx.min.js"}}"></script>{{end}} +<script src="{{.Href "asset" "app.js"}}" defer></script> +</head> +<body{{if eq .Kind "file"}} class="with-aside"{{end}} data-kind="{{.Kind}}"> + +<nav aria-label="repository files" id="nav" data-root="{{.Root}}" data-current="{{.Current}}" data-tree="{{.Href "tree"}}"> + <header> + <a class="brand" href="{{.Href ""}}">{{.Site.Title}}</a> + <div class="modes" role="group" aria-label="focus"> + <button type="button" class="mode" data-mode="trace" title="reading coverage (t)">trace</button> + <button type="button" class="mode" data-mode="notes" title="notes and comments (t)">notes</button> + </div> + </header> + {{if and .Live .Rev}} + <p class="meta atrev">browsing <a href="{{.Href "change" .ChangeID}}"><code>{{short .ChangeID}}</code></a> · <a href="/">back to @</a></p> + {{end}} + {{if .Live}} + <div id="activity" class="activity" hx-get="/activity?compact=1" hx-trigger="load, every 3s" hx-swap="innerHTML"></div> + {{end}} + <input id="filefind" class="find" type="search" placeholder="find file…" aria-label="find file" autocomplete="off" spellcheck="false"> + <div id="tree"><p class="meta hint">loading tree…</p></div> + <footer> + <span> + <a href="{{.Href "notes"}}">notes ({{len .Site.Notes}})</a> · + <a href="{{.Href "files"}}">files</a>{{if .Live}} · + <a href="{{.Href "jj"}}">jj</a>{{end}} + </span> + <select id="themesel" aria-label="color scheme"> + <option value="system">system</option> + <option value="dark">dark</option> + <option value="light">light</option> + </select> + </footer> +</nav> + +<main> +{{if .Err}}<p class="err">{{.Err}}</p>{{end}} +{{if eq .Kind "file"}}{{template "page-file" .}} +{{else if eq .Kind "notes"}}{{template "page-notes" .}} +{{else if eq .Kind "files"}}{{template "page-files" .}} +{{else if eq .Kind "jj"}}{{template "page-jj" .}} +{{else if eq .Kind "change"}}{{template "page-change" .}} +{{else}}{{template "page-index" .}}{{end}} +</main> + +{{if eq .Kind "file"}} +<aside aria-label="notes" class="notes-only"> + <header class="asidehead"> + <b>Notes (<span id="notecount">{{len .File.Notes}}</span>)</b> + {{if .Live}}<span class="meta">click a line to attach</span>{{end}} + </header> + {{if .Live}}{{template "noteform" .}}{{end}} + <div id="notelist">{{range .File.Notes}}{{template "note" (dict "N" . "P" $)}}{{end}}</div> + {{if not .File.Notes}}<p class="meta hint">no notes on this file yet</p>{{end}} +</aside> +{{end}} + +</body> +</html> |
