mirror of
https://github.com/jakejarvis/jarv.is.git
synced 2025-07-03 17:26:37 -04:00
enable AMP on more layouts/pages
This commit is contained in:
@ -4,6 +4,7 @@ date: 2020-04-22 10:50:04-0400
|
||||
description: "An incredibly embarrassing and somewhat painful walkthrough of this site's long history..."
|
||||
image: "images/2001_12.png"
|
||||
layout: etc
|
||||
amp: false
|
||||
css: |
|
||||
/*!
|
||||
* Comic Neue typeface v2.5 - http://comicneue.com/
|
||||
|
@ -3,8 +3,9 @@ title: "📈 Analytics"
|
||||
description: "Public visitor stats for this website."
|
||||
url: /stats
|
||||
layout: etc
|
||||
amp: false
|
||||
css: |
|
||||
div#content iframe#sa-graph {
|
||||
div#content iframe {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
height: 327px;
|
||||
@ -23,6 +24,6 @@ In that case, why not share them? 😊 Pageviews for the past month are graphed
|
||||
|
||||
<!-- markdownlint-disable MD033 -->
|
||||
<p class="center"><a class="no-underline" href="https://simpleanalytics.com/jarv.is?utm_source=jarv.is&utm_content=badge" target="_blank" rel="noopener"><img src="/stats/badge.svg" width="210" height="50" alt="Powered by Simple Analytics"></a></p>
|
||||
|
||||
<iframe id="sa-graph" src="https://simpleanalytics.com/jarv.is?color=FF4F64&embed=true" scrolling="no" title="Simple Analytics graph"></iframe>
|
||||
<!-- markdownlint-enable MD033 -->
|
||||
|
||||
{{< iframe src="https://simpleanalytics.com/jarv.is?color=FF4F64&embed=true" title="Simple Analytics graph" width="654" height="327" sandbox="allow-same-origin allow-scripts allow-popups" >}}
|
||||
|
19
layouts/_default/etc.amp.html
Normal file
19
layouts/_default/etc.amp.html
Normal file
@ -0,0 +1,19 @@
|
||||
{{ partial "amp/head" . }}
|
||||
|
||||
<article class="layout layout-etc">
|
||||
{{ with .OutputFormats.Get "html" }}
|
||||
<div id="meta">
|
||||
<a href="{{ .Permalink }}" title="View Full Version">View Full Version</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ with .OutputFormats.Get "html" }}
|
||||
<h1 class="title"><a href="{{ .Permalink }}">{{ $.Title | markdownify }}</a></h1>
|
||||
{{ end }}
|
||||
|
||||
<div id="content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{{ partial "amp/foot" . }}
|
@ -1,267 +1,17 @@
|
||||
<!doctype html>
|
||||
<html ⚡ lang="en">
|
||||
<head>
|
||||
{{ partial "functions/init" . }}
|
||||
<meta charset="utf-8">
|
||||
{{ hugo.Generator }}
|
||||
{{ if ne hugo.Environment "production" }}<meta name="robots" content="noindex, nofollow">{{ end }}
|
||||
<script async src="https://cdn.ampproject.org/v0.js"></script>
|
||||
<script async custom-element="amp-iframe" src="https://cdn.ampproject.org/v0/amp-iframe-0.1.js"></script>
|
||||
{{ if .HasShortcode "video" }}<script async custom-element="amp-video" src="https://cdn.ampproject.org/v0/amp-video-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "youtube" }}<script async custom-element="amp-youtube" src="https://cdn.ampproject.org/v0/amp-youtube-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "tweet" }}<script async custom-element="amp-twitter" src="https://cdn.ampproject.org/v0/amp-twitter-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "facebook" }}<script async custom-element="amp-facebook" src="https://cdn.ampproject.org/v0/amp-facebook-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "gist" }}<script async custom-element="amp-gist" src="https://cdn.ampproject.org/v0/amp-gist-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "instagram" }}<script async custom-element="amp-instagram" src="https://cdn.ampproject.org/v0/amp-instagram-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "vimeo" }}<script async custom-element="amp-vimeo" src="https://cdn.ampproject.org/v0/amp-vimeo-0.1.js"></script>{{ end }}
|
||||
<title>{{ .Scratch.Get "plainTitle" }} – {{ .Site.Title }}</title>
|
||||
{{ with .OutputFormats.Get "html" }}<link rel="canonical" href="{{ .Permalink }}">{{ end }}
|
||||
<meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{ .Site.Params.description }}{{ end }}">
|
||||
{{ with .Site.Author.name }}<meta name="author" content="{{ . }}">{{ end }}
|
||||
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1">
|
||||
{{ partial "head/open-graph" . }}
|
||||
{{ partial "amp/head" . }}
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,100..900;1,100..900&family=Roboto+Mono:ital,wght@0,400;1,400&display=swap" rel="stylesheet">
|
||||
<article class="layout layout-single">
|
||||
<div id="meta">
|
||||
<span title="{{ .Date.Format "Mon, Jan 2 2006 3:04:05 PM MST" }}">{{ .Date.Format "January 2, 2006" }}</span>{{ with .OutputFormats.Get "html" }}<span class="dash">—</span><a href="{{ .Permalink }}" title="View Full Version">View Full Version</a>{{ end }}
|
||||
</div>
|
||||
|
||||
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
|
||||
<style amp-custom>
|
||||
body {
|
||||
font-family: "Inter", sans-serif;
|
||||
font-kerning: normal;
|
||||
font-size: 0.92em;
|
||||
letter-spacing: -0.011em;
|
||||
background-color: #ffffff;
|
||||
color: #222222;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
a {
|
||||
color: #0e6dc2;
|
||||
text-decoration: none;
|
||||
}
|
||||
hr {
|
||||
margin: 1.25em auto;
|
||||
height: 2px;
|
||||
border: 0;
|
||||
background-color: #d2d2d2;
|
||||
}
|
||||
strong {
|
||||
letter-spacing: 0.008em;
|
||||
}
|
||||
blockquote {
|
||||
border-left: 5px solid #0e6dc2;
|
||||
margin-left: 0.5em;
|
||||
padding-left: 1em;
|
||||
}
|
||||
article {
|
||||
max-width: {{ printf "%d%s" .Site.Params.Theme.maxWidth "px" }};
|
||||
margin: 0 auto;
|
||||
padding: 0 15px;
|
||||
line-height: 1.75;
|
||||
}
|
||||
div#content {
|
||||
font-size: 1.025em;
|
||||
letter-spacing: -0.008em;
|
||||
}
|
||||
div#content a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
h1.title {
|
||||
font-size: 2.1em;
|
||||
line-height: 1.3;
|
||||
margin-top: 0.4em;
|
||||
margin-bottom: 0.4em;
|
||||
margin-left: -0.03em;
|
||||
}
|
||||
h1.title a {
|
||||
color: inherit;
|
||||
}
|
||||
div#meta {
|
||||
font-size: 0.925em;
|
||||
line-height: 1.3;
|
||||
letter-spacing: 0.04em;
|
||||
margin-top: 1.5em;
|
||||
color: #5e5e5e;
|
||||
}
|
||||
div#meta a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
div#meta span.dash {
|
||||
margin: 0 0.7em;
|
||||
}
|
||||
p.center, p.image, p.caption {
|
||||
text-align: center;
|
||||
}
|
||||
p.caption {
|
||||
margin-top: -1em;
|
||||
font-size: 0.95em;
|
||||
color: #5e5e5e;
|
||||
}
|
||||
h2 {
|
||||
padding-bottom: 0.1em;
|
||||
border-bottom: 1px solid #e3e3e3;
|
||||
}
|
||||
header {
|
||||
width: 100%;
|
||||
background-color: #fcfcfc;
|
||||
border-bottom: 1px solid #e3e3e3;
|
||||
}
|
||||
header a {
|
||||
text-decoration: none;
|
||||
}
|
||||
nav {
|
||||
max-width: {{ printf "%d%s" .Site.Params.Theme.maxWidth "px" }};
|
||||
margin: 0 auto;
|
||||
padding: 0 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
nav a#logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #515151;
|
||||
padding: 16px 0;
|
||||
}
|
||||
nav a#logo svg {
|
||||
height: 40px;
|
||||
width: 28px;
|
||||
}
|
||||
nav a#logo span {
|
||||
margin-left: 15px;
|
||||
font-size: 1.45em;
|
||||
font-weight: 500;
|
||||
}
|
||||
nav ul {
|
||||
list-style: none;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 1.75em;
|
||||
line-height: 1;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
nav ul li {
|
||||
width: 65px;
|
||||
text-align: right;
|
||||
}
|
||||
footer {
|
||||
padding: 20px 15px;
|
||||
background-color: #fcfcfc;
|
||||
border-top: 1px solid #e3e3e3;
|
||||
color: #555;
|
||||
line-height: 1.8;
|
||||
}
|
||||
footer a {
|
||||
text-decoration: none;
|
||||
}
|
||||
footer div {
|
||||
vertical-align: middle;
|
||||
height: 100%;
|
||||
}
|
||||
footer div.row {
|
||||
width: 100%;
|
||||
max-width: {{ printf "%d%s" .Site.Params.Theme.maxWidth "px" }};
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
div.left {
|
||||
text-align: left;
|
||||
}
|
||||
div.right {
|
||||
text-align: right;
|
||||
}
|
||||
div.highlight, code {
|
||||
font-family: "Roboto Mono", monospace;
|
||||
letter-spacing: 0;
|
||||
page-break-inside: avoid;
|
||||
margin: 0 0.1em;
|
||||
}
|
||||
p code {
|
||||
border: 1px solid #dddddd;
|
||||
padding: 0.1em 0.25em;
|
||||
background-color: #fbfbfb;
|
||||
}
|
||||
div.highlight {
|
||||
border: 1px solid #dddddd;
|
||||
background-color: #fbfbfb;
|
||||
line-height: 1.6;
|
||||
max-width: 100%;
|
||||
overflow-x: scroll;
|
||||
object-fit: scale-down;
|
||||
margin: 1em 0;
|
||||
}
|
||||
div.highlight pre {
|
||||
display: block;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
div.highlight code {
|
||||
margin: 0;
|
||||
}
|
||||
div.highlight span.k, div.highlight span.kc, div.highlight span.kd, div.highlight span.kp, div.highlight span.kr, div.highlight span.kt, div.highlight span.no { color: #0e6dc2; }
|
||||
div.highlight span.n, div.highlight span.bp, div.highlight span.nb, div.highlight span.ni, div.highlight span.fm, div.highlight span.nl, div.highlight span.nn, div.highlight span.py, div.highlight span.nv, div.highlight span.vc, div.highlight span.vg, div.highlight span.vi, div.highlight span.vm, div.highlight span.p { color: #111111; }
|
||||
div.highlight span.na, div.highlight span.nc, div.highlight span.nd, div.highlight span.ne, div.highlight span.nf, div.highlight span.nx { color: #337a15; }
|
||||
div.highlight span.err, div.highlight span.nt, div.highlight span.o, div.highlight span.ow, div.highlight span.kn { color: #d43d2e; }
|
||||
div.highlight span.l, div.highlight span.se, div.highlight span.m, div.highlight span.mb, div.highlight span.mf, div.highlight span.mh, div.highlight span.mi, div.highlight span.il, div.highlight span.mo { color: #7e3df3; }
|
||||
div.highlight span.ld, div.highlight span.s, div.highlight span.sa, div.highlight span.sb, div.highlight span.sc, div.highlight span.dl, div.highlight span.sd, div.highlight span.s2, div.highlight span.sh, div.highlight span.si, div.highlight span.sx, div.highlight span.sr, div.highlight span.s1, div.highlight span.ss { color: #bd5500; }
|
||||
div.highlight span.c, div.highlight span.ch, div.highlight span.cm, div.highlight span.c1, div.highlight span.cs, div.highlight span.cp, div.highlight span.cpf { color: #6b6859; }
|
||||
div.highlight span.ge { font-style: italic; }
|
||||
div.highlight span.gs { font-weight: bold; }
|
||||
div.highlight span.lnt { color: #999999; user-select: none; }
|
||||
{{ with .OutputFormats.Get "html" }}
|
||||
<h1 class="title"><a href="{{ .Permalink }}">{{ $.Title | markdownify }}</a></h1>
|
||||
{{ end }}
|
||||
|
||||
{{/* Page-specific styles set via front matter */}}
|
||||
{{- with .Params.css }}
|
||||
{{- replace . " !important" "" | safeCSS -}}
|
||||
{{ end -}}
|
||||
</style>
|
||||
<div id="content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
{{ partialCached "head/favicons" (dict "pngSizes" "192 48 32 16" "icoSizes" "16 32 48") }}
|
||||
{{ partialCached "head/feeds" . }}
|
||||
{{ partial "head/schema" . }}
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav>
|
||||
<a id="logo" href="{{ .Site.BaseURL }}" title="{{ .Site.Title }}">
|
||||
{{ partial "functions/inline-svg" (dict "src" "img/logo.svg" "width" 30 "height" 45) }}
|
||||
<span id="name">{{ .Site.Title }}</span>
|
||||
</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="{{ .Site.BaseURL }}" title="Home">🏠</a></li>
|
||||
<li><a href="{{ "notes/" | absURL }}" title="Notes">📝</a></li>
|
||||
<li><a href="mailto:jake@jarv.is" title="Email Me">📬</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<article>
|
||||
<div id="meta">
|
||||
<span title="{{ .Date.Format "Mon, Jan 2 2006 3:04:05 PM MST" }}">{{ .Date.Format "January 2, 2006" }}</span>{{ with .OutputFormats.Get "html" }}<span class="dash">—</span><a href="{{ .Permalink }}" title="View Full Version">View Full Version</a>{{ end }}
|
||||
</div>
|
||||
|
||||
{{ with .OutputFormats.Get "html" }}
|
||||
<h1 class="title"><a href="{{ .Permalink }}">{{ $.Title | markdownify }}</a></h1>
|
||||
{{ end }}
|
||||
|
||||
<div id="content">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<footer>
|
||||
<div class="row">
|
||||
<div class="left">Content by <a href="{{ .Site.BaseURL }}">{{ .Site.Author.name }}</a>, licensed under <a class="no-underline" href="{{ "license/" | absURL }}"{{ with .Site.Params.license.nameLong }} title="{{ . }}"{{ end }}>{{ .Site.Params.license.name }}</a>.</div>
|
||||
<div class="right"><a class="back-to-top" href="#top">↑ Back to top.</a></div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
{{ if eq hugo.Environment "production" }}
|
||||
<!-- https://docs.simpleanalytics.com/without-javascript -->
|
||||
<amp-pixel src="{{ "api/send_view" | absURL }}?noscript=true&type=pageview&hostname=CANONICAL_HOSTNAME&path=CANONICAL_PATH&referrer=DOCUMENT_REFERRER&https=true&ua=USER_AGENT&width=VIEWPORT_WIDTH" layout="nodisplay"></amp-pixel>
|
||||
{{ end }}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
{{ partialCached "functions/debug" . }}
|
||||
{{ partial "amp/foot" . }}
|
||||
|
28
layouts/_default/video.amp.html
Normal file
28
layouts/_default/video.amp.html
Normal file
@ -0,0 +1,28 @@
|
||||
{{ partial "amp/head" . }}
|
||||
|
||||
<article class="layout layout-video">
|
||||
{{ with .OutputFormats.Get "html" }}
|
||||
<h1 class="title"><a href="{{ .Permalink }}">{{ $.Title | markdownify }}</a></h1>
|
||||
{{ end }}
|
||||
|
||||
<amp-video
|
||||
layout="responsive"
|
||||
width="940"
|
||||
height="530"
|
||||
{{ with .Resources.GetMatch "thumb.*" }}poster="{{ .Permalink }}"{{ end }}
|
||||
controls>
|
||||
{{ with .Page.Resources.GetMatch "*.webm" }}<source src="{{ .Permalink }}" type="video/webm">{{ end }}
|
||||
{{ with .Page.Resources.GetMatch "*.mp4" }}<source src="{{ .Permalink }}" type="video/mp4">{{ end }}
|
||||
{{ with .Page.Resources.GetMatch "*.ogg" }}<source src="{{ .Permalink }}" type="video/ogg">{{ end }}
|
||||
|
||||
{{ with .Page.Resources.GetMatch "*.vtt" }}<track src="{{ .Permalink }}" kind="captions" label="English" srclang="en" default>{{ end }}
|
||||
|
||||
<div fallback>
|
||||
<p>Your browser does not support HTML5 video. {{ with .Page.Resources.GetMatch "*.mp4" }}<a href="{{ .Permalink }}">Load the .mp4 video directly.</a>{{ end }}</p>
|
||||
</div>
|
||||
</amp-video>
|
||||
|
||||
{{ .Content }}
|
||||
</article>
|
||||
|
||||
{{ partial "amp/foot" . }}
|
15
layouts/partials/amp/foot.html
Normal file
15
layouts/partials/amp/foot.html
Normal file
@ -0,0 +1,15 @@
|
||||
<footer>
|
||||
<div class="row">
|
||||
<div class="left">Content by <a href="{{ .Site.BaseURL }}">{{ .Site.Author.name }}</a>, licensed under <a class="no-underline" href="{{ "license/" | absURL }}"{{ with .Site.Params.license.nameLong }} title="{{ . }}"{{ end }}>{{ .Site.Params.license.name }}</a>.</div>
|
||||
<div class="right"><a class="back-to-top" href="#top">↑ Back to top.</a></div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
{{ if eq hugo.Environment "production" }}
|
||||
<!-- https://docs.simpleanalytics.com/without-javascript -->
|
||||
<amp-pixel src="{{ "api/send_view" | absURL }}?noscript=true&type=pageview&hostname=CANONICAL_HOSTNAME&path=CANONICAL_PATH&referrer=DOCUMENT_REFERRER&https=true&ua=USER_AGENT&width=VIEWPORT_WIDTH" layout="nodisplay"></amp-pixel>
|
||||
{{ end }}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
{{ partialCached "functions/debug" . }}
|
258
layouts/partials/amp/head.html
Normal file
258
layouts/partials/amp/head.html
Normal file
@ -0,0 +1,258 @@
|
||||
<!doctype html>
|
||||
<html ⚡ lang="{{ .Site.LanguageCode | default "en" }}">
|
||||
<head>
|
||||
{{ partial "functions/init" . }}
|
||||
<meta charset="utf-8">
|
||||
{{ hugo.Generator }}
|
||||
{{ if ne hugo.Environment "production" }}<meta name="robots" content="noindex, nofollow">{{ end }}
|
||||
<script async src="https://cdn.ampproject.org/v0.js"></script>
|
||||
<script async custom-element="amp-iframe" src="https://cdn.ampproject.org/v0/amp-iframe-0.1.js"></script>
|
||||
{{ if .HasShortcode "video" }}<script async custom-element="amp-video" src="https://cdn.ampproject.org/v0/amp-video-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "youtube" }}<script async custom-element="amp-youtube" src="https://cdn.ampproject.org/v0/amp-youtube-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "tweet" }}<script async custom-element="amp-twitter" src="https://cdn.ampproject.org/v0/amp-twitter-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "facebook" }}<script async custom-element="amp-facebook" src="https://cdn.ampproject.org/v0/amp-facebook-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "gist" }}<script async custom-element="amp-gist" src="https://cdn.ampproject.org/v0/amp-gist-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "instagram" }}<script async custom-element="amp-instagram" src="https://cdn.ampproject.org/v0/amp-instagram-0.1.js"></script>{{ end }}
|
||||
{{ if .HasShortcode "vimeo" }}<script async custom-element="amp-vimeo" src="https://cdn.ampproject.org/v0/amp-vimeo-0.1.js"></script>{{ end }}
|
||||
<title>{{ .Scratch.Get "plainTitle" }} – {{ .Site.Title }}</title>
|
||||
{{ with .OutputFormats.Get "html" }}<link rel="canonical" href="{{ .Permalink }}">{{ end }}
|
||||
<meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{ .Site.Params.description }}{{ end }}">
|
||||
{{ with .Site.Author.name }}<meta name="author" content="{{ . }}">{{ end }}
|
||||
<meta name="viewport" content="width=device-width, minimum-scale=1, initial-scale=1">
|
||||
{{ partial "head/open-graph" . }}
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,100..900;1,100..900&family=Roboto+Mono:ital,wght@0,400;1,400&display=swap" rel="stylesheet">
|
||||
|
||||
<style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript>
|
||||
<style amp-custom>
|
||||
body {
|
||||
font-family: "Inter", sans-serif;
|
||||
font-kerning: normal;
|
||||
font-size: 0.92em;
|
||||
letter-spacing: -0.011em;
|
||||
background-color: #ffffff;
|
||||
color: #222222;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
a {
|
||||
color: #0e6dc2;
|
||||
text-decoration: none;
|
||||
}
|
||||
hr {
|
||||
margin: 1.25em auto;
|
||||
height: 2px;
|
||||
border: 0;
|
||||
background-color: #d2d2d2;
|
||||
}
|
||||
strong {
|
||||
letter-spacing: 0.008em;
|
||||
}
|
||||
blockquote {
|
||||
border-left: 5px solid #0e6dc2;
|
||||
margin-left: 0.5em;
|
||||
padding-left: 1em;
|
||||
}
|
||||
article {
|
||||
max-width: {{ printf "%d%s" .Site.Params.Theme.maxWidth "px" }};
|
||||
margin: 0 auto;
|
||||
padding: 0 15px;
|
||||
line-height: 1.75;
|
||||
}
|
||||
div#content {
|
||||
font-size: 1.025em;
|
||||
letter-spacing: -0.008em;
|
||||
}
|
||||
div#content a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
h1.title {
|
||||
font-size: 2.1em;
|
||||
line-height: 1.3;
|
||||
margin-top: 0.4em;
|
||||
margin-bottom: 0.4em;
|
||||
margin-left: -0.03em;
|
||||
}
|
||||
h1.title a {
|
||||
color: inherit;
|
||||
}
|
||||
div#meta {
|
||||
font-size: 0.925em;
|
||||
line-height: 1.3;
|
||||
letter-spacing: 0.04em;
|
||||
margin-top: 1.5em;
|
||||
color: #5e5e5e;
|
||||
}
|
||||
div#meta a {
|
||||
text-decoration: none;
|
||||
color: inherit;
|
||||
}
|
||||
div#meta span.dash {
|
||||
margin: 0 0.7em;
|
||||
}
|
||||
p.center, p.image, p.caption {
|
||||
text-align: center;
|
||||
}
|
||||
p.caption {
|
||||
margin-top: -1em;
|
||||
font-size: 0.95em;
|
||||
color: #5e5e5e;
|
||||
}
|
||||
h2 {
|
||||
padding-bottom: 0.1em;
|
||||
border-bottom: 1px solid #e3e3e3;
|
||||
}
|
||||
header {
|
||||
width: 100%;
|
||||
background-color: #fcfcfc;
|
||||
border-bottom: 1px solid #e3e3e3;
|
||||
}
|
||||
header a {
|
||||
text-decoration: none;
|
||||
}
|
||||
nav {
|
||||
max-width: {{ printf "%d%s" .Site.Params.Theme.maxWidth "px" }};
|
||||
margin: 0 auto;
|
||||
padding: 0 15px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
}
|
||||
nav a#logo {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
color: #515151;
|
||||
padding: 16px 0;
|
||||
}
|
||||
nav a#logo svg {
|
||||
height: 40px;
|
||||
width: 28px;
|
||||
}
|
||||
nav a#logo span {
|
||||
margin-left: 15px;
|
||||
font-size: 1.45em;
|
||||
font-weight: 500;
|
||||
}
|
||||
nav ul {
|
||||
list-style: none;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 1.75em;
|
||||
line-height: 1;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
nav ul li {
|
||||
width: 65px;
|
||||
text-align: right;
|
||||
}
|
||||
footer {
|
||||
padding: 20px 15px;
|
||||
background-color: #fcfcfc;
|
||||
border-top: 1px solid #e3e3e3;
|
||||
color: #555;
|
||||
line-height: 1.8;
|
||||
}
|
||||
footer a {
|
||||
text-decoration: none;
|
||||
}
|
||||
footer div {
|
||||
vertical-align: middle;
|
||||
height: 100%;
|
||||
}
|
||||
footer div.row {
|
||||
width: 100%;
|
||||
max-width: {{ printf "%d%s" .Site.Params.Theme.maxWidth "px" }};
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
div.left {
|
||||
text-align: left;
|
||||
}
|
||||
div.right {
|
||||
text-align: right;
|
||||
}
|
||||
div.highlight, code {
|
||||
font-family: "Roboto Mono", monospace;
|
||||
letter-spacing: 0;
|
||||
page-break-inside: avoid;
|
||||
margin: 0 0.1em;
|
||||
}
|
||||
p code {
|
||||
border: 1px solid #dddddd;
|
||||
padding: 0.1em 0.25em;
|
||||
background-color: #fbfbfb;
|
||||
}
|
||||
|
||||
article.layout-video p {
|
||||
text-align: center;
|
||||
font-size: 0.95em;
|
||||
letter-spacing: -0.005em;
|
||||
line-height: 1.5;
|
||||
color: #757575;
|
||||
margin: 1.5em 1em 1.5em 1em;
|
||||
}
|
||||
article.layout-video p a {
|
||||
font-weight: bold;
|
||||
letter-spacing: 0.001em;
|
||||
}
|
||||
article.layout-video h1.title {
|
||||
text-align: center;
|
||||
margin: 0.7em 0;
|
||||
}
|
||||
article.layout-video amp-video {
|
||||
margin: 1.25em 0;
|
||||
}
|
||||
|
||||
div.highlight {
|
||||
border: 1px solid #dddddd;
|
||||
background-color: #fbfbfb;
|
||||
line-height: 1.6;
|
||||
max-width: 100%;
|
||||
overflow-x: scroll;
|
||||
object-fit: scale-down;
|
||||
margin: 1em 0;
|
||||
}
|
||||
div.highlight pre {
|
||||
display: block;
|
||||
margin-left: 1.5em;
|
||||
}
|
||||
div.highlight code {
|
||||
margin: 0;
|
||||
}
|
||||
div.highlight span.k, div.highlight span.kc, div.highlight span.kd, div.highlight span.kp, div.highlight span.kr, div.highlight span.kt, div.highlight span.no { color: #0e6dc2; }
|
||||
div.highlight span.n, div.highlight span.bp, div.highlight span.nb, div.highlight span.ni, div.highlight span.fm, div.highlight span.nl, div.highlight span.nn, div.highlight span.py, div.highlight span.nv, div.highlight span.vc, div.highlight span.vg, div.highlight span.vi, div.highlight span.vm, div.highlight span.p { color: #111111; }
|
||||
div.highlight span.na, div.highlight span.nc, div.highlight span.nd, div.highlight span.ne, div.highlight span.nf, div.highlight span.nx { color: #337a15; }
|
||||
div.highlight span.err, div.highlight span.nt, div.highlight span.o, div.highlight span.ow, div.highlight span.kn { color: #d43d2e; }
|
||||
div.highlight span.l, div.highlight span.se, div.highlight span.m, div.highlight span.mb, div.highlight span.mf, div.highlight span.mh, div.highlight span.mi, div.highlight span.il, div.highlight span.mo { color: #7e3df3; }
|
||||
div.highlight span.ld, div.highlight span.s, div.highlight span.sa, div.highlight span.sb, div.highlight span.sc, div.highlight span.dl, div.highlight span.sd, div.highlight span.s2, div.highlight span.sh, div.highlight span.si, div.highlight span.sx, div.highlight span.sr, div.highlight span.s1, div.highlight span.ss { color: #bd5500; }
|
||||
div.highlight span.c, div.highlight span.ch, div.highlight span.cm, div.highlight span.c1, div.highlight span.cs, div.highlight span.cp, div.highlight span.cpf { color: #6b6859; }
|
||||
div.highlight span.ge { font-style: italic; }
|
||||
div.highlight span.gs { font-weight: bold; }
|
||||
div.highlight span.lnt { color: #999999; user-select: none; }
|
||||
|
||||
{{/* Page-specific styles set via front matter */}}
|
||||
{{- with .Params.css }}
|
||||
{{- replace . " !important" "" | safeCSS -}}
|
||||
{{ end -}}
|
||||
</style>
|
||||
|
||||
{{ partialCached "head/favicons" (dict "pngSizes" "192 48 32 16" "icoSizes" "16 32 48") }}
|
||||
{{ partialCached "head/feeds" . }}
|
||||
{{ partial "head/schema" . }}
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<nav>
|
||||
<a id="logo" href="{{ .Site.BaseURL }}" title="{{ .Site.Title }}">
|
||||
{{ partial "functions/inline-svg" (dict "src" "img/logo.svg" "width" 30 "height" 45) }}
|
||||
<span id="name">{{ .Site.Title }}</span>
|
||||
</a>
|
||||
|
||||
<ul>
|
||||
<li><a href="{{ .Site.BaseURL }}" title="Home">🏠</a></li>
|
||||
<li><a href="{{ "notes/" | absURL }}" title="Notes">📝</a></li>
|
||||
<li><a href="mailto:jake@jarv.is" title="Email Me">📬</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
@ -1,9 +1,9 @@
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
|
||||
{{ if and .IsPage (eq .Type .Site.Params.mainSection) -}}
|
||||
{{ if and .IsPage (ne .Params.amp false) -}}
|
||||
{{- with .OutputFormats.Get "amp" -}}
|
||||
<link rel="amphtml" href="{{ .Permalink }}">
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
<link rel="author" href="{{ "humans.txt" | absURL }}">
|
||||
|
@ -42,7 +42,7 @@
|
||||
"devDependencies": {
|
||||
"autoprefixer": "^10.0.1",
|
||||
"cross-env": "^7.0.2",
|
||||
"eslint": "~7.12.1",
|
||||
"eslint": "~7.13.0",
|
||||
"eslint-config-prettier": "~6.15.0",
|
||||
"eslint-plugin-compat": "~3.8.0",
|
||||
"eslint-plugin-prettier": "~3.1.4",
|
||||
|
46
yarn.lock
46
yarn.lock
@ -1628,7 +1628,7 @@ browserify-zlib@^0.2.0:
|
||||
dependencies:
|
||||
pako "~1.0.5"
|
||||
|
||||
browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.14.5, browserslist@^4.8.5:
|
||||
browserslist@^4.12.0, browserslist@^4.12.2, browserslist@^4.14.5, browserslist@^4.14.6:
|
||||
version "4.14.6"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.6.tgz#97702a9c212e0c6b6afefad913d3a1538e348457"
|
||||
integrity sha512-zeFYcUo85ENhc/zxHbiIp0LGzzTrE2Pv2JhxvS7kpUb9Q9D38kUX6Bie7pGutJ/5iF5rOxE7CepAuWD56xJ33A==
|
||||
@ -2178,17 +2178,17 @@ copy-descriptor@^0.1.0:
|
||||
integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=
|
||||
|
||||
core-js-compat@^3.6.2:
|
||||
version "3.6.5"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c"
|
||||
integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.7.0.tgz#8479c5d3d672d83f1f5ab94cf353e57113e065ed"
|
||||
integrity sha512-V8yBI3+ZLDVomoWICO6kq/CD28Y4r1M7CWeO4AGpMdMfseu8bkSubBmUPySMGKRTS+su4XQ07zUkAsiu9FCWTg==
|
||||
dependencies:
|
||||
browserslist "^4.8.5"
|
||||
browserslist "^4.14.6"
|
||||
semver "7.0.0"
|
||||
|
||||
core-js@^3.6.5:
|
||||
version "3.6.5"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a"
|
||||
integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==
|
||||
version "3.7.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.7.0.tgz#b0a761a02488577afbf97179e4681bf49568520f"
|
||||
integrity sha512-NwS7fI5M5B85EwpWuIwJN4i/fbisQUwLwiSNUWeXlkAZ0sbBjLEvLvFLf1uzAUV66PcEPt4xCGCmOZSxVf3xzA==
|
||||
|
||||
core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
@ -2715,9 +2715,9 @@ ee-first@1.1.1:
|
||||
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
|
||||
|
||||
electron-to-chromium@^1.3.585:
|
||||
version "1.3.588"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.588.tgz#c6515571737bfb42678115a5eaa818384593a9a5"
|
||||
integrity sha512-0zr+ZfytnLeJZxGgmEpPTcItu5Mm4A5zHPZXLfHcGp0mdsk95rmD7ePNewYtK1yIdLbk8Z1U2oTRRfOtR4gbYg==
|
||||
version "1.3.591"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.591.tgz#a18892bf1acb93f7b6e4da402705d564bc235017"
|
||||
integrity sha512-ol/0WzjL4NS4Kqy9VD6xXQON91xIihDT36sYCew/G/bnd1v0/4D+kahp26JauQhgFUjrdva3kRSo7URcUmQ+qw==
|
||||
|
||||
elliptic@^6.5.3:
|
||||
version "6.5.3"
|
||||
@ -2924,10 +2924,10 @@ eslint-visitor-keys@^2.0.0:
|
||||
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8"
|
||||
integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==
|
||||
|
||||
eslint@~7.12.1:
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.12.1.tgz#bd9a81fa67a6cfd51656cdb88812ce49ccec5801"
|
||||
integrity sha512-HlMTEdr/LicJfN08LB3nM1rRYliDXOmfoO4vj39xN6BLpFzF00hbwBoqHk8UcJ2M/3nlARZWy/mslvGEuZFvsg==
|
||||
eslint@~7.13.0:
|
||||
version "7.13.0"
|
||||
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.13.0.tgz#7f180126c0dcdef327bfb54b211d7802decc08da"
|
||||
integrity sha512-uCORMuOO8tUzJmsdRtrvcGq5qposf7Rw0LwkTJkoDbOycVQtQjmnhZSuLQnozLE4TmAzlMVV45eCHmQ1OpDKUQ==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.0.0"
|
||||
"@eslint/eslintrc" "^0.2.1"
|
||||
@ -5449,7 +5449,7 @@ nan@^2.12.1:
|
||||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19"
|
||||
integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ==
|
||||
|
||||
nanoid@^3.1.15:
|
||||
nanoid@^3.1.16:
|
||||
version "3.1.16"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.16.tgz#b21f0a7d031196faf75314d7c65d36352beeef64"
|
||||
integrity sha512-+AK8MN0WHji40lj8AEuwLOvLSbWYApQpre/aFJZD71r43wVRLrOYS4FmJOPQYon1TqB462RzrrxlfA74XRES8w==
|
||||
@ -5561,9 +5561,9 @@ node-libs-browser@^2.2.1:
|
||||
vm-browserify "^1.0.1"
|
||||
|
||||
node-releases@^1.1.65:
|
||||
version "1.1.65"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.65.tgz#52d9579176bd60f23eba05c4438583f341944b81"
|
||||
integrity sha512-YpzJOe2WFIW0V4ZkJQd/DGR/zdVwc/pI4Nl1CZrBO19FdRcSTmsuhdttw9rsTzzJLrNcSloLiBbEYx1C4f6gpA==
|
||||
version "1.1.66"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.66.tgz#609bd0dc069381015cd982300bae51ab4f1b1814"
|
||||
integrity sha512-JHEQ1iWPGK+38VLB2H9ef2otU4l8s3yAMt9Xf934r6+ojCYDMHPMqvCc9TnzfeFSP1QEOeU6YZEd3+De0LTCgg==
|
||||
|
||||
normalize-package-data@^2.3.2, normalize-package-data@^2.3.4, normalize-package-data@^2.5.0:
|
||||
version "2.5.0"
|
||||
@ -6331,13 +6331,13 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.2, postcss-value-parser@^
|
||||
integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==
|
||||
|
||||
postcss@^6.x, postcss@^8.1.4, postcss@^8.x:
|
||||
version "8.1.4"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.4.tgz#356dfef367a70f3d04347f74560c85846e20e4c1"
|
||||
integrity sha512-LfqcwgMq9LOd8pX7K2+r2HPitlIGC5p6PoZhVELlqhh2YGDVcXKpkCseqan73Hrdik6nBd2OvoDPUaP/oMj9hQ==
|
||||
version "8.1.6"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.1.6.tgz#b022ba2cfb8701da234d073ed3128c5a384c35ff"
|
||||
integrity sha512-JuifSl4h8dJ70SiMXKjzCxhalE6p2TnMHuq9G8ftyXj2jg6SXzqCsEuxMj9RkmJoO5D+Z9YrWunNkxqpRT02qg==
|
||||
dependencies:
|
||||
colorette "^1.2.1"
|
||||
line-column "^1.0.2"
|
||||
nanoid "^3.1.15"
|
||||
nanoid "^3.1.16"
|
||||
source-map "^0.6.1"
|
||||
|
||||
postcss@^7.0.0, postcss@^7.0.14, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.31, postcss@^7.0.32, postcss@^7.0.6:
|
||||
|
Reference in New Issue
Block a user