1
0
Fork 0
forked from remote/pelican

Compare commits

..

1 commit

Author SHA1 Message Date
864410bb0d feat: first fixed for Tailwind v4 2025-01-23 09:22:36 +01:00
15 changed files with 107 additions and 1001 deletions

View file

@ -19,12 +19,6 @@ keep it useful for others. Amongst other things, I:
Adapt Pelican's `publishconf.py` for local development. Adapt Pelican's `publishconf.py` for local development.
E.g. `RELATIVE_URLS = False` E.g. `RELATIVE_URLS = False`
### Install Tailwind 3 (for now)
```shell
npm install -D tailwindcss@3
```
### Install Tailwind CSS Typography plugin ### Install Tailwind CSS Typography plugin
Typography enables sane defaults for longer texts. In this case, we use it for Typography enables sane defaults for longer texts. In this case, we use it for

View file

@ -1,6 +1,6 @@
{ {
"devDependencies": { "devDependencies": {
"@tailwindcss/typography": "^0.5.15", "@tailwindcss/typography": "^0.5.16",
"tailwindcss": "^3.4.19" "tailwindcss": "^4.0"
} }
} }

624
pnpm-lock.yaml generated
View file

@ -1,624 +0,0 @@
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: {}

View file

@ -1,6 +1,6 @@
@tailwind base; /* Preflight is injected here */ @import "tailwindcss"; /* Preflight is injected here */
@tailwind components; @plugin "@tailwindcss/typography";
@tailwind utilities; @config "../../tailwind.config.js";
@layer base { @layer base {
@font-face { @font-face {
@ -52,14 +52,6 @@
ul { ul {
@apply pl-4 list-disc; @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 { @layer components {
@ -69,24 +61,6 @@
} }
} }
/*Hide heading anchor links unless hovering over them*/
.headerlink {
/*@apply no-underline text-rp-dawn-love ml-1 md:ml-2 hover:no-underline;*/
@apply no-underline text-rp-dawn-love ml-1 md:ml-2 hover:no-underline opacity-0 transition-opacity duration-150;
visibility: hidden;
}
h1:hover .headerlink,
h2:hover .headerlink,
h3:hover .headerlink,
h4:hover .headerlink,
h5:hover .headerlink,
h6:hover .headerlink,
.headerlink:focus-visible {
@apply opacity-100;
visibility: visible;
}
.note { .note {
@apply bg-rp-dawn-highlight-med dark:bg-rp-moon-highlight-med m-8 p-4; @apply bg-rp-dawn-highlight-med dark:bg-rp-moon-highlight-med m-8 p-4;
} }
@ -94,14 +68,6 @@ h6:hover .headerlink,
@apply bg-rp-dawn-text text-rp-dawn-base dark:bg-rp-moon-text dark:text-rp-moon-base m-8 p-4; @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 { #skiptocontent a {
position: absolute; position: absolute;
top: -40px; top: -40px;

View file

@ -718,18 +718,6 @@ ul {
padding-left: 1rem; 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 */ /* Preflight is injected here */
.prose { .prose {
@ -1221,22 +1209,6 @@ code {
} }
} }
.absolute {
position: absolute;
}
.relative {
position: relative;
}
.z-10 {
z-index: 10;
}
.z-20 {
z-index: 20;
}
.col-span-1 { .col-span-1 {
grid-column: span 1 / span 1; grid-column: span 1 / span 1;
} }
@ -1245,8 +1217,8 @@ code {
grid-column: span 2 / span 2; grid-column: span 2 / span 2;
} }
.col-span-3 { .col-span-7 {
grid-column: span 3 / span 3; grid-column: span 7 / span 7;
} }
.col-span-9 { .col-span-9 {
@ -1261,8 +1233,8 @@ code {
margin: 1rem; margin: 1rem;
} }
.-mt-11 { .-mt-9 {
margin-top: -2.75rem; margin-top: -2.25rem;
} }
.mb-2 { .mb-2 {
@ -1314,11 +1286,6 @@ code {
width: 2rem; 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-outside {
list-style-position: outside; list-style-position: outside;
} }
@ -1343,12 +1310,12 @@ code {
grid-template-columns: repeat(9, minmax(0, 1fr)); grid-template-columns: repeat(9, minmax(0, 1fr));
} }
.grid-cols-\[max-content_max-content_max-content_max-content_max-content\] { .grid-cols-\[max-content_max-content_max-content\] {
grid-template-columns: max-content max-content 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_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 max-content; grid-template-columns: max-content max-content max-content max-content max-content;
} }
.items-center { .items-center {
@ -1368,10 +1335,6 @@ code {
hyphens: auto; hyphens: auto;
} }
.rounded-full {
border-radius: 9999px;
}
.border-b-2 { .border-b-2 {
border-bottom-width: 2px; border-bottom-width: 2px;
} }
@ -1395,11 +1358,6 @@ code {
background-color: rgb(250 244 237 / var(--tw-bg-opacity, 1)); 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 { .bg-rp-dawn-overlay {
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(242 233 225 / var(--tw-bg-opacity, 1)); background-color: rgb(242 233 225 / var(--tw-bg-opacity, 1));
@ -1410,28 +1368,6 @@ code {
background-color: rgb(255 250 243 / var(--tw-bg-opacity, 1)); 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 { .p-1 {
padding: 0.25rem; padding: 0.25rem;
} }
@ -1444,19 +1380,14 @@ code {
padding: 1rem; padding: 1rem;
} }
.p-5 {
padding: 1.25rem;
}
.p-8 { .p-8 {
padding: 2rem; padding: 2rem;
} }
.px-2 {
padding-left: 0.5rem;
padding-right: 0.5rem;
}
.pb-4 {
padding-bottom: 1rem;
}
.pb-60 { .pb-60 {
padding-bottom: 15rem; padding-bottom: 15rem;
} }
@ -1492,16 +1423,6 @@ code {
line-height: 2.5rem; 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 { .text-xl {
font-size: 1.25rem; font-size: 1.25rem;
line-height: 1.75rem; line-height: 1.75rem;
@ -1515,10 +1436,6 @@ code {
text-transform: uppercase; text-transform: uppercase;
} }
.capitalize {
text-transform: capitalize;
}
.italic { .italic {
font-style: italic; font-style: italic;
} }
@ -1528,6 +1445,11 @@ code {
color: rgb(86 148 159 / var(--tw-text-opacity, 1)); 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 { .text-rp-dawn-overlay {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(242 233 225 / var(--tw-text-opacity, 1)); color: rgb(242 233 225 / var(--tw-text-opacity, 1));
@ -1553,45 +1475,6 @@ code {
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); 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 {
/*@apply no-underline text-rp-dawn-love ml-1 md:ml-2 hover:no-underline;*/
margin-left: 0.25rem;
--tw-text-opacity: 1;
color: rgb(180 99 122 / var(--tw-text-opacity, 1));
text-decoration-line: none;
opacity: 0;
transition-property: opacity;
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
transition-duration: 150ms;
}
.headerlink:hover {
text-decoration-line: none;
}
@media (min-width: 768px) {
.headerlink {
margin-left: 0.5rem;
}
}
.headerlink {
visibility: hidden;
}
h1:hover .headerlink,
h2:hover .headerlink,
h3:hover .headerlink,
h4:hover .headerlink,
h5:hover .headerlink,
h6:hover .headerlink,
.headerlink:focus-visible {
opacity: 1;
visibility: visible;
}
.note { .note {
margin: 2rem; margin: 2rem;
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
@ -1624,26 +1507,6 @@ h6:hover .headerlink,
} }
} }
/*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 { #skiptocontent a {
position: absolute; position: absolute;
top: -40px; top: -40px;
@ -2207,11 +2070,6 @@ h6:hover .headerlink,
text-decoration-line: none; 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"] *))) { .prose-img\:rounded :is(:where(img):not(:where([class~="not-prose"],[class~="not-prose"] *))) {
border-radius: 0.25rem; border-radius: 0.25rem;
} }
@ -2225,18 +2083,19 @@ h6:hover .headerlink,
grid-column: span 6 / span 6; grid-column: span 6 / span 6;
} }
.md\:col-span-7 { .md\:grid-cols-5 {
grid-column: span 7 / span 7; grid-template-columns: repeat(5, minmax(0, 1fr));
}
.md\:grid-cols-6 {
grid-template-columns: repeat(6, minmax(0, 1fr));
} }
.md\:border-l-4 { .md\:border-l-4 {
border-left-width: 4px; border-left-width: 4px;
} }
.md\:text-2xl {
font-size: 1.5rem;
line-height: 2rem;
}
.md\:text-3xl { .md\:text-3xl {
font-size: 1.875rem; font-size: 1.875rem;
line-height: 2.25rem; line-height: 2.25rem;
@ -2256,11 +2115,6 @@ h6:hover .headerlink,
font-size: 1rem; font-size: 1rem;
line-height: 1.5rem; line-height: 1.5rem;
} }
.md\:text-xl {
font-size: 1.25rem;
line-height: 1.75rem;
}
} }
@media (min-width: 1024px) { @media (min-width: 1024px) {
@ -2296,11 +2150,6 @@ h6:hover .headerlink,
background-color: rgb(57 53 82 / var(--tw-bg-opacity, 1)); 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 { .dark\:bg-rp-moon-surface {
--tw-bg-opacity: 1; --tw-bg-opacity: 1;
background-color: rgb(42 39 63 / var(--tw-bg-opacity, 1)); background-color: rgb(42 39 63 / var(--tw-bg-opacity, 1));
@ -2311,11 +2160,6 @@ h6:hover .headerlink,
color: rgb(156 207 216 / var(--tw-text-opacity, 1)); 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 { .dark\:text-rp-moon-iris {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(196 167 231 / var(--tw-text-opacity, 1)); color: rgb(196 167 231 / var(--tw-text-opacity, 1));
@ -2326,11 +2170,6 @@ h6:hover .headerlink,
color: rgb(234 154 151 / var(--tw-text-opacity, 1)); 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 { .dark\:text-rp-moon-text {
--tw-text-opacity: 1; --tw-text-opacity: 1;
color: rgb(224 222 244 / var(--tw-text-opacity, 1)); color: rgb(224 222 244 / var(--tw-text-opacity, 1));

View file

@ -1,11 +1,12 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}Blog archive - {{ SITENAME|striptags }}{% endblock %} {% block title %}{{ SITENAME|striptags }} - Archives{% endblock %}
{% block content %} {% block content %}
<div class="md:text-base lg:text-lg"> <div class="md:text-base lg:text-lg">
<h1 class="text-3xl md:text-5xl">Blog post archive</h1> <h1 class="text-3xl md:text-5xl">Blog archive</h1>
<ul class="hyphens-auto list-outside list-disc"> <ul class="hyphens-auto list-outside list-disc">
{% for article in dates %} {% for article in dates %}
{% set year = article.date.strftime('%Y') %} {% set year = article.date.strftime('%Y') %}
{% if loop.first %} {% if loop.first %}

View file

@ -1,7 +1,7 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block html_lang %}{{ article.lang }}{% endblock %} {% block html_lang %}{{ article.lang }}{% endblock %}
{% block title %}{{ article.title|striptags }} - {{ SITENAME|striptags }}{% endblock %} {% block title %}{{ SITENAME|striptags }} - {{ article.title|striptags }}{% endblock %}
{% block head %} {% block head %}
{{ super() }} {{ super() }}
@ -17,11 +17,11 @@
{% endblock %} {% endblock %}
{% block content %} {% block content %}
<article class="prose dark:prose-dark md:prose-base lg:prose-lg prose-img:rounded prose-img:mx-auto hyphens-auto"> <article class="prose dark:prose-dark md:prose-base lg:prose-lg prose-img:rounded hyphens-auto">
<header> <header>
<h1 class="text-3xl md:text-5xl"> <h1 class="text-3xl md:text-5xl">
{{ article.title }} {{ article.title }}
<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> <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}" class="no-underline text-rp-dawn-overlay">#</a>
</h1> </h1>
<ul class="list-none border-b-2 border-rp-dawn-overlay dark:border-rp-moon-overlay"> <ul class="list-none border-b-2 border-rp-dawn-overlay dark:border-rp-moon-overlay">
<li> <li>
@ -29,7 +29,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5"> <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" /> <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> </svg>
&nbsp;{{ article.stats['read_mins']*1.5|round|int }} min. read ({{ article.stats['wc'] }} words) &nbsp;{{ article.stats['read_mins']*1.5|round|int }} min. read
</span> </span>
<span class="flex items-center"> <span class="flex items-center">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5">
@ -41,18 +41,16 @@
<li> <li>
<time class="flex items-center" datetime="{{ article.date.isoformat() }}"> <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"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5">
<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>
<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>
</svg> </svg>
&nbsp;{{ article.locale_date }} &nbsp;{{ article.locale_date }}
</time> </time>
{% if article.modified %} {% if article.modified %}
<time class="flex items-center" datetime="{{ article.modified.isoformat() }}"> <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"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="size-5">
<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>
<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>
</svg> </svg>
&nbsp;{{ article.locale_modified }} &nbsp;{{ article.locale_modified }}
</time> </time>
@ -109,31 +107,10 @@
Share this post on Share this post on
<a href="{{article.share_post['bluesky']}}" title="Share post on Bluesky">Bluesky</a>, <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['mastodon']}}" title="Share post on Mastodon">Mastodon</a>,
<a href="{{article.share_post['reddit']}}" title="Share post on Reddit">Reddit</a>, <a href="{{article.share_post['reddit']}}" title="Share post on Reddit">Reddit</a> or
<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>. <a href="{{article.share_post['twitter']}}" title="Share post on evil Twitter">Twitter</a>.
</p> </p>
</div> </div>
{% endif %} {% endif %}
<div class="p-3">
<p>
<script>
var remark_config = {
host: 'https://haddock.crabdance.com/remark42',
site_id: 'lugh.ch',
components: ['embed', 'last-comments'],
max_shown_comments: 15,
max_last_comments: 15,
theme: 'light',
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> </article>
{% endblock %} {% endblock %}

View file

@ -1,13 +1,12 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}Authors - {{ SITENAME|striptags }}{% endblock %} {% block title %}{{ SITENAME|striptags }} - Authors{% endblock %}
{% block content %} {% block content %}
<h1 class="text-3xl md:text-5xl">Authors</h1> <h1 class="text-3xl md:text-5xl">Authors on {{ SITENAME }}</h1>
It's all me, silly you. <ul>
<!-- <ul> --> {% for author, articles in authors|sort %}
<!-- {% for author, articles in authors|sort %} --> <li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li>
<!-- <li><a href="{{ SITEURL }}/{{ author.url }}">{{ author }}</a> ({{ articles|count }})</li> --> {% endfor %}
<!-- {% endfor %} --> </ul>
<!-- </ul> -->
{% endblock %} {% endblock %}

View file

@ -5,11 +5,10 @@
<title>{% block title %}{{ SITENAME|striptags }}{% endblock title %}</title> <title>{% block title %}{{ SITENAME|striptags }}{% endblock title %}</title>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="generator" content="Pelican" /> <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 %} {% if SITESUBTITLE %}
<meta name="description" content="{{ SITESUBTITLE }}" /> <meta name="description" content="{{ SITESUBTITLE }}" />
{% endif %} {% endif %}
<meta name="abuseipdb-verification" content="RrusxCrq" />
{% if STYLESHEET_URL %} {% if STYLESHEET_URL %}
<link rel="stylesheet" type="text/css" href="{{ STYLESHEET_URL }}" /> <link rel="stylesheet" type="text/css" href="{{ STYLESHEET_URL }}" />
{% endif %} {% endif %}
@ -37,8 +36,9 @@
{% if TAG_FEED_RSS and tag %} {% 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" /> <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 %} {% 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> <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" /> <link rel="stylesheet" type="text/css" href="/theme/css/prism-rose-pine-moon-alt.css" />
<style> <style>
code[class*="language-"], code[class*="language-"],
@ -49,23 +49,6 @@
/* Align prism.js font size to main font size */ /* Align prism.js font size to main font size */
font-size: 0.9rem; 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> </style>
{% endblock head %} {% endblock head %}
</head> </head>
@ -76,9 +59,9 @@
<header> <header>
<div id="skiptocontent"><a href="#content">skip to main content</a></div> <div id="skiptocontent"><a href="#content">skip to main content</a></div>
<hgroup> <hgroup>
<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> <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>
{% if SITESUBTITLE %} {% if SITESUBTITLE %}
<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> <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>
{% endif %} {% endif %}
</hgroup> </hgroup>
</header> </header>
@ -89,7 +72,7 @@
{% if DISPLAY_PAGES_ON_MENU %} {% if DISPLAY_PAGES_ON_MENU %}
<div> <div>
{% for p in pages %} {% 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 %} {% endfor %}
</div> </div>
{% endif %} {% endif %}
@ -115,7 +98,7 @@
<div class="bg-rp-dawn-base dark:bg-rp-moon-base"> <div class="bg-rp-dawn-base dark:bg-rp-moon-base">
<!--Empty spacer--> <!--Empty spacer-->
</div> </div>
<div class="col-span-9 md:col-span-7 bg-rp-dawn-base dark:bg-rp-moon-base p-4"> <div class="col-span-7 bg-rp-dawn-base dark:bg-rp-moon-base p-4">
<main id="content"> <main id="content">
{% block content %} {% block content %}
{% endblock %} {% endblock %}
@ -128,28 +111,27 @@
<div class="bg-rp-dawn-surface dark:bg-rp-moon-surface"> <div class="bg-rp-dawn-surface dark:bg-rp-moon-surface">
<!--Empty spacer--> <!--Empty spacer-->
</div> </div>
<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"> <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">
<footer> <footer>
<div class="grid grid-cols-1 md:grid-cols-6"> <div class="grid grid-cols-1 md:grid-cols-5">
<div class="col-span-3 p-4"> <div class="col-span-2 p-5">
<p> <p>
Generated by <a href="https://getpelican.com">Pelican</a> with a Generated by <a href="https://getpelican.com" target="_blank">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>. <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>.
</p> </p>
<p> <p>
<a href="https://buymeacoffee.com/lugh"><b>Buy me a coffee?</b></a> <a href="https://buymeacoffee.com/lugh" target="_blank"><b>Buy me a coffee?</b></a>
</p> </p>
</div> </div>
<div class="col-span-3 p-4 md:border-l-4 border-rp-dawn-overlay dark:border-rp-moon-overlay"> <div class="p-5 md:border-l-4 border-rp-dawn-overlay dark:border-rp-moon-overlay">
<p class="pb-4"> <p>
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>. <!--Valid <a href="https://wave.webaim.org/report#/https://lugh.ch" target="_blank">WCAG AAA</a>.-->
Valid <a href="https://wave.webaim.org/report#/https://lugh.ch/{{ output_file }}"><em>WCAG 2.2 AA</em></a> (except code blocks, sorry).
</p> </p>
<p class="pb-4"> <p>
Blog post feed: <a href="/feeds/atom.xml">Atom</a>, <a href="/feeds/rss.xml">RSS</a> 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>
<p class="pb-4"> <p>
IndieWeb: <a href="https://bubbles.town">Bubbles</a>, <a href="https://indieblog.page">indieblog.page</a>, <a href="https://indieweb.org/Getting_Started">Getting started</a> <a href="/feeds/atom.xml" target="_blank">Atom feed</a>
</p> </p>
</div> </div>
</div> </div>

View file

@ -1,6 +1,6 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}Categories - {{ SITENAME|striptags }}{% endblock %} {% block title %}{{ SITENAME|striptags }} - Categories{% endblock %}
{% block content %} {% block content %}
<div class="md:text-base lg:text-lg"> <div class="md:text-base lg:text-lg">

View file

@ -1,6 +1,6 @@
{% extends "index.html" %} {% extends "index.html" %}
{% block title %}{{ category }} - {{ SITENAME|striptags }}{% endblock %} {% block title %}{{ SITENAME|striptags }} - {{ category }} category{% endblock %}
{% block content_title %} {% block content_title %}
<h1 class="text-3xl md:text-5xl">Tales from the <em>{{ category }}</em> department</h1> <h1 class="text-3xl md:text-5xl">Tales from the <em>{{ category }}</em> department</h1>

View file

@ -1,6 +1,6 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block html_lang %}{{ page.lang }}{% endblock %} {% block html_lang %}{{ page.lang }}{% endblock %}
{% block title %}{{ page.title|striptags }} - {{ SITENAME|striptags }} {%endblock%} {% block title %}{{ SITENAME|striptags }} - {{ page.title|striptags }}{%endblock%}
{% block head %} {% block head %}
{{ super() }} {{ super() }}

View file

@ -1,9 +1,8 @@
{% if DEFAULT_PAGINATION %} {% if DEFAULT_PAGINATION %} {% set first_page = articles_paginator.page(1) %} {%
{% set first_page = articles_paginator.page(1) %} set last_page = articles_paginator.page(articles_paginator.num_pages) %}
{% set last_page = articles_paginator.page(articles_paginator.num_pages) %}
<nav class="flex justify-center items-center"> <nav class="flex justify-center items-center">
{% if articles_page.has_previous() %} {% 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"> <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">
<span class="p-1"> <span class="p-1">
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-12"> <li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-12">
<a <a
@ -13,47 +12,34 @@
><tt>&laquo;</tt></a> ><tt>&laquo;</tt></a>
</li> </li>
</span> </span>
{% else %} {% else %}
<!--If we are on the first page, there's no previous links, so reduce grid sizing--> <!--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"> <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 %} {% endif %}
<!-- Current page -->
<span class="p-1"> <span class="p-1">
<li class="text-center bg-rp-dawn-gold dark:bg-rp-moon-pine dark:text-rp-moon-surface w-8 font-bold"> <li class="text-center">
{{ articles_page.number }} Page {{ articles_page.number }} of {{ articles_paginator.num_pages }}
</li> </li>
</span> </span>
{% if articles_page.has_next() %} {% if articles_page.has_next() %}
<span class="p-1"> <span class="p-1">
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-8"> <li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-8">
<a <a
class="block no-underline hover:no-underline" class="block no-underline hover:no-underline"
href="{{ SITEURL }}/{{ articles_next_page.url }}" href="{{ SITEURL }}/{{ articles_next_page.url }}"
title="Go to page {{ articles_page.next_page_number() }}" title="Go to page {{ articles_page.next_page_number() }}"
>{{ articles_page.next_page_number() }}</a> >{{ articles_page.next_page_number() }}</a>
</li> </li>
</span> </span>
<span class="p-1"> <span class="p-1">
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-12">
</span> <a
<span class="p-1"> class="block no-underline hover:no-underline align-top"
<li class="text-center bg-rp-dawn-overlay dark:bg-rp-moon-overlay w-8"> href="{{ SITEURL }}/{{ articles_next_page.url }}"
<a title="Go to the next page"
class="block no-underline hover:no-underline" ><tt>&raquo;</tt></a>
href="{{ SITEURL }}/{{ last_page.url }}" </li>
title="Go to last page" </span>
>{{ 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>&raquo;</tt></a>
</li>
</span>
{% endif %} {% endif %}
</ul> </ul>
</nav> </nav>

View file

@ -1,6 +1,6 @@
{% extends "index.html" %} {% extends "index.html" %}
{% block title %} {{ tag|capitalize }} - {{ SITENAME|striptags }}{% endblock %} {% block title %}{{ SITENAME|striptags }} - {{ tag }} tag{% endblock %}
{% block content_title %} {% block content_title %}
<h1 class="text-3xl md:text-5xl">Tales tagged with <em>{{ tag }}</em></h1> <h1 class="text-3xl md:text-5xl">Tales tagged with <em>{{ tag }}</em></h1>

View file

@ -1,26 +1,12 @@
{% extends "base.html" %} {% extends "base.html" %}
{% block title %}Tags - {{ SITENAME|striptags }}{% endblock %} {% block title %}{{ SITENAME|striptags }} - Tags{% endblock %}
{% block content %} {% block content %}
<h1 class="text-3xl md:text-5xl">Article tags</h1> <h1 class="text-3xl md:text-5xl">Tags for {{ SITENAME }}</h1>
<ul>
<ul class="tagcloud"> {% for tag, articles in tags|sort %}
{% for tag in tag_cloud %} <li><a href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a> ({{ articles|count }})</li>
<li class="tag-{{ tag.1 }}"> {% endfor %}
<a class="no-underline" title="{{ tag.2 }} articles" href="{{ SITEURL }}/{{ tag.0.url }}"> </ul>
{{ 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 %} {% endblock %}