refactor: replace preact with react

This commit is contained in:
Stefan Imhoff
2025-01-03 14:39:54 +01:00
parent 1560013a07
commit 756d6b0258
32 changed files with 97 additions and 245 deletions

View File

@@ -1,6 +1,6 @@
import mdx from '@astrojs/mdx'; import mdx from '@astrojs/mdx';
import preact from '@astrojs/preact';
import prefetch from '@astrojs/prefetch'; import prefetch from '@astrojs/prefetch';
import react from '@astrojs/react';
import sitemap from '@astrojs/sitemap'; import sitemap from '@astrojs/sitemap';
import tailwind from '@astrojs/tailwind'; import tailwind from '@astrojs/tailwind';
import swup from '@swup/astro'; import swup from '@swup/astro';
@@ -28,9 +28,7 @@ export default defineConfig({
remarkPlugins: [remarkReadingTime, remarkWidont], remarkPlugins: [remarkReadingTime, remarkWidont],
}), }),
tailwind(), tailwind(),
preact({ react(),
compat: true,
}),
swup({ globalInstance: true }), swup({ globalInstance: true }),
prefetch(), prefetch(),
pagefind(), pagefind(),

View File

@@ -31,9 +31,10 @@ const generateIcons = async (iconFiles) => {
svg, svg,
{ {
plugins: ['@svgr/plugin-svgo', '@svgr/plugin-jsx'], plugins: ['@svgr/plugin-svgo', '@svgr/plugin-jsx'],
dimensions: false, dimensions: true,
typescript: true, typescript: true,
jsxRuntime: 'classic-preact', jsxRuntime: 'automatic',
jsxImportSource: 'react',
}, },
{ componentName: iconName } { componentName: iconName }
); );

View File

@@ -17,9 +17,8 @@
"dependencies": { "dependencies": {
"@astro-community/astro-embed-youtube": "^0.5.2", "@astro-community/astro-embed-youtube": "^0.5.2",
"@astrojs/mdx": "^3.1.3", "@astrojs/mdx": "^3.1.3",
"@astrojs/preact": "^3.5.1",
"@astrojs/prefetch": "^0.4.1", "@astrojs/prefetch": "^0.4.1",
"@astrojs/react": "^3.6.1", "@astrojs/react": "^3.6.2",
"@astrojs/rss": "^4.0.7", "@astrojs/rss": "^4.0.7",
"@astrojs/sitemap": "^3.1.6", "@astrojs/sitemap": "^3.1.6",
"@astrojs/tailwind": "^5.1.0", "@astrojs/tailwind": "^5.1.0",
@@ -46,10 +45,9 @@
"object-hash": "^3.0.0", "object-hash": "^3.0.0",
"postcss": "^8.4.38", "postcss": "^8.4.38",
"potrace": "^2.1.8", "potrace": "^2.1.8",
"preact": "^10.22.0", "react": "^18.3.1",
"react": "npm:@preact/compat@latest",
"react-chartjs-2": "^5.2.0", "react-chartjs-2": "^5.2.0",
"react-dom": "npm:@preact/compat@latest", "react-dom": "^18.3.1",
"reading-time": "^1.5.0", "reading-time": "^1.5.0",
"swup": "^4.6.1", "swup": "^4.6.1",
"tailwindcss": "^3.4.3", "tailwindcss": "^3.4.3",
@@ -91,11 +89,5 @@
"tailwindcss-opentype": "^1.1.0", "tailwindcss-opentype": "^1.1.0",
"typescript": "^5.4.5", "typescript": "^5.4.5",
"vite": "^5.2.11" "vite": "^5.2.11"
},
"pnpm": {
"overrides": {
"react": "npm:@preact/compat@latest",
"react-dom": "npm:@preact/compat@latest"
}
} }
} }

237
pnpm-lock.yaml generated
View File

@@ -4,10 +4,6 @@ settings:
autoInstallPeers: true autoInstallPeers: true
excludeLinksFromLockfile: false excludeLinksFromLockfile: false
overrides:
react: npm:@preact/compat@latest
react-dom: npm:@preact/compat@latest
importers: importers:
.: .:
@@ -18,15 +14,12 @@ importers:
'@astrojs/mdx': '@astrojs/mdx':
specifier: ^3.1.3 specifier: ^3.1.3
version: 3.1.3(astro@4.14.0(@types/node@22.3.0)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4)) version: 3.1.3(astro@4.14.0(@types/node@22.3.0)(rollup@4.20.0)(terser@5.31.6)(typescript@5.5.4))
'@astrojs/preact':
specifier: ^3.5.1
version: 3.5.1(@babel/core@7.25.2)(preact@10.23.2)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))
'@astrojs/prefetch': '@astrojs/prefetch':
specifier: ^0.4.1 specifier: ^0.4.1
version: 0.4.1 version: 0.4.1
'@astrojs/react': '@astrojs/react':
specifier: ^3.6.1 specifier: ^3.6.2
version: 3.6.2(@preact/compat@17.1.2(preact@10.23.2))(@preact/compat@17.1.2(preact@10.23.2))(@types/react-dom@18.3.0)(@types/react@18.3.3)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) version: 3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))
'@astrojs/rss': '@astrojs/rss':
specifier: ^4.0.7 specifier: ^4.0.7
version: 4.0.7 version: 4.0.7
@@ -105,18 +98,15 @@ importers:
potrace: potrace:
specifier: ^2.1.8 specifier: ^2.1.8
version: 2.1.8 version: 2.1.8
preact:
specifier: ^10.22.0
version: 10.23.2
react: react:
specifier: npm:@preact/compat@latest specifier: ^18.3.1
version: '@preact/compat@17.1.2(preact@10.23.2)' version: 18.3.1
react-chartjs-2: react-chartjs-2:
specifier: ^5.2.0 specifier: ^5.2.0
version: 5.2.0(@preact/compat@17.1.2(preact@10.23.2))(chart.js@4.4.3) version: 5.2.0(chart.js@4.4.3)(react@18.3.1)
react-dom: react-dom:
specifier: npm:@preact/compat@latest specifier: ^18.3.1
version: '@preact/compat@17.1.2(preact@10.23.2)' version: 18.3.1(react@18.3.1)
reading-time: reading-time:
specifier: ^1.5.0 specifier: ^1.5.0
version: 1.5.0 version: 1.5.0
@@ -290,12 +280,6 @@ packages:
peerDependencies: peerDependencies:
astro: ^4.8.0 astro: ^4.8.0
'@astrojs/preact@3.5.1':
resolution: {integrity: sha512-sKF0Di7kwr2pMAc0PbEGuNF9AhJdLImQqtbgUUP3x75zaBg6mJsHmVt5jMqYpW4zWBfLuqACTaNLxWwu6u4nzw==}
engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0}
peerDependencies:
preact: ^10.6.5
'@astrojs/prefetch@0.4.1': '@astrojs/prefetch@0.4.1':
resolution: {integrity: sha512-bpC875BqeIuWVgqhi4X814ftzzbKocaLkiZczaj8k5J2SRpueIGkww3XmD+yY/Ekkm9j30aS3neVO6wSm4IJNA==} resolution: {integrity: sha512-bpC875BqeIuWVgqhi4X814ftzzbKocaLkiZczaj8k5J2SRpueIGkww3XmD+yY/Ekkm9j30aS3neVO6wSm4IJNA==}
deprecated: '@astrojs/prefetch is deprecated in favor of the builtin prefetch option. Please see the migration guide for more information: https://docs.astro.build/en/guides/prefetch/#migrating-from-astrojsprefetch' deprecated: '@astrojs/prefetch is deprecated in favor of the builtin prefetch option. Please see the migration guide for more information: https://docs.astro.build/en/guides/prefetch/#migrating-from-astrojsprefetch'
@@ -310,8 +294,8 @@ packages:
peerDependencies: peerDependencies:
'@types/react': ^17.0.50 || ^18.0.21 '@types/react': ^17.0.50 || ^18.0.21
'@types/react-dom': ^17.0.17 || ^18.0.6 '@types/react-dom': ^17.0.17 || ^18.0.6
react: npm:@preact/compat@latest react: ^17.0.2 || ^18.0.0 || ^19.0.0-beta
react-dom: npm:@preact/compat@latest react-dom: ^17.0.2 || ^18.0.0 || ^19.0.0-beta
'@astrojs/rss@4.0.7': '@astrojs/rss@4.0.7':
resolution: {integrity: sha512-ZEG55XFB19l+DplUvBISmz04UbjDtKliRO4Y5+ERRhAMjgCVVobEBNE6ZwWG1h6orWUocy4nfPihKXDyB73x9g==} resolution: {integrity: sha512-ZEG55XFB19l+DplUvBISmz04UbjDtKliRO4Y5+ERRhAMjgCVVobEBNE6ZwWG1h6orWUocy4nfPihKXDyB73x9g==}
@@ -1911,42 +1895,6 @@ packages:
'@polka/url@1.0.0-next.25': '@polka/url@1.0.0-next.25':
resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==}
'@preact/compat@17.1.2':
resolution: {integrity: sha512-7pOZN9lMDDRQ+6aWvjwTp483KR8/zOpfS83wmOo3zfuLKdngS8/5RLbsFWzFZMGdYlotAhX980hJ75bjOHTwWg==}
peerDependencies:
preact: '*'
'@preact/preset-vite@2.8.2':
resolution: {integrity: sha512-m3tl+M8IO8jgiHnk+7LSTFl8axdPXloewi7iGVLdmCwf34XOzEUur0bZVewW4DUbUipFjTS2CXu27+5f/oexBA==}
peerDependencies:
'@babel/core': 7.x
vite: 2.x || 3.x || 4.x || 5.x
'@preact/signals-core@1.8.0':
resolution: {integrity: sha512-OBvUsRZqNmjzCZXWLxkZfhcgT+Fk8DDcT/8vD6a1xhDemodyy87UJRJfASMuSD8FaAIeGgGm85ydXhm7lr4fyA==}
'@preact/signals@1.3.0':
resolution: {integrity: sha512-EOMeg42SlLS72dhoq6Vjq08havnLseWmPQ8A0YsgIAqMgWgx7V1a39+Pxo6i7SY5NwJtH4849JogFq3M67AzWg==}
peerDependencies:
preact: 10.x
'@prefresh/babel-plugin@0.5.1':
resolution: {integrity: sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==}
'@prefresh/core@1.5.2':
resolution: {integrity: sha512-A/08vkaM1FogrCII5PZKCrygxSsc11obExBScm3JF1CryK2uDS3ZXeni7FeKCx1nYdUkj4UcJxzPzc1WliMzZA==}
peerDependencies:
preact: ^10.0.0
'@prefresh/utils@1.2.0':
resolution: {integrity: sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==}
'@prefresh/vite@2.4.6':
resolution: {integrity: sha512-miYbTl2J1YNaQJWyWHJzyIpNh7vKUuXC1qCDRzPeWjhQ+9bxeXkUBGDGd9I1f37R5GQYi1S65AN5oR0BR2WzvQ==}
peerDependencies:
preact: ^10.4.0
vite: '>=2.0.0'
'@rollup/plugin-alias@3.1.9': '@rollup/plugin-alias@3.1.9':
resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==} resolution: {integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==}
engines: {node: '>=8.0.0'} engines: {node: '>=8.0.0'}
@@ -2677,11 +2625,6 @@ packages:
babel-plugin-transform-async-to-promises@0.8.18: babel-plugin-transform-async-to-promises@0.8.18:
resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==} resolution: {integrity: sha512-WpOrF76nUHijnNn10eBGOHZmXQC8JYRME9rOLxStOga7Av2VO53ehVFvVNImMksVtQuL2/7ZNxEgxnx7oo/3Hw==}
babel-plugin-transform-hook-names@1.0.2:
resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==}
peerDependencies:
'@babel/core': ^7.12.10
babel-plugin-transform-replace-expressions@0.2.0: babel-plugin-transform-replace-expressions@0.2.0:
resolution: {integrity: sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA==} resolution: {integrity: sha512-Eh1rRd9hWEYgkgoA3D0kGp7xJ/wgVshgsqmq60iC4HVWD+Lux+fNHSHBa2v1Hsv+dHflShC71qKhiH40OiPtDA==}
peerDependencies: peerDependencies:
@@ -3949,10 +3892,6 @@ packages:
hastscript@8.0.0: hastscript@8.0.0:
resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==} resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==}
he@1.2.0:
resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
hasBin: true
header-case@2.0.4: header-case@2.0.4:
resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==}
@@ -4443,9 +4382,6 @@ packages:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
kolorist@1.8.0:
resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==}
language-subtag-registry@0.3.23: language-subtag-registry@0.3.23:
resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
@@ -4554,6 +4490,10 @@ packages:
longest-streak@3.1.0: longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
loose-envify@1.4.0:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
lower-case@2.0.2: lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
@@ -4573,10 +4513,6 @@ packages:
magic-string@0.30.11: magic-string@0.30.11:
resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==}
magic-string@0.30.5:
resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
engines: {node: '>=12'}
make-dir@3.1.0: make-dir@3.1.0:
resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -4912,9 +4848,6 @@ packages:
encoding: encoding:
optional: true optional: true
node-html-parser@6.1.13:
resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==}
node-plop@0.32.0: node-plop@0.32.0:
resolution: {integrity: sha512-lKFSRSRuDHhwDKMUobdsvaWCbbDRbV3jMUSMiajQSQux1aNUevAZVxUHc2JERI//W8ABPRbi3ebYuSuIzkNIpQ==} resolution: {integrity: sha512-lKFSRSRuDHhwDKMUobdsvaWCbbDRbV3jMUSMiajQSQux1aNUevAZVxUHc2JERI//W8ABPRbi3ebYuSuIzkNIpQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -5736,14 +5669,6 @@ packages:
potrace@2.1.8: potrace@2.1.8:
resolution: {integrity: sha512-V9hI7UMJyEhNZjM8CbZaP/804ZRLgzWkCS9OOYnEZkszzj3zKR/erRdj0uFMcN3pp6x4B+AIZebmkQgGRinG/g==} resolution: {integrity: sha512-V9hI7UMJyEhNZjM8CbZaP/804ZRLgzWkCS9OOYnEZkszzj3zKR/erRdj0uFMcN3pp6x4B+AIZebmkQgGRinG/g==}
preact-render-to-string@6.5.9:
resolution: {integrity: sha512-Fn9R89h6qrQeSRmsH2O2fWzqpVwsJgEL9UTly5nGEV2ldhVuG+9JhXdNJ6zreIkOZcBT20+AOMwlG1x72znJ+g==}
peerDependencies:
preact: '>=10'
preact@10.23.2:
resolution: {integrity: sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==}
prebuild-install@7.1.2: prebuild-install@7.1.2:
resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==} resolution: {integrity: sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==}
engines: {node: '>=10'} engines: {node: '>=10'}
@@ -5915,12 +5840,21 @@ packages:
resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==} resolution: {integrity: sha512-98iN5aguJyVSxp5U3CblRLH67J8gkfyGNbiK3c+l1QI/G4irHMPQw44aEPmjVag+YKTyQ260NcF82GTQ3bdscA==}
peerDependencies: peerDependencies:
chart.js: ^4.1.1 chart.js: ^4.1.1
react: npm:@preact/compat@latest react: ^16.8.0 || ^17.0.0 || ^18.0.0
react-dom@18.3.1:
resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==}
peerDependencies:
react: ^18.3.1
react-refresh@0.14.2: react-refresh@0.14.2:
resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
react@18.3.1:
resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0: read-cache@1.0.0:
resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
@@ -6168,6 +6102,9 @@ packages:
sax@1.4.1: sax@1.4.1:
resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==} resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
scheduler@0.23.2:
resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
scrl@2.0.0: scrl@2.0.0:
resolution: {integrity: sha512-BbbVXxrOn58Ge4wjOORIRVZamssQu08ISLL/AC2z9aATIsKqZLESwZVW5YR0Yz0C7qqDRHb4yNXJlQ8yW0SGHw==} resolution: {integrity: sha512-BbbVXxrOn58Ge4wjOORIRVZamssQu08ISLL/AC2z9aATIsKqZLESwZVW5YR0Yz0C7qqDRHb4yNXJlQ8yW0SGHw==}
@@ -6338,10 +6275,6 @@ packages:
resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==}
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
stack-trace@1.0.0-pre2:
resolution: {integrity: sha512-2ztBJRek8IVofG9DBJqdy2N5kulaacX30Nz7xmkYF6ale9WBVmIy6mFBchvGX7Vx/MyjBhx+Rcxqrj+dbOnQ6A==}
engines: {node: '>=16'}
stdin-discarder@0.2.2: stdin-discarder@0.2.2:
resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==} resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
engines: {node: '>=18'} engines: {node: '>=18'}
@@ -7315,20 +7248,6 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
'@astrojs/preact@3.5.1(@babel/core@7.25.2)(preact@10.23.2)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))':
dependencies:
'@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2)
'@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2)
'@preact/preset-vite': 2.8.2(@babel/core@7.25.2)(preact@10.23.2)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))
'@preact/signals': 1.3.0(preact@10.23.2)
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.25.2)
preact: 10.23.2
preact-render-to-string: 6.5.9(preact@10.23.2)
transitivePeerDependencies:
- '@babel/core'
- supports-color
- vite
'@astrojs/prefetch@0.4.1': '@astrojs/prefetch@0.4.1':
dependencies: dependencies:
throttles: 1.0.1 throttles: 1.0.1
@@ -7337,13 +7256,13 @@ snapshots:
dependencies: dependencies:
prismjs: 1.29.0 prismjs: 1.29.0
'@astrojs/react@3.6.2(@preact/compat@17.1.2(preact@10.23.2))(@preact/compat@17.1.2(preact@10.23.2))(@types/react-dom@18.3.0)(@types/react@18.3.3)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))': '@astrojs/react@3.6.2(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))':
dependencies: dependencies:
'@types/react': 18.3.3 '@types/react': 18.3.3
'@types/react-dom': 18.3.0 '@types/react-dom': 18.3.0
'@vitejs/plugin-react': 4.3.1(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6)) '@vitejs/plugin-react': 4.3.1(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))
react: '@preact/compat@17.1.2(preact@10.23.2)' react: 18.3.1
react-dom: '@preact/compat@17.1.2(preact@10.23.2)' react-dom: 18.3.1(react@18.3.1)
ultrahtml: 1.5.3 ultrahtml: 1.5.3
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
@@ -9197,57 +9116,6 @@ snapshots:
'@polka/url@1.0.0-next.25': {} '@polka/url@1.0.0-next.25': {}
'@preact/compat@17.1.2(preact@10.23.2)':
dependencies:
preact: 10.23.2
'@preact/preset-vite@2.8.2(@babel/core@7.25.2)(preact@10.23.2)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))':
dependencies:
'@babel/core': 7.25.2
'@babel/plugin-transform-react-jsx': 7.25.2(@babel/core@7.25.2)
'@babel/plugin-transform-react-jsx-development': 7.24.7(@babel/core@7.25.2)
'@prefresh/vite': 2.4.6(preact@10.23.2)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))
'@rollup/pluginutils': 4.2.1
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.25.2)
debug: 4.3.6
kolorist: 1.8.0
magic-string: 0.30.5
node-html-parser: 6.1.13
resolve: 1.22.8
source-map: 0.7.4
stack-trace: 1.0.0-pre2
vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6)
transitivePeerDependencies:
- preact
- supports-color
'@preact/signals-core@1.8.0': {}
'@preact/signals@1.3.0(preact@10.23.2)':
dependencies:
'@preact/signals-core': 1.8.0
preact: 10.23.2
'@prefresh/babel-plugin@0.5.1': {}
'@prefresh/core@1.5.2(preact@10.23.2)':
dependencies:
preact: 10.23.2
'@prefresh/utils@1.2.0': {}
'@prefresh/vite@2.4.6(preact@10.23.2)(vite@5.4.0(@types/node@22.3.0)(terser@5.31.6))':
dependencies:
'@babel/core': 7.25.2
'@prefresh/babel-plugin': 0.5.1
'@prefresh/core': 1.5.2(preact@10.23.2)
'@prefresh/utils': 1.2.0
'@rollup/pluginutils': 4.2.1
preact: 10.23.2
vite: 5.4.0(@types/node@22.3.0)(terser@5.31.6)
transitivePeerDependencies:
- supports-color
'@rollup/plugin-alias@3.1.9(rollup@2.79.1)': '@rollup/plugin-alias@3.1.9(rollup@2.79.1)':
dependencies: dependencies:
rollup: 2.79.1 rollup: 2.79.1
@@ -10187,10 +10055,6 @@ snapshots:
babel-plugin-transform-async-to-promises@0.8.18: {} babel-plugin-transform-async-to-promises@0.8.18: {}
babel-plugin-transform-hook-names@1.0.2(@babel/core@7.25.2):
dependencies:
'@babel/core': 7.25.2
babel-plugin-transform-replace-expressions@0.2.0(@babel/core@7.25.2): babel-plugin-transform-replace-expressions@0.2.0(@babel/core@7.25.2):
dependencies: dependencies:
'@babel/core': 7.25.2 '@babel/core': 7.25.2
@@ -11844,8 +11708,6 @@ snapshots:
property-information: 6.5.0 property-information: 6.5.0
space-separated-tokens: 2.0.2 space-separated-tokens: 2.0.2
he@1.2.0: {}
header-case@2.0.4: header-case@2.0.4:
dependencies: dependencies:
capital-case: 1.0.4 capital-case: 1.0.4
@@ -12275,8 +12137,6 @@ snapshots:
kleur@4.1.5: {} kleur@4.1.5: {}
kolorist@1.8.0: {}
language-subtag-registry@0.3.23: {} language-subtag-registry@0.3.23: {}
language-tags@1.0.9: language-tags@1.0.9:
@@ -12410,6 +12270,10 @@ snapshots:
longest-streak@3.1.0: {} longest-streak@3.1.0: {}
loose-envify@1.4.0:
dependencies:
js-tokens: 4.0.0
lower-case@2.0.2: lower-case@2.0.2:
dependencies: dependencies:
tslib: 2.6.3 tslib: 2.6.3
@@ -12430,10 +12294,6 @@ snapshots:
dependencies: dependencies:
'@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/sourcemap-codec': 1.5.0
magic-string@0.30.5:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
make-dir@3.1.0: make-dir@3.1.0:
dependencies: dependencies:
semver: 6.3.1 semver: 6.3.1
@@ -13047,11 +12907,6 @@ snapshots:
dependencies: dependencies:
whatwg-url: 5.0.0 whatwg-url: 5.0.0
node-html-parser@6.1.13:
dependencies:
css-select: 5.1.0
he: 1.2.0
node-plop@0.32.0: node-plop@0.32.0:
dependencies: dependencies:
'@types/inquirer': 9.0.7 '@types/inquirer': 9.0.7
@@ -13870,12 +13725,6 @@ snapshots:
transitivePeerDependencies: transitivePeerDependencies:
- debug - debug
preact-render-to-string@6.5.9(preact@10.23.2):
dependencies:
preact: 10.23.2
preact@10.23.2: {}
prebuild-install@7.1.2: prebuild-install@7.1.2:
dependencies: dependencies:
detect-libc: 2.0.3 detect-libc: 2.0.3
@@ -13980,13 +13829,23 @@ snapshots:
minimist: 1.2.8 minimist: 1.2.8
strip-json-comments: 2.0.1 strip-json-comments: 2.0.1
react-chartjs-2@5.2.0(@preact/compat@17.1.2(preact@10.23.2))(chart.js@4.4.3): react-chartjs-2@5.2.0(chart.js@4.4.3)(react@18.3.1):
dependencies: dependencies:
chart.js: 4.4.3 chart.js: 4.4.3
react: '@preact/compat@17.1.2(preact@10.23.2)' react: 18.3.1
react-dom@18.3.1(react@18.3.1):
dependencies:
loose-envify: 1.4.0
react: 18.3.1
scheduler: 0.23.2
react-refresh@0.14.2: {} react-refresh@0.14.2: {}
react@18.3.1:
dependencies:
loose-envify: 1.4.0
read-cache@1.0.0: read-cache@1.0.0:
dependencies: dependencies:
pify: 2.3.0 pify: 2.3.0
@@ -14333,6 +14192,10 @@ snapshots:
sax@1.4.1: {} sax@1.4.1: {}
scheduler@0.23.2:
dependencies:
loose-envify: 1.4.0
scrl@2.0.0: {} scrl@2.0.0: {}
section-matter@1.0.0: section-matter@1.0.0:
@@ -14533,8 +14396,6 @@ snapshots:
stable@0.1.8: {} stable@0.1.8: {}
stack-trace@1.0.0-pre2: {}
stdin-discarder@0.2.2: {} stdin-discarder@0.2.2: {}
stop-iteration-iterator@1.0.0: stop-iteration-iterator@1.0.0:

