about summary refs log tree commit diff stats
path: root/internal/builder/page.templ
diff options
context:
space:
mode:
authorAlan Pearce2024-06-24 21:48:36 +0200
committerAlan Pearce2024-06-24 23:09:15 +0200
commita2feb8c63c80a1f52830f562af2deb2c6065eaae (patch)
tree448ed15c5fb91099ef29528c529a35d6151d98ee /internal/builder/page.templ
parent8623948592fa14958d340b006653fc57861c4fc4 (diff)
downloadwebsite-a2feb8c63c80a1f52830f562af2deb2c6065eaae.tar.lz
website-a2feb8c63c80a1f52830f562af2deb2c6065eaae.tar.zst
website-a2feb8c63c80a1f52830f562af2deb2c6065eaae.zip
move templ templates into separate package
Diffstat (limited to 'internal/builder/page.templ')
-rw-r--r--internal/builder/page.templ101
1 files changed, 0 insertions, 101 deletions
diff --git a/internal/builder/page.templ b/internal/builder/page.templ
deleted file mode 100644
index 9a2be2f..0000000
--- a/internal/builder/page.templ
+++ /dev/null
@@ -1,101 +0,0 @@
-package builder
-
-import (
-	"net/url"
-	"website/internal/config"
-)
-
-type PageSettings struct {
-	Title      string
-	Path       string
-	TitleAttrs templ.Attributes
-	BodyAttrs  templ.Attributes
-}
-
-func extendClasses(cs string, attrs templ.Attributes) string {
-	if extras, exists := attrs["class"]; exists {
-		return templ.Classes(cs, extras).String()
-	} else {
-		return cs
-	}
-}
-
-templ menuItem(item config.MenuItem) {
-	<a
-		href={ templ.SafeURL(item.URL.String()) }
-		if item.URL.IsAbs() {
-			target="_blank"
-		}
-	>{ item.Name }</a>
-}
-
-templ page(site config.Config, page PageSettings) {
-	<!DOCTYPE html>
-	<html lang={ site.DefaultLanguage }>
-		<head>
-			<meta charset="utf-8"/>
-			<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-			<title>{ page.Title }</title>
-			<link rel="alternate" type="application/atom+xml" title={ site.Title } href="/atom.xml"/>
-			@style(css)
-		</head>
-		<body { page.BodyAttrs... }>
-			<a class="skip" href="#main">Skip to main content</a>
-			<header>
-				<h2>
-					<a href="/" class={ extendClasses("title p-name", page.TitleAttrs) } { page.TitleAttrs... }>{ site.Title }</a>
-				</h2>
-				<nav>
-					for _, item := range site.Menus["main"] {
-						@menuItem(item)
-					}
-				</nav>
-			</header>
-			<main id="main">
-				{ children... }
-			</main>
-			<footer>
-				Content is
-				<a rel="license" href="http://creativecommons.org/licenses/by/4.0/">CC BY 4.0</a>.
-				<a href="https://git.alanpearce.eu/website/">Site source code</a> is
-				<a href="https://opensource.org/licenses/MIT">MIT</a>
-			</footer>
-			@counter(page.Path, page.Title)
-			if site.InjectLiveReload {
-				<script defer>
-					new EventSource("/_/reload").onmessage = event => {
-						console.log("got message", event)
-						window.location.reload()
-					};
-				</script>
-			}
-		</body>
-	</html>
-}
-
-func mkURL(path string, title string) string {
-	u, err := url.Parse("https://alanpearce-eu.goatcounter.com/count")
-	if err != nil {
-		panic(err)
-	}
-	q := u.Query()
-	q.Add("p", path)
-	q.Add("t", title)
-	u.RawQuery = q.Encode()
-
-	return u.String()
-}
-
-templ counter(path string, title string) {
-	<script data-goatcounter="https://alanpearce-eu.goatcounter.com/count" async src="https://gc.zgo.at/count.v4.js" crossorigin="anonymous" integrity="sha384-nRw6qfbWyJha9LhsOtSb2YJDyZdKvvCFh0fJYlkquSFjUxp9FVNugbfy8q1jdxI+"></script>
-	<noscript>
-		<img src={ string(templ.URL(mkURL(path, title))) }/>
-	</noscript>
-}
-
-func style(css string) templ.Component {
-	return templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) {
-		_, err = io.WriteString(w, "<style>\n"+css+"\n</style>")
-		return
-	})
-}