75 lines
2.7 KiB
HTML
75 lines
2.7 KiB
HTML
{{/*
|
|
This is a copy-paste from base.html because we want to preserve the unique
|
|
style of this page no matter what future changes we make to the base.
|
|
*/}}
|
|
<!DOCTYPE html>
|
|
<html lang="en-US" {{ if .OpenGraphItems }} prefix="og: http://ogp.me/ns#"{{ end }}>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
|
|
<link rel="icon" type="image/png" sizes="16x16" href="{{ static "learningjam2024/favicon-16x16.png" }}">
|
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ static "learningjam2024/favicon-32x32.png" }}">
|
|
|
|
{{ if .CanonicalLink }}<link rel="canonical" href="{{ .CanonicalLink }}">{{ end }}
|
|
{{ range .OpenGraphItems }}
|
|
{{ if .Property }}
|
|
<meta property="{{ .Property }}" content="{{ .Value }}" />
|
|
{{ else }}
|
|
<meta name="{{ .Name }}" content="{{ .Value }}" />
|
|
{{ end }}
|
|
{{ end }}
|
|
{{ if .Title }}
|
|
<title>{{ .Title }} | Handmade Network</title>
|
|
{{ else }}
|
|
<title>Handmade Network</title>
|
|
{{ end }}
|
|
|
|
<link rel="stylesheet" href="{{ static "fonts/mohave/stylesheet.css" }}">
|
|
<link href='https://fonts.googleapis.com/css?family=Fira+Sans:300,400,500,600' rel='stylesheet' type='text/css'>
|
|
<link href='https://fonts.googleapis.com/css?family=Fira+Mono:300,400,500,700' rel='stylesheet' type='text/css'>
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@100..900&display=swap" rel="stylesheet">
|
|
<link rel="stylesheet" type="text/css" href="{{ static "style.css" }}">
|
|
|
|
<script src="{{ static "js/script.js" }}"></script>
|
|
|
|
{{ if .EsBuildSSEUrl }}
|
|
<script>
|
|
new EventSource("{{ .EsBuildSSEUrl }}").addEventListener('change', e => {
|
|
const { added, removed, updated } = JSON.parse(e.data)
|
|
|
|
console.log("EsBuild", added, removed, updated);
|
|
if (!added.length && !removed.length && updated.length === 1) {
|
|
for (const link of document.getElementsByTagName("link")) {
|
|
const url = new URL(link.href)
|
|
|
|
if (url.host === location.host && url.pathname === updated[0]) {
|
|
const next = link.cloneNode()
|
|
next.href = updated[0] + '?' + Math.random().toString(36).slice(2)
|
|
next.onload = () => link.remove()
|
|
link.parentNode.insertBefore(next, link.nextSibling)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
})
|
|
</script>
|
|
{{ end }}
|
|
|
|
{{ template "extrahead" . }}
|
|
</head>
|
|
|
|
<body class="flex flex-column {{ join " " .BodyClasses }}">
|
|
<div class="content-top">
|
|
{{ template "header-2024.html" . }}
|
|
{{ block "content-top" . }}{{ end }}
|
|
</div>
|
|
<!-- TODO: Notices -->
|
|
<div class="flex-grow-1">
|
|
{{ block "content" . }}{{ end }}
|
|
</div>
|
|
{{ template "footer-2024.html" . }}
|
|
</body>
|
|
|
|
</html>
|