View File

@@ -29,7 +29,7 @@ const { backLink, class: className, ...props } = Astro.props;
type="button" type="button"
tabindex={-1} tabindex={-1}
> >
<ArrowLeft aria-hidden="true" class="icon h-icon w-icon" /> <ArrowLeft aria-hidden="true" className="icon h-icon w-icon" />
</button> </button>
</Link> </Link>
) )

View File

@@ -16,7 +16,7 @@ const { href, text, ...props } = Astro.props;
<span class="more-icon relative inline-flex mis-[0.2em] block-start-[0.2em]"> <span class="more-icon relative inline-flex mis-[0.2em] block-start-[0.2em]">
<Download <Download
aria-hidden="true" aria-hidden="true"
class="icon h-icon w-icon transition-transform duration-500 ease-in-out group-hover:translate-y-1 group-focus:translate-y-1" className="icon h-icon w-icon transition-transform duration-500 ease-in-out group-hover:translate-y-1 group-focus:translate-y-1"
/> />
</span> </span>
</TextLink> </TextLink>

View File

@@ -18,7 +18,7 @@ const { icon = true, text = 'Email', ...props } = Astro.props;
<span class="more-icon relative inline-flex mis-[0.2em] block-start-[0.3em] inline-start-[0.2em]"> <span class="more-icon relative inline-flex mis-[0.2em] block-start-[0.3em] inline-start-[0.2em]">
<MailSend <MailSend
aria-hidden="true" aria-hidden="true"
class="icon h-icon w-icon transition-transform duration-500 ease-in-out group-hover:translate-x-1 group-focus:translate-x-1" className="icon h-icon w-icon transition-transform duration-500 ease-in-out group-hover:translate-x-1 group-focus:translate-x-1"
/> />
</span> </span>
) )

