forked from github/pelican
Compare commits
11 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f5840e7f2d | |||
| da015db848 | |||
| 25aec6d05d | |||
| c0618e0a9c | |||
| df34aec7f2 | |||
| 755cabe0bb | |||
| 17234d7520 | |||
| cc07b2dbb0 | |||
| 101f856a82 | |||
| e663b95c9e | |||
| f8ca328568 |
13 changed files with 336 additions and 108 deletions
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"devDependencies": {
|
||||
"@tailwindcss/typography": "^0.5.16",
|
||||
"tailwindcss": "^4.0"
|
||||
"@tailwindcss/typography": "^0.5.15",
|
||||
"tailwindcss": "^3.4.17"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
@import "tailwindcss"; /* Preflight is injected here */
|
||||
@plugin "@tailwindcss/typography";
|
||||
@config "../../tailwind.config.js";
|
||||
@tailwind base; /* Preflight is injected here */
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
@layer base {
|
||||
@font-face {
|
||||
|
|
@ -52,6 +52,14 @@
|
|||
ul {
|
||||
@apply pl-4 list-disc;
|
||||
}
|
||||
|
||||
/* pelican tag_cloud */
|
||||
ul.tagcloud {
|
||||
@apply list-none p-0;
|
||||
}
|
||||
ul.tagcloud li {
|
||||
@apply inline-block p-1;
|
||||
}
|
||||
}
|
||||
|
||||
@layer components {
|
||||
|
|
@ -61,6 +69,11 @@
|
|||
}
|
||||
}
|
||||
|
||||
/*Hide heading anchor links unless hovering over them*/
|
||||
.headerlink {
|
||||
@apply no-underline text-rp-dawn-love ml-1 md:ml-2 hover:no-underline;
|
||||
}
|
||||
|
||||
.note {
|
||||
@apply bg-rp-dawn-highlight-med dark:bg-rp-moon-highlight-med m-8 p-4;
|
||||
}
|
||||
|
|
@ -68,6 +81,14 @@
|
|||
@apply bg-rp-dawn-text text-rp-dawn-base dark:bg-rp-moon-text dark:text-rp-moon-base m-8 p-4;
|
||||
}
|
||||
|
||||
/*Attempt to only float thumbnails to the right*/
|
||||
.image-process-article-image,
|
||||
.image-process-thumb,
|
||||
.image-process-responsive {
|
||||
/*@apply lg:float-right p-2 lg:p-4;*/
|
||||
@apply lg:float-right px-1 lg:px-3;
|
||||
}
|
||||
|
||||
#skiptocontent a {
|
||||
position: absolute;
|
||||
top: -40px;
|
||||
|
|
|
|||
|
|
@ -718,6 +718,18 @@ ul {
|
|||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
/* pelican tag_cloud */
|
||||
|
||||
ul.tagcloud {
|
||||
list-style-type: none;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
ul.tagcloud li {
|
||||
display: inline-block;
|
||||
padding: 0.25rem;
|
||||
}
|
||||
|
||||
/* Preflight is injected here */
|
||||
|
||||
.prose {
|
||||
|
|
@ -1209,6 +1221,22 @@ code {
|
|||
}
|
||||
}
|
||||
|
||||
.absolute {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.relative {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.z-10 {
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.z-20 {
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.col-span-1 {
|
||||
grid-column: span 1 / span 1;
|
||||
}
|
||||
|
|
@ -1217,8 +1245,8 @@ code {
|
|||
grid-column: span 2 / span 2;
|
||||
}
|
||||
|
||||
.col-span-7 {
|
||||
grid-column: span 7 / span 7;
|
||||
.col-span-3 {
|
||||
grid-column: span 3 / span 3;
|
||||
}
|
||||
|
||||
.col-span-9 {
|
||||
|
|
@ -1233,8 +1261,8 @@ code {
|
|||
margin: 1rem;
|
||||
}
|
||||
|
||||
.-mt-9 {
|
||||
margin-top: -2.25rem;
|
||||
.-mt-11 {
|
||||
margin-top: -2.75rem;
|
||||
}
|
||||
|
||||
.mb-2 {
|
||||
|
|
@ -1286,6 +1314,11 @@ code {
|
|||
width: 2rem;
|
||||
}
|
||||
|
||||
.-rotate-3 {
|
||||
--tw-rotate: -3deg;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
|
||||
.list-outside {
|
||||
list-style-position: outside;
|
||||
}
|
||||
|
|
@ -1310,14 +1343,14 @@ code {
|
|||
grid-template-columns: repeat(9, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.grid-cols-\[max-content_max-content_max-content\] {
|
||||
grid-template-columns: max-content max-content max-content;
|
||||
}
|
||||
|
||||
.grid-cols-\[max-content_max-content_max-content_max-content_max-content\] {
|
||||
grid-template-columns: max-content max-content max-content max-content max-content;
|
||||
}
|
||||
|
||||
.grid-cols-\[max-content_max-content_max-content_max-content_max-content_max-content\] {
|
||||
grid-template-columns: max-content max-content max-content max-content max-content max-content;
|
||||
}
|
||||
|
||||
.items-center {
|
||||
align-items: center;
|
||||
}
|
||||
|
|
@ -1335,6 +1368,10 @@ code {
|
|||
hyphens: auto;
|
||||
}
|
||||
|
||||
.rounded-full {
|
||||
border-radius: 9999px;
|
||||
}
|
||||
|
||||
.border-b-2 {
|
||||
border-bottom-width: 2px;
|
||||
}
|
||||
|
|
@ -1358,6 +1395,11 @@ code {
|
|||
background-color: rgb(250 244 237 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.bg-rp-dawn-gold {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(234 157 52 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.bg-rp-dawn-overlay {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(242 233 225 / var(--tw-bg-opacity, 1));
|
||||
|
|
@ -1368,6 +1410,28 @@ code {
|
|||
background-color: rgb(255 250 243 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.bg-gradient-to-r {
|
||||
background-image: linear-gradient(to right, var(--tw-gradient-stops));
|
||||
}
|
||||
|
||||
.from-rp-dawn-gold {
|
||||
--tw-gradient-from: #ea9d34 var(--tw-gradient-from-position);
|
||||
--tw-gradient-to: rgb(234 157 52 / 0) var(--tw-gradient-to-position);
|
||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||
}
|
||||
|
||||
.from-10\% {
|
||||
--tw-gradient-from-position: 10%;
|
||||
}
|
||||
|
||||
.to-rp-dawn-pine {
|
||||
--tw-gradient-to: #286983 var(--tw-gradient-to-position);
|
||||
}
|
||||
|
||||
.to-90\% {
|
||||
--tw-gradient-to-position: 90%;
|
||||
}
|
||||
|
||||
.p-1 {
|
||||
padding: 0.25rem;
|
||||
}
|
||||
|
|
@ -1380,14 +1444,19 @@ code {
|
|||
padding: 1rem;
|
||||
}
|
||||
|
||||
.p-5 {
|
||||
padding: 1.25rem;
|
||||
}
|
||||
|
||||
.p-8 {
|
||||
padding: 2rem;
|
||||
}
|
||||
|
||||
.px-2 {
|
||||
padding-left: 0.5rem;
|
||||
padding-right: 0.5rem;
|
||||
}
|
||||
|
||||
.pb-4 {
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
|
||||
.pb-60 {
|
||||
padding-bottom: 15rem;
|
||||
}
|
||||
|
|
@ -1423,6 +1492,16 @@ code {
|
|||
line-height: 2.5rem;
|
||||
}
|
||||
|
||||
.text-base {
|
||||
font-size: 1rem;
|
||||
line-height: 1.5rem;
|
||||
}
|
||||
|
||||
.text-sm {
|
||||
font-size: 0.875rem;
|
||||
line-height: 1.25rem;
|
||||
}
|
||||
|
||||
.text-xl {
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.75rem;
|
||||
|
|
@ -1436,6 +1515,10 @@ code {
|
|||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.capitalize {
|
||||
text-transform: capitalize;
|
||||
}
|
||||
|
||||
.italic {
|
||||
font-style: italic;
|
||||
}
|
||||
|
|
@ -1445,11 +1528,6 @@ code {
|
|||
color: rgb(86 148 159 / var(--tw-text-opacity, 1));
|
||||
}
|
||||
|
||||
.text-rp-dawn-love {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(180 99 122 / var(--tw-text-opacity, 1));
|
||||
}
|
||||
|
||||
.text-rp-dawn-overlay {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(242 233 225 / var(--tw-text-opacity, 1));
|
||||
|
|
@ -1475,6 +1553,25 @@ code {
|
|||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
/*Hide heading anchor links unless hovering over them*/
|
||||
|
||||
.headerlink {
|
||||
margin-left: 0.25rem;
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(180 99 122 / var(--tw-text-opacity, 1));
|
||||
text-decoration-line: none;
|
||||
}
|
||||
|
||||
.headerlink:hover {
|
||||
text-decoration-line: none;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.headerlink {
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
.note {
|
||||
margin: 2rem;
|
||||
--tw-bg-opacity: 1;
|
||||
|
|
@ -1507,6 +1604,26 @@ code {
|
|||
}
|
||||
}
|
||||
|
||||
/*Attempt to only float thumbnails to the right*/
|
||||
|
||||
.image-process-article-image,
|
||||
.image-process-thumb,
|
||||
.image-process-responsive {
|
||||
/*@apply lg:float-right p-2 lg:p-4;*/
|
||||
padding-left: 0.25rem;
|
||||
padding-right: 0.25rem;
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.image-process-article-image,
|
||||
.image-process-thumb,
|
||||
.image-process-responsive {
|
||||
float: right;
|
||||
padding-left: 0.75rem;
|
||||
padding-right: 0.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
#skiptocontent a {
|
||||
position: absolute;
|
||||
top: -40px;
|
||||
|
|
@ -2070,6 +2187,11 @@ code {
|
|||
text-decoration-line: none;
|
||||
}
|
||||
|
||||
.prose-img\:mx-auto :is(:where(img):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.prose-img\:rounded :is(:where(img):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
|
@ -2083,19 +2205,18 @@ code {
|
|||
grid-column: span 6 / span 6;
|
||||
}
|
||||
|
||||
.md\:grid-cols-5 {
|
||||
grid-template-columns: repeat(5, minmax(0, 1fr));
|
||||
.md\:col-span-7 {
|
||||
grid-column: span 7 / span 7;
|
||||
}
|
||||
|
||||
.md\:grid-cols-6 {
|
||||
grid-template-columns: repeat(6, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.md\:border-l-4 {
|
||||
border-left-width: 4px;
|
||||
}
|
||||
|
||||
.md\:text-2xl {
|
||||
font-size: 1.5rem;
|
||||
line-height: 2rem;
|
||||
}
|
||||
|
||||
.md\:text-3xl {
|
||||
font-size: 1.875rem;
|
||||
line-height: 2.25rem;
|
||||
|
|
@ -2115,6 +2236,11 @@ code {
|
|||
font-size: 1rem;
|
||||
line-height: 1.5rem;
|
||||
}
|
||||
|
||||
.md\:text-xl {
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
|
|
@ -2150,6 +2276,11 @@ code {
|
|||
background-color: rgb(57 53 82 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.dark\:bg-rp-moon-pine {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(62 143 176 / var(--tw-bg-opacity, 1));
|
||||
}
|
||||
|
||||
.dark\:bg-rp-moon-surface {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgb(42 39 63 / var(--tw-bg-opacity, 1));
|
||||
|
|
@ -2160,6 +2291,11 @@ code {
|
|||
color: rgb(156 207 216 / var(--tw-text-opacity, 1));
|
||||
}
|
||||
|
||||
.dark\:text-rp-moon-highlight-med {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(68 65 90 / var(--tw-text-opacity, 1));
|
||||
}
|
||||
|
||||
.dark\:text-rp-moon-iris {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(196 167 231 / var(--tw-text-opacity, 1));
|
||||
|
|
@ -2170,6 +2306,11 @@ code {
|
|||
color: rgb(234 154 151 / var(--tw-text-opacity, 1));
|
||||
}
|
||||
|
||||
.dark\:text-rp-moon-surface {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(42 39 63 / var(--tw-text-opacity, 1));
|
||||
}
|
||||
|
||||
.dark\:text-rp-moon-text {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgb(224 222 244 / var(--tw-text-opacity, 1));
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ SITENAME|striptags }} - Archives{% endblock %}
|
||||
{% block title %}Blog archive - {{ SITENAME|striptags }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="md:text-base lg:text-lg">
|
||||
<h1 class="text-3xl md:text-5xl">Blog archive</h1>
|
||||
<h1 class="text-3xl md:text-5xl">Blog post archive</h1>
|
||||
<ul class="hyphens-auto list-outside list-disc">
|
||||
|
||||
{% for article in dates %}
|
||||
{% set year = article.date.strftime('%Y') %}
|
||||
{% if loop.first %}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{% extends "base.html" %}
|
||||
{% block html_lang %}{{ article.lang }}{% endblock %}
|
||||
|
||||
{% block title %}{{ SITENAME|striptags }} - {{ article.title|striptags }}{% endblock %}
|
||||
{% block title %}{{ article.title|striptags }} - {{ SITENAME|striptags }}{% endblock %}
|
||||
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
|
|
@ -17,11 +17,11 @@
|
|||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<article class="prose dark:prose-dark md:prose-base lg:prose-lg prose-img:rounded hyphens-auto">
|
||||
<article class="prose dark:prose-dark md:prose-base lg:prose-lg prose-img:rounded prose-img:mx-auto hyphens-auto">
|
||||
<header>
|
||||
<h1 class="text-3xl md:text-5xl">
|
||||
{{ article.title }}
|
||||
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}" class="no-underline text-rp-dawn-overlay">#</a>
|
||||
<a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}" class="no-underline text-rp-dawn-pine dark:text-rp-moon-iris">#</a>
|
||||
</h1>
|
||||
<ul class="list-none border-b-2 border-rp-dawn-overlay dark:border-rp-moon-overlay">
|
||||
<li>
|
||||
|
|
@ -29,7 +29,7 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5">
|
||||
<path fill-rule="evenodd" d="M10 18a8 8 0 1 0 0-16 8 8 0 0 0 0 16Zm.75-13a.75.75 0 0 0-1.5 0v5c0 .414.336.75.75.75h4a.75.75 0 0 0 0-1.5h-3.25V5Z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
{{ article.stats['read_mins']*1.5|round|int }} min. read
|
||||
{{ article.stats['read_mins']*1.5|round|int }} min. read ({{ article.stats['wc'] }} words)
|
||||
</span>
|
||||
<span class="flex items-center">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5">
|
||||
|
|
@ -41,16 +41,18 @@
|
|||
<li>
|
||||
<time class="flex items-center" datetime="{{ article.date.isoformat() }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5">
|
||||
<title>Publication date</title>
|
||||
<path fill-rule="evenodd" d="M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z" clip-rule="evenodd" />
|
||||
<path fill-rule="evenodd" d="M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z" clip-rule="evenodd">
|
||||
<title>Publication date</title>
|
||||
</path>
|
||||
</svg>
|
||||
{{ article.locale_date }}
|
||||
</time>
|
||||
{% if article.modified %}
|
||||
<time class="flex items-center" datetime="{{ article.modified.isoformat() }}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5">
|
||||
<title>Modification date</title>
|
||||
<path fill-rule="evenodd" d="M10 4.5c1.215 0 2.417.055 3.604.162a.68.68 0 0 1 .615.597c.124 1.038.208 2.088.25 3.15l-1.689-1.69a.75.75 0 0 0-1.06 1.061l2.999 3a.75.75 0 0 0 1.06 0l3.001-3a.75.75 0 1 0-1.06-1.06l-1.748 1.747a41.31 41.31 0 0 0-.264-3.386 2.18 2.18 0 0 0-1.97-1.913 41.512 41.512 0 0 0-7.477 0 2.18 2.18 0 0 0-1.969 1.913 41.16 41.16 0 0 0-.16 1.61.75.75 0 1 0 1.495.12c.041-.52.093-1.038.154-1.552a.68.68 0 0 1 .615-.597A40.012 40.012 0 0 1 10 4.5ZM5.281 9.22a.75.75 0 0 0-1.06 0l-3.001 3a.75.75 0 1 0 1.06 1.06l1.748-1.747c.042 1.141.13 2.27.264 3.386a2.18 2.18 0 0 0 1.97 1.913 41.533 41.533 0 0 0 7.477 0 2.18 2.18 0 0 0 1.969-1.913c.064-.534.117-1.071.16-1.61a.75.75 0 1 0-1.495-.12c-.041.52-.093 1.037-.154 1.552a.68.68 0 0 1-.615.597 40.013 40.013 0 0 1-7.208 0 .68.68 0 0 1-.615-.597 39.785 39.785 0 0 1-.25-3.15l1.689 1.69a.75.75 0 0 0 1.06-1.061l-2.999-3Z" clip-rule="evenodd" />
|
||||
<path fill-rule="evenodd" d="M10 4.5c1.215 0 2.417.055 3.604.162a.68.68 0 0 1 .615.597c.124 1.038.208 2.088.25 3.15l-1.689-1.69a.75.75 0 0 0-1.06 1.061l2.999 3a.75.75 0 0 0 1.06 0l3.001-3a.75.75 0 1 0-1.06-1.06l-1.748 1.747a41.31 41.31 0 0 0-.264-3.386 2.18 2.18 0 0 0-1.97-1.913 41.512 41.512 0 0 0-7.477 0 2.18 2.18 0 0 0-1.969 1.913 41.16 41.16 0 0 0-.16 1.61.75.75 0 1 0 1.495.12c.041-.52.093-1.038.154-1.552a.68.68 0 0 1 .615-.597A40.012 40.012 0 0 1 10 4.5ZM5.281 9.22a.75.75 0 0 0-1.06 0l-3.001 3a.75.75 0 1 0 1.06 1.06l1.748-1.747c.042 1.141.13 2.27.264 3.386a2.18 2.18 0 0 0 1.97 1.913 41.533 41.533 0 0 0 7.477 0 2.18 2.18 0 0 0 1.969-1.913c.064-.534.117-1.071.16-1.61a.75.75 0 1 0-1.495-.12c-.041.52-.093 1.037-.154 1.552a.68.68 0 0 1-.615.597 40.013 40.013 0 0 1-7.208 0 .68.68 0 0 1-.615-.597 39.785 39.785 0 0 1-.25-3.15l1.689 1.69a.75.75 0 0 0 1.06-1.061l-2.999-3Z" clip-rule="evenodd">
|
||||
<title>Modification date</title>
|
||||
</path>
|
||||
</svg>
|
||||
{{ article.locale_modified }}
|
||||
</time>
|
||||
|
|
@ -107,10 +109,31 @@
|
|||
Share this post on
|
||||
<a href="{{article.share_post['bluesky']}}" title="Share post on Bluesky">Bluesky</a>,
|
||||
<a href="{{article.share_post['mastodon']}}" title="Share post on Mastodon">Mastodon</a>,
|
||||
<a href="{{article.share_post['reddit']}}" title="Share post on Reddit">Reddit</a> or
|
||||
<a href="{{article.share_post['reddit']}}" title="Share post on Reddit">Reddit</a>,
|
||||
<a href="{{article.share_post['hacker-news']}}" title="Share post on Hacker News">Hacker News</a> or
|
||||
<a href="{{article.share_post['twitter']}}" title="Share post on evil Twitter">Twitter</a>.
|
||||
</p>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="p-3">
|
||||
<p>
|
||||
<script>
|
||||
var remark_config = {
|
||||
host: 'https://ceres.fly.dev',
|
||||
site_id: 'lugh.ch',
|
||||
components: ['embed', 'last-comments'],
|
||||
max_shown_comments: 15,
|
||||
max_last_comments: 15,
|
||||
theme: 'dark',
|
||||
locale: 'en',
|
||||
show_email_subscription: false,
|
||||
simple_view: true,
|
||||
no_footer: true
|
||||
}
|
||||
</script>
|
||||
<script>!function(e,n){for(var o=0;o<e.length;o++){var r=n.createElement("script"),c=".js",d=n.head||n.body;"noModule"in r?(r.type="module",c=".mjs"):r.async=!0,r.defer=!0,r.src=remark_config.host+"/web/"+e[o]+c,d.appendChild(r)}}(remark_config.components||["embed"],document);</script>
|
||||
<div id="remark42"></div>
|
||||
</p>
|
||||
</div>
|
||||
</article>
|
||||
{% endblock %}
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ SITENAME|striptags }} - Authors{% endblock %}
|
||||
{% block title %}Authors - {{ SITENAME|striptags }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1 class="text-3xl md:text-5xl">Authors on {{ SITENAME }}</h1>
|
||||
<ul>
|
||||
{% for author, articles in authors|sort %}
|
||||
<li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h1 class="text-3xl md:text-5xl">Authors</h1>
|
||||
It's all me, silly you.
|
||||
<!-- <ul> -->
|
||||
<!-- {% for author, articles in authors|sort %} -->
|
||||
<!-- <li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li> -->
|
||||
<!-- {% endfor %} -->
|
||||
<!-- </ul> -->
|
||||
{% endblock %}
|
||||
|
|
|
|||
|
|
@ -5,10 +5,11 @@
|
|||
<title>{% block title %}{{ SITENAME|striptags }}{% endblock title %}</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="Pelican" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
{% if SITESUBTITLE %}
|
||||
<meta name="description" content="{{ SITESUBTITLE }}" />
|
||||
{% endif %}
|
||||
<meta name="abuseipdb-verification" content="RrusxCrq" />
|
||||
{% if STYLESHEET_URL %}
|
||||
<link rel="stylesheet" type="text/css" href="{{ STYLESHEET_URL }}" />
|
||||
{% endif %}
|
||||
|
|
@ -36,9 +37,8 @@
|
|||
{% if TAG_FEED_RSS and tag %}
|
||||
<link href="{{ FEED_DOMAIN }}/{% if TAG_FEED_RSS_URL %}{{ TAG_FEED_RSS_URL.format(slug=tag.slug) }}{% else %}{{ TAG_FEED_RSS.format(slug=tag.slug) }}{% endif %}" type="application/rss+xml" rel="alternate" title="{{ SITENAME|striptags }} Tags RSS Feed" />
|
||||
{% endif %}
|
||||
<link href="https://api.fontshare.com/v2/css?f[]=erode@400&f[]=fira-sans@600&f[]=stardom@400&display=swap" rel="stylesheet">
|
||||
<link href="https://api.fontshare.com/v2/css?f[]=erode@400&f[]=fira-sans@600&f[]=stardom@400&display=swap" rel="stylesheet" />
|
||||
<script src="/theme/js/prism.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/theme/css/prism.css" />
|
||||
<link rel="stylesheet" type="text/css" href="/theme/css/prism-rose-pine-moon-alt.css" />
|
||||
<style>
|
||||
code[class*="language-"],
|
||||
|
|
@ -49,6 +49,23 @@
|
|||
/* Align prism.js font size to main font size */
|
||||
font-size: 0.9rem;
|
||||
}
|
||||
ul.tagcloud {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
}
|
||||
<!-- Pelican tag_cloud -->
|
||||
ul.tagcloud li {
|
||||
display: inline-block;
|
||||
}
|
||||
li.tag-1 {
|
||||
font-size: 160%;
|
||||
}
|
||||
li.tag-2 {
|
||||
font-size: 130%;
|
||||
}
|
||||
li.tag-3 {
|
||||
font-size: 100%;
|
||||
}
|
||||
</style>
|
||||
{% endblock head %}
|
||||
</head>
|
||||
|
|
@ -59,9 +76,9 @@
|
|||
<header>
|
||||
<div id="skiptocontent"><a href="#content">skip to main content</a></div>
|
||||
<hgroup>
|
||||
<h1 class="text-4xl md:text-7xl font-bold text-rp-dawn-foam"><a class="no-underline text-rp-dawn-pine dark:text-rp-moon-foam" href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>
|
||||
<h1 class="z-20 relative text-4xl md:text-7xl font-bold text-rp-dawn-foam"><a class="no-underline hover:no-underline text-rp-dawn-pine dark:text-rp-moon-foam" href="{{ SITEURL }}/">{{ SITENAME }}</a></h1>
|
||||
{% if SITESUBTITLE %}
|
||||
<h2 class="text-xl -mt-9 ml-14 md:text-2xl text-rp-dawn-love dark:text-rp-moon-iris"><tt style="font-family: 'C64 Pro Mono'; letter-spacing: -0.2em;">{{ SITESUBTITLE }}</tt></h2>
|
||||
<h2 class="z-10 bg-gradient-to-r from-rp-dawn-gold from-10% to-rp-dawn-pine to-90% absolute -rotate-3 text-base -mt-11 ml-14 md:text-xl text-rp-dawn-overlay dark:text-rp-moon-highlight-med"><tt style="font-family: 'C64 Pro Mono'; letter-spacing: -0.2em;">{{ SITESUBTITLE }}</tt></h2>
|
||||
{% endif %}
|
||||
</hgroup>
|
||||
</header>
|
||||
|
|
@ -72,7 +89,7 @@
|
|||
{% if DISPLAY_PAGES_ON_MENU %}
|
||||
<div>
|
||||
{% for p in pages %}
|
||||
<li><a href="{{ SITEURL }}/{{ p.url }}" class="no-underline" {% if p==page %} aria-current="page" {% endif %}>{{ p.title }}</a></li>
|
||||
<li><a href="{{ SITEURL }}/{{ p.url }}" class="no-underline" {% if p==page %} aria-current="page" {% endif %}>{{ p.title }}</a></li>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
@ -98,7 +115,7 @@
|
|||
<div class="bg-rp-dawn-base dark:bg-rp-moon-base">
|
||||
<!--Empty spacer-->
|
||||
</div>
|
||||
<div class="col-span-7 bg-rp-dawn-base dark:bg-rp-moon-base p-4">
|
||||
<div class="col-span-9 md:col-span-7 bg-rp-dawn-base dark:bg-rp-moon-base p-4">
|
||||
<main id="content">
|
||||
{% block content %}
|
||||
{% endblock %}
|
||||
|
|
@ -111,27 +128,25 @@
|
|||
<div class="bg-rp-dawn-surface dark:bg-rp-moon-surface">
|
||||
<!--Empty spacer-->
|
||||
</div>
|
||||
<div class="col-span-7 pt-20 pb-60 bg-rp-dawn-surface dark:bg-rp-moon-surface text-rp-dawn-text dark:text-rp-moon-rose">
|
||||
<div class="col-span-9 md:col-span-7 pt-20 pb-60 bg-rp-dawn-surface dark:bg-rp-moon-surface text-rp-dawn-text dark:text-rp-moon-rose">
|
||||
<footer>
|
||||
<div class="grid grid-cols-1 md:grid-cols-5">
|
||||
<div class="col-span-2 p-5">
|
||||
<div class="grid grid-cols-1 md:grid-cols-6">
|
||||
<div class="col-span-3 p-4">
|
||||
<p>
|
||||
Generated by <a href="https://getpelican.com" target="_blank">Pelican</a> with a
|
||||
<a href="https://arrakis.fly.dev/weeheavy/pelican-theme" target="_blank">bespoke</a> theme inspired by <a href="https://rosepinetheme.com" target="_blank">Rosé Pine</a>.
|
||||
Generated by <a href="https://getpelican.com">Pelican</a> with a
|
||||
<a href="https://haddock.crabdance.com/code/weeheavy/pelican-theme" rel="nofollow">bespoke</a> theme inspired by <a href="https://rosepinetheme.com">Rosé Pine</a>.
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://buymeacoffee.com/lugh" target="_blank"><b>Buy me a coffee?</b></a>
|
||||
<a href="https://buymeacoffee.com/lugh"><b>Buy me a coffee?</b></a>
|
||||
</p>
|
||||
</div>
|
||||
<div class="p-5 md:border-l-4 border-rp-dawn-overlay dark:border-rp-moon-overlay">
|
||||
<p>
|
||||
<!--Valid <a href="https://wave.webaim.org/report#/https://lugh.ch" target="_blank">WCAG AAA</a>.-->
|
||||
<div class="col-span-3 p-4 md:border-l-4 border-rp-dawn-overlay dark:border-rp-moon-overlay">
|
||||
<p class="pb-4">
|
||||
100% artisanal <a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1" rel="license noopener noreferrer" style="display: inline-block">content licensed under <em>CC BY-SA 4.0</em></a>,
|
||||
mostly <a href="https://wave.webaim.org/report#/https://lugh.ch/{{ output_file }}">valid <em>WCAG 2.2 AA</em></a>.
|
||||
</p>
|
||||
<p>
|
||||
100% organic content licensed under <a href="https://creativecommons.org/licenses/by-sa/4.0/?ref=chooser-v1" target="_blank" rel="license noopener noreferrer" style="display: inline-block">CC BY-SA 4.0</a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="/feeds/atom.xml" target="_blank">Atom feed</a>
|
||||
<p class="pb-4">
|
||||
<a href="/feeds/atom.xml">Atom feed</a> of all blog posts.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ SITENAME|striptags }} - Categories{% endblock %}
|
||||
{% block title %}Categories - {{ SITENAME|striptags }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="md:text-base lg:text-lg">
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{% block title %}{{ SITENAME|striptags }} - {{ category }} category{% endblock %}
|
||||
{% block title %}{{ category }} - {{ SITENAME|striptags }}{% endblock %}
|
||||
|
||||
{% block content_title %}
|
||||
<h1 class="text-3xl md:text-5xl">Tales from the <em>{{ category }}</em> department</h1>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "base.html" %}
|
||||
{% block html_lang %}{{ page.lang }}{% endblock %}
|
||||
{% block title %}{{ SITENAME|striptags }} - {{ page.title|striptags }}{%endblock%}
|
||||
{% block title %}{{ page.title|striptags }} - {{ SITENAME|striptags }} {%endblock%}
|
||||
|
||||
{% block head %}
|
||||
{{ super() }}
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
{% if DEFAULT_PAGINATION %} {% set first_page = articles_paginator.page(1) %} {%
|
||||
set last_page = articles_paginator.page(articles_paginator.num_pages) %}
|
||||
{% if DEFAULT_PAGINATION %}
|
||||
{% set first_page = articles_paginator.page(1) %}
|
||||
{% set last_page = articles_paginator.page(articles_paginator.num_pages) %}
|
||||
<nav class="flex justify-center items-center">
|
||||
{% if articles_page.has_previous() %}
|
||||
<ul class="list-none inline-grid grid-cols-[max-content_max-content_max-content_max-content_max-content] border-t-2 border-rp-dawn-overlay dark:border-rp-moon-overlay m-4 p-4">
|
||||
{% if articles_page.has_previous() %}
|
||||
<ul class="list-none inline-grid grid-cols-[max-content_max-content_max-content_max-content_max-content_max-content] border-t-2 border-rp-dawn-overlay dark:border-rp-moon-overlay m-4 p-4">
|
||||
<span class="p-1">
|
||||
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-12">
|
||||
<a
|
||||
|
|
@ -12,34 +13,47 @@ set last_page = articles_paginator.page(articles_paginator.num_pages) %}
|
|||
><tt>«</tt></a>
|
||||
</li>
|
||||
</span>
|
||||
{% else %}
|
||||
<!--If we are on the first page, there's no previous links, so reduce grid sizing-->
|
||||
<ul class="list-none inline-grid grid-cols-[max-content_max-content_max-content] border-t-2 border-rp-dawn-overlay dark:border-rp-moon-overlay m-4 p-4">
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<!--If we are on the first page, there's no previous links, so reduce grid sizing-->
|
||||
<ul class="list-none inline-grid grid-cols-[max-content_max-content_max-content_max-content_max-content] border-t-2 border-rp-dawn-overlay dark:border-rp-moon-overlay m-4 p-4">
|
||||
{% endif %}
|
||||
<!-- Current page -->
|
||||
<span class="p-1">
|
||||
<li class="text-center">
|
||||
Page {{ articles_page.number }} of {{ articles_paginator.num_pages }}
|
||||
<li class="text-center bg-rp-dawn-gold dark:bg-rp-moon-pine dark:text-rp-moon-surface w-8 font-bold">
|
||||
{{ articles_page.number }}
|
||||
</li>
|
||||
</span>
|
||||
{% if articles_page.has_next() %}
|
||||
<span class="p-1">
|
||||
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-8">
|
||||
<a
|
||||
class="block no-underline hover:no-underline"
|
||||
href="{{ SITEURL }}/{{ articles_next_page.url }}"
|
||||
title="Go to page {{ articles_page.next_page_number() }}"
|
||||
>{{ articles_page.next_page_number() }}</a>
|
||||
</li>
|
||||
</span>
|
||||
<span class="p-1">
|
||||
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-12">
|
||||
<a
|
||||
class="block no-underline hover:no-underline align-top"
|
||||
href="{{ SITEURL }}/{{ articles_next_page.url }}"
|
||||
title="Go to the next page"
|
||||
><tt>»</tt></a>
|
||||
</li>
|
||||
</span>
|
||||
<span class="p-1">
|
||||
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-8">
|
||||
<a
|
||||
class="block no-underline hover:no-underline"
|
||||
href="{{ SITEURL }}/{{ articles_next_page.url }}"
|
||||
title="Go to page {{ articles_page.next_page_number() }}"
|
||||
>{{ articles_page.next_page_number() }}</a>
|
||||
</li>
|
||||
</span>
|
||||
<span class="p-1">
|
||||
…
|
||||
</span>
|
||||
<span class="p-1">
|
||||
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-8">
|
||||
<a
|
||||
class="block no-underline hover:no-underline"
|
||||
href="{{ SITEURL }}/{{ last_page.url }}"
|
||||
title="Go to last page"
|
||||
>{{ articles_paginator.num_pages }}</a>
|
||||
</li>
|
||||
</span>
|
||||
<span class="p-1">
|
||||
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-12">
|
||||
<a
|
||||
class="block no-underline hover:no-underline align-top"
|
||||
href="{{ SITEURL }}/{{ articles_next_page.url }}"
|
||||
title="Go to the next page"
|
||||
><tt>»</tt></a>
|
||||
</li>
|
||||
</span>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "index.html" %}
|
||||
|
||||
{% block title %}{{ SITENAME|striptags }} - {{ tag }} tag{% endblock %}
|
||||
{% block title %} {{ tag|capitalize }} - {{ SITENAME|striptags }}{% endblock %}
|
||||
|
||||
{% block content_title %}
|
||||
<h1 class="text-3xl md:text-5xl">Tales tagged with <em>{{ tag }}</em></h1>
|
||||
|
|
|
|||
|
|
@ -1,12 +1,26 @@
|
|||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{ SITENAME|striptags }} - Tags{% endblock %}
|
||||
{% block title %}Tags - {{ SITENAME|striptags }}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h1 class="text-3xl md:text-5xl">Tags for {{ SITENAME }}</h1>
|
||||
<ul>
|
||||
{% for tag, articles in tags|sort %}
|
||||
<li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<h1 class="text-3xl md:text-5xl">Article tags</h1>
|
||||
|
||||
<ul class="tagcloud">
|
||||
{% for tag in tag_cloud %}
|
||||
<li class="tag-{{ tag.1 }}">
|
||||
<a class="no-underline" title="{{ tag.2 }} articles" href="{{ SITEURL }}/{{ tag.0.url }}">
|
||||
{{ tag.0 }}
|
||||
</a>
|
||||
{% if TAG_CLOUD_BADGE %}
|
||||
<span class="bg-rp-dawn-overlay dark:bg-rp-moon-surface text-rp-dawn-pine dark:text-rp-moon-foam rounded-full px-2 text-sm">{{ tag.2 }}</span>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<!-- <ul> -->
|
||||
<!-- {% for tag, articles in tags|sort %} -->
|
||||
<!-- <li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li> -->
|
||||
<!-- {% endfor %} -->
|
||||
<!-- </ul> -->
|
||||
{% endblock %}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue