mirror of
https://github.com/BradNut/personal-website-sveltekit
synced 2025-09-08 23:20:18 +00:00
Update to Svelte 5, fix og creation with render being different, import CSS in a differnt way for OG image, and change all svelte files to runes.
This commit is contained in:
parent
23db818646
commit
d7e7e19627
22 changed files with 286 additions and 225 deletions
|
|
@ -49,7 +49,7 @@
|
|||
"satori-html": "^0.3.2",
|
||||
"scrape-it": "^6.1.0",
|
||||
"sharp": "^0.32.6",
|
||||
"svelte": "^4.2.9",
|
||||
"svelte": "5.0.0-next.42",
|
||||
"svelte-check": "^3.6.3",
|
||||
"svelte-meta-tags": "^3.1.0",
|
||||
"svelte-preprocess": "^5.1.3",
|
||||
|
|
|
|||
158
pnpm-lock.yaml
158
pnpm-lock.yaml
|
|
@ -7,7 +7,7 @@ settings:
|
|||
dependencies:
|
||||
'@melt-ui/svelte':
|
||||
specifier: ^0.50.1
|
||||
version: 0.50.1(svelte@4.2.9)
|
||||
version: 0.50.1(svelte@5.0.0-next.42)
|
||||
'@sveltejs/adapter-vercel':
|
||||
specifier: ^5.1.0
|
||||
version: 5.1.0(@sveltejs/kit@2.5.0)
|
||||
|
|
@ -39,7 +39,7 @@ devDependencies:
|
|||
version: 1.2.74
|
||||
'@melt-ui/pp':
|
||||
specifier: ^0.1.4
|
||||
version: 0.1.4(@melt-ui/svelte@0.50.1)(svelte@4.2.9)
|
||||
version: 0.1.4(@melt-ui/svelte@0.50.1)(svelte@5.0.0-next.42)
|
||||
'@playwright/test':
|
||||
specifier: ^1.41.1
|
||||
version: 1.41.1
|
||||
|
|
@ -51,13 +51,13 @@ devDependencies:
|
|||
version: 3.0.1(@sveltejs/kit@2.5.0)
|
||||
'@sveltejs/enhanced-img':
|
||||
specifier: ^0.1.8
|
||||
version: 0.1.8(svelte@4.2.9)
|
||||
version: 0.1.8(svelte@5.0.0-next.42)
|
||||
'@sveltejs/kit':
|
||||
specifier: ^2.5.0
|
||||
version: 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.0.12)
|
||||
version: 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.42)(vite@5.0.12)
|
||||
'@sveltejs/vite-plugin-svelte':
|
||||
specifier: ^3.0.2
|
||||
version: 3.0.2(svelte@4.2.9)(vite@5.0.12)
|
||||
version: 3.0.2(svelte@5.0.0-next.42)(vite@5.0.12)
|
||||
'@typescript-eslint/eslint-plugin':
|
||||
specifier: ^5.62.0
|
||||
version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.56.0)(typescript@5.3.3)
|
||||
|
|
@ -66,7 +66,7 @@ devDependencies:
|
|||
version: 5.62.0(eslint@8.56.0)(typescript@5.3.3)
|
||||
'@zerodevx/svelte-img':
|
||||
specifier: ^2.1.0
|
||||
version: 2.1.0(svelte@4.2.9)
|
||||
version: 2.1.0(svelte@5.0.0-next.42)
|
||||
autoprefixer:
|
||||
specifier: ^10.4.17
|
||||
version: 10.4.17(postcss@8.4.33)
|
||||
|
|
@ -78,7 +78,7 @@ devDependencies:
|
|||
version: 8.10.0(eslint@8.56.0)
|
||||
eslint-plugin-svelte:
|
||||
specifier: ^2.35.1
|
||||
version: 2.35.1(eslint@8.56.0)(svelte@4.2.9)
|
||||
version: 2.35.1(eslint@8.56.0)(svelte@5.0.0-next.42)
|
||||
iconify-icon:
|
||||
specifier: ^1.0.8
|
||||
version: 1.0.8
|
||||
|
|
@ -87,7 +87,7 @@ devDependencies:
|
|||
version: 4.3.0
|
||||
mdsvex:
|
||||
specifier: ^0.11.0
|
||||
version: 0.11.0(svelte@4.2.9)
|
||||
version: 0.11.0(svelte@5.0.0-next.42)
|
||||
mdsvex-relative-images:
|
||||
specifier: ^1.0.3
|
||||
version: 1.0.3
|
||||
|
|
@ -108,7 +108,7 @@ devDependencies:
|
|||
version: 3.2.4
|
||||
prettier-plugin-svelte:
|
||||
specifier: ^3.1.2
|
||||
version: 3.1.2(prettier@3.2.4)(svelte@4.2.9)
|
||||
version: 3.1.2(prettier@3.2.4)(svelte@5.0.0-next.42)
|
||||
sass:
|
||||
specifier: ^1.70.0
|
||||
version: 1.70.0
|
||||
|
|
@ -125,17 +125,17 @@ devDependencies:
|
|||
specifier: ^0.32.6
|
||||
version: 0.32.6
|
||||
svelte:
|
||||
specifier: ^4.2.9
|
||||
version: 4.2.9
|
||||
specifier: 5.0.0-next.42
|
||||
version: 5.0.0-next.42
|
||||
svelte-check:
|
||||
specifier: ^3.6.3
|
||||
version: 3.6.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@4.2.9)
|
||||
version: 3.6.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@5.0.0-next.42)
|
||||
svelte-meta-tags:
|
||||
specifier: ^3.1.0
|
||||
version: 3.1.0(svelte@4.2.9)(typescript@5.3.3)
|
||||
version: 3.1.0(svelte@5.0.0-next.42)(typescript@5.3.3)
|
||||
svelte-preprocess:
|
||||
specifier: ^5.1.3
|
||||
version: 5.1.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@4.2.9)(typescript@5.3.3)
|
||||
version: 5.1.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@5.0.0-next.42)(typescript@5.3.3)
|
||||
svelte-sequential-preprocessor:
|
||||
specifier: ^2.0.1
|
||||
version: 2.0.1
|
||||
|
|
@ -1319,19 +1319,19 @@ packages:
|
|||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@melt-ui/pp@0.1.4(@melt-ui/svelte@0.50.1)(svelte@4.2.9):
|
||||
/@melt-ui/pp@0.1.4(@melt-ui/svelte@0.50.1)(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-zR+Kl3CZJPJBHW8V7YcdQCMI/dVcnW9Ct3yGbVaIywYVStVRS7F9uEDOea3xLLT2WTGodQePzPlUn53yKFu87g==}
|
||||
engines: {pnpm: '>=8.6.3'}
|
||||
peerDependencies:
|
||||
'@melt-ui/svelte': '>= 0.29.0'
|
||||
svelte: ^3.55.0 || ^4.0.0 || ^5.0.0-next.1
|
||||
dependencies:
|
||||
'@melt-ui/svelte': 0.50.1(svelte@4.2.9)
|
||||
'@melt-ui/svelte': 0.50.1(svelte@5.0.0-next.42)
|
||||
estree-walker: 3.0.3
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
dev: true
|
||||
|
||||
/@melt-ui/svelte@0.50.1(svelte@4.2.9):
|
||||
/@melt-ui/svelte@0.50.1(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-MIenasd8a5jXgynNKmH5JNSrDBS0EKUK4BImgyD0R6Vbzrll6rQquBIxlh5PeqVhZ2azDIEh/yRkwaOFi2HEgw==}
|
||||
peerDependencies:
|
||||
svelte: '>=3 <5'
|
||||
|
|
@ -1341,7 +1341,7 @@ packages:
|
|||
dequal: 2.0.3
|
||||
focus-trap: 7.5.3
|
||||
nanoid: 4.0.2
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
|
||||
/@nodelib/fs.scandir@2.1.5:
|
||||
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
|
||||
|
|
@ -1650,7 +1650,7 @@ packages:
|
|||
peerDependencies:
|
||||
'@sveltejs/kit': ^2.0.0
|
||||
dependencies:
|
||||
'@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.0.12)
|
||||
'@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.42)(vite@5.0.12)
|
||||
dev: true
|
||||
|
||||
/@sveltejs/adapter-vercel@5.1.0(@sveltejs/kit@2.5.0):
|
||||
|
|
@ -1658,7 +1658,7 @@ packages:
|
|||
peerDependencies:
|
||||
'@sveltejs/kit': ^2.4.0
|
||||
dependencies:
|
||||
'@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.0.12)
|
||||
'@sveltejs/kit': 2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.42)(vite@5.0.12)
|
||||
'@vercel/nft': 0.26.2
|
||||
esbuild: 0.19.12
|
||||
transitivePeerDependencies:
|
||||
|
|
@ -1666,18 +1666,18 @@ packages:
|
|||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@sveltejs/enhanced-img@0.1.8(svelte@4.2.9):
|
||||
/@sveltejs/enhanced-img@0.1.8(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-0cLVR9KiO0/t3VVm64OM7bPHTkdaT2aaz1rwoAhao+EBXR3vMvLoYXLHvz8o9/552PSV8G844RkH7qkGc3YAiQ==}
|
||||
dependencies:
|
||||
magic-string: 0.30.5
|
||||
svelte-parse-markup: 0.1.2(svelte@4.2.9)
|
||||
svelte-parse-markup: 0.1.2(svelte@5.0.0-next.42)
|
||||
vite-imagetools: 6.2.9
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
- svelte
|
||||
dev: true
|
||||
|
||||
/@sveltejs/kit@2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.0.12):
|
||||
/@sveltejs/kit@2.5.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.42)(vite@5.0.12):
|
||||
resolution: {integrity: sha512-1uyXvzC2Lu1FZa30T4y5jUAC21R309ZMRG0TPt+PPPbNUoDpy8zSmSNVWYaBWxYDqLGQ5oPNWvjvvF2IjJ1jmA==}
|
||||
engines: {node: '>=18.13'}
|
||||
hasBin: true
|
||||
|
|
@ -1687,7 +1687,7 @@ packages:
|
|||
svelte: ^4.0.0 || ^5.0.0-next.0
|
||||
vite: ^5.0.3
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.9)(vite@5.0.12)
|
||||
'@sveltejs/vite-plugin-svelte': 3.0.2(svelte@5.0.0-next.42)(vite@5.0.12)
|
||||
'@types/cookie': 0.6.0
|
||||
cookie: 0.6.0
|
||||
devalue: 4.3.2
|
||||
|
|
@ -1699,11 +1699,11 @@ packages:
|
|||
sade: 1.8.1
|
||||
set-cookie-parser: 2.6.0
|
||||
sirv: 2.0.4
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
tiny-glob: 0.2.9
|
||||
vite: 5.0.12(sass@1.70.0)
|
||||
|
||||
/@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.0.12):
|
||||
/@sveltejs/vite-plugin-svelte-inspector@2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.42)(vite@5.0.12):
|
||||
resolution: {integrity: sha512-gjr9ZFg1BSlIpfZ4PRewigrvYmHWbDrq2uvvPB1AmTWKuM+dI1JXQSUu2pIrYLb/QncyiIGkFDFKTwJ0XqQZZg==}
|
||||
engines: {node: ^18.0.0 || >=20}
|
||||
peerDependencies:
|
||||
|
|
@ -1711,27 +1711,27 @@ packages:
|
|||
svelte: ^4.0.0 || ^5.0.0-next.0
|
||||
vite: ^5.0.0
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte': 3.0.2(svelte@4.2.9)(vite@5.0.12)
|
||||
'@sveltejs/vite-plugin-svelte': 3.0.2(svelte@5.0.0-next.42)(vite@5.0.12)
|
||||
debug: 4.3.4
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
vite: 5.0.12(sass@1.70.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
/@sveltejs/vite-plugin-svelte@3.0.2(svelte@4.2.9)(vite@5.0.12):
|
||||
/@sveltejs/vite-plugin-svelte@3.0.2(svelte@5.0.0-next.42)(vite@5.0.12):
|
||||
resolution: {integrity: sha512-MpmF/cju2HqUls50WyTHQBZUV3ovV/Uk8k66AN2gwHogNAG8wnW8xtZDhzNBsFJJuvmq1qnzA5kE7YfMJNFv2Q==}
|
||||
engines: {node: ^18.0.0 || >=20}
|
||||
peerDependencies:
|
||||
svelte: ^4.0.0 || ^5.0.0-next.0
|
||||
vite: ^5.0.0
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@4.2.9)(vite@5.0.12)
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 2.0.0(@sveltejs/vite-plugin-svelte@3.0.2)(svelte@5.0.0-next.42)(vite@5.0.12)
|
||||
debug: 4.3.4
|
||||
deepmerge: 4.3.1
|
||||
kleur: 4.1.5
|
||||
magic-string: 0.30.5
|
||||
svelte: 4.2.9
|
||||
svelte-hmr: 0.15.3(svelte@4.2.9)
|
||||
svelte: 5.0.0-next.42
|
||||
svelte-hmr: 0.15.3(svelte@5.0.0-next.42)
|
||||
vite: 5.0.12(sass@1.70.0)
|
||||
vitefu: 0.2.5(vite@5.0.12)
|
||||
transitivePeerDependencies:
|
||||
|
|
@ -1977,12 +1977,12 @@ packages:
|
|||
pretty-format: 29.7.0
|
||||
dev: true
|
||||
|
||||
/@zerodevx/svelte-img@2.1.0(svelte@4.2.9):
|
||||
/@zerodevx/svelte-img@2.1.0(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-ktOcv5svIm8qQQ7sBnSST1zaA5mJpTp+MbzaMeDNBEw4hulwzSD0VRPtq/pvYsjacA1OAw+JIN/qmBl7doh7HA==}
|
||||
peerDependencies:
|
||||
svelte: ^3.55.1 || ^4.0.0
|
||||
dependencies:
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
vite-imagetools: 5.0.8
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
|
|
@ -2008,6 +2008,13 @@ packages:
|
|||
acorn: 8.11.2
|
||||
dev: true
|
||||
|
||||
/acorn-typescript@1.4.13(acorn@8.11.3):
|
||||
resolution: {integrity: sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==}
|
||||
peerDependencies:
|
||||
acorn: '>=8.9.0'
|
||||
dependencies:
|
||||
acorn: 8.11.3
|
||||
|
||||
/acorn-walk@8.3.2:
|
||||
resolution: {integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
|
|
@ -2023,12 +2030,12 @@ packages:
|
|||
resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
/acorn@8.9.0:
|
||||
resolution: {integrity: sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==}
|
||||
engines: {node: '>=0.4.0'}
|
||||
hasBin: true
|
||||
dev: true
|
||||
|
||||
/agent-base@6.0.2:
|
||||
resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==}
|
||||
|
|
@ -2355,6 +2362,7 @@ packages:
|
|||
acorn: 8.9.0
|
||||
estree-walker: 3.0.3
|
||||
periscopic: 3.1.0
|
||||
dev: true
|
||||
|
||||
/color-convert@2.0.1:
|
||||
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
|
||||
|
|
@ -2478,6 +2486,7 @@ packages:
|
|||
dependencies:
|
||||
mdn-data: 2.0.30
|
||||
source-map-js: 1.0.2
|
||||
dev: true
|
||||
|
||||
/css-what@6.1.0:
|
||||
resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==}
|
||||
|
|
@ -2744,7 +2753,7 @@ packages:
|
|||
eslint: 8.56.0
|
||||
dev: true
|
||||
|
||||
/eslint-plugin-svelte@2.35.1(eslint@8.56.0)(svelte@4.2.9):
|
||||
/eslint-plugin-svelte@2.35.1(eslint@8.56.0)(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-IF8TpLnROSGy98Z3NrsKXWDSCbNY2ReHDcrYTuXZMbfX7VmESISR78TWgO9zdg4Dht1X8coub5jKwHzP0ExRug==}
|
||||
engines: {node: ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
|
|
@ -2766,8 +2775,8 @@ packages:
|
|||
postcss-safe-parser: 6.0.0(postcss@8.4.33)
|
||||
postcss-selector-parser: 6.0.13
|
||||
semver: 7.5.3
|
||||
svelte: 4.2.9
|
||||
svelte-eslint-parser: 0.33.1(svelte@4.2.9)
|
||||
svelte: 5.0.0-next.42
|
||||
svelte-eslint-parser: 0.33.1(svelte@5.0.0-next.42)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- ts-node
|
||||
|
|
@ -2865,6 +2874,12 @@ packages:
|
|||
estraverse: 5.3.0
|
||||
dev: true
|
||||
|
||||
/esrap@1.2.1:
|
||||
resolution: {integrity: sha512-dhkcOLfN/aDdMFI1iwPEcy/XqAZzGNfgfEJjZozy2tia6u0dQoZyXzkRshHTckuNsM+c0CYQndY+uRFe3N+AIQ==}
|
||||
dependencies:
|
||||
'@jridgewell/sourcemap-codec': 1.4.15
|
||||
'@types/estree': 1.0.5
|
||||
|
||||
/esrecurse@4.3.0:
|
||||
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
|
||||
engines: {node: '>=4.0'}
|
||||
|
|
@ -2889,6 +2904,7 @@ packages:
|
|||
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
|
||||
dependencies:
|
||||
'@types/estree': 1.0.5
|
||||
dev: true
|
||||
|
||||
/esutils@2.0.3:
|
||||
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
|
||||
|
|
@ -3320,6 +3336,12 @@ packages:
|
|||
resolution: {integrity: sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==}
|
||||
dependencies:
|
||||
'@types/estree': 1.0.5
|
||||
dev: true
|
||||
|
||||
/is-reference@3.0.2:
|
||||
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
|
||||
dependencies:
|
||||
'@types/estree': 1.0.5
|
||||
|
||||
/is-stream@3.0.0:
|
||||
resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
|
||||
|
|
@ -3457,6 +3479,7 @@ packages:
|
|||
|
||||
/mdn-data@2.0.30:
|
||||
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
|
||||
dev: true
|
||||
|
||||
/mdsvex-relative-images@1.0.3:
|
||||
resolution: {integrity: sha512-3XvpnaguRAhC5gchpqCH+A5Yl28xG9WDPylVla0+k90c5LT+QqSM+hwHd1v5C7gB2cAT0AIhuMsY/g6aCw+WDg==}
|
||||
|
|
@ -3465,7 +3488,7 @@ packages:
|
|||
unist-util-visit: 3.1.0
|
||||
dev: true
|
||||
|
||||
/mdsvex@0.11.0(svelte@4.2.9):
|
||||
/mdsvex@0.11.0(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-gJF1s0N2nCmdxcKn8HDn0LKrN8poStqAicp6bBcsKFd/zkUBGLP5e7vnxu+g0pjBbDFOscUyI1mtHz+YK2TCDw==}
|
||||
peerDependencies:
|
||||
svelte: '>=3 <5'
|
||||
|
|
@ -3473,7 +3496,7 @@ packages:
|
|||
'@types/unist': 2.0.6
|
||||
prism-svelte: 0.4.7
|
||||
prismjs: 1.29.0
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
vfile-message: 2.0.4
|
||||
dev: true
|
||||
|
||||
|
|
@ -3820,6 +3843,7 @@ packages:
|
|||
'@types/estree': 1.0.5
|
||||
estree-walker: 3.0.3
|
||||
is-reference: 3.0.1
|
||||
dev: true
|
||||
|
||||
/picocolors@1.0.0:
|
||||
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
|
||||
|
|
@ -4294,14 +4318,14 @@ packages:
|
|||
engines: {node: '>= 0.8.0'}
|
||||
dev: true
|
||||
|
||||
/prettier-plugin-svelte@3.1.2(prettier@3.2.4)(svelte@4.2.9):
|
||||
/prettier-plugin-svelte@3.1.2(prettier@3.2.4)(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-7xfMZtwgAWHMT0iZc8jN4o65zgbAQ3+O32V6W7pXrqNvKnHnkoyQCGCbKeUyXKZLbYE0YhFRnamfxfkEGxm8qA==}
|
||||
peerDependencies:
|
||||
prettier: ^3.0.0
|
||||
svelte: ^3.2.0 || ^4.0.0-next.0 || ^5.0.0-next.0
|
||||
dependencies:
|
||||
prettier: 3.2.4
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
dev: true
|
||||
|
||||
/prettier@3.2.4:
|
||||
|
|
@ -4807,7 +4831,7 @@ packages:
|
|||
engines: {node: '>= 0.4'}
|
||||
dev: true
|
||||
|
||||
/svelte-check@3.6.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@4.2.9):
|
||||
/svelte-check@3.6.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-Q2nGnoysxUnB9KjnjpQLZwdjK62DHyW6nuH/gm2qteFnDk0lCehe/6z8TsIvYeKjC6luKaWxiNGyOcWiLLPSwA==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
|
|
@ -4819,8 +4843,8 @@ packages:
|
|||
import-fresh: 3.3.0
|
||||
picocolors: 1.0.0
|
||||
sade: 1.8.1
|
||||
svelte: 4.2.9
|
||||
svelte-preprocess: 5.1.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@4.2.9)(typescript@5.3.3)
|
||||
svelte: 5.0.0-next.42
|
||||
svelte-preprocess: 5.1.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@5.0.0-next.42)(typescript@5.3.3)
|
||||
typescript: 5.3.3
|
||||
transitivePeerDependencies:
|
||||
- '@babel/core'
|
||||
|
|
@ -4834,7 +4858,7 @@ packages:
|
|||
- sugarss
|
||||
dev: true
|
||||
|
||||
/svelte-eslint-parser@0.33.1(svelte@4.2.9):
|
||||
/svelte-eslint-parser@0.33.1(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==}
|
||||
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
|
||||
peerDependencies:
|
||||
|
|
@ -4848,37 +4872,37 @@ packages:
|
|||
espree: 9.6.1
|
||||
postcss: 8.4.33
|
||||
postcss-scss: 4.0.9(postcss@8.4.33)
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
dev: true
|
||||
|
||||
/svelte-hmr@0.15.3(svelte@4.2.9):
|
||||
/svelte-hmr@0.15.3(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==}
|
||||
engines: {node: ^12.20 || ^14.13.1 || >= 16}
|
||||
peerDependencies:
|
||||
svelte: ^3.19.0 || ^4.0.0
|
||||
dependencies:
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
|
||||
/svelte-meta-tags@3.1.0(svelte@4.2.9)(typescript@5.3.3):
|
||||
/svelte-meta-tags@3.1.0(svelte@5.0.0-next.42)(typescript@5.3.3):
|
||||
resolution: {integrity: sha512-wFBfpktSua1R5rdvQ/aFucvXmRqzDhRYrPpMQ/pL4+KL5QHIzomPf29a5WN3yDR0reSy1PXyQ2ah0+uCYCbi0g==}
|
||||
peerDependencies:
|
||||
svelte: ^3.55.0 || ^4.0.0
|
||||
dependencies:
|
||||
schema-dts: 1.1.2(typescript@5.3.3)
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
transitivePeerDependencies:
|
||||
- typescript
|
||||
dev: true
|
||||
|
||||
/svelte-parse-markup@0.1.2(svelte@4.2.9):
|
||||
/svelte-parse-markup@0.1.2(svelte@5.0.0-next.42):
|
||||
resolution: {integrity: sha512-DycY7DJr7VqofiJ63ut1/NEG92HrWWL56VWITn/cJCu+LlZhMoBkBXT4opUitPEEwbq1nMQbv4vTKUfbOqIW1g==}
|
||||
peerDependencies:
|
||||
svelte: ^3.0.0 || ^4.0.0
|
||||
dependencies:
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
dev: true
|
||||
|
||||
/svelte-preprocess@5.1.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@4.2.9)(typescript@5.3.3):
|
||||
/svelte-preprocess@5.1.3(postcss-load-config@4.0.2)(postcss@8.4.33)(sass@1.70.0)(svelte@5.0.0-next.42)(typescript@5.3.3):
|
||||
resolution: {integrity: sha512-xxAkmxGHT+J/GourS5mVJeOXZzne1FR5ljeOUAMXUkfEhkLEllRreXpbl3dIYJlcJRfL1LO1uIAPpBpBfiqGPw==}
|
||||
engines: {node: '>= 16.0.0', pnpm: ^8.0.0}
|
||||
requiresBuild: true
|
||||
|
|
@ -4924,7 +4948,7 @@ packages:
|
|||
sass: 1.70.0
|
||||
sorcery: 0.11.0
|
||||
strip-indent: 3.0.0
|
||||
svelte: 4.2.9
|
||||
svelte: 5.0.0-next.42
|
||||
typescript: 5.3.3
|
||||
dev: true
|
||||
|
||||
|
|
@ -4954,6 +4978,25 @@ packages:
|
|||
locate-character: 3.0.0
|
||||
magic-string: 0.30.5
|
||||
periscopic: 3.1.0
|
||||
dev: true
|
||||
|
||||
/svelte@5.0.0-next.42:
|
||||
resolution: {integrity: sha512-sK/XrJTOTTCuOC8JRxAIcodScGYUuQDTilKiTFaQpHzPniPsqZTiEIOEPZvojEWeitWfbr1FHK90NjERHbpzBw==}
|
||||
engines: {node: '>=18'}
|
||||
dependencies:
|
||||
'@ampproject/remapping': 2.2.1
|
||||
'@jridgewell/sourcemap-codec': 1.4.15
|
||||
'@types/estree': 1.0.5
|
||||
acorn: 8.11.3
|
||||
acorn-typescript: 1.4.13(acorn@8.11.3)
|
||||
aria-query: 5.3.0
|
||||
axobject-query: 4.0.0
|
||||
esm-env: 1.0.0
|
||||
esrap: 1.2.1
|
||||
is-reference: 3.0.2
|
||||
locate-character: 3.0.0
|
||||
magic-string: 0.30.5
|
||||
zimmerframe: 1.1.0
|
||||
|
||||
/tabbable@6.2.0:
|
||||
resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
|
||||
|
|
@ -5395,3 +5438,6 @@ packages:
|
|||
|
||||
/yoga-wasm-web@0.3.3:
|
||||
resolution: {integrity: sha512-N+d4UJSJbt/R3wqY7Coqs5pcV0aUj2j9IaQ3rNj9bVCLld8tTGKRa2USARjnvZJWVx1NDmQev8EknoczaOQDOA==}
|
||||
|
||||
/zimmerframe@1.1.0:
|
||||
resolution: {integrity: sha512-+AmV37r9NPUy7KcuG0Fde9AAFSD88kN5pnqvD7Pkp5WLLK0jct7hAtIDXXFDCRk3l5Mc1r2Sth3gfP2ZLE+/Qw==}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,12 @@
|
|||
import type { Article } from "$lib/types/article";
|
||||
import ExternalLink from './ExternalLink.svelte';
|
||||
|
||||
export let articles: Article[];
|
||||
export let totalArticles: number;
|
||||
export let compact: boolean = false;
|
||||
export let classes: string[] = [];
|
||||
const { articles, totalArticles, compact = false, classes = [] } = $props<{
|
||||
articles: Article[];
|
||||
totalArticles: number;
|
||||
compact?: boolean;
|
||||
classes?: string[]
|
||||
}>();
|
||||
</script>
|
||||
|
||||
<div>
|
||||
|
|
|
|||
|
|
@ -1,13 +1,16 @@
|
|||
<script lang="ts">
|
||||
import OpenInNew from '@iconify-icons/mdi/open-in-new';
|
||||
import type { IconifyIcon } from 'iconify-icon';
|
||||
export let rel = 'noreferrer';
|
||||
export let target = '_blank';
|
||||
export let href: string;
|
||||
export let ariaLabel: string;
|
||||
export let showIcon: boolean = false;
|
||||
export let clazz = "";
|
||||
export let icon: IconifyIcon = OpenInNew;
|
||||
|
||||
const { rel = 'noreferrer', target = '_blank', href, ariaLabel, showIcon = false, clazz = "", icon = OpenInNew } = $props<{
|
||||
rel?: string;
|
||||
target?: string;
|
||||
href: string;
|
||||
ariaLabel: string;
|
||||
showIcon?: boolean;
|
||||
clazz?: string;
|
||||
icon?: IconifyIcon;
|
||||
}>();
|
||||
</script>
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,22 +1,23 @@
|
|||
<script lang="ts">
|
||||
import { onMount } from 'svelte';
|
||||
import Img from '@zerodevx/svelte-img';
|
||||
import type { ExternalImageSource } from '../types/album';
|
||||
|
||||
export let clazz = "";
|
||||
export let src: Record<string, any> | ExternalImageSource[] | undefined;
|
||||
export let alt: string;
|
||||
export let style = "";
|
||||
export let loading: "lazy" | "eager" = "lazy";
|
||||
const { clazz = "", src, alt, style = "", loading = 'lazy' } = $props<{
|
||||
clazz?: string;
|
||||
src: Record<string, any> | ExternalImageSource[] | undefined;
|
||||
alt: string;
|
||||
style?: string;
|
||||
loading?: 'lazy' | 'eager';
|
||||
}>();
|
||||
|
||||
let ref: any;
|
||||
let loaded: boolean;
|
||||
let ref: any = $state();
|
||||
let loaded: boolean = $state(false);
|
||||
|
||||
onMount(() => {
|
||||
if (ref.complete) {
|
||||
$effect(() => {
|
||||
if (ref.complete) {
|
||||
loaded = true;
|
||||
}
|
||||
})
|
||||
});
|
||||
</script>
|
||||
|
||||
<div class="wrap">
|
||||
|
|
|
|||
|
|
@ -1,8 +1,10 @@
|
|||
<script lang="ts">
|
||||
export let rel = '';
|
||||
export let target = '';
|
||||
export let href: string;
|
||||
export let ariaLabel: string;
|
||||
const { rel = '', target = '', href, ariaLabel } = $props<{
|
||||
rel?: string;
|
||||
target?: string,
|
||||
href: string,
|
||||
ariaLabel: string
|
||||
}>();
|
||||
</script>
|
||||
|
||||
<a aria-label={ariaLabel} {href} {rel} {target}>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
<script lang="ts">
|
||||
import LazyImage from './LazyImage.svelte';
|
||||
|
||||
export let name: string;
|
||||
export let src: Record<string, any>;
|
||||
export let alt: string;
|
||||
export let style = "";
|
||||
export let loading: "lazy" | "eager" = "lazy";
|
||||
const { name, src, alt, style = "", loading = "lazy" } = $props<{
|
||||
name: string;
|
||||
src: Record<string, any>;
|
||||
alt: string;
|
||||
style: string;
|
||||
loading: "lazy" | "eager";
|
||||
}>();
|
||||
</script>
|
||||
|
||||
<div class="portfolio">
|
||||
|
|
|
|||
|
|
@ -9,17 +9,24 @@
|
|||
siteUrl,
|
||||
};
|
||||
|
||||
export let title = defaultMetadata.defaultTitle;
|
||||
export let description = defaultMetadata.defaultDescription;
|
||||
export let image = defaultMetadata.defaultImage;
|
||||
export let location: string = '';
|
||||
const {
|
||||
title = defaultMetadata.defaultTitle,
|
||||
description = defaultMetadata.defaultDescription,
|
||||
image = defaultMetadata.defaultImage,
|
||||
location = ''
|
||||
} = $props<{
|
||||
title?: string;
|
||||
description?: string;
|
||||
image?: string;
|
||||
location?: string
|
||||
}>();
|
||||
|
||||
$: seo = {
|
||||
let seo = $derived({
|
||||
title,
|
||||
description,
|
||||
image: `${siteUrl}${image}`,
|
||||
url: `${siteUrl}${location || ``}`,
|
||||
};
|
||||
url: `${siteUrl}${location || ''}`,
|
||||
});
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
<script lang="ts">
|
||||
export let name: string;
|
||||
const { name } = $props<{
|
||||
name: string;
|
||||
}>();
|
||||
</script>
|
||||
|
||||
<span>{name}</span>
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
<script lang="ts">
|
||||
import Img from '@zerodevx/svelte-img';
|
||||
import type { Album } from "$lib/types/album";
|
||||
import LazyImage from '../LazyImage.svelte';
|
||||
|
||||
|
||||
export let albums: Album[];
|
||||
const { albums } = $props<{
|
||||
albums: Album[];
|
||||
}>();
|
||||
const displayAlbums =
|
||||
albums?.length > 6 ? albums.slice(0, 6) : albums;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,13 +4,15 @@
|
|||
import linkedin from '@iconify-icons/radix-icons/linkedin-logo';
|
||||
import twitter from '@iconify-icons/radix-icons/twitter-logo';
|
||||
|
||||
export let showGithub: boolean = false;
|
||||
export let showTwitter: boolean = false;
|
||||
export let showLinkedIn: boolean = false;
|
||||
export let showEmail: boolean = false;
|
||||
export let userNames: Record<string, string>;
|
||||
export let showText: boolean = false;
|
||||
export let justify: boolean = false;
|
||||
const { showGithub = false, showTwitter = false, showLinkedIn = false, showEmail = false, userNames, showText = false, justify = false } = $props<{
|
||||
showGithub?: boolean;
|
||||
showTwitter?: boolean;
|
||||
showLinkedIn?: boolean;
|
||||
showEmail?: boolean;
|
||||
userNames: Record<string, string>;
|
||||
showText?: boolean;
|
||||
justify?: boolean
|
||||
}>();
|
||||
</script>
|
||||
|
||||
{#if showText}
|
||||
|
|
|
|||
|
|
@ -1,16 +1,18 @@
|
|||
<script lang="ts">
|
||||
export let additionalClasses: string;
|
||||
export let pageSize: number;
|
||||
export let totalCount: number;
|
||||
export let currentPage: number;
|
||||
export let base: string;
|
||||
const { additionalClasses, pageSize, totalCount, currentPage, base } = $props<{
|
||||
additionalClasses: string;
|
||||
pageSize: number;
|
||||
totalCount: number;
|
||||
currentPage: number;
|
||||
base: string
|
||||
}>();
|
||||
|
||||
// make some variables
|
||||
$: totalPages = Math.ceil(totalCount / pageSize);
|
||||
$: prevPage = currentPage - 1;
|
||||
$: nextPage = currentPage + 1;
|
||||
$: hasNextPage = nextPage <= totalPages;
|
||||
$: hasPrevPage = prevPage >= 1;
|
||||
let totalPages = $derived(Math.ceil(totalCount / pageSize));
|
||||
let prevPage = $derived(currentPage - 1);
|
||||
let nextPage = $derived(currentPage + 1);
|
||||
let hasNextPage = $derived(nextPage <= totalPages);
|
||||
let hasPrevPage = $derived(prevPage >= 1);
|
||||
</script>
|
||||
|
||||
<div class={`paginationStyles ${additionalClasses}`}>
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
<script lang="ts">
|
||||
export let header: string;
|
||||
export let page: string;
|
||||
export let image: string;
|
||||
export let content: string;
|
||||
export let width = 1200;
|
||||
export let height = 630;
|
||||
export let url: string;
|
||||
let { header, page, image, content, width = 1200, height = 630, url } = $props<{
|
||||
header: string;
|
||||
page: string;
|
||||
image: string;
|
||||
content: string;
|
||||
width: number;
|
||||
height: number;
|
||||
url: string;
|
||||
}>();
|
||||
</script>
|
||||
|
||||
<div class="social-card" style={`width: ${width}px; height: ${height}px;`}>
|
||||
|
|
@ -27,72 +29,3 @@
|
|||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
@font-face {
|
||||
font-family: 'Fira Sans';
|
||||
src: url('/src/lib/FiraSans-Bold.ttf');
|
||||
}
|
||||
|
||||
.social-card {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
color: #D8D8D8;
|
||||
background-color: #131415;
|
||||
}
|
||||
|
||||
.social-card-header {
|
||||
display: flex;
|
||||
padding: 0 1.5rem;
|
||||
flex-direction: column;
|
||||
background-color: #2E2E2E;
|
||||
}
|
||||
|
||||
.social-card-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
font-size: 1.875rem; /* 30px */
|
||||
line-height: 2.25rem; /* 36px */
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.025em;
|
||||
}
|
||||
|
||||
.social-card-image {
|
||||
display: flex;
|
||||
width: 4rem;
|
||||
height: 4rem;
|
||||
}
|
||||
|
||||
.social-card-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 2rem;
|
||||
padding: 1.5rem;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.page {
|
||||
font-size: 3.75rem; /* 60px */
|
||||
line-height: 1;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.content {
|
||||
font-size: 1.25rem; /* 20px */
|
||||
line-height: 1.75rem; /* 28px */
|
||||
}
|
||||
|
||||
.social-card-footer {
|
||||
display: flex;
|
||||
padding: 1rem 1.5rem;
|
||||
align-items: center;
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.75rem;
|
||||
font-weight: 700;
|
||||
background-color: #2E2E2E;
|
||||
}
|
||||
</style>
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
import { render } from 'svelte/server';
|
||||
import satori from 'satori';
|
||||
import { Resvg } from '@resvg/resvg-js';
|
||||
import { html as toReactNode } from 'satori-html';
|
||||
|
|
@ -10,11 +11,10 @@ import type { SvelteComponent } from 'svelte';
|
|||
|
||||
const fontData = read(firaSansSemiBold).arrayBuffer();
|
||||
|
||||
export async function componentToPng(component: SvelteComponent,
|
||||
props: Record<string, string | undefined>,
|
||||
height: number, width: number) {
|
||||
const result = component.render(props);
|
||||
const markup = toReactNode(`${result.html}<style lang="css">${result.css.code}</style>`);
|
||||
export async function componentToPng(component: SvelteComponent, props: Record<string, string | undefined>, height: number, width: number, css: string) {
|
||||
const result = render(component, { props });
|
||||
// const result = component.render(props);
|
||||
const markup = toReactNode(`${result.html}<style lang="css">${css}</style>`);
|
||||
|
||||
const svg = await satori(markup, {
|
||||
fonts: [
|
||||
|
|
|
|||
|
|
@ -19,15 +19,15 @@
|
|||
const dev = process.env.NODE_ENV !== 'production';
|
||||
const siteUrl = PUBLIC_SITE_URL || 'https://bradleyshellnut.com/';
|
||||
|
||||
$: {
|
||||
$effect(() => {
|
||||
if (browser && $navigating) {
|
||||
NProgress.start();
|
||||
} else {
|
||||
NProgress.done();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$: metaTags = {
|
||||
const metaTags = $derived({
|
||||
titleTemplate: '%s | Bradley Shellnut',
|
||||
additionalMetaTags: [
|
||||
{
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
}
|
||||
],
|
||||
...$page.data.metaTagsChild
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
{#if !dev}
|
||||
|
|
|
|||
|
|
@ -1,17 +1,12 @@
|
|||
<script lang="ts">
|
||||
import type { PageData } from './$types';
|
||||
import Bandcamp from '$lib/components/bandcamp/index.svelte';
|
||||
import Articles from '$lib/components/Articles.svelte';
|
||||
import type { Album } from '$lib/types/album';
|
||||
import type { Article, ArticlePageLoad } from '$lib/types/article';
|
||||
|
||||
export let data: PageData;
|
||||
let albums: Album[];
|
||||
let articlesData: ArticlePageLoad;
|
||||
let articles: Article[];
|
||||
let totalArticles: number;
|
||||
$: ({ albums, articlesData } = data);
|
||||
$: ({ articles, totalArticles } = articlesData);
|
||||
const { data } = $props();
|
||||
const { albums, articlesData } = $state(data);
|
||||
const { articles, totalArticles } = $state(articlesData);
|
||||
|
||||
const userNames = {
|
||||
github: 'BradNut',
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
import Tag from "$lib/components/Tag.svelte";
|
||||
import type { Course } from "$lib/types/courses";
|
||||
|
||||
export let course: Course;
|
||||
const { course } = $props<{ course: Course }>();
|
||||
const { externalLinks, tags } = course;
|
||||
</script>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,11 +1,13 @@
|
|||
<script lang="ts">
|
||||
import type { IconifyIcon } from "iconify-icon/dist/iconify-icon.js";
|
||||
|
||||
export let ariaLabel: string;
|
||||
export let href: string;
|
||||
export let clazz = "";
|
||||
export let itemText: string;
|
||||
export let icon: IconifyIcon;
|
||||
const { ariaLabel, href, clazz = "", itemText, icon } = $props<{
|
||||
ariaLabel: string;
|
||||
href: string;
|
||||
clazz?: string;
|
||||
itemText: string;
|
||||
icon: IconifyIcon
|
||||
}>();
|
||||
</script>
|
||||
|
||||
<a
|
||||
|
|
|
|||
|
|
@ -8,9 +8,7 @@ import type { MetaTagsProps } from 'svelte-meta-tags';
|
|||
export const load: PageServerLoad = async ({ fetch, params, setHeaders, url }) => {
|
||||
const { page } = params;
|
||||
if (+page > +WALLABAG_MAX_PAGES) {
|
||||
error(404, {
|
||||
message: 'Not found'
|
||||
});
|
||||
error(404, { message: 'Not found' });
|
||||
}
|
||||
const resp = await fetch(`/api/articles?page=${page}`);
|
||||
const { articles, currentPage, totalPages, limit, totalArticles, cacheControl }: ArticlePageLoad =
|
||||
|
|
|
|||
|
|
@ -4,12 +4,8 @@
|
|||
import Articles from "$lib/components/Articles.svelte";
|
||||
import type { PageData } from "./$types";
|
||||
|
||||
export let data: PageData;
|
||||
let articles: Article[];
|
||||
let currentPage: number;
|
||||
let totalArticles: number;
|
||||
let limit: number;
|
||||
$: ({ articles, currentPage, totalPages, totalArticles, limit } = data);
|
||||
const { data } = $props();
|
||||
const { articles, currentPage, totalArticles, limit } = $state(data);
|
||||
</script>
|
||||
|
||||
<div>
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ export async function GET({ url }) {
|
|||
const header = url.searchParams.get('header') ?? undefined;
|
||||
const page = url.searchParams.get('page') ?? undefined;
|
||||
const content = url.searchParams.get('content') ?? '';
|
||||
const css = (await import('../../styles/socialImageCard.pcss')).default;
|
||||
console.log('css', css);
|
||||
|
||||
// @ts-expect-error: Argument of type 'typeof SocialImageCard__SvelteComponent_' is not assignable to parameter of type 'SvelteComponent<any, any, any>'
|
||||
return componentToPng(SocialImageCard, {
|
||||
|
|
@ -22,7 +24,7 @@ export async function GET({ url }) {
|
|||
width: `${width}`,
|
||||
height: `${height}`,
|
||||
url: new URL(url.origin).href
|
||||
}, height, width);
|
||||
}, height, width, css);
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
|
|
|||
66
src/styles/socialImageCard.pcss
Normal file
66
src/styles/socialImageCard.pcss
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
@font-face {
|
||||
font-family: 'Fira Sans';
|
||||
src: url('/src/lib/FiraSans-Bold.ttf');
|
||||
}
|
||||
|
||||
.social-card {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
color: #D8D8D8;
|
||||
background-color: #131415;
|
||||
}
|
||||
|
||||
.social-card-header {
|
||||
display: flex;
|
||||
padding: 0 1.5rem;
|
||||
flex-direction: column;
|
||||
background-color: #2E2E2E;
|
||||
}
|
||||
|
||||
.social-card-title {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1rem;
|
||||
font-size: 1.875rem; /* 30px */
|
||||
line-height: 2.25rem; /* 36px */
|
||||
font-weight: 700;
|
||||
letter-spacing: -0.025em;
|
||||
}
|
||||
|
||||
.social-card-image {
|
||||
display: flex;
|
||||
width: 4rem;
|
||||
height: 4rem;
|
||||
}
|
||||
|
||||
.social-card-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
gap: 2rem;
|
||||
padding: 1.5rem;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
.page {
|
||||
font-size: 3.75rem; /* 60px */
|
||||
line-height: 1;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.content {
|
||||
font-size: 1.25rem; /* 20px */
|
||||
line-height: 1.75rem; /* 28px */
|
||||
}
|
||||
|
||||
.social-card-footer {
|
||||
display: flex;
|
||||
padding: 1rem 1.5rem;
|
||||
align-items: center;
|
||||
font-size: 1.25rem;
|
||||
line-height: 1.75rem;
|
||||
font-weight: 700;
|
||||
background-color: #2E2E2E;
|
||||
}
|
||||
Loading…
Reference in a new issue