diff --git a/frontend/package.json b/frontend/package.json index 4653c62..d0cc3e1 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -26,8 +26,8 @@ "@simplewebauthn/browser": "^13.2.0", "@sveltejs/adapter-auto": "^6.1.0", "@sveltejs/adapter-node": "^5.3.2", - "@sveltejs/kit": "^2.0.0", - "@sveltejs/vite-plugin-svelte": "^3.1.0", + "@sveltejs/kit": "^2.5.27", + "@sveltejs/vite-plugin-svelte": "^6.2.0", "@tailwindcss/postcss": "^4.1.13", "@tailwindcss/typography": "^0.5.18", "@types/canvas-confetti": "^1.9.0", @@ -44,6 +44,7 @@ "@uppy/drag-drop": "^4.2.2", "@uppy/drop-target": "^3.2.2", "@uppy/image-editor": "^3.4.2", + "@uppy/progress-bar": "^4.3.2", "@uppy/status-bar": "^4.2.3", "@uppy/svelte": "^4.6.2", "@uppy/xhr-upload": "^4.4.2", @@ -77,7 +78,7 @@ "qrcode": "^1.5.4", "sass": "^1.93.0", "socket.io-client": "^4.8.1", - "svelte": "^4.2.20", + "svelte": "^5.0.0", "svelte-check": "^4.3.1", "svelte-preprocess": "^6.0.3", "svelte-range-slider-pips": "^4.0.7", @@ -88,9 +89,9 @@ "tinykeys": "^3.0.0", "tippy.js": "^6.3.7", "tslib": "^2.8.1", - "typescript": "~5.0.4", + "typescript": "^5.5.0", "ua-parser-js": "^2.0.5", - "vite": "^5.0.0", + "vite": "^7.1.6", "vite-plugin-cross-origin-isolation": "^0.1.6", "vite-plugin-iso-import": "^1.3.0", "yup": "^1.7.0" diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index f4d153e..a629299 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -36,16 +36,16 @@ importers: version: 13.2.0 '@sveltejs/adapter-auto': specifier: ^6.1.0 - version: 6.1.0(@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0))) + version: 6.1.0(@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1))) '@sveltejs/adapter-node': specifier: ^5.3.2 - version: 5.3.2(@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0))) + version: 5.3.2(@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1))) '@sveltejs/kit': - specifier: ^2.0.0 - version: 2.42.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)) + specifier: ^2.5.27 + version: 2.42.2(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)) '@sveltejs/vite-plugin-svelte': - specifier: ^3.1.0 - version: 3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)) + specifier: ^6.2.0 + version: 6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)) '@tailwindcss/postcss': specifier: ^4.1.13 version: 4.1.13 @@ -72,10 +72,10 @@ importers: version: 0.7.39 '@typescript-eslint/eslint-plugin': specifier: ^8.44.0 - version: 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4))(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4) + version: 8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/parser': specifier: ^8.44.0 - version: 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4) + version: 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) '@uppy/compressor': specifier: ^2.3.2 version: 2.3.2(@uppy/core@4.5.3) @@ -94,12 +94,15 @@ importers: '@uppy/image-editor': specifier: ^3.4.2 version: 3.4.2(@uppy/core@4.5.3) + '@uppy/progress-bar': + specifier: ^4.3.2 + version: 4.3.2(@uppy/core@4.5.3) '@uppy/status-bar': specifier: ^4.2.3 version: 4.2.3(@uppy/core@4.5.3) '@uppy/svelte': specifier: ^4.6.2 - version: 4.6.2(@uppy/core@4.5.3)(@uppy/dashboard@4.4.3(@uppy/core@4.5.3))(@uppy/drag-drop@4.2.2(@uppy/core@4.5.3))(@uppy/status-bar@4.2.3(@uppy/core@4.5.3))(svelte@4.2.20) + version: 4.6.2(@uppy/core@4.5.3)(@uppy/dashboard@4.4.3(@uppy/core@4.5.3))(@uppy/drag-drop@4.2.2(@uppy/core@4.5.3))(@uppy/progress-bar@4.3.2(@uppy/core@4.5.3))(@uppy/status-bar@4.2.3(@uppy/core@4.5.3))(svelte@5.39.3) '@uppy/xhr-upload': specifier: ^4.4.2 version: 4.4.2(@uppy/core@4.5.3) @@ -132,7 +135,7 @@ importers: version: 10.1.8(eslint@9.36.0(jiti@2.5.1)) felte: specifier: ^1.3.0 - version: 1.3.0(svelte@4.2.20) + version: 1.3.0(svelte@5.39.3) fuse.js: specifier: ^7.1.0 version: 7.1.0 @@ -141,7 +144,7 @@ importers: version: 11.11.1 i18next: specifier: ^25.5.2 - version: 25.5.2(typescript@5.0.4) + version: 25.5.2(typescript@5.9.2) i18next-browser-languagedetector: specifier: ^8.2.0 version: 8.2.0 @@ -159,7 +162,7 @@ importers: version: 16.3.0 mdsvex: specifier: ^0.12.6 - version: 0.12.6(svelte@4.2.20) + version: 0.12.6(svelte@5.39.3) minisearch: specifier: ^7.2.0 version: 7.2.0 @@ -183,7 +186,7 @@ importers: version: 3.6.2 prettier-plugin-svelte: specifier: ^3.4.0 - version: 3.4.0(prettier@3.6.2)(svelte@4.2.20) + version: 3.4.0(prettier@3.6.2)(svelte@5.39.3) qrcode: specifier: ^1.5.4 version: 1.5.4 @@ -194,17 +197,17 @@ importers: specifier: ^4.8.1 version: 4.8.1 svelte: - specifier: ^4.2.20 - version: 4.2.20 + specifier: ^5.0.0 + version: 5.39.3 svelte-check: specifier: ^4.3.1 - version: 4.3.1(picomatch@4.0.3)(svelte@4.2.20)(typescript@5.0.4) + version: 4.3.1(picomatch@4.0.3)(svelte@5.39.3)(typescript@5.9.2) svelte-preprocess: specifier: ^6.0.3 - version: 6.0.3(postcss-load-config@6.0.1(jiti@2.5.1)(postcss@8.5.6)(yaml@2.8.1))(postcss@8.5.6)(sass@1.93.0)(svelte@4.2.20)(typescript@5.0.4) + version: 6.0.3(postcss-load-config@6.0.1(jiti@2.5.1)(postcss@8.5.6)(yaml@2.8.1))(postcss@8.5.6)(sass@1.93.0)(svelte@5.39.3)(typescript@5.9.2) svelte-range-slider-pips: specifier: ^4.0.7 - version: 4.0.7(svelte@4.2.20) + version: 4.0.7(svelte@5.39.3) svelte-tippy: specifier: ^1.3.2 version: 1.3.2 @@ -227,20 +230,20 @@ importers: specifier: ^2.8.1 version: 2.8.1 typescript: - specifier: ~5.0.4 - version: 5.0.4 + specifier: ^5.5.0 + version: 5.9.2 ua-parser-js: specifier: ^2.0.5 version: 2.0.5 vite: - specifier: ^5.0.0 - version: 5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0) + specifier: ^7.1.6 + version: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1) vite-plugin-cross-origin-isolation: specifier: ^0.1.6 version: 0.1.6 vite-plugin-iso-import: specifier: ^1.3.0 - version: 1.3.0(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)) + version: 1.3.0(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)) yup: specifier: ^1.7.0 version: 1.7.0 @@ -253,13 +256,6 @@ packages: } engines: { node: '>=10' } - '@ampproject/remapping@2.3.0': - resolution: - { - integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== - } - engines: { node: '>=6.0.0' } - '@babel/runtime@7.28.4': resolution: { @@ -633,210 +629,237 @@ packages: integrity: sha512-F5+PEunszKRIHgXh1oOKpsQdUaCRSEXmkceAmKuAAE3a/7K5xbmno43N+36rVQApqE5oejLOYqd/hGg5d6Ei8g== } - '@esbuild/aix-ppc64@0.21.5': + '@esbuild/aix-ppc64@0.25.10': resolution: { - integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== + integrity: sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [ppc64] os: [aix] - '@esbuild/android-arm64@0.21.5': + '@esbuild/android-arm64@0.25.10': resolution: { - integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== + integrity: sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm64] os: [android] - '@esbuild/android-arm@0.21.5': + '@esbuild/android-arm@0.25.10': resolution: { - integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== + integrity: sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm] os: [android] - '@esbuild/android-x64@0.21.5': + '@esbuild/android-x64@0.25.10': resolution: { - integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== + integrity: sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [android] - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/darwin-arm64@0.25.10': resolution: { - integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== + integrity: sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm64] os: [darwin] - '@esbuild/darwin-x64@0.21.5': + '@esbuild/darwin-x64@0.25.10': resolution: { - integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== + integrity: sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [darwin] - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/freebsd-arm64@0.25.10': resolution: { - integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== + integrity: sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm64] os: [freebsd] - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/freebsd-x64@0.25.10': resolution: { - integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== + integrity: sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [freebsd] - '@esbuild/linux-arm64@0.21.5': + '@esbuild/linux-arm64@0.25.10': resolution: { - integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== + integrity: sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm64] os: [linux] - '@esbuild/linux-arm@0.21.5': + '@esbuild/linux-arm@0.25.10': resolution: { - integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== + integrity: sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm] os: [linux] - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-ia32@0.25.10': resolution: { - integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== + integrity: sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [ia32] os: [linux] - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-loong64@0.25.10': resolution: { - integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== + integrity: sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [loong64] os: [linux] - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-mips64el@0.25.10': resolution: { - integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== + integrity: sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [mips64el] os: [linux] - '@esbuild/linux-ppc64@0.21.5': + '@esbuild/linux-ppc64@0.25.10': resolution: { - integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== + integrity: sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [ppc64] os: [linux] - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-riscv64@0.25.10': resolution: { - integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== + integrity: sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [riscv64] os: [linux] - '@esbuild/linux-s390x@0.21.5': + '@esbuild/linux-s390x@0.25.10': resolution: { - integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== + integrity: sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [s390x] os: [linux] - '@esbuild/linux-x64@0.21.5': + '@esbuild/linux-x64@0.25.10': resolution: { - integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== + integrity: sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [linux] - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/netbsd-arm64@0.25.10': resolution: { - integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== + integrity: sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A== } - engines: { node: '>=12' } + engines: { node: '>=18' } + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.25.10': + resolution: + { + integrity: sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig== + } + engines: { node: '>=18' } cpu: [x64] os: [netbsd] - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/openbsd-arm64@0.25.10': resolution: { - integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== + integrity: sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw== } - engines: { node: '>=12' } + engines: { node: '>=18' } + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.25.10': + resolution: + { + integrity: sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw== + } + engines: { node: '>=18' } cpu: [x64] os: [openbsd] - '@esbuild/sunos-x64@0.21.5': + '@esbuild/openharmony-arm64@0.25.10': resolution: { - integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== + integrity: sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag== } - engines: { node: '>=12' } + engines: { node: '>=18' } + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.25.10': + resolution: + { + integrity: sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ== + } + engines: { node: '>=18' } cpu: [x64] os: [sunos] - '@esbuild/win32-arm64@0.21.5': + '@esbuild/win32-arm64@0.25.10': resolution: { - integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== + integrity: sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [arm64] os: [win32] - '@esbuild/win32-ia32@0.21.5': + '@esbuild/win32-ia32@0.25.10': resolution: { - integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== + integrity: sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [ia32] os: [win32] - '@esbuild/win32-x64@0.21.5': + '@esbuild/win32-x64@0.25.10': resolution: { - integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== + integrity: sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw== } - engines: { node: '>=12' } + engines: { node: '>=18' } cpu: [x64] os: [win32] @@ -1553,26 +1576,26 @@ packages: '@opentelemetry/api': optional: true - '@sveltejs/vite-plugin-svelte-inspector@2.1.0': + '@sveltejs/vite-plugin-svelte-inspector@5.0.1': resolution: { - integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg== + integrity: sha512-ubWshlMk4bc8mkwWbg6vNvCeT7lGQojE3ijDh3QTR6Zr/R+GXxsGbyH4PExEPpiFmqPhYiVSVmHBjUcVc1JIrA== } - engines: { node: ^18.0.0 || >=20 } + engines: { node: ^20.19 || ^22.12 || >=24 } peerDependencies: - '@sveltejs/vite-plugin-svelte': ^3.0.0 - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + '@sveltejs/vite-plugin-svelte': ^6.0.0-next.0 + svelte: ^5.0.0 + vite: ^6.3.0 || ^7.0.0 - '@sveltejs/vite-plugin-svelte@3.1.2': + '@sveltejs/vite-plugin-svelte@6.2.0': resolution: { - integrity: sha512-Txsm1tJvtiYeLUVRNqxZGKR/mI+CzuIQuc2gn+YCs9rMTowpNZ2Nqt53JdL8KF9bLhAf2ruR/dr9eZCwdTriRA== + integrity: sha512-nJsV36+o7rZUDlrnSduMNl11+RoDE1cKqOI0yUEBCcqFoAZOk47TwD3dPKS2WmRutke9StXnzsPBslY7prDM9w== } - engines: { node: ^18.0.0 || >=20 } + engines: { node: ^20.19 || ^22.12 || >=24 } peerDependencies: - svelte: ^4.0.0 || ^5.0.0-next.0 - vite: ^5.0.0 + svelte: ^5.0.0 + vite: ^6.3.0 || ^7.0.0 '@tailwindcss/node@4.1.13': resolution: @@ -2066,6 +2089,14 @@ packages: peerDependencies: '@uppy/core': ^4.5.2 + '@uppy/progress-bar@4.3.2': + resolution: + { + integrity: sha512-5BOhq49xPpBTlEVsEIRLkV+Hgb0qTuey8XKyrmrSetcgtolKLwtlDjrOWmUcxGYI3bkMbdeJulF9aiR8sSqQ6A== + } + peerDependencies: + '@uppy/core': ^4.5.2 + '@uppy/provider-views@4.5.3': resolution: { @@ -2418,12 +2449,6 @@ packages: } engines: { node: '>=6' } - code-red@1.0.4: - resolution: - { - integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw== - } - color-convert@2.0.1: resolution: { @@ -2549,13 +2574,6 @@ packages: } engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0' } - css-tree@2.3.1: - resolution: - { - integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw== - } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } - css-tree@3.1.0: resolution: { @@ -2796,12 +2814,12 @@ packages: integrity: sha512-z9V0qU4lx1TBXDNFWfAASWk6RNU6c6+TJBKE+FLIg8u0XJ6Yw58Hi0yX8ftEouj6p1QARRlXLFfHbIli93BdQQ== } - esbuild@0.21.5: + esbuild@0.25.10: resolution: { - integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw== + integrity: sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ== } - engines: { node: '>=12' } + engines: { node: '>=18' } hasBin: true escalade@3.2.0: @@ -2888,6 +2906,12 @@ packages: } engines: { node: '>=0.10' } + esrap@2.1.0: + resolution: + { + integrity: sha512-yzmPNpl7TBbMRC5Lj2JlJZNPml0tzqoqP5B1JXycNUwtqma9AKCO0M2wHrdgsHcy1WRW7S9rJknAMtByg3usgA== + } + esrecurse@4.3.0: resolution: { @@ -2908,12 +2932,6 @@ packages: integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== } - estree-walker@3.0.3: - resolution: - { - integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== - } - esutils@2.0.3: resolution: { @@ -3701,12 +3719,6 @@ packages: integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g== } - mdn-data@2.0.30: - resolution: - { - integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== - } - mdn-data@2.12.2: resolution: { @@ -4113,12 +4125,6 @@ packages: integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== } - periscopic@3.1.0: - resolution: - { - integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw== - } - picocolors@1.1.1: resolution: { @@ -4841,15 +4847,6 @@ packages: svelte: ^4.0.0 || ^5.0.0-next.0 typescript: '>=5.0.0' - svelte-hmr@0.16.0: - resolution: - { - integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA== - } - engines: { node: ^12.20 || ^14.13.1 || >= 16 } - peerDependencies: - svelte: ^3.19.0 || ^4.0.0 - svelte-preprocess@6.0.3: resolution: { @@ -4904,12 +4901,12 @@ packages: integrity: sha512-41f+85hwhKBRqX0UNYrgFsi34Kk/KDvUkIZXYANxkWoA2NTVTCZbUC2J8hRNZ4TRVxObTshoZRjK2co5+i6LMw== } - svelte@4.2.20: + svelte@5.39.3: resolution: { - integrity: sha512-eeEgGc2DtiUil5ANdtd8vPwt9AgaMdnuUFnPft9F5oMvU/FHu5IHFic+p1dR/UOB7XU2mX2yHW+NcTch4DCh5Q== + integrity: sha512-7Jwus6iXviGZAvhqbeYu3NNHA6LGyQ8EbmjdAhJUDade5rrW6g9VnBbRhUuYX4pMZLHozijsFolt88zvKPfsbQ== } - engines: { node: '>=16' } + engines: { node: '>=18' } svgo@4.0.0: resolution: @@ -4958,6 +4955,13 @@ packages: integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q== } + tinyglobby@0.2.15: + resolution: + { + integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + } + engines: { node: '>=12.0.0' } + tinykeys@3.0.0: resolution: { @@ -5037,12 +5041,12 @@ packages: } engines: { node: '>=12.20' } - typescript@5.0.4: + typescript@5.9.2: resolution: { - integrity: sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== + integrity: sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A== } - engines: { node: '>=12.20' } + engines: { node: '>=14.17' } hasBin: true ua-is-frozen@0.1.2: @@ -5196,25 +5200,30 @@ packages: peerDependencies: vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 - vite@5.4.20: + vite@7.1.6: resolution: { - integrity: sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g== + integrity: sha512-SRYIB8t/isTwNn8vMB3MR6E+EQZM/WG1aKmmIUCfDXfVvKfc20ZpamngWHKzAmmu9ppsgxsg4b2I7c90JZudIQ== } - engines: { node: ^18.0.0 || >=20.0.0 } + engines: { node: ^20.19.0 || >=22.12.0 } hasBin: true peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 peerDependenciesMeta: '@types/node': optional: true + jiti: + optional: true less: optional: true lightningcss: @@ -5229,14 +5238,18 @@ packages: optional: true terser: optional: true + tsx: + optional: true + yaml: + optional: true - vitefu@0.2.5: + vitefu@1.1.1: resolution: { - integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q== + integrity: sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ== } peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0 peerDependenciesMeta: vite: optional: true @@ -5351,6 +5364,12 @@ packages: integrity: sha512-VJce62dBd+JQvoc+fCVq+KZfPHr+hXaxCcVgotfwWvlR0Ja3ffYKaJBT8rptPOSKOGJDCUnW2C2JWpud7aRP6Q== } + zimmerframe@1.1.4: + resolution: + { + integrity: sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ== + } + zwitch@2.0.4: resolution: { @@ -5360,11 +5379,6 @@ packages: snapshots: '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@babel/runtime@7.28.4': {} '@ckeditor/ckeditor5-adapter-ckfinder@46.1.1': @@ -5475,6 +5489,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 46.1.1 '@ckeditor/ckeditor5-widget': 46.1.1 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-cloud-services@46.1.1': dependencies: @@ -6009,73 +6025,82 @@ snapshots: ckeditor5: 46.1.1 es-toolkit: 1.39.5 - '@esbuild/aix-ppc64@0.21.5': + '@esbuild/aix-ppc64@0.25.10': optional: true - '@esbuild/android-arm64@0.21.5': + '@esbuild/android-arm64@0.25.10': optional: true - '@esbuild/android-arm@0.21.5': + '@esbuild/android-arm@0.25.10': optional: true - '@esbuild/android-x64@0.21.5': + '@esbuild/android-x64@0.25.10': optional: true - '@esbuild/darwin-arm64@0.21.5': + '@esbuild/darwin-arm64@0.25.10': optional: true - '@esbuild/darwin-x64@0.21.5': + '@esbuild/darwin-x64@0.25.10': optional: true - '@esbuild/freebsd-arm64@0.21.5': + '@esbuild/freebsd-arm64@0.25.10': optional: true - '@esbuild/freebsd-x64@0.21.5': + '@esbuild/freebsd-x64@0.25.10': optional: true - '@esbuild/linux-arm64@0.21.5': + '@esbuild/linux-arm64@0.25.10': optional: true - '@esbuild/linux-arm@0.21.5': + '@esbuild/linux-arm@0.25.10': optional: true - '@esbuild/linux-ia32@0.21.5': + '@esbuild/linux-ia32@0.25.10': optional: true - '@esbuild/linux-loong64@0.21.5': + '@esbuild/linux-loong64@0.25.10': optional: true - '@esbuild/linux-mips64el@0.21.5': + '@esbuild/linux-mips64el@0.25.10': optional: true - '@esbuild/linux-ppc64@0.21.5': + '@esbuild/linux-ppc64@0.25.10': optional: true - '@esbuild/linux-riscv64@0.21.5': + '@esbuild/linux-riscv64@0.25.10': optional: true - '@esbuild/linux-s390x@0.21.5': + '@esbuild/linux-s390x@0.25.10': optional: true - '@esbuild/linux-x64@0.21.5': + '@esbuild/linux-x64@0.25.10': optional: true - '@esbuild/netbsd-x64@0.21.5': + '@esbuild/netbsd-arm64@0.25.10': optional: true - '@esbuild/openbsd-x64@0.21.5': + '@esbuild/netbsd-x64@0.25.10': optional: true - '@esbuild/sunos-x64@0.21.5': + '@esbuild/openbsd-arm64@0.25.10': optional: true - '@esbuild/win32-arm64@0.21.5': + '@esbuild/openbsd-x64@0.25.10': optional: true - '@esbuild/win32-ia32@0.21.5': + '@esbuild/openharmony-arm64@0.25.10': optional: true - '@esbuild/win32-x64@0.21.5': + '@esbuild/sunos-x64@0.25.10': + optional: true + + '@esbuild/win32-arm64@0.25.10': + optional: true + + '@esbuild/win32-ia32@0.25.10': + optional: true + + '@esbuild/win32-x64@0.25.10': optional: true '@eslint-community/eslint-utils@4.9.0(eslint@9.36.0(jiti@2.5.1))': @@ -6422,23 +6447,23 @@ snapshots: dependencies: acorn: 8.15.0 - '@sveltejs/adapter-auto@6.1.0(@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))': + '@sveltejs/adapter-auto@6.1.0(@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))': dependencies: - '@sveltejs/kit': 2.42.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)) + '@sveltejs/kit': 2.42.2(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)) - '@sveltejs/adapter-node@5.3.2(@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))': + '@sveltejs/adapter-node@5.3.2(@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))': dependencies: '@rollup/plugin-commonjs': 28.0.6(rollup@4.52.0) '@rollup/plugin-json': 6.1.0(rollup@4.52.0) '@rollup/plugin-node-resolve': 16.0.1(rollup@4.52.0) - '@sveltejs/kit': 2.42.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)) + '@sveltejs/kit': 2.42.2(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)) rollup: 4.52.0 - '@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0))': + '@sveltejs/kit@2.42.2(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1))': dependencies: '@standard-schema/spec': 1.0.0 '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)) + '@sveltejs/vite-plugin-svelte': 6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)) '@types/cookie': 0.6.0 acorn: 8.15.0 cookie: 0.6.0 @@ -6450,29 +6475,27 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.7.1 sirv: 3.0.2 - svelte: 4.2.20 - vite: 5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0) + svelte: 5.39.3 + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1) - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0))': + '@sveltejs/vite-plugin-svelte-inspector@5.0.1(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)) + '@sveltejs/vite-plugin-svelte': 6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)) debug: 4.4.3 - svelte: 4.2.20 - vite: 5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0) + svelte: 5.39.3 + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0))': + '@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)))(svelte@4.2.20)(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)) + '@sveltejs/vite-plugin-svelte-inspector': 5.0.1(@sveltejs/vite-plugin-svelte@6.2.0(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)))(svelte@5.39.3)(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)) debug: 4.4.3 deepmerge: 4.3.1 - kleur: 4.1.5 magic-string: 0.30.19 - svelte: 4.2.20 - svelte-hmr: 0.16.0(svelte@4.2.20) - vite: 5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0) - vitefu: 0.2.5(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)) + svelte: 5.39.3 + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1) + vitefu: 1.1.1(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)) transitivePeerDependencies: - supports-color @@ -6610,41 +6633,41 @@ snapshots: '@types/unist@3.0.3': {} - '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4))(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4)': + '@typescript-eslint/eslint-plugin@8.44.0(@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4) + '@typescript-eslint/parser': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.44.0 - '@typescript-eslint/type-utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4) + '@typescript-eslint/type-utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.44.0 eslint: 9.36.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.0.4) - typescript: 5.0.4 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4)': + '@typescript-eslint/parser@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.44.0 '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.44.0 debug: 4.4.3 eslint: 9.36.0(jiti@2.5.1) - typescript: 5.0.4 + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.44.0(typescript@5.0.4)': + '@typescript-eslint/project-service@8.44.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.0.4) + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) '@typescript-eslint/types': 8.44.0 debug: 4.4.3 - typescript: 5.0.4 + typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -6653,28 +6676,28 @@ snapshots: '@typescript-eslint/types': 8.44.0 '@typescript-eslint/visitor-keys': 8.44.0 - '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.0.4)': + '@typescript-eslint/tsconfig-utils@8.44.0(typescript@5.9.2)': dependencies: - typescript: 5.0.4 + typescript: 5.9.2 - '@typescript-eslint/type-utils@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4)': + '@typescript-eslint/type-utils@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.0.4) - '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) + '@typescript-eslint/utils': 8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.3 eslint: 9.36.0(jiti@2.5.1) - ts-api-utils: 2.1.0(typescript@5.0.4) - typescript: 5.0.4 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color '@typescript-eslint/types@8.44.0': {} - '@typescript-eslint/typescript-estree@8.44.0(typescript@5.0.4)': + '@typescript-eslint/typescript-estree@8.44.0(typescript@5.9.2)': dependencies: - '@typescript-eslint/project-service': 8.44.0(typescript@5.0.4) - '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.0.4) + '@typescript-eslint/project-service': 8.44.0(typescript@5.9.2) + '@typescript-eslint/tsconfig-utils': 8.44.0(typescript@5.9.2) '@typescript-eslint/types': 8.44.0 '@typescript-eslint/visitor-keys': 8.44.0 debug: 4.4.3 @@ -6682,19 +6705,19 @@ snapshots: is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.2 - ts-api-utils: 2.1.0(typescript@5.0.4) - typescript: 5.0.4 + ts-api-utils: 2.1.0(typescript@5.9.2) + typescript: 5.9.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.0.4)': + '@typescript-eslint/utils@8.44.0(eslint@9.36.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.36.0(jiti@2.5.1)) '@typescript-eslint/scope-manager': 8.44.0 '@typescript-eslint/types': 8.44.0 - '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.0.4) + '@typescript-eslint/typescript-estree': 8.44.0(typescript@5.9.2) eslint: 9.36.0(jiti@2.5.1) - typescript: 5.0.4 + typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -6838,6 +6861,12 @@ snapshots: '@uppy/utils': 6.2.2 preact: 10.27.2 + '@uppy/progress-bar@4.3.2(@uppy/core@4.5.3)': + dependencies: + '@uppy/core': 4.5.3 + '@uppy/utils': 6.2.2 + preact: 10.27.2 + '@uppy/provider-views@4.5.3(@uppy/core@4.5.3)': dependencies: '@uppy/core': 4.5.3 @@ -6877,15 +6906,16 @@ snapshots: '@uppy/store-default@4.3.2': {} - '@uppy/svelte@4.6.2(@uppy/core@4.5.3)(@uppy/dashboard@4.4.3(@uppy/core@4.5.3))(@uppy/drag-drop@4.2.2(@uppy/core@4.5.3))(@uppy/status-bar@4.2.3(@uppy/core@4.5.3))(svelte@4.2.20)': + '@uppy/svelte@4.6.2(@uppy/core@4.5.3)(@uppy/dashboard@4.4.3(@uppy/core@4.5.3))(@uppy/drag-drop@4.2.2(@uppy/core@4.5.3))(@uppy/progress-bar@4.3.2(@uppy/core@4.5.3))(@uppy/status-bar@4.2.3(@uppy/core@4.5.3))(svelte@5.39.3)': dependencies: '@uppy/components': 0.3.2 '@uppy/core': 4.5.3 preact: 10.27.2 - svelte: 4.2.20 + svelte: 5.39.3 optionalDependencies: '@uppy/dashboard': 4.4.3(@uppy/core@4.5.3) '@uppy/drag-drop': 4.2.2(@uppy/core@4.5.3) + '@uppy/progress-bar': 4.3.2(@uppy/core@4.5.3) '@uppy/status-bar': 4.2.3(@uppy/core@4.5.3) '@uppy/thumbnail-generator@4.2.3(@uppy/core@4.5.3)': @@ -7116,14 +7146,6 @@ snapshots: clsx@2.1.1: {} - code-red@1.0.4: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@types/estree': 1.0.8 - acorn: 8.15.0 - estree-walker: 3.0.3 - periscopic: 3.1.0 - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -7186,11 +7208,6 @@ snapshots: mdn-data: 2.0.28 source-map-js: 1.2.1 - css-tree@2.3.1: - dependencies: - mdn-data: 2.0.30 - source-map-js: 1.2.1 - css-tree@3.1.0: dependencies: mdn-data: 2.12.2 @@ -7338,31 +7355,34 @@ snapshots: es-toolkit@1.39.5: {} - esbuild@0.21.5: + esbuild@0.25.10: optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 + '@esbuild/aix-ppc64': 0.25.10 + '@esbuild/android-arm': 0.25.10 + '@esbuild/android-arm64': 0.25.10 + '@esbuild/android-x64': 0.25.10 + '@esbuild/darwin-arm64': 0.25.10 + '@esbuild/darwin-x64': 0.25.10 + '@esbuild/freebsd-arm64': 0.25.10 + '@esbuild/freebsd-x64': 0.25.10 + '@esbuild/linux-arm': 0.25.10 + '@esbuild/linux-arm64': 0.25.10 + '@esbuild/linux-ia32': 0.25.10 + '@esbuild/linux-loong64': 0.25.10 + '@esbuild/linux-mips64el': 0.25.10 + '@esbuild/linux-ppc64': 0.25.10 + '@esbuild/linux-riscv64': 0.25.10 + '@esbuild/linux-s390x': 0.25.10 + '@esbuild/linux-x64': 0.25.10 + '@esbuild/netbsd-arm64': 0.25.10 + '@esbuild/netbsd-x64': 0.25.10 + '@esbuild/openbsd-arm64': 0.25.10 + '@esbuild/openbsd-x64': 0.25.10 + '@esbuild/openharmony-arm64': 0.25.10 + '@esbuild/sunos-x64': 0.25.10 + '@esbuild/win32-arm64': 0.25.10 + '@esbuild/win32-ia32': 0.25.10 + '@esbuild/win32-x64': 0.25.10 escalade@3.2.0: {} @@ -7437,6 +7457,10 @@ snapshots: dependencies: estraverse: 5.3.0 + esrap@2.1.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + esrecurse@4.3.0: dependencies: estraverse: 5.3.0 @@ -7445,10 +7469,6 @@ snapshots: estree-walker@2.0.2: {} - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.8 - esutils@2.0.3: {} eventemitter3@5.0.1: {} @@ -7479,10 +7499,10 @@ snapshots: optionalDependencies: picomatch: 4.0.3 - felte@1.3.0(svelte@4.2.20): + felte@1.3.0(svelte@5.39.3): dependencies: '@felte/core': 1.4.4 - svelte: 4.2.20 + svelte: 5.39.3 file-entry-cache@8.0.0: dependencies: @@ -7649,11 +7669,11 @@ snapshots: dependencies: '@babel/runtime': 7.28.4 - i18next@25.5.2(typescript@5.0.4): + i18next@25.5.2(typescript@5.9.2): dependencies: '@babel/runtime': 7.28.4 optionalDependencies: - typescript: 5.0.4 + typescript: 5.9.2 ignore@5.3.2: {} @@ -7940,17 +7960,15 @@ snapshots: mdn-data@2.0.28: {} - mdn-data@2.0.30: {} - mdn-data@2.12.2: {} - mdsvex@0.12.6(svelte@4.2.20): + mdsvex@0.12.6(svelte@5.39.3): dependencies: '@types/mdast': 4.0.4 '@types/unist': 2.0.11 prism-svelte: 0.4.7 prismjs: 1.30.0 - svelte: 4.2.20 + svelte: 5.39.3 unist-util-visit: 2.0.3 vfile-message: 2.0.4 @@ -8249,12 +8267,6 @@ snapshots: path-parse@1.0.7: {} - periscopic@3.1.0: - dependencies: - '@types/estree': 1.0.8 - estree-walker: 3.0.3 - is-reference: 3.0.3 - picocolors@1.1.1: {} picomatch@2.3.1: {} @@ -8458,10 +8470,10 @@ snapshots: prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.4.0(prettier@3.6.2)(svelte@4.2.20): + prettier-plugin-svelte@3.4.0(prettier@3.6.2)(svelte@5.39.3): dependencies: prettier: 3.6.2 - svelte: 4.2.20 + svelte: 5.39.3 prettier@3.6.2: {} @@ -8693,55 +8705,51 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.3.1(picomatch@4.0.3)(svelte@4.2.20)(typescript@5.0.4): + svelte-check@4.3.1(picomatch@4.0.3)(svelte@5.39.3)(typescript@5.9.2): dependencies: '@jridgewell/trace-mapping': 0.3.31 chokidar: 4.0.3 fdir: 6.5.0(picomatch@4.0.3) picocolors: 1.1.1 sade: 1.8.1 - svelte: 4.2.20 - typescript: 5.0.4 + svelte: 5.39.3 + typescript: 5.9.2 transitivePeerDependencies: - picomatch - svelte-hmr@0.16.0(svelte@4.2.20): + svelte-preprocess@6.0.3(postcss-load-config@6.0.1(jiti@2.5.1)(postcss@8.5.6)(yaml@2.8.1))(postcss@8.5.6)(sass@1.93.0)(svelte@5.39.3)(typescript@5.9.2): dependencies: - svelte: 4.2.20 - - svelte-preprocess@6.0.3(postcss-load-config@6.0.1(jiti@2.5.1)(postcss@8.5.6)(yaml@2.8.1))(postcss@8.5.6)(sass@1.93.0)(svelte@4.2.20)(typescript@5.0.4): - dependencies: - svelte: 4.2.20 + svelte: 5.39.3 optionalDependencies: postcss: 8.5.6 postcss-load-config: 6.0.1(jiti@2.5.1)(postcss@8.5.6)(yaml@2.8.1) sass: 1.93.0 - typescript: 5.0.4 + typescript: 5.9.2 - svelte-range-slider-pips@4.0.7(svelte@4.2.20): + svelte-range-slider-pips@4.0.7(svelte@5.39.3): dependencies: - svelte: 4.2.20 + svelte: 5.39.3 svelte-tippy@1.3.2: dependencies: tippy.js: 6.3.7 - svelte@4.2.20: + svelte@5.39.3: dependencies: - '@ampproject/remapping': 2.3.0 + '@jridgewell/remapping': 2.3.5 '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 + '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) '@types/estree': 1.0.8 acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 - code-red: 1.0.4 - css-tree: 2.3.1 - estree-walker: 3.0.3 + clsx: 2.1.1 + esm-env: 1.2.2 + esrap: 2.1.0 is-reference: 3.0.3 locate-character: 3.0.0 magic-string: 0.30.19 - periscopic: 3.1.0 + zimmerframe: 1.1.4 svgo@4.0.0: dependencies: @@ -8772,6 +8780,11 @@ snapshots: tiny-case@1.0.3: {} + tinyglobby@0.2.15: + dependencies: + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 + tinykeys@3.0.0: {} tippy.js@6.3.7: @@ -8792,9 +8805,9 @@ snapshots: trough@2.2.0: {} - ts-api-utils@2.1.0(typescript@5.0.4): + ts-api-utils@2.1.0(typescript@5.9.2): dependencies: - typescript: 5.0.4 + typescript: 5.9.2 tslib@2.8.1: {} @@ -8804,7 +8817,7 @@ snapshots: type-fest@2.19.0: {} - typescript@5.0.4: {} + typescript@5.9.2: {} ua-is-frozen@0.1.2: {} @@ -8905,26 +8918,31 @@ snapshots: vite-plugin-cross-origin-isolation@0.1.6: {} - vite-plugin-iso-import@1.3.0(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)): + vite-plugin-iso-import@1.3.0(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)): dependencies: es-module-lexer: 1.7.0 magic-string: 0.30.19 - vite: 5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0) + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1) - vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0): + vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1): dependencies: - esbuild: 0.21.5 + esbuild: 0.25.10 + fdir: 6.5.0(picomatch@4.0.3) + picomatch: 4.0.3 postcss: 8.5.6 rollup: 4.52.0 + tinyglobby: 0.2.15 optionalDependencies: '@types/node': 24.5.2 fsevents: 2.3.3 + jiti: 2.5.1 lightningcss: 1.30.1 sass: 1.93.0 + yaml: 2.8.1 - vitefu@0.2.5(vite@5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0)): + vitefu@1.1.1(vite@7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1)): optionalDependencies: - vite: 5.4.20(@types/node@24.5.2)(lightningcss@1.30.1)(sass@1.93.0) + vite: 7.1.6(@types/node@24.5.2)(jiti@2.5.1)(lightningcss@1.30.1)(sass@1.93.0)(yaml@2.8.1) web-namespaces@2.0.1: {} @@ -8983,4 +9001,6 @@ snapshots: toposort: 2.0.2 type-fest: 2.19.0 + zimmerframe@1.1.4: {} + zwitch@2.0.4: {} diff --git a/frontend/pnpm-workspace.yaml b/frontend/pnpm-workspace.yaml new file mode 100644 index 0000000..5f449ce --- /dev/null +++ b/frontend/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +# SPDX-FileCopyrightText: 2023 Marlon W (Mawoka) +# +# SPDX-License-Identifier: MPL-2.0 +onlyBuiltDependencies: + - svelte-preprocess diff --git a/frontend/src/app.css b/frontend/src/app.css index bc537eb..b496e1f 100644 --- a/frontend/src/app.css +++ b/frontend/src/app.css @@ -8,6 +8,7 @@ SPDX-License-Identifier: MPL-2.0 @import 'tippy.js/dist/tippy.css'; /* Write your global styles here, in PostCSS syntax */ @import 'tailwindcss'; +@plugin "@tailwindcss/typography"; @tailwind utilities; .marck-script { diff --git a/frontend/src/lib/Spinner.svelte b/frontend/src/lib/Spinner.svelte index 1c9fc5c..335a47f 100644 --- a/frontend/src/lib/Spinner.svelte +++ b/frontend/src/lib/Spinner.svelte @@ -5,7 +5,11 @@ SPDX-License-Identifier: MPL-2.0 --> diff --git a/frontend/src/lib/admin.svelte b/frontend/src/lib/admin.svelte index f7fff54..14df0ca 100644 --- a/frontend/src/lib/admin.svelte +++ b/frontend/src/lib/admin.svelte @@ -15,25 +15,37 @@ SPDX-License-Identifier: MPL-2.0 import Controls from '$lib/play/admin/controls.svelte'; import Question from '$lib/play/admin/question.svelte'; - export let game_token: string; - export let quiz_data: QuizData; - export let game_mode: string; - export let bg_color: string; const { t } = getLocalization(); const default_colors = ['#D6EDC9', '#B07156', '#7F7057', '#4E6E58']; - let question_results = null; - export let final_results: Array | Array> = [null]; - let selected_question = -1; - let timer_res: string; - let shown_question_now: number; - let final_results_clicked = false; + let question_results = $state(null); + let selected_question = $state(-1); + let timer_res: string = $state(); + let shown_question_now: number = $state(); + let final_results_clicked = $state(false); let timer_interval; - let answer_count = 0; - export let control_visible: boolean; + let answer_count = $state(0); - export let player_scores; + interface Props { + game_token: string; + quiz_data: QuizData; + game_mode: string; + bg_color: string; + final_results?: Array | Array>; + control_visible: boolean; + player_scores: any; + } + + let { + game_token, + quiz_data = $bindable(), + game_mode, + bg_color, + final_results = $bindable([null]), + control_visible, + player_scores = $bindable() + }: Props = $props(); socket.on('get_question_results', () => { console.log('get_question_results'); @@ -110,7 +122,7 @@ SPDX-License-Identifier: MPL-2.0 class:mt-10={control_visible} style="width: {(100 / parseInt(quiz_data.questions[selected_question].time)) * parseInt(timer_res)}vw" - /> + > {/if}
@@ -120,8 +132,7 @@ SPDX-License-Identifier: MPL-2.0 {#await import('$lib/play/admin/slide.svelte')} {:then c} - {/await} @@ -141,8 +152,7 @@ SPDX-License-Identifier: MPL-2.0 {#await import('$lib/play/admin/voting_results.svelte')} {:then c} - @@ -151,8 +161,7 @@ SPDX-License-Identifier: MPL-2.0 {#await import('$lib/play/admin/results.svelte')} {:then c} - -

- + {@render children?.()}
diff --git a/frontend/src/lib/components/DownloadQuiz.svelte b/frontend/src/lib/components/DownloadQuiz.svelte index c4825ff..aefd104 100644 --- a/frontend/src/lib/components/DownloadQuiz.svelte +++ b/frontend/src/lib/components/DownloadQuiz.svelte @@ -10,7 +10,11 @@ SPDX-License-Identifier: MPL-2.0 import { getLocalization } from '$lib/i18n'; const { t } = getLocalization(); - export let quiz_id: string | null = null; + interface Props { + quiz_id?: string | null; + } + + let { quiz_id = $bindable(null) }: Props = $props(); const handle_on_click = () => { quiz_id = null; @@ -27,7 +31,7 @@ SPDX-License-Identifier: MPL-2.0 {#if quiz_id}
diff --git a/frontend/src/lib/components/buttons/brown.svelte b/frontend/src/lib/components/buttons/brown.svelte index 459e25e..b9f4962 100644 --- a/frontend/src/lib/components/buttons/brown.svelte +++ b/frontend/src/lib/components/buttons/brown.svelte @@ -5,14 +5,29 @@ SPDX-License-Identifier: MPL-2.0 --> {#if href} @@ -24,21 +39,21 @@ SPDX-License-Identifier: MPL-2.0 class:cursor-not-allowed={disabled} class:pointer-events-none={disabled} class="text-black hover:bg-bg-[#B07156]/80 w-full px-4 py-2 leading-5 transition-all duration-200 transform bg-[#B07156] rounded-sm text-center outline-hidden hover:cursor-pointer" - on:click + onclick={bubble('click')} class:flex class:justify-center={flex} > - + {@render children?.()} {:else} {/if} diff --git a/frontend/src/lib/components/buttons/gray.svelte b/frontend/src/lib/components/buttons/gray.svelte index dafe8b0..65705a6 100644 --- a/frontend/src/lib/components/buttons/gray.svelte +++ b/frontend/src/lib/components/buttons/gray.svelte @@ -5,11 +5,25 @@ SPDX-License-Identifier: MPL-2.0 --> {#if href} @@ -17,21 +31,21 @@ SPDX-License-Identifier: MPL-2.0 {href} {target} class="w-full px-4 py-2 leading-5 text-black dark:text-white transition-colors duration-200 transform bg-gray-50 dark:bg-gray-700 rounded-sm text-center hover:bg-gray-300 focus:outline-hidden disabled:cursor-not-allowed disabled:opacity-50 dark:hover:bg-gray-600" - on:click + onclick={bubble('click')} class:flex class:block={!flex} class:justify-center={flex} > - + {@render children?.()} {:else} {/if} diff --git a/frontend/src/lib/components/commandpalette.svelte b/frontend/src/lib/components/commandpalette.svelte index f0cd527..5bffadd 100644 --- a/frontend/src/lib/components/commandpalette.svelte +++ b/frontend/src/lib/components/commandpalette.svelte @@ -8,17 +8,19 @@ SPDX-License-Identifier: MPL-2.0 This should be okay, right? -->
@@ -22,7 +26,7 @@ SPDX-License-Identifier: MPL-2.0 style="background-color: {color_map[ c.toLowerCase() ]}; width: 2rem; height: {c.toLowerCase() == c ? '2' : '4'}rem" - /> + >
{/each}
diff --git a/frontend/src/lib/components/popover/commandpalettenotice.svelte b/frontend/src/lib/components/popover/commandpalettenotice.svelte index 4f419d1..e6d74ff 100644 --- a/frontend/src/lib/components/popover/commandpalettenotice.svelte +++ b/frontend/src/lib/components/popover/commandpalettenotice.svelte @@ -13,7 +13,7 @@ SPDX-License-Identifier: MPL-2.0 const { t } = getLocalization(); - let open = false; + let open = $state(false); onMount(() => { if (Cookies.get('commandpalette_notice')) { return; diff --git a/frontend/src/lib/components/popover/smalltop.svelte b/frontend/src/lib/components/popover/smalltop.svelte index 9f1e091..822c528 100644 --- a/frontend/src/lib/components/popover/smalltop.svelte +++ b/frontend/src/lib/components/popover/smalltop.svelte @@ -5,6 +5,8 @@ SPDX-License-Identifier: MPL-2.0 --> {#if open} @@ -49,7 +56,7 @@ SPDX-License-Identifier: MPL-2.0 class="ml-auto -mx-1.5 -my-1.5 bg-white text-gray-400 hover:text-gray-900 rounded-lg focus:ring-2 focus:ring-gray-300 p-1.5 hover:bg-gray-100 inline-flex h-8 w-8 dark:text-gray-500 dark:hover:text-white dark:bg-gray-800 dark:hover:bg-gray-700" data-dismiss-target="#toast-default" aria-label="Close" - on:click={() => { + onclick={() => { open = false; }} > diff --git a/frontend/src/lib/dashboard/main_slider.svelte b/frontend/src/lib/dashboard/main_slider.svelte deleted file mode 100644 index 66ebca7..0000000 --- a/frontend/src/lib/dashboard/main_slider.svelte +++ /dev/null @@ -1,413 +0,0 @@ - - - - -{#if copy_toast_open || game_in_lobby} -
- -
-{/if} - -
- - {#each quizzes as quiz, i} - - -
-
- - -
-

- {@html quiz.title} -

-
-

- {@html quiz.description} -

- {#if quiz.cover_image} -
-
- Not provided -
-
- {/if} -
- -
-

- {@html quiz.title} -

-
-
- -

- {quiz.questions.length} - {$t('words.question', { count: quiz.questions.length })} -

- -
- {#if quiz.public} - - - - {$t('words.public')} - {:else} - - - - {$t('words.private')} - {/if} -
-
-
- {$t('words.edit')} - { - start_game = quiz.id; - }} - > - {$t('words.start')} - - { - deleteQuiz(quiz.id); - }} - flex={true} - > - - - - - - - - - - -
-
-
-

{ - copy_id(quiz.id); - }} - > - {quiz.id} -

-
-
- {#each quiz.questions as question, q} - -
-
- {@html question.question} -
- {#if question.image} -
{ - visibleImages[i][q] = true; - }} - on:exitViewport={() => { - visibleImages[i][q] = false; - }} - class="flex justify-center align-middle items-center" - > -
- {#if visibleImages?.[i]?.[q]} - Not provided - {/if} -
-
- {/if} -

- - - - {question.time}s -

- {#if question.type === QuizQuestionType.ABCD || question.type === undefined} -
- {#each question.answers as answer, index_answer} -
-

- {answer.answer} -

-
- {/each} -
- {:else if question.type === QuizQuestionType.RANGE} -

- All numbers between {question.answers.min_correct} - and {question.answers.max_correct} are correct, where - numbers between {question.answers.min} and {question - .answers.max} can be selected. -

- {:else if question.type === QuizQuestionType.VOTING} -
- {#each question.answers as answer} -
-

- {answer.answer} -

-
- {/each} -
- {:else if question.type === QuizQuestionType.ORDER} -
    - {#each question.answers as answer} -
  • -

    - {answer.answer} -

    -
  • - {/each} -
- {:else if question.type === QuizQuestionType.SLIDE} -
{ - visibleImages[i][q] = true; - }} - on:exitViewport={() => { - visibleImages[i][q] = false; - }} - class="flex justify-center align-middle items-center" - > - {#await import('$lib/play/admin/slide.svelte')} - - {:then c} -
- -
- {/await} -
- {/if} -
-
- {/each} -
-
-
-
- {/each} -
-
- -{#if start_game !== null} - -{/if} diff --git a/frontend/src/lib/dashboard/start_game.svelte b/frontend/src/lib/dashboard/start_game.svelte index d663193..3e99827 100644 --- a/frontend/src/lib/dashboard/start_game.svelte +++ b/frontend/src/lib/dashboard/start_game.svelte @@ -15,13 +15,13 @@ SPDX-License-Identifier: MPL-2.0 import { getLocalization } from '$lib/i18n'; const { t } = getLocalization(); - export let quiz_id; - let captcha_selected = false; - let selected_game_mode = 'kahoot'; - let loading = false; - let custom_field = ''; - let cqcs_enabled = false; - let randomized_answers = false; + let { quiz_id = $bindable() } = $props(); + let captcha_selected = $state(false); + let selected_game_mode = $state('kahoot'); + let loading = $state(false); + let custom_field = $state(''); + let cqcs_enabled = $state(false); + let randomized_answers = $state(false); const tippy = createTippy({ arrow: true, @@ -96,7 +96,7 @@ SPDX-License-Identifier: MPL-2.0
+ > Captcha {captcha_selected ? 'enabled' : 'disabled'} @@ -136,7 +136,7 @@ SPDX-License-Identifier: MPL-2.0
{ + onclick={() => { selected_game_mode = 'kahoot'; }} > @@ -148,7 +148,7 @@ SPDX-License-Identifier: MPL-2.0
{ + onclick={() => { selected_game_mode = 'normal'; }} > @@ -176,7 +176,7 @@ SPDX-License-Identifier: MPL-2.0 /> + > + > Randomize answers
{/each} @@ -157,7 +165,7 @@ SPDX-License-Identifier: MPL-2.0 class="p-4 rounded-lg bg-transparent border-gray-500 border-2 hover:bg-gray-300 transition dark:hover:bg-gray-600" type="button" in:fade={{ duration: 150 }} - on:click={() => { + onclick={() => { data.questions[selected_question].answers = [ ...data.questions[selected_question].answers, { ...get_empty_answer(data.questions[selected_question].answers.length) } diff --git a/frontend/src/lib/editor/AddNewQuestionPopup.svelte b/frontend/src/lib/editor/AddNewQuestionPopup.svelte index f6003ef..7fed511 100644 --- a/frontend/src/lib/editor/AddNewQuestionPopup.svelte +++ b/frontend/src/lib/editor/AddNewQuestionPopup.svelte @@ -11,10 +11,14 @@ SPDX-License-Identifier: MPL-2.0 import { fade } from 'svelte/transition'; import { getLocalization } from '$lib/i18n'; - export let questions: Question[]; - export let open: boolean; - export let selected_question: number; + interface Props { + questions: Question[]; + open: boolean; + selected_question: number; + } + + let { questions = $bindable(), open = $bindable(), selected_question = $bindable() }: Props = $props(); const { t } = getLocalization(); onMount(() => { @@ -96,7 +100,7 @@ SPDX-License-Identifier: MPL-2.0
diff --git a/frontend/src/lib/editor/MediaComponent.svelte b/frontend/src/lib/editor/MediaComponent.svelte index 4ab6d3f..ce25db4 100644 --- a/frontend/src/lib/editor/MediaComponent.svelte +++ b/frontend/src/lib/editor/MediaComponent.svelte @@ -5,19 +5,31 @@ SPDX-License-Identifier: MPL-2.0 -->
@@ -78,7 +84,7 @@ SPDX-License-Identifier: MPL-2.0
{/each} @@ -178,7 +184,7 @@ SPDX-License-Identifier: MPL-2.0 class="p-4 rounded-lg bg-transparent border-gray-500 border-2 hover:bg-gray-300 transition dark:hover:bg-gray-600 m-2 w-full" type="button" in:fade={{ duration: 150 }} - on:click={() => { + onclick={() => { data.questions[selected_question].answers = [ ...data.questions[selected_question].answers, { diff --git a/frontend/src/lib/editor/RangeSelectorEditorPart.svelte b/frontend/src/lib/editor/RangeSelectorEditorPart.svelte index 4ac05fd..97f2a04 100644 --- a/frontend/src/lib/editor/RangeSelectorEditorPart.svelte +++ b/frontend/src/lib/editor/RangeSelectorEditorPart.svelte @@ -5,11 +5,17 @@ SPDX-License-Identifier: MPL-2.0 -->
@@ -33,13 +41,13 @@ SPDX-License-Identifier: MPL-2.0
+ > + > + >
{:then c} - + {/await}
@@ -66,7 +74,7 @@ SPDX-License-Identifier: MPL-2.0 placeholder="Description" bind:value={data.description} class="p-3 rounded-lg border-gray-500 border text-center w-1/3 h-20 resize-none dark:bg-gray-500 outline-hidden focus:shadow-2xl transition-all" - /> + >
{#if data.cover_image != undefined && data.cover_image !== ''} @@ -75,17 +83,16 @@ SPDX-License-Identifier: MPL-2.0 src="/api/v1/storage/download/{data.cover_image}" alt="not available" class="max-h-72 h-auto w-auto" - on:contextmenu|preventDefault={() => { + oncontextmenu={preventDefault(() => { data.cover_image = null; - }} + })} />
{:else} {#await import('$lib/editor/uploader.svelte')} {:then c} -
@@ -165,7 +172,7 @@ SPDX-License-Identifier: MPL-2.0 /> + >
{#if data.background_image}
{:then c} - setSelectedQuestion(-1)} + onclick={() => setSelectedQuestion(-1)} >
+ >
@@ -111,7 +119,7 @@ SPDX-License-Identifier: MPL-2.0 {:else} {/if} {:else if timer_res === '0' || selected_question === -1} {#if (selected_question + 1 !== quiz_data.questions.length && question_results !== null) || selected_question === -1} {:else if quiz_data.questions[selected_question]?.hide_results === true} {:else} - {/if} @@ -99,14 +113,14 @@ SPDX-License-Identifier: MPL-2.0 {:else if selected_question !== -1} {#if quiz_data.questions[selected_question].type === QuizQuestionType.SLIDE} {:else} - {/if} diff --git a/frontend/src/lib/play/admin/final_results.svelte b/frontend/src/lib/play/admin/final_results.svelte index e592029..4108d0e 100644 --- a/frontend/src/lib/play/admin/final_results.svelte +++ b/frontend/src/lib/play/admin/final_results.svelte @@ -5,16 +5,22 @@ SPDX-License-Identifier: MPL-2.0 --> {#if show_final_results} - +
{#each player_names as player, i} {#if i <= player_count_or_five - 1} diff --git a/frontend/src/lib/play/admin/game_not_started.svelte b/frontend/src/lib/play/admin/game_not_started.svelte index 2105297..595f6f5 100644 --- a/frontend/src/lib/play/admin/game_not_started.svelte +++ b/frontend/src/lib/play/admin/game_not_started.svelte @@ -11,14 +11,23 @@ SPDX-License-Identifier: MPL-2.0 import GrayButton from '$lib/components/buttons/gray.svelte'; import { fade } from 'svelte/transition'; - export let game_pin: string; - export let players; - export let socket; - export let cqc_code: string; + interface Props { + game_pin: string; + players: any; + socket: any; + cqc_code: string; + } - let fullscreen_open = false; + let { + game_pin, + players = $bindable(), + socket, + cqc_code = $bindable() + }: Props = $props(); + + let fullscreen_open = $state(false); const { t } = getLocalization(); - let play_music = false; + let play_music = $state(false); if (cqc_code === 'null') { cqc_code = null; @@ -52,7 +61,7 @@ SPDX-License-Identifier: MPL-2.0

(fullscreen_open = true)} + onclick={() => (fullscreen_open = true)} alt="QR code to join the game" src="/api/v1/utils/qr/{game_pin}" class="block mx-auto w-1/2 dark:bg-white shadow-2xl rounded-sm hover:cursor-pointer" @@ -101,7 +110,7 @@ SPDX-License-Identifier: MPL-2.0
{ + onclick={() => { kick_player(player.username); }}>{player.username} @@ -116,7 +125,7 @@ SPDX-License-Identifier: MPL-2.0
(fullscreen_open = false)} + onclick={() => (fullscreen_open = false)} > QR code to join the game
@@ -42,7 +54,7 @@ SPDX-License-Identifier: MPL-2.0
- +
{answer.answer} - +
{/each}
@@ -97,7 +109,7 @@ SPDX-License-Identifier: MPL-2.0 {answer.answer} - +
{/each}
diff --git a/frontend/src/lib/play/admin/results.svelte b/frontend/src/lib/play/admin/results.svelte index b56175f..facbba3 100644 --- a/frontend/src/lib/play/admin/results.svelte +++ b/frontend/src/lib/play/admin/results.svelte @@ -5,6 +5,8 @@ SPDX-License-Identifier: MPL-2.0 -->
{#if play} {:else} { + onclick={() => { show_results = true; }}>{$t('admin_page.get_results')} @@ -151,8 +155,7 @@ SPDX-License-Identifier: MPL-2.0 {:then c}
- {:then c}
- { + onclick={() => { selected_answer = slider_value[0]; timer_res = '0'; }} @@ -197,7 +199,7 @@ SPDX-License-Identifier: MPL-2.0 type="button" disabled={selected_answer !== undefined || timer_res === '0'} class="p-2 rounded-lg flex justify-center w-full transition bg-amber-300 my-5 disabled:grayscale text-black" - on:click={() => { + onclick={() => { selected_answer = i; timer_res = '0'; }}>{answer.answer} {:then c}
- +
{/await} {:else if question.type === QuizQuestionType.TEXT} @@ -236,7 +238,7 @@ SPDX-License-Identifier: MPL-2.0 type="button" disabled={!text_input} class="w-1/3 text-3xl bg-[#B07156] my-2 disabled:opacity-60 rounded-lg p-1 transition" - on:click={() => { + onclick={() => { selected_answer = text_input; timer_res = '0'; }}>{$t('words.submit')} @@ -353,7 +355,7 @@ SPDX-License-Identifier: MPL-2.0 diff --git a/frontend/src/lib/practice/title_screen.svelte b/frontend/src/lib/practice/title_screen.svelte index 3185e02..5e4dab7 100644 --- a/frontend/src/lib/practice/title_screen.svelte +++ b/frontend/src/lib/practice/title_screen.svelte @@ -5,10 +5,12 @@ SPDX-License-Identifier: MPL-2.0 --> @@ -19,13 +21,13 @@ SPDX-License-Identifier: MPL-2.0
+ > + > + >
@@ -50,9 +52,9 @@ SPDX-License-Identifier: MPL-2.0 src="/api/v1/storage/download/{data.cover_image}" alt="not available" class="max-h-72 h-auto w-auto" - on:contextmenu|preventDefault={() => { + oncontextmenu={preventDefault(() => { data.cover_image = ''; - }} + })} />
{/if} diff --git a/frontend/src/lib/quiztivity/add_new_slide.svelte b/frontend/src/lib/quiztivity/add_new_slide.svelte index 47f1520..17a8fbe 100644 --- a/frontend/src/lib/quiztivity/add_new_slide.svelte +++ b/frontend/src/lib/quiztivity/add_new_slide.svelte @@ -10,7 +10,11 @@ SPDX-License-Identifier: MPL-2.0 import { fade } from 'svelte/transition'; const { t } = getLocalization(); - export let type: QuizTivityTypes | undefined; + interface Props { + type: QuizTivityTypes | undefined; + } + + let { type = $bindable() }: Props = $props(); const PageTypes = [ /* { @@ -52,7 +56,7 @@ SPDX-License-Identifier: MPL-2.0
diff --git a/frontend/src/lib/quiztivity/components/abcd/edit.svelte b/frontend/src/lib/quiztivity/components/abcd/edit.svelte index a66c899..99d31d8 100644 --- a/frontend/src/lib/quiztivity/components/abcd/edit.svelte +++ b/frontend/src/lib/quiztivity/components/abcd/edit.svelte @@ -9,7 +9,11 @@ SPDX-License-Identifier: MPL-2.0 import { getLocalization } from '$lib/i18n'; import BrownButton from '$lib/components/buttons/brown.svelte'; - export let data: Abcd | undefined; + interface Props { + data: Abcd | undefined; + } + + let { data = $bindable() }: Props = $props(); if (!data) { data = { @@ -39,7 +43,7 @@ SPDX-License-Identifier: MPL-2.0 /> + {:else}
-
@@ -191,7 +193,7 @@ SPDX-License-Identifier: MPL-2.0 {:else if timer_res === '0' || selected_question === -1} {#if (selected_question + 1 !== game_data.questions.length && question_results !== null) || selected_question === -1} {:else} - + {/if} {/if} {:else if selected_question !== -1} {#if game_data.questions[selected_question].type === QuizQuestionType.SLIDE} {:else} - {/if} @@ -233,10 +235,7 @@ SPDX-License-Identifier: MPL-2.0 {#await import('$lib/play/admin/slide.svelte')} {:then c} - + {/await} {:else}
@@ -274,7 +273,7 @@ SPDX-License-Identifier: MPL-2.0 {answer.answer} - +
{/each}
@@ -287,8 +286,7 @@ SPDX-License-Identifier: MPL-2.0 {#await import('$lib/play/admin/voting_results.svelte')} {:then c} - @@ -296,7 +294,7 @@ SPDX-License-Identifier: MPL-2.0 {/if} {/if} {:else} - +

Players:

{#await get_already_joined_players()} @@ -314,14 +312,14 @@ SPDX-License-Identifier: MPL-2.0
{#if control_visible} {:else}
@@ -20,38 +24,42 @@ SPDX-License-Identifier: MPL-2.0

{$t('results_page.no_results_so_far')}

{:else} - - - - - - - {#each data.results as result} - - - - - + + + + + + - {/each} + + + {#each data.results as result} + + + + + + + {/each} +
{$t('results_page.quiz_title')} - {$t('results_page.date_played')} - {$t('results_page.player_count')} - {$t('words.note')}
{result.title}{new Date(result.timestamp).toLocaleString()}{Object.keys(result.player_scores).length} - {#if result.note} - {result.note} - {/if} -
{$t('results_page.quiz_title')} + {$t('results_page.date_played')} + {$t('results_page.player_count')} + {$t('words.note')}
{result.title}{new Date(result.timestamp).toLocaleString()}{Object.keys(result.player_scores).length} + {#if result.note} + {result.note} + {/if} +
{/if}
diff --git a/frontend/src/routes/results/[result_id]/+page.svelte b/frontend/src/routes/results/[result_id]/+page.svelte index a1d4b19..b8f6a76 100644 --- a/frontend/src/routes/results/[result_id]/+page.svelte +++ b/frontend/src/routes/results/[result_id]/+page.svelte @@ -14,7 +14,11 @@ SPDX-License-Identifier: MPL-2.0 const { t } = getLocalization(); - export let data: PageData; + interface Props { + data: PageData; + } + + let { data }: Props = $props(); // eslint-disable-next-line no-unused-vars enum SelectedTab { @@ -26,7 +30,7 @@ SPDX-License-Identifier: MPL-2.0 Questions } - let selected_tab: SelectedTab = SelectedTab.Overview; + let selected_tab: SelectedTab = $state(SelectedTab.Overview);
@@ -37,7 +41,7 @@ SPDX-License-Identifier: MPL-2.0 class:opacity-60={selected_tab !== SelectedTab.Overview} > diff --git a/frontend/src/routes/results/[result_id]/question_tab_thing.svelte b/frontend/src/routes/results/[result_id]/question_tab_thing.svelte index ea449ef..a7f1fc2 100644 --- a/frontend/src/routes/results/[result_id]/question_tab_thing.svelte +++ b/frontend/src/routes/results/[result_id]/question_tab_thing.svelte @@ -11,7 +11,6 @@ SPDX-License-Identifier: MPL-2.0 const { t } = getLocalization(); - export let question: Question; interface Answer { username: string; @@ -21,7 +20,12 @@ SPDX-License-Identifier: MPL-2.0 score: number; } - export let answers: Answer[]; + interface Props { + question: Question; + answers: Answer[]; + } + + let { question, answers }: Props = $props(); // console.log(question); const get_answer_count_for_answer = (answer: string): number => { @@ -66,7 +70,7 @@ SPDX-License-Identifier: MPL-2.0 style="width: {(get_answer_count_for_answer(answer.answer) / answers.length) * 100}%" - /> + >

{get_answer_count_for_answer(answer.answer)}

{#if question.type !== QuizQuestionType.VOTING && question.type !== QuizQuestionType.TEXT} @@ -81,46 +85,50 @@ SPDX-License-Identifier: MPL-2.0 {/if}
- - - {#if question.type !== QuizQuestionType.VOTING} + + - {/if} - - - {#if question.type !== QuizQuestionType.VOTING} - - {/if} - - {#each answers as answer} - - {#if question.type !== QuizQuestionType.VOTING} - {$t('words.score')} {/if} - - + + {#if question.type !== QuizQuestionType.VOTING} - + {/if} - {/each} + + + {#each answers as answer} + + + {#if question.type !== QuizQuestionType.VOTING} + + {/if} + + + {#if question.type !== QuizQuestionType.VOTING} + + {/if} + + {/each} +
{$t('result_page.player_name')} -
{$t('words.score')}{$t('result_page.time_taken')} - {$t('words.answer')} {$t('words.correct')}? + >{$t('result_page.player_name')}
{answer.username}{answer.score}{(answer.time_taken / 1000).toFixed(3)}s - {answer.answer}{$t('result_page.time_taken')} + {$t('words.answer')} - {#if answer.right}✅{:else}❌{/if} - {$t('words.correct')}? +
{answer.username}{answer.score}{(answer.time_taken / 1000).toFixed(3)}s + {answer.answer} + {#if answer.right}✅{:else}❌{/if} +
diff --git a/frontend/src/routes/search/+page.svelte b/frontend/src/routes/search/+page.svelte index d9c1643..df3e245 100644 --- a/frontend/src/routes/search/+page.svelte +++ b/frontend/src/routes/search/+page.svelte @@ -4,12 +4,14 @@ SPDX-FileCopyrightText: 2023 Marlon W (Mawoka) SPDX-License-Identifier: MPL-2.0 --> @@ -110,7 +114,7 @@ SPDX-License-Identifier: MPL-2.0
{#if $signedIn}