View File

@@ -16,7 +16,7 @@ const { href, text, ...props } = Astro.props;
<span class="more-icon relative inline-flex mis-[0.2em] block-start-[0.2em]"> <span class="more-icon relative inline-flex mis-[0.2em] block-start-[0.2em]">
<ArrowRight <ArrowRight
aria-hidden="true" aria-hidden="true"
class="icon h-icon w-icon transition-transform duration-500 ease-in-out group-hover:translate-x-1 group-focus:translate-x-1" className="icon h-icon w-icon transition-transform duration-500 ease-in-out group-hover:translate-x-1 group-focus:translate-x-1"
/> />
</span> </span>
</TextLink> </TextLink>

View File

@@ -23,7 +23,7 @@ const { nextText, nextUrl, previousText, previousUrl } = Astro.props;
title={previousText || 'Previous'} title={previousText || 'Previous'}
> >
<div class="pagination flex h-[40px] w-[40px] cursor-pointer items-center justify-center rounded-[50%] bg-black/5 outline-none transition-opacity duration-500 ease-in-out group-hover:bg-black/20 group-focus:bg-black/20 dark:bg-white/5 dark:group-hover:bg-white/20 dark:group-focus:bg-white/20"> <div class="pagination flex h-[40px] w-[40px] cursor-pointer items-center justify-center rounded-[50%] bg-black/5 outline-none transition-opacity duration-500 ease-in-out group-hover:bg-black/20 group-focus:bg-black/20 dark:bg-white/5 dark:group-hover:bg-white/20 dark:group-focus:bg-white/20">
<ArrowLeftS aria-hidden="true" class="icon h-icon w-icon" /> <ArrowLeftS aria-hidden="true" className="icon h-icon w-icon" />
</div> </div>
</a> </a>
) )
@@ -39,7 +39,7 @@ const { nextText, nextUrl, previousText, previousUrl } = Astro.props;
title={nextText || 'Next'} title={nextText || 'Next'}
> >
<div class="pagination flex h-[40px] w-[40px] cursor-pointer items-center justify-center rounded-[50%] bg-black/5 outline-none transition-opacity duration-500 ease-in-out group-hover:bg-black/20 group-focus:bg-black/20 dark:bg-white/5 dark:group-hover:bg-white/20 dark:group-focus:bg-white/20"> <div class="pagination flex h-[40px] w-[40px] cursor-pointer items-center justify-center rounded-[50%] bg-black/5 outline-none transition-opacity duration-500 ease-in-out group-hover:bg-black/20 group-focus:bg-black/20 dark:bg-white/5 dark:group-hover:bg-white/20 dark:group-focus:bg-white/20">
<ArrowRightS aria-hidden="true" class="icon h-icon w-icon" /> <ArrowRightS aria-hidden="true" className="icon h-icon w-icon" />
</div> </div>
</a> </a>
) )

