This commit is contained in:
Ivy Turner 2025-04-27 20:37:04 +01:00
parent e3cb07dea8
commit 030aa87fc5
No known key found for this signature in database
25 changed files with 399 additions and 140 deletions

View file

@ -1,5 +1,5 @@
// @ts-check
import { defineConfig } from 'astro/config';
import { defineConfig, fontProviders } from 'astro/config';
import config from './src/site.config'
import tailwindcss from '@tailwindcss/vite';
import pagefind from "astro-pagefind";
@ -14,4 +14,18 @@ export default defineConfig({
integrations: [
pagefind()
],
markdown: {
shikiConfig: {
theme: "gruvbox-dark-hard"
},
},
experimental: {
contentIntellisense: true,
fonts: [{
provider: fontProviders.bunny(),
name: "Inter",
cssVariable: "--fontapi-inter"
}]
}
});

View file

@ -11,7 +11,7 @@
},
"dependencies": {
"@tailwindcss/vite": "^4.0.13",
"astro": "^5.4.3",
"astro": "^5.7.5",
"astro-pagefind": "^1.8.3",
"ava": "^6.2.0",
"clsx": "^2.1.1",
@ -20,6 +20,7 @@
},
"devDependencies": {
"@flydotio/dockerfile": "^0.7.10",
"@tailwindcss/typography": "^0.5.16"
"@tailwindcss/typography": "^0.5.16",
"@types/luxon": "^3.6.2"
}
}

367
pnpm-lock.yaml generated
View file

