Files
schreifuchs.ch/web/layouts/base.templ
T
schreifuchs 0952aeff45
release.yaml / publish (push) Failing after 2m56s
feat(tracking): umami recorder support
2026-09-30 10:46:20 +02:00

82 lines
2.3 KiB
Templ

package layouts
import (
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/components/translate"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/pkg/config"
"git.schreifuchs.ch/schreifuchs/schreifuchs.ch/internal/pkg/templer"
"strings"
)
templ head(cfg config.Cfg, title string) {
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<meta name="htmx-config" content={ `{"noSwap": [204, 304, "4xx", "5xx"], "preload": {"boostEvent": "mouseover"}}` }/>
<title>{ title }</title>
<link rel="icon" type="image/png" href="/favicon.png"/>
<link fetchpriority="high" href="/css/output.css" rel="stylesheet"/>
<script src="/js/htmx.min.js"></script>
<script src="/js/hx-head.min.js"></script>
<script src="/js/hx-preload.min.js"></script>
<script src="/js/preload-links.min.js"></script>
<script src={ cfg.Tracking.ScriptSrc } data-website-id={ cfg.Tracking.WebsiteID }></script>
if cfg.Tracking.RecorderSrc != "" {
<script src={ cfg.Tracking.RecorderSrc } data-website-id={ cfg.Tracking.WebsiteID }></script>
}
for _, h := range templer.GetHeader(ctx) {
@templ.Raw(h)
}
</head>
}
templ Base(cfg config.Cfg, title string) {
<!DOCTYPE html>
<html lang={ translate.Language(ctx) }>
@head(cfg, title)
<body class="bg-black dark" hx-boost:inherited="true" hx-target:inherited="body">
@body() {
{ children... }
}
</body>
</html>
}
templ Page(cfg config.Cfg, title string) {
@head(cfg, title)
@body() {
{ children... }
}
}
templ Component() {
for _, h := range templer.GetHeader(ctx) {
@templ.Raw(h)
}
{ children... }
}
templ body() {
<header
class="fixed z-50 mix-blend-difference p-1 w-full flex justify-between items-start"
>
<a class="text-white text-2xl" href={ translate.Path(ctx, "") } hx-preload="mouseover" preload-images="true">schreifuchs.ch</a>
<nav class="flex gap-2 p-2">
for _, lang := range translate.SupportedLanguages(ctx) {
<a
href={ translate.PathForLang(ctx, lang, strings.Split(templer.Path(ctx), "/")...) }
hreflang={ lang }
data-no-translate
hx-preload="mouseover"
class="text-white hover:underline uppercase"
>
{ lang }
</a>
}
</nav>
</header>
<main class="text-white">
{ children... }
</main>
}