View File

@@ -8,7 +8,7 @@ import Subsubheadline from './Subsubheadline.astro';
<aside class="grow mbe-5 sm:mbe-0"> <aside class="grow mbe-5 sm:mbe-0">
<Subsubheadline as="h2">Stay up to date.</Subsubheadline> <Subsubheadline as="h2">Stay up to date.</Subsubheadline>
<p> <p>
<Rss aria-hidden="true" class="icon inline h-icon w-icon" />{' '} <Rss aria-hidden="true" className="icon inline h-icon w-icon" />{' '}
<Link <Link
class="font-light decoration-4 underline-offset-auto hover:underline hover:decoration-shibui-900/20 focus:underline focus:decoration-shibui-900/20 dark:hover:decoration-shibui-100/20 dark:focus:decoration-shibui-100/20" class="font-light decoration-4 underline-offset-auto hover:underline hover:decoration-shibui-900/20 focus:underline focus:decoration-shibui-900/20 dark:hover:decoration-shibui-100/20 dark:focus:decoration-shibui-100/20"
data-umami-event="RSS" data-umami-event="RSS"

View File

@@ -18,6 +18,6 @@ import Link from './Link.astro';
tabindex={-1} tabindex={-1}
type="button" type="button"
> >
<Search aria-hidden="true" class="icon h-icon w-icon" /> <Search aria-hidden="true" className="icon h-icon w-icon" />
</button> </button>
</Link> </Link>

View File

@@ -18,7 +18,7 @@ import { Close } from './icons';
aria-label="Close Search Modal" aria-label="Close Search Modal"
class="flex h-[2em] w-[2em] cursor-pointer items-center justify-center text-shibui-950 dark:text-shibui-200/[0.87]" class="flex h-[2em] w-[2em] cursor-pointer items-center justify-center text-shibui-950 dark:text-shibui-200/[0.87]"
> >
<Close class="icon h-[2em] w-[2em]" /> <Close className="icon h-[2em] w-[2em]" />
</button> </button>
</Link> </Link>
</header> </header>

View File

@@ -7,7 +7,7 @@ import Link from '../components/Link.astro';
<nav class="flex flex-1 sm:justify-center" aria-label="Social Links"> <nav class="flex flex-1 sm:justify-center" aria-label="Social Links">
<Link <Link
aria-label="Mail" aria-label="Mail"
class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center" class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center transition-transform duration-500 ease-in-out hover:scale-125 focus:scale-125"
data-umami-event="Mail" data-umami-event="Mail"
href="#protected-email" href="#protected-email"
title="Mail" title="Mail"
@@ -16,33 +16,33 @@ import Link from '../components/Link.astro';
data-tld="de" data-tld="de"
onclick="window.open(`mailto:${this.dataset.name}@${this.dataset.domain}.${this.dataset.tld}`, '_blank')" onclick="window.open(`mailto:${this.dataset.name}@${this.dataset.domain}.${this.dataset.tld}`, '_blank')"
> >
<Mail aria-hidden="true" class="icon h-icon-small w-icon-small" /> <Mail aria-hidden="true" className="icon h-icon-small w-icon-small" />
</Link> </Link>
<Link <Link
aria-label="𝕏" aria-label="𝕏"
class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center" class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center transition-transform duration-500 ease-in-out hover:scale-125 focus:scale-125"
data-umami-event="𝕏" data-umami-event="𝕏"
href="https://x.com/kogakure" href="https://x.com/kogakure"
title="𝕏" title="𝕏"
> >
<TwitterX aria-hidden="true" class="icon h-icon-small w-icon-small" /> <TwitterX aria-hidden="true" className="icon h-icon-small w-icon-small" />
</Link> </Link>
<Link <Link
aria-label="Instagram" aria-label="Instagram"
class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center" class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center transition-transform duration-500 ease-in-out hover:scale-125 focus:scale-125"
data-umami-event="Instagram" data-umami-event="Instagram"
href="https://instagram.com/kogakure" href="https://instagram.com/kogakure"
title="Instagram" title="Instagram"
> >
<Instagram aria-hidden="true" class="icon h-icon-small w-icon-small" /> <Instagram aria-hidden="true" className="icon h-icon-small w-icon-small" />
</Link> </Link>
<Link <Link
aria-label="GitHub" aria-label="GitHub"
class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center" class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center transition-transform duration-500 ease-in-out hover:scale-125 focus:scale-125"
data-umami-event="GitHub" data-umami-event="GitHub"
href="https://github.com/kogakure" href="https://github.com/kogakure"
title="GitHub" title="GitHub"
> >
<Github aria-hidden="true" class="icon h-icon-small w-icon-small" /> <Github aria-hidden="true" className="icon h-icon-small w-icon-small" />
</Link> </Link>
</nav> </nav>