@ -10,13 +10,13 @@ importers:
dependencies:
'@tailwindcss/vite':
specifier: ^4.0.13
version: 4.0.13(vite@6.2.1(jiti@2.4.2)(lightningcss@1.29.2))
version: 4.0.13(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2))
astro:
specifier: ^5.4.3
version: 5.4.3(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)
specifier: ^5.7.5
version: 5.7.5(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)
astro-pagefind:
specifier: ^1.8.3
version: 1.8.3(astro@5.4.3(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2))
version: 1.8.3(astro@5.7.5(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2))
ava:
specifier: ^6.2.0
version: 6.2.0(rollup@4.35.0)
@ -36,6 +36,9 @@ importers:
'@tailwindcss/typography':
specifier: ^0.5.16
version: 0.5.16(tailwindcss@4.0.13)
'@types/luxon':
specifier: ^3.6.2
version: 3.6.2
packages:
@ -45,15 +48,15 @@ packages:
'@astrojs/internal-helpers@0.6.1':
resolution: {integrity: sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==}
'@astrojs/markdown-remark@6.2.1':
resolution: {integrity: sha512-qtQXfZXeG84XSH9bMgG2e/kZfA4J7U19PKjhmFDNsKX47nautSHC0DitvxaWgQFSED66k6hWKDHLq3VKHCy/rg==}
'@astrojs/markdown-remark@6.3.1':
resolution: {integrity: sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==}
'@astrojs/prism@3.2.0':
resolution: {integrity: sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==}
engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0}
'@astrojs/telemetry@3.2.0':
resolution: {integrity: sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==}
'@astrojs/telemetry@3.2.1':
resolution: {integrity: sha512-SSVM820Jqc6wjsn7qYfV9qfeQvePtVc1nSofhyap7l0/iakUKywj3hfy3UJAOV4sGV4Q/u450RD4AaCaFvNPlg==}
engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0}
'@babel/helper-string-parser@7.25.9':
@ -73,6 +76,9 @@ packages:
resolution: {integrity: sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==}
engines: {node: '>=6.9.0'}
'@capsizecss/unpack@2.4.0':
resolution: {integrity: sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==}
'@emnapi/runtime@1.3.1':
resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
@ -627,23 +633,23 @@ packages:
cpu: [x64]
os: [win32]
'@shikijs/core@1.29.2':
resolution: {integrity: sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==}
'@shikijs/core@3.3.0':
resolution: {integrity: sha512-CovkFL2WVaHk6PCrwv6ctlmD4SS1qtIfN8yEyDXDYWh4ONvomdM9MaFw20qHuqJOcb8/xrkqoWQRJ//X10phOQ==}
'@shikijs/engine-javascript@1.29.2':
resolution: {integrity: sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==}
'@shikijs/engine-javascript@3.3.0':
resolution: {integrity: sha512-XlhnFGv0glq7pfsoN0KyBCz9FJU678LZdQ2LqlIdAj6JKsg5xpYKay3DkazXWExp3DTJJK9rMOuGzU2911pg7Q==}
'@shikijs/engine-oniguruma@1.29.2':
resolution: {integrity: sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==}
'@shikijs/engine-oniguruma@3.3.0':
resolution: {integrity: sha512-l0vIw+GxeNU7uGnsu6B+Crpeqf+WTQ2Va71cHb5ZYWEVEPdfYwY5kXwYqRJwHrxz9WH+pjSpXQz+TJgAsrkA5A==}
'@shikijs/langs@1.29.2':
resolution: {integrity: sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==}
'@shikijs/langs@3.3.0':
resolution: {integrity: sha512-zt6Kf/7XpBQKSI9eqku+arLkAcDQ3NHJO6zFjiChI8w0Oz6Jjjay7pToottjQGjSDCFk++R85643WbyINcuL+g==}
'@shikijs/themes@1.29.2':
resolution: {integrity: sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==}
'@shikijs/themes@3.3.0':
resolution: {integrity: sha512-tXeCvLXBnqq34B0YZUEaAD1lD4lmN6TOHAhnHacj4Owh7Ptb/rf5XCDeROZt2rEOk5yuka3OOW2zLqClV7/SOg==}
'@shikijs/types@1.29.2':
resolution: {integrity: sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==}
'@shikijs/types@3.3.0':
resolution: {integrity: sha512-KPCGnHG6k06QG/2pnYGbFtFvpVJmC3uIpXrAiPrawETifujPBv0Se2oUxm5qYgjCvGJS9InKvjytOdN+bGuX+Q==}
'@shikijs/vscode-textmate@10.0.2':
resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
@ -652,6 +658,9 @@ packages:
resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==}
engines: {node: '>=18'}
'@swc/helpers@0.5.17':
resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
'@tailwindcss/node@4.0.13':
resolution: {integrity: sha512-P9TmtE9Vew0vv5FwyD4bsg/dHHsIsAuUXkenuGUc5gm8fYgaxpdoxIKngCyEMEQxyCKR8PQY5V5VrrKNOx7exg==}
@ -735,9 +744,6 @@ packages:
peerDependencies:
vite: ^5.2.0 || ^6
'@types/cookie@0.6.0':
resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
'@types/debug@4.1.12':
resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==}
@ -747,6 +753,9 @@ packages:
'@types/hast@3.0.4':
resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
'@types/luxon@3.6.2':
resolution: {integrity: sha512-R/BdP7OxEMc44l2Ex5lSXHoIXTB2JLNa3y2QISIbr58U/YcsffyQrYW//hZSdrfxrjRZj3GcUoxMPGdO8gSYuw==}
'@types/mdast@4.0.4':
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
@ -846,8 +855,8 @@ packages:
peerDependencies:
astro: ^2.0.4 || ^3 || ^4 || ^5
astro@5.4.3:
resolution: {integrity: sha512-GKkOJQCHLx6CrPoghGhj7824WDSvIuuc+HTVjfjMPdB9axp238iJLByREJNDaSdzMeR/lC13xvBiUnKvcYyEIA==}
astro@5.7.5:
resolution: {integrity: sha512-c59YuYiXyWWnUMOBlDczrjqKzF0dJQP20EP9vqDggcyKm//tEt9iJHNwoYq4r3UeO9UJCwlGK8FwaGTAwwF3IA==}
engines: {node: ^18.17.1 || ^20.3.0 || >=22.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
hasBin: true
@ -880,9 +889,15 @@ packages:
base-64@1.0.0:
resolution: {integrity: sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==}
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
blob-to-buffer@1.2.9:
resolution: {integrity: sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==}
blueimp-md5@2.19.0:
resolution: {integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==}
@ -900,6 +915,9 @@ packages:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
brotli@1.3.3:
resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==}
callsites@4.2.0:
resolution: {integrity: sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==}
engines: {node: '>=12.20'}
@ -969,6 +987,10 @@ packages:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
clone@2.1.2:
resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==}
engines: {node: '>=0.8'}
clsx@2.1.1:
resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
@ -1018,9 +1040,12 @@ packages:
cookie-es@1.2.2:
resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
cookie@0.7.2:
resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
engines: {node: '>= 0.6'}
cookie@1.0.2:
resolution: {integrity: sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==}
engines: {node: '>=18'}
cross-fetch@3.2.0:
resolution: {integrity: sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==}
cross-spawn@7.0.6:
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
@ -1029,6 +1054,10 @@ packages:
crossws@0.3.4:
resolution: {integrity: sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==}
css-tree@3.1.0:
resolution: {integrity: sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==}
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
cssesc@3.0.0:
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
engines: {node: '>=4'}
@ -1078,6 +1107,9 @@ packages:
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
dfa@1.2.0:
resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==}
diff@5.2.0:
resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
engines: {node: '>=0.3.1'}
@ -1105,9 +1137,6 @@ packages:
resolution: {integrity: sha512-rsX7ktqARv/6UQDgMaLfIqUWAEzzbCQiVh7V9rhDXp6c37yoJcks12NVD+XPkgl4AEavmNhVfrhGoqYwIsMYYA==}
engines: {node: '>=14.16'}
emoji-regex-xs@1.0.0:
resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
emoji-regex@10.4.0:
resolution: {integrity: sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==}
@ -1170,6 +1199,9 @@ packages:
resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
engines: {node: '>=4'}
fast-deep-equal@3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
fast-diff@1.3.0:
resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==}
@ -1188,6 +1220,14 @@ packages:
picomatch:
optional: true
fdir@6.4.4:
resolution: {integrity: sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
figures@6.1.0:
resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==}
engines: {node: '>=18'}
@ -1210,6 +1250,9 @@ packages:
resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==}
engines: {node: '>=8'}
fontkit@2.0.4:
resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==}
foreground-child@3.3.1:
resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==}
engines: {node: '>=14'}
@ -1581,6 +1624,9 @@ packages:
mdast-util-to-string@4.0.0:
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
mdn-data@2.12.2:
resolution: {integrity: sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==}
memoize@10.1.0:
resolution: {integrity: sha512-MMbFhJzh4Jlg/poq1si90XRlTZRDHVqdlz2mPyGJ6kqMpyHUyVpDd5gpFAvVehW64+RA1eKE9Yt8aSLY7w2Kgg==}
engines: {node: '>=18'}
@ -1763,11 +1809,17 @@ packages:
ofetch@1.4.1:
resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
oniguruma-to-es@2.3.0:
resolution: {integrity: sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==}
oniguruma-parser@0.12.0:
resolution: {integrity: sha512-fD9o5ebCmEAA9dLysajdQvuKzLL7cj+w7DQjuO3Cb6IwafENfx6iL+RGkmyW82pVRsvgzixsWinHvgxTMJvdIA==}
oniguruma-to-es@4.3.1:
resolution: {integrity: sha512-VtX1kepWO+7HG7IWV5v72JhiqofK7XsiHmtgnvurnNOTdIvE5mrdWYtsOrQyrXCv1L2Ckm08hywp+MFO7rC4Ug==}
os-tmpdir@1.0.2:
resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
@ -1796,13 +1848,16 @@ packages:
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
package-manager-detector@1.0.0:
resolution: {integrity: sha512-7elnH+9zMsRo7aS72w6MeRugTpdRvInmEB4Kmm9BVvPw/SLG8gXUGQ+4wF0Mys0RSWPz0B9nuBbDe8vFeA2sfg==}
package-manager-detector@1.2.0:
resolution: {integrity: sha512-PutJepsOtsqVfUsxCzgTTpyXmiAgvKptIgY4th5eq5UXXFhj5PxfQ9hnGkypMeovpAvVshFRItoFHYO18TCOqA==}
pagefind@1.3.0:
resolution: {integrity: sha512-8KPLGT5g9s+olKMRTU9LFekLizkVIu9tes90O1/aigJ0T5LmyPqTzGJrETnSw3meSYg58YH7JTzhTTW/3z6VAw==}
hasBin: true
pako@0.2.9:
resolution: {integrity: sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==}
parse-latin@7.0.0:
resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==}
@ -1880,14 +1935,14 @@ packages:
resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==}
engines: {node: '>= 14.18.0'}
regex-recursion@5.1.1:
resolution: {integrity: sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==}
regex-recursion@6.0.2:
resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
regex-utilities@2.3.0:
resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
regex@5.1.1:
resolution: {integrity: sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==}
regex@6.0.1:
resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
rehype-parse@9.0.1:
resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==}
@ -1929,6 +1984,9 @@ packages:
resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==}
engines: {node: '>=8'}
restructure@3.0.2:
resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==}
retext-latin@4.0.0:
resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==}
@ -1992,8 +2050,8 @@ packages:
resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
engines: {node: '>= 0.4'}
shiki@1.29.2:
resolution: {integrity: sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==}
shiki@3.3.0:
resolution: {integrity: sha512-j0Z1tG5vlOFGW8JVj0Cpuatzvshes7VJy5ncDmmMaYcmnGW0Js1N81TOW98ivTFNZfKRn9uwEg/aIm638o368g==}
signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
@ -2085,6 +2143,9 @@ packages:
resolution: {integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==}
engines: {node: '>=4'}
tiny-inflate@1.0.3:
resolution: {integrity: sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==}
tinyexec@0.3.2:
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
@ -2092,6 +2153,10 @@ packages:
resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==}
engines: {node: '>=12.0.0'}
tinyglobby@0.2.13:
resolution: {integrity: sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==}
engines: {node: '>=12.0.0'}
tmp@0.0.33:
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
engines: {node: '>=0.6.0'}
@ -2146,12 +2211,18 @@ packages:
ufo@1.5.4:
resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==}
ultrahtml@1.5.3:
resolution: {integrity: sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==}
ultrahtml@1.6.0:
resolution: {integrity: sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==}
uncrypto@0.1.3:
resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==}
unicode-properties@1.4.1:
resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==}
unicode-trie@2.0.0:
resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==}
unicorn-magic@0.3.0:
resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==}
engines: {node: '>=18'}
@ -2159,6 +2230,9 @@ packages:
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
unifont@0.2.0:
resolution: {integrity: sha512-RoF14/tOhLvDa7R5K6A3PjsfJVFKvadvRpWjfV1ttabUe9704P1ie9z1ABLWEts/8SxrBVePav/XhgeFNltpsw==}
unist-util-find-after@5.0.0:
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
@ -2257,8 +2331,8 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
vite@6.2.1:
resolution: {integrity: sha512-n2GnqDb6XPhlt9B8olZPrgMD/es/Nd1RdChF6CBD/fHW6pUyUTt2sQW2fPRX5GiD9XEa6+8A6A4f2vT6pSsE7Q==}
vite@6.3.3:
resolution: {integrity: sha512-5nXH+QsELbFKhsEfWLkHrvgRpTdGJzqOZ+utSdmPTvwHmvU6ITTm3xx+mRusihkcI8GeC7lCDyn3kDtiki9scw==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
@ -2389,8 +2463,8 @@ packages:
resolution: {integrity: sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==}
engines: {node: '>=18'}
zod-to-json-schema@3.24.3:
resolution: {integrity: sha512-HIAfWdYIt1sssHfYZFCXp4rU1w2r8hVVXYIlmoa0r0gABLs5di3RCqPU5DDROogVz1pAdYBaz7HK5n9pSUNs3A==}
zod-to-json-schema@3.24.5:
resolution: {integrity: sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==}
peerDependencies:
zod: ^3.24.1
@ -2412,7 +2486,7 @@ snapshots:
'@astrojs/internal-helpers@0.6.1': {}
'@astrojs/markdown-remark@6.2.1':
'@astrojs/markdown-remark@6.3.1':
dependencies:
'@astrojs/internal-helpers': 0.6.1
'@astrojs/prism': 3.2.0
@ -2428,7 +2502,7 @@ snapshots:
remark-parse: 11.0.0
remark-rehype: 11.1.1
remark-smartypants: 3.0.2
shiki: 1.29.2
shiki: 3.3.0
smol-toml: 1.3.1
unified: 11.0.5
unist-util-remove-position: 5.0.0
@ -2442,7 +2516,7 @@ snapshots:
dependencies:
prismjs: 1.30.0
'@astrojs/telemetry@3.2.0':
'@astrojs/telemetry@3.2.1':
dependencies:
ci-info: 4.2.0
debug: 4.4.0
@ -2467,6 +2541,14 @@ snapshots:
'@babel/helper-string-parser': 7.25.9
'@babel/helper-validator-identifier': 7.25.9
'@capsizecss/unpack@2.4.0':
dependencies:
blob-to-buffer: 1.2.9
cross-fetch: 3.2.0
fontkit: 2.0.4
transitivePeerDependencies:
- encoding
'@emnapi/runtime@1.3.1':
dependencies:
tslib: 2.8.1
@ -2852,35 +2934,33 @@ snapshots:
'@rollup/rollup-win32-x64-msvc@4.35.0':
optional: true
'@shikijs/core@1.29.2':
'@shikijs/core@3.3.0':
dependencies:
'@shikijs/engine-javascript': 1.29.2
'@shikijs/engine-oniguruma': 1.29.2
'@shikijs/types': 1.29.2
'@shikijs/types': 3.3.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
hast-util-to-html: 9.0.5
'@shikijs/engine-javascript@1.29.2':
'@shikijs/engine-javascript@3.3.0':
dependencies:
'@shikijs/types': 1.29.2
'@shikijs/types': 3.3.0
'@shikijs/vscode-textmate': 10.0.2
oniguruma-to-es: 2.3.0
oniguruma-to-es: 4.3.1
'@shikijs/engine-oniguruma@1.29.2':
'@shikijs/engine-oniguruma@3.3.0':
dependencies:
'@shikijs/types': 1.29.2
'@shikijs/types': 3.3.0
'@shikijs/vscode-textmate': 10.0.2
'@shikijs/langs@1.29.2':
'@shikijs/langs@3.3.0':
dependencies:
'@shikijs/types': 1.29.2
'@shikijs/types': 3.3.0
'@shikijs/themes@1.29.2':
'@shikijs/themes@3.3.0':
dependencies:
'@shikijs/types': 1.29.2
'@shikijs/types': 3.3.0
'@shikijs/types@1.29.2':
'@shikijs/types@3.3.0':
dependencies:
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@ -2889,6 +2969,10 @@ snapshots:
'@sindresorhus/merge-streams@2.3.0': {}
'@swc/helpers@0.5.17':
dependencies:
tslib: 2.8.1
'@tailwindcss/node@4.0.13':
dependencies:
enhanced-resolve: 5.18.1
@ -2950,15 +3034,13 @@ snapshots:
postcss-selector-parser: 6.0.10
tailwindcss: 4.0.13
'@tailwindcss/vite@4.0.13(vite@6.2.1(jiti@2.4.2)(lightningcss@1.29.2))':
'@tailwindcss/vite@4.0.13(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2))':
dependencies:
'@tailwindcss/node': 4.0.13
'@tailwindcss/oxide': 4.0.13
lightningcss: 1.29.2
tailwindcss: 4.0.13
vite: 6.2.1(jiti@2.4.2)(lightningcss@1.29.2)
'@types/cookie@0.6.0': {}
vite: 6.3.3(jiti@2.4.2)(lightningcss@1.29.2)
'@types/debug@4.1.12':
dependencies:
@ -2970,6 +3052,8 @@ snapshots:
dependencies:
'@types/unist': 3.0.3
'@types/luxon@3.6.2': {}
'@types/mdast@4.0.4':
dependencies:
'@types/unist': 3.0.3
@ -3056,22 +3140,22 @@ snapshots:
arrify@3.0.0: {}
astro-pagefind@1.8.3(astro@5.4.3(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)):
astro-pagefind@1.8.3(astro@5.7.5(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)):
dependencies:
'@pagefind/default-ui': 1.3.0
astro: 5.4.3(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)
astro: 5.7.5(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2)
pagefind: 1.3.0
sirv: 3.0.1
astro@5.4.3(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2):
astro@5.7.5(jiti@2.4.2)(lightningcss@1.29.2)(rollup@4.35.0)(typescript@5.8.2):
dependencies:
'@astrojs/compiler': 2.11.0
'@astrojs/internal-helpers': 0.6.1
'@astrojs/markdown-remark': 6.2.1
'@astrojs/telemetry': 3.2.0
'@astrojs/markdown-remark': 6.3.1
'@astrojs/telemetry': 3.2.1
'@capsizecss/unpack': 2.4.0
'@oslojs/encoding': 1.1.0
'@rollup/pluginutils': 5.1.4(rollup@4.35.0)
'@types/cookie': 0.6.0
acorn: 8.14.1
aria-query: 5.3.2
axobject-query: 4.1.0
@ -3079,7 +3163,7 @@ snapshots:
ci-info: 4.2.0
clsx: 2.1.1
common-ancestor-path: 1.0.1
cookie: 0.7.2
cookie: 1.0.2
cssesc: 3.0.0
debug: 4.4.0
deterministic-object-hash: 2.0.2
@ -3102,26 +3186,27 @@ snapshots:
neotraverse: 0.6.18
p-limit: 6.2.0
p-queue: 8.1.0
package-manager-detector: 1.0.0
package-manager-detector: 1.2.0
picomatch: 4.0.2
prompts: 2.4.2
rehype: 13.0.2
semver: 7.7.1
shiki: 1.29.2
shiki: 3.3.0
tinyexec: 0.3.2
tinyglobby: 0.2.12
tsconfck: 3.1.5(typescript@5.8.2)
ultrahtml: 1.5.3
ultrahtml: 1.6.0
unifont: 0.2.0
unist-util-visit: 5.0.0
unstorage: 1.15.0
vfile: 6.0.3
vite: 6.2.1(jiti@2.4.2)(lightningcss@1.29.2)
vitefu: 1.0.6(vite@6.2.1(jiti@2.4.2)(lightningcss@1.29.2))
vite: 6.3.3(jiti@2.4.2)(lightningcss@1.29.2)
vitefu: 1.0.6(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2))
xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
yocto-spinner: 0.2.1
zod: 3.24.2
zod-to-json-schema: 3.24.3(zod@3.24.2)
zod-to-json-schema: 3.24.5(zod@3.24.2)
zod-to-ts: 1.2.0(typescript@5.8.2)(zod@3.24.2)
optionalDependencies:
sharp: 0.33.5
@ -3142,6 +3227,7 @@ snapshots:
- '@vercel/kv'
- aws4fetch
- db0
- encoding
- idb-keyval
- ioredis
- jiti
@ -3218,10 +3304,14 @@ snapshots:
base-64@1.0.0: {}
base64-js@1.5.1: {}
bindings@1.5.0:
dependencies:
file-uri-to-path: 1.0.0
blob-to-buffer@1.2.9: {}
blueimp-md5@2.19.0: {}
boxen@8.0.1:
@ -3248,6 +3338,10 @@ snapshots:
dependencies:
fill-range: 7.1.1
brotli@1.3.3:
dependencies:
base64-js: 1.5.1
callsites@4.2.0: {}
camelcase@8.0.0: {}
@ -3300,6 +3394,8 @@ snapshots:
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
clone@2.1.2: {}
clsx@2.1.1: {}
code-excerpt@4.0.0:
@ -3349,7 +3445,13 @@ snapshots:
cookie-es@1.2.2: {}
cookie@0.7.2: {}
cookie@1.0.2: {}
cross-fetch@3.2.0:
dependencies:
node-fetch: 2.7.0
transitivePeerDependencies:
- encoding
cross-spawn@7.0.6:
dependencies:
@ -3361,6 +3463,11 @@ snapshots:
dependencies:
uncrypto: 0.1.3
css-tree@3.1.0:
dependencies:
mdn-data: 2.12.2
source-map-js: 1.2.1
cssesc@3.0.0: {}
currently-unhandled@0.4.1:
@ -3397,6 +3504,8 @@ snapshots:
dependencies:
dequal: 2.0.3
dfa@1.2.0: {}
diff@5.2.0: {}
diff@7.0.0: {}
@ -3413,8 +3522,6 @@ snapshots:
emittery@1.1.0: {}
emoji-regex-xs@1.0.0: {}
emoji-regex@10.4.0: {}
emoji-regex@8.0.0: {}
@ -3484,6 +3591,8 @@ snapshots:
iconv-lite: 0.4.24
tmp: 0.0.33
fast-deep-equal@3.1.3: {}
fast-diff@1.3.0: {}
fast-glob@3.3.3:
@ -3502,6 +3611,10 @@ snapshots:
optionalDependencies:
picomatch: 4.0.2
fdir@6.4.4(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
figures@6.1.0:
dependencies:
is-unicode-supported: 2.1.0
@ -3520,6 +3633,18 @@ snapshots:
flattie@1.1.1: {}
fontkit@2.0.4:
dependencies:
'@swc/helpers': 0.5.17
brotli: 1.3.3
clone: 2.1.2
dfa: 1.2.0
fast-deep-equal: 3.1.3
restructure: 3.0.2
tiny-inflate: 1.0.3
unicode-properties: 1.4.1
unicode-trie: 2.0.0
foreground-child@3.3.1:
dependencies:
cross-spawn: 7.0.6
@ -3984,6 +4109,8 @@ snapshots:
dependencies:
'@types/mdast': 4.0.4
mdn-data@2.12.2: {}
memoize@10.1.0:
dependencies:
mimic-function: 5.0.1
@ -4247,15 +4374,19 @@ snapshots:
node-fetch-native: 1.6.6
ufo: 1.5.4
ohash@2.0.11: {}
once@1.4.0:
dependencies:
wrappy: 1.0.2
oniguruma-to-es@2.3.0:
oniguruma-parser@0.12.0: {}
oniguruma-to-es@4.3.1:
dependencies:
emoji-regex-xs: 1.0.0
regex: 5.1.1
regex-recursion: 5.1.1
oniguruma-parser: 0.12.0
regex: 6.0.1
regex-recursion: 6.0.2
os-tmpdir@1.0.2: {}
@ -4279,7 +4410,7 @@ snapshots:
package-json-from-dist@1.0.1: {}
package-manager-detector@1.0.0: {}
package-manager-detector@1.2.0: {}
pagefind@1.3.0:
optionalDependencies:
@ -4289,6 +4420,8 @@ snapshots:
'@pagefind/linux-x64': 1.3.0
'@pagefind/windows-x64': 1.3.0
pako@0.2.9: {}
parse-latin@7.0.0:
dependencies:
'@types/nlcst': 2.0.3
@ -4357,14 +4490,13 @@ snapshots:
readdirp@4.1.2: {}
regex-recursion@5.1.1:
regex-recursion@6.0.2:
dependencies:
regex: 5.1.1
regex-utilities: 2.3.0
regex-utilities@2.3.0: {}
regex@5.1.1:
regex@6.0.1:
dependencies:
regex-utilities: 2.3.0
@ -4442,6 +4574,8 @@ snapshots:
resolve-from@5.0.0: {}
restructure@3.0.2: {}
retext-latin@4.0.0:
dependencies:
'@types/nlcst': 2.0.3
@ -4551,14 +4685,14 @@ snapshots:
shell-quote@1.8.2: {}
shiki@1.29.2:
shiki@3.3.0:
dependencies:
'@shikijs/core': 1.29.2
'@shikijs/engine-javascript': 1.29.2
'@shikijs/engine-oniguruma': 1.29.2
'@shikijs/langs': 1.29.2
'@shikijs/themes': 1.29.2
'@shikijs/types': 1.29.2
'@shikijs/core': 3.3.0
'@shikijs/engine-javascript': 3.3.0
'@shikijs/engine-oniguruma': 3.3.0
'@shikijs/langs': 3.3.0
'@shikijs/themes': 3.3.0
'@shikijs/types': 3.3.0
'@shikijs/vscode-textmate': 10.0.2
'@types/hast': 3.0.4
@ -4655,6 +4789,8 @@ snapshots:
time-zone@1.0.0: {}
tiny-inflate@1.0.3: {}
tinyexec@0.3.2: {}
tinyglobby@0.2.12:
@ -4662,6 +4798,11 @@ snapshots:
fdir: 6.4.3(picomatch@4.0.2)
picomatch: 4.0.2
tinyglobby@0.2.13:
dependencies:
fdir: 6.4.4(picomatch@4.0.2)
picomatch: 4.0.2
tmp@0.0.33:
dependencies:
os-tmpdir: 1.0.2
@ -4694,10 +4835,20 @@ snapshots:
ufo@1.5.4: {}
ultrahtml@1.5.3: {}
ultrahtml@1.6.0: {}
uncrypto@0.1.3: {}
unicode-properties@1.4.1:
dependencies:
base64-js: 1.5.1
unicode-trie: 2.0.0
unicode-trie@2.0.0:
dependencies:
pako: 0.2.9
tiny-inflate: 1.0.3
unicorn-magic@0.3.0: {}
unified@11.0.5:
@ -4710,6 +4861,11 @@ snapshots:
trough: 2.2.0
vfile: 6.0.3
unifont@0.2.0:
dependencies:
css-tree: 3.1.0
ohash: 2.0.11
unist-util-find-after@5.0.0:
dependencies:
'@types/unist': 3.0.3
@ -4780,19 +4936,22 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.2
vite@6.2.1(jiti@2.4.2)(lightningcss@1.29.2):
vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2):
dependencies:
esbuild: 0.25.1
fdir: 6.4.4(picomatch@4.0.2)
picomatch: 4.0.2
postcss: 8.5.3
rollup: 4.35.0
tinyglobby: 0.2.13
optionalDependencies:
fsevents: 2.3.3
jiti: 2.4.2
lightningcss: 1.29.2
vitefu@1.0.6(vite@6.2.1(jiti@2.4.2)(lightningcss@1.29.2)):
vitefu@1.0.6(vite@6.3.3(jiti@2.4.2)(lightningcss@1.29.2)):
optionalDependencies:
vite: 6.2.1(jiti@2.4.2)(lightningcss@1.29.2)
vite: 6.3.3(jiti@2.4.2)(lightningcss@1.29.2)
web-namespaces@2.0.1: {}
@ -4874,7 +5033,7 @@ snapshots:
yoctocolors@2.1.1: {}
zod-to-json-schema@3.24.3(zod@3.24.2):
zod-to-json-schema@3.24.5(zod@3.24.2):
dependencies:
zod: 3.24.2

