💄 style: major redesign

main
Óscar 2 years ago committed by GitHub
commit 58fe89b643
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -32,7 +32,7 @@ zola serve
This theme was inspired by:
- [shadharon](https://github.com/syedzayyan/shadharon). tabi started as a fork of [syedzayyan](https://github.com/syedzayyan)'s theme.
- [Alfonso García's site](https://alfoncode.com/)
- [tailwind-nextjs-starter-blog](https://github.com/timlrx/tailwind-nextjs-starter-blog)
- [tale-zola](https://github.com/aaranxu/tale-zola)
- [internetVin's blog](https://internetvin.ghost.io)

@ -16,9 +16,8 @@ highlight_code = true
highlight_theme = "css"
[extra]
use_cdn = false
date_format = "" # If unset, uses format: "1st January 2049"
# If unset, uses format: "6 July 2049" ("%d %B %Y"). Don't leave it empty or dates won't appear. Either use a proper format or comment out the line.
# date_format = "%d %B %Y"
# Custom separator used in title tag and posts metadata (between date, time to read, and tags).
separator = "•"
@ -31,7 +30,7 @@ headerImage = ""
# The icon is display besides the menu text but is not necessary. It needs to be placed under "menu_icon" in the static "folder"
menu = [
{ name = "home", url = "$BASE_URL/" },
{ name = "blog", url = "$BASE_URL/blog" },
{ name = "archive", url = "$BASE_URL/archive" },
{ name = "tags", url = "$BASE_URL/tags" },
{ name = "projects", url = "$BASE_URL/projects" },

@ -1,12 +1,13 @@
+++
paginate_by = 4
path = "/"
title = "Posts"
title = "Latest posts"
sort_by = "date"
template = "section.html"
[extra]
header = {title = "Hello! I'm tabi~", img = "$BASE_URL/img/main.webp" }
section_path = "blog/_index.md"
max_posts = 4
+++
Tabi is a simple theme for [Zola](https://www.getzola.org/). It aims to be a personal page and home to blog posts. It features responsive design, dark and light modes, and high performance.

@ -0,0 +1,8 @@
+++
paginate_by = 5
path = "/blog"
title = "Blog"
sort_by = "date"
template = "section.html"
insert_anchor_links = "left"
+++

@ -1,6 +1,8 @@
+++
title = "Almost no JavaScript"
date = "2023-01-06"
date = 2023-01-06
description = "JavaScript is only used when HTML and CSS aren't enough."
[taxonomies]
tags = ["showcase"]
+++

@ -1,6 +1,9 @@
+++
title = "Markdown examples"
date = "2023-01-31"
date = 2023-01-31
updated = 2023-03-01
description = "This post showcases some examples of Markdown formatting, including a table, code blocks and tags, quotes, tables, and footnotes."
[taxonomies]
tags = ["markdown", "showcase"]
+++

@ -0,0 +1,9 @@
+++
title = "One more post"
date = 2021-05-30
description = "The only reason this post exists is to show the pagination in the blog section."
+++
> Look at you, she said, not without affection. Sitting there like an owl. Melancholy bloody gargoyle. You mawkish bugger. You dont get any insight, you know, just because its night. Just because some buildings have their lights on.
>
> — China Miéville, The City & the City

@ -1,6 +1,8 @@
+++
title = "Secure by default"
date = "2023-02-22"
date = 2023-02-22
description = "tabi has an easily customizable Content Security Policy (CSP) with safe defaults. Get peace of mind and an A+ on Mozilla Observatory."
[taxonomies]
tags = ["security", "showcase"]
+++

@ -2,6 +2,8 @@
title = "Custom shortcodes"
date = 2023-02-19
updated = 2023-02-27
description = "This theme includes some useful custom shortcodes that you can use to enhance your posts. Whether you want to display images that adapt to light and dark themes, or format a professional-looking reference section, these custom shortcodes have got you covered."
[taxonomies]
tags = ["showcase", "shortcodes"]
+++

@ -1,6 +1,8 @@
+++
title = "Table of Contents"
date = "2022-11-01"
date = 2022-11-01
description = "A post showcasing the optional Table of Contents."
[taxonomies]
tags = ["showcase", "markdown"]
@ -13,14 +15,14 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue
## Heading 2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
### Heading 3
### Heading 3.1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
#### Heading 4
#### Heading 4.1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
#### Heading 4
#### Heading 4.2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
### Heading 3
### Heading 3.2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
#### Heading 4
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
@ -31,16 +33,16 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue
## Heading 2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
### Heading 3
### Heading 3.1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
#### Heading 4
#### Heading 4.1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
#### Heading 4
#### Heading 4.2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
### Heading 3
### Heading 3.2
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
#### Heading 4
#### Heading 4.1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.
#### Heading 4
#### Heading 4.1
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sed mollis augue, vel efficitur lacus. Pellentesque eu egestas mi. Etiam ultrices lectus sit amet aliquet ullamcorper. Praesent in erat quis est sagittis finibus. Etiam nec sapien in nulla interdum faucibus. Integer iaculis lorem quis arcu lobortis, non malesuada neque vehicula. Aenean nec tellus eu metus bibendum tempus. Sed rutrum urna ut commodo tempor. Vestibulum aliquet elit posuere turpis maximus condimentum. Sed urna libero, ornare eu tellus vitae, laoreet condimentum risus. Aenean elit lectus, mattis quis nibh nec, faucibus rutrum sapien. Sed iaculis consectetur mi, eget posuere turpis finibus et.

@ -32,7 +32,9 @@
@import 'parts/home-banner.scss';
@import 'parts/footer.scss';
@import 'parts/theme-switch.scss';
@import 'parts/posts_list.scss';
@import 'parts/tags.scss';
@import 'parts/pagination.scss';
@import 'syntax/syntax-ayu-dark.scss';
:root {
@ -54,13 +56,13 @@
--bg-2: #fefefe;
--hover-color: white;
--primary-color: #91D8E4;
--secondary-color: rgb(158, 158, 158);
--secondary-color: #d7d7d7;
--links: #78cfcb;
--text-color: #222226;
--text-color-2: #45454b;
--text-color-high-contrast: #151516;
--quote-color: #355f62;
--border-color: rgb(114, 114, 114);
--light-border-color: rgba(255, 255, 255, 0.1);
--meta-color: #757575;
--accent-color: #087E96;
--table-header-color: #BFEAF5;
@ -71,15 +73,13 @@
--bg-1: rgba(133, 133, 133, 0.5);
--bg-2: rgba(23, 23, 23, 100%);
--primary-color: #7cc4d1;
--hover-color: white;
--secondary-color: #696969;
--secondary-color: #4a4a4a;
--links: #8fdfe5;
--text-color: #eae9e9;
--text-color-2: #c7c7c7;
--text-color-high-contrast: #f8f8f8;
--quote-color: #a9c5c7;
--code: #ef476f;
--border-color: rgb(0, 0, 0);
--light-border-color: rgba(255, 255, 255, 0.1);
--meta-color: #BBBBBB;
--accent-color: #91e0ee;
--table-header-color: #b7e4e4;
@ -130,6 +130,7 @@ article{
margin-left: 0;
margin-right: 0;
font-weight: 550;
color: var(--text-color-high-contrast);
}
h1 {
@ -205,18 +206,12 @@ p {
max-width: var(--small-layout-width);
}
}
@media all and (min-width: 640px) {
@media all and (min-width: 600px) {
html {
font-size: 16.5px;
}
}
@media all and (min-width: 720px) {
html {
font-size: 17px;
}
}
@media all and (min-width: 960px) {
html {
font-size: 20px;

@ -1,7 +1,7 @@
.archive {
.listing-title {
font-size: 1.5rem;
opacity: 0.8;
opacity: 0.9;
margin-bottom: 1rem;
}
@ -12,7 +12,7 @@
.post-time {
width: 4rem;
.date {
opacity: 0.4;
opacity: 0.5;
}
}
}

@ -41,44 +41,3 @@
gap: 18px;
}
}
.bloglist-title{
display: block;
font-size: 1.2em;
margin-top: 1.2em;
margin-bottom: 0.83em;
margin-left: 0;
margin-right: 0;
font-weight: bold;
}
.bloglist-table-row {
padding: 2%;
background-color: var(--navbar-color);
transition: 300ms;
width: 28%;
margin-right: 1%;
margin-top: 1%;
}
.bloglist-container {
display: flex;
flex-wrap: wrap;
padding-bottom: 1rem;
}
.bloglist-table-row:hover {
box-shadow: 0.5rem 0.5rem 0 var(--border-color);
}
.bloglist-links {
text-decoration: none;
}
.bloglist-table-row-data {
padding: 10px;
}
.bloglist-table-row-date {
font-size: 12px;
}
@media only screen and (max-width: 600px) {
.bloglist-table-row {
width: 100%;
}
}

@ -56,13 +56,13 @@ header {
justify-content: right;
color: var(--text-color);
padding: 0.66rem;
transition: 100ms;
}
.home-title {
font-size: 1.7em;
font-weight: 450;
padding-right: 0.33rem;
padding: 0.12rem;
margin-left: -0.12rem;
border: none;
color: var(--accent-color);
text-decoration: none;
@ -77,18 +77,18 @@ header {
padding-top: 0.7vmin;
padding-bottom: 3vmin;
line-height: 1.4rem;
}
.meta a {
a {
color: var(--meta-color);
text-decoration-color: none;
font-weight: inherit;
text-decoration: none;
}
}
.meta ul, li{
list-style-type: none;
display: inline;
ul, li {
list-style-type: none;
display: inline;
}
}
.card-meta {

@ -24,7 +24,7 @@
.home-banner-header {
margin-bottom: 1rem;
font-size: 2.8rem;
font-weight: 600;
font-weight: 550;
}
#banner-home-subtitle {
@ -36,7 +36,7 @@
}
#banner-home-subtitle p {
font-family: 'Inter', Arial, Helvetica, sans-serif;
font-family: var(--sans-serif-font);
font-size: 1rem;
}

@ -31,6 +31,30 @@ iframe {
margin-bottom: 3vmin;
}
.zola-anchor {
font-size: 1rem;
position: absolute;
margin-left: -1.9em;
padding-right: 0.45em;
padding-left: 0.4em;
opacity: 0;
}
h1:hover .zola-anchor,
h2:hover .zola-anchor,
h3:hover .zola-anchor,
h4:hover .zola-anchor,
h5:hover .zola-anchor,
h6:hover .zola-anchor {
opacity: 1;
}
h1, h2, h3, h4, h5, h6 {
a:hover {
background-color: transparent;
}
}
ul {
margin-top: 0;
}
@ -40,10 +64,13 @@ ul {
}
.title-container {
border-bottom: var(--secondary-color) solid 0.5px;
padding-bottom: 15px;
}
.bottom-divider {
border-bottom: var(--secondary-color) solid 0.5px;
}
::-moz-selection {
background: var(--primary-color);
color: var(--hover-color);
@ -77,21 +104,33 @@ blockquote {
}
a {
color: var(--text-color);
text-decoration-color: var(--links);
font-weight: 580;
}
p a {
color: var(--accent-color);
text-decoration: inherit;
font-weight: inherit;
position: relative;
}
a:hover {
background-color: var(--primary-color);
color: var(--hover-color);
}
a:not(.no-hover-padding, .zola-anchor)::before {
content: "";
position: absolute;
top: 0;
bottom: 0;
left: -0.15em;
right: -0.15em;
z-index: -1;
background-color: var(--primary-color);
opacity: 0;
}
a:not(.no-hover-padding):hover::before {
opacity: 1;
}
/* Remove post list padding */
@media screen and (max-width: 600px) {
.list > ul {

@ -0,0 +1,19 @@
.pagination {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 2rem;
font-size: 1em;
list-style: none;
padding: 0;
.page-item .disabled {
opacity: 0.5;
pointer-events: none;
}
.page-numbers {
font-size: 0.9rem;
color: var(--meta-color);
}
}

@ -0,0 +1,79 @@
.bloglist-container {
display: grid;
grid-template-columns: 1fr;
}
.bloglist-row {
background-color: var(--navbar-color);
display: flex;
align-items: flex-start;
padding: 2.5rem 0;
.date {
font-size: 0.85rem;
font-weight: 300;
color: var(--meta-color);
width: 14.5rem;
}
.bloglist-tags {
margin-top: -0.5rem;
.tag {
margin-right: 0.7rem;
font-size: 0.7rem;
font-weight: 400;
text-transform: uppercase;
}
}
.bloglist-content {
flex: 1;
.bloglist-title {
font-size: 1.2em;
font-weight: bold;
a {
color: var(--text-color-high-contrast);
font-weight: 550;
&:hover {
color: var(--hover-color);
}
}
}
.description {
margin: 0.5rem 0 1rem;
color: var(--text-color);
font-family: var(--sans-serif-font);
font-size: 0.9rem;
font-weight: 250;
line-height: 1.5rem;
}
}
}
.all-posts {
font-size: 1.3rem;
font-weight: 350;
}
@media only screen and (max-width: 1100px) {
.bloglist-row {
flex-direction: column;
align-items: flex-start;
padding: 2rem 0;
}
.date {
margin-bottom: 0;
width: 100%;
}
.bloglist-content {
width: 100%;
}
}

@ -6,7 +6,6 @@
.taglist-table-row {
padding: 2%;
background-color: var(--navbar-color);
transition: 300ms;
width: 28%;
margin-right: 1%;
margin-top: 1%;
@ -52,3 +51,16 @@
margin: 0
}
}
.tag-cloud {
margin-top: 4vmin;
ul {
list-style: none;
padding: 0;
margin: 0;
}
.tags-item {
margin-top: 1rem;
}
}

@ -11,7 +11,6 @@
height: 1rem;
position: absolute;
left: 0px;
transition: all 0.3s ease-in-out;
display: flex;
justify-content: center;
align-items: center;
@ -19,7 +18,6 @@
width: 100%;
height: auto;
position: absolute;
transition: all 0.2s ease-in-out;
border: none;
}
.sun {

@ -1,8 +0,0 @@
{% extends "page.html" %}
{% block main_content %}
<main class="centered-header">
{{ macros_page_header::page_header(title="403")}}
<span>forbidden</span>
</main>
{% endblock main_content %}

@ -1,8 +1,10 @@
{% extends "page.html" %}
{% block main_content %}
<main class="centered-header">
{{ macros_page_header::page_header(title="404")}}
<span>not found</span>
</main>
{% endblock main_content %}

@ -1,10 +1,12 @@
{% extends "base.html" %} {% block main_content %}
{% extends "base.html" %}
{% block main_content %}
{{ macros_page_header::page_header(title=section.title) }}
<div class="archive">
<ul class="list-with-title">
{% set section_item = get_section(path="_index.md") %} {% for year, posts in
{% set section_item = get_section(path="blog/_index.md") %} {% for year, posts in
section_item.pages | group_by(attribute="year") %} {% if posts | length > 0
%}
<li>
@ -27,4 +29,5 @@
</li>
</ul>
</div>
{% endblock main_content %}

@ -1,12 +1,10 @@
{% import "macros/list_posts.html" as macros_list_posts %}
{% import "macros/format_date.html" as macros_format_date %}
{% import "macros/page_header.html" as macros_page_header %}
{% import "macros/page_desc.html" as macros_page_desc %}
{% import "macros/content.html" as macros_content %}
{% import "macros/cards_posts.html" as macros_cards_posts %}
{% import "macros/list_title.html" as macros_list_title %}
{% import "macros/set_title.html" as macros_set_title %}
{% import "macros/paginate.html" as macros_paginate %}
<!DOCTYPE html>
<html lang = "en">

@ -18,18 +18,6 @@
</main>
{% if paginator %}
<div class="pagination">
{% if paginator.previous %}
<span class="page-item page-prev">
<a href={{ paginator.previous }} class="page-link" aria-label="Previous"><span aria-hidden="true">← Prev</span></a>
</span>
{% endif %}
{% if paginator.next %}
<span class="page-item page-next">
<a href={{ paginator.next }} class="page-link" aria-label="Next"><span aria-hidden="true">Next →</span></a>
</span>
{% endif %}
</div>
{{ macros_paginate::paginate() }}
{% endif %}
{% endblock main_content %}

@ -1,4 +1,5 @@
{% macro cards_posts(pages) %}
<div class="cards">
{%- for page in pages %}
<div class="card">
@ -21,7 +22,7 @@
<div class="meta">
{%- if page.date %}
{{ macros_format_date::format_date(date=page.date) }}
{{ page.date | date(format=config.extra.date_format | default (value="%d %B %Y")) }}
{% endif -%}
{% if page.draft %}
<span class="draft-label">DRAFT</span>
@ -38,4 +39,5 @@
{% endfor -%}
</div>
{% endmacro cards_posts %}

@ -1,4 +1,5 @@
{% macro content(page) %}
{% set separator = config.extra.separator | default(value="•") %}
<main>
@ -13,7 +14,7 @@
{% endif %}
{% if page.date %}
<span>{{ macros_format_date::format_date(date=page.date) }}</span>
<span>{{ page.date | date(format=config.extra.date_format | default (value="%d %B %Y")) }}</span>
{{ separator }}
{% endif %}
@ -30,7 +31,7 @@
{% endif %}
{% if page.updated %}
<br><span>Last updated on {{ macros_format_date::format_date(date=page.updated) }}</span>
<br><span>Last updated on {{ page.updated | date(format=config.extra.date_format | default (value="%d %B %Y")) }}</span>
{% endif %}
</ul>
@ -81,4 +82,5 @@
</article>
</main>
{% endmacro content %}

@ -1,22 +0,0 @@
{% macro format_date(date) %}
{% if config.extra.date_format %}
{{ date | date(format=config.extra.date_format) }}
{% else %}
{% set day = date | date(format='%-d') | int %}
{% if day in [11, 12, 13] %}
{% set suffix = "th" %}
{% else %}
{% set last_digit = day % 10 %}
{% if last_digit == 1 %}
{% set suffix = "st" %}
{% elif last_digit == 2 %}
{% set suffix = "nd" %}
{% elif last_digit == 3 %}
{% set suffix = "rd" %}
{% else %}
{% set suffix = "th" %}
{% endif %}
{% endif %}
{{ date | date(format="%-d") }}{{ suffix }} {{ date | date(format="%B %Y") }}
{% endif %}
{% endmacro %}

@ -1,38 +1,55 @@
{% macro list_posts(pages) %}
<div class="bloglist-container">
{% for page in pages %}
<section class="bloglist-table-row">
<div class="bloglist-title">
<a href="{{ page.permalink }}">{{ page.title }}</a>
</div>
{% macro list_posts(posts, max) %}
<div class="card-meta">
{% if page.date %}
{{ macros_format_date::format_date(date=page.date) }}
<div class="bloglist-container">
{% for post in posts %}
{% if loop.index <= max %}
{% if loop.index == max %}
<section class="bloglist-row">
{% elif loop.last %}
<section class="bloglist-row">
{% else %}
<section class="bloglist-row bottom-divider">
{% endif %}
<br/>
<span>{{ page.reading_time }} min read</span>
{% if page.draft %}
<span class="draft-label">DRAFT</span>
{% if post.date %}
<div class="date">
{{ post.date | date(format=config.extra.date_format | default (value="%d %B %Y")) }}
</div>
{% endif %}
</div>
<br/>
<div class="description">
{% if page.description %}
{{ page.description }}
{% elif page.summary %}
{{ page.summary | safe }}&hellip;
{% else %}
{% set hide_read_more = true %}
{% endif %}
</div>
<div class="bloglist-content">
<div class="bloglist-title">
<a href="{{ post.permalink }}">{{ post.title }}</a>
</div>
{% if not hide_read_more %}
<a class="readmore" href={{ page.permalink }}>Read more ⟶</a>
{% if post.taxonomies.tags %}
<div class="bloglist-tags">
{% for tag in post.taxonomies.tags %}
<a class="tag" href="{{ get_taxonomy_url(kind="tags", name=tag) }}">{{ tag }}</a>
{% endfor %}
</div>
{% endif %}
<div class="description">
{% if post.description %}
{{ post.description }}
{% elif post.summary %}
{{ post.summary | safe }}&hellip;
{% endif %}
</div>
<a class="readmore" href={{ post.permalink }}>Read more →</a>
</div>
</section>
{% endif %}
{% if not loop.last %}
{% if loop.index == max %}
<div class="all-posts">
<a href="{{ get_url(path="/blog/") }}">All posts ⟶</a>
</div>
{% endif %}
{% endif %}
</section>
{% endfor %}
</div>
{% endmacro %}

@ -1,16 +0,0 @@
{% macro list_title(pages, tag_name=false) %}
{% if tag_name %}
<div class="title-container section-title">Tag {{ term.name }}</div>
{% else %}
<h1 class="page-title">All articles</h1>
{% endif %}
<ul class="posts">
{% for page in pages %}
<li class="post">
<div><a href="{{ page.permalink }}">{{ page.title }}</a></div>
<span class="meta">{{ macros_format_date::format_date(date=page.date) }}</span>
</li>
{% endfor %}
</ul>
{% endmacro list_title %}

@ -1,4 +1,5 @@
{% macro page_desc(desc, page) %}
<div id="banner-container-home">
<div id="home-banner-text">
<div class="home-banner-header">{{ desc.title }}</div>
@ -10,4 +11,5 @@
<img alt="the owner" class="banner-home-img" src={{ desc.img | replace(from="$BASE_URL", to=config.base_url) | safe}} />
</div>
</div>
{% endmacro %}

@ -1,5 +1,7 @@
{% macro page_header(title) %}
<div class="title-container section-title">
<div class="title-container section-title bottom-divider">
{{ title }}
</div>
{% endmacro page_header %}

@ -0,0 +1,31 @@
{% macro paginate() %}
{% if paginator %}
<ul class="pagination">
{% if paginator.previous %}
<li class="page-item page-prev">
<a href="{{ paginator.previous }}" class="page-link" aria-label="Previous page">← Prev</a>
</li>
{% else %}
<li class="page-item page-prev">
<span class="page-link disabled" aria-disabled="true" aria-label="Previous (disabled)">← Prev</span>
</li>
{% endif %}
<li class="page-item page-numbers">
{{ paginator.current_index }} of {{ paginator.number_pagers }}
</li>
{% if paginator.next %}
<li class="page-item page-next">
<a href="{{ paginator.next }}" class="page-link" aria-label="Next page">Next →</a>
</li>
{% else %}
<li class="page-item page-next">
<span class="page-link disabled" aria-disabled="true" aria-label="Next page (disabled)">Next →</span>
</li>
{% endif %}
</ul>
{% endif %}
{% endmacro paginate %}

@ -16,7 +16,7 @@
{% set suffix = page.title %}
{% elif term.name %}
{# Individual tags. #}
{% set suffix = term.name ~ " tag" %}
{% set suffix = term.name %}
{% elif taxonomy.name %}
{# List of tags. #}
{% set suffix = taxonomy.name | capitalize %}

@ -1,5 +1,7 @@
{% extends "base.html" %}
{% block main_content %}
{{ macros_content::content(page=page)}}
{% endblock main_content %}

@ -1,14 +1,14 @@
<footer>
<section>
<nav class="socials nav-navs">
{%- if config.extra.socials %}
{% for social in config.extra.socials %}
<a rel="noopener noreferrer" target="_blank" class="nav-links social" href={{ social.url | safe | replace(from="$BASE_URL", to=config.base_url) }}>
<img alt={{ social.name }} title={{ social.name }} src="{{config.base_url}}/social_icons/{{ social.icon }}.svg">
</a>
{% endfor %}
{% endif %}
</nav>
<nav class="socials nav-navs">
{%- if config.extra.socials %}
{% for social in config.extra.socials %}
<a rel="noopener noreferrer" target="_blank" class="nav-links no-hover-padding social" href={{ social.url | safe | replace(from="$BASE_URL", to=config.base_url) }}>
<img alt={{ social.name }} title={{ social.name }} src="{{config.base_url}}/social_icons/{{ social.icon }}.svg">
</a>
{% endfor %}
{% endif %}
</nav>
</section>
<script src="{{ get_url(path='js/main.js', trailing_slash=false) | safe }}"/></script>
</footer>

@ -8,7 +8,7 @@
{# Favicon #}
{% if config.extra.favicon %}
<link rel="icon" type="image/png" href={{ config.extra.favicon }} />
<link rel="icon" type="image/png" href={{ config.extra.favicon }} />
{% endif %}
{# RSS #}
@ -17,16 +17,16 @@
<link rel="stylesheet" type="text/css" media="screen" href={{ get_url(path="main.css" ) }} />
{% if config.extra.stylesheets %}
{% for stylesheet in config.extra.stylesheets %}
<link rel="stylesheet" href="{{ get_url(path=stylesheet) }}">
{% endfor %}
{% for stylesheet in config.extra.stylesheets %}
<link rel="stylesheet" href="{{ get_url(path=stylesheet) }}">
{% endfor %}
{% endif %}
<meta name="description" content="{{ config.description }}">
{% if is_404 %}
<meta name="robots" content="noindex, follow">
<meta name="robots" content="noindex, follow">
{% else %}
<meta name="robots" content="index, nofollow">
<meta name="robots" content="index, nofollow">
{% endif %}
<meta property="og:title" content="{{ config.title }}">

@ -1,26 +1,26 @@
<header>
<nav class="navbar">
<div class="nav-title">
<a class="home-title" href={{ config.base_url }}>{{ config.title }}</a>
</div>
<nav class="navbar">
<div class="nav-title">
<a class="home-title" href={{ config.base_url }}>{{ config.title }}</a>
</div>
{%- if config.extra.menu %}
<div class="nav-navs">
<div>
{% for menu in config.extra.menu %}
<a class="nav-links" href={{ menu.url | safe | replace(from="$BASE_URL" , to=config.base_url) }}>{{ menu.name
}}</a>
{% endfor %}
</div>
<label class="theme-switcher" for="themeswitch">
<input type="checkbox" id="themeswitch">
<div class="switch">
<img alt="set dark theme" class="moon" src="{{ config.base_url }}/menu_icon/moon.svg">
<img alt="set light theme" class="sun" src="{{ config.base_url }}/menu_icon/sun.svg">
</div>
</label>
</div>
{% endif %}
{%- if config.extra.menu %}
<div class="nav-navs">
<div>
{% for menu in config.extra.menu %}
<a class="nav-links no-hover-padding" href={{ menu.url | safe | replace(from="$BASE_URL" , to=config.base_url) }}>{{ menu.name
}}</a>
{% endfor %}
</div>
<label class="theme-switcher" for="themeswitch">
<input type="checkbox" id="themeswitch">
<div class="switch">
<img alt="set dark theme" class="moon" src="{{ config.base_url }}/menu_icon/moon.svg">
<img alt="set light theme" class="sun" src="{{ config.base_url }}/menu_icon/sun.svg">
</div>
</label>
</div>
{% endif %}
</nav>
</header>
</nav>
</header>

@ -1,40 +1,32 @@
{% extends "base.html" %}
{% block main_content %}
{% if section.extra.section_path -%}
{% set section = get_section(path=section.extra.section_path) %}
{% set extra_section = get_section(path=section.extra.section_path) %}
{% endif -%}
{%- if section.extra.header %}
{{ macros_page_desc::page_desc(desc=section.extra.header, page=section) }}
{{ macros_page_desc::page_desc(desc=section.extra.header, page=section) }}
{% endif -%}
<main class="list">
<div>
{{ macros_page_header::page_header(title=section.title) }}
</div>
{%- if paginator %}
{%- set show_pages = paginator.pages -%}
{% else %}
{%- set show_pages = section.pages -%}
{% endif -%}
{{ macros_list_posts::list_posts(pages=show_pages) }}
<div>
{{ macros_page_header::page_header(title=section.title) }}
</div>
{%- if paginator %}
{%- set pages = paginator.pages -%}
{% else %}
{%- set pages = extra_section.pages -%}
{% endif -%}
{% set max = section.extra.max_posts | default(value=999999) %}
{{ macros_list_posts::list_posts(posts=pages, max=max) }}
</main>
{% if paginator %}
<div class="pagination">
{% if paginator.previous %}
<span class="page-item page-prev">
<a href={{ paginator.previous }} class="page-link" aria-label="Previous"><span aria-hidden="true">← Prev</span></a>
</span>
{% endif %}
{% if paginator.next %}
<span class="page-item page-next">
<a href={{ paginator.next }} class="page-link" aria-label="Next"><span aria-hidden="true">Next →</span></a>
</span>
{% endif %}
</div>
{{ macros_paginate::paginate() }}
{% endif %}
{% endblock main_content %}

@ -2,20 +2,19 @@
{% block main_content %}
{{ macros_page_header::page_header(title="Tags") }}
{{ macros_page_header::page_header(title="All tags")}}
<ul class="taglist-container">
{% for term in terms -%}
<section class="taglist-table-row">
<div class="bloglist-title">
<a href="{{ term.permalink }}"> {{ term.name }}</a>
<div class="tag-cloud">
<ul class="tags">
{% for term in terms %}
<div class="tags-item">
<li id "{{ term.name }}"><a href="{{ term.permalink | safe }}">
{{ term.name }}</a>
<span> {{ term.pages | length }} post{{ term.pages | length | pluralize }}</span>
</li>
</div>
<div class="card-meta">
{{ term.pages | length }} post{{ term.pages | length | pluralize }}
</div>
</section>
{% endfor %}
</ul>
{% endfor %}
</ul>
</div>
{% endblock main_content %}

@ -2,6 +2,15 @@
{% block main_content %}
{{ macros_list_title::list_title(pages=term.pages, tag_name=term.name) }}
{{ macros_page_header::page_header(title=term.name | title) }}
{% set max = section.extra.max_posts | default(value=999999) %}
{{ macros_list_posts::list_posts(posts=term.pages, max=max) }}
<ul class="pagination">
<li class="page-item">
<a class="all-tags" href="{{ get_url(path="/tags/") }}">← All tags</a>
</li>
</ul>
{% endblock main_content %}

Loading…
Cancel
Save