Merge pull request #17 from BradNut/development

Development
This commit is contained in:
Bradley Shellnut 2023-11-12 16:18:01 -08:00 committed by GitHub
commit adae644798
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 289 additions and 255 deletions

View file

@ -3,10 +3,11 @@
"version": "0.0.1",
"private": true,
"scripts": {
"dev": "vite dev",
"dev": "NODE_OPTIONS=\"--inspect\" vite dev --host",
"build": "vite build",
"preview": "vite preview",
"test": "npm run test:integration && npm run test:unit",
"test:ui": "svelte-kit sync && playwright test --ui",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"lint": "prettier --plugin-search-dir . --check . && eslint .",
@ -19,11 +20,12 @@
"@iconify-icons/mdi": "^1.2.48",
"@iconify-icons/radix-icons": "^1.2.9",
"@iconify-icons/simple-icons": "^1.2.74",
"@melt-ui/pp": "^0.1.2",
"@melt-ui/pp": "^0.1.4",
"@playwright/test": "^1.39.0",
"@sveltejs/adapter-static": "^2.0.3",
"@sveltejs/adapter-vercel": "^1.0.6",
"@sveltejs/kit": "^1.27.3",
"@sveltejs/enhanced-img": "^0.1.1",
"@sveltejs/kit": "^1.27.5",
"@typescript-eslint/eslint-plugin": "^5.62.0",
"@typescript-eslint/parser": "^5.62.0",
"@zerodevx/svelte-img": "^2.1.0",
@ -44,11 +46,11 @@
"sass": "^1.69.5",
"scrape-it": "^6.1.0",
"sharp": "^0.32.6",
"svelte": "^4.2.2",
"svelte-check": "^3.5.2",
"svelte": "^4.2.3",
"svelte-check": "^3.6.0",
"svelte-lazy-loader": "^1.0.0",
"svelte-meta-tags": "^3.0.4",
"svelte-preprocess": "^5.0.4",
"svelte-meta-tags": "^3.1.0",
"svelte-preprocess": "^5.1.0",
"svelte-sequential-preprocessor": "^2.0.1",
"tslib": "^2.6.2",
"typescript": "^5.2.2",
@ -58,6 +60,10 @@
"vitest": "^0.32.2"
},
"type": "module",
"engines": {
"node": ">=18.0.0 <19.0.0 || >=20.0.0 <21.0.0",
"pnpm": ">=8"
},
"dependencies": {
"@melt-ui/svelte": "^0.50.1",
"@types/nprogress": "^0.2.3",

View file

@ -7,7 +7,7 @@ settings:
dependencies:
'@melt-ui/svelte':
specifier: ^0.50.1
version: 0.50.1(svelte@4.2.2)
version: 0.50.1(svelte@4.2.3)
'@types/nprogress':
specifier: ^0.2.3
version: 0.2.3
@ -32,20 +32,23 @@ devDependencies:
specifier: ^1.2.74
version: 1.2.74
'@melt-ui/pp':
specifier: ^0.1.2
version: 0.1.2(@melt-ui/svelte@0.50.1)(svelte@4.2.2)
specifier: ^0.1.4
version: 0.1.4(@melt-ui/svelte@0.50.1)(svelte@4.2.3)
'@playwright/test':
specifier: ^1.39.0
version: 1.39.0
'@sveltejs/adapter-static':
specifier: ^2.0.3
version: 2.0.3(@sveltejs/kit@1.27.3)
version: 2.0.3(@sveltejs/kit@1.27.5)
'@sveltejs/adapter-vercel':
specifier: ^1.0.6
version: 1.0.6(@sveltejs/kit@1.27.3)
version: 1.0.6(@sveltejs/kit@1.27.5)
'@sveltejs/enhanced-img':
specifier: ^0.1.1
version: 0.1.1(svelte@4.2.3)
'@sveltejs/kit':
specifier: ^1.27.3
version: 1.27.3(svelte@4.2.2)(vite@4.5.0)
specifier: ^1.27.5
version: 1.27.5(svelte@4.2.3)(vite@4.5.0)
'@typescript-eslint/eslint-plugin':
specifier: ^5.62.0
version: 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.53.0)(typescript@5.2.2)
@ -54,7 +57,7 @@ devDependencies:
version: 5.62.0(eslint@8.53.0)(typescript@5.2.2)
'@zerodevx/svelte-img':
specifier: ^2.1.0
version: 2.1.0(svelte@4.2.2)
version: 2.1.0(svelte@4.2.3)
autoprefixer:
specifier: ^10.4.16
version: 10.4.16(postcss@8.4.31)
@ -66,7 +69,7 @@ devDependencies:
version: 8.10.0(eslint@8.53.0)
eslint-plugin-svelte:
specifier: ^2.35.0
version: 2.35.0(eslint@8.53.0)(svelte@4.2.2)
version: 2.35.0(eslint@8.53.0)(svelte@4.2.3)
iconify-icon:
specifier: ^1.0.8
version: 1.0.8
@ -75,7 +78,7 @@ devDependencies:
version: 4.3.0
mdsvex:
specifier: ^0.10.6
version: 0.10.6(svelte@4.2.2)
version: 0.10.6(svelte@4.2.3)
mdsvex-relative-images:
specifier: ^1.0.3
version: 1.0.3
@ -96,7 +99,7 @@ devDependencies:
version: 2.8.8
prettier-plugin-svelte:
specifier: ^2.10.1
version: 2.10.1(prettier@2.8.8)(svelte@4.2.2)
version: 2.10.1(prettier@2.8.8)(svelte@4.2.3)
sass:
specifier: ^1.69.5
version: 1.69.5
@ -107,20 +110,20 @@ devDependencies:
specifier: ^0.32.6
version: 0.32.6
svelte:
specifier: ^4.2.2
version: 4.2.2
specifier: ^4.2.3
version: 4.2.3
svelte-check:
specifier: ^3.5.2
version: 3.5.2(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.2)
specifier: ^3.6.0
version: 3.6.0(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.3)
svelte-lazy-loader:
specifier: ^1.0.0
version: 1.0.0
svelte-meta-tags:
specifier: ^3.0.4
version: 3.0.4(svelte@4.2.2)(typescript@5.2.2)
specifier: ^3.1.0
version: 3.1.0(svelte@4.2.3)(typescript@5.2.2)
svelte-preprocess:
specifier: ^5.0.4
version: 5.0.4(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.2)(typescript@5.2.2)
specifier: ^5.1.0
version: 5.1.0(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.3)(typescript@5.2.2)
svelte-sequential-preprocessor:
specifier: ^2.0.1
version: 2.0.1
@ -1126,18 +1129,19 @@ packages:
- supports-color
dev: true
/@melt-ui/pp@0.1.2(@melt-ui/svelte@0.50.1)(svelte@4.2.2):
resolution: {integrity: sha512-GZeqp7UWLNZUC2dJpREnZrWMR88vy27WO7C3cIBz4KW3/CFD19FjNkd3VbSRfcRryrMkdnEs9nu2VUa8/0u58w==}
/@melt-ui/pp@0.1.4(@melt-ui/svelte@0.50.1)(svelte@4.2.3):
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
svelte: ^3.55.0 || ^4.0.0 || ^5.0.0-next.1
dependencies:
'@melt-ui/svelte': 0.50.1(svelte@4.2.2)
svelte: 4.2.2
'@melt-ui/svelte': 0.50.1(svelte@4.2.3)
estree-walker: 3.0.3
svelte: 4.2.3
dev: true
/@melt-ui/svelte@0.50.1(svelte@4.2.2):
/@melt-ui/svelte@0.50.1(svelte@4.2.3):
resolution: {integrity: sha512-MIenasd8a5jXgynNKmH5JNSrDBS0EKUK4BImgyD0R6Vbzrll6rQquBIxlh5PeqVhZ2azDIEh/yRkwaOFi2HEgw==}
peerDependencies:
svelte: '>=3 <5'
@ -1147,7 +1151,7 @@ packages:
dequal: 2.0.3
focus-trap: 7.5.3
nanoid: 4.0.2
svelte: 4.2.2
svelte: 4.2.3
/@nodelib/fs.scandir@2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@ -1208,20 +1212,20 @@ packages:
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
dev: true
/@sveltejs/adapter-static@2.0.3(@sveltejs/kit@1.27.3):
/@sveltejs/adapter-static@2.0.3(@sveltejs/kit@1.27.5):
resolution: {integrity: sha512-VUqTfXsxYGugCpMqQv1U0LIdbR3S5nBkMMDmpjGVJyM6Q2jHVMFtdWJCkeHMySc6mZxJ+0eZK3T7IgmUCDrcUQ==}
peerDependencies:
'@sveltejs/kit': ^1.5.0
dependencies:
'@sveltejs/kit': 1.27.3(svelte@4.2.2)(vite@4.5.0)
'@sveltejs/kit': 1.27.5(svelte@4.2.3)(vite@4.5.0)
dev: true
/@sveltejs/adapter-vercel@1.0.6(@sveltejs/kit@1.27.3):
/@sveltejs/adapter-vercel@1.0.6(@sveltejs/kit@1.27.5):
resolution: {integrity: sha512-fo6aaEygPd/6B5Jms4Ff7R4jbADnppuLvKOWBNTGe5MGB7ZRUkl+gxHWMQx2av2knyEZkA6V8y5M6R3ML5yN4g==}
peerDependencies:
'@sveltejs/kit': ^1.0.0
dependencies:
'@sveltejs/kit': 1.27.3(svelte@4.2.2)(vite@4.5.0)
'@sveltejs/kit': 1.27.5(svelte@4.2.3)(vite@4.5.0)
'@vercel/nft': 0.22.6
esbuild: 0.16.17
transitivePeerDependencies:
@ -1229,16 +1233,27 @@ packages:
- supports-color
dev: true
/@sveltejs/kit@1.27.3(svelte@4.2.2)(vite@4.5.0):
resolution: {integrity: sha512-pd7qwX6ww5noA0/FLk45B0aKUeOXWR+pfZsGTrv3dRmj3lTmnki9UTmTdWzHJGrje+BBkGUZHfgGrsSOQQBQpQ==}
/@sveltejs/enhanced-img@0.1.1(svelte@4.2.3):
resolution: {integrity: sha512-euWs+GU6F3f7tqtwrDCW5AOFwRMTusHcW4uyD/0AMBJVftj2/N0scoB6hEtTk8rkwIOT/AkawZhmL+GGketVig==}
dependencies:
magic-string: 0.30.5
svelte-parse-markup: 0.1.2(svelte@4.2.3)
vite-imagetools: 6.2.3
transitivePeerDependencies:
- rollup
- svelte
dev: true
/@sveltejs/kit@1.27.5(svelte@4.2.3)(vite@4.5.0):
resolution: {integrity: sha512-+L1WPs/ZYNjXoBFoFARypD4aZOjkT51vFpRCtQI45+Fmmfi4Y0dH/8VFlmYD6VlGe89ViIPg7lgf/JpGQ2tr7A==}
engines: {node: ^16.14 || >=18}
hasBin: true
requiresBuild: true
peerDependencies:
svelte: ^3.54.0 || ^4.0.0-next.0
svelte: ^3.54.0 || ^4.0.0-next.0 || ^5.0.0-next.0
vite: ^4.0.0
dependencies:
'@sveltejs/vite-plugin-svelte': 2.4.1(svelte@4.2.2)(vite@4.5.0)
'@sveltejs/vite-plugin-svelte': 2.5.2(svelte@4.2.3)(vite@4.5.0)
'@types/cookie': 0.5.1
cookie: 0.5.0
devalue: 4.3.1
@ -1249,7 +1264,7 @@ packages:
sade: 1.8.1
set-cookie-parser: 2.6.0
sirv: 2.0.2
svelte: 4.2.2
svelte: 4.2.3
tiny-glob: 0.2.9
undici: 5.26.5
vite: 4.5.0(@types/node@20.7.0)(sass@1.69.5)
@ -1257,38 +1272,38 @@ packages:
- supports-color
dev: true
/@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@4.2.2)(vite@4.5.0):
resolution: {integrity: sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==}
/@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.2)(svelte@4.2.3)(vite@4.5.0):
resolution: {integrity: sha512-zjiuZ3yydBtwpF3bj0kQNV0YXe+iKE545QGZVTaylW3eAzFr+pJ/cwK8lZEaRp4JtaJXhD5DyWAV4AxLh6DgaQ==}
engines: {node: ^14.18.0 || >= 16}
peerDependencies:
'@sveltejs/vite-plugin-svelte': ^2.2.0
svelte: ^3.54.0 || ^4.0.0-next.0
svelte: ^3.54.0 || ^4.0.0
vite: ^4.0.0
dependencies:
'@sveltejs/vite-plugin-svelte': 2.4.1(svelte@4.2.2)(vite@4.5.0)
'@sveltejs/vite-plugin-svelte': 2.5.2(svelte@4.2.3)(vite@4.5.0)
debug: 4.3.4
svelte: 4.2.2
svelte: 4.2.3
vite: 4.5.0(@types/node@20.7.0)(sass@1.69.5)
transitivePeerDependencies:
- supports-color
dev: true
/@sveltejs/vite-plugin-svelte@2.4.1(svelte@4.2.2)(vite@4.5.0):
resolution: {integrity: sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==}
/@sveltejs/vite-plugin-svelte@2.5.2(svelte@4.2.3)(vite@4.5.0):
resolution: {integrity: sha512-Dfy0Rbl+IctOVfJvWGxrX/3m6vxPLH8o0x+8FA5QEyMUQMo4kGOVIojjryU7YomBAexOTAuYf1RT7809yDziaA==}
engines: {node: ^14.18.0 || >= 16}
peerDependencies:
svelte: ^3.54.0 || ^4.0.0-next.0
svelte: ^3.54.0 || ^4.0.0 || ^5.0.0-next.0
vite: ^4.0.0
dependencies:
'@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@4.2.2)(vite@4.5.0)
'@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.2)(svelte@4.2.3)(vite@4.5.0)
debug: 4.3.4
deepmerge: 4.3.1
kleur: 4.1.5
magic-string: 0.30.0
svelte: 4.2.2
svelte-hmr: 0.15.2(svelte@4.2.2)
magic-string: 0.30.5
svelte: 4.2.3
svelte-hmr: 0.15.3(svelte@4.2.3)
vite: 4.5.0(@types/node@20.7.0)(sass@1.69.5)
vitefu: 0.2.4(vite@4.5.0)
vitefu: 0.2.5(vite@4.5.0)
transitivePeerDependencies:
- supports-color
dev: true
@ -1533,12 +1548,12 @@ packages:
pretty-format: 29.7.0
dev: true
/@zerodevx/svelte-img@2.1.0(svelte@4.2.2):
/@zerodevx/svelte-img@2.1.0(svelte@4.2.3):
resolution: {integrity: sha512-ktOcv5svIm8qQQ7sBnSST1zaA5mJpTp+MbzaMeDNBEw4hulwzSD0VRPtq/pvYsjacA1OAw+JIN/qmBl7doh7HA==}
peerDependencies:
svelte: ^3.55.1 || ^4.0.0
dependencies:
svelte: 4.2.2
svelte: 4.2.3
vite-imagetools: 5.0.8
transitivePeerDependencies:
- rollup
@ -2273,7 +2288,7 @@ packages:
eslint: 8.53.0
dev: true
/eslint-plugin-svelte@2.35.0(eslint@8.53.0)(svelte@4.2.2):
/eslint-plugin-svelte@2.35.0(eslint@8.53.0)(svelte@4.2.3):
resolution: {integrity: sha512-3WDFxNrkXaMlpqoNo3M1ZOQuoFLMO9+bdnN6oVVXaydXC7nzCJuGy9a0zqoNDHMSRPYt0Rqo6hIdHMEaI5sQnw==}
engines: {node: ^14.17.0 || >=16.0.0}
peerDependencies:
@ -2295,8 +2310,8 @@ packages:
postcss-safe-parser: 6.0.0(postcss@8.4.31)
postcss-selector-parser: 6.0.13
semver: 7.5.3
svelte: 4.2.2
svelte-eslint-parser: 0.33.1(svelte@4.2.2)
svelte: 4.2.3
svelte-eslint-parser: 0.33.1(svelte@4.2.3)
transitivePeerDependencies:
- supports-color
- ts-node
@ -2718,6 +2733,13 @@ packages:
sharp: 0.32.6
dev: true
/imagetools-core@5.1.1:
resolution: {integrity: sha512-NragdIrgxecFO8nRKy8uAYvDxe0QLEW5ToMEviAoNXpEnDQ6I4vs+npRa+z5fNB5nIku+jr11L+MuSkk7XzsKw==}
engines: {node: '>=12.0.0'}
dependencies:
sharp: 0.32.6
dev: true
/immutable@4.2.2:
resolution: {integrity: sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==}
dev: true
@ -2954,7 +2976,7 @@ packages:
unist-util-visit: 3.1.0
dev: true
/mdsvex@0.10.6(svelte@4.2.2):
/mdsvex@0.10.6(svelte@4.2.3):
resolution: {integrity: sha512-aGRDY0r5jx9+OOgFdyB9Xm3EBr9OUmcrTDPWLB7a7g8VPRxzPy4MOBmcVYgz7ErhAJ7bZ/coUoj6aHio3x/2mA==}
peerDependencies:
svelte: 3.x
@ -2962,7 +2984,7 @@ packages:
'@types/unist': 2.0.6
prism-svelte: 0.4.7
prismjs: 1.29.0
svelte: 4.2.2
svelte: 4.2.3
vfile-message: 2.0.4
dev: true
@ -3760,14 +3782,14 @@ packages:
engines: {node: '>= 0.8.0'}
dev: true
/prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@4.2.2):
/prettier-plugin-svelte@2.10.1(prettier@2.8.8)(svelte@4.2.3):
resolution: {integrity: sha512-Wlq7Z5v2ueCubWo0TZzKc9XHcm7TDxqcuzRuGd0gcENfzfT4JZ9yDlCbEgxWgiPmLHkBjfOtpAWkcT28MCDpUQ==}
peerDependencies:
prettier: ^1.16.4 || ^2.0.0
svelte: ^3.2.0 || ^4.0.0-next.0
dependencies:
prettier: 2.8.8
svelte: 4.2.2
svelte: 4.2.3
dev: true
/prettier@2.8.8:
@ -4181,11 +4203,11 @@ packages:
engines: {node: '>= 0.4'}
dev: true
/svelte-check@3.5.2(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.2):
resolution: {integrity: sha512-5a/YWbiH4c+AqAUP+0VneiV5bP8YOk9JL3jwvN+k2PEPLgpu85bjQc5eE67+eIZBBwUEJzmO3I92OqKcqbp3fw==}
/svelte-check@3.6.0(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.3):
resolution: {integrity: sha512-8VfqhfuRJ1sKW+o8isH2kPi0RhjXH1nNsIbCFGyoUHG+ZxVxHYRKcb+S8eaL/1tyj3VGvWYx3Y5+oCUsJgnzcw==}
hasBin: true
peerDependencies:
svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0
svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
dependencies:
'@jridgewell/trace-mapping': 0.3.17
chokidar: 3.5.3
@ -4193,8 +4215,8 @@ packages:
import-fresh: 3.3.0
picocolors: 1.0.0
sade: 1.8.1
svelte: 4.2.2
svelte-preprocess: 5.0.4(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.2)(typescript@5.2.2)
svelte: 4.2.3
svelte-preprocess: 5.1.0(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.3)(typescript@5.2.2)
typescript: 5.2.2
transitivePeerDependencies:
- '@babel/core'
@ -4208,7 +4230,7 @@ packages:
- sugarss
dev: true
/svelte-eslint-parser@0.33.1(svelte@4.2.2):
/svelte-eslint-parser@0.33.1(svelte@4.2.3):
resolution: {integrity: sha512-vo7xPGTlKBGdLH8T5L64FipvTrqv3OQRx9d2z5X05KKZDlF4rQk8KViZO4flKERY+5BiVdOh7zZ7JGJWo5P0uA==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
peerDependencies:
@ -4222,35 +4244,43 @@ packages:
espree: 9.6.1
postcss: 8.4.31
postcss-scss: 4.0.9(postcss@8.4.31)
svelte: 4.2.2
svelte: 4.2.3
dev: true
/svelte-hmr@0.15.2(svelte@4.2.2):
resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==}
/svelte-hmr@0.15.3(svelte@4.2.3):
resolution: {integrity: sha512-41snaPswvSf8TJUhlkoJBekRrABDXDMdpNpT2tfHIv4JuhgvHqLMhEPGtaQn0BmbNSTkuz2Ed20DF2eHw0SmBQ==}
engines: {node: ^12.20 || ^14.13.1 || >= 16}
peerDependencies:
svelte: ^3.19.0 || ^4.0.0-next.0
svelte: ^3.19.0 || ^4.0.0
dependencies:
svelte: 4.2.2
svelte: 4.2.3
dev: true
/svelte-lazy-loader@1.0.0:
resolution: {integrity: sha512-AZD6R60vksyojn21FgXLglmBiBB9K5Dkdu0hdGrLbCaRCYT68IsWkZfRUqKhMx1IfzqWcZQ8X9y/f+Ih0oNQkQ==}
dev: true
/svelte-meta-tags@3.0.4(svelte@4.2.2)(typescript@5.2.2):
resolution: {integrity: sha512-L2oYFoJM5HVy1nFsWf1xr+Ws8yV3Vh1OLDUYJ14Ygl/3SkwMlWS2CwgNmOAJWAZMWLfFH1v3ik9eVcbwrnURGw==}
/svelte-meta-tags@3.1.0(svelte@4.2.3)(typescript@5.2.2):
resolution: {integrity: sha512-wFBfpktSua1R5rdvQ/aFucvXmRqzDhRYrPpMQ/pL4+KL5QHIzomPf29a5WN3yDR0reSy1PXyQ2ah0+uCYCbi0g==}
peerDependencies:
svelte: ^3.55.0 || ^4.0.0
dependencies:
schema-dts: 1.1.2(typescript@5.2.2)
svelte: 4.2.2
svelte: 4.2.3
transitivePeerDependencies:
- typescript
dev: true
/svelte-preprocess@5.0.4(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.2)(typescript@5.2.2):
resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==}
/svelte-parse-markup@0.1.2(svelte@4.2.3):
resolution: {integrity: sha512-DycY7DJr7VqofiJ63ut1/NEG92HrWWL56VWITn/cJCu+LlZhMoBkBXT4opUitPEEwbq1nMQbv4vTKUfbOqIW1g==}
peerDependencies:
svelte: ^3.0.0 || ^4.0.0
dependencies:
svelte: 4.2.3
dev: true
/svelte-preprocess@5.1.0(postcss-load-config@4.0.1)(postcss@8.4.31)(sass@1.69.5)(svelte@4.2.3)(typescript@5.2.2):
resolution: {integrity: sha512-EkErPiDzHAc0k2MF5m6vBNmRUh338h2myhinUw/xaqsLs7/ZvsgREiLGj03VrSzbY/TB5ZXgBOsKraFee5yceA==}
engines: {node: '>= 14.10.0'}
requiresBuild: true
peerDependencies:
@ -4263,7 +4293,7 @@ packages:
sass: ^1.26.8
stylus: ^0.55.0
sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0
svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0
svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 || ^5.0.0-next.0
typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0'
peerDependenciesMeta:
'@babel/core':
@ -4295,7 +4325,7 @@ packages:
sass: 1.69.5
sorcery: 0.11.0
strip-indent: 3.0.0
svelte: 4.2.2
svelte: 4.2.3
typescript: 5.2.2
dev: true
@ -4303,12 +4333,12 @@ packages:
resolution: {integrity: sha512-N5JqlBni6BzElxmuFrOPxOJnjsxh1cFDACLEVKs8OHBcx8ZNRO1p5SxuQex1m3qbLzAC8G99EHeWcxGkjyKjLQ==}
engines: {node: '>=16'}
dependencies:
svelte: 4.2.2
svelte: 4.2.3
tslib: 2.6.2
dev: true
/svelte@4.2.2:
resolution: {integrity: sha512-My2tytF2e2NnHSpn2M7/3VdXT4JdTglYVUuSuK/mXL2XtulPYbeBfl8Dm1QiaKRn0zoULRnL+EtfZHHP0k4H3A==}
/svelte@4.2.3:
resolution: {integrity: sha512-sqmG9KC6uUc7fb3ZuWoxXvqk6MI9Uu4ABA1M0fYDgTlFYu1k02xp96u6U9+yJZiVm84m9zge7rrA/BNZdFpOKw==}
engines: {node: '>=16'}
dependencies:
'@ampproject/remapping': 2.2.1
@ -4569,6 +4599,16 @@ packages:
- rollup
dev: true
/vite-imagetools@6.2.3:
resolution: {integrity: sha512-VZTJOXDTw/Nfah2ayQCWEvNc0b2Q7uGSUCczjx0N7ULd7VZDFH3PxcqyKIRxFOenKcSTYTna1OMzdGlcRBTk+g==}
engines: {node: '>=12.0.0'}
dependencies:
'@rollup/pluginutils': 5.0.2
imagetools-core: 5.1.1
transitivePeerDependencies:
- rollup
dev: true
/vite-node@0.32.4(@types/node@20.7.0)(sass@1.69.5):
resolution: {integrity: sha512-L2gIw+dCxO0LK14QnUMoqSYpa9XRGnTTTDjW2h19Mr+GR0EFj4vx52W41gFXfMLqpA00eK4ZjOVYo1Xk//LFEw==}
engines: {node: '>=v14.18.0'}
@ -4628,10 +4668,10 @@ packages:
fsevents: 2.3.3
dev: true
/vitefu@0.2.4(vite@4.5.0):
resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==}
/vitefu@0.2.5(vite@4.5.0):
resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
peerDependencies:
vite: ^3.0.0 || ^4.0.0
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
peerDependenciesMeta:
vite:
optional: true

