add comments using giscus.app

This commit is contained in:
Moritz Hölting 2026-05-05 16:58:21 +02:00
parent c9c3be5fd4
commit b2b6db7b6d
9 changed files with 624 additions and 124 deletions

View File

@ -14,11 +14,11 @@
"lint:fix": "eslint . --fix"
},
"dependencies": {
"@astrojs/check": "^0.9.6",
"@astrojs/mdx": "^5.0.1",
"@astrojs/rss": "^4.0.17",
"@astrojs/sitemap": "^3.6.0",
"@astrojs/solid-js": "^6.0.0",
"@astrojs/check": "^0.9.9",
"@astrojs/mdx": "^5.0.4",
"@astrojs/rss": "^4.0.18",
"@astrojs/sitemap": "^3.7.2",
"@astrojs/solid-js": "^6.0.1",
"@iconify-icon/solid": "^3.0.3",
"@iconify-json/devicon": "^1.2.61",
"@iconify-json/material-icon-theme": "^1.2.56",
@ -26,13 +26,14 @@
"@iconify-json/pixelarticons": "^1.2.4",
"@tailwindcss/typography": "^0.5.19",
"@tailwindcss/vite": "^4.2.1",
"astro": "^6.0.5",
"astro": "^6.2.1",
"astro-icon": "^1.1.5",
"astro-mermaid": "^2.0.1",
"astro-og-canvas": "^0.10.1",
"canvaskit-wasm": "^0.40.0",
"clsx": "^2.1.1",
"fuse.js": "^7.1.0",
"giscus": "^1.6.0",
"iconify-icon": "^3.0.2",
"mermaid": "^11.13.0",
"rehype-katex": "^7.0.1",

View File

@ -9,20 +9,20 @@ importers:
.:
dependencies:
'@astrojs/check':
specifier: ^0.9.6
version: 0.9.8(prettier@3.8.1)(typescript@5.9.3)
specifier: ^0.9.9
version: 0.9.9(prettier@3.8.1)(typescript@5.9.3)
'@astrojs/mdx':
specifier: ^5.0.1
version: 5.0.1(astro@6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))
specifier: ^5.0.4
version: 5.0.4(astro@6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))
'@astrojs/rss':
specifier: ^4.0.17
version: 4.0.17
specifier: ^4.0.18
version: 4.0.18
'@astrojs/sitemap':
specifier: ^3.6.0
version: 3.7.1
specifier: ^3.7.2
version: 3.7.2
'@astrojs/solid-js':
specifier: ^6.0.0
version: 6.0.0(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(solid-js@1.9.11)(yaml@2.8.2)
specifier: ^6.0.1
version: 6.0.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(solid-js@1.9.11)(yaml@2.8.2)
'@iconify-icon/solid':
specifier: ^3.0.3
version: 3.0.3(solid-js@1.9.11)
@ -45,17 +45,17 @@ importers:
specifier: ^4.2.1
version: 4.2.1(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2))
astro:
specifier: ^6.0.5
version: 6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)
specifier: ^6.2.1
version: 6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)
astro-icon:
specifier: ^1.1.5
version: 1.1.5
astro-mermaid:
specifier: ^2.0.1
version: 2.0.1(astro@6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))(mermaid@11.13.0)
version: 2.0.1(astro@6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))(mermaid@11.13.0)
astro-og-canvas:
specifier: ^0.10.1
version: 0.10.1(astro@6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))
version: 0.10.1(astro@6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))
canvaskit-wasm:
specifier: ^0.40.0
version: 0.40.0
@ -65,6 +65,9 @@ importers:
fuse.js:
specifier: ^7.1.0
version: 7.1.0
giscus:
specifier: ^1.6.0
version: 1.6.0
iconify-icon:
specifier: ^3.0.2
version: 3.0.2
@ -104,23 +107,23 @@ packages:
'@antfu/utils@8.1.1':
resolution: {integrity: sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==}
'@astrojs/check@0.9.8':
resolution: {integrity: sha512-LDng8446QLS5ToKjRHd3bgUdirvemVVExV7nRyJfW2wV36xuv7vDxwy5NWN9zqeSEDgg0Tv84sP+T3yEq+Zlkw==}
'@astrojs/check@0.9.9':
resolution: {integrity: sha512-A5UW8uIuErLWEoRQvzgXpO1gTjUFtK8r7nU2Z7GewAMxUb7bPvpk11qaKKgxqXlHJWlAvaaxy+Xg28A6bmQ1Tg==}
hasBin: true
peerDependencies:
typescript: ^5.0.0
typescript: ^5.0.0 || ^6.0.0
'@astrojs/compiler@2.13.1':
resolution: {integrity: sha512-f3FN83d2G/v32ipNClRKgYv30onQlMZX1vCeZMjPsMMPl1mDpmbl0+N5BYo4S/ofzqJyS5hvwacEo0CCVDn/Qg==}
'@astrojs/compiler@3.0.1':
resolution: {integrity: sha512-z97oYbdebO5aoWzuJ/8q5hLK232+17KcLZ7cJ8BCWk6+qNzVxn/gftC0KzMBUTD8WAaBkPpNSQK6PXLnNrZ0CA==}
'@astrojs/compiler@4.0.0':
resolution: {integrity: sha512-eouss7G8ygdZqHuke033VMcVw5HTZUu+PXd/h06DGDUg/jt5btPYPqh66ENWw/mU78rBrf/oeC4oqoBwMtDMNA==}
'@astrojs/internal-helpers@0.8.0':
resolution: {integrity: sha512-J56GrhEiV+4dmrGLPNOl2pZjpHXAndWVyiVDYGDuw6MWKpBSEMLdFxHzeM/6sqaknw9M+HFfHZAcvi3OfT3D/w==}
'@astrojs/internal-helpers@0.9.0':
resolution: {integrity: sha512-GdYkzR26re8izmyYlBqf4z2s7zNngmWLFuxw0UKiPNqHraZGS6GKWIwSHgS22RDlu2ePFJ8bzmpBcUszut/SDg==}
'@astrojs/language-server@2.16.5':
resolution: {integrity: sha512-MEQvrbuiFDEo+LCO4vvYuTr3eZ4IluZ/n4BbUv77AWAJNEj/n0j7VqTvdL1rGloNTIKZTUd46p5RwYKsxQGY8w==}
'@astrojs/language-server@2.16.7':
resolution: {integrity: sha512-b64bWT74Vq/ORcSqW7TdIjjpB6hcl+Ei/lMANIUaAGlLPiYNtPTRI/j2tzvugT+LoVwfJtE2Ukq/t2OGCyEtfQ==}
hasBin: true
peerDependencies:
prettier: ^3.0.0
@ -131,28 +134,28 @@ packages:
prettier-plugin-astro:
optional: true
'@astrojs/markdown-remark@7.0.0':
resolution: {integrity: sha512-jTAXHPy45L7o1ljH4jYV+ShtOHtyQUa1mGp3a5fJp1soX8lInuTJQ6ihmldHzVM4Q7QptU4SzIDIcKbBJO7sXQ==}
'@astrojs/markdown-remark@7.1.1':
resolution: {integrity: sha512-C6e9BnLGlbdv6bV8MYGeHpHxsUHrCrB4OuRLqi5LI7oiBVcBcqfUN06zpwFQdHgV48QCCrMmLpyqBr7VqC+swA==}
'@astrojs/mdx@5.0.1':
resolution: {integrity: sha512-xfvc9MuV/5Kl6JaiYYEFi7ilbGYyaaOboH+gH8f2jHAZ2pmmHtnSrewS03vNeruBsa8rtS3X8NHJrqeZt+0wLg==}
engines: {node: ^20.19.1 || >=22.12.0}
'@astrojs/mdx@5.0.4':
resolution: {integrity: sha512-tSbuuYueNODiFAFaME7pjHY5lOLoxBYJi1cKd6scw9+a4ZO7C7UGdafEoVAQvOV2eO8a6RaHSAJYGVPL1w8BPA==}
engines: {node: '>=22.12.0'}
peerDependencies:
astro: ^6.0.0
'@astrojs/prism@4.0.0':
resolution: {integrity: sha512-NndtNPpxaGinRpRytljGBvYHpTOwHycSZ/c+lQi5cHvkqqrHKWdkPEhImlODBNmbuB+vyQUNUDXyjzt66CihJg==}
engines: {node: ^20.19.1 || >=22.12.0}
'@astrojs/prism@4.0.1':
resolution: {integrity: sha512-nksZQVjlferuWzhPsBpQ1JE5XuKAf1id1/9Hj4a9KG4+ofrlzxUUwX4YGQF/SuDiuiGKEnzopGOt38F3AnVWsQ==}
engines: {node: '>=22.12.0'}
'@astrojs/rss@4.0.17':
resolution: {integrity: sha512-eV+wdMbeVKC9+sPaV0LN8JL1LGo9YAh3GKl4Ou4nzMNLmXM/aswYpSGxVEAuHilgBZ6/++/Pv08ICmuOqX107w==}
'@astrojs/rss@4.0.18':
resolution: {integrity: sha512-wc5DwKlbTEdgVAWnHy8krFTeQ42t1v/DJqeq5HtulYK3FYHE4krtRGjoyhS3eXXgfdV6Raoz2RU3wrMTFAitRg==}
'@astrojs/sitemap@3.7.1':
resolution: {integrity: sha512-IzQqdTeskaMX+QDZCzMuJIp8A8C1vgzMBp/NmHNnadepHYNHcxQdGLQZYfkbd2EbRXUfOS+UDIKx8sKg0oWVdw==}
'@astrojs/sitemap@3.7.2':
resolution: {integrity: sha512-PqkzkcZTb5ICiyIR8VoKbIAP/laNRXi5tw616N1Ckk+40oNB8Can1AzVV56lrbC5GKSZFCyJYUVYqVivMisvpA==}
'@astrojs/solid-js@6.0.0':
resolution: {integrity: sha512-8FA/pofltLUfgDH1QdqM6aT4QIA5FYS37yHDwgKed3s7z5pG58AtkBky7WwuLrakR1ofAXOwRrS5sORGCqjFGg==}
engines: {node: ^20.19.1 || >=22.12.0}
'@astrojs/solid-js@6.0.1':
resolution: {integrity: sha512-6g2DEtznW2ithiaDY3qyCSdnyNBjpXfKR2qCnvxxdmZZlO+8AC85KkEX4BpnJrzVfy7ptx0/WYKuBRCFdheo8Q==}
engines: {node: '>=22.12.0'}
peerDependencies:
solid-devtools: ^0.30.1
solid-js: ^1.8.5
@ -160,8 +163,8 @@ packages:
solid-devtools:
optional: true
'@astrojs/telemetry@3.3.0':
resolution: {integrity: sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==}
'@astrojs/telemetry@3.3.1':
resolution: {integrity: sha512-7fcIxXS9J4ls5tr8b3ww9rbAIz2+HrhNJYZdkAhhB4za/I5IZ/60g+Bs8q7zwG0tOIZfNB4JWhVJ1Qkl/OrNCw==}
engines: {node: 18.20.8 || ^20.3.0 || >=22.0.0}
'@astrojs/yaml2ts@0.2.3':
@ -658,12 +661,21 @@ packages:
'@jridgewell/trace-mapping@0.3.31':
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
'@lit-labs/ssr-dom-shim@1.5.1':
resolution: {integrity: sha512-Aou5UdlSpr5whQe8AA/bZG0jMj96CoJIWbGfZ91qieWu5AWUMKw8VR/pAkQkJYvBNhmCcWnZlyyk5oze8JIqYA==}
'@lit/reactive-element@2.1.2':
resolution: {integrity: sha512-pbCDiVMnne1lYUIaYNN5wrwQXDtHaYtg7YEFPeW+hws6U47WeFvISGUWekPGKWOP1ygrs0ef0o1VJMk1exos5A==}
'@mdx-js/mdx@3.1.1':
resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==}
'@mermaid-js/parser@1.0.1':
resolution: {integrity: sha512-opmV19kN1JsK0T6HhhokHpcVkqKpF+x2pPDKKM2ThHtZAB5F4PROopk0amuVYK5qMrIA4erzpNm8gmPNJgMDxQ==}
'@nodable/entities@2.1.0':
resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==}
'@oslojs/encoding@1.1.0':
resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==}
@ -1200,9 +1212,9 @@ packages:
peerDependencies:
astro: ^5.0.0 || ^6.0.0-alpha
astro@6.0.5:
resolution: {integrity: sha512-JnLCwaoCaRXIHuIB8yNztJrd7M3hXrHUMAoQmeXtEBKxRu/738REhaCZ1lapjrS9HlpHsWTu3JUXTERB/0PA7g==}
engines: {node: ^20.19.1 || >=22.12.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
astro@6.2.1:
resolution: {integrity: sha512-3g1sYNly+QAkuO5ErNEQBYvsxorNDSCUNIeStBs+kcXGchvKQl1Q9EuDNOvSg010XLlHJFLVFZs9LV18Jjp4Hg==}
engines: {node: '>=22.12.0', npm: '>=9.6.5', pnpm: '>=7.1.0'}
hasBin: true
axobject-query@4.1.0:
@ -1343,8 +1355,8 @@ packages:
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
cookie-es@1.2.2:
resolution: {integrity: sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==}
cookie-es@1.2.3:
resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==}
cookie@1.1.1:
resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
@ -1561,8 +1573,8 @@ packages:
decode-named-character-reference@1.3.0:
resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==}
defu@6.1.4:
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
defu@6.1.7:
resolution: {integrity: sha512-7z22QmUWiQ/2d0KkdYmANbRUVABpZ9SNYyH5vx6PZ+nE5bcC0l7uFvEfHlyld/HcGBFTL536ClDt3DEcSlEJAQ==}
delaunator@5.0.1:
resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==}
@ -1712,11 +1724,11 @@ packages:
fast-uri@3.1.0:
resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==}
fast-xml-builder@1.1.4:
resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==}
fast-xml-builder@1.1.7:
resolution: {integrity: sha512-Yh7/7rQuMXICNr0oMYDR2yHP6oUvmQsTToFeOWj/kIDhAwQ+c4Ol/lbcwOmEM5OHYQmh6S6EQSQ1sljCKP36bQ==}
fast-xml-parser@5.4.1:
resolution: {integrity: sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==}
fast-xml-parser@5.7.2:
resolution: {integrity: sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==}
hasBin: true
fd-slicer@1.1.0:
@ -1763,6 +1775,9 @@ packages:
resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==}
engines: {node: '>=8'}
giscus@1.6.0:
resolution: {integrity: sha512-Zrsi8r4t1LVW950keaWcsURuZUQwUaMKjvJgTCY125vkW6OiEBkatE7ScJDbpqKHdZwb///7FVC21SE3iFK3PQ==}
github-slugger@2.0.0:
resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
@ -1773,8 +1788,8 @@ packages:
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
h3@1.15.8:
resolution: {integrity: sha512-iOH6Vl8mGd9nNfu9C0IZ+GuOAfJHcyf3VriQxWaSWIB76Fg4BnFuk4cxBxjmQSSxJS664+pgjP6e7VBnUzFfcg==}
h3@1.15.11:
resolution: {integrity: sha512-L3THSe2MPeBwgIZVSH5zLdBBU90TOxarvhK9d04IDY2AmVS8j2Jz2LIWtwsGOU3lu2I5jCN7FNvVfY2+XyF+mg==}
hachure-fill@0.5.2:
resolution: {integrity: sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==}
@ -1873,6 +1888,11 @@ packages:
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
hasBin: true
is-docker@4.0.0:
resolution: {integrity: sha512-LHE+wROyG/Y/0ZnbktRCoTix2c1RhgWaZraMZ8o1Q7zCh0VSrICJQO5oqIIISrcSBtrXv0o233w1IYwsWCjTzA==}
engines: {node: '>=20'}
hasBin: true
is-fullwidth-code-point@3.0.0:
resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
engines: {node: '>=8'}
@ -2025,6 +2045,15 @@ packages:
resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==}
engines: {node: '>= 12.0.0'}
lit-element@4.2.2:
resolution: {integrity: sha512-aFKhNToWxoyhkNDmWZwEva2SlQia+jfG0fjIWV//YeTaWrVnOxD89dPKfigCUspXFmjzOEUQpOkejH5Ly6sG0w==}
lit-html@3.3.2:
resolution: {integrity: sha512-Qy9hU88zcmaxBXcc10ZpdK7cOLXvXpRoBxERdtqV9QOrfpMZZ6pSYP91LhpPtap3sFMUiL7Tw2RImbe0Al2/kw==}
lit@3.3.2:
resolution: {integrity: sha512-NF9zbsP79l4ao2SNrH3NkfmFgN/hBYSQo90saIVI1o5GpjAdCPVstVzO1MrLOakHoEhYkrtRjPK6Ob521aoYWQ==}
local-pkg@1.1.2:
resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==}
engines: {node: '>=14'}
@ -2341,8 +2370,8 @@ packages:
path-data-parser@0.1.0:
resolution: {integrity: sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==}
path-expression-matcher@1.1.3:
resolution: {integrity: sha512-qdVgY8KXmVdJZRSS1JdEPOKPdTiEK/pi0RkcT2sw1RhXxohdujUlJFPuS1TSkevZ9vzd3ZlL7ULl1MHGTApKzQ==}
path-expression-matcher@1.5.0:
resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==}
engines: {node: '>=14.0.0'}
pathe@2.0.3:
@ -2365,6 +2394,10 @@ packages:
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
engines: {node: '>=12'}
picomatch@4.0.4:
resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
pkg-types@1.3.1:
resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==}
@ -2596,8 +2629,8 @@ packages:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'}
strnum@2.2.0:
resolution: {integrity: sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==}
strnum@2.2.3:
resolution: {integrity: sha512-oKx6RUCuHfT3oyVjtnrmn19H1SiCqgJSg+54XqURKp5aCMbrXrhLjRN9TjuwMjiYstZ0MzDrHqkGZ5dFTKd+zg==}
style-to-js@1.1.21:
resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==}
@ -2647,6 +2680,10 @@ packages:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
tinyglobby@0.2.16:
resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==}
engines: {node: '>=12.0.0'}
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@ -2733,8 +2770,8 @@ packages:
unist-util-visit@5.1.0:
resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==}
unstorage@1.17.4:
resolution: {integrity: sha512-fHK0yNg38tBiJKp/Vgsq4j0JEsCmgqH58HAn707S7zGkArbZsVr/CwINoi+nh3h98BRCwKvx1K3Xg9u3VV83sw==}
unstorage@1.17.5:
resolution: {integrity: sha512-0i3iqvRfx29hkNntHyQvJTpf5W9dQ9ZadSoRU8+xVlhVtT7jAX57fazYO9EHvcRCfBCyi5YRya7XCDOsbTgkPg==}
peerDependencies:
'@azure/app-configuration': ^1.8.0
'@azure/cosmos': ^4.2.0
@ -2867,6 +2904,46 @@ packages:
yaml:
optional: true
vite@7.3.2:
resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==}
engines: {node: ^20.19.0 || >=22.12.0}
hasBin: true
peerDependencies:
'@types/node': ^20.19.0 || >=22.12.0
jiti: '>=1.21.0'
less: ^4.0.0
lightningcss: ^1.21.0
sass: ^1.70.0
sass-embedded: ^1.70.0
stylus: '>=0.54.8'
sugarss: ^5.0.0
terser: ^5.16.0
tsx: ^4.8.1
yaml: ^2.4.2
peerDependenciesMeta:
'@types/node':
optional: true
jiti:
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
sass-embedded:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
tsx:
optional: true
yaml:
optional: true
vitefu@1.1.2:
resolution: {integrity: sha512-zpKATdUbzbsycPFBN71nS2uzBUQiVnFoOrr2rvqv34S1lcAgMKKkjWleLGeiJlZ8lwCXvtWaRn7R3ZC16SYRuw==}
peerDependencies:
@ -3052,9 +3129,9 @@ snapshots:
'@antfu/utils@8.1.1': {}
'@astrojs/check@0.9.8(prettier@3.8.1)(typescript@5.9.3)':
'@astrojs/check@0.9.9(prettier@3.8.1)(typescript@5.9.3)':
dependencies:
'@astrojs/language-server': 2.16.5(prettier@3.8.1)(typescript@5.9.3)
'@astrojs/language-server': 2.16.7(prettier@3.8.1)(typescript@5.9.3)
chokidar: 4.0.3
kleur: 4.1.5
typescript: 5.9.3
@ -3065,13 +3142,13 @@ snapshots:
'@astrojs/compiler@2.13.1': {}
'@astrojs/compiler@3.0.1': {}
'@astrojs/compiler@4.0.0': {}
'@astrojs/internal-helpers@0.8.0':
'@astrojs/internal-helpers@0.9.0':
dependencies:
picomatch: 4.0.3
picomatch: 4.0.4
'@astrojs/language-server@2.16.5(prettier@3.8.1)(typescript@5.9.3)':
'@astrojs/language-server@2.16.7(prettier@3.8.1)(typescript@5.9.3)':
dependencies:
'@astrojs/compiler': 2.13.1
'@astrojs/yaml2ts': 0.2.3
@ -3081,7 +3158,7 @@ snapshots:
'@volar/language-server': 2.4.28
'@volar/language-service': 2.4.28
muggle-string: 0.4.1
tinyglobby: 0.2.15
tinyglobby: 0.2.16
volar-service-css: 0.0.70(@volar/language-service@2.4.28)
volar-service-emmet: 0.0.70(@volar/language-service@2.4.28)
volar-service-html: 0.0.70(@volar/language-service@2.4.28)
@ -3096,10 +3173,10 @@ snapshots:
transitivePeerDependencies:
- typescript
'@astrojs/markdown-remark@7.0.0':
'@astrojs/markdown-remark@7.1.1':
dependencies:
'@astrojs/internal-helpers': 0.8.0
'@astrojs/prism': 4.0.0
'@astrojs/internal-helpers': 0.9.0
'@astrojs/prism': 4.0.1
github-slugger: 2.0.0
hast-util-from-html: 2.0.3
hast-util-to-text: 4.0.2
@ -3111,6 +3188,7 @@ snapshots:
remark-parse: 11.0.0
remark-rehype: 11.1.2
remark-smartypants: 3.0.2
retext-smartypants: 6.2.0
shiki: 4.0.2
smol-toml: 1.6.0
unified: 11.0.5
@ -3121,12 +3199,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@astrojs/mdx@5.0.1(astro@6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))':
'@astrojs/mdx@5.0.4(astro@6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))':
dependencies:
'@astrojs/markdown-remark': 7.0.0
'@astrojs/markdown-remark': 7.1.1
'@mdx-js/mdx': 3.1.1
acorn: 8.16.0
astro: 6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)
astro: 6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)
es-module-lexer: 2.0.0
estree-util-visit: 2.0.0
hast-util-to-html: 9.0.5
@ -3140,23 +3218,23 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@astrojs/prism@4.0.0':
'@astrojs/prism@4.0.1':
dependencies:
prismjs: 1.30.0
'@astrojs/rss@4.0.17':
'@astrojs/rss@4.0.18':
dependencies:
fast-xml-parser: 5.4.1
fast-xml-parser: 5.7.2
piccolore: 0.1.3
zod: 4.3.6
'@astrojs/sitemap@3.7.1':
'@astrojs/sitemap@3.7.2':
dependencies:
sitemap: 9.0.1
stream-replace-string: 2.0.0
zod: 4.3.6
'@astrojs/solid-js@6.0.0(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(solid-js@1.9.11)(yaml@2.8.2)':
'@astrojs/solid-js@6.0.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(solid-js@1.9.11)(yaml@2.8.2)':
dependencies:
solid-js: 1.9.11
vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2)
@ -3176,17 +3254,14 @@ snapshots:
- tsx
- yaml
'@astrojs/telemetry@3.3.0':
'@astrojs/telemetry@3.3.1':
dependencies:
ci-info: 4.4.0
debug: 4.4.3
dlv: 1.1.3
dset: 3.1.4
is-docker: 3.0.0
is-docker: 4.0.0
is-wsl: 3.1.1
which-pm-runs: 1.1.0
transitivePeerDependencies:
- supports-color
'@astrojs/yaml2ts@0.2.3':
dependencies:
@ -3616,6 +3691,12 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
'@lit-labs/ssr-dom-shim@1.5.1': {}
'@lit/reactive-element@2.1.2':
dependencies:
'@lit-labs/ssr-dom-shim': 1.5.1
'@mdx-js/mdx@3.1.1':
dependencies:
'@types/estree': 1.0.8
@ -3650,13 +3731,15 @@ snapshots:
dependencies:
langium: 4.2.1
'@nodable/entities@2.1.0': {}
'@oslojs/encoding@1.1.0': {}
'@rollup/pluginutils@5.3.0(rollup@4.59.0)':
dependencies:
'@types/estree': 1.0.8
estree-walker: 2.0.2
picomatch: 4.0.3
picomatch: 4.0.4
optionalDependencies:
rollup: 4.59.0
@ -4024,8 +4107,7 @@ snapshots:
dependencies:
'@types/node': 24.12.0
'@types/trusted-types@2.0.7':
optional: true
'@types/trusted-types@2.0.7': {}
'@types/unist@2.0.11': {}
@ -4141,27 +4223,27 @@ snapshots:
transitivePeerDependencies:
- supports-color
astro-mermaid@2.0.1(astro@6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))(mermaid@11.13.0):
astro-mermaid@2.0.1(astro@6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2))(mermaid@11.13.0):
dependencies:
astro: 6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)
astro: 6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)
import-meta-resolve: 4.2.0
mdast-util-to-string: 4.0.0
mermaid: 11.13.0
unist-util-visit: 5.1.0
astro-og-canvas@0.10.1(astro@6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)):
astro-og-canvas@0.10.1(astro@6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)):
dependencies:
astro: 6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)
astro: 6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2)
canvaskit-wasm: 0.40.0
deterministic-object-hash: 2.0.2
entities: 7.0.1
astro@6.0.5(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2):
astro@6.2.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(rollup@4.59.0)(typescript@5.9.3)(yaml@2.8.2):
dependencies:
'@astrojs/compiler': 3.0.1
'@astrojs/internal-helpers': 0.8.0
'@astrojs/markdown-remark': 7.0.0
'@astrojs/telemetry': 3.3.0
'@astrojs/compiler': 4.0.0
'@astrojs/internal-helpers': 0.9.0
'@astrojs/markdown-remark': 7.1.1
'@astrojs/telemetry': 3.3.1
'@capsizecss/unpack': 4.0.0
'@clack/prompts': 1.1.0
'@oslojs/encoding': 1.1.0
@ -4174,7 +4256,6 @@ snapshots:
cookie: 1.1.1
devalue: 5.6.4
diff: 8.0.3
dlv: 1.1.3
dset: 3.1.4
es-module-lexer: 2.0.0
esbuild: 0.27.4
@ -4193,7 +4274,7 @@ snapshots:
p-queue: 9.1.0
package-manager-detector: 1.6.0
piccolore: 0.1.3
picomatch: 4.0.3
picomatch: 4.0.4
rehype: 13.0.2
semver: 7.7.4
shiki: 4.0.2
@ -4206,10 +4287,10 @@ snapshots:
ultrahtml: 1.6.0
unifont: 0.7.4
unist-util-visit: 5.1.0
unstorage: 1.17.4
unstorage: 1.17.5
vfile: 6.0.3
vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2)
vitefu: 1.1.2(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2))
vite: 7.3.2(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2)
vitefu: 1.1.2(vite@7.3.2(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2))
xxhash-wasm: 1.1.0
yargs-parser: 22.0.0
zod: 4.3.6
@ -4383,7 +4464,7 @@ snapshots:
convert-source-map@2.0.0: {}
cookie-es@1.2.2: {}
cookie-es@1.2.3: {}
cookie@1.1.1: {}
@ -4626,7 +4707,7 @@ snapshots:
dependencies:
character-entities: 2.0.2
defu@6.1.4: {}
defu@6.1.7: {}
delaunator@5.0.1:
dependencies:
@ -4809,14 +4890,16 @@ snapshots:
fast-uri@3.1.0: {}
fast-xml-builder@1.1.4:
fast-xml-builder@1.1.7:
dependencies:
path-expression-matcher: 1.1.3
path-expression-matcher: 1.5.0
fast-xml-parser@5.4.1:
fast-xml-parser@5.7.2:
dependencies:
fast-xml-builder: 1.1.4
strnum: 2.2.0
'@nodable/entities': 2.1.0
fast-xml-builder: 1.1.7
path-expression-matcher: 1.5.0
strnum: 2.2.3
fd-slicer@1.1.0:
dependencies:
@ -4826,6 +4909,10 @@ snapshots:
optionalDependencies:
picomatch: 4.0.3
fdir@6.5.0(picomatch@4.0.4):
optionalDependencies:
picomatch: 4.0.4
flattie@1.1.1: {}
fontace@0.4.1:
@ -4849,17 +4936,21 @@ snapshots:
dependencies:
pump: 3.0.4
giscus@1.6.0:
dependencies:
lit: 3.3.2
github-slugger@2.0.0: {}
globals@15.15.0: {}
graceful-fs@4.2.11: {}
h3@1.15.8:
h3@1.15.11:
dependencies:
cookie-es: 1.2.2
cookie-es: 1.2.3
crossws: 0.3.5
defu: 6.1.4
defu: 6.1.7
destr: 2.0.5
iron-webcrypto: 1.2.1
node-mock-http: 1.0.4
@ -5054,6 +5145,8 @@ snapshots:
is-docker@3.0.0: {}
is-docker@4.0.0: {}
is-fullwidth-code-point@3.0.0: {}
is-hexadecimal@2.0.1: {}
@ -5159,6 +5252,22 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.31.1
lightningcss-win32-x64-msvc: 1.31.1
lit-element@4.2.2:
dependencies:
'@lit-labs/ssr-dom-shim': 1.5.1
'@lit/reactive-element': 2.1.2
lit-html: 3.3.2
lit-html@3.3.2:
dependencies:
'@types/trusted-types': 2.0.7
lit@3.3.2:
dependencies:
'@lit/reactive-element': 2.1.2
lit-element: 4.2.2
lit-html: 3.3.2
local-pkg@1.1.2:
dependencies:
mlly: 1.8.1
@ -5790,7 +5899,7 @@ snapshots:
path-data-parser@0.1.0: {}
path-expression-matcher@1.1.3: {}
path-expression-matcher@1.5.0: {}
pathe@2.0.3: {}
@ -5804,6 +5913,8 @@ snapshots:
picomatch@4.0.3: {}
picomatch@4.0.4: {}
pkg-types@1.3.1:
dependencies:
confbox: 0.1.8
@ -6172,7 +6283,7 @@ snapshots:
dependencies:
ansi-regex: 5.0.1
strnum@2.2.0: {}
strnum@2.2.3: {}
style-to-js@1.1.21:
dependencies:
@ -6229,6 +6340,11 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
tinyglobby@0.2.16:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
trim-lines@3.0.1: {}
trough@2.2.0: {}
@ -6322,12 +6438,12 @@ snapshots:
unist-util-is: 6.0.1
unist-util-visit-parents: 6.0.2
unstorage@1.17.4:
unstorage@1.17.5:
dependencies:
anymatch: 3.1.3
chokidar: 5.0.0
destr: 2.0.5
h3: 1.15.8
h3: 1.15.11
lru-cache: 11.2.7
node-fetch-native: 1.6.7
ofetch: 1.5.1
@ -6386,10 +6502,29 @@ snapshots:
lightningcss: 1.31.1
yaml: 2.8.2
vite@7.3.2(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2):
dependencies:
esbuild: 0.27.4
fdir: 6.5.0(picomatch@4.0.4)
picomatch: 4.0.4
postcss: 8.5.8
rollup: 4.59.0
tinyglobby: 0.2.15
optionalDependencies:
'@types/node': 24.12.0
fsevents: 2.3.3
jiti: 2.6.1
lightningcss: 1.31.1
yaml: 2.8.2
vitefu@1.1.2(vite@7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2)):
optionalDependencies:
vite: 7.3.1(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2)
vitefu@1.1.2(vite@7.3.2(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2)):
optionalDependencies:
vite: 7.3.2(@types/node@24.12.0)(jiti@2.6.1)(lightningcss@1.31.1)(yaml@2.8.2)
volar-service-css@0.0.70(@volar/language-service@2.4.28):
dependencies:
vscode-css-languageservice: 6.3.10

View File

@ -0,0 +1,149 @@
/*! MIT License
* Copyright (c) 2018 GitHub Inc.
* https://github.com/primer/primitives/blob/main/LICENSE
*/
@font-face {
font-family: "DepartureMono";
src: url("https://hoelting.dev/fonts/DepartureMono-Regular.woff")
format("woff");
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "FiraCode";
src: url("https://hoelting.dev/fonts/FiraCode-Regular.woff") format("woff");
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "FiraCode";
src: url("https://hoelting.dev/fonts/FiraCode-Bold.woff") format("woff");
font-weight: 700;
font-style: normal;
font-display: swap;
}
body {
font-family: "FiraCode";
}
main {
--color-prettylights-syntax-comment: #8b949e;
--color-prettylights-syntax-constant: #79c0ff;
--color-prettylights-syntax-entity: #d2a8ff;
--color-prettylights-syntax-storage-modifier-import: #c9d1d9;
--color-prettylights-syntax-entity-tag: #7ee787;
--color-prettylights-syntax-keyword: #ff7b72;
--color-prettylights-syntax-string: #a5d6ff;
--color-prettylights-syntax-variable: #ffa657;
--color-prettylights-syntax-brackethighlighter-unmatched: #f85149;
--color-prettylights-syntax-invalid-illegal-text: #f0f6fc;
--color-prettylights-syntax-invalid-illegal-bg: #8e1519;
--color-prettylights-syntax-carriage-return-text: #f0f6fc;
--color-prettylights-syntax-carriage-return-bg: #b62324;
--color-prettylights-syntax-string-regexp: #7ee787;
--color-prettylights-syntax-markup-list: #f2cc60;
--color-prettylights-syntax-markup-heading: #1f6feb;
--color-prettylights-syntax-markup-italic: #c9d1d9;
--color-prettylights-syntax-markup-bold: #c9d1d9;
--color-prettylights-syntax-markup-deleted-text: #ffdcd7;
--color-prettylights-syntax-markup-deleted-bg: #67060c;
--color-prettylights-syntax-markup-inserted-text: #aff5b4;
--color-prettylights-syntax-markup-inserted-bg: #033a16;
--color-prettylights-syntax-markup-changed-text: #ffdfb6;
--color-prettylights-syntax-markup-changed-bg: #5a1e02;
--color-prettylights-syntax-markup-ignored-text: #c9d1d9;
--color-prettylights-syntax-markup-ignored-bg: #1158c7;
--color-prettylights-syntax-meta-diff-range: #d2a8ff;
--color-prettylights-syntax-brackethighlighter-angle: #8b949e;
--color-prettylights-syntax-sublimelinter-gutter-mark: #484f58;
--color-prettylights-syntax-constant-other-reference-link: #a5d6ff;
--color-btn-text: #c9d1d9;
--color-btn-bg: #21262d;
--color-btn-border: rgb(240 246 252 / 10%);
--color-btn-shadow: 0 0 transparent;
--color-btn-inset-shadow: 0 0 transparent;
--color-btn-hover-bg: #30363d;
--color-btn-hover-border: #8b949e;
--color-btn-active-bg: hsl(212deg 12% 18% / 100%);
--color-btn-active-border: #6e7681;
--color-btn-selected-bg: #161b22;
--color-btn-primary-text: #fff;
--color-btn-primary-bg: #238636;
--color-btn-primary-border: rgb(240 246 252 / 10%);
--color-btn-primary-shadow: 0 0 transparent;
--color-btn-primary-inset-shadow: 0 0 transparent;
--color-btn-primary-hover-bg: #2ea043;
--color-btn-primary-hover-border: rgb(240 246 252 / 10%);
--color-btn-primary-selected-bg: #238636;
--color-btn-primary-selected-shadow: 0 0 transparent;
--color-btn-primary-disabled-text: rgb(255 255 255 / 50%);
--color-btn-primary-disabled-bg: rgb(35 134 54 / 60%);
--color-btn-primary-disabled-border: rgb(240 246 252 / 10%);
--color-action-list-item-default-hover-bg: rgb(177 186 196 / 12%);
--color-segmented-control-bg: rgb(110 118 129 / 10%);
--color-segmented-control-button-bg: #0d1117;
--color-segmented-control-button-selected-border: #6e7681;
--color-fg-default: #e6edf3;
--color-fg-muted: #7d8590;
--color-fg-subtle: #6e7681;
--color-canvas-default: #0d1117;
--color-canvas-overlay: #161b22;
--color-canvas-inset: #010409;
--color-canvas-subtle: #161b22;
--color-border-default: #30363d;
--color-border-muted: #21262d;
--color-neutral-muted: rgb(110 118 129 / 40%);
--color-accent-fg: #2f81f7;
--color-accent-emphasis: #1f6feb;
--color-accent-muted: rgb(56 139 253 / 40%);
--color-accent-subtle: rgb(56 139 253 / 10%);
--color-success-fg: #3fb950;
--color-attention-fg: #d29922;
--color-attention-muted: rgb(187 128 9 / 40%);
--color-attention-subtle: rgb(187 128 9 / 15%);
--color-danger-fg: #f85149;
--color-danger-muted: rgb(248 81 73 / 40%);
--color-danger-subtle: rgb(248 81 73 / 10%);
--color-primer-shadow-inset: 0 0 transparent;
--color-scale-gray-7: #21262d;
--color-scale-blue-8: #0c2d6b;
/*! Extensions from @primer/css/alerts/flash.scss */
--color-social-reaction-bg-hover: var(--color-scale-gray-7);
--color-social-reaction-bg-reacted-hover: var(--color-scale-blue-8);
}
main .pagination-loader-container {
background-image: url("https://github.com/images/modules/pulls/progressive-disclosure-line-dark.svg");
}
main .gsc-loading-image {
background-image: url("https://github.githubassets.com/images/mona-loading-dark.gif");
}
main
:is(
.gsc-header,
.gsc-reactions-count,
.gsc-comment-box-buttons,
.gsc-comment-author .link-primary,
.gsc-comment-author .color-box-border-info.font-medium,
.gsc-comment-box-tabs
) {
font-family: "DepartureMono";
}
main .gsc-header .gsc-left-header em.color-text-secondary {
display: none;
}
main
.gsc-toolbar-item[title="Enable fixed-width (monospace) font in the editor"] {
display: none;
}

View File

@ -0,0 +1,149 @@
/*! MIT License
* Copyright (c) 2018 GitHub Inc.
* https://github.com/primer/primitives/blob/main/LICENSE
*/
@font-face {
font-family: "DepartureMono";
src: url("https://hoelting.dev/fonts/DepartureMono-Regular.woff")
format("woff");
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "FiraCode";
src: url("https://hoelting.dev/fonts/FiraCode-Regular.woff") format("woff");
font-weight: 400;
font-style: normal;
font-display: swap;
}
@font-face {
font-family: "FiraCode";
src: url("https://hoelting.dev/fonts/FiraCode-Bold.woff") format("woff");
font-weight: 700;
font-style: normal;
font-display: swap;
}
body {
font-family: "FiraCode";
}
main {
--color-prettylights-syntax-comment: #6e7781;
--color-prettylights-syntax-constant: #0550ae;
--color-prettylights-syntax-entity: #8250df;
--color-prettylights-syntax-storage-modifier-import: #24292f;
--color-prettylights-syntax-entity-tag: #116329;
--color-prettylights-syntax-keyword: #cf222e;
--color-prettylights-syntax-string: #0a3069;
--color-prettylights-syntax-variable: #953800;
--color-prettylights-syntax-brackethighlighter-unmatched: #82071e;
--color-prettylights-syntax-invalid-illegal-text: #f6f8fa;
--color-prettylights-syntax-invalid-illegal-bg: #82071e;
--color-prettylights-syntax-carriage-return-text: #f6f8fa;
--color-prettylights-syntax-carriage-return-bg: #cf222e;
--color-prettylights-syntax-string-regexp: #116329;
--color-prettylights-syntax-markup-list: #3b2300;
--color-prettylights-syntax-markup-heading: #0550ae;
--color-prettylights-syntax-markup-italic: #24292f;
--color-prettylights-syntax-markup-bold: #24292f;
--color-prettylights-syntax-markup-deleted-text: #82071e;
--color-prettylights-syntax-markup-deleted-bg: #ffebe9;
--color-prettylights-syntax-markup-inserted-text: #116329;
--color-prettylights-syntax-markup-inserted-bg: #dafbe1;
--color-prettylights-syntax-markup-changed-text: #953800;
--color-prettylights-syntax-markup-changed-bg: #ffd8b5;
--color-prettylights-syntax-markup-ignored-text: #eaeef2;
--color-prettylights-syntax-markup-ignored-bg: #0550ae;
--color-prettylights-syntax-meta-diff-range: #8250df;
--color-prettylights-syntax-brackethighlighter-angle: #57606a;
--color-prettylights-syntax-sublimelinter-gutter-mark: #8c959f;
--color-prettylights-syntax-constant-other-reference-link: #0a3069;
--color-btn-text: #24292f;
--color-btn-bg: #f6f8fa;
--color-btn-border: rgb(31 35 40 / 15%);
--color-btn-shadow: 0 1px 0 rgb(31 35 40 / 4%);
--color-btn-inset-shadow: inset 0 1px 0 rgb(255 255 255 / 25%);
--color-btn-hover-bg: #f3f4f6;
--color-btn-hover-border: rgb(31 35 40 / 15%);
--color-btn-active-bg: hsl(220deg 14% 93% / 100%);
--color-btn-active-border: rgb(31 35 40 / 15%);
--color-btn-selected-bg: hsl(220deg 14% 94% / 100%);
--color-btn-primary-text: #fff;
--color-btn-primary-bg: #1f883d;
--color-btn-primary-border: rgb(31 35 40 / 15%);
--color-btn-primary-shadow: 0 1px 0 rgb(31 35 40 / 10%);
--color-btn-primary-inset-shadow: inset 0 1px 0 rgb(255 255 255 / 3%);
--color-btn-primary-hover-bg: #1a7f37;
--color-btn-primary-hover-border: rgb(31 35 40 / 15%);
--color-btn-primary-selected-bg: hsl(137deg 66% 28% / 100%);
--color-btn-primary-selected-shadow: inset 0 1px 0 rgb(0 45 17 / 20%);
--color-btn-primary-disabled-text: rgb(255 255 255 / 80%);
--color-btn-primary-disabled-bg: #94d3a2;
--color-btn-primary-disabled-border: rgb(31 35 40 / 15%);
--color-action-list-item-default-hover-bg: rgb(208 215 222 / 32%);
--color-segmented-control-bg: #eaeef2;
--color-segmented-control-button-bg: #fff;
--color-segmented-control-button-selected-border: #8c959f;
--color-fg-default: #1f2328;
--color-fg-muted: #656d76;
--color-fg-subtle: #6e7781;
--color-canvas-default: #fff;
--color-canvas-overlay: #fff;
--color-canvas-inset: #f6f8fa;
--color-canvas-subtle: #f6f8fa;
--color-border-default: #d0d7de;
--color-border-muted: hsl(210deg 18% 87% / 100%);
--color-neutral-muted: rgb(175 184 193 / 20%);
--color-accent-fg: #0969da;
--color-accent-emphasis: #0969da;
--color-accent-muted: rgb(84 174 255 / 40%);
--color-accent-subtle: #ddf4ff;
--color-success-fg: #1a7f37;
--color-attention-fg: #9a6700;
--color-attention-muted: rgb(212 167 44 / 40%);
--color-attention-subtle: #fff8c5;
--color-danger-fg: #d1242f;
--color-danger-muted: rgb(255 129 130 / 40%);
--color-danger-subtle: #ffebe9;
--color-primer-shadow-inset: inset 0 1px 0 rgb(208 215 222 / 20%);
--color-scale-gray-1: #eaeef2;
--color-scale-blue-1: #b6e3ff;
/*! Extensions from @primer/css/alerts/flash.scss */
--color-social-reaction-bg-hover: var(--color-scale-gray-1);
--color-social-reaction-bg-reacted-hover: var(--color-scale-blue-1);
}
main .pagination-loader-container {
background-image: url("https://github.com/images/modules/pulls/progressive-disclosure-line.svg");
}
main .gsc-loading-image {
background-image: url("https://github.githubassets.com/images/mona-loading-default.gif");
}
main
:is(
.gsc-header,
.gsc-reactions-count,
.gsc-comment-box-buttons,
.gsc-comment-author .link-primary,
.gsc-comment-author .color-box-border-info.font-medium,
.gsc-comment-box-tabs
) {
font-family: "DepartureMono";
}
main .gsc-header .gsc-left-header em.color-text-secondary {
display: none;
}
main
.gsc-toolbar-item[title="Enable fixed-width (monospace) font in the editor"] {
display: none;
}

