{{define "layout.html"}} {{.Title}} {{/* Unless told otherwise, htmx injects a stylesheet element of its own into the head for the request-indicator classes. The panel uses no hx-indicator, and that injected element would be the one thing the Content-Security-Policy (phase 14.A) has to make an exception for, so it is switched off here. */}}
{{if .User}}{{template "nav" .}}{{end}} {{template "content" .}} {{/* The running version, on every authenticated page: it is what a backup manifest is checked against on restore and the first thing to establish when something behaves unexpectedly. Only for signed-in administrators — the login and setup pages must not advertise it to the internet. */}} {{if .User}}{{end}}
{{end}} {{/* nav is the panel's navigation bar. It is rendered here, from the layout, so every authenticated page has it without the page's own template having to remember to include it; .Active names the current page so it is highlighted instead of linking to itself. Unauthenticated pages (login, setup) carry no .User and get no nav. */}} {{define "nav"}} {{end}} {{/* Navigation icons. Inline SVG rather than an icon font or sprite file: they inherit the link's colour through currentColor, cost no extra request, and need no exemption from the panel's "default-src 'self'" policy. Each is aria-hidden because the entry's own text is already the accessible name; the icon is a landmark for the eye, not a second label. Kept as separate templates so the nav above stays one readable line per page. */}} {{define "icon-status"}}{{end}} {{define "icon-domains"}}{{end}} {{define "icon-deliveries"}}{{end}} {{define "icon-mail-queue"}}{{end}} {{define "icon-system-log"}}{{end}} {{/* A filing cabinet rather than a storage box: the box read as a box, while two drawers with handles is the picture of an archive. */}} {{define "icon-backup"}}{{end}} {{define "icon-account"}}{{end}}