1 Commits

Author SHA1 Message Date
5fb449a8e7 Add srcset to images 2021-10-21 13:35:43 -05:00
75 changed files with 608 additions and 1828 deletions

1
.gitignore vendored
View File

@ -1 +0,0 @@
.hugo_build.lock

8
.gitmodules vendored
View File

@ -1,4 +1,4 @@
[submodule "assets/jam"]
path = assets/jam
url = https://github.com/michaelampr/jam.git
branch = master
[submodule "assets/feather"]
path = assets/feather
url = https://github.com/feathericons/feather.git
branch = master

View File

@ -1,15 +0,0 @@
---
title: {{ replace .Name "-" " " | title }}
---
A short description about the author.
<!--more-->
Optionally provide more information about the author here. This part will only
show on the author page, not on the authors list page.
If you delete this section, DO NOT delete the summary separator (`<!--more-->`)
or else the summary won't be shown.

View File

@ -1,20 +1,13 @@
---
title: {{ replace .Name "-" " " | humanize }}
date: {{ .Date }}
title: {{ replace .Name "-" " " | title }}
date: {{ .Date | time.Format "2006-01-02" }}
toc: true
comments: true
draft: true
authors:
- {{ with .Site.Author.name }}{{ . }}{{ else }}John Doe{{ end }}
tags:
- awesome
series:
- Archetype
# this will be shown for the article in list pages and in the page metadata
# it can be either an image or video (this might change in the future, however)
resources:

View File

@ -1,12 +1,8 @@
---
title: {{ replace .Name "-" " " | humanize }}
title: {{ replace .Name "-" " " | title }}
menu: main
toc: true
comments: false
authors:
- {{ with .Site.Author.name }}{{ . }}{{ else }}John Doe{{ end }}
---

View File

@ -1,15 +0,0 @@
---
title: {{ replace .Name "-" " " | title }}
---
Some information about the series.
<!--more-->
Optionally provide more information about the series here. This part will only
show on the series page, not on the series list page.
If you delete this section, DO NOT delete the summary separator (`<!--more-->`)
or else the summary won't be shown.

View File

@ -1,15 +0,0 @@
---
title: {{ replace .Name "-" " " | title }}
---
A short summary of what the tag is.
<!--more-->
Optionally provide more information about the tag here. This part will only show
on the tag page, not on the tags list page.
If you delete this section, DO NOT delete the summary separator (`<!--more-->`)
or else the summary won't be shown.

View File