View file

@ -5,7 +5,7 @@ const config = {
plugins: [
atImport(),
postcssPresetEnv({
stage: 2,
stage: 3,
features: {
'nesting-rules': true,
'custom-media-queries': true,

View file

@ -0,0 +1,114 @@
<script lang="ts">
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[] = [];
</script>
<div>
<h2>Favorite Articles</h2>
<div class={classes.join(' ')}>
{#each articles as article (article.hashed_url)}
<article class='card'>
<section>
<h3>
<ExternalLink
ariaLabel={`Link to ${article.title}`}
href={article.url.toString()}
showIcon
>
{#if compact}
{article.title.substring(0, 50).trim()}
{:else}
{article.title}
{/if}
</ExternalLink>
</h3>
</section>
<section>
<p>Reading time: {article.reading_time} minutes</p>
<div class="tagsStyles">
<p>Tags:</p>
{#each article.tags as tag}
<p>{tag}</p>
{/each}
</div>
</section>
</article>
{/each}
</div>
<div class="moreArticles">
<a href="/articles">{`${totalArticles} more articles`}</a>
<a href="/articles" aria-label={`${totalArticles} more articles`}>
<iconify-icon icon="material-symbols:arrow-right-alt-rounded"></iconify-icon>
</a>
</div>
</div>
<style lang="postcss">
article {
margin: 1.5rem 0;
& p {
margin: 0.25rem 0rem;
}
}
.columns {
display: grid;
grid-template-columns: repeat(2, minmax(250px, 1fr));
min-height: 800px;
@media (max-width: 1000px) {
grid-template-columns: repeat(2, minmax(250px, 1fr));
}
@media (max-width: 650px) {
grid-template-columns: minmax(250px, 1fr);
}
gap: 2.5rem;
}
.tagsStyles {
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: left;
align-items: center;
& p + p {
background-color: var(--linkHover);
color: var(--buttonTextColor);
padding: 0.25rem 0.5rem;
margin: 0.5rem;
border-radius: 2px;
font-size: 1.2rem;
}
}
.moreArticles {
margin: 1.7rem;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: 1rem;
& a {
font-size: 2rem;
}
& a + svg {
text-decoration: none;
}
@media (max-width: 1000px) {
font-size: 1.5rem;
}
}
</style>

View file

@ -9,14 +9,13 @@
export let icon: IconifyIcon = OpenInNew;
</script>
<span class:show-icon={showIcon}>
<a aria-label={`Open ${ariaLabel} externally`} title={`Open ${ariaLabel} externally`} {href} {rel} {target}>
<slot />
</a>
<a class:show-icon={showIcon} aria-label={`Open ${ariaLabel} externally`} title={`Open ${ariaLabel} externally`} {href} {rel} {target}>
<slot />
{#if showIcon}
<iconify-icon {icon} width="24" height="24" role="img" title={`Open ${ariaLabel} Externally`} />
{/if}
</span>
</a>
<style lang="postcss">
.show-icon {

View file

@ -21,5 +21,23 @@
<div class="wrap">
<Img class={clazz} {style} {src} {alt} {loading} bind:ref on:load={() => (loaded = true)} />
<div class="blur" class:loaded />
</div>
<div class:blur={loaded} class:loaded />
</div>
<style lang="postcss">
.wrap {
position: relative;
overflow: hidden;
}
.blur {
position: absolute;
inset: 0;
backdrop-filter: blur(20px);
pointer-events: none;
}
.loaded {
display: none;
}
</style>

View file

@ -1,107 +0,0 @@
<script lang="ts">
import OpenInNew from '@iconify-icons/mdi/open-in-new';
import type { Article } from "$root/lib/types/article";
export let articles: Article[];
export let totalArticles: number;
export let compact: boolean = false;
</script>
<div>
<h2>Favorite Articles</h2>
<div style="display: grid;">
{#each articles as article}
<article class="articleStyles card">
<section>
<h3>
<a
target="_blank"
title={`Link to ${article.title}`}
aria-label={`Link to ${article.title}`}
href={article.url.toString()}
rel="noreferrer"
>
{#if compact}
{article.title.substring(0, 50).trim()}&#8230;
{:else}
{article.title}
{/if}
<iconify-icon icon={OpenInNew} width="24" height="24" role="img" title="Open Article Externally" />
</a>{' '}
</h3>
</section>
<section>
<p>Reading time: {article.reading_time} minutes</p>
<div class="tagsStyles">
<p>Tags:</p>
{#each article.tags as tag}
<p>{tag}</p>
{/each}
</div>
</section>
</article>
{/each}
</div>
<div class="moreArticlesStyles">
<a href="/articles">{`${totalArticles} more articles`}</a>
<a href="/articles" aria-label={`${totalArticles} more articles`}>
<iconify-icon icon="material-symbols:arrow-right-alt-rounded"></iconify-icon>
</a>
</div>
</div>
<style lang="postcss">
.articleStyles {
display: grid;
grid-template-rows: repeat(1fr, 3);
gap: 0.5rem;
margin: 1.5rem 0;
& a {
overflow-wrap: anywhere;
}
& p {
margin: 0.4rem 0.25rem;
}
}
.tagsStyles {
display: flex;
flex-wrap: wrap;
flex-direction: row;
justify-content: left;
align-items: center;
& p + p {
background-color: var(--linkHover);
color: var(--buttonTextColor);
padding: 0.25rem 0.5rem;
margin: 0.5rem;
border-radius: 2px;
font-size: 1.2rem;
}
}
.moreArticlesStyles {
margin: 1.7rem;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: center;
gap: 1rem;
& a {
font-size: 2rem;
}
& a + svg {
text-decoration: none;
}
@media (max-width: 1000px) {
font-size: 1.5rem;
}
}
</style>

View file

@ -1,6 +1,6 @@
<script lang="ts">
import Img from '@zerodevx/svelte-img';
import type { Album } from "$root/lib/types/album";
import type { Album } from "$lib/types/album";
import LazyImage from '../LazyImage.svelte';

View file

@ -10,7 +10,6 @@
import Header from '$lib/components/header/index.svelte';
import Footer from '$lib/components/footer/index.svelte';
import Analytics from '$lib/components/analytics/index.svelte';
// import SEO from '$lib/components/SEO.svelte';
NProgress.configure({
// Full list: https://github.com/rstacruz/nprogress#configuration
@ -46,8 +45,6 @@
<MetaTags {...metaTags} />
<!-- <SEO /> -->
<div class="wrapper">
<Header />
<main>

View file

@ -1,8 +1,7 @@
<script lang="ts">
import type { PageData } from './$types';
import Bandcamp from '$lib/components/bandcamp/index.svelte';
import Articles from '$lib/components/articles/index.svelte';
// import SEO from '$lib/components/SEO.svelte';
import Articles from '$lib/components/Articles.svelte';
import type { Album } from '$lib/types/album';
import type { Article } from '$lib/types/article';
import type { ArticlePageLoad } from './articles/[page]/+page.server';
@ -22,8 +21,6 @@
};
</script>
<!-- <SEO title="Home" /> -->
<div class="home">
<div>
<h1>Hello! I'm Bradley Shellnut.</h1>
@ -69,7 +66,7 @@
</p>
<div class="social-info">
<Bandcamp {albums} />
<Articles {articles} {totalArticles} compact={true} />
<Articles {articles} {totalArticles} compact />
</div>
</div>

View file

@ -9,18 +9,15 @@
import Remix from '@iconify-icons/simple-icons/remix';
import Svelte from '@iconify-icons/simple-icons/svelte';
import TypeScript from '@iconify-icons/simple-icons/typescript';
import SEO from "$lib/components/SEO.svelte";
import LazyImage from '$root/lib/components/LazyImage.svelte';
import LazyImage from '$lib/components/LazyImage.svelte';
import adventure from '$lib/assets/images/adventure.png?as=run:0';
import tortie_derp from '$lib/assets/images/tortie_derp.jpg?as=run';
import orange_derp from '$lib/assets/images/orange_derp.jpg?as=run';
import turnip from '$lib/assets/images/turnip.svg';
import Tag from '$root/lib/components/Tag.svelte';
import ExternalLink from '$root/lib/components/ExternalLink.svelte';
import Tag from '$lib/components/Tag.svelte';
import ExternalLink from '$lib/components/ExternalLink.svelte';
</script>
<!-- <SEO title="About" /> -->
<div class="about">
<div>
<h1>About</h1>

View file

@ -10,11 +10,11 @@ import {
USE_REDIS_CACHE
} from '$env/static/private';
import intersect from 'just-intersect';
import type { Article, WallabagArticle } from '$root/lib/types/article';
import { ArticleTag } from '$root/lib/types/articleTag';
import type { PageQuery } from '$root/lib/types/pageQuery';
import type { Article, WallabagArticle } from '$lib/types/article';
import { ArticleTag } from '$lib/types/articleTag';
import type { PageQuery } from '$lib/types/pageQuery';
import { URLSearchParams } from 'url';
import { redis } from '$root/lib/server/redis';
import { redis } from '$lib/server/redis';
const base: string = WALLABAG_URL;

View file

@ -1,7 +1,7 @@
<script lang="ts">
import SEO from "$lib/components/SEO.svelte";
import Pagination from "$lib/components/pagination/index.svelte";
import type { Article } from "$root/lib/types/article";
import type { Article } from "$lib/types/article";
import Articles from "$lib/components/Articles.svelte";
import type { PageData } from "./$types";
export let data: PageData;
@ -14,8 +14,6 @@
$: seoTitle = `Tech Articles - Page ${currentPage} | Bradley Shellnut`;
</script>
<!-- <SEO title={seoTitle} /> -->
<div class="pageStyles">
<h1 style="margin-bottom: 2rem">Favorite Tech Articles</h1>
<Pagination
@ -26,7 +24,8 @@
skip={currentPage}
base="/articles"
/>
<div class="articlesStyles">
<Articles {articles} {totalArticles} classes={['columns']} />
<!-- <div class="articlesStyles">
{#each articles as article (article.hashed_url)}
<div class="articleStyles card">
<section>
@ -52,7 +51,7 @@
</section>
</div>
{/each}
</div>
</div> -->
<Pagination
additionalClasses="bottom-pagination"
pageSize={limit}

View file

@ -1,7 +1,6 @@
<script lang="ts">
import { createTabs, melt } from '@melt-ui/svelte';
import GitHub from '@iconify-icons/simple-icons/github';
// import SEO from '$lib/components/SEO.svelte';
import Portfolio from '$lib/components/Portfolio.svelte';
import personalSite from "$lib/assets/images/Bradley_Shellnut_New_Site.png?as=run";
import weddingWebsite from "$lib/assets/images/Wedding_Website.png?as=run";
@ -25,8 +24,6 @@
];
</script>
<!-- <SEO title="Portfolio" /> -->
<h1>Portfolio!</h1>
<div use:melt={$root} class="root tab-group">
<div use:melt={$list} aria-label="tabs portfolios" class="list tab-list">

View file

@ -1,10 +1,7 @@
<script lang="ts">
import ExternalLink from "$root/lib/components/ExternalLink.svelte";
// import SEO from "$root/lib/components/SEO.svelte";
import ExternalLink from "$lib/components/ExternalLink.svelte";
</script>
<!-- <SEO title="Privacy Blog" /> -->
<div>
<h1>Privacy</h1>
<p>

View file

@ -1,6 +1,4 @@
<script lang="ts">
import Img from '@zerodevx/svelte-img';
import SEO from "$lib/components/SEO.svelte";
import ExternalLink from '$lib/components/ExternalLink.svelte';
import LazyImage from '$lib/components/LazyImage.svelte';
import desktop from '$lib/assets/images/Desktop_so_clean.jpg?as=run';
@ -9,8 +7,6 @@
import PrivacyHardwareSoftware from '$lib/content/uses/privacy-hardware-software.md';
</script>
<!-- <SEO title="Uses" /> -->
<div class="uses">
<div>
<h1>/Uses</h1>

View file

@ -265,19 +265,3 @@ figure {
.card > *:last-child {
margin-bottom: 0;
}
.blur {
position: absolute;
inset: 0;
backdrop-filter: blur(20px);
pointer-events: none;
}
.wrap {
position: relative;
overflow: hidden;
}
.loaded {
display: none;
}