View file

@ -0,0 +1,29 @@
---
import { DateTime } from "luxon";
import Notif from "../ui/Notif.astro";
const { date } = Astro.props;
const isOldPost = (date: Date) => {
// very much stolen from the wonderful Robb Knight (https://rknight.me)
return true;
const d = DateTime.fromISO(date.toISOString()).setZone("Europe/London");
return DateTime.now().diff(d, "years").years > 4;
};
---
{
() => {
if (isOldPost) {
return (
<Notif
level={0}
heading="This post is over 4 years old"
icon="fa-solid fa-hand-pointer"
xstyle="ml-2 my-4 p-4 w-fit"
>
a
</Notif>
);
}
}
}

View file

@ -16,6 +16,7 @@ import { Content as Bio } from "~/content/bio.md";
<Bio />
</Prose>
</div>
<div>
<Image src={"https://cdn.laker.tech/images/tree.png"} alt={"tree"} width={200} height={300}/>
</div>

View file

@ -3,7 +3,7 @@ import Box from "~/components/ui/Box.astro";
import CollectionList from "~/components/lists/BlogPostList.astro";
import StyledLink from "~/components/util/StyledLink.astro";
---
<Box title="latest blog posts" icon="fa-solid fa-blog">
<Box title="latest blog posts" icon="fa-solid fa-signature" class="w-8">
<CollectionList limit={3} />
<div class="py-1"></div>
<StyledLink href="/blog">see more</StyledLink>