@ -2,86 +2,10 @@
* https://github.com/BBaoVanC/bobatheme.
*/
:root {
--background: #111;
--background-2: #222;
--background-3: #282828;
--background-4: #333;
--background-5: #444;
--text-normal: #d3d3d3;
--link-color: #4da6ff;
--figure-border: #1b5b9b;
--pagination-active-hover-text: black;
--pagination-active-background: #163b64;
--pagination-active-hover-background: #286ab2;
}
@media (prefers-color-scheme: light) {
:root {
--background: #eee;
--background-2: #ddd;
--background-3: #d8d8d8;
--background-4: #bbb;
--background-5: #aaa;
--text-normal: #000;
--link-color: #0057bf;
--figure-border: #2e7bc9;
--pagination-active-hover-text: white;
--pagination-active-background: #3977bd;
--pagination-active-hover-background: #154172;
}
}
@media print {
:root {
--background: #fff;
--background-2: #ddd;
--background-3: #d8d8d8;
--background-4: #bbb;
--background-5: #aaa;
--text-normal: #000;
--link-color: #0057bf;
--figure-border: #2e7bc9;
--pagination-active-hover-text: white;
--pagination-active-background: #3977bd;
--pagination-active-hover-background: #154172;
}
}
/* Post layout (in list pages) */
.list-page-content {
display: flex;
flex-direction: column;
gap: 40px;
}
.page-list ul,
.series-taxonomy ul {
display: flex;
flex-direction: column;
list-style: none;
padding: 0;
gap: 40px;
}
.page-list li,
.series-taxonomy li {
padding-top: 8px;
padding-left: 24px;
padding-right: 24px;
padding-bottom: 24px;
border-radius: 12px;
background-color: var(--background-2);
}
.post-series-position {
position: relative;
float: right;
opacity: .75;
.post {
margin-bottom: 40px;
}
.post-title {
@ -95,20 +19,16 @@
.post-meta-item {
margin-right: 10px;
display: inline-block;
white-space: nowrap;
}
.post-metadata {
margin-bottom: 15px;
}
.tags,
.series {
margin-top: 10px;
}
.post-media {
margin-top: 15px;
display: inline-block;
}
.post-description {
@ -121,93 +41,12 @@
/* Tags list format */
.tag-list ul {
display: flex;
list-style: none;
gap: 10px;
flex-flow: row wrap;
padding: 0;
}
.tag-list a {
background-color: var(--background-2);
padding: 8px 12px;
border-radius: 12px;
}
.tag-list a:hover {
text-decoration: none;
background-color: var(--background-4);
}
/* Series list format */
.series-pages ul {
display: flex;
gap: 10px;
flex-flow: row wrap;
list-style: none;
padding: 0;
background-color: var(--background);
padding: 8px;
border-radius: 16px;
}
.series-pages li {
flex: 1;
min-width: 49%;
}
/* Subsection formatting */
.sections {
display: flex;
flex-direction: column;
gap: 40px;
}
.section {
background-color: var(--background-2);
border-radius: 12px;
padding: 1px 25px;
}
.section:hover {
background-color: var(--background-4);
}
.section-title {
margin: 10px 0;
}
.section-anchor {
color: inherit;
}
.section-anchor:hover {
text-decoration: none;
}
.section-description {
margin-bottom: 5px;
}
.view-section {
margin-top: 5px;
}
/* Header formatting (website title and article section headers) */
.top {
margin: 20px;
}
.header a,
.section-header a {
.header a, .section-header a {
color: inherit;
}
@ -219,31 +58,11 @@
/* Content formatting */
.series-box {
background-color: var(--background-2);
padding: 8px 16px;
border-radius: 8px;
margin: 15px 0;
#table-of-contents h2 {
font-size: 20px;
}
.table-of-contents {
background-color: var(--background-2);
padding: 8px 20px;
border-radius: 8px;
margin: 10px 0;
}
.table-of-contents summary {
cursor: pointer;
}
.table-of-contents.print {
display: none;
padding: 8px 15px;
}
.content,
footer {
.content, footer {
margin: 20px;
}
@ -251,130 +70,45 @@ footer {
text-align: center;
}
#back-to-top {
position: fixed;
float: right;
bottom: 25px;
right: 25px;
background-color: var(--background-3);
border-radius: 100%;
padding: 12px;
display: none;
}
/* Navbar formatting */
.topbar {
display: flex;
flex-wrap: nowrap;
flex-direction: row;
background-color: var(--background-2);
border-radius: 8px;
margin-top: 5px;
padding: 4px;
align-items: flex-start;
.navbar, .langbar {
margin: 5px 0px;
}
.navbar {
display: flex;
}
.navbar {
flex-grow: 1;
overflow: auto;
}
.navbar a {
padding: 8px 12px;
border-radius: 12px;
}
.navbar-item:hover,
.langpicker summary:hover,
.langpicker[open] summary {
background-color: var(--background-5);
text-decoration: none;
}
.topbar .active {
font-weight: bold;
}
.langpicker {
position: relative;
white-space: nowrap;
}
.langpicker summary {
cursor: pointer;
margin-left: 24px;
padding: 8px 12px;
border-radius: 12px;
}
.langpicker .languages {
position: absolute;
margin-top: 8px;
right: 0;
background-color: var(--background-2);
border: 2px solid var(--background-4);
padding: 8px 12px;
border-radius: 8px;
list-style: none;
}
.langpicker .unavailable {
(.navbar, .langbar) h2 {
color: inherit;
text-decoration: inherit;
}
.langpicker .unavailable:hover {
cursor: not-allowed;
text-decoration: none;
.navbar-item, .langbar-item {
margin-right: 5px;
}
/* Basic elements */
html {
scroll-behavior: smooth;
}
@media screen and (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
}
body {
background-color: var(--background);
color: var(--text-normal);
background-color: #111;
color: lightgray;
font-family: "Open Sans", "Noto Sans", sans-serif;
margin: auto;
max-width: 720px;
overflow-wrap: break-word;
}
img,
video {
img, video {
max-width: 100%;
}
.post-media > figure.border img,
.post-media > figure.border video {
img:not(.noborder), video:not(.noborder) {
padding: 5px;
border: 7px solid var(--figure-border);
}
figure.border img,
figure.border video {
padding: 5px;
border: 2px solid var(--figure-border);
border: 5px solid #1b5b9b;
}
figure {
margin: auto;
display: inline-block;
}
figcaption {
@ -383,15 +117,8 @@ figcaption {
text-align: center;
}
aside {
background-color: var(--background-2);
padding: 12px 16px;
margin: 16px 0;
border-radius: 8px;
}
a {
color: var(--link-color);
color: #4da6ff;
text-decoration: inherit;
}
@ -400,12 +127,15 @@ a:hover {
}
blockquote {
border-left: 5px solid var(--background-4);
border-left: 5px solid #333;
}
blockquote p {
padding-left: 15px;
}
hr {
border-color: var(--background-5);
border-color: #444;
}
* {
@ -415,17 +145,13 @@ hr {
/* Code blocks */
.highlight {
margin: 16px 0;
}
.highlight > pre {
padding: 12px 8px;
overflow: auto;
}
:not(pre) > code {
background-color: var(--background-3);
background-color: #282828;
padding: 2px 4px;
overflow-wrap: break-word;
}
@ -444,7 +170,7 @@ code {
.icon {
width: 20px;
height: 20px;
color: var(--text-normal);
color: lightgray;
text-align: center;
display: inline;
vertical-align: middle;
@ -461,7 +187,6 @@ h1 svg.icon {
.pagination {
list-style: none;
text-align: center;
padding: 0;
}
.page-item {
@ -471,153 +196,43 @@ h1 svg.icon {
.page-link {
padding: 8px 16px;
border-radius: 5px;
color: var(--text-normal);
color: lightgray;
}
.page-item.active .page-link {
background-color: var(--pagination-active-background);
background-color: #163b64;
color: inherit;
}
.page-item.active .page-link:hover {
background-color: var(--pagination-active-hover-background);
color: var(--pagination-active-hover-text);
background-color: #2b72c0;
color: white;
}
.page-link:hover {
background-color: #444;
color: white;
text-decoration: none;
}
:not(li.disabled) > .page-link:hover {
background-color: var(--background-5);
}
li.disabled {
opacity: .5;
}
li.disabled > .page-link:hover {
cursor: not-allowed;
}
/* Breadcrumb navigation */
.breadcrumb {
margin-top: 40px;
margin-bottom: 20px;
margin-left: 20px;
}
.breadcrumb ul {
padding: 0;
list-style: none;
}
.breadcrumb li {
display: inline;
}
.breadcrumb li+li:before {
content: "»"
}
/* Previous and next page */
.prevnext {
display: flex;
margin: 20px 0;
}
.prevnext > * {
flex: 1;
white-space: nowrap;
overflow: hidden;
display: flex;
flex-direction: column;
color: inherit;
background-color: var(--background-2);
padding: 8px 16px;
}
.prevnext > a:hover {
background-color: var(--background-4);
text-decoration: none;
}
.prevnext > .prev {
text-align: left;
border-top-left-radius: 8px;
border-bottom-left-radius: 8px;
}
.prevnext > .next {
text-align: right;
border-top-right-radius: 8px;
border-bottom-right-radius: 8px;
}
.prevnext .prev-caption,
.prevnext .next-caption {
opacity: 65%;
}
.prevnext .prev-post,
.prevnext .next-post {
overflow: hidden;
text-overflow: ellipsis;
}
/* Light mode */
@media print, (prefers-color-scheme: light) {
/* Basic elements */
.section:hover {
color: inherit;
}
li.disabled {
opacity: .25;
}
}
/* Print compatibility */
@media print {
.top,
.breadcrumb,
.section-header-link,
.prevnext,
.comments {
.top, .section-header-link {
display: none;
}
* {
-webkit-print-color-adjust: exact !important;
color-adjust: exact !important;
.icon {
color: black;
}
:not(pre) > code {
background-color: lightgray;
}
body {
max-width: 100%;
}
pre {
white-space: pre-wrap;
overflow-wrap: anywhere;
}
.table-of-contents {
display: none;
}
.table-of-contents.print {
display: block;
}
#back-to-top {
display: none !important;
background-color: white;
color: black;
}
}

116
assets/css/starwars.css Normal file
View File

@ -0,0 +1,116 @@
@media screen and (max-width: 700px) {
.row {
flex-direction: column;
}
}
@media screen and (max-width: 400px) {
.navbar a {
float: none;
width: 100%;
}
}
body, html {
height: 100%;
}
body {
font-family: sans-serif;
margin: 0;
display: flex;
flex-direction: column;
}
a {
color: blue;
}
.header {
padding: 10px;
text-align: center;
background: url(../images/stars.png);
background-size: cover;
color: white;
}
.header h1 {
font-size: 50px;
font-weight: bold;
transform-origin: 50% 100%;
transform: perspective(350px) rotateX(25deg);
color: yellow;
}
.navbar {
overflow: hidden;
background-color: #999;
}
.navbar a {
float: left;
display: block;
color: white;
text-align: center;
padding: 14px 20px;
text-decoration: none;
}
/* .navbar a.right {
float: right;
} */
.navbar a:hover {
background-color: #ddd;
color: black;
}
* {
box-sizing: border-box;
}
.row {
flex: 1;
display: flex;
flex-wrap: wrap;
}
.side {
width: 25%;
background-color: lightgray;
padding: 20px;
}
.main {
width: 75%;
background-color: white;
padding: 20px;
}
.footer {
padding: 20px;
text-align: center;
background: #ddd;
}
@media (prefers-color-scheme: dark) {
body {
background-color: black;
}
a {
color: #4da6ff;
}
.navbar {
background-color: #222;
}
.navbar a {
color: lightgray;
}
.navbar a:hover {
background-color: #444;
color: white;
}
.side {
background-color: #111;
color: lightgray;
}
.main {
background-color: black;
color: lightgray;
}
.footer {
background: #222;
color: lightgray;
}
max-width: 650px;
}

View File

@ -1,96 +0,0 @@
@media print, (prefers-color-scheme: light) {
.chroma {
color: black;
}
/* Other */ .chroma .x { color: #000000 }
/* Error */ .chroma .err { color: #a40000 }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; width: auto; overflow: auto; display: block; }
/* LineHighlight */ .chroma .hl { display: block; width: 100%;background-color: #ffffcc }
/* LineNumbersTable */ .chroma .lnt { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* LineNumbers */ .chroma .ln { margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7f7f7f }
/* Keyword */ .chroma .k { color: #204a87; font-weight: bold }
/* KeywordConstant */ .chroma .kc { color: #204a87; font-weight: bold }
/* KeywordDeclaration */ .chroma .kd { color: #204a87; font-weight: bold }
/* KeywordNamespace */ .chroma .kn { color: #204a87; font-weight: bold }
/* KeywordPseudo */ .chroma .kp { color: #204a87; font-weight: bold }
/* KeywordReserved */ .chroma .kr { color: #204a87; font-weight: bold }
/* KeywordType */ .chroma .kt { color: #204a87; font-weight: bold }
/* Name */ .chroma .n { color: #000000 }
/* NameAttribute */ .chroma .na { color: #c4a000 }
/* NameBuiltin */ .chroma .nb { color: #204a87 }
/* NameBuiltinPseudo */ .chroma .bp { color: #3465a4 }
/* NameClass */ .chroma .nc { color: #000000 }
/* NameConstant */ .chroma .no { color: #000000 }
/* NameDecorator */ .chroma .nd { color: #5c35cc; font-weight: bold }
/* NameEntity */ .chroma .ni { color: #ce5c00 }
/* NameException */ .chroma .ne { color: #cc0000; font-weight: bold }
/* NameFunction */ .chroma .nf { color: #000000 }
/* NameFunctionMagic */ .chroma .fm { color: #000000 }
/* NameLabel */ .chroma .nl { color: #f57900 }
/* NameNamespace */ .chroma .nn { color: #000000 }
/* NameOther */ .chroma .nx { color: #000000 }
/* NameProperty */ .chroma .py { color: #000000 }
/* NameTag */ .chroma .nt { color: #204a87; font-weight: bold }
/* NameVariable */ .chroma .nv { color: #000000 }
/* NameVariableClass */ .chroma .vc { color: #000000 }
/* NameVariableGlobal */ .chroma .vg { color: #000000 }
/* NameVariableInstance */ .chroma .vi { color: #000000 }
/* NameVariableMagic */ .chroma .vm { color: #000000 }
/* Literal */ .chroma .l { color: #000000 }
/* LiteralDate */ .chroma .ld { color: #000000 }
/* LiteralString */ .chroma .s { color: #4e9a06 }
/* LiteralStringAffix */ .chroma .sa { color: #4e9a06 }
/* LiteralStringBacktick */ .chroma .sb { color: #4e9a06 }
/* LiteralStringChar */ .chroma .sc { color: #4e9a06 }
/* LiteralStringDelimiter */ .chroma .dl { color: #4e9a06 }
/* LiteralStringDoc */ .chroma .sd { color: #8f5902; font-style: italic }
/* LiteralStringDouble */ .chroma .s2 { color: #4e9a06 }
/* LiteralStringEscape */ .chroma .se { color: #4e9a06 }
/* LiteralStringHeredoc */ .chroma .sh { color: #4e9a06 }
/* LiteralStringInterpol */ .chroma .si { color: #4e9a06 }
/* LiteralStringOther */ .chroma .sx { color: #4e9a06 }
/* LiteralStringRegex */ .chroma .sr { color: #4e9a06 }
/* LiteralStringSingle */ .chroma .s1 { color: #4e9a06 }
/* LiteralStringSymbol */ .chroma .ss { color: #4e9a06 }
/* LiteralNumber */ .chroma .m { color: #0000cf; font-weight: bold }
/* LiteralNumberBin */ .chroma .mb { color: #0000cf; font-weight: bold }
/* LiteralNumberFloat */ .chroma .mf { color: #0000cf; font-weight: bold }
/* LiteralNumberHex */ .chroma .mh { color: #0000cf; font-weight: bold }
/* LiteralNumberInteger */ .chroma .mi { color: #0000cf; font-weight: bold }
/* LiteralNumberIntegerLong */ .chroma .il { color: #0000cf; font-weight: bold }
/* LiteralNumberOct */ .chroma .mo { color: #0000cf; font-weight: bold }
/* Operator */ .chroma .o { color: #ce5c00; font-weight: bold }
/* OperatorWord */ .chroma .ow { color: #204a87; font-weight: bold }
/* Punctuation */ .chroma .p { color: #000000; font-weight: bold }
/* Comment */ .chroma .c { color: #8f5902; font-style: italic }
/* CommentHashbang */ .chroma .ch { color: #8f5902; font-style: italic }
/* CommentMultiline */ .chroma .cm { color: #8f5902; font-style: italic }
/* CommentSingle */ .chroma .c1 { color: #8f5902; font-style: italic }
/* CommentSpecial */ .chroma .cs { color: #8f5902; font-style: italic }
/* CommentPreproc */ .chroma .cp { color: #8f5902; font-style: italic }
/* CommentPreprocFile */ .chroma .cpf { color: #8f5902; font-style: italic }
/* Generic */ .chroma .g { color: #000000 }
/* GenericDeleted */ .chroma .gd { color: #a40000 }
/* GenericEmph */ .chroma .ge { color: #000000; font-style: italic }
/* GenericError */ .chroma .gr { color: #ef2929 }
/* GenericHeading */ .chroma .gh { color: #000080; font-weight: bold }
/* GenericInserted */ .chroma .gi { color: #00a000 }
/* GenericOutput */ .chroma .go { color: #000000; font-style: italic }
/* GenericPrompt */ .chroma .gp { color: #8f5902 }
/* GenericStrong */ .chroma .gs { color: #000000; font-weight: bold }
/* GenericSubheading */ .chroma .gu { color: #800080; font-weight: bold }
/* GenericTraceback */ .chroma .gt { color: #a40000; font-weight: bold }
/* GenericUnderline */ .chroma .gl { color: #000000; text-decoration: underline }
/* TextWhitespace */ .chroma .w { color: #f8f8f8; text-decoration: underline }
}
@media (prefers-color-scheme: light) {
/* Background */ .chroma { background-color: #f8f8f8 }
}
@media print {
.chroma {
background-color: white;
}
}

1
assets/feather Submodule

Submodule assets/feather added at 734f3f5114

BIN
assets/img/stars.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Submodule assets/jam deleted from c8501b14e0

View File

@ -1,8 +0,0 @@
const backToTop = document.getElementById("back-to-top");
window.onscroll = function() {
if (document.body.scrollTop > 100 || document.documentElement.scrollTop > 100) {
backToTop.style.display = "block";
} else {
backToTop.style.display = "none";
}
}

View File

@ -1,27 +0,0 @@
markup:
highlight:
noClasses: false
lineNos: true
params:
faviconICO: favicon.ico
faviconPNG: favicon.png
readingtime: true
taxonomies:
tag: tags
author: authors
series: series
privacy:
googleAnalytics:
disable: true
twitter:
enableDNT: true
vimeo:
enableDNT: true
youtube:
privacyEnhanced: true

12
data/meses.toml Normal file
View File

@ -0,0 +1,12 @@
1 = "enero"
2 = "febrero"
3 = "marzo"
4 = "abril"
5 = "mayo"
6 = "julio"
7 = "junio"
8 = "agosto"
9 = "septiembre"
10 = "octubre"
11 = "noviembre"
12 = "diciembre"

View File

@ -1,12 +0,0 @@
1: "enero"
2: "febrero"
3: "marzo"
4: "abril"
5: "mayo"
6: "julio"
7: "junio"
8: "agosto"
9: "septiembre"
10: "octubre"
11: "noviembre"
12: "diciembre"

41
exampleSite/config.toml Normal file
View File

@ -0,0 +1,41 @@
baseURL = "https://example.com"
theme = "bobatheme"
defaultContentLanguage = "en"
author = "bbaovanc"
sectionPagesMenu = "main"
enableRobotsTXT = true
paginate = 5
enableGitInfo = true
[markup]
[markup.highlight]
noClasses = false
lineNos = true
[params]
# these are for the OpenGraph/Twitter embeds in Hugo
description = "Example website for bobatheme"
# these are for favicons in bobatheme
faviconICO = "/favicon.ico"
faviconPNG = "/favicon.png"
# show word count and/or reading time
wordcount = true
readingtime = true
# used for last update
repoURL = "https://github.com/BBaoVanC/bobatheme"
[languages]
[languages.en]
languageName = "English"
title = "Example Website"
weight = 1
[languages.es]
languageName = "Español"
title = "Sitio web ejemplo"
weight = 2
[languages.es.params]
description = "Sitio web ejemplo para bobatheme"

View File

@ -1,50 +0,0 @@
baseURL: https://example.com
theme: bobatheme
defaultContentLanguage: en
copyright: '&copy; 2021 bbaovanc <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a>'
sectionPagesMenu: main
enableRobotsTXT: true
paginate: 5
enableGitInfo: true
taxonomies:
_merge: deep
author:
name: bbaovanc
markup: # this just keeps the bobatheme markup styling
_merge: deep
params:
# these are for the OpenGraph/Twitter embeds in Hugo
description: Example website for bobatheme
# these are for favicons in bobatheme (defaults are shown here)
# faviconICO: favicon.ico
# faviconPNG: favicon.png
# show reading time (enabled by default)
# readingtime: true
# used for "View source" (unset by default)
# gitFileURL: https://github.com/BBaoVanC/bobatheme/blob/master
# gitFileIcon: github-circle
# see https://gohugo.io/about/hugo-and-gdpr/#all-privacy-settings
# you probably want to keep this default
privacy:
_merge: deep
languages:
en:
languageName: English
title: Example Website
weight: 1
es:
languageName: Español
title: Sitio web ejemplo
weight: 2
params:
description: Sitio web ejemplo para bobatheme

31
i18n/en.toml Normal file
View File

@ -0,0 +1,31 @@
[credit_comment]
other = "<!-- bobatheme is available under the MIT license at https://github.com/BBaoVanC/bobatheme. -->"
[long_date]
other = "{{ .Date.Format `January 2, 2006` }}"
[wordcount]
one = "{{ . }} word"
other = "{{ . }} words"
[readingtime]
one = "{{ . }} min"
other = "{{ . }} mins"
[read_more]
other = "Read more"
[browser_no_video_support]
other = "Your browser does not support video."
[filtering_for]
other = "Filtering for \"{{ . }}\""
[no_posts]
other = "No posts here!"
[table_of_contents]
other = "Table of Contents"

View File

@ -1,110 +0,0 @@
# Misc
credit_comment:
other: "<!-- bobatheme is available under the MIT license at https://github.com/BBaoVanC/bobatheme. -->"
table_of_contents:
other: "Table of Contents"
browser_no_video_support:
other: "Your browser does not support video."
# Meta items
long_date:
other: "{{ .Date.Format `January 2, 2006` }}"
wordcount:
one: "{{ . }} word"
other: "{{ . }} words"
readingtime:
one: "{{ . }} min"
other: "{{ . }} mins"
# Post count
no_posts:
other: "No posts here!"
post_count:
one: "{{ . }} post"
other: "{{ . }} posts"
# Navigation
read_more:
other: "Read more"
see_also:
other: "See also"
older_post:
other: "Older"
newer_post:
other: "Newer"
# ARIA labels
aria_header_link:
other: "header link"
aria_back_to_top_button:
other: "back to top button"
aria_rss_link:
other: "RSS feed link"
aria_post_meta_view_source:
other: "link to page source"
aria_post_meta_translations:
other: "translations"
aria_post_meta_tags:
other: "tags"
aria_post_meta_reading_time:
other: "reading time"
aria_post_meta_authors:
other: "authors"
aria_post_meta_series:
other: "series"
aria_breadcrumbnav:
other: "breadcrumb navigation bar"
aria_post_metadata:
other: "post metadata"
aria_author_metadata:
other: "author metadata"
aria_post_meta_date:
other: "date"
aria_post_meta_modified_date:
other: "last modified date"
aria_author_post_count:
other: "post count"
aria_author_word_count:
other: "word count"
aria_series_metadata:
other: "series metadata"
aria_navbar:
other: "navigation bar"
aria_langpicker:
other: "language picker"
aria_langpicker_list:
other: "language list"
aria_table_of_contents:
other: "table of contents"

31
i18n/es.toml Normal file
View File

@ -0,0 +1,31 @@
[credit_comment]
other = "<!-- bobatheme está disponible en GitHub basado en la licensia MIT: https://github.com/BBaoVanC/bobatheme. -->"
[long_date]
other = "{{ .Date.Day }} de {{ index .Data.meses (printf `%d` .Date.Month) }} de {{ .Date.Year }}"
[wordcount]
one = "{{ . }} palabra"
other = "{{ . }} palabras"
[readingtime]
one = "{{ . }} min"
other = "{{ . }} mins"
[read_more]
other = "Leer más"
[browser_no_video_support]
other = "Tu navegador de internet no admite video."
[filtering_for]
other = "Filtrando por \"{{ . }}\""
[no_posts]
other = "¡No hay contenido para mostrar!"
[table_of_contents]
other = "Índice"

View File

@ -1,110 +0,0 @@
# Misc
credit_comment:
other: "<!-- bobatheme está disponible en GitHub basado en la licensia MIT: https://github.com/BBaoVanC/bobatheme. -->"
table_of_contents:
other: "Índice"
browser_no_video_support:
other: "Tu navegador de internet no admite video."
# Meta items
long_date:
other: "{{ .Date.Day }} de {{ index .Data.meses (printf `%d` .Date.Month) }} de {{ .Date.Year }}"
wordcount:
one: "{{ . }} palabra"
other: "{{ . }} palabras"
readingtime:
one: "{{ . }} min"
other: "{{ . }} mins"
# Post count
no_posts:
other: "¡No hay contenido para mostrar!"
# post_count:
# one: "{{ . }} post"
# other: "{{ . }} posts"
# Navigation
read_more:
other: "Leer más"
see_also:
other: "Véase también"
older_post:
other: "Más antiguo"
newer_post:
other: "Más nuevo"
# ARIA labels
# aria_header_link:
# other: "header link"
# aria_back_to_top_button:
# other: "back to top button"
# aria_rss_link:
# other: "RSS feed link"
# aria_post_meta_view_source:
# other: "link to page source"
# aria_post_meta_translations:
# other: "translations"
# aria_post_meta_tags:
# other: "tags"
# aria_post_meta_reading_time:
# other: "reading time"
# aria_post_meta_authors:
# other: "authors"
# aria_post_meta_series:
# other: "series"
# aria_breadcrumbnav:
# other: "breadcrumb navigation bar"
# aria_post_metadata:
# other: "post metadata"
# aria_author_metadata:
# other: "author metadata"
# aria_post_meta_date:
# other: "date"
# aria_post_meta_modified_date:
# other: "last modified date"
# aria_author_post_count:
# other: "post count"
# aria_author_word_count:
# other: "word count"
# aria_series_metadata:
# other: "series metadata"
# aria_navbar:
# other: "navigation bar"
# aria_langpicker:
# other: "language picker"
# aria_langpicker_list:
# other: "language list"
# aria_table_of_contents:
# other: "table of contents"

View File

@ -1,7 +1,7 @@
<h{{ .Level }} id="{{ .Anchor | safeURL }}" class="section-header">
{{ .Text | safeHTML }}
<a href="#{{ .Anchor | safeURL }}">
<span class="section-header-link" aria-label="{{ i18n "aria_header_link" }}">
<span class="section-header-link">
{{ partial "icon.html" "link" }}
</span>
</a>

View File

@ -1,8 +1 @@
<a
href="{{ .Destination | safeURL }}"
{{ with .Title }}title="{{ . }}"{{ end }}
{{ if strings.HasPrefix .Destination "http" }}target="_blank" rel="noopener"{{ end }}
>
{{- .Text | safeHTML -}}
</a>
{{- /* This comment gets rid of the trailing newline. */ -}}
<a href="{{ .Destination | safeURL }}"{{ with .Title}}title="{{ . }}"{{ end }}{{ if strings.HasPrefix .Destination "http" }}target="_blank" rel="noopener"{{ end }}>{{ .Text | safeHTML }}</a>{{/* DO NOT REMOVE THE TRAILING NEWLINE HERE -- it prevents there from being whitespace in between the link and the next word/element (for example: if there's a period right after a link) */}}

View File

@ -1,44 +1,30 @@
{{ partial "credit.html" }}
<!DOCTYPE html>
<html lang="{{ .Language.Lang }}">
{{ partial "head.html" . }}
{{- partial "head.html" . -}}
<body>
<a id="top" aria-hidden="true"></a>
<div class="top">
{{ partial "top.html" . }}
</div>
{{ if not .IsHome }}
{{ partial "breadcrumb.html" . }}
{{ end }}
<div class="content">
{{ block "main" . }}
{{ .Content }}
{{ end }}
{{- block "main" . }}
{{ .Content }}
{{- end }}
</div>
{{ with .Site.Copyright }}
<footer>
<hr>
<small>
{{ . | safeHTML }}
</small>
</footer>
<footer>
<hr>
<small>
&copy;
{{ now.Format "2006" }}
{{ $.Site.Author.name }}
{{ . | safeHTML }}
</small>
</footer>
{{ end }}
<a id="back-to-top" href="#top" aria-label="{{ i18n "aria_back_to_top_button" }}">
{{ partial "icon.html" "chevron-up" }}
</a>
<noscript>
<style>
#back-to-top {
display: block;
}
</style>
</noscript>
</body>
</html>

View File

@ -1,31 +1,27 @@
{{ define "main" }}
<h1>
{{ with .Params.icon }}{{ partial "icon.html" . }}{{ end }}
{{ .Title | markdownify }}
{{ partial "rss-link.html" . }}
</h1>
<div class="list-page-content">
{{ with .Sections }}
<div class="sections">
{{ range . }}
{{ .Render "summary/section" }}
{{ end }}
</div>
<h1>
{{ with .Params.icon }}{{ partial "icon.html" . }}{{ end }}
{{ .Title | markdownify }}
<span class="rss-link">
{{ with .OutputFormats.Get "rss" }}
<a href="{{ .Permalink }}">{{ partial "icon.html" "rss" }}</a>
{{ end }}
</span>
</h1>
<div class="page-list">
<ul>
{{ range .Paginator.Pages }}
<li>{{ .Render "summary/post" }}</li>
{{ else }}
<div>
{{ i18n "no_posts" }}
</div>
{{ end }}
</ul>
</div>
</div>
<div class="posts">
{{ range .Paginator.Pages }}
{{ .Render "summary" }}
{{ else }}
{{ i18n "no_posts" }}
{{ end }}
</div>
{{ if gt .Paginator.TotalPages 1 }}
<div class="pagination">
{{ template "_internal/pagination.html" . }}
</div>
{{ end }}
{{ partial "pagination.html" . }}
{{ end }}

View File

@ -1,102 +1,27 @@
{{ define "main" }}
<div class="post-title">
<h1>
{{ .Title | markdownify }}
{{ if .Draft }}{{ partial "icon.html" "write" }}{{ end }}
</h1>
</div>
<div class="post-title">
<h1>
{{ .Title | markdownify }}
{{ if .Draft }}{{ partial "icon.html" "edit" }}{{ end }}
</h1>
</div>
{{ partial "post-metadata/full.html" . }}
{{ partial "post-metadata.html" . }}
{{ with (.GetTerms "series") }}
{{ $series := slice }}
{{ range . }}
{{ $series = $series | append (printf `<a href="%s">%s</a>` .Permalink .LinkTitle) }}
{{ end }}
<div class="series-box">
{{ partial "icon.html" "info" }}
{{ if gt (len $series) 1 }}
This post is part of multiple series:
{{ else }}
This post is part of a series:
{{ end }}
{{ delimit $series ", " }}
</div>
{{ end }}
{{ if .Params.Toc }}
<div class="table-of-contents" aria-label="{{ i18n "aria_table_of_contents" }}">
<details>
<summary>{{ i18n "table_of_contents" }}</summary>
{{ .TableOfContents }}
</details>
</div>
<div class="table-of-contents print">
{{ i18n "table_of_contents" }}
{{ .TableOfContents }}
</div>
{{ end }}
{{ with .Resources.GetMatch "feature" }}
<div class="post-media">
{{ partial "figure.html" (dict "src" . "border" true) }}
</div>
{{ end }}
{{ .Content }}
{{ $related := .Site.RegularPages.Related . | first 5 }}
{{ with $related }}
<div class="see-also">
<h2>{{ i18n "see_also" }}</h2>
<ul>
{{ range . }}
<li>
{{ with .Parent.Params.icon }}{{ partial "icon.html" . }}{{ end }}
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
</li>
{{ end }}
</ul>
</div>
{{ end }}
{{ if or .NextInSection .PrevInSection }}
<div class="prevnext">
{{ with .NextInSection }}
<a class="prev" href="{{ .Permalink }}">
<div class="prev-caption">
&larr; {{ i18n "newer_post" }}
</div>
<div class="prev-post">
{{ .Title | markdownify }}
</div>
</a>
{{ else }}
<div class="prev"></div>
{{ end }}
{{ with .PrevInSection }}
<a class="next" href="{{ .Permalink }}">
<div class="next-caption">
{{ i18n "older_post" }} &rarr;
</div>
<div class="next-post">
{{ .Title | markdownify }}
</div>
</a>
{{ else }}
<div class="next"></div>
{{ end }}
</div>
{{ end }}
{{ if .Params.comments }}
<div class="comments">
{{ partial "comments.html" . }}
</div>
{{ end }}
{{ if .Params.Toc }}
<div id="table-of-contents">
<h2>{{ i18n "table_of_contents" }}</h2>
{{ .TableOfContents }}
</div>
{{ end }}
<hr>
{{ with .Resources.GetMatch "feature" }}
<div class="post-media">
{{ partial "figure.html" . }}
</div>
{{ end }}
{{ .Content }}
{{ end }}

View File

@ -0,0 +1,33 @@
<div class="post">
<h2 class="post-title">
{{ range .Params.categories }}
<code>{{ . }}</code>
{{ end }}
{{ with .Parent.Params.icon }}{{ partial "icon.html" . }}{{ end }}
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
{{ if .Draft }}{{ partial "icon.html" "edit" }}{{ end }}
</h2>
{{ partial "post-metadata.html" . }}
{{ with .Resources.GetMatch "feature" }}
<div class="post-media">
{{ partial "figure.html" . }}
</div>
{{ end }}
<div class="post-description">
{{ if .Description }}
<p>
{{ .Description | markdownify }}
</p>
{{ else }}
{{ .Summary }}
{{ end }}
</div>
<div class="readmore">
<a href="{{ .Permalink }}">{{ i18n "read_more" }} &rarr;</a>
</div>
</div>

View File

@ -1,16 +0,0 @@
<div class="post">
<h2 class="post-title">
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
{{ if .Draft }}{{ partial "icon.html" "write" }}{{ end }}
</h2>
{{ partial "post-metadata/author.html" . }}
<div class="post-description">
{{ partial "description-or-summary.html" . }}
</div>
<div class="readmore">
<a href="{{ .Permalink }}">{{ i18n "read_more" }} &rarr;</a>
</div>
</div>

View File

@ -1,23 +0,0 @@
<div class="post">
<h2 class="post-title">
{{ with .Parent.Params.icon }}{{ partial "icon.html" . }}{{ end }}
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
{{ if .Draft }}{{ partial "icon.html" "write" }}{{ end }}
</h2>
{{ partial "post-metadata/short.html" . }}
{{ with .Resources.GetMatch "feature" }}
<div class="post-media">
{{ partial "figure.html" (dict "src" . "border" true) }}
</div>
{{ end }}
<div class="post-description">
{{ partial "description-or-summary.html" . }}
</div>
<div class="readmore">
<a href="{{ .Permalink }}">{{ i18n "read_more" }} &rarr;</a>
</div>
</div>

View File

@ -1,12 +0,0 @@
<a class="section-anchor" href="{{ .Permalink }}">
<div class="section">
<h2 class="section-title">
{{ with .Params.icon }}{{ partial "icon.html" . }}{{ end }}
{{ .Title | markdownify }}
</h2>
<div class="section-description">
{{ partial "description-or-summary.html" . }}
</div>
</div>
</a>

View File

@ -1,26 +0,0 @@
<div class="post">
<h2 class="post-title">
{{ with .Parent.Params.icon }}{{ partial "icon.html" . }}{{ end }}
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
{{ if .Draft }}{{ partial "icon.html" "write" }}{{ end }}
</h2>
{{ partial "post-metadata/series.html" . }}
<div class="post-description">
{{ partial "description-or-summary.html" . }}
</div>
<div class="series-pages">
<ul>
{{ $i := 0 }}
{{ $total := len .Data.Pages }}
{{ range .Data.Pages.Reverse }}
{{ $i = add 1 $i }}
{{ .Scratch.Set "series_position" $i }}
{{ .Scratch.Set "series_total" $total }}
<li>{{ .Render "summary/series_post" }}</li>
{{ end }}
</ul>
</div>
</div>

View File

@ -1,29 +0,0 @@
<div class="post">
<div class="post-series-position">
{{ if .Scratch.Get "series_position" }}
({{ .Scratch.Get "series_position" }}/{{ .Scratch.Get "series_total" }})
{{ end }}
</div>
<h2 class="post-title">
{{ with .Parent.Params.icon }}{{ partial "icon.html" . }}{{ end }}
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
{{ if .Draft }}{{ partial "icon.html" "write" }}{{ end }}
</h2>
{{ partial "post-metadata/short.html" . }}
{{ with .Resources.GetMatch "feature" }}
<div class="post-media">
{{ partial "figure.html" (dict "src" . "border" true) }}
</div>
{{ end }}
<div class="post-description">
{{ partial "description-or-summary.html" . }}
</div>
<div class="readmore">
<a href="{{ .Permalink }}">{{ i18n "read_more" }} &rarr;</a>
</div>
</div>

View File

@ -1,14 +0,0 @@
{{ define "main" }}
<h1>
{{ partial "icon.html" "user-circle" }}
{{ .Title | markdownify }}
</h1>
<div class="page-list">
<ul>
{{ range .Paginator.Pages }}
<li>{{ .Render "summary/author" }}</li>
{{ end }}
</ul>
</div>
{{ end }}

View File

@ -1,25 +0,0 @@
{{ define "main" }}
<h1>
{{ partial "icon.html" "user-circle" }}
{{ .Title | markdownify }}
{{ partial "rss-link.html" . }}
</h1>
{{ partial "post-metadata/author.html" . }}
{{ .Content }}
<div class="page-list">
<ul>
{{ range .Paginator.Pages }}
<li>{{ .Render "summary/post" }}</li>
{{ else }}
<div>
{{ i18n "no_posts" }}
</div>
{{ end }}
</ul>
</div>
{{ partial "pagination.html" . }}
{{ end }}

View File

@ -1,19 +0,0 @@
<nav class="breadcrumb" aria-label="{{ i18n "aria_breadcrumbnav" }}">
<ul>
{{ template "breadcrumbnav" (dict "p1" . "p2" .) }}
</ul>
</nav>
{{ define "breadcrumbnav" }}
{{ if .p1.Parent }}
{{ template "breadcrumbnav" (dict "p1" .p1.Parent "p2" .p2 ) }}
{{ else if not .p1.IsHome }}
{{ template "breadcrumbnav" (dict "p1" .p1.Site.Home "p2" .p2 ) }}
{{ end }}
<li{{ if eq .p1 .p2 }} class="active"{{ end }}>
{{ if eq .p1 .p2 }}
{{ .p1.Title | markdownify }}
{{ else }}
<a href="{{ .p1.Permalink }}">{{ .p1.Title | markdownify }}</a>
{{ end }}
</li>
{{ end }}

View File

@ -1,4 +0,0 @@
{{/*
Create a file named `layouts/partials/comments.html` at your site root to
add a comment system. Page variables are passed.
*/}}

View File

@ -1,7 +0,0 @@
{{ with .Description }}
<p>{{ . | markdownify }}</p>
{{ else }}
{{ with .Summary }}
{{ . }}
{{ end }}
{{ end }}

View File

@ -1,28 +1,41 @@
{{ $hidecaption := index . "hidecaption" }}
<figure>
{{ $media := . | resources.Fingerprint "sha512" }}
{{ if index . "noborder" }}
<figure>
{{ else }}
<figure class="border">
{{ end }}
{{ if eq .MediaType.MainType "image" }}
{{ with index . "src" }}
{{ $media := . }}
{{ if eq .MediaType.MainType "image" }}
<img src="{{ $media.Permalink }}" alt="{{ $media.Title }}" />
{{ else if eq .MediaType.MainType "video" }}
<video controls>
<source src="{{ $media.Permalink }}" alt="{{ $media.Title }}">
{{ i18n "browser_no_video_support" }}
</video>
{{ end }}
{{ $tiny := $media.Resize "500x" }}
{{ $small := $media.Resize "800x" }}
{{ $medium := $media.Resize "1200x" }}
{{ $large := $media.Resize "1500x" }}
<img src="{{ $media.Permalink }}"
alt="{{ $media.Title }}"
srcset='
{{ if ge $media.Width "500" }}
{{ $tiny.RelPermalink}} 500w,
{{ end }}
{{ if ge $media.Width "800" }}
{{ $small.RelPermalink }} 800w,
{{ end }}
{{ if ge $media.Width "1200" }}
{{ $medium.RelPermalink }} 1200w,
{{ end }}
{{ if ge $media.Width "1500" }}
{{ $large.RelPermalink }} 1500w,
{{ end }}
{{ $media.RelPermalink }} {{ $media.Width }}w
'
/>
{{ if not $hidecaption }}
{{ with $media.Title }}
<figcaption>
{{ . | markdownify }}
</figcaption>
{{ end }}
{{ end }}
{{ else if eq .MediaType.MainType "video" }}
<video controls>
<source src="{{ $media.Permalink }}" alt="{{ $media.Title }}">
{{ i18n "browser_no_video_support" }}
</video>
{{ end }}
{{ with $media.Title }}
<figcaption>
{{ . | markdownify }}
</figcaption>
{{ end }}
</figure>

View File

@ -4,37 +4,32 @@
{{ hugo.Generator }}
{{ with resources.Get "css/bobastyle.css" | fingerprint "sha512" }}
<link rel="stylesheet" type="text/css" href="{{ .Permalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="{{ .Permalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
{{ end }}
{{ with resources.Get "css/syntax.css" | fingerprint "sha512" }}
<link rel="stylesheet" type="text/css" href="{{ .Permalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
{{ end }}
{{ with resources.Get "css/syntax-light.css" | fingerprint "sha512" }}
<link rel="stylesheet" type="text/css" href="{{ .Permalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
{{ end }}
{{ with resources.Get "js/back-to-top.js" | fingerprint "sha512" }}
<script defer src="{{ .Permalink }}" type="text/javascript" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"></script>
<link rel="stylesheet" type="text/css" href="{{ .Permalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
{{ end }}
{{ with .Site.Params.faviconICO }}
<link rel="icon" type="image/x-icon" href="{{ . | absURL }}" />
<link rel="icon" type="image/x-icon" href="{{ . | absURL }}" />
{{ end }}
{{ with .Site.Params.faviconPNG }}
<link rel="icon" type="image/png" href="{{ . | absURL }}" />
<link rel="icon" type="image/png" href="{{ . | absURL }}" />
{{ end }}
{{ range .AlternativeOutputFormats -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s" />` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML }}
{{ end -}}
{{ if .IsHome }}
<title>{{ .Site.Title | plainify }}</title>
<title>{{ .Site.Title }}</title>
{{ else }}
<title>{{ (print .Title " | " .Site.Title) | plainify }}</title>
<title>{{ print .Title " | " .Site.Title }}</title>
{{ end }}
{{ partial "seo-tags/opengraph.html" . }}
{{ partial "seo-tags/twitter-cards.html" . }}
{{ partial "seo-tags/schema.html" . }}
{{ partial "seo-tags/link.html" . }}
{{ partial "seo-tags/author.html" . }}
{{ partial "opengraph.html" . }}
{{ template "_internal/twitter_cards.html" . }}
{{ template "_internal/schema.html" . }}
<meta name="language" content="{{ .Language.Lang }}">
<meta name="description" content="{{ (partial "seo-tags/description.html" .) | plainify }}">
<meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}">
</head>

View File

@ -1,5 +1,5 @@
{{- $icon_resource := resources.Get (printf "jam/icons/%s.svg" .) -}}
{{- $icon := $icon_resource.Content -}}
{{- $icon = replaceRE `<svg` `<svg class="icon"` $icon -}}
{{- $icon = replaceRE `</svg>` (printf `<title>%s icon</title></svg>` .) $icon -}}
{{- $icon | safeHTML -}}
{{ $icon_resource := resources.Get (printf "feather/icons/%s.svg" .) }}
{{ $icon := $icon_resource.Content }}
{{ $icon = replaceRE `<svg` `<svg class="icon"` $icon }}
{{ $icon = replaceRE `</svg>` (printf `<title>%s icon</title></svg>` .) $icon }}
{{ $icon | safeHTML }}

View File

@ -0,0 +1,52 @@
<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 }}" />
<meta property="og:url" content="{{ .Permalink }}" />
{{- with $.Params.images -}}
{{- range first 6 . }}<meta property="og:image" content="{{ . | absURL }}" />{{ 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 -}}
{{- if .IsPage }}
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
<meta property="article:section" content="{{ .Section }}" />
{{ with .PublishDate }}<meta property="article:published_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
{{ with .Lastmod }}<meta property="article:modified_time" {{ .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 first 6 . }}<meta property="og:video" content="{{ . | absURL }}" />{{ end -}}
{{- else -}}
{{- $videos := $.Resources.ByType "video" -}}
{{- $featured_video := $videos.GetMatch "*feature*" -}}
{{- if not $featured_video }}{{ $featured_video = $videos.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}}
{{- with $featured_video -}}
<meta property="og:video" content="{{ $featured_video.Permalink | absURL }}" />
{{- end -}}
{{- end -}}
{{- /* If it is part of a series, link to related articles */}}
{{- $permalink := .Permalink }}
{{- $siteSeries := .Site.Taxonomies.series }}
{{ with .Params.series }}{{- range $name := . }}
{{- $series := index $siteSeries ($name | urlize) }}
{{- range $page := first 6 $series.Pages }}
{{- if ne $page.Permalink $permalink }}<meta property="og:see_also" content="{{ $page.Permalink }}" />{{ end }}
{{- end }}
{{ end }}{{ end }}
{{- /* Facebook Page Admin ID for Domain Insights */}}
{{- with .Site.Social.facebook_admin }}<meta property="fb:admins" content="{{ . }}" />{{ end }}

View File

@ -1,5 +0,0 @@
{{ if gt .Paginator.TotalPages 1 }}
<div class="pagination">
{{ template "_internal/pagination.html" . }}
</div>
{{ end }}

View File

@ -1,16 +0,0 @@
{{ with .Params.authors }}
<span class="post-meta-item" aria-label="{{ i18n "aria_post_meta_authors" }}">
{{ partial "icon.html" "user-circle" }}
{{ if index $.Site.Taxonomies "authors" }}
{{ $authors := slice }}
{{ range . }}
{{ $url := (printf "authors/%s" (. | anchorize)) | absLangURL }}
{{ $authors = $authors | append (printf `<a href="%s">%s</a>` $url . | safeHTML) }}
{{ end }}
{{ delimit $authors ", " }}
{{ else }}
{{ delimit . ", " }}
{{ end }}
</span>
{{ end }}

View File

@ -1,6 +0,0 @@
{{ if ne .Site.Params.readingtime false }}
<span class="post-meta-item" aria-label="{{ i18n "aria_post_meta_reading_time" }}">
{{ partial "icon.html" "clock" }}
{{ i18n "readingtime" .ReadingTime }}
</span>
{{ end }}

View File

@ -1,11 +0,0 @@
{{ with (.GetTerms "series") }}
{{ $series := slice }}
{{ range . }}
{{ $series = $series | append (printf `<a href="%s">%s</a>` .Permalink .LinkTitle) }}
{{ end }}
<div class="series" aria-label="{{ i18n "aria_post_meta_series" }}">
{{ partial "icon.html" "files" }}
{{ delimit $series ", " }}
</div>
{{ end }}

View File

@ -1,11 +0,0 @@
{{ with (.GetTerms "tags") }}
{{ $tags := slice }}
{{ range . }}
{{ $tags = $tags | append (printf `<a href="%s">%s</a>` .Permalink .LinkTitle) }}
{{ end }}
<div class="tags" aria-label="{{ i18n "aria_post_meta_tags" }}">
{{ partial "icon.html" "tag" }}
{{ delimit $tags ", " }}
</div>
{{ end }}

View File

@ -1,8 +0,0 @@
{{ if .IsTranslated }}
<span class="post-meta-item" aria-label="{{ i18n "aria_post_meta_translations" }}">
{{ partial "icon.html" "world" }}
{{ range .Translations }}
<a href="{{ .Permalink }}">{{ .Language }}</a>
{{ end }}
</span>
{{ end }}

View File

@ -1,13 +0,0 @@
{{ if and .Site.Params.gitFileURL .File.Path }}
<span class="post-meta-item" aria-label="{{ i18n "aria_post_meta_view_source" }}">
{{ with .Site.Params.gitFileIcon }}
{{ partial "icon.html" . }}
{{ else }}
{{ partial "icon.html" "file" }}
{{ end }}
<a href="{{ printf "%s/content/%s" .Site.Params.gitFileURL .File.Path }}" target="_blank" rel="noopener">
View source
</a>
</span>
{{ end }}

View File

@ -0,0 +1,66 @@
{{ if or .Date .IsTranslated .Site.Params.wordcount .Site.Params.readingtime .Site.Params.repoURL }}
<div class="post-metadata">
{{ if .Date }}
<span class="post-meta-item">
{{ partial "icon.html" "calendar" }}
<time datetime="{{ .Date.Format "January 2, 2006" }}" pubdate>
{{ i18n "long_date" (dict "Date" .Date "Data" .Site.Data) }}
</time>
</span>
{{ if not .Site.Params.repoURL }}
{{ if ne .Lastmod .Date }}
<span class="post-meta-item">
{{ partial "icon.html" "edit-2" }}
<time datetime="{{ .Lastmod.Format "2006-01-02" }}" pubdate>
{{ i18n "long_date" (dict "Date" .Lastmod "Data" .Site.Data) }}
</time>
{{ end }}
</span>
{{ end }}
{{ end }}
{{ if .IsTranslated }}
<span class="post-meta-item">
{{ partial "icon.html" "globe" }}
{{ range .Translations }}
<a href="{{ .Permalink }}">{{ .Language }}</a>
{{ end }}
</span>
{{ end }}
{{ if .Site.Params.wordcount }}
<span class="post-meta-item">
{{ partial "icon.html" "type" }}
{{ i18n "wordcount" .WordCount }}
</span>
{{ end }}
{{ if .Site.Params.readingtime }}
<span class="post-meta-item">
{{ partial "icon.html" "clock" }}
{{ i18n "readingtime" .ReadingTime }}
</span>
{{ end }}
{{ if .Site.Params.repoURL }}
{{ with .GitInfo }}
<span class="post-meta-item">
{{ partial "icon.html" "git-commit" }}
<a href="{{ (printf "%s/commit/%s" $.Site.Params.repoURL .Hash) | absLangURL }}">
<code>{{ .AbbreviatedHash }}</code>
</a>
</span>
{{ end }}
{{ end }}
<div class="tags">
{{ range (.GetTerms "tags") }}
<span class="post-meta-item">
{{ partial "icon.html" "tag" }}
<a href="{{ .Permalink }}">{{ .LinkTitle }}</a>
</span>
{{ end }}
</div>
</div>
{{ end }}

View File

@ -1,17 +0,0 @@
<div class="post-metadata" aria-label="{{ i18n "aria_author_metadata" }}">
{{/* Calculate the total word count */}}
{{ $total_words := 0 }}
{{ range .Data.Pages }}
{{ $total_words = add $total_words .WordCount }}
{{ end }}
<span class="post-meta-item" aria-label="{{ i18n "aria_author_post_count" }}">
{{ partial "icon.html" "newspaper" }}
{{ i18n "post_count" (len .Data.Pages) }}
</span>
<span class="post-meta-item" aria-label="{{ i18n "aria_author_word_count" }}">
{{ partial "icon.html" "align-left" }}
{{ i18n "wordcount" $total_words }}
</span>
</div>

View File

@ -1,28 +0,0 @@
{{ if or .Date .Params.authors .IsTranslated .Site.Params.readingtime .Site.Params.gitFileURL }}
<div class="post-metadata" aria-label="{{ i18n "aria_post_metadata" }}">
{{ if .Date }}
<span class="post-meta-item" aria-label="{{ i18n "aria_post_meta_date" }}">
{{ partial "icon.html" "calendar" }}
<time datetime="{{ .Date.Format "2006-01-02" }}" pubdate>
{{ i18n "long_date" (dict "Date" .Date "Data" .Site.Data) }}
</time>
</span>
{{/* TODO: make this be a tooltip */}}
{{ if ne (time.Format "2006-01-02" .Lastmod) (time.Format "2006-01-02" .Date) }}
<span class="post-meta-item" aria-label="{{ i18n "aria_post_meta_modified_date" }}">
{{ partial "icon.html" "pencil" }}
<time datetime="{{ .Lastmod.Format "2006-01-02" }}" pubdate>
{{ i18n "long_date" (dict "Date" .Lastmod "Data" .Site.Data) }}
</time>
{{ end }}
</span>
{{ end }}
{{ partial "post-meta-item/authors.html" . }}
{{ partial "post-meta-item/translations.html" . }}
{{ partial "post-meta-item/readingtime.html" . }}
{{ partial "post-meta-item/viewsource.html" . }}
{{ partial "post-meta-item/tags.html" . }}
</div>
{{ end }}

View File

@ -1,22 +0,0 @@
<div class="post-metadata" aria-label="{{ i18n "aria_series_metadata" }}">
<span class="post-meta-item">
{{ partial "icon.html" "newspaper" }}
{{ i18n "post_count" (len .Data.Pages) }}
</span>
{{ if ne .Site.Params.readingtime false }}
<span class="post-meta-item">
{{ partial "icon.html" "clock" }}
{{ $readingtime := 0 }}
{{ range .Data.Pages }}
{{ $readingtime = (add $readingtime .ReadingTime) }}
{{ end }}
{{ i18n "readingtime" $readingtime }}
</span>
{{ end }}
{{ partial "post-meta-item/translations.html" . }}
{{ if .File }}
{{ partial "post-meta-item/viewsource.html" . }}
{{ end }}
</div>

View File

@ -1,18 +0,0 @@
{{ if or .Date .Params.authors .IsTranslated .Site.Params.readingtime }}
<div class="post-metadata" aria-label="{{ i18n "aria_post_metadata" }}">
{{ if .Date }}
<span class="post-meta-item" aria-label="date">
{{ partial "icon.html" "calendar" }}
<time datetime="{{ .Date.Format "2006-01-02" }}" pubdate>
{{ i18n "long_date" (dict "Date" .Date "Data" .Site.Data) }}
</time>
</span>
{{ end }}
{{ partial "post-meta-item/authors.html" . }}
{{ partial "post-meta-item/translations.html" . }}
{{ partial "post-meta-item/readingtime.html" . }}
{{ partial "post-meta-item/series.html" . }}
{{ partial "post-meta-item/tags.html" . }}
</div>
{{ end }}

View File

@ -1,28 +0,0 @@
{{ $hidecaption := index . "hidecaption" }}
{{ $type := index . "type" }}
{{ $src := index . "src" }}
{{ $alt := index . "alt" }}
{{ if index . "border" }}
<figure class="border">
{{ else }}
<figure>
{{ end }}
{{ if eq $type "image" }}
<img src="{{ $src }}" alt="{{ $alt }}" />
{{ else if eq $type "video" }}
<video controls>
<source src="{{ $src }}" alt="{{ $alt }}">
{{ i18n "browser_no_video_support" }}
</video>
{{ end }}
{{ if not $hidecaption }}
{{ with $alt }}
<figcaption>
{{ . | markdownify }}
</figcaption>
{{ end }}
{{ end }}
</figure>

View File

@ -1,5 +0,0 @@
<span class="rss-link">
{{ with .OutputFormats.Get "rss" }}
<a href="{{ .Permalink }}" target="_blank" rel="noopener" aria-label="{{ i18n "aria_rss_link" }}">{{ partial "icon.html" "rss-feed" }}</a>
{{ end }}
</span>

View File

@ -1,7 +0,0 @@
{{ with .Params.authors }}
<meta name="author" content="{{ delimit . ", " }}">
{{ range . }}
<meta property="article:author" content="{{ . }}">
{{ end }}
{{ end }}

View File

@ -1,9 +0,0 @@
{{- with .Description -}}
<p>{{- . | markdownify -}}</p>
{{- else -}}
{{- with .Summary -}}
{{- . -}}
{{- else -}}
{{- .Site.Params.description -}}
{{- end -}}
{{- end -}}

View File

@ -1,15 +0,0 @@
{{ range .AlternativeOutputFormats }}
<link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink }}" title="{{ $.Site.Title | plainify }}">
{{ end }}
{{ with .OutputFormats.Get "rss" }}
<link rel="start" type="{{ .MediaType.Type }}" href="{{ .Permalink }}" title="{{ $.Site.Title | plainify }}">
{{ end }}
{{ with .PrevInSection }}
<link rel="prev" title="{{ .Title | plainify }}" href="{{ .Permalink }}">
{{ end }}
{{ with .NextInSection }}
<link rel="next" title="{{ .Title | plainify }}" href="{{ .Permalink }}">
{{ end }}
<link rel="canonical" href="{{ .Permalink }}">

View File

@ -1,48 +0,0 @@
<meta property="og:title" content="{{ .Title | plainify }}">
<meta property="og:description" content="{{ (partial "seo-tags/description.html" .) | plainify }}">
<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}">
<meta property="og:url" content="{{ .Permalink }}">
{{ $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 }}">
{{ end }}
{{ with .Section }}
<meta property="article:section" content="{{ . }}">
{{ end }}
{{ $format := "2006-01-02T15:04:05-07:00" }}
{{ with .Date }}
<meta property="article:published_time" content="{{ .Format $format }}">
{{ end }}
{{ with .Lastmod }}
<meta property="article:modified_time" {{ .Format $format | printf "content=%q" | safeHTMLAttr }}>
{{ end }}
{{ with .Params.audio }}
<meta property="og:audio" content="{{ . }}">
{{ end }}
{{ with .Language.Lang }}
<meta property="og:locale" content="{{ . }}">
{{ end }}
{{ with .Site.Params.title }}
<meta property="og:site_name" content="{{ . }}">
{{ end }}
{{ $videos := $.Resources.ByType "video" }}
{{ $featured_video := $videos.GetMatch "*feature*" }}
{{ if not $featured_video }}
{{ $featured_video = $videos.GetMatch "{*cover*,*thumbnail*}" }}
{{ end }}
{{ with $featured_video }}
<meta property="og:video" content="{{ $featured_video.Permalink | absURL }}">
{{ end }}

View File

@ -1,26 +0,0 @@
<meta itemprop="name" content="{{ .Title | plainify }}">
<meta itemprop="description" content="{{ (partial "seo-tags/description.html" .) | plainify }}">
{{ $format := "2006-01-02T15:04:05-07:00" }}
{{ with .Date }}
<meta itemprop="datePublished" content="{{ .Format $format }}">
{{ end }}
{{ with .Lastmod }}
<meta itemprop="dateModified" content="{{ .Format $format }}">
{{ end }}
<meta itemprop="wordCount" content="{{ .WordCount }}">
{{ $images := $.Resources.ByType "image" }}
{{ $featured := $images.GetMatch "*feature*" }}
{{ if not $featured }}
{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}
{{ end }}
{{ with $featured }}
<meta itemprop="image" content="{{ $featured.Permalink }}">
{{ end }}
{{ with .Params.tags }}
<meta itemprop="keywords" content="{{ delimit . ", " }}">
{{ end }}

View File

@ -1,29 +0,0 @@
{{ $images := $.Resources.ByType "image" }}
{{ $featured := $images.GetMatch "*feature*" }}
{{ if not $featured }}
{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}
{{ end }}
{{ with $featured }}
{{ $ratio := 0 }}
{{ if gt .Width .Height }}
{{ $ratio = div (float .Width) .Height }}
{{ else }}
{{ $ratio = div (float .Height) .Width }}
{{ end }}
{{ if lt $ratio 1.75 }}
<meta name="twitter:card" content="summary_large_image">
{{ else }}
<meta name="twitter:card" content="summary">
{{ end }}
<meta name="twitter:image" content="{{ $featured.Permalink }}">
{{ end }}
<meta name="twitter:title" content="{{ .Title | plainify }}">
<meta name="twitter:description" content="{{ (partial "seo-tags/description.html" .) | plainify }}">
{{ with .Site.Social.twitter }}
<meta name="twitter:site" content="@{{ . }}">
{{ end }}

View File

@ -1,50 +1,27 @@
<h2 class="header">
<a href="{{ .Site.Home.Permalink | absLangURL }}">{{ .Site.Title | markdownify }}</a>
<a href="{{ "/" | absLangURL }}">{{ .Site.Title | markdownify }}</a>
</h2>
<div class="topbar">
<nav class="navbar" aria-label="{{ i18n "aria_navbar" }}">
{{ with .Site.Home }}
<a class="navbar-item{{ if $.IsHome }} active{{ end }}" href="{{ .Permalink | absLangURL }}">{{ .Title | markdownify }}</a>
{{ end }}
{{ range .Site.Menus.main }}
{{ $isActive := false }}
{{ if or ($.HasMenuCurrent .Menu .) ($.IsMenuCurrent .Menu .) }}
{{ $isActive = true }}
{{ end }}
<a class="navbar-item{{ if $isActive }} active{{ end }}" href="{{ .URL }}">{{ .Name }}</a>
{{ end }}
</nav>
{{ if .Site.IsMultiLingual }}
<details class="langpicker" aria-label="{{ i18n "aria_langpicker" }}">
<summary>
{{- partial "icon.html" "world" -}}
</summary>
<ul class="languages" aria-label="{{ i18n "aria_langpicker_list" }}">
{{ range .AllTranslations }}
<li>
<a class="langpicker-item{{ if eq .Language $.Site.Language }} active{{ end }}" href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
</li>
{{ end }}
{{ $site_translations := slice }}
{{ range .Site.Languages }}
{{ $site_translations = $site_translations | append .LanguageName }}
{{ end }}
{{ $translation_codes := slice }}
{{ range .AllTranslations }}
{{ $translation_codes = $translation_codes | append .Language }}
{{ end }}
{{ range (.Site.Languages | complement $translation_codes) }}
<li>
<a class="langpicker-item unavailable" aria-disabled="true">{{ .LanguageName }}</a>
</li>
{{ end }}
</ul>
</details>
<nav class="navbar">
{{ with .Site.GetPage "/" }}
<a class="navbar-item" href="{{ .Permalink | absLangURL }}">{{ .Title }}</a>
{{ end }}
</div>
{{ range .Site.Menus.main }}
<a class="navbar-item" href="{{ .URL | absLangURL }}">{{ .Name }}</a>
{{ end }}
</nav>
{{ if .Site.IsMultiLingual }}
<nav class="langbar">
{{ range .Site.Home.AllTranslations }}
{{ if eq .Language $.Site.Language }}
<b><a class="langbar-item" href="{{ .Permalink }}">{{ .Language.LanguageName }}</a></b>
{{ else }}
<a class="langbar-item" href="{{ .Permalink }}">{{ .Language.LanguageName }}</a>
{{ end }}
{{ end }}
</nav>
{{ end }}

View File

@ -1,14 +0,0 @@
{{ define "main" }}
<h1>
{{ partial "icon.html" "files" }}
{{ .Title | markdownify }}
</h1>
<div class="series-taxonomy">
<ul>
{{ range .Pages }}
<li>{{ .Render "summary/series" }}</li>
{{ end }}
</ul>
</div>
{{ end }}

View File

@ -1,30 +0,0 @@
{{ define "main" }}
<h1>
{{ partial "icon.html" "files" }}
{{ .Title | markdownify }}
{{ partial "rss-link.html" . }}
</h1>
{{ partial "post-metadata/series.html" . }}
{{ partial "description-or-summary.html" . }}
<div class="page-list">
<ul>
{{ $i := 0 }}
{{ $total := len .Pages }}
{{ range .Paginator.Pages.Reverse }}
{{ $i = add 1 $i }}
{{ .Scratch.Set "series_position" $i }}
{{ .Scratch.Set "series_total" $total }}
<li>{{ .Render "summary/post" }}</li>
{{ else }}
<div>
{{ i18n "no_posts" }}
</div>
{{ end }}
</ul>
</div>
{{ partial "pagination.html" . }}
{{ end }}

View File

@ -1,7 +0,0 @@
<aside>
{{ with .Inner }}
{{ . | markdownify }}
{{ else }}
{{ errorf "The aside shortcode needs to be a closing one (similar to the highlight shortcode, see https://gohugo.io/templates/shortcode-templates/#inner" }}
{{ end }}
</aside>

View File

@ -1,15 +1,2 @@
{{ $resource := $.Page.Resources.GetMatch (.Get "src") }}
{{ $noborder := false }}
{{ if .Get "noborder" }}
{{ $noborder = true }}
{{ end }}
{{ $hidecaption := false }}
{{ if .Get "hidecaption" }}
{{ $hidecaption = true }}
{{ end }}
<p>
{{ partial "figure.html" (dict "src" $resource "noborder" $noborder "hidecaption" $hidecaption) }}
</p>
{{ partial "figure.html" $resource }}

View File

@ -1,13 +0,0 @@
{{ $border := false }}
{{ if .Get "border" }}
{{ $border = true }}
{{ end }}
{{ $hidecaption := false }}
{{ if .Get "hidecaption" }}
{{ $hidecaption = true }}
{{ end }}
<p>
{{ partial "remote_figure.html" (dict "src" (.Get "src") "border" $border "hidecaption" $hidecaption "type" "image" "alt" (.Get "alt")) }}
</p>

View File

@ -1,13 +0,0 @@
{{ $border := false }}
{{ if .Get "border" }}
{{ $border = true }}
{{ end }}
{{ $hidecaption := false }}
{{ if .Get "hidecaption" }}
{{ $hidecaption = true }}
{{ end }}
<p>
{{ partial "remote_figure.html" (dict "src" (.Get "src") "border" $border "hidecaption" $hidecaption "type" "video" "alt" (.Get "alt")) }}
</p>

View File

@ -1,16 +0,0 @@
{{ define "main" }}
<h1>
{{ partial "icon.html" "tag" }}
{{ .Title | markdownify }}
</h1>
<div class="tag-list">
<ul>
{{ range .Data.Terms.Alphabetical }}
<a href="{{ .Page.Permalink }}">
<li>{{ .Page.Title | markdownify }}</li>
</a>
{{ end }}
</ul>
</div>
{{ end }}

View File

@ -1,22 +0,0 @@
{{ define "main" }}
<h1>
{{ partial "icon.html" "tag" }}
{{ .Title | markdownify }}
{{ partial "rss-link.html" . }}
</h1>
{{ partial "description-or-summary.html" . }}
<div class="page-list">
<ul>
{{ range .Paginator.Pages }}
<li>{{ .Render "summary/post" }}</li>
{{ else }}
<div>
{{ i18n "no_posts" }}
</div>
{{ end }}
</ul>
</div>
{{ partial "pagination.html" . }}
{{ end }}

View File

@ -1,21 +1,41 @@
{{ define "main" }}
<h1>
{{ if eq .Data.Singular "tag" }}
{{ partial "icon.html" "tag" }}
{{ else }}
{{ partial "icon.html" "filter" }}
<h1>
{{ partial "icon.html" "filter" }}
{{ i18n "filtering_for" .Title }}
{{ if eq .Kind "term" }}
<span class="rss-link">
{{ with .OutputFormats.Get "rss" }}
<a href="{{ .Permalink }}">{{ partial "icon.html" "rss" }}</a>
{{ end }}
</span>
{{ end }}
</h1>
{{ .Title | markdownify }}
</h1>
{{ if eq .Kind "taxonomy" }}
<ul>
{{ range .Pages }}
<li>
<a href="{{ .Permalink }}">{{ .Title | markdownify }}</a>
</li>
{{ end }}
</ul>
{{ else }}
{{ range .Paginator.Pages }}
{{ .Render "summary" }}
{{ else }}
<div>
{{ i18n "no_posts" }}
</div>
{{ end }}
{{ if gt .Paginator.TotalPages 1 }}
<div class="pagination">
{{ template "_internal/pagination.html" . }}
</div>
{{ end }}
{{ end }}
<div class="taxonomy">
<ul>
{{ range .Data.Terms.Alphabetical }}
<li>
<a href="{{ .Page.Permalink }}">{{ .Page.Title | markdownify }}</a>
</li>
{{ end }}
</ul>
</div>
{{ end }}

View File

@ -1,27 +0,0 @@
{{ define "main" }}
<h1>
{{ if eq .Data.Singular "tag" }}
{{ partial "icon.html" "tag" }}
{{ else }}
{{ partial "icon.html" "filter" }}
{{ end }}
{{ .Title | markdownify }}
{{ partial "rss-link.html" . }}
</h1>
{{ partial "description-or-summary.html" . }}
<div class="page-list">
<ul>
{{ range .Paginator.Pages }}
<li>{{ .Render "summary/post" }}</li>
{{ else }}
<div>
{{ i18n "no_posts" }}
</div>
{{ end }}
</ul>
</div>
{{ partial "pagination.html" . }}
{{ end }}

View File

@ -5,10 +5,10 @@ name = "bobatheme"
license = "MIT"
licenselink = "https://github.com/BBaoVanC/bobatheme/blob/master/LICENSE"
description = "Simple Hugo theme for boba.best and bbaovanc.com"
homepage = "https://bbaovanc.com"
homepage = "https://boba.best/"
tags = []
features = []
min_version = "0.80.0"
min_version = "0.87.0"
[author]
name = "bbaovanc"