mirror of
https://github.com/yrzam/yrzam-hugo-theme.git
synced 2025-04-11 00:52:28 +00:00
init
This commit is contained in:
commit
dbe99605e9
5
README.md
Normal file
5
README.md
Normal file
@ -0,0 +1,5 @@
|
||||
# My Hugo theme
|
||||
|
||||
Some styling and general logic of my website, separated from content. No extra abstractions.
|
||||
|
||||
Templates to copy are in the `init` directory.
|
10
archetypes/default.md
Normal file
10
archetypes/default.md
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
linkTitle: "{{ .File.BaseFileName | humanize | lower }}"
|
||||
title: "{{ .File.BaseFileName | humanize }}"
|
||||
description:
|
||||
{{replaceRE "/.*" "" .File.Path}}/tags: []
|
||||
toc: false
|
||||
draft: true
|
||||
publishDate: "{{ now.UTC.Format "2006-01-02T15:04:05Z" }}"
|
||||
lastMod: "{{ now.UTC.Format "2006-01-02T15:04:05Z" }}"
|
||||
---
|
182
assets/css/classic-layout.scss
Normal file
182
assets/css/classic-layout.scss
Normal file
@ -0,0 +1,182 @@
|
||||
/*
|
||||
Classic view: header, main and footer block. Aside column is possible.
|
||||
Details depend on section.
|
||||
*/
|
||||
.classic-layout-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100%;
|
||||
header,
|
||||
footer {
|
||||
padding: $base-margin-y $base-margin-x;
|
||||
.content {
|
||||
max-width: $base-width;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
header {
|
||||
background: linear-gradient(
|
||||
135deg,
|
||||
$bg-accent-color-light 0%,
|
||||
$bg-accent-color-dark 100%
|
||||
);
|
||||
.content {
|
||||
& > :last-child {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
main {
|
||||
flex: 1 0 auto;
|
||||
}
|
||||
footer {
|
||||
flex-shrink: 0;
|
||||
.content {
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* section specific - list of classic */
|
||||
.classic-layout-container main .content.list {
|
||||
padding: $base-margin-y $base-margin-x;
|
||||
.main-container {
|
||||
.list-container {
|
||||
max-width: $base-width;
|
||||
margin: 0 auto;
|
||||
ul {
|
||||
padding-left: 1rem;
|
||||
}
|
||||
.list-item-container {
|
||||
margin: 0.2rem 0;
|
||||
.list-item-a-wrapper {
|
||||
text-decoration: none;
|
||||
.list-item {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
padding: 0.5rem 0 0.5rem 0.5rem;
|
||||
line-height: 1.5;
|
||||
.summary,
|
||||
.pub-date {
|
||||
color: $fg-color-dark;
|
||||
}
|
||||
.title {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.paginator {
|
||||
margin: $base-margin-y 0 0 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* section specific - single of classic */
|
||||
.classic-layout-container header .content.post {
|
||||
.pub-date {
|
||||
color: $fg-color-semitransp;
|
||||
margin: 1em 0;
|
||||
}
|
||||
}
|
||||
.classic-layout-container main .content.post {
|
||||
.nav-block {
|
||||
.toc-title {
|
||||
text-align: center;
|
||||
margin-top: $base-margin-y;
|
||||
}
|
||||
nav {
|
||||
overflow-wrap: break-word;
|
||||
overflow-y: auto;
|
||||
ul {
|
||||
padding: 0 0 0 1rem; // 1rem is the browser defined bullet offset
|
||||
}
|
||||
}
|
||||
}
|
||||
.main-container {
|
||||
margin: $base-margin-y $base-margin-x;
|
||||
}
|
||||
}
|
||||
@mixin media--classic-main-content-post_1col {
|
||||
.classic-layout-container main .content.post {
|
||||
.nav-block {
|
||||
nav {
|
||||
max-height: 50vh;
|
||||
background-color: $bg-accent-color-dark;
|
||||
padding: $base-margin-y $base-margin-x;
|
||||
border: 2px solid $bg-accent-color-light;
|
||||
}
|
||||
}
|
||||
.main-container {
|
||||
margin: $base-margin-y * 2 $base-margin-x $base-margin-y $base-margin-x;
|
||||
}
|
||||
}
|
||||
}
|
||||
@mixin media--classic-main-content-post_2col {
|
||||
.classic-layout-container main .content.post {
|
||||
display: flex;
|
||||
.aside-container {
|
||||
display: flex;
|
||||
.nav-block {
|
||||
margin: $base-margin-y 0 0 $base-margin-x;
|
||||
max-width: 20.5rem;
|
||||
min-width: 0;
|
||||
nav {
|
||||
padding: 0.5rem 0.5rem 0.5rem 0;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
max-height: 100vh;
|
||||
scrollbar-width: thin;
|
||||
&,
|
||||
a {
|
||||
color: $fg-color-dark;
|
||||
}
|
||||
a:hover {
|
||||
color: $fg-color;
|
||||
}
|
||||
}
|
||||
scrollbar-color: transparent transparent;
|
||||
&:hover {
|
||||
scrollbar-color: rgba($fg-color-dark, 0.6) transparent;
|
||||
}
|
||||
}
|
||||
}
|
||||
.main-container {
|
||||
margin: $base-margin-y $base-margin-x;
|
||||
article {
|
||||
max-width: $base-width;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@mixin media--classic-main-content-post-2col_narrow {
|
||||
.classic-layout-container main .content.post {
|
||||
.aside-container {
|
||||
min-width: 0;
|
||||
flex: 0 1 auto;
|
||||
}
|
||||
.main-container {
|
||||
min-width: 0;
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
}
|
||||
}
|
||||
@mixin media--classic-main-content-post-2col_wide {
|
||||
.classic-layout-container main .content.post {
|
||||
&::after {
|
||||
content: "";
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
}
|
||||
.aside-container {
|
||||
min-width: 0;
|
||||
flex: 1;
|
||||
}
|
||||
.main-container {
|
||||
min-width: 0;
|
||||
flex: 0 1 $base-width;
|
||||
}
|
||||
}
|
||||
}
|
150
assets/css/home-layout.scss
Normal file
150
assets/css/home-layout.scss
Normal file
@ -0,0 +1,150 @@
|
||||
.home-layout-container {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
.content.home {
|
||||
flex: 0 0 100%;
|
||||
margin: auto 0;
|
||||
.about-container {
|
||||
background: linear-gradient(
|
||||
135deg,
|
||||
$bg-accent-color-light 0%,
|
||||
$bg-accent-color-dark 100%
|
||||
);
|
||||
padding: $base-margin-y $base-margin-x;
|
||||
}
|
||||
.bottom-container {
|
||||
margin: $base-margin-y $base-margin-x;
|
||||
.bottom-block {
|
||||
max-width: $base-width;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.home-layout-container .content.home .about-block {
|
||||
max-width: $base-width;
|
||||
margin: 0 auto;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
flex-direction: row-reverse;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: $base-margin-y $base-margin-x;
|
||||
.info-container {
|
||||
flex: 1;
|
||||
h1 {
|
||||
text-align: center;
|
||||
margin-top: 0;
|
||||
}
|
||||
.pgp {
|
||||
margin: 1em 0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
column-gap: 0.8rem;
|
||||
.icon {
|
||||
height: 1.5rem;
|
||||
width: 1.5rem;
|
||||
color: $fg-color-semitransp;
|
||||
&:hover {
|
||||
color: $fg-accent-color;
|
||||
}
|
||||
}
|
||||
.text {
|
||||
color: $fg-color-dark;
|
||||
}
|
||||
}
|
||||
.links {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
column-gap: 1rem;
|
||||
.icon {
|
||||
height: 2rem;
|
||||
width: 2rem;
|
||||
color: $fg-color-semitransp;
|
||||
&:hover {
|
||||
color: $fg-accent-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.image-container {
|
||||
flex: 0 1 30%;
|
||||
img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
background: rgba(#000, 0.2);
|
||||
border-radius: 0.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.home-layout-container .content.home .section-list {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem;
|
||||
.section-item {
|
||||
white-space: nowrap;
|
||||
text-decoration: none;
|
||||
&:hover {
|
||||
color: $fg-color;
|
||||
border: 1px solid $fg-accent-color;
|
||||
}
|
||||
display: block;
|
||||
flex: 1 0 30%;
|
||||
border: 1px solid $fg-color-semitransp;
|
||||
border-radius: 1rem;
|
||||
text-align: center;
|
||||
padding: 1rem;
|
||||
.icon {
|
||||
height: 2.5rem;
|
||||
width: 2.5rem;
|
||||
vertical-align: middle;
|
||||
color: $fg-color-semitransp;
|
||||
}
|
||||
.label {
|
||||
font-size: 1.3rem;
|
||||
vertical-align: middle;
|
||||
margin: 0 0 0 0.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.home-layout-container .content.home .notice {
|
||||
margin: $base-margin-y 0 0 0;
|
||||
color: $fg-color-semitransp;
|
||||
}
|
||||
|
||||
@mixin media--home-content-about_vert_top {
|
||||
.home-layout-container .content.home .about-block {
|
||||
.image-container {
|
||||
flex-basis: 10rem;
|
||||
}
|
||||
.info-container {
|
||||
flex-basis: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
@mixin media--home-content-about_vert_middle {
|
||||
.home-layout-container {
|
||||
.content.home {
|
||||
.about-container {
|
||||
padding: $base-margin-y * 2 $base-margin-x;
|
||||
}
|
||||
}
|
||||
}
|
||||
.home-layout-container .content.home .section-list {
|
||||
.section-item .label {
|
||||
font-size: 1.6rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
@mixin media--home-content-about_vert_middle_wide {
|
||||
.home-layout-container .content.home .section-list {
|
||||
.section-item .label {
|
||||
font-size: 1.8rem;
|
||||
}
|
||||
}
|
||||
}
|
208
assets/css/index.scss
Normal file
208
assets/css/index.scss
Normal file
@ -0,0 +1,208 @@
|
||||
$bg-color: #0d1117;
|
||||
$fg-color: #fff;
|
||||
$fg-color-dark: #b8bcc1;
|
||||
$fg-color-semitransp: rgba(#fff, 0.55);
|
||||
$bg-accent-color-dark: #020030;
|
||||
$bg-accent-color-light: #510079;
|
||||
$fg-accent-color: #98f;
|
||||
|
||||
$base-margin-x: 1rem;
|
||||
$base-margin-y: 1rem;
|
||||
$base-width: 50rem;
|
||||
$base-font-size: 16px;
|
||||
|
||||
/* If style is modified in a certain context, other uses must not inherit from user agent stylesheet */
|
||||
|
||||
/* elements */
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
/* prettier-ignore */
|
||||
html,body,ul,ol,li,blockquote,pre,hr {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
/* prettier-ignore */
|
||||
h1,h2,h3,h4,h5,h6 {
|
||||
margin: 0.5em 0;
|
||||
padding: 0;
|
||||
}
|
||||
html {
|
||||
font-size: 16px;
|
||||
height: 100%;
|
||||
scroll-behavior: smooth;
|
||||
scrollbar-color: rgba($fg-accent-color, 0.6) transparent;
|
||||
line-height: 1.3;
|
||||
}
|
||||
body {
|
||||
height: 100%;
|
||||
background-color: $bg-color;
|
||||
color: $fg-color;
|
||||
}
|
||||
a {
|
||||
color: $fg-color;
|
||||
&:hover {
|
||||
color: $fg-accent-color;
|
||||
}
|
||||
}
|
||||
p {
|
||||
margin: 1em 0;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* generic */
|
||||
.paginator {
|
||||
text-align: center;
|
||||
.button {
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
padding: 0.2rem 0;
|
||||
min-width: 2rem;
|
||||
text-decoration: none;
|
||||
background: $bg-accent-color-dark;
|
||||
&.current {
|
||||
background: $bg-accent-color-light;
|
||||
}
|
||||
}
|
||||
}
|
||||
.taxo-list {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 0.5rem;
|
||||
margin: 1em 0;
|
||||
.button {
|
||||
display: inline-block;
|
||||
padding: 0.1rem 1rem;
|
||||
border: 1px solid $fg-color-semitransp;
|
||||
border-radius: 0.25rem;
|
||||
text-decoration: none;
|
||||
&:hover {
|
||||
border: 1px solid $fg-accent-color;
|
||||
color: $fg-color;
|
||||
}
|
||||
}
|
||||
}
|
||||
.icon {
|
||||
display: inline-block;
|
||||
svg {
|
||||
height: 100%;
|
||||
}
|
||||
}
|
||||
.icon-a-wrapper {
|
||||
// if icon is inside link, eliminate inline line-height artifacts
|
||||
display: inline-block;
|
||||
.icon {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
@import "classic-layout.scss";
|
||||
@import "home-layout.scss";
|
||||
|
||||
/* markdown */
|
||||
article {
|
||||
overflow-wrap: break-word;
|
||||
& > :first-child {
|
||||
margin-top: $base-margin-y !important;
|
||||
}
|
||||
pre {
|
||||
background: $bg-accent-color-dark !important;
|
||||
overflow-x: auto;
|
||||
padding: 1rem;
|
||||
font-size: 0.875rem;
|
||||
border: 1px solid $bg-accent-color-light;
|
||||
margin: 1em 0;
|
||||
scrollbar-color: rgba($fg-accent-color, 0.2) transparent;
|
||||
&:hover {
|
||||
scrollbar-color: rgba($fg-accent-color, 0.6) transparent;
|
||||
}
|
||||
transition: 0.1s all;
|
||||
}
|
||||
h2 code,
|
||||
p code,
|
||||
li code {
|
||||
color: $fg-accent-color;
|
||||
font-weight: bold;
|
||||
}
|
||||
p img,
|
||||
li img {
|
||||
width: 100%;
|
||||
border: 1px solid $bg-accent-color-light;
|
||||
}
|
||||
blockquote {
|
||||
border-left: 0.5rem solid $bg-accent-color-light;
|
||||
background: $bg-accent-color-dark;
|
||||
padding: 0.5rem;
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
margin: 0.5em 0;
|
||||
}
|
||||
ul,
|
||||
ol {
|
||||
padding-left: 2rem;
|
||||
li {
|
||||
margin: 0.5em 0;
|
||||
line-height: 1.5;
|
||||
}
|
||||
}
|
||||
& > ul,
|
||||
ol {
|
||||
margin: 1em 0;
|
||||
}
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin: 1.5em 0 0.5em 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* media */
|
||||
@mixin screen-w($mode, $rem1, $rem2: "") {
|
||||
@if $mode== "less" {
|
||||
@media screen and(max-width: ($rem1 / 1rem * $base-font-size - 0.02px)) {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@if $mode== "more" {
|
||||
@media screen and(min-width: ($rem1 / 1rem * $base-font-size)) {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
@if $mode== "between" {
|
||||
@media screen and(min-width: ($rem1 / 1rem * $base-font-size)) and (max-width: ($rem2 / 1rem * $base-font-size - 0.02px)) {
|
||||
@content;
|
||||
}
|
||||
}
|
||||
}
|
||||
$base-width-with-margin: $base-width + $base-margin-x * 2;
|
||||
$post-2col-nav-block-max-width: 20.5rem + 1rem + 0.5rem;
|
||||
@include screen-w("less", 35rem + $base-margin-x * 2) {
|
||||
@include media--home-content-about_vert_top();
|
||||
}
|
||||
@include screen-w("more", 35rem + $base-margin-x * 2) {
|
||||
@include media--home-content-about_vert_middle();
|
||||
}
|
||||
@include screen-w("less", $base-width-with-margin) {
|
||||
@include media--classic-main-content-post_1col();
|
||||
}
|
||||
@include screen-w("more", $base-width-with-margin) {
|
||||
@include media--classic-main-content-post_2col();
|
||||
@include media--home-content-about_vert_middle_wide();
|
||||
}
|
||||
@include screen-w(
|
||||
"between",
|
||||
$base-width-with-margin,
|
||||
$base-width-with-margin + $post-2col-nav-block-max-width * 2 + 5rem
|
||||
) {
|
||||
@include media--classic-main-content-post_2col_narrow();
|
||||
}
|
||||
@include screen-w(
|
||||
"more",
|
||||
$base-width-with-margin + $post-2col-nav-block-max-width * 2 + 5rem
|
||||
) {
|
||||
@include media--classic-main-content-post_2col_wide();
|
||||
}
|
1
assets/icons/solid/download.svg
Normal file
1
assets/icons/solid/download.svg
Normal file
@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.5.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc. --><path d="M288 32c0-17.7-14.3-32-32-32s-32 14.3-32 32V274.7l-73.4-73.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3l128 128c12.5 12.5 32.8 12.5 45.3 0l128-128c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L288 274.7V32zM64 352c-35.3 0-64 28.7-64 64v32c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V416c0-35.3-28.7-64-64-64H346.5l-45.3 45.3c-25 25-65.5 25-90.5 0L165.5 352H64zm368 56a24 24 0 1 1 0 48 24 24 0 1 1 0-48z"/></svg>
|
After Width: | Height: | Size: 697 B |
4
init/content_list_index.md
Normal file
4
init/content_list_index.md
Normal file
@ -0,0 +1,4 @@
|
||||
---
|
||||
linkTitle: "name"
|
||||
Title: "Long name"
|
||||
---
|
21
init/content_root_index.md
Normal file
21
init/content_root_index.md
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
linkTitle: home
|
||||
title:
|
||||
description:
|
||||
image:
|
||||
link:
|
||||
ratio: 1/1 # x/y
|
||||
pgp:
|
||||
fingerprint:
|
||||
link:
|
||||
contacts:
|
||||
- link:
|
||||
icon:
|
||||
# ...
|
||||
sections:
|
||||
- name:
|
||||
link:
|
||||
icon:
|
||||
# ...
|
||||
notice:
|
||||
---
|
24
init/hugo.yaml
Normal file
24
init/hugo.yaml
Normal file
@ -0,0 +1,24 @@
|
||||
theme: yrzam
|
||||
|
||||
# SITE INFO
|
||||
baseURL:
|
||||
title:
|
||||
languageCode:
|
||||
taxonomies:
|
||||
# Create these per each section&taxo, replacing section
|
||||
# with section name and taxo with taxonomy name
|
||||
section_taxo: section/taxo
|
||||
|
||||
# SITE SETTINGS
|
||||
params:
|
||||
dateFormat: "2006-01-02T15:04:05Z"
|
||||
dateFormatShort: "2006-01-02"
|
||||
paginationAdjacentLinks: 2
|
||||
paginate: 50
|
||||
|
||||
# GENERATOR SETTINGS
|
||||
capitalizeListTitles: false
|
||||
disableHugoGeneratorInject: true
|
||||
disableKinds: [RSS, sitemap, taxonomy]
|
||||
minify:
|
||||
minifyOutput: false
|
7
layouts/404.html
Normal file
7
layouts/404.html
Normal file
@ -0,0 +1,7 @@
|
||||
{{ define "header" }}
|
||||
<div class="content">
|
||||
{{ partial "page_path.html" . }}
|
||||
<h1>Not found</h1>
|
||||
<p>Page has been deleted or did not exist.</p>
|
||||
</div>
|
||||
{{ end }}
|
29
layouts/_default/baseof.html
Normal file
29
layouts/_default/baseof.html
Normal file
@ -0,0 +1,29 @@
|
||||
<!doctype html>
|
||||
<html lang="{{ .Site.LanguageCode }}">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<!-- prettier-ignore -->
|
||||
<title>{{ if not .IsHome }}{{ .Title }} - {{ end }}{{ .Site.Title }}</title>
|
||||
{{ $opts := dict "transpiler" "libsass" "targetPath" "style.css" }}
|
||||
{{ with resources.Get "css/index.scss" | toCSS $opts | minify | fingerprint }}
|
||||
<link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" />
|
||||
{{ end }}
|
||||
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
|
||||
</head>
|
||||
<body>
|
||||
{{ block "body" . }}
|
||||
<div class="classic-layout-container">
|
||||
<header>
|
||||
{{ block "header" . }}{{ end }}
|
||||
</header>
|
||||
<main>
|
||||
{{ block "main" . }}{{ end }}
|
||||
</main>
|
||||
<footer>
|
||||
{{ block "footer" . }}{{ end }}
|
||||
</footer>
|
||||
</div>
|
||||
{{ end }}
|
||||
</body>
|
||||
</html>
|
42
layouts/_default/index.html
Normal file
42
layouts/_default/index.html
Normal file
@ -0,0 +1,42 @@
|
||||
{{ define "body" }}
|
||||
<div class="home-layout-container">
|
||||
<div class="content home">
|
||||
<div class="about-container">
|
||||
<div class="about-block">
|
||||
<div class="image-container">
|
||||
<img
|
||||
src="{{ .Params.image.link }}"
|
||||
{{ print "style" "=" "\"" "aspect-ratio:" .Params.image.ratio "\"" | safeHTMLAttr }}
|
||||
/>
|
||||
</div>
|
||||
<div class="info-container">
|
||||
<h1>{{ .Title }}</h1>
|
||||
<p>{{ .Description }}</p>
|
||||
<div class="pgp">
|
||||
<a href="{{ .Params.pgp.link }}" class="icon-a-wrapper">{{ partial "icon.html" "solid/download" }}</a>
|
||||
<span class="text">{{ .Params.pgp.fingerprint }}</span>
|
||||
</div>
|
||||
<div class="links">
|
||||
{{- range .Params.contacts -}}
|
||||
<a href="{{ .link }}" class="icon-a-wrapper">{{- partial "icon.html" .icon -}}{{- print "" -}}</a>
|
||||
{{- end -}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="bottom-container">
|
||||
<div class="bottom-block">
|
||||
<div class="section-list">
|
||||
{{- range .Params.sections -}}
|
||||
<a href="{{ .link }}" class="section-item">
|
||||
{{ partial "icon.html" .icon }}
|
||||
<span class="label">{{ .name }}</span>
|
||||
</a>
|
||||
{{- end -}}
|
||||
</div>
|
||||
<div class="notice">{{ .Params.notice }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
40
layouts/_default/list.html
Normal file
40
layouts/_default/list.html
Normal file
@ -0,0 +1,40 @@
|
||||
{{- define "header" -}}
|
||||
<div class="content">
|
||||
{{ partial "page_path.html" . }}
|
||||
{{ if .Title }}<h1>{{ .Title }}</h1>{{ end }}
|
||||
{{ partial "taxo_of_list.html" . }}
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
{{- define "main" -}}
|
||||
<div class="content list">
|
||||
<div class="main-container">
|
||||
<nav class="list-container">
|
||||
<ul>
|
||||
{{ range .Paginator.Pages }}
|
||||
<li class="list-item-container">
|
||||
<a href="{{ .RelPermalink }}" class="list-item-a-wrapper">
|
||||
<div class="list-item">
|
||||
<div class="line-1">
|
||||
<span class="pub-date">[{{ .PublishDate.Format .Site.Params.dateFormatShort }}]</span>
|
||||
<span class="title">{{ .Title }}</span>
|
||||
</div>
|
||||
<div class="summary">
|
||||
{{ .Description }}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
{{ partial "pagination.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
{{ define "footer" }}
|
||||
<!--div class="content">
|
||||
<a href="">subscribe</a>
|
||||
</div-->
|
||||
{{ end }}
|
37
layouts/_default/single.html
Normal file
37
layouts/_default/single.html
Normal file
@ -0,0 +1,37 @@
|
||||
{{- define "header" -}}
|
||||
<div class="content post">
|
||||
{{ partial "page_path.html" . }}
|
||||
{{ if .Title }}<h1>{{ .Title }}</h1>{{ end }}
|
||||
{{ if .Description }}<p>{{ .Description }}</p>{{ end }}
|
||||
{{ partial "taxo_of_single.html" . }}
|
||||
<div class="pub-date">
|
||||
mtime={{ .Lastmod.Format .Site.Params.dateFormat }}
|
||||
archived={{ default false .Params.archived }}
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
{{- define "main" -}}
|
||||
<div class="content post">
|
||||
<div class="aside-container">
|
||||
{{ if .Param "toc" }}
|
||||
<div class="nav-block">
|
||||
<h3 class="toc-title">TABLE OF CONTENTS</h3>
|
||||
{{ .TableOfContents }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="main-container">
|
||||
<article>
|
||||
{{ .Content }}
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
{{- define "footer" -}}
|
||||
<!--div class="content post">
|
||||
<a href="">download</a> |
|
||||
<a href="{{ relURL "/verification/" }}">verify</a>
|
||||
</div-->
|
||||
{{- end -}}
|
33
layouts/_default/taxonomy.html
Normal file
33
layouts/_default/taxonomy.html
Normal file
@ -0,0 +1,33 @@
|
||||
{{- define "header" -}}
|
||||
<div class="content">
|
||||
{{ partial "page_path.html" . }}
|
||||
<h1>{{ ($.Site.GetPage (replaceRE "/.*?$" "" .Data.Plural )).Title }}: {{ .Title }}</h1>
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
{{- define "main" -}}
|
||||
<div class="content list">
|
||||
<div class="main-container">
|
||||
<nav class="list-container">
|
||||
<ul>
|
||||
{{ range .Paginator.Pages }}
|
||||
<li class="list-item-container">
|
||||
<a href="{{ .RelPermalink }}" class="list-item-a-wrapper">
|
||||
<div class="list-item">
|
||||
<div class="line-1">
|
||||
<span class="pub-date">[{{ .PublishDate.Format .Site.Params.dateFormatShort }}]</span>
|
||||
<span class="title">{{ .Title }}</span>
|
||||
</div>
|
||||
<div class="summary">
|
||||
{{ .Description }}
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
{{ partial "pagination.html" . }}
|
||||
</div>
|
||||
</div>
|
||||
{{- end -}}
|
7
layouts/partials/icon.html
Normal file
7
layouts/partials/icon.html
Normal file
@ -0,0 +1,7 @@
|
||||
<span class="icon">
|
||||
{{- $fname:=print "assets/icons/" . ".svg" -}}
|
||||
{{- $path:="<path" -}}
|
||||
{{- $fill:="<path fill=\"currentColor\"" -}}
|
||||
{{- replace (readFile $fname) $path $fill | safeHTML -}}
|
||||
</span>
|
||||
{{- /**/ -}}
|
16
layouts/partials/page_path.html
Normal file
16
layouts/partials/page_path.html
Normal file
@ -0,0 +1,16 @@
|
||||
<nav class="page-path">
|
||||
{{- range .Ancestors.Reverse -}}
|
||||
{{- if compare.Ne .Kind "taxonomy" -}}
|
||||
<a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
||||
{{- else -}}
|
||||
{{- .LinkTitle -}}
|
||||
{{- end -}}
|
||||
/
|
||||
{{- end -}}
|
||||
{{- if compare.Ne .Kind "404" -}}
|
||||
{{- .LinkTitle -}}
|
||||
{{- else -}}
|
||||
???
|
||||
{{- end -}}
|
||||
</nav>
|
||||
{{- /**/ -}}
|
57
layouts/partials/pagination.html
Normal file
57
layouts/partials/pagination.html
Normal file
@ -0,0 +1,57 @@
|
||||
{{- if gt $.Paginator.TotalPages 1 -}}
|
||||
<nav class="paginator">
|
||||
{{- $pag := .Paginator -}}
|
||||
{{- $adjacent_links := default 2 .Site.Params.paginationAdjacentLinks -}}
|
||||
|
||||
{{- $padded_adjacent_links := add $adjacent_links 2 -}}
|
||||
{{- $dynamic_range_start := sub $pag.PageNumber $padded_adjacent_links -}}
|
||||
{{- $dynamic_range_end := add $pag.PageNumber $padded_adjacent_links -}}
|
||||
{{- if gt $dynamic_range_end $pag.TotalPages -}}
|
||||
{{- $dynamic_range_start = sub $dynamic_range_start (sub $dynamic_range_end $pag.TotalPages) -}}
|
||||
{{- end -}}
|
||||
{{- if lt $dynamic_range_start 1 -}}
|
||||
{{- $dynamic_range_end = add $dynamic_range_end (sub 1 $dynamic_range_start) -}}
|
||||
{{- end -}}
|
||||
{{- $dynamic_range_start = add $dynamic_range_start (math.Min $dynamic_range_start 2) -}}
|
||||
{{- $dynamic_range_end = sub $dynamic_range_end (math.Min (sub $pag.TotalPages $dynamic_range_end -1) 2 ) -}}
|
||||
|
||||
|
||||
<!-- static start (if needed) -->
|
||||
{{- if ge $dynamic_range_start 2 -}}
|
||||
<a href="{{ $pag.First.URL }}" class="button">1</a>
|
||||
{{- if eq $dynamic_range_start 3 -}}
|
||||
<a href="{{ (index $pag.Pagers 2).URL }}" class="button">2</a>
|
||||
{{- end -}}
|
||||
{{- if gt $dynamic_range_start 3 -}}
|
||||
{{- $mid := div (add $dynamic_range_start 1) 2 | math.Floor | int -}}
|
||||
<a href="{{ (index $pag.Pagers (sub $mid 1)).URL }}" class="button">...</a>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
<!-- dynamic range - show neighbours -->
|
||||
{{- range $pag.Pagers -}}
|
||||
{{- if and (ge .PageNumber $dynamic_range_start) (le .PageNumber $dynamic_range_end) -}}
|
||||
{{- if eq . $pag -}}
|
||||
<span class="button current">{{ .PageNumber }}</span>
|
||||
{{- else -}}
|
||||
<a href="{{ .URL }}" class="button">{{ .PageNumber }}</a>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
|
||||
|
||||
<!-- static end (if needed) -->
|
||||
{{- if ge (sub $pag.TotalPages $dynamic_range_end) 1 -}}
|
||||
{{- if eq (sub $pag.TotalPages $dynamic_range_end) 2 -}}
|
||||
<a href="{{ (index $pag.Pagers (sub $pag.TotalPages 1)).URL }}" class="button">ye</a>
|
||||
{{- end -}}
|
||||
{{- if gt (sub $pag.TotalPages $dynamic_range_end) 2 -}}
|
||||
{{- $mid := div (add $pag.TotalPages $dynamic_range_end) 2 | math.Ceil | int -}}
|
||||
<a href="{{ (index $pag.Pagers (sub $mid 1)).URL }}" class="button">...</a>
|
||||
{{- end -}}
|
||||
<a href="{{ $pag.Last.URL }}" class="button">{{ $pag.TotalPages }}</a>
|
||||
{{- end -}}
|
||||
</nav>
|
||||
{{- end -}}
|
||||
{{- /**/ -}}
|
10
layouts/partials/taxo_of_list.html
Normal file
10
layouts/partials/taxo_of_list.html
Normal file
@ -0,0 +1,10 @@
|
||||
{{- range $taxonomy, $term_set := .Site.Taxonomies -}}
|
||||
{{- if hasPrefix $taxonomy (replaceRE "^/" "" $.Page.RelPermalink) -}}
|
||||
<nav class="taxo-list">
|
||||
{{ range $term_set }}
|
||||
<a class="button" href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a>
|
||||
{{- end -}}
|
||||
</nav>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- /**/ -}}
|
12
layouts/partials/taxo_of_single.html
Normal file
12
layouts/partials/taxo_of_single.html
Normal file
@ -0,0 +1,12 @@
|
||||
{{- range $taxonomy, $_ := .Site.Taxonomies -}}
|
||||
{{- if $.GetTerms $taxonomy -}}
|
||||
<nav class="taxo-list">
|
||||
{{- with $.GetTerms $taxonomy -}}
|
||||
{{- range . -}}
|
||||
<a class="button" href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
</nav>
|
||||
{{- end -}}
|
||||
{{- end -}}
|
||||
{{- /**/ -}}
|
7
layouts/shortcodes/icon.html
Normal file
7
layouts/shortcodes/icon.html
Normal file
@ -0,0 +1,7 @@
|
||||
<span class="icon">
|
||||
{{- $fname:=print "assets/icons/" ( .Get 0 ) ".svg" -}}
|
||||
{{- $path:="<path" -}}
|
||||
{{- $fill:="<path fill=\"currentColor\"" -}}
|
||||
{{- replace (readFile $fname) $path $fill | safeHTML -}}
|
||||
</span>
|
||||
{{- /**/ -}}
|
Loading…
Reference in New Issue
Block a user