cdn/pages.templ

87 lines
3.4 KiB
Plaintext

package main
import "io/fs"
var (
siteName = "FollieCDN"
siteURL = "https://cdn.folliehiyuki.com/"
)
templ pageTemplate(path string) {
<html lang="en-us">
<head>
<title>
if path != "" {
{ path + " | " }
}
{ siteName }
</title>
<meta charset="utf-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
if path != "" {
<meta name="description" content={ path + " | " + siteName }/>
} else {
<meta name="description" content={ siteName }/>
}
<link rel="icon" type="image/x-icon" href="/favicon.ico"/>
<link rel="canonical" href={ siteURL + path }/>
<link rel="stylesheet" href="/styles/normalize.css" integrity="sha256-Atknw9eu6T9FV6v//wFp8skKdJ5JcAqANQ1bPykR4go=" crossorigin="anonymous"/>
<link rel="stylesheet" href="/styles/self.css" integrity="sha256-KReR+W3bFJ+Eu2X+F0lR+bULlbmaLS8SXUhIQJ/p/p4=" crossorigin="anonymous"/>
<link rel="stylesheet" href="/fonts/iosevka/iosevka-aile.css" integrity="sha256-20HRMpRlRW2+dk9R7asoOl5/z8Xyc2BbjeLZsButUww=" crossorigin="anonymous"/>
<link rel="stylesheet" href="/fonts/font-awesome/solid.css" integrity="sha256-xuw8YIIudFiLKxnOSDufxt0N2CFAJQXsK2lnTUPbofE=" crossorigin="anonymous"/>
<link rel="preload" href="/fonts/iosevka/iosevka-aile-bold.woff2" as="font" type="font/woff2" integrity="sha256-Hu4sqJ4m0rjWqqKYxhGKw1Lqz/VpftqKe0CeHACkSto=" crossorigin="anonymous"/>
<link rel="preload" href="/fonts/iosevka/iosevka-aile-bolditalic.woff2" as="font" type="font/woff2" integrity="sha256-fRJP2kQFy+xRyveNgFHkYWfHUG/DSkoUrXdfx7RGJMk=" crossorigin="anonymous"/>
<link rel="preload" href="/fonts/iosevka/iosevka-aile-italic.woff2" as="font" type="font/woff2" integrity="sha256-gH5Tq4ZWU0MJJQjXsdC00d++xrM842dN8pCVRmBnf0k=" crossorigin="anonymous"/>
<link rel="preload" href="/fonts/iosevka/iosevka-aile-regular.woff2" as="font" type="font/woff2" integrity="sha256-y6fQ+gvBFZWjeNgxiWQrYYgni3T5H+TLAwHCsSFSjKE=" crossorigin="anonymous"/>
</head>
<body>
<main>
{ children... }
</main>
</body>
</html>
}
templ indexPage() {
@pageTemplate("") {
<h1>FollieHiyuki's personal web assets</h1>
<p>
Hi! Welcome to my <em>"Content Delivery Network"</em> <s>freeloading</s> running on Cloudflare. The files served here are used to power my websites, including my
<a href="https://www.folliehiyuki.com" target="_blank" rel="author noopener external">personal blog</a> and
<a href="https://docs.folliehiyuki.com" target="_blank" rel="noopener external">handbook</a>. The source code is avaliable to see on
<a href="https://gitlab.com/FollieHiyuki/cdn" target="_blank" rel="noreferrer nofollow external">GitLab</a>.
</p>
<h2>Packages</h2>
<p>
<span class="fa-solid">&#xf031</span> <a href="/fonts/">fonts</a> - Various 3rd-party fonts I use everywhere
<br/>
<span class="fa-solid">&#xf53f</span> <a href="/styles/">styles</a> - Some minimal, opinionated CSS settings
<br/>
</p>
}
}
templ listingPage(path string, entries []fs.DirEntry) {
@pageTemplate(path) {
<h1>{ path }</h1>
<p>
<span class="fa-solid">&#xf07b</span> <a href="../">{ "../" }</a>
<br/>
for _, entry := range entries {
// Obviously we need to discard the index file from the UI
if entry.Name() != "index.html" {
<span class="fa-solid">
if entry.IsDir() {
&#xf07b
} else {
&#xf15c&nbsp;
}
</span>
<a href={ templ.URL("./" + entry.Name()) }>{ entry.Name() }</a>
<br/>
}
}
</p>
}
}