From 864410bb0d0dcc75587534f141c9ba837ab817e1 Mon Sep 17 00:00:00 2001 From: Oliver Ladner Date: Thu, 23 Jan 2025 09:22:36 +0100 Subject: [PATCH 01/16] feat: first fixed for Tailwind v4 --- package.json | 4 ++-- static/css/in.css | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 969943e4..1710bb14 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "devDependencies": { - "@tailwindcss/typography": "^0.5.15", - "tailwindcss": "^3.4.17" + "@tailwindcss/typography": "^0.5.16", + "tailwindcss": "^4.0" } } diff --git a/static/css/in.css b/static/css/in.css index 5b239dda..81a35e8f 100644 --- a/static/css/in.css +++ b/static/css/in.css @@ -1,6 +1,6 @@ -@tailwind base; /* Preflight is injected here */ -@tailwind components; -@tailwind utilities; +@import "tailwindcss"; /* Preflight is injected here */ +@plugin "@tailwindcss/typography"; +@config "../../tailwind.config.js"; @layer base { @font-face { From f8ca32856896adf27033cba81769b6d9ae15f667 Mon Sep 17 00:00:00 2001 From: Oliver Ladner Date: Mon, 17 Feb 2025 11:08:37 +0100 Subject: [PATCH 02/16] feat: image floats, wcag, remove target blank links --- static/css/in.css | 13 ++++++++ static/css/out.css | 75 +++++++++++++++++++++++++++++++++++++----- templates/article.html | 6 ++-- templates/base.html | 22 ++++++------- 4 files changed, 93 insertions(+), 23 deletions(-) diff --git a/static/css/in.css b/static/css/in.css index 5b239dda..76442b38 100644 --- a/static/css/in.css +++ b/static/css/in.css @@ -61,6 +61,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 +73,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; diff --git a/static/css/out.css b/static/css/out.css index edc93ef0..11e62890 100644 --- a/static/css/out.css +++ b/static/css/out.css @@ -1217,6 +1217,10 @@ code { grid-column: span 2 / span 2; } +.col-span-3 { + grid-column: span 3 / span 3; +} + .col-span-7 { grid-column: span 7 / span 7; } @@ -1368,6 +1372,16 @@ code { background-color: rgb(255 250 243 / var(--tw-bg-opacity, 1)); } +.bg-green-600 { + --tw-bg-opacity: 1; + background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1)); +} + +.bg-yellow-300 { + --tw-bg-opacity: 1; + background-color: rgb(253 224 71 / var(--tw-bg-opacity, 1)); +} + .p-1 { padding: 0.25rem; } @@ -1380,10 +1394,6 @@ code { padding: 1rem; } -.p-5 { - padding: 1.25rem; -} - .p-8 { padding: 2rem; } @@ -1450,11 +1460,6 @@ code { 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)); -} - .text-rp-dawn-pine { --tw-text-opacity: 1; color: rgb(40 105 131 / var(--tw-text-opacity, 1)); @@ -1475,6 +1480,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 +1531,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 +2114,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,10 +2132,18 @@ code { grid-column: span 6 / span 6; } + .md\:col-span-7 { + grid-column: span 7 / span 7; + } + .md\:grid-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); } + .md\:grid-cols-6 { + grid-template-columns: repeat(6, minmax(0, 1fr)); + } + .md\:border-l-4 { border-left-width: 4px; } diff --git a/templates/article.html b/templates/article.html index 1f82af44..a59558ad 100644 --- a/templates/article.html +++ b/templates/article.html @@ -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.title }} - # + #

  • diff --git a/templates/base.html b/templates/base.html index 16016540..c187d623 100644 --- a/templates/base.html +++ b/templates/base.html @@ -98,7 +98,7 @@
    -
    +
    {% block content %} {% endblock %} @@ -111,27 +111,27 @@
    -
    +
    -
    -
    +
    +

    - Generated by Pelican with a - bespoke theme inspired by Rosé Pine. + Generated by Pelican with a + bespoke theme inspired by Rosé Pine.

    - Buy me a coffee? + Buy me a coffee?

    -
    +

    - + Mostly valid WCAG 2.2 AA

    - 100% organic content licensed under CC BY-SA 4.0 + 100% organic content licensed under CC BY-SA 4.0

    - Atom feed + Atom feed

    From e663b95c9e290d0c07b4df12d7428aae476a8a38 Mon Sep 17 00:00:00 2001 From: Oliver Ladner Date: Mon, 24 Feb 2025 14:03:11 +0100 Subject: [PATCH 03/16] feat: fancy subtitle, more whitespace between footer elements --- static/css/out.css | 211 ++++++++++++++++++++++++++++++++++++++--- templates/article.html | 20 ++++ templates/base.html | 12 +-- 3 files changed, 224 insertions(+), 19 deletions(-) diff --git a/static/css/out.css b/static/css/out.css index 11e62890..949733dd 100644 --- a/static/css/out.css +++ b/static/css/out.css @@ -1209,6 +1209,26 @@ code { } } +.absolute { + position: absolute; +} + +.relative { + position: relative; +} + +.z-10 { + z-index: 10; +} + +.-z-10 { + z-index: -10; +} + +.z-20 { + z-index: 20; +} + .col-span-1 { grid-column: span 1 / span 1; } @@ -1221,10 +1241,6 @@ code { grid-column: span 3 / span 3; } -.col-span-7 { - grid-column: span 7 / span 7; -} - .col-span-9 { grid-column: span 9 / span 9; } @@ -1257,6 +1273,10 @@ code { margin-top: 1.5rem; } +.-mt-11 { + margin-top: -2.75rem; +} + .block { display: block; } @@ -1290,6 +1310,30 @@ code { width: 2rem; } +.-rotate-45 { + --tw-rotate: -45deg; + 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)); +} + +.-rotate-12 { + --tw-rotate: -12deg; + 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)); +} + +.-rotate-6 { + --tw-rotate: -6deg; + 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)); +} + +.-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)); +} + +.transform { + 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; } @@ -1347,6 +1391,10 @@ code { border-top-width: 2px; } +.border-l-4 { + border-left-width: 4px; +} + .border-rp-dawn-gold { --tw-border-opacity: 1; border-color: rgb(234 157 52 / var(--tw-border-opacity, 1)); @@ -1357,6 +1405,15 @@ code { border-color: rgb(242 233 225 / var(--tw-border-opacity, 1)); } +.border-rp-dawn-rose { + --tw-border-opacity: 1; + border-color: rgb(215 130 126 / var(--tw-border-opacity, 1)); +} + +.border-transparent { + border-color: transparent; +} + .bg-rp-dawn-base { --tw-bg-opacity: 1; background-color: rgb(250 244 237 / var(--tw-bg-opacity, 1)); @@ -1372,14 +1429,61 @@ code { background-color: rgb(255 250 243 / var(--tw-bg-opacity, 1)); } -.bg-green-600 { +.bg-rp-dawn-love { --tw-bg-opacity: 1; - background-color: rgb(22 163 74 / var(--tw-bg-opacity, 1)); + background-color: rgb(180 99 122 / var(--tw-bg-opacity, 1)); } -.bg-yellow-300 { - --tw-bg-opacity: 1; - background-color: rgb(253 224 71 / var(--tw-bg-opacity, 1)); +.bg-gradient-to-r { + background-image: linear-gradient(to right, var(--tw-gradient-stops)); +} + +.from-indigo-500 { + --tw-gradient-from: #6366f1 var(--tw-gradient-from-position); + --tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.from-rp-dawn-love { + --tw-gradient-from: #b4637a var(--tw-gradient-from-position); + --tw-gradient-to: rgb(180 99 122 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.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%; +} + +.via-sky-500 { + --tw-gradient-to: rgb(14 165 233 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #0ea5e9 var(--tw-gradient-via-position), var(--tw-gradient-to); +} + +.via-rp-dawn-gold { + --tw-gradient-to: rgb(234 157 52 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), #ea9d34 var(--tw-gradient-via-position), var(--tw-gradient-to); +} + +.via-30\% { + --tw-gradient-via-position: 30%; +} + +.to-emerald-500 { + --tw-gradient-to: #10b981 var(--tw-gradient-to-position); +} + +.to-rp-dawn-pine { + --tw-gradient-to: #286983 var(--tw-gradient-to-position); +} + +.to-90\% { + --tw-gradient-to-position: 90%; } .p-1 { @@ -1398,6 +1502,10 @@ code { padding: 2rem; } +.p-10 { + padding: 2.5rem; +} + .pb-60 { padding-bottom: 15rem; } @@ -1410,6 +1518,18 @@ code { padding-top: 5rem; } +.pb-5 { + padding-bottom: 1.25rem; +} + +.pb-3 { + padding-bottom: 0.75rem; +} + +.pb-4 { + padding-bottom: 1rem; +} + .text-center { text-align: center; } @@ -1438,6 +1558,16 @@ code { line-height: 1.75rem; } +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + +.text-base { + font-size: 1rem; + line-height: 1.5rem; +} + .font-bold { font-weight: 700; } @@ -1470,6 +1600,21 @@ code { color: rgb(87 82 121 / var(--tw-text-opacity, 1)); } +.text-rp-dawn-gold { + --tw-text-opacity: 1; + color: rgb(234 157 52 / var(--tw-text-opacity, 1)); +} + +.text-rp-dawn-base { + --tw-text-opacity: 1; + color: rgb(250 244 237 / var(--tw-text-opacity, 1)); +} + +.text-rp-dawn-overlay { + --tw-text-opacity: 1; + color: rgb(242 233 225 / var(--tw-text-opacity, 1)); +} + .no-underline { text-decoration-line: none; } @@ -2110,6 +2255,25 @@ code { } } +.hover\:border-l-4:hover { + border-left-width: 4px; +} + +.hover\:border-rp-dawn-rose:hover { + --tw-border-opacity: 1; + border-color: rgb(215 130 126 / var(--tw-border-opacity, 1)); +} + +.hover\:border-red-700:hover { + --tw-border-opacity: 1; + border-color: rgb(185 28 28 / var(--tw-border-opacity, 1)); +} + +.hover\:bg-rp-dawn-love:hover { + --tw-bg-opacity: 1; + background-color: rgb(180 99 122 / var(--tw-bg-opacity, 1)); +} + .hover\:no-underline:hover { text-decoration-line: none; } @@ -2136,10 +2300,6 @@ code { grid-column: span 7 / span 7; } - .md\:grid-cols-5 { - grid-template-columns: repeat(5, minmax(0, 1fr)); - } - .md\:grid-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } @@ -2172,6 +2332,11 @@ code { font-size: 1rem; line-height: 1.5rem; } + + .md\:text-xl { + font-size: 1.25rem; + line-height: 1.75rem; + } } @media (min-width: 1024px) { @@ -2231,4 +2396,24 @@ code { --tw-text-opacity: 1; color: rgb(224 222 244 / var(--tw-text-opacity, 1)); } + + .dark\:text-rp-moon-gold { + --tw-text-opacity: 1; + color: rgb(246 193 119 / var(--tw-text-opacity, 1)); + } + + .dark\:text-rp-moon-highlight-low { + --tw-text-opacity: 1; + color: rgb(42 40 62 / var(--tw-text-opacity, 1)); + } + + .dark\:text-rp-moon-subtle { + --tw-text-opacity: 1; + color: rgb(144 140 170 / 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)); + } } diff --git a/templates/article.html b/templates/article.html index a59558ad..32cc607f 100644 --- a/templates/article.html +++ b/templates/article.html @@ -112,5 +112,25 @@

    {% endif %} +
    +

    + + +

    +

    +
{% endblock %} diff --git a/templates/base.html b/templates/base.html index c187d623..bc5dea07 100644 --- a/templates/base.html +++ b/templates/base.html @@ -59,9 +59,9 @@
-

{{ SITENAME }}

+

{{ SITENAME }}

{% if SITESUBTITLE %} -

{{ SITESUBTITLE }}

+

{{ SITESUBTITLE }}

{% endif %}
@@ -117,20 +117,20 @@

Generated by Pelican with a - bespoke theme inspired by Rosé Pine. + bespoke theme inspired by Rosé Pine.

Buy me a coffee?

-

+

Mostly valid WCAG 2.2 AA

-

+

100% organic content licensed under CC BY-SA 4.0

-

+

Atom feed

From 101f856a8234e5e256febc9a625d238b708aadf7 Mon Sep 17 00:00:00 2001 From: Oliver Ladner Date: Fri, 28 Feb 2025 09:12:40 +0100 Subject: [PATCH 04/16] fix: properly close link/meta tags --- static/css/out.css | 178 ++++---------------------------------------- templates/base.html | 4 +- 2 files changed, 18 insertions(+), 164 deletions(-) diff --git a/static/css/out.css b/static/css/out.css index 949733dd..fba8b564 100644 --- a/static/css/out.css +++ b/static/css/out.css @@ -1221,10 +1221,6 @@ code { z-index: 10; } -.-z-10 { - z-index: -10; -} - .z-20 { z-index: 20; } @@ -1253,8 +1249,8 @@ code { margin: 1rem; } -.-mt-9 { - margin-top: -2.25rem; +.-mt-11 { + margin-top: -2.75rem; } .mb-2 { @@ -1273,10 +1269,6 @@ code { margin-top: 1.5rem; } -.-mt-11 { - margin-top: -2.75rem; -} - .block { display: block; } @@ -1310,30 +1302,11 @@ code { width: 2rem; } -.-rotate-45 { - --tw-rotate: -45deg; - 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)); -} - -.-rotate-12 { - --tw-rotate: -12deg; - 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)); -} - -.-rotate-6 { - --tw-rotate: -6deg; - 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)); -} - .-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)); } -.transform { - 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; } @@ -1391,10 +1364,6 @@ code { border-top-width: 2px; } -.border-l-4 { - border-left-width: 4px; -} - .border-rp-dawn-gold { --tw-border-opacity: 1; border-color: rgb(234 157 52 / var(--tw-border-opacity, 1)); @@ -1405,15 +1374,6 @@ code { border-color: rgb(242 233 225 / var(--tw-border-opacity, 1)); } -.border-rp-dawn-rose { - --tw-border-opacity: 1; - border-color: rgb(215 130 126 / var(--tw-border-opacity, 1)); -} - -.border-transparent { - border-color: transparent; -} - .bg-rp-dawn-base { --tw-bg-opacity: 1; background-color: rgb(250 244 237 / var(--tw-bg-opacity, 1)); @@ -1429,27 +1389,10 @@ code { background-color: rgb(255 250 243 / var(--tw-bg-opacity, 1)); } -.bg-rp-dawn-love { - --tw-bg-opacity: 1; - background-color: rgb(180 99 122 / var(--tw-bg-opacity, 1)); -} - .bg-gradient-to-r { background-image: linear-gradient(to right, var(--tw-gradient-stops)); } -.from-indigo-500 { - --tw-gradient-from: #6366f1 var(--tw-gradient-from-position); - --tw-gradient-to: rgb(99 102 241 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); -} - -.from-rp-dawn-love { - --tw-gradient-from: #b4637a var(--tw-gradient-from-position); - --tw-gradient-to: rgb(180 99 122 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); -} - .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); @@ -1460,24 +1403,6 @@ code { --tw-gradient-from-position: 10%; } -.via-sky-500 { - --tw-gradient-to: rgb(14 165 233 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops: var(--tw-gradient-from), #0ea5e9 var(--tw-gradient-via-position), var(--tw-gradient-to); -} - -.via-rp-dawn-gold { - --tw-gradient-to: rgb(234 157 52 / 0) var(--tw-gradient-to-position); - --tw-gradient-stops: var(--tw-gradient-from), #ea9d34 var(--tw-gradient-via-position), var(--tw-gradient-to); -} - -.via-30\% { - --tw-gradient-via-position: 30%; -} - -.to-emerald-500 { - --tw-gradient-to: #10b981 var(--tw-gradient-to-position); -} - .to-rp-dawn-pine { --tw-gradient-to: #286983 var(--tw-gradient-to-position); } @@ -1502,8 +1427,8 @@ code { padding: 2rem; } -.p-10 { - padding: 2.5rem; +.pb-4 { + padding-bottom: 1rem; } .pb-60 { @@ -1518,18 +1443,6 @@ code { padding-top: 5rem; } -.pb-5 { - padding-bottom: 1.25rem; -} - -.pb-3 { - padding-bottom: 0.75rem; -} - -.pb-4 { - padding-bottom: 1rem; -} - .text-center { text-align: center; } @@ -1553,21 +1466,16 @@ code { line-height: 2.5rem; } -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} - -.text-lg { - font-size: 1.125rem; - line-height: 1.75rem; -} - .text-base { font-size: 1rem; line-height: 1.5rem; } +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + .font-bold { font-weight: 700; } @@ -1585,9 +1493,9 @@ code { color: rgb(86 148 159 / var(--tw-text-opacity, 1)); } -.text-rp-dawn-love { +.text-rp-dawn-overlay { --tw-text-opacity: 1; - color: rgb(180 99 122 / var(--tw-text-opacity, 1)); + color: rgb(242 233 225 / var(--tw-text-opacity, 1)); } .text-rp-dawn-pine { @@ -1600,21 +1508,6 @@ code { color: rgb(87 82 121 / var(--tw-text-opacity, 1)); } -.text-rp-dawn-gold { - --tw-text-opacity: 1; - color: rgb(234 157 52 / var(--tw-text-opacity, 1)); -} - -.text-rp-dawn-base { - --tw-text-opacity: 1; - color: rgb(250 244 237 / var(--tw-text-opacity, 1)); -} - -.text-rp-dawn-overlay { - --tw-text-opacity: 1; - color: rgb(242 233 225 / var(--tw-text-opacity, 1)); -} - .no-underline { text-decoration-line: none; } @@ -2255,25 +2148,6 @@ code { } } -.hover\:border-l-4:hover { - border-left-width: 4px; -} - -.hover\:border-rp-dawn-rose:hover { - --tw-border-opacity: 1; - border-color: rgb(215 130 126 / var(--tw-border-opacity, 1)); -} - -.hover\:border-red-700:hover { - --tw-border-opacity: 1; - border-color: rgb(185 28 28 / var(--tw-border-opacity, 1)); -} - -.hover\:bg-rp-dawn-love:hover { - --tw-bg-opacity: 1; - background-color: rgb(180 99 122 / var(--tw-bg-opacity, 1)); -} - .hover\:no-underline:hover { text-decoration-line: none; } @@ -2308,11 +2182,6 @@ code { 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; @@ -2382,6 +2251,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)); @@ -2396,24 +2270,4 @@ code { --tw-text-opacity: 1; color: rgb(224 222 244 / var(--tw-text-opacity, 1)); } - - .dark\:text-rp-moon-gold { - --tw-text-opacity: 1; - color: rgb(246 193 119 / var(--tw-text-opacity, 1)); - } - - .dark\:text-rp-moon-highlight-low { - --tw-text-opacity: 1; - color: rgb(42 40 62 / var(--tw-text-opacity, 1)); - } - - .dark\:text-rp-moon-subtle { - --tw-text-opacity: 1; - color: rgb(144 140 170 / 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)); - } } diff --git a/templates/base.html b/templates/base.html index bc5dea07..2802a505 100644 --- a/templates/base.html +++ b/templates/base.html @@ -5,7 +5,7 @@ {% block title %}{{ SITENAME|striptags }}{% endblock title %} - + {% if SITESUBTITLE %} {% endif %} @@ -36,7 +36,7 @@ {% if TAG_FEED_RSS and tag %} {% endif %} - + From cc07b2dbb0dea23914531c52ed1f8820a9778df5 Mon Sep 17 00:00:00 2001 From: Oliver Ladner Date: Wed, 21 May 2025 09:09:58 +0200 Subject: [PATCH 05/16] fix: remove main prism.css to avoid visual glitch --- templates/base.html | 1 - 1 file changed, 1 deletion(-) diff --git a/templates/base.html b/templates/base.html index 2802a505..d143c556 100644 --- a/templates/base.html +++ b/templates/base.html @@ -38,7 +38,6 @@ {% endif %} - {% endblock head %} @@ -71,7 +88,7 @@ {% if DISPLAY_PAGES_ON_MENU %}
{% for p in pages %} -
  • {{ p.title }}
  • +
  • {{ p.title }}
  • {% endfor %}
    {% endif %} @@ -124,13 +141,11 @@

    - Mostly valid WCAG 2.2 AA + 100% artisanal content licensed under CC BY-SA 4.0, + mostly valid WCAG 2.2 AA.

    - 100% organic content licensed under CC BY-SA 4.0 -

    -

    - Atom feed + Atom feed of all blog posts.

    diff --git a/templates/categories.html b/templates/categories.html index 1482ebd6..0f298e8c 100644 --- a/templates/categories.html +++ b/templates/categories.html @@ -1,6 +1,6 @@ {% extends "base.html" %} -{% block title %}{{ SITENAME|striptags }} - Categories{% endblock %} +{% block title %}Categories - {{ SITENAME|striptags }}{% endblock %} {% block content %}
    diff --git a/templates/category.html b/templates/category.html index b73b635e..8edc3bc1 100644 --- a/templates/category.html +++ b/templates/category.html @@ -1,6 +1,6 @@ {% extends "index.html" %} -{% block title %}{{ SITENAME|striptags }} - {{ category }} category{% endblock %} +{% block title %}{{ category }} - {{ SITENAME|striptags }}{% endblock %} {% block content_title %}

    Tales from the {{ category }} department

    diff --git a/templates/page.html b/templates/page.html index 3d795423..fbc1985d 100644 --- a/templates/page.html +++ b/templates/page.html @@ -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() }} diff --git a/templates/tag.html b/templates/tag.html index c34a7b33..0696ceb2 100644 --- a/templates/tag.html +++ b/templates/tag.html @@ -1,6 +1,6 @@ {% extends "index.html" %} -{% block title %}{{ SITENAME|striptags }} - {{ tag }} tag{% endblock %} +{% block title %} {{ tag|capitalize }} - {{ SITENAME|striptags }}{% endblock %} {% block content_title %}

    Tales tagged with {{ tag }}

    diff --git a/templates/tags.html b/templates/tags.html index 52d30b56..3280842f 100644 --- a/templates/tags.html +++ b/templates/tags.html @@ -1,12 +1,26 @@ {% extends "base.html" %} -{% block title %}{{ SITENAME|striptags }} - Tags{% endblock %} +{% block title %}Tags - {{ SITENAME|striptags }}{% endblock %} {% block content %} -

    Tags for {{ SITENAME }}

    -
      - {% for tag, articles in tags|sort %} -
    • {{ tag }} ({{ articles|count }})
    • - {% endfor %} -
    +

    Article tags

    + +
      + {% for tag in tag_cloud %} +
    • + + {{ tag.0 }} + + {% if TAG_CLOUD_BADGE %} + {{ tag.2 }} + {% endif %} +
    • + {% endfor %} +
    + + + + + + {% endblock %} From 25aec6d05d3267e307392d188ca168baface790e Mon Sep 17 00:00:00 2001 From: Oliver Ladner Date: Tue, 9 Sep 2025 16:17:43 +0200 Subject: [PATCH 10/16] fix: properly add SVG title inside path --- templates/article.html | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/templates/article.html b/templates/article.html index 629af337..c4dc973d 100644 --- a/templates/article.html +++ b/templates/article.html @@ -41,16 +41,18 @@
  • {% if article.modified %} From da015db848928d0d20cea37963022e99a0ff84c5 Mon Sep 17 00:00:00 2001 From: Oliver Ladner Date: Tue, 20 Jan 2026 14:38:56 +0100 Subject: [PATCH 11/16] feat: add AbuseIPDB verification snippet --- templates/base.html | 1 + 1 file changed, 1 insertion(+) diff --git a/templates/base.html b/templates/base.html index 26a3fca5..a2950774 100644 --- a/templates/base.html +++ b/templates/base.html @@ -9,6 +9,7 @@ {% if SITESUBTITLE %} {% endif %} + {% if STYLESHEET_URL %} {% endif %} From f5840e7f2de08855beb9c34f65f697fe6a79f2e3 Mon Sep 17 00:00:00 2001 From: Oliver Ladner Date: Tue, 20 Jan 2026 15:24:58 +0100 Subject: [PATCH 12/16] fix: update Forgejo link --- templates/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/base.html b/templates/base.html index a2950774..ad7df453 100644 --- a/templates/base.html +++ b/templates/base.html @@ -134,7 +134,7 @@

    Generated by Pelican with a - bespoke theme inspired by Rosé Pine. + bespoke theme inspired by Rosé Pine.

    Buy me a coffee? From 44a4de138f7f86089a3090379880d5661a18715d Mon Sep 17 00:00:00 2001 From: Oliver Ladner Date: Fri, 19 Jun 2026 09:41:51 +0200 Subject: [PATCH 13/16] feat: pin to Tailwind 3, indieweb footer, fix comment system url --- README.md | 6 + package.json | 2 +- pnpm-lock.yaml | 624 +++++++++++++++++++++++++++++++++++++++++ static/css/out.css | 8 +- templates/article.html | 4 +- templates/base.html | 3 + 6 files changed, 640 insertions(+), 7 deletions(-) create mode 100644 pnpm-lock.yaml diff --git a/README.md b/README.md index f3fe9563..a1ffffb8 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,12 @@ keep it useful for others. Amongst other things, I: Adapt Pelican's `publishconf.py` for local development. E.g. `RELATIVE_URLS = False` +### Install Tailwind 3 (for now) + +```shell +npm install -D tailwindcss@3 +``` + ### Install Tailwind CSS Typography plugin Typography enables sane defaults for longer texts. In this case, we use it for diff --git a/package.json b/package.json index 969943e4..5fe6fef4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "devDependencies": { "@tailwindcss/typography": "^0.5.15", - "tailwindcss": "^3.4.17" + "tailwindcss": "^3.4.19" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 00000000..2cbc97f7 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,624 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@tailwindcss/typography': + specifier: ^0.5.15 + version: 0.5.20(tailwindcss@3.4.19) + tailwindcss: + specifier: ^3.4.19 + version: 3.4.19 + +packages: + + '@alloc/quick-lru@5.2.0': + resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} + engines: {node: '>=10'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@tailwindcss/typography@0.5.20': + resolution: {integrity: sha512-hwbzQuNUfcPvbegQFatVPl/MY/tcM9KLl963hQ5laJKPh81TEZ1+dNG9PirGvcaDBkp+BCshExAyKVPW91dozw==} + peerDependencies: + tailwindcss: '>=3.0.0 || >=4.0.0 || insiders' + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + camelcase-css@2.0.1: + resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} + engines: {node: '>= 6'} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + didyoumean@1.2.2: + resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} + + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + jiti@1.21.7: + resolution: {integrity: sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==} + hasBin: true + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + + nanoid@3.3.13: + resolution: {integrity: sha512-sPdqC6ByMVVGvF1ynvvMo0/o+oD1VX7DaHhijt1bFgjvBkHBib4t49GoNDhf2NDta4oeUNlaGbSt5K7qjZ955Q==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-hash@3.0.0: + resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==} + engines: {node: '>= 6'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + + postcss-import@15.1.0: + resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==} + engines: {node: '>=14.0.0'} + peerDependencies: + postcss: ^8.0.0 + + postcss-js@4.1.0: + resolution: {integrity: sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==} + engines: {node: ^12 || ^14 || >= 16} + peerDependencies: + postcss: ^8.4.21 + + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + + postcss-nested@6.2.0: + resolution: {integrity: sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==} + engines: {node: '>=12.0'} + peerDependencies: + postcss: ^8.2.14 + + postcss-selector-parser@6.0.10: + resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==} + engines: {node: '>=4'} + + postcss-selector-parser@6.1.4: + resolution: {integrity: sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==} + engines: {node: '>=4'} + + postcss-value-parser@4.2.0: + resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} + + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + read-cache@1.0.0: + resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tailwindcss@3.4.19: + resolution: {integrity: sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==} + engines: {node: '>=14.0.0'} + hasBin: true + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + +snapshots: + + '@alloc/quick-lru@5.2.0': {} + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@tailwindcss/typography@0.5.20(tailwindcss@3.4.19)': + dependencies: + postcss-selector-parser: 6.0.10 + tailwindcss: 3.4.19 + + any-promise@1.3.0: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.2 + + arg@5.0.2: {} + + binary-extensions@2.3.0: {} + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + camelcase-css@2.0.1: {} + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + commander@4.1.1: {} + + cssesc@3.0.0: {} + + didyoumean@1.2.2: {} + + dlv@1.1.3: {} + + es-errors@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.4 + + is-extglob@2.1.1: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-number@7.0.0: {} + + jiti@1.21.7: {} + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + + nanoid@3.3.13: {} + + normalize-path@3.0.0: {} + + object-assign@4.1.1: {} + + object-hash@3.0.0: {} + + path-parse@1.0.7: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.4: {} + + pify@2.3.0: {} + + pirates@4.0.7: {} + + postcss-import@15.1.0(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.12 + + postcss-js@4.1.0(postcss@8.5.15): + dependencies: + camelcase-css: 2.0.1 + postcss: 8.5.15 + + postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.15): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 1.21.7 + postcss: 8.5.15 + + postcss-nested@6.2.0(postcss@8.5.15): + dependencies: + postcss: 8.5.15 + postcss-selector-parser: 6.1.4 + + postcss-selector-parser@6.0.10: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-selector-parser@6.1.4: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss-value-parser@4.2.0: {} + + postcss@8.5.15: + dependencies: + nanoid: 3.3.13 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + queue-microtask@1.2.3: {} + + read-cache@1.0.0: + dependencies: + pify: 2.3.0 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.2 + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + source-map-js@1.2.1: {} + + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.17 + ts-interface-checker: 0.1.13 + + supports-preserve-symlinks-flag@1.0.0: {} + + tailwindcss@3.4.19: + dependencies: + '@alloc/quick-lru': 5.2.0 + arg: 5.0.2 + chokidar: 3.6.0 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.3 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.21.7 + lilconfig: 3.1.3 + micromatch: 4.0.8 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.1.1 + postcss: 8.5.15 + postcss-import: 15.1.0(postcss@8.5.15) + postcss-js: 4.1.0(postcss@8.5.15) + postcss-load-config: 6.0.1(jiti@1.21.7)(postcss@8.5.15) + postcss-nested: 6.2.0(postcss@8.5.15) + postcss-selector-parser: 6.1.4 + resolve: 1.22.12 + sucrase: 3.35.1 + transitivePeerDependencies: + - tsx + - yaml + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-interface-checker@0.1.13: {} + + util-deprecate@1.0.2: {} diff --git a/static/css/out.css b/static/css/out.css index e1870e6c..81d47630 100644 --- a/static/css/out.css +++ b/static/css/out.css @@ -107,7 +107,7 @@ } /* -! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com +! tailwindcss v3.4.19 | MIT License | https://tailwindcss.com */ /* @@ -944,7 +944,7 @@ ul.tagcloud li { font-weight: 500; font-family: inherit; color: var(--tw-prose-kbd); - box-shadow: 0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%), 0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%); + box-shadow: 0 0 0 1px var(--tw-prose-kbd-shadows), 0 3px 0 var(--tw-prose-kbd-shadows); font-size: 0.875em; border-radius: 0.3125rem; padding-top: 0.1875em; @@ -1065,7 +1065,7 @@ ul.tagcloud li { --tw-prose-quote-borders: #e5e7eb; --tw-prose-captions: #6b7280; --tw-prose-kbd: #111827; - --tw-prose-kbd-shadows: 17 24 39; + --tw-prose-kbd-shadows: rgb(17 24 39 / 10%); --tw-prose-code: #111827; --tw-prose-pre-code: #e5e7eb; --tw-prose-pre-bg: #1f2937; @@ -1083,7 +1083,7 @@ ul.tagcloud li { --tw-prose-invert-quote-borders: #374151; --tw-prose-invert-captions: #9ca3af; --tw-prose-invert-kbd: #fff; - --tw-prose-invert-kbd-shadows: 255 255 255; + --tw-prose-invert-kbd-shadows: rgb(255 255 255 / 10%); --tw-prose-invert-code: #fff; --tw-prose-invert-pre-code: #d1d5db; --tw-prose-invert-pre-bg: rgb(0 0 0 / 50%); diff --git a/templates/article.html b/templates/article.html index c4dc973d..5f0025e1 100644 --- a/templates/article.html +++ b/templates/article.html @@ -119,12 +119,12 @@