Reorganize partials
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
22
layouts/partials/components/footer.html
Normal file
22
layouts/partials/components/footer.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<footer class="footer">
|
||||
<div class="footer-container">
|
||||
<div class="copyright">
|
||||
<a href="{{- relURL "" -}}">{{ .Site.Title }}</a> ©
|
||||
{{ now.Year }}
|
||||
</div>
|
||||
|
||||
<nav class="footer-nav">
|
||||
<ul>
|
||||
{{ $len := len .Site.Params.footer }}
|
||||
{{ range $i, $el := .Site.Params.footer }}
|
||||
<li>
|
||||
<a href="{{- $el.url | safeURL -}}">{{ $el.name }}</a>
|
||||
</li>
|
||||
{{ if lt (add $i 1) $len }}
|
||||
<span class="middot">·</span>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</footer>
|
2
layouts/partials/components/head/bots.html
Normal file
2
layouts/partials/components/head/bots.html
Normal file
@@ -0,0 +1,2 @@
|
||||
<meta name="robots" content="all,follow" />
|
||||
<meta name="googlebot" content="index,follow,snippet,archive" />
|
8
layouts/partials/components/head/css.html
Normal file
8
layouts/partials/components/head/css.html
Normal file
@@ -0,0 +1,8 @@
|
||||
{{ $opts := dict "targetPath" "css/main.css" "includePaths" (slice "node_modules") }}
|
||||
{{ with resources.Get "sass/main.scss" | css.Sass $opts | minify | fingerprint }}
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="{{- .RelPermalink -}}"
|
||||
integrity="{{- .Data.Integrity -}}"
|
||||
/>
|
||||
{{ end }}
|
29
layouts/partials/components/head/index.html
Normal file
29
layouts/partials/components/head/index.html
Normal file
@@ -0,0 +1,29 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
|
||||
<title>
|
||||
{{- if .IsHome -}}
|
||||
{{ .Site.Title }}
|
||||
{{- else -}}
|
||||
{{ .Site.Title }} ·
|
||||
{{ .Title }}
|
||||
{{- end -}}
|
||||
</title>
|
||||
|
||||
{{ with .Site.Params.description }}
|
||||
<meta name="description" content="{{- . -}}" />
|
||||
{{ end }}
|
||||
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
{{ partial "components/head/bots.html" . }}
|
||||
{{ partial "components/head/rss.html" . }}
|
||||
|
||||
{{ partial "components/head/opengraph.html" . }}
|
||||
{{ partial "components/head/twitter.html" . }}
|
||||
|
||||
{{ partial "components/head/js.html" . }}
|
||||
{{ partial "components/head/css.html" . }}
|
||||
</head>
|
9
layouts/partials/components/head/js.html
Normal file
9
layouts/partials/components/head/js.html
Normal file
@@ -0,0 +1,9 @@
|
||||
{{ $opts := dict "minify" true }}
|
||||
{{ with resources.Get "js/main.js" | js.Build $opts | minify | fingerprint }}
|
||||
<script
|
||||
src="{{ .RelPermalink }}"
|
||||
integrity="{{ .Data.Integrity }}"
|
||||
crossorigin="anonymous"
|
||||
defer
|
||||
></script>
|
||||
{{ end }}
|
79
layouts/partials/components/head/opengraph.html
Normal file
79
layouts/partials/components/head/opengraph.html
Normal file
@@ -0,0 +1,79 @@
|
||||
<meta property="og:title" content="{{ .Title }}" />
|
||||
<meta
|
||||
property="og:description"
|
||||
content="{{- with .Description -}}
|
||||
{{- . -}}
|
||||
{{- else -}}
|
||||
{{- if .IsPage -}}
|
||||
{{- with .Site.Params.description -}}{{- . -}}{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}"
|
||||
/>
|
||||
<meta
|
||||
property="og:type"
|
||||
content="{{- if .IsPage -}}
|
||||
article
|
||||
{{- else -}}
|
||||
website
|
||||
{{- end -}}"
|
||||
/>
|
||||
<meta property="og:url" content="{{- .Permalink -}}" />
|
||||
|
||||
{{ with .Params.image }}
|
||||
{{ $image := $.Resources.GetMatch . }}
|
||||
{{ with $image }}
|
||||
{{ $thumb := .Resize "400x" }}
|
||||
<meta property="og:image" content="{{- $thumb.Permalink -}}" />
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $iso8601 := "2000-01-01T00:00:00-01: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 }}
|
||||
{{ end }}
|
||||
{{/* .IsPage */}}
|
||||
|
||||
{{ 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 }}
|
||||
|
||||
{{ $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 }}
|
||||
<meta property="article:section" content="{{- .Section -}}" />
|
||||
{{ with .Params.tags }}
|
||||
{{ range . }}
|
||||
<meta property="article:tag" content="{{- . -}}" />
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
8
layouts/partials/components/head/rss.html
Normal file
8
layouts/partials/components/head/rss.html
Normal file
@@ -0,0 +1,8 @@
|
||||
{{ with .OutputFormats.Get "RSS" }}
|
||||
<link
|
||||
href="{{- .Permalink -}}"
|
||||
rel="{{- .Rel -}}"
|
||||
type="{{- .MediaType.Type -}}"
|
||||
title="{{- $.Site.Title -}}"
|
||||
/>
|
||||
{{ end }}
|
22
layouts/partials/components/head/twitter.html
Normal file
22
layouts/partials/components/head/twitter.html
Normal file
@@ -0,0 +1,22 @@
|
||||
<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 .Params.image }}
|
||||
{{ $image := $.Resources.GetMatch . }}
|
||||
{{ with $image }}
|
||||
{{ $thumb := .Resize "400x" }}
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:image" content="{{- $thumb.Permalink -}}" />
|
||||
{{ end }}
|
||||
{{ end }}
|
26
layouts/partials/components/header.html
Normal file
26
layouts/partials/components/header.html
Normal file
@@ -0,0 +1,26 @@
|
||||
<header class="header">
|
||||
<div class="header-container">
|
||||
<div class="site-title">
|
||||
<a href="{{- relURL "" -}}">{{ .Site.Title }}</a>
|
||||
</div>
|
||||
|
||||
<input
|
||||
type="checkbox"
|
||||
id="nav-toggle"
|
||||
class="nav-toggle"
|
||||
aria-label="Toggle navigation"
|
||||
/>
|
||||
<label for="nav-toggle" class="nav-toggle-label">
|
||||
<span></span>
|
||||
<span></span>
|
||||
</label>
|
||||
|
||||
<nav class="nav">
|
||||
<ul>
|
||||
{{ range .Site.Params.navigation }}
|
||||
<li><a href="{{- .url | safeURL -}}">{{ .name }}</a></li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
9
layouts/partials/components/hero/default.html
Normal file
9
layouts/partials/components/hero/default.html
Normal file
@@ -0,0 +1,9 @@
|
||||
<section class="hero">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<div class="meta">
|
||||
<span class="date">{{ .Date | time.Format ":date_medium" }}</span>
|
||||
·
|
||||
<span class="duration">{{ printf "%d MIN READ" .ReadingTime }}</span>
|
||||
</div>
|
||||
{{ partial "components/image/index.html" .Params.hero }}
|
||||
</section>
|
22
layouts/partials/components/image/index.html
Normal file
22
layouts/partials/components/image/index.html
Normal file
@@ -0,0 +1,22 @@
|
||||
{{ $imageData := partial "components/image/reflect.html" . }}
|
||||
{{- with $imageData.image -}}
|
||||
<figure class="captioned-image lightbox">
|
||||
<a
|
||||
href="{{- .RelPermalink -}}"
|
||||
data-pswp-width="{{- .Width -}}"
|
||||
data-pswp-height="{{- .Height -}}"
|
||||
>
|
||||
<img
|
||||
src="{{- .RelPermalink -}}"
|
||||
width="{{- .Width -}}"
|
||||
height="{{- .Height -}}"
|
||||
loading="lazy"
|
||||
{{ with $imageData.title }}title="{{- . -}}"{{ end }}
|
||||
{{ with $imageData.alt }}alt="{{- . -}}"{{ end }}
|
||||
/>
|
||||
</a>
|
||||
{{ with $imageData.caption }}
|
||||
<figcaption>{{ . }}</figcaption>
|
||||
{{ end }}
|
||||
</figure>
|
||||
{{- end -}}
|
31
layouts/partials/components/image/reflect.html
Normal file
31
layouts/partials/components/image/reflect.html
Normal file
@@ -0,0 +1,31 @@
|
||||
{{- $input := . -}}
|
||||
|
||||
{{- $src := $input -}}
|
||||
{{- $caption := "" -}}
|
||||
{{- $title := "" -}}
|
||||
{{- $alt := "" -}}
|
||||
|
||||
{{- if reflect.IsMap $input -}}
|
||||
{{- $src = $input.src | default "" -}}
|
||||
{{- $caption = $input.caption | default "" -}}
|
||||
{{- $title = $input.title | default $caption | default "" -}}
|
||||
{{- $alt = $input.alt | default $title | default "" -}}
|
||||
{{- end -}}
|
||||
|
||||
{{ $result := dict "image" nil "caption" $caption "title" $title "alt" $alt }}
|
||||
|
||||
{{- if $src -}}
|
||||
{{- $isRemote := strings.HasPrefix $src "http" -}}
|
||||
{{- $image := "" -}}
|
||||
|
||||
{{- if $isRemote -}}
|
||||
{{- $remote := resources.GetRemote $src -}}
|
||||
{{- $image = resources.Copy (printf "static/3rd-party/%s" $remote.Name) $remote -}}
|
||||
{{- else -}}
|
||||
{{- $image = resources.Get $src -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- $result = (dict "image" $image "caption" $caption "title" $title "alt" $alt) -}}
|
||||
{{- end -}}
|
||||
|
||||
{{- return $result -}}
|
5
layouts/partials/components/list/meta.html
Normal file
5
layouts/partials/components/list/meta.html
Normal file
@@ -0,0 +1,5 @@
|
||||
<section class="meta">
|
||||
<h1>{{ .Page.Title }}</h1>
|
||||
<p class="length">A {{ .Kind }} with {{ len .Pages }} items</p>
|
||||
{{ .Content }}
|
||||
</section>
|
Reference in New Issue
Block a user