Switch theme to Doks
This commit is contained in:
10
layouts/404.html
Normal file
10
layouts/404.html
Normal file
@@ -0,0 +1,10 @@
|
||||
{{ define "main" }}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 col-lg-10 col-xl-8">
|
||||
<article>
|
||||
<h1 class="text-center">Page not found :(</h1>
|
||||
<p class="text-center">The page you are looking for doesn't exist or has been moved.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
0
layouts/_default/_markup/.gitkeep
Normal file
0
layouts/_default/_markup/.gitkeep
Normal file
30
layouts/_default/baseof.html
Normal file
30
layouts/_default/baseof.html
Normal file
@@ -0,0 +1,30 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ .Site.LanguageCode | default "en" }}">
|
||||
{{ partial "head/head.html" . }}
|
||||
{{ if eq .Kind "home" -}}
|
||||
{{ .Scratch.Set "class" "home" -}}
|
||||
{{ else if eq .Kind "404" -}}
|
||||
{{ .Scratch.Set "class" "error404" -}}
|
||||
{{ else if eq .Kind "page" -}}
|
||||
{{ .Scratch.Set "class" .Type -}}
|
||||
{{ .Scratch.Add "class" " single" -}}
|
||||
{{ else -}}
|
||||
{{ .Scratch.Set "class" .Type -}}
|
||||
{{ .Scratch.Add "class" " list" -}}
|
||||
{{ end -}}
|
||||
<body class="{{ .Scratch.Get "class" }}">
|
||||
{{ partial "header/header.html" . }}
|
||||
<div class="wrap container" role="document">
|
||||
<div class="content">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ block "sidebar-prefooter" . }}{{ end }}
|
||||
{{ block "sidebar-footer" . }}{{ end }}
|
||||
{{ partial "footer/footer.html" . }}
|
||||
{{ if and .IsHome .Site.Params.alert }}
|
||||
{{ partial "footer/alert.html" . }}
|
||||
{{ end }}
|
||||
{{ partial "footer/script-footer.html" . }}
|
||||
</body>
|
||||
</html>
|
||||
10
layouts/_default/index.js
Normal file
10
layouts/_default/index.js
Normal file
@@ -0,0 +1,10 @@
|
||||
var docs = [
|
||||
{{ range $index, $page := (where .Site.Pages "Section" "docs") -}}
|
||||
{
|
||||
id: {{ $index }},
|
||||
title: "{{ .Title }}",
|
||||
description: "{{ .Params.description }}",
|
||||
href: "{{ .URL | absURL }}"
|
||||
},
|
||||
{{ end -}}
|
||||
];
|
||||
5
layouts/_default/index.json
Normal file
5
layouts/_default/index.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{{- $.Scratch.Add "index" slice -}}
|
||||
{{- range .Site.RegularPages -}}
|
||||
{{- $.Scratch.Add "index" (dict "title" .Title "description" .Params.description "contents" .Plain "permalink" .Permalink) -}}
|
||||
{{- end -}}
|
||||
{{- $.Scratch.Get "index" | jsonify -}}
|
||||
13
layouts/_default/list.html
Normal file
13
layouts/_default/list.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{{ define "main" }}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 col-lg-10 col-xl-8">
|
||||
{{ range .Paginator.Pages }}
|
||||
<article>
|
||||
<h2><a href="{{ .Permalink }}">{{ .Title }}</a></h2>
|
||||
{{ .Description }}
|
||||
</article>
|
||||
{{ end }}
|
||||
{{ template "_internal/pagination.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
46
layouts/_default/section.sitemap.xml
Normal file
46
layouts/_default/section.sitemap.xml
Normal file
@@ -0,0 +1,46 @@
|
||||
{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML -}}
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
{{ range $i, $e := .Data.Pages -}}
|
||||
{{ if ne .Params.sitemap_exclude true }}
|
||||
<url>
|
||||
<loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
|
||||
<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
|
||||
<changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
|
||||
<priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="{{ .Lang }}"
|
||||
href="{{ .Permalink }}"
|
||||
/>{{ end }}
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="{{ .Lang }}"
|
||||
href="{{ .Permalink }}"
|
||||
/>{{ end }}
|
||||
</url>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ range .Sections -}}
|
||||
{{ range $i, $e := .Data.Pages -}}
|
||||
{{ if ne .Params.sitemap_exclude true -}}
|
||||
<url>
|
||||
<loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
|
||||
<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
|
||||
<changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
|
||||
<priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="{{ .Lang }}"
|
||||
href="{{ .Permalink }}"
|
||||
/>{{ end }}
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="{{ .Lang }}"
|
||||
href="{{ .Permalink }}"
|
||||
/>{{ end }}
|
||||
</url>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
</urlset>
|
||||
10
layouts/_default/single.html
Normal file
10
layouts/_default/single.html
Normal file
@@ -0,0 +1,10 @@
|
||||
{{ define "main" }}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 col-lg-10 col-xl-8">
|
||||
<article>
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ .Content }}
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
21
layouts/blog/list.html
Normal file
21
layouts/blog/list.html
Normal file
@@ -0,0 +1,21 @@
|
||||
{{ define "main" }}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 col-lg-10 col-xl-8">
|
||||
<article>
|
||||
<h1 class="text-center">{{ .Title }}</h1>
|
||||
<div class="text-center">{{ .Content }}</div>
|
||||
<div class="card-list">
|
||||
{{ range .Data.Pages -}}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h2 class="h3"><a class="stretched-link text-body" href="{{ .Permalink }}">{{ .Params.title }}</a></h2>
|
||||
<p>{{ .Params.lead | safeHTML }}</p>
|
||||
{{ partial "main/blog-meta.html" . -}}
|
||||
</div>
|
||||
</div>
|
||||
{{ end -}}
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
14
layouts/blog/single.html
Normal file
14
layouts/blog/single.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{{ define "main" }}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 col-lg-10 col-xl-8">
|
||||
<article>
|
||||
<div class="blog-header">
|
||||
<h1>{{ .Title }}</h1>
|
||||
{{ partial "main/blog-meta.html" . }}
|
||||
</div>
|
||||
<p class="lead">{{ .Params.lead | safeHTML }}</p>
|
||||
{{ .Content }}
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
23
layouts/contributors/list.html
Normal file
23
layouts/contributors/list.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{{ define "main" }}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 col-lg-10 col-xl-8">
|
||||
<article>
|
||||
<h1 class="text-center">{{ .Title }}</h1>
|
||||
<div class="text-center">{{ .Content }}</div>
|
||||
<div class="card-list">
|
||||
{{ range .Data.Pages -}}
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h2 class="h3"><a class="stretched-link text-body" href="{{ .Permalink }}">{{ .Params.title }}</a></h2>
|
||||
{{ if eq .Section "blog" -}}
|
||||
<p>{{ .Params.lead | safeHTML }}</p>
|
||||
{{ partial "main/blog-meta.html" . -}}
|
||||
{{ end -}}
|
||||
</div>
|
||||
</div>
|
||||
{{ end -}}
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
34
layouts/docs/list.html
Normal file
34
layouts/docs/list.html
Normal file
@@ -0,0 +1,34 @@
|
||||
{{ define "main" }}
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-md-12 col-lg-10 col-xl-8">
|
||||
<article>
|
||||
<a href="..">
|
||||
<p class="text-center">⇐ {{ .Parent.Name }}</p>
|
||||
</a>
|
||||
<h1 style="margin: 0;" class="text-center">{{ .Title }}</h1>
|
||||
<div class="text-center">{{ .Content }}</div>
|
||||
<div class="card-list">
|
||||
{{ $currentSection := .CurrentSection }}
|
||||
{{ range .Paginator.Pages }}
|
||||
{{ if in (.Permalink | string) $currentSection.RelPermalink }}
|
||||
<div class="card my-3">
|
||||
<div class="card-body">
|
||||
<a class="stretched-link" href="{{ .Permalink }}">{{ .Params.title | title }} ⇒</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ range .CurrentSection.Sections }}
|
||||
{{ if in (.Permalink | string) $currentSection.RelPermalink }}
|
||||
<div class="card my-3">
|
||||
<div class="card-body">
|
||||
<a class="stretched-link" href="{{ .Permalink }}">{{ .Params.title | title }} ⇒</a>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
30
layouts/docs/single.html
Normal file
30
layouts/docs/single.html
Normal file
@@ -0,0 +1,30 @@
|
||||
{{ define "main" }}
|
||||
<div class="row flex-xl-nowrap">
|
||||
<div class="col-lg-5 col-xl-4 docs-sidebar">
|
||||
<nav class="docs-links" aria-label="Main navigation">
|
||||
{{ partial "sidebar/docs-menu.html" . }}
|
||||
</nav>
|
||||
</div>
|
||||
{{ if ne .Params.toc false -}}
|
||||
<nav class="docs-toc d-none d-xl-block col-xl-3" aria-label="Secondary navigation">
|
||||
{{ partial "sidebar/docs-toc.html" . }}
|
||||
</nav>
|
||||
{{ end -}}
|
||||
{{ if .Params.toc -}}
|
||||
<main class="docs-content col-lg-11 col-xl-9">
|
||||
{{ else -}}
|
||||
<main class="docs-content col-lg-11 col-xl-9 mx-xl-auto">
|
||||
{{ end -}}
|
||||
<a href="..">
|
||||
⇐ {{ .Parent.Name }}
|
||||
</a>
|
||||
<h1 style="margin-top: 0.2rem;">{{ .Title }}</h1>
|
||||
<p class="lead">{{ .Params.lead | safeHTML }}</p>
|
||||
{{ partial "main/headline-hash.html" .Content }}
|
||||
{{ if .Site.Params.editPage -}}
|
||||
{{ partial "main/edit-page.html" . }}
|
||||
{{ end -}}
|
||||
{{ partial "main/docs-navigation.html" . }}
|
||||
</main>
|
||||
</div>
|
||||
{{ end }}
|
||||
9
layouts/index.headers
Normal file
9
layouts/index.headers
Normal file
@@ -0,0 +1,9 @@
|
||||
/*
|
||||
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
|
||||
X-Content-Type-Options: nosniff
|
||||
X-XSS-Protection: 1; mode=block
|
||||
Content-Security-Policy: default-src 'self'; frame-ancestors https://jamstackthemes.dev; manifest-src 'self'; connect-src 'self'; font-src 'self'; img-src 'self' data:; script-src 'self'; style-src 'self'
|
||||
X-Frame-Options: SAMEORIGIN
|
||||
Referrer-Policy: strict-origin
|
||||
Feature-Policy: geolocation 'self'
|
||||
Cache-Control: public, max-age=31536000
|
||||
23
layouts/index.html
Normal file
23
layouts/index.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{{ define "main" }}
|
||||
<section class="section container-fluid mt-n3 pb-3">
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-12 text-center">
|
||||
<h1 class="mt-0">{{ .Title }}</h1>
|
||||
</div>
|
||||
<div class="col-lg-9 col-xl-8 text-center">
|
||||
<p class="lead">{{ .Params.Lead | safeHTML }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
{{ end }}
|
||||
|
||||
{{ define "sidebar-footer" }}
|
||||
<section class="section section-sm container-fluid">
|
||||
<div class="row justify-content-center text-center">
|
||||
<div class="col-lg-9">
|
||||
{{- .Content -}}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<br>
|
||||
{{ end }}
|
||||
6
layouts/index.redirects
Normal file
6
layouts/index.redirects
Normal file
@@ -0,0 +1,6 @@
|
||||
# redirects for Netlify - https://www.netlify.com/docs/redirects/
|
||||
{{- range $p := .Site.Pages -}}
|
||||
{{- range .Aliases }}
|
||||
{{ . }} {{ $p.RelPermalink -}}
|
||||
{{- end }}
|
||||
{{- end -}}
|
||||
3
layouts/partials/footer/alert.html
Normal file
3
layouts/partials/footer/alert.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<div class="alert alert-primary fixed-bottom text-center" role="alert">
|
||||
{{ .Site.Params.alertText | safeHTML }}
|
||||
</div>
|
||||
18
layouts/partials/footer/footer.html
Normal file
18
layouts/partials/footer/footer.html
Normal file
@@ -0,0 +1,18 @@
|
||||
<footer class="footer text-muted">
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 order-last order-lg-first">
|
||||
<ul class="list-inline">
|
||||
<li class="list-inline-item">{{ .Site.Params.footer | safeHTML }}</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="col-lg-8 order-first order-lg-last text-lg-right">
|
||||
<ul class="list-inline">
|
||||
{{ range .Site.Menus.footer -}}
|
||||
<li class="list-inline-item"><a href="{{ .URL | absURL }}">{{ .Name }}</a></li>
|
||||
{{ end -}}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
19
layouts/partials/footer/script-footer.html
Normal file
19
layouts/partials/footer/script-footer.html
Normal file
@@ -0,0 +1,19 @@
|
||||
{{ $indexTemplate := resources.Get "js/index.js" -}}
|
||||
{{ $index := $indexTemplate | resources.ExecuteAsTemplate "index.js" . -}}
|
||||
{{ $lazysizes := resources.Get "js/vendor/lazysizes/lazysizes.min.js" -}}
|
||||
{{ $flexsearch := resources.Get "js/vendor/flexsearch/dist/flexsearch.min.js" -}}
|
||||
{{ $clipboard := resources.Get "js/vendor/clipboard/dist/clipboard.min.js" -}}
|
||||
{{ if eq (hugo.Environment) "development" -}}
|
||||
{{ $app := resources.Get "js/app.js" -}}
|
||||
{{ $js := slice $lazysizes $clipboard $flexsearch $app | resources.Concat "main.js" -}}
|
||||
<script src="{{ $js.Permalink }}" defer></script>
|
||||
<script src="{{ $index.Permalink }}" defer></script>
|
||||
{{ else -}}
|
||||
{{ $instantPage := resources.Get "js/vendor/instant.page/instantpage.js" | minify -}}
|
||||
{{ $app := resources.Get "js/app.js" | minify -}}
|
||||
{{ $js := slice $lazysizes $clipboard $flexsearch $instantPage $app | resources.Concat "main.js" -}}
|
||||
{{ $jsProd := $js | resources.Fingerprint "sha512" -}}
|
||||
{{ $indexProd := $index | resources.Minify | resources.Fingerprint "sha512" -}}
|
||||
<script src="{{ $jsProd.Permalink }}" integrity="{{ $jsProd.Data.Integrity }}" crossorigin="anonymous" defer></script>
|
||||
<script src="{{ $indexProd.Permalink }}" integrity="{{ $indexProd.Data.Integrity }}" crossorigin="anonymous" defer></script>
|
||||
{{ end -}}
|
||||
5
layouts/partials/head/favicons.html
Normal file
5
layouts/partials/head/favicons.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<meta name="theme-color" content="{{ $.Site.Params.themeColor }}">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="{{ "apple-touch-icon.png" | absURL }}">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="{{ "favicon-32x32.png" | absURL }}">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="{{ "favicon-16x16.png" | absURL }}">
|
||||
<link rel="manifest" href="{{ "site.webmanifest" | absURL }}">
|
||||
11
layouts/partials/head/head.html
Normal file
11
layouts/partials/head/head.html
Normal file
@@ -0,0 +1,11 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<script src="https://code.iconify.design/1/1.0.7/iconify.min.js"></script>
|
||||
{{ block "head/resource-hints" . }}{{ partial "head/resource-hints.html" . }}{{ end }}
|
||||
{{ block "head/stylesheet" . }}{{ partial "head/stylesheet.html" . }}{{ end }}
|
||||
{{ block "head/seo" . }}{{ partial "head/seo.html" . }}{{ end }}
|
||||
{{ block "head/favicons" . }}{{ partial "head/favicons.html" . }}{{ end }}
|
||||
{{ block "head/script-header" . }}{{ partial "head/script-header.html" . }}{{ end }}
|
||||
</head>
|
||||
93
layouts/partials/head/opengraph.html
Normal file
93
layouts/partials/head/opengraph.html
Normal file
@@ -0,0 +1,93 @@
|
||||
<meta property="og:title" content="{{ .Title }}">
|
||||
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}">
|
||||
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}">
|
||||
{{ if $.Scratch.Get "paginator" -}}
|
||||
{{ $paginator := .Paginate (where .Site.RegularPages.ByDate.Reverse "Section" "blog" ) -}}
|
||||
<meta property="og:url" content="{{ .Paginator.URL | absURL }}">
|
||||
{{ else -}}
|
||||
<meta property="og:url" content="{{ .Permalink }}">
|
||||
{{ end -}}
|
||||
|
||||
{{ with $.Params.images -}}
|
||||
{{ range first 6 . -}}
|
||||
<meta property="og:image" content="{{ $.Permalink }}{{ . }}">
|
||||
{{ end -}}
|
||||
{{ else -}}
|
||||
{{ $images := $.Resources.ByType "image" -}}
|
||||
{{ $featured := $images.GetMatch "*feature*" -}}
|
||||
{{ if not $featured -}}
|
||||
{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}
|
||||
{{ end -}}
|
||||
{{ with $featured -}}
|
||||
<meta property="og:image" content="{{ $featured.Permalink }}"/>
|
||||
{{ else -}}
|
||||
{{ with $.Site.Params.images -}}
|
||||
<meta property="og:image" content="{{ index . 0 | absURL }}"/>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $iso8601 := "2006-01-02T15:04:05-07:00" -}}
|
||||
{{ if .IsPage -}}
|
||||
{{ if not .PublishDate.IsZero -}}
|
||||
<meta property="article:published_time" {{ .PublishDate.Format $iso8601 | printf "content=%q" | safeHTMLAttr }}>
|
||||
{{ else if not .Date.IsZero -}}
|
||||
<meta property="article:published_time" {{ .Date.Format $iso8601 | printf "content=%q" | safeHTMLAttr }}>
|
||||
{{ end -}}
|
||||
{{ if not .Lastmod.IsZero -}}
|
||||
<meta property="article:modified_time" {{ .Lastmod.Format $iso8601 | printf "content=%q" | safeHTMLAttr }}>
|
||||
{{ end -}}
|
||||
{{ else -}}
|
||||
{{ if not .Date.IsZero -}}
|
||||
<meta property="og:updated_time" {{ .Lastmod.Format $iso8601 | printf "content=%q" | safeHTMLAttr }}>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ with .Params.audio -}}
|
||||
<meta property="og:audio" content="{{ . }}">
|
||||
{{ end -}}
|
||||
{{ with .Params.locale -}}
|
||||
<meta property="og:locale" content="{{ . }}">
|
||||
{{ end -}}
|
||||
{{ with .Site.Params.title -}}
|
||||
<meta property="og:site_name" content="{{ . }}">
|
||||
{{ end -}}
|
||||
{{ with .Params.videos -}}
|
||||
{{ range . -}}
|
||||
<meta property="og:video" content="{{ . | absURL }}">
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $permalink := .Permalink -}}
|
||||
{{ $siteSeries := .Site.Taxonomies.series -}}
|
||||
{{ with .Params.series -}}
|
||||
{{ range $name := . -}}
|
||||
{{ $series := index $siteSeries $name -}}
|
||||
{{ range $page := first 6 $series.Pages -}}
|
||||
{{ if ne $page.Permalink $permalink -}}
|
||||
<meta property="og:see_also" content="{{ $page.Permalink }}">
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ if .IsPage -}}
|
||||
{{ range .Site.Authors -}}
|
||||
{{ with .Social.facebook -}}
|
||||
<meta property="article:author" content="https://www.facebook.com/{{ . }}">
|
||||
{{ end -}}
|
||||
{{ with .Site.Social.facebook -}}
|
||||
<meta property="article:publisher" content="https://www.facebook.com/{{ . }}">
|
||||
{{ end -}}
|
||||
<meta property="article:section" content="{{ .Section }}">
|
||||
{{ with .Params.tags -}}
|
||||
{{ range first 6 . -}}
|
||||
<meta property="article:tag" content="{{ . }}">
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ with .Site.Social.facebook_admin -}}
|
||||
<meta property="fb:admins" content="{{ . }}">
|
||||
{{ end -}}
|
||||
2
layouts/partials/head/resource-hints.html
Normal file
2
layouts/partials/head/resource-hints.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<link rel="preload" as="font" href="{{ "fonts/vendor/jost/jost-v4-latin-regular.woff2" | absURL }}" type="font/woff2" crossorigin>
|
||||
<link rel="preload" as="font" href="{{ "fonts/vendor/jost/jost-v4-latin-700.woff2" | absURL }}" type="font/woff2" crossorigin>
|
||||
0
layouts/partials/head/script-header.html
Normal file
0
layouts/partials/head/script-header.html
Normal file
50
layouts/partials/head/seo.html
Normal file
50
layouts/partials/head/seo.html
Normal file
@@ -0,0 +1,50 @@
|
||||
{{ if eq .Kind "404" -}}
|
||||
<meta name="robots" content="noindex, follow">
|
||||
{{ else -}}
|
||||
{{ with .Params.robots -}}
|
||||
<meta name="robots" content="{{ . }}">
|
||||
{{ else -}}
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta name="googlebot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
|
||||
<meta name="bingbot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1">
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ if .IsHome -}}
|
||||
<title>{{ .Site.Params.title }} {{ .Site.Params.titleSeparator }} {{ .Site.Params.titleAddition }}</title>
|
||||
{{ else -}}
|
||||
<title>{{ .Title }} {{ .Site.Params.titleSeparator }} {{ .Site.Params.title }}</title>
|
||||
{{ end -}}
|
||||
|
||||
{{ with .Description -}}
|
||||
<meta name="description" content="{{ . }}">
|
||||
{{ else -}}
|
||||
<meta name="description" content="{{ .Site.Params.description }}">
|
||||
{{ end -}}
|
||||
|
||||
{{ if $.Scratch.Get "paginator" }}
|
||||
<link rel="canonical" href="{{ .Paginator.URL | absURL }}">
|
||||
{{ if .Paginator.HasPrev -}}
|
||||
<link rel="prev" href="{{ .Paginator.Prev.URL | absURL }}">
|
||||
{{ end -}}
|
||||
{{ if .Paginator.HasNext -}}
|
||||
<link rel="next" href="{{ .Paginator.Next.URL | absURL }}">
|
||||
{{ end -}}
|
||||
{{ else -}}
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
{{ end -}}
|
||||
|
||||
{{ partial "head/twitter_cards.html" . }}
|
||||
<meta name="twitter:site" content="@{{ .Site.Params.twitterSite }}">
|
||||
<meta name="twitter:creator" content="@{{ .Site.Params.twitterCreator }}">
|
||||
|
||||
{{ partial "head/opengraph.html" . }}
|
||||
<meta property="article:publisher" content="https://www.facebook.com/{{ .Site.Params.facebookPublisher }}">
|
||||
<meta property="article:author" content="https://www.facebook.com/{{ .Site.Params.facebookAuthor }}">
|
||||
<meta property="og:locale" content="{{ .Site.Params.ogLocale }}">
|
||||
|
||||
{{ range .AlternativeOutputFormats -}}
|
||||
<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
|
||||
{{ end -}}
|
||||
|
||||
{{ partial "head/structured-data.html" . }}
|
||||
109
layouts/partials/head/structured-data.html
Normal file
109
layouts/partials/head/structured-data.html
Normal file
@@ -0,0 +1,109 @@
|
||||
{{ if .IsHome -}}
|
||||
{{ if eq .Site.Params.schemaType "Organization" -}}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Organization",
|
||||
"url": "{{ "/" | absURL }}",
|
||||
"name": "{{ .Site.Params.title }}",
|
||||
"logo": "{{ "/" | absURL }}{{ .Site.Params.schemaLogo }}",
|
||||
"sameAs": [
|
||||
"{{ .Site.Params.schemaTwitter | safeURL }}",
|
||||
"{{ .Site.Params.schemaLinkedIn | safeURL }}",
|
||||
"{{ .Site.Params.schemaGitHub | safeURL }}"
|
||||
]
|
||||
}
|
||||
</script>
|
||||
{{ end -}}
|
||||
{{ if eq .Site.Params.schemaType "Person" -}}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Person",
|
||||
"url": "{{ "/" | absURL }}",
|
||||
"name": "{{ .Site.Params.title }}",
|
||||
"sameAs": [
|
||||
"{{ .Site.Params.schemaTwitter | safeURL }}",
|
||||
"{{ .Site.Params.schemaLinkedIn | safeURL }}",
|
||||
"{{ .Site.Params.schemaGitHub | safeURL }}"
|
||||
]
|
||||
}
|
||||
</script>
|
||||
{{ end -}}
|
||||
{{ if .Site.Params.siteLinksSearchBox -}}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebSite",
|
||||
"url": "{{ "/" | absURL }}",
|
||||
"potentialAction": {
|
||||
"@type": "SearchAction",
|
||||
"target": "{{ "/" | absURL }}?q={search_term_string}",
|
||||
"query-input": "required name=search_term_string"
|
||||
}
|
||||
}
|
||||
</script>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ if .IsPage -}}
|
||||
{{ if eq .Section .Site.Params.schemaSection -}}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Article",
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
"@id": "{{ .Permalink }}"
|
||||
},
|
||||
"headline": "{{ .Title }}",
|
||||
"image": [{{ range $i, $e := .Params.images }}{{ if $i }}, {{ end }}{{ printf "%s%s" $.Permalink $e }}{{ end }}],
|
||||
"datePublished": "{{ .PublishDate.Format "2006-01-02T15:04:05CET" }}",
|
||||
"dateModified": "{{ .Lastmod.Format "2006-01-02T15:04:05CET" }}",
|
||||
"author": {
|
||||
"@type": "{{ .Site.Params.schemaType }}",
|
||||
"name": "{{ .Site.Params.title }}"
|
||||
},
|
||||
"publisher": {
|
||||
"@type": "{{ .Site.Params.schemaType }}",
|
||||
"name": "{{ .Site.Params.title }}",
|
||||
{{ if eq .Site.Params.schemaType "Organization" -}}
|
||||
"logo": {
|
||||
"@type": "ImageObject",
|
||||
"url": "{{ "/" | absURL }}{{ .Site.Params.schemaLogo }}"
|
||||
}
|
||||
{{ end -}}
|
||||
},
|
||||
"description": "{{ .Description }}"
|
||||
}
|
||||
</script>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ $dot := . -}}
|
||||
{{ $dot.Scratch.Set "path" "" -}}
|
||||
{{ $dot.Scratch.Set "breadcrumb" slice -}}
|
||||
|
||||
{{ $url := replace .Permalink ( printf "%s" .Site.BaseURL) "" -}}
|
||||
{{ $.Scratch.Add "path" .Site.BaseURL -}}
|
||||
|
||||
{{ $.Scratch.Add "breadcrumb" (slice (dict "url" .Site.BaseURL "name" "home" "position" 1 )) -}}
|
||||
{{ range $index, $element := split $url "/" -}}
|
||||
{{ $dot.Scratch.Add "path" $element -}}
|
||||
{{ $.Scratch.Add "path" "/" -}}
|
||||
{{ if ne $element "" -}}
|
||||
{{ $.Scratch.Add "breadcrumb" (slice (dict "url" ($.Scratch.Get "path") "name" . "position" (add $index 2))) -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "BreadcrumbList",
|
||||
"itemListElement": [{{ range $.Scratch.Get "breadcrumb" }}{{ if ne .position 1 }},{{ end }}{
|
||||
"@type": "ListItem",
|
||||
"position": {{ .position }},
|
||||
"name": "{{ .name | humanize | title }}",
|
||||
"item": "{{ .url }}"
|
||||
}{{ end }}]
|
||||
}
|
||||
</script>
|
||||
11
layouts/partials/head/stylesheet.html
Normal file
11
layouts/partials/head/stylesheet.html
Normal file
@@ -0,0 +1,11 @@
|
||||
{{ if eq (hugo.Environment) "development" -}}
|
||||
{{ $options := (dict "targetPath" "main.css" "enableSourceMap" true "includePaths" (slice "node_modules")) -}}
|
||||
{{ $css := resources.Get "scss/app.scss" | toCSS $options -}}
|
||||
<link rel="stylesheet" href="{{ $css.Permalink }}">
|
||||
{{ else -}}
|
||||
{{ $options := (dict "targetPath" "main.css" "outputStyle" "compressed" "includePaths" (slice "node_modules")) -}}
|
||||
{{ $css := resources.Get "scss/app.scss" | toCSS $options | postCSS (dict "config" "config/postcss.config.js") -}}
|
||||
{{ $secureCSS := $css | resources.Fingerprint "sha512" -}}
|
||||
<link rel="stylesheet" href="{{ $secureCSS.Permalink }}" integrity="{{ $secureCSS.Data.Integrity }}" crossorigin="anonymous">
|
||||
{{ end -}}
|
||||
<noscript><style>img.lazyload { display: none; }</style></noscript>
|
||||
33
layouts/partials/head/twitter_cards.html
Normal file
33
layouts/partials/head/twitter_cards.html
Normal file
@@ -0,0 +1,33 @@
|
||||
{{ with $.Params.images -}}
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:image" content="{{ $.Permalink }}{{ index . 0 }}">
|
||||
{{ else -}}
|
||||
{{ $images := $.Resources.ByType "image" -}}
|
||||
{{ $featured := $images.GetMatch "*feature*" -}}
|
||||
{{ if not $featured -}}
|
||||
{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" -}}
|
||||
{{ end -}}
|
||||
{{ with $featured -}}
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:image" content="{{ $featured.Permalink }}">
|
||||
{{ else -}}
|
||||
{{ with $.Site.Params.images -}}
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:image" content="{{ index . 0 | absURL }}">
|
||||
{{ else -}}
|
||||
<meta name="twitter:card" content="summary">
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
|
||||
<meta name="twitter:title" content="{{ .Title }}">
|
||||
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}">
|
||||
{{ with .Site.Social.twitter -}}
|
||||
<meta name="twitter:site" content="@{{ . }}">
|
||||
{{ end -}}
|
||||
|
||||
{{ range .Site.Authors -}}
|
||||
{{ with .twitter -}}
|
||||
<meta name="twitter:creator" content="@{{ . }}">
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
39
layouts/partials/header/header.html
Normal file
39
layouts/partials/header/header.html
Normal file
@@ -0,0 +1,39 @@
|
||||
<div class="header-bar fixed-top"></div>
|
||||
<header class="navbar fixed-top navbar-expand-md navbar-light">
|
||||
<div class="container">
|
||||
<input class="menu-btn order-0" type="checkbox" id="menu-btn">
|
||||
<label class="menu-icon d-md-none" for="menu-btn"><span class="navicon"></span></label>
|
||||
<a class="navbar-brand order-1 order-md-0 mr-auto" href="{{ "/" | absURL }}">{{ .Site.Params.Title }}</a>
|
||||
<button id="mode" class="btn btn-link order-2 order-md-4" type="button" aria-label="Toggle mode">
|
||||
<span class="toggle-dark"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-moon"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path></svg></span>
|
||||
<span class="toggle-light"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-sun"><circle cx="12" cy="12" r="5"></circle><line x1="12" y1="1" x2="12" y2="3"></line><line x1="12" y1="21" x2="12" y2="23"></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line><line x1="1" y1="12" x2="3" y2="12"></line><line x1="21" y1="12" x2="23" y2="12"></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line></svg></span>
|
||||
</button>
|
||||
<ul class="navbar-nav social-nav order-3 order-md-5">
|
||||
{{ range .Site.Menus.social -}}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="{{ .URL | absURL }}">{{ .Pre | safeHTML }}<span class="ml-2 sr-only">{{ .Name | safeHTML }}</span></a>
|
||||
</li>
|
||||
{{ end -}}
|
||||
</ul>
|
||||
<div class="collapse navbar-collapse order-4 order-md-1">
|
||||
<ul class="navbar-nav main-nav mr-auto order-5 order-md-2">
|
||||
{{- $current := . -}}
|
||||
{{ range .Site.Menus.main -}}
|
||||
{{- $active := or ($current.IsMenuCurrent "main" .) ($current.HasMenuCurrent "main" .) -}}
|
||||
{{- $active = or $active (eq .Name $current.Title) -}}
|
||||
{{- $active = or $active (and (eq .Name "Docs") (eq $current.Section "docs")) -}}
|
||||
{{- $active = or $active (and (eq .Name "Guides") (eq $current.Section "guides")) -}}
|
||||
{{- $active = or $active (and (eq .Name "Blog") (eq $current.Section "blog" "authors")) -}}
|
||||
<li class="nav-item{{ if $active }} active{{ end }}">
|
||||
<a class="nav-link" href="{{ .URL | absURL }}">{{ .Name }}</a>
|
||||
</li>
|
||||
{{ end -}}
|
||||
</ul>
|
||||
<div class="break order-6 d-md-none"></div>
|
||||
<form class="navbar-form flex-grow-1 order-7 order-md-3">
|
||||
<input id="userinput" class="form-control is-search" type="search" placeholder="Search docs..." aria-label="Search docs..." autocomplete="off">
|
||||
<div id="suggestions" class="shadow bg-white rounded"></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
1
layouts/partials/main/blog-meta.html
Normal file
1
layouts/partials/main/blog-meta.html
Normal file
@@ -0,0 +1 @@
|
||||
<p><small>Posted {{ .PublishDate.Format "January 2, 2006" }} by {{ if .Params.contributors -}}{{ range $index, $contributor := .Params.contributors }}{{ if gt $index 0 }} and {{ end }}<a class="stretched-link position-relative" href="{{ "/contributors/" | absURL }}{{ . | urlize }}/">{{ . }}</a>{{ end -}}{{ end -}} ‐ <strong>{{ .ReadingTime -}} min read</strong></small><p>
|
||||
24
layouts/partials/main/docs-navigation.html
Normal file
24
layouts/partials/main/docs-navigation.html
Normal file
@@ -0,0 +1,24 @@
|
||||
{{ if or .Prev .Next -}}
|
||||
<div class="docs-navigation d-flex justify-content-between">
|
||||
<!-- https://www.feliciano.tech/blog/custom-sort-hugo-single-pages/ -->
|
||||
{{ $pages := where site.RegularPages "Section" .Section -}}
|
||||
{{ with $pages.Next . -}}
|
||||
<a href="{{ .Permalink }}">
|
||||
<div class="card my-1">
|
||||
<div class="card-body py-2">
|
||||
⇐ {{ .Title }}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{{ end -}}
|
||||
{{ with $pages.Prev . -}}
|
||||
<a class="ml-auto" href="{{ .Permalink }}">
|
||||
<div class="card my-1">
|
||||
<div class="card-body py-2">
|
||||
{{ .Title }} ⇒
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{{ end -}}
|
||||
</div>
|
||||
{{ end -}}
|
||||
1
layouts/partials/main/edit-page.html
Normal file
1
layouts/partials/main/edit-page.html
Normal file
@@ -0,0 +1 @@
|
||||
<p class="edit-page"><a href="{{ .Site.Params.docsRepo }}/blob/master/content/{{ .File.Path }}"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-edit-2"><path d="M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z"></path></svg>Edit this page on GitHub</a></p>
|
||||
1
layouts/partials/main/headline-hash.html
Normal file
1
layouts/partials/main/headline-hash.html
Normal file
@@ -0,0 +1 @@
|
||||
{{ . | replaceRE "(<h[2-9] id=\"([^\"]+)\".+)(</h[2-9]+>)" `${1}<a href="#${2}" class="anchor" aria-hidden="true">#</a> ${3}` | safeHTML }}
|
||||
13
layouts/partials/sidebar/docs-menu.html
Normal file
13
layouts/partials/sidebar/docs-menu.html
Normal file
@@ -0,0 +1,13 @@
|
||||
{{ $currentPage := . -}}
|
||||
{{ range .Site.Menus.docs -}}
|
||||
<h3>{{ .Name }}</h3>
|
||||
{{ if .HasChildren -}}
|
||||
<ul class="list-unstyled">
|
||||
{{ range .Children -}}
|
||||
{{- $active := or ($currentPage.IsMenuCurrent "docs" .) ($currentPage.HasMenuCurrent "docs" .) -}}
|
||||
{{- $active = or $active (eq .Name $currentPage.Title) -}}
|
||||
<li><a class="docs-link{{ if $active }} active{{ end }}" href="{{ .URL | absURL }}">{{ .Name }}</a></li>
|
||||
{{ end -}}
|
||||
</ul>
|
||||
{{ end -}}
|
||||
{{ end -}}
|
||||
6
layouts/partials/sidebar/docs-toc.html
Normal file
6
layouts/partials/sidebar/docs-toc.html
Normal file
@@ -0,0 +1,6 @@
|
||||
{{ if ne .Params.toc false -}}
|
||||
<div class="page-links">
|
||||
<h3>On this page</h3>
|
||||
{{ .TableOfContents }}
|
||||
</div>
|
||||
{{ end -}}
|
||||
7
layouts/robots.txt
Normal file
7
layouts/robots.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
User-agent: *
|
||||
{{ if eq (hugo.Environment) "production" -}}
|
||||
Allow: /
|
||||
{{ else -}}
|
||||
Disallow: /
|
||||
{{ end }}
|
||||
Sitemap: {{ "sitemap.xml" | absURL -}}
|
||||
27
layouts/rss.xml
Normal file
27
layouts/rss.xml
Normal file
@@ -0,0 +1,27 @@
|
||||
{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
|
||||
<generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }}
|
||||
<language>{{.}}</language>{{end}}{{ with .Site.Author.email }}
|
||||
<managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }}
|
||||
<webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }}
|
||||
<copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }}
|
||||
<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }}
|
||||
{{ with .OutputFormats.Get "RSS" }}
|
||||
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
|
||||
{{ end }}
|
||||
{{ range .Pages }}{{ if ne .Params.feed_exclude true }}
|
||||
<item>
|
||||
<title>{{ .Title }}</title>
|
||||
<link>{{ .Permalink }}</link>
|
||||
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
|
||||
{{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}}
|
||||
<guid>{{ .Permalink }}</guid>
|
||||
<description>{{ .Summary | html }}</description>
|
||||
</item>
|
||||
{{ end }}{{ end }}
|
||||
</channel>
|
||||
</rss>
|
||||
4
layouts/shortcodes/alert.html
Normal file
4
layouts/shortcodes/alert.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<div class="alert alert-warning d-flex" role="alert">
|
||||
<div class="flex-shrink-1 alert-icon">{{ with .Get "icon" }}{{.}}{{ end }}</div>
|
||||
<div class="w-100">{{ with .Get "text" }}{{ . | safeHTML }}{{ end }}</div>
|
||||
</div>
|
||||
1
layouts/shortcodes/appveyor-ci.html
Normal file
1
layouts/shortcodes/appveyor-ci.html
Normal file
@@ -0,0 +1 @@
|
||||
<a style="margin-left: 1px; margin-right: 1px; display: inline-block" href="https://ci.appveyor.com/project/moussaelianarsen/{{ .Get "project" }}"><img style="height: 18px; width: 100px;" src="https://ci.appveyor.com/api/projects/status/{{ .Get "projectID" }}?svg=true"/></a>
|
||||
1
layouts/shortcodes/btn-copy.html
Normal file
1
layouts/shortcodes/btn-copy.html
Normal file
@@ -0,0 +1 @@
|
||||
<button class="btn-clipboard btn btn-sm btn-link" data-clipboard-text="{{ .Get "text" | safeHTML }}"><span class="copy-status"></span></button>
|
||||
4
layouts/shortcodes/button-gitea.html
Normal file
4
layouts/shortcodes/button-gitea.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<a class="btn" style="color: white; background-color: {{ .Get "color" }};" href="https://gitea.arsenm.dev/{{ if or (.Get "owner") }}{{ .Get "owner" }}{{ else }}Arsen6331{{ end }}/{{ .Get "project" }}">
|
||||
<span class="iconify" data-icon="cib:gitea"></span>
|
||||
{{ .Get "text" }}
|
||||
</a>
|
||||
4
layouts/shortcodes/button-gitlab.html
Normal file
4
layouts/shortcodes/button-gitlab.html
Normal file
@@ -0,0 +1,4 @@
|
||||
<a class="btn" style="color: white; background-color: {{ .Get "color" }};" href="https://www.gitlab.com/moussaelianarsen/{{ .Get "project" }}">
|
||||
<span class="iconify" data-icon="fa-brands:gitlab"></span>
|
||||
{{ .Get "text" }}
|
||||
</a>
|
||||
3
layouts/shortcodes/button.html
Normal file
3
layouts/shortcodes/button.html
Normal file
@@ -0,0 +1,3 @@
|
||||
<a class="f6 link dim ph3 pv2 mb2 dib white bg-{{ .Get "color" }}" style="color: white;" href="{{ .Get "link" }}">
|
||||
{{ .Get "text" }}
|
||||
</a>
|
||||
1
layouts/shortcodes/email.html
Normal file
1
layouts/shortcodes/email.html
Normal file
@@ -0,0 +1 @@
|
||||
<script type="text/javascript" nonce="dXNlcj0iaGVsbG8iLGRvbWFpbj0iaGVua3ZlcmxpbmRlLmNvbSIsZG9jdW1lbnQud3JpdGUodXNlcisiQCIrZG9tYWluKTs=">user="{{ with .Get "user" }}{{.}}{{ end }}",domain="{{ with .Get "domain" }}{{.}}{{ end }}",document.write(user+"@"+domain);</script><noscript>{{ with .Get "user" }}{{.}}{{ end }} at {{ with .Get "domain" }}{{.}}{{ end }}</noscript>
|
||||
1
layouts/shortcodes/image.html
Normal file
1
layouts/shortcodes/image.html
Normal file
@@ -0,0 +1 @@
|
||||
<img src="{{ .Get "src" }}" alt="{{ .Get "alt" }}">
|
||||
3
layouts/shortcodes/img-simple.html
Normal file
3
layouts/shortcodes/img-simple.html
Normal file
@@ -0,0 +1,3 @@
|
||||
{{ $image := .Page.Resources.GetMatch (printf "*%s*" (.Get "src")) -}}
|
||||
{{ $lqip := $image.Resize $.Site.Params.lqipWidth -}}
|
||||
<img class="img-simple img-fluid lazyload blur-up" src="{{ $lqip.Permalink }}" data-src="{{ $image.Permalink }}" width="{{ $image.Width }}" height="{{ $image.Height }}" {{ with .Get "alt" }}alt="{{.}}"{{ end }}>
|
||||
23
layouts/shortcodes/img.html
Normal file
23
layouts/shortcodes/img.html
Normal file
@@ -0,0 +1,23 @@
|
||||
{{ $image := .Page.Resources.GetMatch (printf "*%s*" (.Get "src")) -}}
|
||||
{{ $lqip := $image.Resize $.Site.Params.lqipWidth -}}
|
||||
|
||||
{{ $imgSrc := "" -}}
|
||||
{{ $imgSrcSet := slice -}}
|
||||
|
||||
{{ $widths := $.Site.Params.landscapePhotoWidths -}}
|
||||
{{ if gt $image.Height $image.Width -}}
|
||||
{{ $widths = $.Site.Params.portraitPhotoWidths -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ range $widths -}}
|
||||
{{ $srcUrl := (printf "%dx" . | $image.Resize).Permalink -}}
|
||||
{{ if eq $imgSrc "" -}}{{ $imgSrc = $srcUrl -}}{{ end -}}
|
||||
{{ $imgSrcSet = $imgSrcSet | append (printf "%s %dw" $srcUrl .) -}}
|
||||
{{ end -}}
|
||||
{{ $imgSrcSet = (delimit $imgSrcSet ",") -}}
|
||||
|
||||
<figure{{ with .Get "class" }} class="{{.}}"{{ end }}>
|
||||
<img class="img-fluid lazyload blur-up" data-sizes="auto" src="{{ $lqip.Permalink }}" data-srcset="{{ $imgSrcSet }}" width="{{ $image.Width }}" height="{{ $image.Height }}" {{ with .Get "alt" }}alt="{{.}}"{{ end }}>
|
||||
<noscript><img class="img-fluid" sizes="100vw" srcset="{{ $imgSrcSet }}" src="{{ $image.Permalink }}" width="{{ $image.Width }}" height="{{ $image.Height }}" {{ with .Get "alt" }}alt="{{.}}"{{ end }}></noscript>
|
||||
{{ with .Get "caption" }}<figcaption class="figure-caption">{{ . | safeHTML }}</figcaption>{{ end }}
|
||||
</figure>
|
||||
1
layouts/shortcodes/minio-s3.html
Normal file
1
layouts/shortcodes/minio-s3.html
Normal file
@@ -0,0 +1 @@
|
||||
<a style="margin-left: 1px; margin-right: 1px; display: inline-block" href="https://minio.arsenm.dev/minio/{{ .Get "project" }}"><img style="height: 18px; width: 100px;" src="https://img.shields.io/static/v1.svg?label=download&message=binary&color=blue"/></a>
|
||||
14
layouts/shortcodes/table.html
Normal file
14
layouts/shortcodes/table.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{{ $htmlTable := .Inner | markdownify }}
|
||||
{{ $class := .Get 0 }}
|
||||
{{ $old := "<table>" }}
|
||||
{{ $new := printf "<table class=\"%s\">" $class }}
|
||||
{{ $htmlTable := replace $htmlTable $old $new }}
|
||||
{{ $old_item := "<td>" }}
|
||||
{{ $old_thr := "<th>" }}
|
||||
{{ $thr_class := "fw6 bb b--black-20 tl pb3 pr3 " }}
|
||||
{{ $item_class := "pv3 pr3 bb b--black-20" }}
|
||||
{{ $new_item := printf "<td class=\"%s\">" $item_class }}
|
||||
{{ $new_thr := printf "<th class=\"%s\">" $thr_class }}
|
||||
{{ $htmlTable := replace $htmlTable $old_item $new_item }}
|
||||
{{ $htmlTable := replace $htmlTable $old_thr $new_thr }}
|
||||
{{ $htmlTable | safeHTML }}
|
||||
22
layouts/sitemap.xml
Normal file
22
layouts/sitemap.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>" | safeHTML }}
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||
{{ range .Data.Pages }}{{ if ne .Params.sitemap_exclude true }}
|
||||
<url>
|
||||
<loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
|
||||
<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
|
||||
<changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
|
||||
<priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="{{ .Lang }}"
|
||||
href="{{ .Permalink }}"
|
||||
/>{{ end }}
|
||||
<xhtml:link
|
||||
rel="alternate"
|
||||
hreflang="{{ .Lang }}"
|
||||
href="{{ .Permalink }}"
|
||||
/>{{ end }}
|
||||
</url>
|
||||
{{ end }}{{ end }}
|
||||
</urlset>
|
||||
Reference in New Issue
Block a user