Update dependencies and component paths
This commit is contained in:
parent
bd1ad91efd
commit
23641c16e2
15 changed files with 92 additions and 115 deletions
187
package-lock.json
generated
187
package-lock.json
generated
|
|
@ -383,6 +383,15 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@fastify/busboy": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz",
|
||||
"integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/@jridgewell/gen-mapping": {
|
||||
"version": "0.3.3",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
|
||||
|
|
@ -422,9 +431,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/@jridgewell/trace-mapping": {
|
||||
"version": "0.3.18",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz",
|
||||
"integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==",
|
||||
"version": "0.3.20",
|
||||
"resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz",
|
||||
"integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/resolve-uri": "3.1.0",
|
||||
|
|
@ -467,9 +476,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@polka/url": {
|
||||
"version": "1.0.0-next.21",
|
||||
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz",
|
||||
"integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==",
|
||||
"version": "1.0.0-next.24",
|
||||
"resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz",
|
||||
"integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@sveltejs/adapter-static": {
|
||||
|
|
@ -482,24 +491,25 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@sveltejs/kit": {
|
||||
"version": "1.21.0",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.21.0.tgz",
|
||||
"integrity": "sha512-CBsYoI34SjtOQp0eG85dmVnvTR3Pjs8VgAQhO0CgQja9BIorKl808F1X8EunPhCcyek5r5lKQE1Mmbi0RuzHqA==",
|
||||
"version": "1.27.7",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.27.7.tgz",
|
||||
"integrity": "sha512-AzXYDoYt42clCBwLF9GTHsXyg2DFR31Ncyt8yxu8Aw4tgB433V+w+hcr1RTfAN9zKW2J2PY9FMQ8FoX/4Vw8CA==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
"@sveltejs/vite-plugin-svelte": "^2.4.1",
|
||||
"@sveltejs/vite-plugin-svelte": "^2.5.0",
|
||||
"@types/cookie": "^0.5.1",
|
||||
"cookie": "^0.5.0",
|
||||
"devalue": "^4.3.1",
|
||||
"esm-env": "^1.0.0",
|
||||
"kleur": "^4.1.5",
|
||||
"magic-string": "^0.30.0",
|
||||
"mime": "^3.0.0",
|
||||
"mrmime": "^1.0.1",
|
||||
"sade": "^1.8.1",
|
||||
"set-cookie-parser": "^2.6.0",
|
||||
"sirv": "^2.0.2",
|
||||
"undici": "~5.22.0"
|
||||
"tiny-glob": "^0.2.9",
|
||||
"undici": "~5.26.2"
|
||||
},
|
||||
"bin": {
|
||||
"svelte-kit": "svelte-kit.js"
|
||||
|
|
@ -508,14 +518,14 @@
|
|||
"node": "^16.14 || >=18"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"node_modules/@sveltejs/vite-plugin-svelte": {
|
||||
"version": "2.4.2",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.4.2.tgz",
|
||||
"integrity": "sha512-ePfcC48ftMKhkT0OFGdOyycYKnnkT6i/buzey+vHRTR/JpQvuPzzhf1PtKqCDQfJRgoPSN2vscXs6gLigx/zGw==",
|
||||
"version": "2.5.3",
|
||||
"resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.5.3.tgz",
|
||||
"integrity": "sha512-erhNtXxE5/6xGZz/M9eXsmI7Pxa6MS7jyTy06zN3Ck++ldrppOnOlJwHHTsMC7DHDQdgUp4NAc4cDNQ9eGdB/w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@sveltejs/vite-plugin-svelte-inspector": "^1.0.3",
|
||||
|
|
@ -530,7 +540,7 @@
|
|||
"node": "^14.18.0 || >= 16"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"svelte": "^3.54.0 || ^4.0.0",
|
||||
"svelte": "^3.54.0 || ^4.0.0 || ^5.0.0-next.0",
|
||||
"vite": "^4.0.0"
|
||||
}
|
||||
},
|
||||
|
|
@ -552,15 +562,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@types/cookie": {
|
||||
"version": "0.5.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz",
|
||||
"integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==",
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.4.tgz",
|
||||
"integrity": "sha512-7z/eR6O859gyWIAjuvBWFzNURmf2oPBmJlfVWkwehU5nzIyjwBsTh7WMmEEV4JFnHuQ3ex4oyTvfKzcyJVDBNA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/estree": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz",
|
||||
"integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==",
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz",
|
||||
"integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
|
|
@ -572,15 +582,15 @@
|
|||
"peer": true
|
||||
},
|
||||
"node_modules/@types/pug": {
|
||||
"version": "2.0.6",
|
||||
"resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.6.tgz",
|
||||
"integrity": "sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==",
|
||||
"version": "2.0.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/pug/-/pug-2.0.10.tgz",
|
||||
"integrity": "sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
"version": "8.9.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz",
|
||||
"integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==",
|
||||
"version": "8.11.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
|
||||
"integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"acorn": "bin/acorn"
|
||||
|
|
@ -666,18 +676,6 @@
|
|||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/busboy": {
|
||||
"version": "1.6.0",
|
||||
"resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
|
||||
"integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"streamsearch": "^1.1.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.16.0"
|
||||
}
|
||||
},
|
||||
"node_modules/callsites": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
|
||||
|
|
@ -864,9 +862,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/fast-glob": {
|
||||
"version": "3.2.12",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz",
|
||||
"integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==",
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",
|
||||
"integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@nodelib/fs.stat": "^2.0.2",
|
||||
|
|
@ -1057,9 +1055,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/magic-string": {
|
||||
"version": "0.30.0",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz",
|
||||
"integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==",
|
||||
"version": "0.30.5",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz",
|
||||
"integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/sourcemap-codec": "^1.4.13"
|
||||
|
|
@ -1096,18 +1094,6 @@
|
|||
"node": ">=8.6"
|
||||
}
|
||||
},
|
||||
"node_modules/mime": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz",
|
||||
"integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"mime": "cli.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/min-indent": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
|
||||
|
|
@ -1175,9 +1161,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/nanoid": {
|
||||
"version": "3.3.6",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz",
|
||||
"integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==",
|
||||
"version": "3.3.7",
|
||||
"resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
|
||||
"integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -1261,9 +1247,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss": {
|
||||
"version": "8.4.24",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.24.tgz",
|
||||
"integrity": "sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==",
|
||||
"version": "8.4.32",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz",
|
||||
"integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==",
|
||||
"dev": true,
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -1280,7 +1266,7 @@
|
|||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"nanoid": "^3.3.6",
|
||||
"nanoid": "^3.3.7",
|
||||
"picocolors": "^1.0.0",
|
||||
"source-map-js": "^1.0.2"
|
||||
},
|
||||
|
|
@ -1352,9 +1338,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/rollup": {
|
||||
"version": "3.25.3",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.25.3.tgz",
|
||||
"integrity": "sha512-ZT279hx8gszBj9uy5FfhoG4bZx8c+0A1sbqtr7Q3KNWIizpTdDEPZbV2xcbvHsnFp4MavCQYZyzApJ+virB8Yw==",
|
||||
"version": "3.29.4",
|
||||
"resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz",
|
||||
"integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"rollup": "dist/bin/rollup"
|
||||
|
|
@ -1458,15 +1444,6 @@
|
|||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/streamsearch": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
|
||||
"integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/strip-indent": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
|
||||
|
|
@ -1480,9 +1457,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/svelte": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.0.1.tgz",
|
||||
"integrity": "sha512-7n2u7A5cu8xCY6MBiXh/Mg6Lh3+Mw2qXlTDBYhzvCvmSM4L4gc4MVo540UtGcjqBiA48E1VDW+EUpBr7iuBlPg==",
|
||||
"version": "4.2.8",
|
||||
"resolved": "https://registry.npmjs.org/svelte/-/svelte-4.2.8.tgz",
|
||||
"integrity": "sha512-hU6dh1MPl8gh6klQZwK/n73GiAHiR95IkFsesLPbMeEZi36ydaXL/ZAb4g9sayT0MXzpxyZjR28yderJHxcmYA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@ampproject/remapping": "^2.2.1",
|
||||
|
|
@ -1496,7 +1473,7 @@
|
|||
"estree-walker": "^3.0.3",
|
||||
"is-reference": "^3.0.1",
|
||||
"locate-character": "^3.0.0",
|
||||
"magic-string": "^0.30.0",
|
||||
"magic-string": "^0.30.4",
|
||||
"periscopic": "^3.1.0"
|
||||
},
|
||||
"engines": {
|
||||
|
|
@ -1504,9 +1481,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/svelte-check": {
|
||||
"version": "3.4.4",
|
||||
"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.4.4.tgz",
|
||||
"integrity": "sha512-Uys9+R65cj8TmP8f5UpS7B2xKpNLYNxEWJsA5ZoKcWq/uwvABFF7xS6iPQGLoa7hxz0DS6xU60YFpmq06E4JxA==",
|
||||
"version": "3.6.2",
|
||||
"resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-3.6.2.tgz",
|
||||
"integrity": "sha512-E6iFh4aUCGJLRz6QZXH3gcN/VFfkzwtruWSRmlKrLWQTiO6VzLsivR6q02WYLGNAGecV3EocqZuCDrC2uttZ0g==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@jridgewell/trace-mapping": "^0.3.17",
|
||||
|
|
@ -1515,14 +1492,14 @@
|
|||
"import-fresh": "^3.2.1",
|
||||
"picocolors": "^1.0.0",
|
||||
"sade": "^1.7.4",
|
||||
"svelte-preprocess": "^5.0.3",
|
||||
"svelte-preprocess": "^5.1.0",
|
||||
"typescript": "^5.0.3"
|
||||
},
|
||||
"bin": {
|
||||
"svelte-check": "bin/svelte-check"
|
||||
},
|
||||
"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"
|
||||
}
|
||||
},
|
||||
"node_modules/svelte-hmr": {
|
||||
|
|
@ -1538,9 +1515,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/svelte-preprocess": {
|
||||
"version": "5.0.4",
|
||||
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.0.4.tgz",
|
||||
"integrity": "sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==",
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/svelte-preprocess/-/svelte-preprocess-5.1.1.tgz",
|
||||
"integrity": "sha512-p/Dp4hmrBW5mrCCq29lEMFpIJT2FZsRlouxEc5qpbOmXRbaFs7clLs8oKPwD3xCFyZfv1bIhvOzpQkhMEVQdMw==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
|
|
@ -1563,7 +1540,7 @@
|
|||
"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": {
|
||||
|
|
@ -1645,9 +1622,9 @@
|
|||
"dev": true
|
||||
},
|
||||
"node_modules/typescript": {
|
||||
"version": "5.1.6",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz",
|
||||
"integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==",
|
||||
"version": "5.3.3",
|
||||
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
|
||||
"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
|
||||
"dev": true,
|
||||
"bin": {
|
||||
"tsc": "bin/tsc",
|
||||
|
|
@ -1658,21 +1635,21 @@
|
|||
}
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "5.22.1",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.22.1.tgz",
|
||||
"integrity": "sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==",
|
||||
"version": "5.26.5",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz",
|
||||
"integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"busboy": "^1.6.0"
|
||||
"@fastify/busboy": "^2.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14.0"
|
||||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "4.3.9",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-4.3.9.tgz",
|
||||
"integrity": "sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==",
|
||||
"version": "4.5.1",
|
||||
"resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz",
|
||||
"integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"esbuild": "^0.17.5",
|
||||
|
|
@ -1718,12 +1695,12 @@
|
|||
}
|
||||
},
|
||||
"node_modules/vitefu": {
|
||||
"version": "0.2.4",
|
||||
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz",
|
||||
"integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==",
|
||||
"version": "0.2.5",
|
||||
"resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz",
|
||||
"integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==",
|
||||
"dev": true,
|
||||
"peerDependencies": {
|
||||
"vite": "^3.0.0 || ^4.0.0"
|
||||
"vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"vite": {
|
||||
|
|
|
|||
29
src/lib/Banner.svelte
Normal file
29
src/lib/Banner.svelte
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
<script>
|
||||
export let title = "Quartznet";
|
||||
</script>
|
||||
|
||||
<style>
|
||||
.overlay {
|
||||
display: flex;
|
||||
background-image: url("/img/bluenebula.webp");
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
min-height: 200px;
|
||||
text-align: center;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.title {
|
||||
display: inline-block;
|
||||
font-size: 3rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="overlay">
|
||||
<div class="description col-md-5">
|
||||
<h1 class="title">{title}</h1>
|
||||
<p>Software, Games, Science, Space!</p>
|
||||
</div>
|
||||
</div>
|
||||
274
src/lib/Modal.svelte
Normal file
274
src/lib/Modal.svelte
Normal file
|
|
@ -0,0 +1,274 @@
|
|||
<script lang="ts">
|
||||
//@ts-nocheck
|
||||
import {
|
||||
setContext as baseSetContext,
|
||||
createEventDispatcher,
|
||||
} from "svelte";
|
||||
import { fade } from "svelte/transition";
|
||||
|
||||
export let key = "simple-modal";
|
||||
export let closeButton = true;
|
||||
export let closeOnEsc = true;
|
||||
export let closeOnOuterClick = true;
|
||||
export let transitionBg = fade;
|
||||
export let transitionBgProps = { duration: 250 };
|
||||
export let transitionWindow = transitionBg;
|
||||
export let transitionWindowProps = transitionBgProps;
|
||||
export let styleBg = { top: 0, left: 0 };
|
||||
export let styleWindow = {};
|
||||
export let styleContent = {};
|
||||
export let setContext = baseSetContext;
|
||||
export let show: boolean = false;
|
||||
|
||||
let Component = null;
|
||||
let props = null;
|
||||
|
||||
let background;
|
||||
let wrap;
|
||||
let customStyleBg = {};
|
||||
let customStyleWindow = {};
|
||||
let customStyleContent = {};
|
||||
|
||||
let Callback = (props) => {};
|
||||
|
||||
$: Component,
|
||||
() => {
|
||||
show = !!Component;
|
||||
};
|
||||
|
||||
const dispatch = createEventDispatcher();
|
||||
|
||||
const camelCaseToDash = (str) =>
|
||||
str.replace(/([a-zA-Z])(?=[A-Z])/g, "$1-").toLowerCase();
|
||||
|
||||
const toCssString = (props) =>
|
||||
Object.keys(props).reduce(
|
||||
(str, key) => `${str}; ${camelCaseToDash(key)}: ${props[key]}`,
|
||||
""
|
||||
);
|
||||
|
||||
$: cssBg = toCssString(Object.assign({}, styleBg, customStyleBg));
|
||||
$: cssWindow = toCssString(
|
||||
Object.assign({}, styleWindow, customStyleWindow)
|
||||
);
|
||||
$: cssContent = toCssString(
|
||||
Object.assign({}, styleContent, customStyleContent)
|
||||
);
|
||||
|
||||
const open = (
|
||||
NewComponent,
|
||||
newProps = {},
|
||||
style = { bg: {}, window: {}, content: {} },
|
||||
newCallback = () => {}
|
||||
) => {
|
||||
Component = NewComponent;
|
||||
props = newProps;
|
||||
Callback = newCallback;
|
||||
customStyleBg = style.bg || {};
|
||||
customStyleWindow = style.window || {};
|
||||
customStyleContent = style.content || {};
|
||||
};
|
||||
|
||||
const close = () => {
|
||||
Callback(props);
|
||||
Component = null;
|
||||
props = null;
|
||||
customStyleBg = {};
|
||||
customStyleWindow = {};
|
||||
customStyleContent = {};
|
||||
};
|
||||
|
||||
const handleKeyup = ({ key }) => {
|
||||
if (closeOnEsc && Component && key === "Escape") {
|
||||
event.preventDefault();
|
||||
close();
|
||||
}
|
||||
};
|
||||
|
||||
const handleOuterClick = (event) => {
|
||||
if (
|
||||
closeOnOuterClick &&
|
||||
(event.target === background || event.target === wrap)
|
||||
) {
|
||||
event.preventDefault();
|
||||
close();
|
||||
}
|
||||
};
|
||||
|
||||
setContext(key, { open: show, close });
|
||||
</script>
|
||||
|
||||
<svelte:window on:keyup={handleKeyup} />
|
||||
|
||||
<div>
|
||||
{#if Component}
|
||||
<div
|
||||
class="bg"
|
||||
on:click={handleOuterClick}
|
||||
bind:this={background}
|
||||
transition:transitionBg={transitionBgProps}
|
||||
style={cssBg}
|
||||
>
|
||||
<div class="window-wrap" bind:this={wrap}>
|
||||
<div
|
||||
class="window"
|
||||
transition:transitionWindow={transitionWindowProps}
|
||||
style={cssWindow}
|
||||
>
|
||||
{#if closeButton}
|
||||
<button on:click={close} class="close" />
|
||||
{/if}
|
||||
<div class="content" style={cssContent}>
|
||||
<Component {...props} {close} />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<slot />
|
||||
</div>
|
||||
|
||||
<!--
|
||||
|
||||
** LICENSE **
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Fritz Lekschas
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
https://github.com/flekschas/svelte-simple-moda
|
||||
-->
|
||||
|
||||
<style>
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.bg {
|
||||
position: fixed;
|
||||
z-index: 1000;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
background: rgba(0, 0, 0, 0.66);
|
||||
}
|
||||
|
||||
.window-wrap {
|
||||
position: relative;
|
||||
margin: 2rem;
|
||||
max-height: 100%;
|
||||
}
|
||||
|
||||
.window {
|
||||
position: relative;
|
||||
width: 40rem;
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
margin: 2rem auto;
|
||||
color: black;
|
||||
border-radius: 0.5rem;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.content {
|
||||
position: relative;
|
||||
padding: 1rem;
|
||||
max-height: calc(100vh - 4rem);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.close {
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
z-index: 1000;
|
||||
top: 1rem;
|
||||
right: 1rem;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 1.5rem;
|
||||
height: 1.5rem;
|
||||
border: 0;
|
||||
color: black;
|
||||
border-radius: 1.5rem;
|
||||
background: white;
|
||||
box-shadow: 0 0 0 1px black;
|
||||
transition: transform 0.2s cubic-bezier(0.25, 0.1, 0.25, 1),
|
||||
background 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
.close:before,
|
||||
.close:after {
|
||||
content: "";
|
||||
display: block;
|
||||
box-sizing: border-box;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
width: 1rem;
|
||||
height: 1px;
|
||||
background: black;
|
||||
transform-origin: center;
|
||||
transition: height 0.2s cubic-bezier(0.25, 0.1, 0.25, 1),
|
||||
background 0.2s cubic-bezier(0.25, 0.1, 0.25, 1);
|
||||
}
|
||||
|
||||
.close:before {
|
||||
-webkit-transform: translate(0, -50%) rotate(45deg);
|
||||
-moz-transform: translate(0, -50%) rotate(45deg);
|
||||
transform: translate(0, -50%) rotate(45deg);
|
||||
left: 0.25rem;
|
||||
}
|
||||
|
||||
.close:after {
|
||||
-webkit-transform: translate(0, -50%) rotate(-45deg);
|
||||
-moz-transform: translate(0, -50%) rotate(-45deg);
|
||||
transform: translate(0, -50%) rotate(-45deg);
|
||||
left: 0.25rem;
|
||||
}
|
||||
|
||||
.close:hover {
|
||||
background: black;
|
||||
}
|
||||
|
||||
.close:hover:before,
|
||||
.close:hover:after {
|
||||
height: 2px;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.close:focus {
|
||||
border-color: #3399ff;
|
||||
box-shadow: 0 0 0 2px #3399ff;
|
||||
}
|
||||
|
||||
.close:active {
|
||||
transform: scale(0.9);
|
||||
}
|
||||
|
||||
.close:hover,
|
||||
.close:focus,
|
||||
.close:active {
|
||||
outline: none;
|
||||
}
|
||||
</style>
|
||||
53
src/lib/Nav.svelte
Normal file
53
src/lib/Nav.svelte
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
<style>
|
||||
a {
|
||||
font-size: 1rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
max-width: 1400px;
|
||||
margin: 0 auto;
|
||||
padding-left: 1rem;
|
||||
padding-right: 1rem;
|
||||
}
|
||||
|
||||
ul {
|
||||
display: flex;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
list-style: none;
|
||||
margin-top: 8px;
|
||||
margin-bottom: 8px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul li a {
|
||||
text-decoration: none;
|
||||
transition: color 0.1s linear;
|
||||
padding: 4px 12px;
|
||||
}
|
||||
|
||||
ul li a:hover {
|
||||
border-bottom: 2px solid var(--line-color);
|
||||
}
|
||||
</style>
|
||||
|
||||
<header>
|
||||
<nav>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/">Quartznet</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="/about">About</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="/admin">Admin</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
</header>
|
||||
56
src/lib/Sidebar.svelte
Normal file
56
src/lib/Sidebar.svelte
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
<script lang="ts">
|
||||
import { fly } from "svelte/transition";
|
||||
import Modal from "./Modal.svelte";
|
||||
|
||||
const click = () => {
|
||||
modal_show = true;
|
||||
show = false;
|
||||
};
|
||||
|
||||
function overlay_click(e: MouseEvent) {
|
||||
//@ts-ignore
|
||||
if ("close" in e.target.dataset) show = false;
|
||||
}
|
||||
|
||||
export let show = false;
|
||||
let modal_show = false;
|
||||
</script>
|
||||
|
||||
{#if show}
|
||||
<div class="overlay" data-close on:click={overlay_click}>
|
||||
<nav transition:fly={{ x: -250, opacity: 1 }}>
|
||||
<slot>
|
||||
<button on:click={click}>About</button>
|
||||
</slot>
|
||||
</nav>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<Modal bind:show={modal_show} />
|
||||
|
||||
<style>
|
||||
.overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background: rgba(0, 0, 0, 0);
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
nav {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
height: 100%;
|
||||
padding: 2rem 1rem 0.6rem;
|
||||
border-right: 1px solid #aaa;
|
||||
background: #fff;
|
||||
overflow-y: auto;
|
||||
width: 20rem;
|
||||
}
|
||||
</style>
|
||||
255
src/lib/SortableList.svelte
Normal file
255
src/lib/SortableList.svelte
Normal file
|
|
@ -0,0 +1,255 @@
|
|||
<script lang="ts">
|
||||
//@ts-nocheck
|
||||
import { quintOut } from "svelte/easing";
|
||||
import { crossfade } from "svelte/transition";
|
||||
import { flip } from "svelte/animate";
|
||||
// FLIP ANIMATION
|
||||
const [send, receive] = crossfade({
|
||||
duration: (d) => Math.sqrt(d * 200),
|
||||
fallback(node, params) {
|
||||
const style = getComputedStyle(node);
|
||||
const transform = style.transform === "none" ? "" : style.transform;
|
||||
return {
|
||||
duration: 600,
|
||||
easing: quintOut,
|
||||
css: (t) => `
|
||||
transform: ${transform} scale(${t});
|
||||
opacity: ${t}
|
||||
`,
|
||||
};
|
||||
},
|
||||
});
|
||||
// DRAG AND DROP
|
||||
let isOver = false;
|
||||
let isDragging = false;
|
||||
const getDraggedParent = (node) => {
|
||||
return node.dataset && node.dataset.index
|
||||
? node.dataset
|
||||
: getDraggedParent(node.parentNode);
|
||||
};
|
||||
const click = (ev) => {
|
||||
dispatch("slotclick", {
|
||||
source: ev.target.parentElement.dataset.index,
|
||||
sourceItem: list[ev.target.parentElement.dataset.index],
|
||||
});
|
||||
};
|
||||
const start = (ev) => {
|
||||
isDragging = true;
|
||||
ev.dataTransfer.setData("source", ev.target.dataset.index);
|
||||
};
|
||||
const over = (ev) => {
|
||||
ev.preventDefault();
|
||||
let dragged = getDraggedParent(ev.target);
|
||||
if (isOver !== dragged.id) isOver = JSON.parse(dragged.id);
|
||||
};
|
||||
const leave = (ev) => {
|
||||
let dragged = getDraggedParent(ev.target);
|
||||
if (isOver === dragged.id) isOver = false;
|
||||
};
|
||||
const drop = (ev) => {
|
||||
isOver = false;
|
||||
ev.preventDefault();
|
||||
let dragged = getDraggedParent(ev.target);
|
||||
let from = ev.dataTransfer.getData("source");
|
||||
let to = dragged.index;
|
||||
reorder({ from, to });
|
||||
isDragging = false;
|
||||
};
|
||||
// DISPATCH REORDER
|
||||
import {
|
||||
createEventDispatcher,
|
||||
onMount,
|
||||
afterUpdate,
|
||||
beforeUpdate,
|
||||
tick,
|
||||
} from "svelte";
|
||||
|
||||
const dispatch = createEventDispatcher();
|
||||
const reorder = ({ from, to }) => {
|
||||
let newList = [...list];
|
||||
let temp = newList[from];
|
||||
newList[from] = newList[to];
|
||||
newList[to] = temp;
|
||||
//newList[from] = [newList[to], (newList[to] = newList[from])][0];
|
||||
dispatch("sort", { data: newList, from: from, to: to });
|
||||
};
|
||||
// UTILS
|
||||
const getKey = (item) => (key ? item[key] : item);
|
||||
|
||||
type ListItem = {
|
||||
displayTileSize: number;
|
||||
endsGroup: boolean;
|
||||
startsNewGroup: boolean;
|
||||
};
|
||||
// PROPS
|
||||
export let list: ListItem[][];
|
||||
export let key;
|
||||
export let ulclass;
|
||||
|
||||
export let breakon: string | null = null;
|
||||
|
||||
export let breakComponent;
|
||||
// return `<><li class='${breakClass}' style='height:100%; grid-column: span 5;'><div style='width:100%;height:inherit;'></li>`;
|
||||
|
||||
// export let breakPosition = "beforebegin";
|
||||
let breakClass = "group-break";
|
||||
|
||||
const Elements = () => document.getElementsByClassName(key);
|
||||
|
||||
const removeOldBreaks = (parent) => {
|
||||
if (breakon == null) return;
|
||||
if (isDragging) return;
|
||||
|
||||
if (parent.length) {
|
||||
const old = parent[0].getElementsByClassName(breakClass);
|
||||
|
||||
for (let i = 0; i < old.length; i = 0) {
|
||||
old[i].remove(); // removing the node from the DOM also removes it from this array (WTF??)
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
let lastCollection;
|
||||
|
||||
let updatingBreakPoints = false;
|
||||
|
||||
const updateBreak = () => {
|
||||
if (isDragging || updatingBreakPoints) return;
|
||||
if (breakon == null) return;
|
||||
|
||||
try {
|
||||
updatingBreakPoints = true;
|
||||
|
||||
let breaks = 0;
|
||||
let last = null;
|
||||
let carry = 0;
|
||||
let elements = Elements();
|
||||
|
||||
for (let x = 0; x < list.length; x++) {
|
||||
if (last != null) {
|
||||
if (list[x][breakon] > last) {
|
||||
if (elements.length) {
|
||||
let targetIndex = x + breaks;
|
||||
|
||||
if (
|
||||
list.length !==
|
||||
elements[0].children.length - breaks
|
||||
) {
|
||||
if (lastCollection)
|
||||
if (lastCollection.length)
|
||||
targetIndex += lastCollection.length;
|
||||
}
|
||||
// elements[0].children[targetIndex].insertAdjacentHTML(breakPosition, breakHtml(carry + 1));
|
||||
breaks++;
|
||||
carry = 0;
|
||||
}
|
||||
} else {
|
||||
carry++;
|
||||
}
|
||||
}
|
||||
|
||||
last = list[x][breakon] > last ? list[x][breakon] : last;
|
||||
}
|
||||
|
||||
lastCollection = list;
|
||||
} finally {
|
||||
updatingBreakPoints = false;
|
||||
}
|
||||
};
|
||||
|
||||
//beforeUpdate(() => {updateBreak()});
|
||||
|
||||
let updating = false;
|
||||
|
||||
afterUpdate(async () => {
|
||||
if (isDragging) return;
|
||||
if (breakon == null) return;
|
||||
|
||||
updating = true;
|
||||
removeOldBreaks(Elements());
|
||||
await tick();
|
||||
updateBreak();
|
||||
|
||||
updating = false;
|
||||
});
|
||||
|
||||
const getClass = () => {
|
||||
let ret = "";
|
||||
if (key) ret += ` ${key}`;
|
||||
if (ulclass) ret += ` ${ulclass}`;
|
||||
|
||||
return ret;
|
||||
};
|
||||
</script>
|
||||
|
||||
{#if list && list.length}
|
||||
<ul class={getClass()}>
|
||||
{#each list as item, index (getKey(item))}
|
||||
<li
|
||||
class:small={item.displayTileSize === 2}
|
||||
class:medium={item.displayTileSize === 3}
|
||||
class:large={item.displayTileSize === 4}
|
||||
class:startsNewGroup={item.startsNewGroup}
|
||||
class:endsGroup={item.endsGroup}
|
||||
data-index={index}
|
||||
data-item={JSON.stringify(item)}
|
||||
data-id={JSON.stringify(getKey(item))}
|
||||
draggable="true"
|
||||
on:dragstart={start}
|
||||
on:dragover={over}
|
||||
on:dragleave={leave}
|
||||
on:drop={drop}
|
||||
on:click={click}
|
||||
in:receive={{ key: getKey(item) }}
|
||||
out:send={{ key: getKey(item) }}
|
||||
animate:flip={{ duration: 300 }}
|
||||
class:over={getKey(item) === isOver}
|
||||
>
|
||||
<slot {item} {index}>
|
||||
<p>{getKey(item)}</p>
|
||||
</slot>
|
||||
</li>
|
||||
{/each}
|
||||
</ul>
|
||||
{/if}
|
||||
|
||||
<style>
|
||||
ul {
|
||||
display: inline-grid;
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
border: 2px dotted transparent;
|
||||
transition: border 0.1s linear;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
margin: 0.5%;
|
||||
}
|
||||
|
||||
.startsNewGroup {
|
||||
grid-column-start: 1;
|
||||
}
|
||||
|
||||
.small {
|
||||
grid-column-end: span 1;
|
||||
grid-row: span 1;
|
||||
}
|
||||
|
||||
.medium {
|
||||
grid-column-end: span 2;
|
||||
grid-row: span 1;
|
||||
}
|
||||
|
||||
.large {
|
||||
grid-column-end: span 2;
|
||||
/*grid-row: span 2; large buttons are double height, but they also push the row below them down (they dont fit around eachother like css-grid) */
|
||||
}
|
||||
|
||||
.over {
|
||||
border-color: rgba(48, 12, 200, 0.2);
|
||||
}
|
||||
</style>
|
||||
43
src/lib/Thumbnail.svelte
Normal file
43
src/lib/Thumbnail.svelte
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
<script lang="ts">
|
||||
export let name: string;
|
||||
export let link: string;
|
||||
export let img = "https://placehold.it/600x300";
|
||||
export let size = { width: 600, height: 300 };
|
||||
export let description: string;
|
||||
</script>
|
||||
|
||||
<div class="card">
|
||||
<div class="back">
|
||||
<a href={link}>
|
||||
<img src={img} alt={name} width={size.width} height={size.height} />
|
||||
</a>
|
||||
</div>
|
||||
<div class="description">
|
||||
<h2>{name}</h2>
|
||||
<p>{description}</p>
|
||||
</div>
|
||||
</div>
|
||||
<br />
|
||||
|
||||
<style>
|
||||
.card {
|
||||
display: flex;
|
||||
gap: 2.5rem;
|
||||
}
|
||||
|
||||
.back a img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.description {
|
||||
width: 500px;
|
||||
}
|
||||
|
||||
@media screen and (max-width: 978px) {
|
||||
.card {
|
||||
flex-wrap: wrap;
|
||||
gap: 0.25rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
16
src/lib/UserManager.svelte
Normal file
16
src/lib/UserManager.svelte
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
<script>
|
||||
export const name = "%USER%";
|
||||
export let icon;
|
||||
export let onClick;
|
||||
</script>
|
||||
|
||||
<style>
|
||||
img {
|
||||
display: inline-block;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
<a href="/admin">Admin</a>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<script lang="ts">
|
||||
import { page } from "$app/stores";
|
||||
import { onMount } from "svelte";
|
||||
import Banner from "../components/Banner.svelte";
|
||||
import Banner from "$lib/Banner.svelte";
|
||||
|
||||
const status = $page.status?.toString() ?? "";
|
||||
const dev = process.env.NODE_ENV === "development";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script>
|
||||
import Nav from '../components/Nav.svelte';
|
||||
import Modal from '../components/Modal.svelte'
|
||||
import Nav from '$lib/Nav.svelte';
|
||||
import Modal from '$lib/Modal.svelte'
|
||||
</script>
|
||||
|
||||
<style>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<script>
|
||||
import {onMount} from 'svelte';
|
||||
import Thumb from '../components/Thumbnail.svelte'
|
||||
import Banner from '../components/Banner.svelte'
|
||||
import Thumb from '$lib/Thumbnail.svelte'
|
||||
import Banner from '$lib/Banner.svelte'
|
||||
|
||||
let games = [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
import Banner from '../../components/Banner.svelte'
|
||||
import Banner from '$lib/Banner.svelte'
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
import Banner from '../../components/Banner.svelte'
|
||||
import Banner from '$lib/Banner.svelte'
|
||||
|
||||
let services = [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script>
|
||||
import Banner from '../../components/Banner.svelte'
|
||||
|
||||
import Banner from '$lib/Banner.svelte'
|
||||
|
||||
let username = "";
|
||||
let password = "";
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
import Banner from '../../components/Banner.svelte'
|
||||
import Banner from '$lib/Banner.svelte'
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
|
|
|
|||
Loading…
Reference in a new issue