View File

@ -1,16 +1,57 @@
---
import { render, type CollectionEntry } from "astro:content";
import Container from "./Container.astro";
import { GISCUS_REPO } from "@/consts";
type Props = {
entry: CollectionEntry<"projects"> | CollectionEntry<"blog">;
commentsCategory?: {name: string, id: string};
};
const { entry } = Astro.props;
const { entry, commentsCategory } = Astro.props;
const { Content, headings } = await render(entry);
---
{(commentsCategory && <script>
import "giscus";
function getIFrame(): HTMLIFrameElement | null {
return document.querySelector(
"giscus-widget",
)?.shadowRoot?.querySelector('iframe') as HTMLIFrameElement | null;
}
function updateGiscusTheme() {
const brightness = document.documentElement.classList.contains("dark")
? "dark"
: "light";
const theme = `${window.location.origin}/css/giscus-theme-${brightness}.css`;
const iframe = getIFrame();
if (!iframe) return;
iframe.contentWindow?.postMessage(
{ giscus: { setConfig: { theme } } },
"https://giscus.app",
);
}
const observer = new MutationObserver(updateGiscusTheme);
observer.observe(document.documentElement, {
attributes: true,
attributeFilter: ["class"],
});
document.querySelector("giscus-widget")!.addEventListener("load", updateGiscusTheme);
let updatedTheme = false;
window.addEventListener("message", (msg) => {
if (msg.origin === "https://giscus.app" && !updatedTheme) {
updateGiscusTheme();
updatedTheme = true;
}
})
</script>)}
<div class="article-layout">
<!-- Sidebar -->
{
@ -35,6 +76,20 @@ const { Content, headings } = await render(entry);
<article class="animate content prose dark:prose-invert">
<Content />
</article>
{(commentsCategory && <giscus-widget
repo={GISCUS_REPO.name}
repoid={GISCUS_REPO.id}
category={commentsCategory.name}
categoryid={commentsCategory.id}
mapping="pathname"
reactionsenabled="1"
emitmetadata="0"
inputposition="top"
theme={`${Astro.url.origin}/css/giscus-theme-dark.css`}
loading="lazy"
lang="en"></giscus-widget>
)}
</Container>
</div>

View File

@ -72,3 +72,9 @@ export const SOCIALS: Socials = [
HREF: "https://www.linkedin.com/in/moritz-h%C3%B6lting/",
},
];
export const GISCUS_REPO = {
name: "moritz-hoelting/portfolio-webpage-comments",
id: "R_kgDOSU8cAQ",
};

View File

@ -34,7 +34,10 @@ const { title, summary } = post.data;
<ArticleTopLayout entry={post} />
</div>
</TopLayout>
<ArticleContent entry={post} />
<ArticleContent
entry={post}
commentsCategory={{ name: "Blog", id: "DIC_kwDOSU8cAc4C8Ynz" }}
/>
<BottomLayout>
<div class="animate">
<ArticleBottomLayout entry={post} />

View File

@ -34,7 +34,10 @@ const { title, summary } = project.data;
<ArticleTopLayout entry={project} />
</div>
</TopLayout>
<ArticleContent entry={project} />
<ArticleContent
entry={project}
commentsCategory={{ name: "Projects", id: "DIC_kwDOSU8cAc4C8Yng" }}
/>
<BottomLayout>
<div class="animate">
<ArticleBottomLayout entry={project} />

View File

@ -2,9 +2,8 @@
"extends": "astro/tsconfigs/strict",
"compilerOptions": {
"strictNullChecks": true,
"baseUrl": ".",
"paths": {
"@/*": ["src/*"]
"@/*": ["./src/*"]
},
"jsx": "preserve",
"jsxImportSource": "solid-js"