View File

@@ -13,7 +13,7 @@ import { Circle } from './icons';
> >
<Circle <Circle
aria-hidden="true" aria-hidden="true"
class="icon h-icon w-icon transition-transform duration-500 ease-in-out group-hover:scale-125 group-focus:scale-125" className="icon h-icon w-icon transition-transform duration-500 ease-in-out group-hover:scale-125 group-focus:scale-125"
/> />
</button> </button>
</theme-toggle> </theme-toggle>

View File

@@ -22,7 +22,7 @@ const { ...props } = Astro.props;
aria-hidden="true" aria-hidden="true"
class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center" class="flex h-clickarea w-clickarea cursor-pointer items-center justify-center"
> >
<ArrowUp aria-hidden="true" class="icon h-icon w-icon" /> <ArrowUp aria-hidden="true" className="icon h-icon w-icon" />
</button> </button>
</Link> </Link>
</div> </div>

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const ArrowLeft = (props: SVGProps<SVGSVGElement>) => ( const ArrowLeft = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M7.828 11H20v2H7.828l5.364 5.364-1.414 1.414L4 12l7.778-7.778 1.414 1.414z" /> <path d="M7.828 11H20v2H7.828l5.364 5.364-1.414 1.414L4 12l7.778-7.778 1.414 1.414z" />

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const ArrowLeftS = (props: SVGProps<SVGSVGElement>) => ( const ArrowLeftS = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="m10.828 12 4.95 4.95-1.414 1.415L8 12l6.364-6.364 1.414 1.414z" /> <path d="m10.828 12 4.95 4.95-1.414 1.415L8 12l6.364-6.364 1.414 1.414z" />

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const ArrowRight = (props: SVGProps<SVGSVGElement>) => ( const ArrowRight = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="m16.172 11-5.364-5.364 1.414-1.414L20 12l-7.778 7.778-1.414-1.414L16.172 13H4v-2z" /> <path d="m16.172 11-5.364-5.364 1.414-1.414L20 12l-7.778 7.778-1.414-1.414L16.172 13H4v-2z" />

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const ArrowRightS = (props: SVGProps<SVGSVGElement>) => ( const ArrowRightS = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="m13.171 12-4.95-4.95 1.415-1.413L16 12l-6.364 6.364-1.414-1.415z" /> <path d="m13.171 12-4.95-4.95 1.415-1.413L16 12l-6.364 6.364-1.414-1.415z" />

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const ArrowUp = (props: SVGProps<SVGSVGElement>) => ( const ArrowUp = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M13 7.828V20h-2V7.828l-5.364 5.364-1.414-1.414L12 4l7.778 7.778-1.414 1.414z" /> <path d="M13 7.828V20h-2V7.828l-5.364 5.364-1.414-1.414L12 4l7.778 7.778-1.414 1.414z" />

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const Circle = (props: SVGProps<SVGSVGElement>) => ( const Circle = (props: SVGProps<SVGSVGElement>) => (
<svg <svg
xmlns="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg"

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const Close = (props: SVGProps<SVGSVGElement>) => ( const Close = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="m12 10.587 4.95-4.95 1.415 1.414-4.95 4.95 4.95 4.95-1.415 1.414-4.95-4.95-4.95 4.95-1.413-1.415 4.95-4.95-4.95-4.95L7.05 5.638z" /> <path d="m12 10.587 4.95-4.95 1.415 1.414-4.95 4.95 4.95 4.95-1.415 1.414-4.95-4.95-4.95 4.95-1.413-1.415 4.95-4.95-4.95-4.95L7.05 5.638z" />

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const Download = (props: SVGProps<SVGSVGElement>) => ( const Download = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M3 19h18v2H3zm10-5.828L19.071 7.1l1.414 1.414L12 17 3.515 8.515 4.929 7.1 11 13.173V2h2z" /> <path d="M3 19h18v2H3zm10-5.828L19.071 7.1l1.414 1.414L12 17 3.515 8.515 4.929 7.1 11 13.173V2h2z" />

View File

@@ -1,7 +1,7 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const Github = (props: SVGProps<SVGSVGElement>) => ( const Github = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M5.884 18.653c-.3-.2-.558-.456-.86-.816a50.59 50.59 0 0 1-.466-.579c-.463-.575-.755-.841-1.056-.95a1 1 0 1 1 .675-1.882c.752.27 1.261.735 1.947 1.588-.094-.117.34.427.433.539.19.227.33.365.44.438.204.137.588.196 1.15.14.024-.382.094-.753.202-1.096-2.968-.725-4.648-2.64-4.648-6.396 0-1.238.37-2.355 1.058-3.291-.218-.894-.185-1.975.302-3.192a1 1 0 0 1 .63-.583c.081-.024.127-.034.208-.047.803-.123 1.937.17 3.415 1.097a11.731 11.731 0 0 1 2.687-.308c.912 0 1.819.103 2.684.308 1.477-.933 2.614-1.227 3.422-1.097.085.014.158.032.218.051a1 1 0 0 1 .616.58c.487 1.215.52 2.296.302 3.19.691.936 1.058 2.045 1.058 3.292 0 3.758-1.674 5.666-4.642 6.393.125.415.19.878.19 1.38 0 .664-.002 1.299-.007 2.01 0 .19-.002.394-.005.706a1 1 0 0 1-.018 1.957c-1.14.228-1.984-.532-1.984-1.524l.002-.447.005-.705c.005-.707.008-1.338.008-1.997 0-.697-.184-1.152-.426-1.361-.661-.57-.326-1.654.541-1.751 2.966-.334 4.336-1.483 4.336-4.66 0-.955-.312-1.745-.913-2.405a1 1 0 0 1-.189-1.044c.166-.415.236-.957.095-1.614l-.01.002c-.491.14-1.11.44-1.858.95a1 1 0 0 1-.833.135 9.626 9.626 0 0 0-2.592-.35c-.89 0-1.772.12-2.592.35a1 1 0 0 1-.829-.133c-.753-.507-1.374-.807-1.87-.947-.143.653-.072 1.194.093 1.607a1 1 0 0 1-.189 1.044c-.597.656-.913 1.459-.913 2.404 0 3.172 1.371 4.33 4.322 4.66.865.098 1.202 1.178.545 1.749-.193.167-.43.732-.43 1.364v3.149c0 .986-.834 1.726-1.96 1.529a1 1 0 0 1-.04-1.963v-.99c-.91.062-1.661-.087-2.254-.484" /> <path d="M5.884 18.653c-.3-.2-.558-.456-.86-.816a51 51 0 0 1-.466-.579c-.463-.575-.755-.841-1.056-.95a1 1 0 1 1 .675-1.882c.752.27 1.261.735 1.947 1.588-.094-.117.34.427.433.539.19.227.33.365.44.438.204.137.588.196 1.15.14.024-.382.094-.753.202-1.096-2.968-.725-4.648-2.64-4.648-6.396 0-1.238.37-2.355 1.058-3.291-.218-.894-.185-1.975.302-3.192a1 1 0 0 1 .63-.583c.081-.024.127-.034.208-.047.803-.123 1.937.17 3.415 1.097a11.7 11.7 0 0 1 2.687-.308c.912 0 1.819.103 2.684.308 1.477-.933 2.614-1.227 3.422-1.097q.128.022.218.051a1 1 0 0 1 .616.58c.487 1.215.52 2.296.302 3.19.691.936 1.058 2.045 1.058 3.292 0 3.758-1.674 5.666-4.642 6.393.125.415.19.878.19 1.38 0 .664-.002 1.299-.007 2.01 0 .19-.002.394-.005.706a1 1 0 0 1-.018 1.957c-1.14.228-1.984-.532-1.984-1.524l.002-.447.005-.705c.005-.707.008-1.338.008-1.997 0-.697-.184-1.152-.426-1.361-.661-.57-.326-1.654.541-1.751 2.966-.334 4.336-1.483 4.336-4.66 0-.955-.312-1.745-.913-2.405a1 1 0 0 1-.189-1.044c.166-.415.236-.957.095-1.614l-.01.002c-.491.14-1.11.44-1.858.95a1 1 0 0 1-.833.135 9.6 9.6 0 0 0-2.592-.35c-.89 0-1.772.12-2.592.35a1 1 0 0 1-.829-.133c-.753-.507-1.374-.807-1.87-.947-.143.653-.072 1.194.093 1.607a1 1 0 0 1-.189 1.044c-.597.656-.913 1.459-.913 2.404 0 3.172 1.371 4.33 4.322 4.66.865.098 1.202 1.178.545 1.749-.193.167-.43.732-.43 1.364v3.149c0 .986-.834 1.726-1.96 1.529a1 1 0 0 1-.04-1.963v-.99c-.91.062-1.661-.087-2.254-.484" />
</svg> </svg>
); );
export default Github; export default Github;

View File

@@ -1,7 +1,7 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const Instagram = (props: SVGProps<SVGSVGElement>) => ( const Instagram = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M12.001 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6m0-2a5 5 0 1 1 0 10 5 5 0 0 1 0-10m6.5-.25a1.25 1.25 0 0 1-2.5 0 1.25 1.25 0 0 1 2.5 0M12.001 4c-2.474 0-2.878.007-4.029.058-.784.037-1.31.142-1.798.332-.434.168-.747.369-1.08.703a2.89 2.89 0 0 0-.704 1.08c-.19.49-.295 1.015-.331 1.798C4.007 9.075 4 9.461 4 12c0 2.475.007 2.878.058 4.029.037.783.142 1.31.331 1.797.17.435.37.748.702 1.08.337.336.65.537 1.08.703.494.191 1.02.297 1.8.333 1.104.052 1.49.058 4.029.058 2.475 0 2.878-.007 4.029-.058.782-.037 1.308-.142 1.797-.331.433-.169.748-.37 1.08-.703.337-.336.538-.649.704-1.08.19-.492.296-1.018.332-1.8.052-1.103.058-1.49.058-4.028 0-2.474-.007-2.878-.058-4.029-.037-.782-.143-1.31-.332-1.798a2.912 2.912 0 0 0-.703-1.08 2.884 2.884 0 0 0-1.08-.704c-.49-.19-1.016-.295-1.798-.331C14.926 4.006 14.54 4 12 4m0-2c2.717 0 3.056.01 4.123.06 1.064.05 1.79.217 2.427.465.66.254 1.216.598 1.772 1.153a4.908 4.908 0 0 1 1.153 1.772c.247.637.415 1.363.465 2.428.047 1.066.06 1.405.06 4.122 0 2.717-.01 3.056-.06 4.122-.05 1.065-.218 1.79-.465 2.428a4.884 4.884 0 0 1-1.153 1.772 4.915 4.915 0 0 1-1.772 1.153c-.637.247-1.363.415-2.427.465-1.067.047-1.406.06-4.123.06-2.717 0-3.056-.01-4.123-.06-1.064-.05-1.789-.218-2.427-.465a4.89 4.89 0 0 1-1.772-1.153 4.905 4.905 0 0 1-1.153-1.772c-.248-.637-.415-1.363-.465-2.428-.048-1.066-.06-1.405-.06-4.122 0-2.717.01-3.056.06-4.122.05-1.065.217-1.79.465-2.428a4.88 4.88 0 0 1 1.153-1.772 4.897 4.897 0 0 1 1.772-1.153c.637-.248 1.362-.415 2.427-.465C8.945 2.013 9.284 2 12.001 2" /> <path d="M12.001 9a3 3 0 1 0 0 6 3 3 0 0 0 0-6m0-2a5 5 0 1 1 0 10 5 5 0 0 1 0-10m6.5-.25a1.25 1.25 0 0 1-2.5 0 1.25 1.25 0 0 1 2.5 0M12.001 4c-2.474 0-2.878.007-4.029.058-.784.037-1.31.142-1.798.332-.434.168-.747.369-1.08.703a2.9 2.9 0 0 0-.704 1.08c-.19.49-.295 1.015-.331 1.798C4.007 9.075 4 9.461 4 12c0 2.475.007 2.878.058 4.029.037.783.142 1.31.331 1.797.17.435.37.748.702 1.08.337.336.65.537 1.08.703.494.191 1.02.297 1.8.333 1.104.052 1.49.058 4.029.058 2.475 0 2.878-.007 4.029-.058.782-.037 1.308-.142 1.797-.331.433-.169.748-.37 1.08-.703.337-.336.538-.649.704-1.08.19-.492.296-1.018.332-1.8.052-1.103.058-1.49.058-4.028 0-2.474-.007-2.878-.058-4.029-.037-.782-.143-1.31-.332-1.798a2.9 2.9 0 0 0-.703-1.08 2.9 2.9 0 0 0-1.08-.704c-.49-.19-1.016-.295-1.798-.331C14.926 4.006 14.54 4 12 4m0-2c2.717 0 3.056.01 4.123.06 1.064.05 1.79.217 2.427.465.66.254 1.216.598 1.772 1.153a4.9 4.9 0 0 1 1.153 1.772c.247.637.415 1.363.465 2.428.047 1.066.06 1.405.06 4.122s-.01 3.056-.06 4.122-.218 1.79-.465 2.428a4.9 4.9 0 0 1-1.153 1.772 4.9 4.9 0 0 1-1.772 1.153c-.637.247-1.363.415-2.427.465-1.067.047-1.406.06-4.123.06s-3.056-.01-4.123-.06c-1.064-.05-1.789-.218-2.427-.465a4.9 4.9 0 0 1-1.772-1.153 4.9 4.9 0 0 1-1.153-1.772c-.248-.637-.415-1.363-.465-2.428-.048-1.066-.06-1.405-.06-4.122s.01-3.056.06-4.122.217-1.79.465-2.428a4.9 4.9 0 0 1 1.153-1.772 4.9 4.9 0 0 1 1.772-1.153c.637-.248 1.362-.415 2.427-.465C8.945 2.013 9.284 2 12.001 2" />
</svg> </svg>
); );
export default Instagram; export default Instagram;

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const Mail = (props: SVGProps<SVGSVGElement>) => ( const Mail = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1m17 4.238-7.928 7.1L4 7.216V19h16zM4.511 5l7.55 6.662L19.502 5z" /> <path d="M3 3h18a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1m17 4.238-7.928 7.1L4 7.216V19h16zM4.511 5l7.55 6.662L19.502 5z" />

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const MailSend = (props: SVGProps<SVGSVGElement>) => ( const MailSend = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M21 3a1 1 0 0 1 1 1v16.007a1 1 0 0 1-.992.993H2.992A.993.993 0 0 1 2 20.007V19h18V7.3l-8 7.2-10-9V4a1 1 0 0 1 1-1zM8 15v2H0v-2zm-3-5v2H0v-2zm14.566-5H4.434L12 11.81z" /> <path d="M21 3a1 1 0 0 1 1 1v16.007a1 1 0 0 1-.992.993H2.992A.993.993 0 0 1 2 20.007V19h18V7.3l-8 7.2-10-9V4a1 1 0 0 1 1-1zM8 15v2H0v-2zm-3-5v2H0v-2zm14.566-5H4.434L12 11.81z" />

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const Rss = (props: SVGProps<SVGSVGElement>) => ( const Rss = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M3 17a4 4 0 0 1 4 4H3zm0-7c6.075 0 11 4.925 11 11h-2a9 9 0 0 0-9-9zm0-7c9.941 0 18 8.059 18 18h-2c0-8.837-7.163-16-16-16z" /> <path d="M3 17a4 4 0 0 1 4 4H3zm0-7c6.075 0 11 4.925 11 11h-2a9 9 0 0 0-9-9zm0-7c9.941 0 18 8.059 18 18h-2c0-8.837-7.163-16-16-16z" />

View File

@@ -1,7 +1,7 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const Search = (props: SVGProps<SVGSVGElement>) => ( const Search = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="m18.031 16.617 4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0 1 11 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 0 1-1.969 5.617m-2.006-.742A6.977 6.977 0 0 0 18 11c0-3.867-3.133-7-7-7s-7 3.133-7 7 3.133 7 7 7a6.977 6.977 0 0 0 4.875-1.975z" /> <path d="m18.031 16.617 4.283 4.282-1.415 1.415-4.282-4.283A8.96 8.96 0 0 1 11 20c-4.968 0-9-4.032-9-9s4.032-9 9-9 9 4.032 9 9a8.96 8.96 0 0 1-1.969 5.617m-2.006-.742A6.98 6.98 0 0 0 18 11c0-3.867-3.133-7-7-7s-7 3.133-7 7 3.133 7 7 7a6.98 6.98 0 0 0 4.875-1.975z" />
</svg> </svg>
); );
export default Search; export default Search;

View File

@@ -1,7 +1,7 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const Twitter = (props: SVGProps<SVGSVGElement>) => ( const Twitter = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M15.35 5.55a2.9 2.9 0 0 0-2.9 2.846l-.028 1.575a.6.6 0 0 1-.68.584l-1.562-.213c-2.053-.28-4.021-1.225-5.91-2.798-.597 3.31.57 5.603 3.383 7.372L9.4 16.014a.6.6 0 0 1 .035.992L7.843 18.17c.947.06 1.846.018 2.592-.13 4.718-.942 7.855-4.492 7.855-10.348 0-.478-1.013-2.141-2.94-2.141m-4.9 2.81a4.9 4.9 0 0 1 8.385-3.355c.711-.005 1.316.175 2.668-.646-.334 1.64-.5 2.353-1.213 3.332 0 7.641-4.697 11.358-9.464 12.309-3.267.652-8.02-.419-9.38-1.842.693-.053 3.513-.356 5.143-1.55-1.38-.91-6.868-4.14-3.261-12.822 1.693 1.977 3.41 3.322 5.15 4.037 1.157.475 1.442.465 1.973.538" /> <path d="M15.35 5.55a2.9 2.9 0 0 0-2.9 2.846l-.028 1.575a.6.6 0 0 1-.68.584l-1.562-.213c-2.053-.28-4.021-1.225-5.91-2.798-.597 3.31.57 5.603 3.383 7.372L9.4 16.014a.6.6 0 0 1 .035.992L7.843 18.17c.947.06 1.846.018 2.592-.13 4.718-.942 7.855-4.492 7.855-10.348 0-.478-1.013-2.141-2.94-2.141m-4.9 2.81a4.9 4.9 0 0 1 8.385-3.355c.711-.005 1.316.175 2.668-.646-.334 1.64-.5 2.353-1.213 3.332 0 7.641-4.697 11.358-9.464 12.309-3.267.652-8.02-.419-9.38-1.842.693-.053 3.513-.356 5.143-1.55-1.38-.91-6.868-4.14-3.261-12.822q2.54 2.965 5.15 4.037c1.157.475 1.442.465 1.973.538" />
</svg> </svg>
); );
export default Twitter; export default Twitter;

View File

@@ -1,4 +1,4 @@
import type { SVGProps } from 'preact/compat'; import type { SVGProps } from 'react';
const TwitterX = (props: SVGProps<SVGSVGElement>) => ( const TwitterX = (props: SVGProps<SVGSVGElement>) => (
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" {...props}>
<path d="M8 2H1l8.26 11.015L1.45 22H4.1l6.388-7.349L16 22h7l-8.608-11.478L21.8 2h-2.65l-5.986 6.886zm9 18L5 4h2l12 16z" /> <path d="M8 2H1l8.26 11.015L1.45 22H4.1l6.388-7.349L16 22h7l-8.608-11.478L21.8 2h-2.65l-5.986 6.886zm9 18L5 4h2l12 16z" />

View File

@@ -2,7 +2,7 @@
"extends": "astro/tsconfigs/strict", "extends": "astro/tsconfigs/strict",
"compilerOptions": { "compilerOptions": {
"jsx": "react-jsx", "jsx": "react-jsx",
"jsxImportSource": "preact", "jsxImportSource": "react",
"strictNullChecks": true "strictNullChecks": true
} }
} }