View file

@ -6,11 +6,11 @@ interface Props {
class?: string;
}
const { title, description, icon, class } = Astro.props;
const { title, description, icon, class: className } = Astro.props;
---
<div
class="border-3 border-light-pu dark:border-dark-pu px-4 py-3 mt-5 w-fit rounded-br-3xl rounded-tl-3xl h-fit"
class={`border-3 border-light-pu dark:border-dark-pu px-4 py-3 mt-5 w-fit rounded-br-3xl rounded-tl-3xl h-fit ${className ?? ''}`}
>
<span class="mb-1">
{icon && <i class={`fa-lg mr-1 ${icon}`} />}

View file

@ -1,4 +1,5 @@
---
import { getFlavourText } from "~/lib/fun";
import Navigation from "./Navigation.astro";
import conf from "~/site.config";
@ -7,8 +8,10 @@ let headerurl = "/";
---
<header class="md:flex md:justify-between md:items-center mb-4">
<h1 class="text-2xl font-bold">
<h1 class="text-2xl font-bold sm my-2">
<i class="fa-solid fa-star mr-2"></i>
<a href={headerurl}>{headertext}</a>
</h1>
<p class="hidden md:block">{getFlavourText()}</p>
<Navigation />
</header>

View file

@ -23,7 +23,7 @@ const headerLinks = [
{
label: "Blog",
href: "/blog",
icon: "fa-solid fa-star",
icon: "fa-solid fa-signature",
},
{
label: "Contact",
@ -38,7 +38,7 @@ const headerLinks = [
];
---
<nav class="flex flex-row gap-4">
<nav class="flex flex-row flex-wrap gap-4 md:flex-nowrap">
{
headerLinks.map((link) => (
<span class="">

View file

@ -16,7 +16,7 @@ const { level, icon, heading, xstyle } = Astro.props;
---
<div
class={clsx(`sm:block md:hidden text-black ${xstyle}`, {
class={clsx(`text-black ${xstyle}`, {
"bg-light-ye dark:bg-dark-ye": level === 0,
"bg-light-or dark:bg-dark-or": level === 1,
"bg-light-re dark:bg-dark-re": level === 2,

View file

@ -3,7 +3,7 @@
---
<div
class="prose dark:prose-invert prose-p:text-light-tx dark:prose-p:text-dark-tx prose-headings:mt-1 prose-a:decoration-dotted prose-a:text-light-tx dark:prose-a:text-dark-tx prose-a:underline-offset-4 prose-a:decoration-2 prose-a:underline prose-a:decoration-light-pu dark:prose-a:decoration-dark-pu prose-strong:text-light-tx dark:prose-strong:text-dark-tx prose-code:font-mono"
class="prose dark:prose-invert prose-p:text-light-tx dark:prose-p:text-dark-tx prose-headings:mt-1 prose-a:decoration-dotted prose-a:text-light-tx dark:prose-a:text-dark-tx prose-a:underline-offset-4 prose-a:decoration-2 prose-a:underline prose-a:decoration-light-pu dark:prose-a:decoration-dark-pu prose-strong:text-light-tx dark:prose-strong:text-dark-tx prose-code:font-mono prose-ul:list-outside"
>
<slot />
</div>

View file

@ -5,7 +5,7 @@ const { title, description, icon, date } = Astro.props;
---
<div class="mb-4 mt-6">
<h2 class="text-xl font-bold">
<h2 class="text-xl font-bold font-inter">
<i class={`${icon} text-xl mr-2 text-light-pu dark:text-dark-pu`}></i>
{title}
</h2>
@ -18,7 +18,8 @@ const { title, description, icon, date } = Astro.props;
() => {
if (date) {
return (
<p class="mt-2 text-sm text-light-tx-2 dark:text-dark-tx-2">
<p class="mt-2 ml-1.5 text-sm text-light-tx-2 dark:text-dark-tx-2">
<i class="fa-solid fa-calendar-days mr-2 text-light-pu dark:text-dark-pu"></i>
<Date date={date} />
</p>
);

View file

@ -1,5 +1,6 @@
---
import conf from "~/site.config.ts";
import { Font } from "astro:assets";
import { getClacks } from "~/lib/fun";
import { descriptionConstructor, titleConstructor } from "~/lib/metadata";
@ -35,6 +36,7 @@ const { title, description } = Astro.props;
/>
<link href="https://cdn.laker.tech/web/fa/css/brands.css" rel="stylesheet" />
<link href="https://cdn.laker.tech/web/fa/css/solid.css" rel="stylesheet" />
<Font cssVariable="--fontapi-inter" preload />
{/* analytics */}

View file

@ -2,7 +2,7 @@
import Notif from "../ui/Notif.astro";
---
<Notif level={1}>
<p>This view port may be too small.</p>
<p>Try ivyneeds.rest on a bigger screen.</p>
<Notif level={1} xstyle="sm:block md:hidden">
<p>This viewport may be too small.</p>
<p>Try ivy.rs on a bigger screen.</p>
</Notif>

View file

@ -8,22 +8,27 @@ tags:
icon: fa-solid fa-phone
---
- Email:
- Client: Fastmail Web Client, Mail.app on iOS
- Server: Fastmail, Gmail (personal), Outlook (college)
- Notes: Obsidian (personal), Notes.app (family)
- Todo: My bullet journal + Things
- Photo Taking / Management: Camera.app / Photos.app
- Email Client: Fastmail Web Client, Mail.app on iOS
- Email Server: Fastmail, Outlook (college)
---
- Notes: Obsidian
- To-do: My Bullet Journal + Things
- Calendar: Calendar.app
- Cloud Storage: iCloud (personal, family) / Office 365 (college)
- RSS reader: [Miniflux] / New Reeder
- Browser: still using Arc and will be until it fades into the aether
- Chat: Discord, IRC (through chat.sr.ht), Facebook Messenger (for one group chat)
- Bookmarks / Read It Later: Linkding
---
- Photo Taking / Management: Camera.app / Photos.app
- Cloud Storage: iCloud / Office 365 (college)
---
- Browser: Arc (stil)
- Chat: Discord, IRC (through chat.sr.ht)
---
- Word Processing: iA Writer / Obsidian
- Spreadsheets: Google Sheets (once in a blue moon)
- Presentations: Obsidian (with Advanced Slides plugin)
- Budgeting & Personal Finance: Spreadsheet
---
- Bookmarks / Read It Later: Linkding
- RSS reader: Miniflux / New Reeder
- News: my RSS reader
---
- Music: Apple Music
- Podcasts: Overcastp
- Podcasts: Overcast

10
src/content/blog/code.md Normal file
View file

@ -0,0 +1,10 @@
---
title: A Blog Post With Some Code
description: meow
tags:
- code
---
```js
console.log("tinker tailor soldier spy");
```

View file

@ -4,6 +4,7 @@ description: '"Looking pretty good for a dead bitch"'
date: 2025-04-24
tags:
- meta
- web
---
Im back!
Hi! Welcome to my new website. We're on a version number high enough that I don't even care anymore.

View file

@ -4,8 +4,8 @@
"all your base are belong to us!",
"must construct additional pylons",
"Everybody's dead, Dave.",
"Stay strange and be ace -- Yard Act",
"I'm a rocketman!",
"Stay strange and be ace",
"I'm a rocket(wo)man!",
"It's a fixer-upper!",
"💜",
"Sibelius crashed",

View file

@ -3,15 +3,24 @@ import "~/styles/global.css";
import Head from "~/components/util/Head.astro";
import { ClientRouter } from "astro:transitions";
import SizeWarning from "~/components/util/SizeWarning.astro";
import { isProd } from "~/lib/util";
import Notif from "~/components/ui/Notif.astro";
const { title, date, description } = Astro.props;
---
<html class="bg-light-bg text-light-tx dark:bg-dark-bg dark:text-dark-tx">
<html class="font-inter bg-light-bg text-light-tx dark:bg-dark-bg dark:text-dark-tx">
<Head title={title} date={date} description={description} />
<body class="pl-1 md:px-24 sm:pt-2 md:pt-6">
<ClientRouter />
<SizeWarning />
{
() => {
if (!isProd()) {
return <Notif level={0} xstyle="w-fit p-2 mb-2">dev mode, hang tight</Notif>;
}
}
}
<slot />
</body>
</html>

View file

@ -9,7 +9,7 @@ const { title, description, icon, date } = Astro.props;
<Layout title={title} description={description} date={date}>
<div>
<Header />
<main class="pr-48">
<main class="pr-48 lg:pl-1">
<Strapline title={title} description={description} icon={icon} date={date} />
<slot />
</main>

View file

@ -0,0 +1,4 @@
export function isProd() {
if (import.meta.env.PROD == true) return true
return false
}

View file

@ -1,6 +1,8 @@
---
import Page from "~/layouts/Page.astro";
import Prose from "~/components/ui/Prose.astro"
import { getCollection, render } from "astro:content";
import AgeWarning from "~/components/blog/AgeWarning.astro";
// 1. Generate a new path for every collection entry
export async function getStaticPaths() {
const posts = await getCollection("blog");
@ -20,5 +22,22 @@ const { Content } = await render(post);
date={post.data.date}
icon={post.data.icon}
>
<Content />
<AgeWarning />
<Prose>
<Content />
</Prose>
<div class="mt-4">
<i class="fa-solid fa-hashtag mr-1"></i>
{
(post.data.tags ?? []).map((tag) => (
<a
class="bg-light-pu dark:bg-dark-pu hover:bg-light-ma hover:dark:bg-dark-ma transition-colors text-white px-1 py-0.5 mr-2 last:mr-0 rounded-md text-center inline-block"
href={`/blog/tags/${tag}`}
>
{tag}
</a>
))
}
</div>
</Page>

View file

@ -6,7 +6,7 @@ import BlogPostList from "~/components/lists/BlogPostList.astro";
<Page
title="Blog"
description="writing"
icon="fa-solid fa-star"
icon="fa-solid fa-signature"
>
<BlogPostList />
</Page>

View file

@ -8,7 +8,7 @@ export default {
author: {
name: "Ivy Turner",
fedi: "@ivy@social.lol",
email: "ivy@sorbet.gay",
email: "ivy@ivy.rs",
},
devMode: {

View file

@ -193,6 +193,7 @@
--color-dark-ma-2: var(--color-magenta-600);
--color-accent: light-dark(var(--color-light-pu), var(--color-dark-pu));
--font-inter: var(--fontapi-inter)
}
.link {