diff --git a/package.json b/package.json index 43169acfc..0e12baca6 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "optimize": "node ./scripts/optimize-assets.js", "optimize:all": "node ./scripts/optimize-all.js" }, - "packageManager": "pnpm@10.8.1", + "packageManager": "pnpm@10.11.1", "dependencies": { "h3": "^1.14.0", "posthog-js": "^1.210.2", @@ -41,18 +41,20 @@ "@internationalized/date": "3.5.0", "@melt-ui/pp": "^0.3.2", "@melt-ui/svelte": "^0.86.5", - "@number-flow/svelte": "^0.3.3", + "@number-flow/svelte": "^0.3.7", "@playwright/test": "^1.50.0", "@sveltejs/adapter-node": "^5.2.12", "@sveltejs/enhanced-img": "^0.4.4", "@sveltejs/kit": "^2.20.2", "@sveltejs/vite-plugin-svelte": "^5.0.3", - "@tailwindcss/postcss": "^4.1.2", + "@tailwindcss/postcss": "^4.1.4", + "@turf/boolean-point-in-polygon": "^7.2.0", "@types/compression": "^1.7.5", "@types/glob": "^8.1.0", "@types/jsdom": "^21.1.7", "@types/markdown-it": "^13.0.9", "@types/morgan": "^1.9.9", + "@types/proj4": "^2.5.6", "analytics": "^0.8.16", "appwrite": "^17.0.1", "bits-ui": "^1.3.19", @@ -74,9 +76,8 @@ "markdown-it": "^14.1.0", "meilisearch": "^0.37.0", "melt": "^0.29.2", - "motion": "^12.7.3", - "motion-legacy": "npm:motion@^10.18.0", - "node-appwrite": "^15.0.1", + "motion": "^12.7.4", + "node-appwrite": "^16.0.0", "node-fetch": "^3.3.2", "node-html-parser": "^6.1.13", "openapi-types": "^12.1.3", @@ -88,6 +89,7 @@ "prettier": "^3.4.2", "prettier-plugin-svelte": "^3.3.3", "prettier-plugin-tailwindcss": "^0.6.11", + "proj4": "^2.17.0", "remeda": "^2.20.0", "reodotdev": "^1.0.0", "sass": "^1.83.4", @@ -95,9 +97,10 @@ "svelte-check": "^4.0.0", "svelte-markdoc-preprocess": "3.0.0", "svelte-markdown": "^0.4.1", + "svg-dotted-map": "^2.0.1", "svgtofont": "^4.2.3", "tailwind-merge": "^3.0.2", - "tailwindcss": "^4.1.2", + "tailwindcss": "^4.1.4", "tslib": "^2.8.1", "typescript": "^5.8.2", "typescript-eslint": "^8.21.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 22c852300..23b778923 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,7 +13,7 @@ importers: version: 1.15.1 posthog-js: specifier: ^1.210.2 - version: 1.236.1 + version: 1.230.4 sharp: specifier: ^0.33.5 version: 0.33.5 @@ -29,46 +29,49 @@ importers: version: 0.26.0 '@appwrite.io/repo': specifier: github:appwrite/appwrite#main - version: https://codeload.github.com/appwrite/appwrite/tar.gz/72087298056c5db3dca81d2ca66725dcf47d41bb + version: https://codeload.github.com/appwrite/appwrite/tar.gz/45e5509113f568190c66d491aa1145069c6d124c '@eslint/compat': specifier: ^1.2.7 - version: 1.2.8(eslint@9.24.0(jiti@2.4.2)) + version: 1.2.7(eslint@9.22.0(jiti@2.4.2)) '@eslint/js': specifier: ^9.21.0 - version: 9.24.0 + version: 9.22.0 '@fingerprintjs/fingerprintjs': specifier: ^4.5.1 - version: 4.6.2 + version: 4.6.1 '@internationalized/date': specifier: 3.5.0 version: 3.5.0 '@melt-ui/pp': specifier: ^0.3.2 - version: 0.3.2(@melt-ui/svelte@0.86.6(svelte@5.27.0))(svelte@5.27.0) + version: 0.3.2(@melt-ui/svelte@0.86.6(svelte@5.25.6))(svelte@5.25.6) '@melt-ui/svelte': specifier: ^0.86.5 - version: 0.86.6(svelte@5.27.0) + version: 0.86.6(svelte@5.25.6) '@number-flow/svelte': - specifier: ^0.3.3 - version: 0.3.7(svelte@5.27.0) + specifier: ^0.3.7 + version: 0.3.7(svelte@5.25.6) '@playwright/test': specifier: ^1.50.0 - version: 1.51.1 + version: 1.51.0 '@sveltejs/adapter-node': specifier: ^5.2.12 - version: 5.2.12(@sveltejs/kit@2.20.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)))(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1))) + version: 5.2.12(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)))(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0))) '@sveltejs/enhanced-img': specifier: ^0.4.4 - version: 0.4.4(rollup@4.40.0)(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) + version: 0.4.4(rollup@4.35.0)(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) '@sveltejs/kit': specifier: ^2.20.2 - version: 2.20.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)))(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) + version: 2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)))(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) '@sveltejs/vite-plugin-svelte': specifier: ^5.0.3 - version: 5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) + version: 5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) '@tailwindcss/postcss': - specifier: ^4.1.2 + specifier: ^4.1.4 version: 4.1.4 + '@turf/boolean-point-in-polygon': + specifier: ^7.2.0 + version: 7.2.0 '@types/compression': specifier: ^1.7.5 version: 1.7.5 @@ -84,15 +87,18 @@ importers: '@types/morgan': specifier: ^1.9.9 version: 1.9.9 + '@types/proj4': + specifier: ^2.5.6 + version: 2.5.6 analytics: specifier: ^0.8.16 version: 0.8.16(@types/dlv@1.1.5) appwrite: specifier: ^17.0.1 - version: 17.0.1 + version: 17.0.2 bits-ui: specifier: ^1.3.19 - version: 1.3.19(svelte@5.27.0) + version: 1.3.19(svelte@5.25.6) clsx: specifier: ^2.1.1 version: 2.1.1 @@ -107,25 +113,25 @@ importers: version: 2.0.3 embla-carousel: specifier: ^8.5.2 - version: 8.6.0 + version: 8.5.2 embla-carousel-auto-scroll: specifier: ^8.5.2 - version: 8.6.0(embla-carousel@8.6.0) + version: 8.5.2(embla-carousel@8.5.2) embla-carousel-svelte: specifier: ^8.5.2 - version: 8.6.0(svelte@5.27.0) + version: 8.5.2(svelte@5.25.6) embla-carousel-wheel-gestures: specifier: ^8.0.1 - version: 8.0.2(embla-carousel@8.6.0) + version: 8.0.1(embla-carousel@8.5.2) eslint: specifier: ^9.19.0 - version: 9.24.0(jiti@2.4.2) + version: 9.22.0(jiti@2.4.2) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.24.0(jiti@2.4.2)) + version: 9.1.0(eslint@9.22.0(jiti@2.4.2)) eslint-plugin-svelte: specifier: ^2.46.1 - version: 2.46.1(eslint@9.24.0(jiti@2.4.2))(svelte@5.27.0) + version: 2.46.1(eslint@9.22.0(jiti@2.4.2))(svelte@5.25.6) fuse.js: specifier: ^7.0.0 version: 7.1.0 @@ -137,7 +143,7 @@ importers: version: 11.11.1 linkedom: specifier: ^0.18.9 - version: 0.18.9 + version: 0.18.10 markdown-it: specifier: ^14.1.0 version: 14.1.0 @@ -146,16 +152,13 @@ importers: version: 0.37.0(encoding@0.1.13) melt: specifier: ^0.29.2 - version: 0.29.3(@floating-ui/dom@1.6.13)(svelte@5.27.0) + version: 0.29.2(@floating-ui/dom@1.6.13)(svelte@5.25.6) motion: - specifier: ^12.7.3 - version: 12.7.3 - motion-legacy: - specifier: npm:motion@^10.18.0 - version: motion@10.18.0 + specifier: ^12.7.4 + version: 12.7.4 node-appwrite: - specifier: ^15.0.1 - version: 15.0.1 + specifier: ^16.0.0 + version: 16.0.0 node-fetch: specifier: ^3.3.2 version: 3.3.2 @@ -176,76 +179,82 @@ importers: version: 8.5.3 posthog-node: specifier: ^4.4.1 - version: 4.11.6 + version: 4.10.1 prettier: specifier: ^3.4.2 version: 3.5.3 prettier-plugin-svelte: specifier: ^3.3.3 - version: 3.3.3(prettier@3.5.3)(svelte@5.27.0) + version: 3.3.3(prettier@3.5.3)(svelte@5.25.6) prettier-plugin-tailwindcss: specifier: ^0.6.11 - version: 0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.27.0))(prettier@3.5.3) + version: 0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.25.6))(prettier@3.5.3) + proj4: + specifier: ^2.17.0 + version: 2.17.0 remeda: specifier: ^2.20.0 - version: 2.21.3 + version: 2.21.2 reodotdev: specifier: ^1.0.0 version: 1.0.0 sass: specifier: ^1.83.4 - version: 1.86.3 + version: 1.85.1 svelte: specifier: ^5.25.6 - version: 5.27.0 + version: 5.25.6 svelte-check: specifier: ^4.0.0 - version: 4.1.6(picomatch@4.0.2)(svelte@5.27.0)(typescript@5.8.3) + version: 4.1.5(picomatch@4.0.2)(svelte@5.25.6)(typescript@5.8.2) svelte-markdoc-preprocess: specifier: 3.0.0 version: 3.0.0 svelte-markdown: specifier: ^0.4.1 - version: 0.4.1(svelte@5.27.0) + version: 0.4.1(svelte@5.25.6) + svg-dotted-map: + specifier: ^2.0.1 + version: 2.0.1 svgtofont: specifier: ^4.2.3 version: 4.2.3 tailwind-merge: specifier: ^3.0.2 - version: 3.2.0 + version: 3.0.2 tailwindcss: - specifier: ^4.1.2 + specifier: ^4.1.4 version: 4.1.4 tslib: specifier: ^2.8.1 version: 2.8.1 typescript: specifier: ^5.8.2 - version: 5.8.3 + version: 5.8.2 typescript-eslint: specifier: ^8.21.0 - version: 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + version: 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) vaul-svelte: specifier: 1.0.0-next.7 - version: 1.0.0-next.7(svelte@5.27.0) + version: 1.0.0-next.7(svelte@5.25.6) vite: specifier: ^6.2.4 - version: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) + version: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) vite-plugin-dynamic-import: specifier: ^1.6.0 version: 1.6.0 vite-plugin-image-optimizer: specifier: ^1.1.8 - version: 1.1.8(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) + version: 1.1.8(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) vite-plugin-manifest-sri: specifier: ^0.2.0 version: 0.2.0 vitest: specifier: ^3.1.1 - version: 3.1.1(@types/node@22.14.1)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) + version: 3.1.1(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) zod: specifier: ^3.24.2 - version: 3.24.2 + version: 3.24.4 packages: @@ -287,47 +296,47 @@ packages: '@appwrite.io/pink@0.26.0': resolution: {integrity: sha512-iPeGE56pauzxuIXt15ZswjKCErwp3QdF3XOlJZfyYY7J2nirra85JNTL+3lWuFIf8yYWL7NbvCjhf8ig79TgwA==} - '@appwrite.io/repo@https://codeload.github.com/appwrite/appwrite/tar.gz/72087298056c5db3dca81d2ca66725dcf47d41bb': - resolution: {tarball: https://codeload.github.com/appwrite/appwrite/tar.gz/72087298056c5db3dca81d2ca66725dcf47d41bb} + '@appwrite.io/repo@https://codeload.github.com/appwrite/appwrite/tar.gz/45e5509113f568190c66d491aa1145069c6d124c': + resolution: {tarball: https://codeload.github.com/appwrite/appwrite/tar.gz/45e5509113f568190c66d491aa1145069c6d124c} version: 0.0.0 '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} - '@babel/runtime@7.27.0': - resolution: {integrity: sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==} + '@babel/runtime@7.26.10': + resolution: {integrity: sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==} engines: {node: '>=6.9.0'} '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} - '@csstools/css-calc@2.1.3': - resolution: {integrity: sha512-XBG3talrhid44BY1x3MHzUx/aTG8+x/Zi57M4aTKK9RFB4aLlF3TTSzfzn8nWVHWL3FgAXAxmupmDd6VWww+pw==} + '@csstools/css-calc@2.1.4': + resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-color-parser@3.0.9': - resolution: {integrity: sha512-wILs5Zk7BU86UArYBJTPy/FMPPKVKHMj1ycCEyf3VUptol0JNRLFU/BZsJ4aiIHJEbSLiizzRrw8Pc1uAEDrXw==} + '@csstools/css-color-parser@3.0.10': + resolution: {integrity: sha512-TiJ5Ajr6WRd1r8HSiwJvZBiJOqtH86aHpUjq5aEKWHiII2Qfjqd/HCWKPOW8EP4vcspXbHnXrwIDlu5savQipg==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-parser-algorithms': ^3.0.4 - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-parser-algorithms': ^3.0.5 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-parser-algorithms@3.0.4': - resolution: {integrity: sha512-Up7rBoV77rv29d3uKHUIVubz1BTcgyUK72IvCQAbfbMv584xHcGKCKbWh7i8hPrRJ7qU4Y8IO3IY9m+iTB7P3A==} + '@csstools/css-parser-algorithms@3.0.5': + resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: - '@csstools/css-tokenizer': ^3.0.3 + '@csstools/css-tokenizer': ^3.0.4 - '@csstools/css-tokenizer@3.0.3': - resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} + '@csstools/css-tokenizer@3.0.4': + resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} - '@emnapi/runtime@1.4.3': - resolution: {integrity: sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==} + '@emnapi/runtime@1.3.1': + resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==} '@esbuild/aix-ppc64@0.25.2': resolution: {integrity: sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==} @@ -479,8 +488,8 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.6.1': - resolution: {integrity: sha512-KTsJMmobmbrFLe3LDh0PC2FXpcSYJt/MLjlkh/9LEnmKYLSYmT/0EW9JWANjeoemiuZrmogti0tW5Ch+qNUYDw==} + '@eslint-community/eslint-utils@4.5.1': + resolution: {integrity: sha512-soEIOALTfTK6EjmKMMoLugwaP0rzkad90iIWd1hMO9ARkSAyjfMfkRRhLvD5qH7vvM0Cg72pieUfR6yh6XxC4w==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -489,8 +498,8 @@ packages: resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - '@eslint/compat@1.2.8': - resolution: {integrity: sha512-LqCYHdWL/QqKIJuZ/ucMAv8d4luKGs4oCPgpt8mWztQAtPrHfXKQ/XAUc8ljCHAfJCn6SvkpTcGt5Tsh8saowA==} + '@eslint/compat@1.2.7': + resolution: {integrity: sha512-xvv7hJE32yhegJ8xNAnb62ggiAwTYHBpUCWhRxEj/ksvgDJuSXfoDkBcRYaYNFiJ+jH0IE3K16hd+xXzhBgNbg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^9.10.0 @@ -498,40 +507,36 @@ packages: eslint: optional: true - '@eslint/config-array@0.20.0': - resolution: {integrity: sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==} + '@eslint/config-array@0.19.2': + resolution: {integrity: sha512-GNKqxfHG2ySmJOBSHg7LxeUx4xpuCoFjacmlCoYWEbaPXLwvfIjixRI12xCQZeULksQb23uiA8F40w5TojpV7w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/config-helpers@0.2.1': - resolution: {integrity: sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==} + '@eslint/config-helpers@0.1.0': + resolution: {integrity: sha512-kLrdPDJE1ckPo94kmPPf9Hfd0DU0Jw6oKYrhe+pwSC0iTUInmTa+w6fw8sGgcfkFJGNdWOUeOaDM4quW4a7OkA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/core@0.12.0': resolution: {integrity: sha512-cmrR6pytBuSMTaBweKoGMwu3EiHiEC+DoyupPmlZ0HxBJBtIxwe+j/E4XPIKNx+Q74c8lXKPwYawBf5glsTkHg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/core@0.13.0': - resolution: {integrity: sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==} + '@eslint/eslintrc@3.3.0': + resolution: {integrity: sha512-yaVPAiNAalnCZedKLdR21GOGILMLKPyqSLWaAjQFvYA2i/ciDi8ArYVr69Anohb6cH2Ukhqti4aFnYyPm8wdwQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/eslintrc@3.3.1': - resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.24.0': - resolution: {integrity: sha512-uIY/y3z0uvOGX8cp1C2fiC4+ZmBhp6yZWkojtHL1YEMnRt1Y63HB9TM17proGEmeG7HeUY+UP36F0aknKYTpYA==} + '@eslint/js@9.22.0': + resolution: {integrity: sha512-vLFajx9o8d1/oL2ZkpMYbkLv8nDB6yaIwFNt7nI4+I80U/z03SxmfOMsLbvWr3p7C+Wnoh//aOu2pQW8cS0HCQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/plugin-kit@0.2.8': - resolution: {integrity: sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==} + '@eslint/plugin-kit@0.2.7': + resolution: {integrity: sha512-JubJ5B2pJ4k4yGxaNLdbjrnk9d/iDz6/q8wOilpIowd6PJPgaxCuHBnBszq7Ce2TyMrywm5r4PnKm6V3iiZF+g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@fingerprintjs/fingerprintjs@4.6.2': - resolution: {integrity: sha512-g8mXuqcFKbgH2CZKwPfVtsUJDHyvcgIABQI7Y0tzWEFXpGxJaXuAuzlifT2oTakjDBLTK4Gaa9/5PERDhqUjtw==} + '@fingerprintjs/fingerprintjs@4.6.1': + resolution: {integrity: sha512-62TPnX6fXXMlxS7SOR3DJWEOKab7rCALwSWkuKWYMRrnsZ/jD9Ju4CUyy9VWDUYuhQ2ZW1RGLwOZJXTXR6K1pg==} '@floating-ui/core@1.6.9': resolution: {integrity: sha512-uMXCuQ3BItDUbAMhIXw7UPXRfAlOAvZzdK9BWpE60MCn+Svt3aLn9jsPTi/WNGlRUu2uI0v5S7JiIUsbsvh3fw==} @@ -890,24 +895,6 @@ packages: peerDependencies: svelte: ^3.0.0 || ^4.0.0 || ^5.0.0-next.118 - '@motionone/animation@10.18.0': - resolution: {integrity: sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==} - - '@motionone/dom@10.18.0': - resolution: {integrity: sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==} - - '@motionone/easing@10.18.0': - resolution: {integrity: sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==} - - '@motionone/generators@10.18.0': - resolution: {integrity: sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==} - - '@motionone/types@10.17.1': - resolution: {integrity: sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==} - - '@motionone/utils@10.18.0': - resolution: {integrity: sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==} - '@napi-rs/nice-android-arm-eabi@1.0.1': resolution: {integrity: sha512-5qpvOu5IGwDo7MEKVqqyAxF90I6aLj4n07OzpARdgDRfz8UbBztTByBp0RC59r3J1Ij8uzYi6jI7r5Lws7nn6w==} engines: {node: '>= 10'} @@ -1120,13 +1107,13 @@ packages: resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} - '@playwright/test@1.51.1': - resolution: {integrity: sha512-nM+kEaTSAoVlXmMPH10017vn3FSiFqr/bh4fKg9vmAdMfd9SDqRZNvPSiAHADc/itWak+qPvMPZQOPwCBW7k7Q==} + '@playwright/test@1.51.0': + resolution: {integrity: sha512-dJ0dMbZeHhI+wb77+ljx/FeC8VBP6j/rj9OAojO08JI80wTZy6vRk9KvHKiDCUh4iMpEiseMgqRBIeW+eKX6RA==} engines: {node: '>=18'} hasBin: true - '@polka/url@1.0.0-next.29': - resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + '@polka/url@1.0.0-next.28': + resolution: {integrity: sha512-8LduaNlMZGwdZ6qWrKlfa+2M4gahzFkprZiAt2TF8uS0qQgBizKXpXURqvTJ4WtmupWxaLqjRb2UCTe72mu+Aw==} '@resvg/resvg-js-android-arm-eabi@2.6.2': resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==} @@ -1240,103 +1227,98 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.40.0': - resolution: {integrity: sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==} + '@rollup/rollup-android-arm-eabi@4.35.0': + resolution: {integrity: sha512-uYQ2WfPaqz5QtVgMxfN6NpLD+no0MYHDBywl7itPYd3K5TjjSghNKmX8ic9S8NU8w81NVhJv/XojcHptRly7qQ==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.40.0': - resolution: {integrity: sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==} + '@rollup/rollup-android-arm64@4.35.0': + resolution: {integrity: sha512-FtKddj9XZudurLhdJnBl9fl6BwCJ3ky8riCXjEw3/UIbjmIY58ppWwPEvU3fNu+W7FUsAsB1CdH+7EQE6CXAPA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.40.0': - resolution: {integrity: sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==} + '@rollup/rollup-darwin-arm64@4.35.0': + resolution: {integrity: sha512-Uk+GjOJR6CY844/q6r5DR/6lkPFOw0hjfOIzVx22THJXMxktXG6CbejseJFznU8vHcEBLpiXKY3/6xc+cBm65Q==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.40.0': - resolution: {integrity: sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==} + '@rollup/rollup-darwin-x64@4.35.0': + resolution: {integrity: sha512-3IrHjfAS6Vkp+5bISNQnPogRAW5GAV1n+bNCrDwXmfMHbPl5EhTmWtfmwlJxFRUCBZ+tZ/OxDyU08aF6NI/N5Q==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.40.0': - resolution: {integrity: sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==} + '@rollup/rollup-freebsd-arm64@4.35.0': + resolution: {integrity: sha512-sxjoD/6F9cDLSELuLNnY0fOrM9WA0KrM0vWm57XhrIMf5FGiN8D0l7fn+bpUeBSU7dCgPV2oX4zHAsAXyHFGcQ==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.40.0': - resolution: {integrity: sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==} + '@rollup/rollup-freebsd-x64@4.35.0': + resolution: {integrity: sha512-2mpHCeRuD1u/2kruUiHSsnjWtHjqVbzhBkNVQ1aVD63CcexKVcQGwJ2g5VphOd84GvxfSvnnlEyBtQCE5hxVVw==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.40.0': - resolution: {integrity: sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==} + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': + resolution: {integrity: sha512-mrA0v3QMy6ZSvEuLs0dMxcO2LnaCONs1Z73GUDBHWbY8tFFocM6yl7YyMu7rz4zS81NDSqhrUuolyZXGi8TEqg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.40.0': - resolution: {integrity: sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==} + '@rollup/rollup-linux-arm-musleabihf@4.35.0': + resolution: {integrity: sha512-DnYhhzcvTAKNexIql8pFajr0PiDGrIsBYPRvCKlA5ixSS3uwo/CWNZxB09jhIapEIg945KOzcYEAGGSmTSpk7A==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.40.0': - resolution: {integrity: sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==} + '@rollup/rollup-linux-arm64-gnu@4.35.0': + resolution: {integrity: sha512-uagpnH2M2g2b5iLsCTZ35CL1FgyuzzJQ8L9VtlJ+FckBXroTwNOaD0z0/UF+k5K3aNQjbm8LIVpxykUOQt1m/A==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.40.0': - resolution: {integrity: sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==} + '@rollup/rollup-linux-arm64-musl@4.35.0': + resolution: {integrity: sha512-XQxVOCd6VJeHQA/7YcqyV0/88N6ysSVzRjJ9I9UA/xXpEsjvAgDTgH3wQYz5bmr7SPtVK2TsP2fQ2N9L4ukoUg==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loongarch64-gnu@4.40.0': - resolution: {integrity: sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==} + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': + resolution: {integrity: sha512-5pMT5PzfgwcXEwOaSrqVsz/LvjDZt+vQ8RT/70yhPU06PTuq8WaHhfT1LW+cdD7mW6i/J5/XIkX/1tCAkh1W6g==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': - resolution: {integrity: sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==} + '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': + resolution: {integrity: sha512-c+zkcvbhbXF98f4CtEIP1EBA/lCic5xB0lToneZYvMeKu5Kamq3O8gqrxiYYLzlZH6E3Aq+TSW86E4ay8iD8EA==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.40.0': - resolution: {integrity: sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==} + '@rollup/rollup-linux-riscv64-gnu@4.35.0': + resolution: {integrity: sha512-s91fuAHdOwH/Tad2tzTtPX7UZyytHIRR6V4+2IGlV0Cej5rkG0R61SX4l4y9sh0JBibMiploZx3oHKPnQBKe4g==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.40.0': - resolution: {integrity: sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==} - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.40.0': - resolution: {integrity: sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==} + '@rollup/rollup-linux-s390x-gnu@4.35.0': + resolution: {integrity: sha512-hQRkPQPLYJZYGP+Hj4fR9dDBMIM7zrzJDWFEMPdTnTy95Ljnv0/4w/ixFw3pTBMEuuEuoqtBINYND4M7ujcuQw==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.40.0': - resolution: {integrity: sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==} + '@rollup/rollup-linux-x64-gnu@4.35.0': + resolution: {integrity: sha512-Pim1T8rXOri+0HmV4CdKSGrqcBWX0d1HoPnQ0uw0bdp1aP5SdQVNBy8LjYncvnLgu3fnnCt17xjWGd4cqh8/hA==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.40.0': - resolution: {integrity: sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==} + '@rollup/rollup-linux-x64-musl@4.35.0': + resolution: {integrity: sha512-QysqXzYiDvQWfUiTm8XmJNO2zm9yC9P/2Gkrwg2dH9cxotQzunBHYr6jk4SujCTqnfGxduOmQcI7c2ryuW8XVg==} cpu: [x64] os: [linux] - '@rollup/rollup-win32-arm64-msvc@4.40.0': - resolution: {integrity: sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==} + '@rollup/rollup-win32-arm64-msvc@4.35.0': + resolution: {integrity: sha512-OUOlGqPkVJCdJETKOCEf1mw848ZyJ5w50/rZ/3IBQVdLfR5jk/6Sr5m3iO2tdPgwo0x7VcncYuOvMhBWZq8ayg==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.40.0': - resolution: {integrity: sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==} + '@rollup/rollup-win32-ia32-msvc@4.35.0': + resolution: {integrity: sha512-2/lsgejMrtwQe44glq7AFFHLfJBPafpsTa6JvP2NGef/ifOa4KBoglVf7AKN7EV9o32evBPRqfg96fEHzWo5kw==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.40.0': - resolution: {integrity: sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==} + '@rollup/rollup-win32-x64-msvc@4.35.0': + resolution: {integrity: sha512-PIQeY5XDkrOysbQblSW7v3l1MDZzkTEzAfTPkj5VAu3FW8fS4ynyLg2sINp0fp3SjZ8xkRYpLqoKcYqAkhU1dw==} cpu: [x64] os: [win32] @@ -1359,8 +1341,8 @@ packages: svelte: ^5.0.0 vite: '>= 5.0.0' - '@sveltejs/kit@2.20.7': - resolution: {integrity: sha512-dVbLMubpJJSLI4OYB+yWYNHGAhgc2bVevWuBjDj8jFUXIJOAnLwYP3vsmtcgoxNGUXoq0rHS5f7MFCsryb6nzg==} + '@sveltejs/kit@2.20.2': + resolution: {integrity: sha512-Dv8TOAZC9vyfcAB9TMsvUEJsRbklRTeNfcYBPaeH6KnABJ99i3CvCB2eNx8fiiliIqe+9GIchBg4RodRH5p1BQ==} engines: {node: '>=18.13'} hasBin: true peerDependencies: @@ -1383,8 +1365,8 @@ packages: svelte: ^5.0.0 vite: ^6.0.0 - '@swc/helpers@0.5.17': - resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@swc/helpers@0.5.15': + resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==} '@tailwindcss/node@4.1.4': resolution: {integrity: sha512-MT5118zaiO6x6hNA04OWInuAiP1YISXql8Z+/Y8iisV5nuhM8VXlyhRuqc2PEviPszcXI66W44bCIk500Oolhw==} @@ -1488,6 +1470,15 @@ packages: '@tsbb/copy-template-dir@1.4.0': resolution: {integrity: sha512-WXezrpwkm+JGoH5eh/7bngabXriDe7bhqCATWV6e+um8Qw0nNCkE4hfQ791CoiIdSe4LLyzoIfomwH1kR0GYvQ==} + '@turf/boolean-point-in-polygon@7.2.0': + resolution: {integrity: sha512-lvEOjxeXIp+wPXgl9kJA97dqzMfNexjqHou+XHVcfxQgolctoJiRYmcVCWGpiZ9CBf/CJha1KmD1qQoRIsjLaA==} + + '@turf/helpers@7.2.0': + resolution: {integrity: sha512-cXo7bKNZoa7aC7ydLmUR02oB3IgDe7MxiPuRz3cCtYQHn+BJ6h1tihmamYDWWUlPHgSNF0i3ATc4WmDECZafKw==} + + '@turf/invariant@7.2.0': + resolution: {integrity: sha512-kV4u8e7Gkpq+kPbAKNC21CmyrXzlbBgFjO1PhrHPgEdNqXqDawoZ3i6ivE3ULJj2rSesCjduUaC/wyvH/sNr2Q==} + '@types/body-parser@1.19.5': resolution: {integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==} @@ -1503,14 +1494,17 @@ packages: '@types/dlv@1.1.5': resolution: {integrity: sha512-JHOWNfiWepAhfwlSw17kiWrWrk6od2dEQgHltJw9AS0JPFoLZJBge5+Dnil2NfdjAvJ/+vGSX60/BRW20PpUXw==} - '@types/estree@1.0.7': - resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==} + '@types/estree@1.0.6': + resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==} '@types/express-serve-static-core@5.0.6': resolution: {integrity: sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==} - '@types/express@5.0.1': - resolution: {integrity: sha512-UZUw8vjpWFXuDnjFTh7/5c2TWDlQqeXHi6hcN7F2XSVT5P+WmUnnbFS3KA6Jnc6IsEqI2qCVu2bK0R0J4A8ZQQ==} + '@types/express@5.0.0': + resolution: {integrity: sha512-DvZriSMehGHL1ZNLzi6MidnsDhUZM/x2pRdDIKdwbUNqqwHxMlRdkxtn6/EPKyqKpHqTl/4nRZsRNLpZxZRpPQ==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} '@types/glob@8.1.0': resolution: {integrity: sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==} @@ -1527,6 +1521,9 @@ packages: '@types/linkify-it@3.0.5': resolution: {integrity: sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==} + '@types/linkify-it@5.0.0': + resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + '@types/markdown-it@12.2.3': resolution: {integrity: sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==} @@ -1554,8 +1551,11 @@ packages: '@types/node@16.9.1': resolution: {integrity: sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g==} - '@types/node@22.14.1': - resolution: {integrity: sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==} + '@types/node@22.13.10': + resolution: {integrity: sha512-I6LPUvlRH+O6VRUqYOcMudhaIdUVWfsjnZavnsraHvpBwaEyMN29ry+0UVJhImYL16xsscu0aske3yA+uPOWfw==} + + '@types/proj4@2.5.6': + resolution: {integrity: sha512-zfMrPy9fx+8DchqM0kIUGeu2tTVB5ApO1KGAYcSGFS8GoqRIkyL41xq2yCx/iV3sOLzo7v4hEgViSLTiPI1L0w==} '@types/qs@6.9.18': resolution: {integrity: sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==} @@ -1575,51 +1575,51 @@ packages: '@types/tough-cookie@4.0.5': resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} - '@typescript-eslint/eslint-plugin@8.30.1': - resolution: {integrity: sha512-v+VWphxMjn+1t48/jO4t950D6KR8JaJuNXzi33Ve6P8sEmPr5k6CEXjdGwT6+LodVnEa91EQCtwjWNUCPweo+Q==} + '@typescript-eslint/eslint-plugin@8.26.1': + resolution: {integrity: sha512-2X3mwqsj9Bd3Ciz508ZUtoQQYpOhU/kWoUqIf49H8Z0+Vbh6UF/y0OEYp0Q0axOGzaBGs7QxRwq0knSQ8khQNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/parser@8.30.1': - resolution: {integrity: sha512-H+vqmWwT5xoNrXqWs/fesmssOW70gxFlgcMlYcBaWNPIEWDgLa4W9nkSPmhuOgLnXq9QYgkZ31fhDyLhleCsAg==} + '@typescript-eslint/parser@8.26.1': + resolution: {integrity: sha512-w6HZUV4NWxqd8BdeFf81t07d7/YV9s7TCWrQQbG5uhuvGUAW+fq1usZ1Hmz9UPNLniFnD8GLSsDpjP0hm1S4lQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/scope-manager@8.30.1': - resolution: {integrity: sha512-+C0B6ChFXZkuaNDl73FJxRYT0G7ufVPOSQkqkpM/U198wUwUFOtgo1k/QzFh1KjpBitaK7R1tgjVz6o9HmsRPg==} + '@typescript-eslint/scope-manager@8.26.1': + resolution: {integrity: sha512-6EIvbE5cNER8sqBu6V7+KeMZIC1664d2Yjt+B9EWUXrsyWpxx4lEZrmvxgSKRC6gX+efDL/UY9OpPZ267io3mg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.30.1': - resolution: {integrity: sha512-64uBF76bfQiJyHgZISC7vcNz3adqQKIccVoKubyQcOnNcdJBvYOILV1v22Qhsw3tw3VQu5ll8ND6hycgAR5fEA==} + '@typescript-eslint/type-utils@8.26.1': + resolution: {integrity: sha512-Kcj/TagJLwoY/5w9JGEFV0dclQdyqw9+VMndxOJKtoFSjfZhLXhYjzsQEeyza03rwHx2vFEGvrJWJBXKleRvZg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/types@8.30.1': - resolution: {integrity: sha512-81KawPfkuulyWo5QdyG/LOKbspyyiW+p4vpn4bYO7DM/hZImlVnFwrpCTnmNMOt8CvLRr5ojI9nU1Ekpw4RcEw==} + '@typescript-eslint/types@8.26.1': + resolution: {integrity: sha512-n4THUQW27VmQMx+3P+B0Yptl7ydfceUj4ON/AQILAASwgYdZ/2dhfymRMh5egRUrvK5lSmaOm77Ry+lmXPOgBQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.30.1': - resolution: {integrity: sha512-kQQnxymiUy9tTb1F2uep9W6aBiYODgq5EMSk6Nxh4Z+BDUoYUSa029ISs5zTzKBFnexQEh71KqwjKnRz58lusQ==} + '@typescript-eslint/typescript-estree@8.26.1': + resolution: {integrity: sha512-yUwPpUHDgdrv1QJ7YQal3cMVBGWfnuCdKbXw1yyjArax3353rEJP1ZA+4F8nOlQ3RfS2hUN/wze3nlY+ZOhvoA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/utils@8.30.1': - resolution: {integrity: sha512-T/8q4R9En2tcEsWPQgB5BQ0XJVOtfARcUvOa8yJP3fh9M/mXraLxZrkCfGb6ChrO/V3W+Xbd04RacUEqk1CFEQ==} + '@typescript-eslint/utils@8.26.1': + resolution: {integrity: sha512-V4Urxa/XtSUroUrnI7q6yUTD3hDtfJ2jzVfeT3VK0ciizfK2q/zGC0iDh1lFMUZR8cImRrep6/q0xd/1ZGPQpg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - '@typescript-eslint/visitor-keys@8.30.1': - resolution: {integrity: sha512-aEhgas7aJ6vZnNFC7K4/vMGDGyOiqWcYZPpIWrTKuTAlsvDNKy2GFDqh9smL+iq069ZvR0YzEeq0B8NJlLzjFA==} + '@typescript-eslint/visitor-keys@8.26.1': + resolution: {integrity: sha512-AjOC3zfnxd6S4Eiy3jwktJPclqhFHNyd8L6Gycf9WUPoKZpgM5PjkxY1X7uSy61xVpiJDhhk7XT2NVsN3ALTWg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitest/expect@3.1.1': @@ -1730,8 +1730,8 @@ packages: any-promise@1.3.0: resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} - appwrite@17.0.1: - resolution: {integrity: sha512-bTLxle4wasY8uQewr/tdANC4AhQ/AkcaPfMd0L9N4tQecQwUVXow2EhlWh98jURBAMn6cyoN/G46G4w3sVkcOQ==} + appwrite@17.0.2: + resolution: {integrity: sha512-h8frLDRYzFDLS9xA2s8ZSlH/prPFq/ma5477fgQHHLcE/t9RDxNImpq9AleRUb9Oh1YJiP49HCObxgSTGW5AQA==} aproba@2.0.0: resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==} @@ -1770,8 +1770,8 @@ packages: resolution: {integrity: sha512-QbUdXJVTpvUTHU7871ppZkdOLBeGUKBQWHkHrvN2V9IQWGMt61zf3B45BtzjxEJzYuj0JBjBZP/hmYS/R9pmAw==} engines: {node: '>=4'} - axios@1.8.4: - resolution: {integrity: sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==} + axios@1.8.3: + resolution: {integrity: sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} @@ -2055,8 +2055,8 @@ packages: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} - destr@2.0.5: - resolution: {integrity: sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==} + destr@2.0.3: + resolution: {integrity: sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==} detect-libc@1.0.3: resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==} @@ -2112,29 +2112,29 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - embla-carousel-auto-scroll@8.6.0: - resolution: {integrity: sha512-WT9fWhNXFpbQ6kP+aS07oF5IHYLZ1Dx4DkwgCY8Hv2ZyYd2KMCPfMV1q/cA3wFGuLO7GMgKiySLX90/pQkcOdQ==} + embla-carousel-auto-scroll@8.5.2: + resolution: {integrity: sha512-B0QF4vcHRLu7DJwDpgTq5q8qsX4185hOuXfpWPtOlZW+a+QG7ZIN3zTSUTI3Xt0MTWkAB5ZJ0gsFj2zUMKL3ig==} peerDependencies: - embla-carousel: 8.6.0 + embla-carousel: 8.5.2 - embla-carousel-reactive-utils@8.6.0: - resolution: {integrity: sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==} + embla-carousel-reactive-utils@8.5.2: + resolution: {integrity: sha512-QC8/hYSK/pEmqEdU1IO5O+XNc/Ptmmq7uCB44vKplgLKhB/l0+yvYx0+Cv0sF6Ena8Srld5vUErZkT+yTahtDg==} peerDependencies: - embla-carousel: 8.6.0 + embla-carousel: 8.5.2 - embla-carousel-svelte@8.6.0: - resolution: {integrity: sha512-ZDsKk8Sdv+AUTygMYcwZjfRd1DTh+JSUzxkOo8b9iKAkYjg+39mzbY/lwHsE3jXSpKxdKWS69hPSNuzlOGtR2Q==} + embla-carousel-svelte@8.5.2: + resolution: {integrity: sha512-tuzX8df2cMBwBtxJtIGPzUbLFBv0ujT4iOx1wMferFfztE7ebbHoYXrE9/JRjjp8ld+Wsc35yR8fWkuSaSxgpQ==} peerDependencies: svelte: ^3.49.0 || ^4.0.0 || ^5.0.0 - embla-carousel-wheel-gestures@8.0.2: - resolution: {integrity: sha512-gtE8xHRwMGsfsMAgco/QoYhvcxNoMLmFF0DaWH7FXJJWk8RlEZyiZHZRZL6TZVCgooo9/hKyYWITLaSZLIvkbQ==} + embla-carousel-wheel-gestures@8.0.1: + resolution: {integrity: sha512-LMAnruDqDmsjL6UoQD65aLotpmfO49Fsr3H0bMi7I+BH6jbv9OJiE61kN56daKsVtCQEt0SU1MrJslbhtgF3yQ==} engines: {node: '>=10'} peerDependencies: embla-carousel: ^8.0.0 || ~8.0.0-rc03 - embla-carousel@8.6.0: - resolution: {integrity: sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==} + embla-carousel@8.5.2: + resolution: {integrity: sha512-xQ9oVLrun/eCG/7ru3R+I5bJ7shsD8fFwLEY7yPe27/+fDHCNj0OT5EoG5ZbFyOxOcG6yTwW8oTz/dWyFnyGpg==} emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2240,8 +2240,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.24.0: - resolution: {integrity: sha512-eh/jxIEJyZrvbWRe4XuVclLPDYSYYYgLy5zXGGxD6j8zjSAxFEzI2fL/8xNq6O2yKqVt+eF2YhV+hxjV6UKXwQ==} + eslint@9.22.0: + resolution: {integrity: sha512-9V/QURhsRN40xuHXWjV64yvrzMjcz7ZyNoF2jJFmy9j/SLk0u1OLSZgXi28MrXjymnjEGSR80WCdab3RGMDveQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -2388,8 +2388,8 @@ packages: resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==} engines: {node: '>=12.20.0'} - framer-motion@12.7.3: - resolution: {integrity: sha512-dNT4l5gEnUo2ytXLUBUf6AI21dZ77TMclDKE3ElaIHZ8m90nJ/NCcExW51zdSIaS0RhAS5iXcF7bEIxZe8XG2g==} + framer-motion@12.7.4: + resolution: {integrity: sha512-jX0bPsTmU0oPZTYz/dVyD0dmOyEOEJvdn0TaZBE5I8g2GvVnnQnW9f65cJnoVfUkY3WZWNXGXnPbVA9YnaIfVA==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -2435,6 +2435,9 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} deprecated: This package is no longer supported. + geographiclib-geodesic@2.1.1: + resolution: {integrity: sha512-lkd8EUkPSByobWu9BPMHTdYA5AUZxOa8McmUNtBE9KrvUJEvSADnN6gTDmhXbi6NzdA16LtWLpSxLE/lIIRhyA==} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -2499,10 +2502,6 @@ packages: h3@1.15.1: resolution: {integrity: sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==} - happy-dom@17.4.4: - resolution: {integrity: sha512-/Pb0ctk3HTZ5xEL3BZ0hK1AqDSAUuRQitOmROPHhfUYEWpmTImwfD8vFDGADmMAX0JYgbcgxWoLFKtsWhcpuVA==} - engines: {node: '>=18.0.0'} - has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -2526,9 +2525,6 @@ packages: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - highlight.js@11.11.1: resolution: {integrity: sha512-Xwwo44whKBVCYoliBQwaPvtd/2tYFkRQtXDWj1nackaV2JPXx3L0+Jvd8/qCJ2p+ML0/XVkJ2q+Mr+UVdpJK5w==} engines: {node: '>=12.0.0'} @@ -2589,8 +2585,8 @@ packages: resolution: {integrity: sha512-nrLdKLJHHXd8MitwlXK6/h1TSwGaH3X1DZ3z6yMv/tX7dJ12ecLxZ6P5jgKetfIFh8IJwH9fCWMoTA8ixg0VVA==} engines: {node: '>=18.0.0'} - immutable@5.1.1: - resolution: {integrity: sha512-3jatXi9ObIsPGr3N5hGw/vWWcTkq6hUYhpQz4k0wLC+owqWi/LiugIw9x0EdNZ2yGedKN/HzePiBvaJRXa0Ujg==} + immutable@5.0.3: + resolution: {integrity: sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==} import-fresh@3.3.1: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} @@ -2841,8 +2837,8 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} - linkedom@0.18.9: - resolution: {integrity: sha512-Pfvhwjs46nBrcQdauQjMXDJZqj6VwN7KStT84xQqmIgD9bPH6UVJ/ESW8y4VHVF2h7di0/P+f4Iln4U5emRcmg==} + linkedom@0.18.10: + resolution: {integrity: sha512-ESCqVAtme2GI3zZnlVRidiydByV6WmPlmKeFzFVQslADiAO2Wi+H6xL/5kr/pUOESjEoVb2Eb3cYFJ/TQhQOWA==} linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} @@ -2914,8 +2910,8 @@ packages: meilisearch@0.37.0: resolution: {integrity: sha512-LdbK6JmRghCawrmWKJSEQF0OiE82md+YqJGE/U2JcCD8ROwlhTx0KM6NX4rQt0u0VpV0QZVG9umYiu3CSSIJAQ==} - melt@0.29.3: - resolution: {integrity: sha512-cgorPvV3hSTugEnMpjLarugz8YRhUckM48i2gAgNzmqYx2w4hwvEsxA6GRy9DWst5rj+DKSmiDCcFRrHRpg/lA==} + melt@0.29.2: + resolution: {integrity: sha512-x0qR8yE8+x2Bu6s1DRJNAxPBN295ANfTVJ/8UcWsNm/hb7M14ws9G64OFpRExZcI45kdh2KZb1LwHFmNsLwUbQ==} peerDependencies: '@floating-ui/dom': ^1.6.0 svelte: ^5.0.0 @@ -2924,6 +2920,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + mgrs@1.0.0: + resolution: {integrity: sha512-awNbTOqCxK1DBGjalK3xqWIstBZgN6fxsMSiXLs9/spqWkF2pAhb2rrYCFSsr1/tT7PhcDGjZndG8SWYn0byYA==} + microbuffer@1.0.0: resolution: {integrity: sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==} @@ -3006,17 +3005,14 @@ packages: engines: {node: '>=10'} hasBin: true - motion-dom@12.7.3: - resolution: {integrity: sha512-IjMt1YJHrvyvruFvmpmd6bGXXGCvmygrnvSb3aZ8KhOzF4H3PulU+cMBzH+U8TBJHjC/mnmJFRIA1Cu4vBfcBA==} + motion-dom@12.7.4: + resolution: {integrity: sha512-1ZUHAoSUMMxP6jPqyxlk9XUfb6NxMsnWPnH2YGhrOhTURLcXWbETi6eemoKb60Pe32NVJYduL4B62VQSO5Jq8Q==} motion-utils@12.7.2: resolution: {integrity: sha512-XhZwqctxyJs89oX00zn3OGCuIIpVevbTa+u82usWBC6pSHUd2AoNWiYa7Du8tJxJy9TFbZ82pcn5t7NOm1PHAw==} - motion@10.18.0: - resolution: {integrity: sha512-MVAZZmwM/cp77BrNe1TxTMldxRPjwBNHheU5aPToqT4rJdZxLiADk58H+a0al5jKLxkB0OdgNq6DiVn11cjvIQ==} - - motion@12.7.3: - resolution: {integrity: sha512-EGhzIg7vj+USH9SLNLjHRzglldWEletUZTEtBVKW7IJF+1Ig3RI5LnJmHQBNutuOIyeUbcF36MrNFT00etlc3g==} + motion@12.7.4: + resolution: {integrity: sha512-MBGrMbYageHw4iZJn+pGTr7abq5n53jCxYkhFC1It3vYukQPRWg5zij46MnwYGpLR8KG465MLHSASXot9edYOw==} peerDependencies: '@emotion/is-prop-valid': '*' react: ^18.0.0 || ^19.0.0 @@ -3050,13 +3046,13 @@ packages: nan@2.22.2: resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.9: + resolution: {integrity: sha512-SppoicMGpZvbF1l3z4x7No3OlIjP7QJvC9XR7AhZr1kL133KHnKPztkKDc+Ir4aJ/1VhTySrtKhrsycmrMQfvg==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - nanoid@5.1.5: - resolution: {integrity: sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==} + nanoid@5.1.3: + resolution: {integrity: sha512-zAbEOEr7u2CbxwoMRlz/pNSpRP0FdAU4pRaYunCdEezWohXFs+a0Xw7RfkKaezMsmSM1vttcLthJtwRnVtOfHQ==} engines: {node: ^18 || >=20} hasBin: true @@ -3070,8 +3066,8 @@ packages: node-addon-api@7.1.1: resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==} - node-appwrite@15.0.1: - resolution: {integrity: sha512-vewchNVfgxJ1wHmdN2BRSHwoO+trfqKZf5Uq5wXfCHpnVtAtoO2amh8o5mwIfquP6qbZ+DMV25ZXp8MZYxPO7A==} + node-appwrite@16.0.0: + resolution: {integrity: sha512-KLC8bNtZ8T2sxiudYNC0V5UwegxE7+FmLo96a5RuSgRRw3B4WSzs3JYy+WG8p+eZJjg1o1JrQeB7ikUc8qZc0Q==} node-domexception@1.0.0: resolution: {integrity: sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==} @@ -3193,8 +3189,8 @@ packages: parse-bmfont-xml@1.1.6: resolution: {integrity: sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==} - parse-headers@2.0.6: - resolution: {integrity: sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==} + parse-headers@2.0.5: + resolution: {integrity: sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==} parse5-htmlparser2-tree-adapter@7.1.0: resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} @@ -3264,12 +3260,12 @@ packages: resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} engines: {node: '>=12'} - pirates@4.0.7: - resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} engines: {node: '>= 6'} - piscina@4.9.2: - resolution: {integrity: sha512-Fq0FERJWFEUpB4eSY59wSNwXD4RYqR+nR/WiEVcZW8IWfVBxJJafcgTEZDQo8k3w0sUarJ8RyVbbUF4GQ2LGbQ==} + piscina@4.8.0: + resolution: {integrity: sha512-EZJb+ZxDrQf3dihsUL7p42pjNyrNIFJCrRHPMgxu/svsj+P3xS3fuEWp7k2+rfsavfl1N0G29b1HGs7J0m8rZA==} pixelmatch@4.0.2: resolution: {integrity: sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA==} @@ -3279,13 +3275,13 @@ packages: resolution: {integrity: sha512-hMhneYm3GCPyQon88SZrVJx+LlqhM1kZFQbuAgXPoh/Az2YvO1B6bitT9qlhpiTdJlsT5lsr3gPmzoVjb5CDXA==} engines: {node: '>=10'} - playwright-core@1.51.1: - resolution: {integrity: sha512-/crRMj8+j/Nq5s8QcvegseuyeZPxpQCZb6HNk3Sos3BlZyAknRjoyJPFWkpNn8v0+P3WiwqFF8P+zQo4eqiNuw==} + playwright-core@1.51.0: + resolution: {integrity: sha512-x47yPE3Zwhlil7wlNU/iktF7t2r/URR3VLbH6EknJd/04Qc/PSJ0EY3CMXipmglLG+zyRxW6HNo2EGbKLHPWMg==} engines: {node: '>=18'} hasBin: true - playwright@1.51.1: - resolution: {integrity: sha512-kkx+MB2KQRkyxjYPc3a0wLZZoDczmppyGJIvQ43l+aZihkaVvmu/21kiyaHeHjiFxjxNNFnUncKmcGIyOojsaw==} + playwright@1.51.0: + resolution: {integrity: sha512-442pTfGM0xxfCYxuBa/Pu6B2OqxqqaYq39JS8QDMGThUvIOCd6s0ANDog3uwA0cHavVlnTQzGCN7Id2YekDSXA==} engines: {node: '>=18'} hasBin: true @@ -3293,6 +3289,9 @@ packages: resolution: {integrity: sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==} engines: {node: '>=4.0.0'} + point-in-polygon-hao@1.2.4: + resolution: {integrity: sha512-x2pcvXeqhRHlNRdhLs/tgFapAbSSe86wa/eqmj1G6pWftbEs5aVRJhRGM6FYSUERKu0PjekJzMq0gsI2XyiclQ==} + postcss-load-config@3.1.4: resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==} engines: {node: '>= 10'} @@ -3325,8 +3324,8 @@ packages: resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==} engines: {node: ^10 || ^12 || >=14} - posthog-js@1.236.1: - resolution: {integrity: sha512-my3MGaQfBO4FOL0RAW2mCxDkivCyt8KOenYrbeES5D5wh3SQGy0OhDH3boTKO6b6dchsAjieqtOGoRFomKXZ+A==} + posthog-js@1.230.4: + resolution: {integrity: sha512-mxugFjLif0pSlwQ1vYHj92xA0x86foKsRir/IO7TowFzIPk7YL8+nfNvoihmq4ZRomUbQhgzHildsAQDfj6j9w==} peerDependencies: '@rrweb/types': 2.0.0-alpha.17 rrweb-snapshot: 2.0.0-alpha.17 @@ -3336,12 +3335,12 @@ packages: rrweb-snapshot: optional: true - posthog-node@4.11.6: - resolution: {integrity: sha512-fYZSuoKmulyD9RKXyfejbaAs0WZADDb3zj2zJMsN7wjZ5YcbwYG6gybzJt8OBYWNJflu0PsOZhJuY9VnlrJdPg==} + posthog-node@4.10.1: + resolution: {integrity: sha512-rEzVszfaOkUFTjEabDcRLJNRqMwTOeU1WpqKgQEDV3x82O4ODifkvkoCERaPxl/ossi1NtqKXBOZ+XnhQ19pNQ==} engines: {node: '>=15.0.0'} - preact@10.26.5: - resolution: {integrity: sha512-fmpDkgfGU6JYux9teDWLhj9mKN55tyepwYbxHgQuIxbWQzgFg5vk7Mrrtfx7xRxq798ynkY4DDDxZr235Kk+4w==} + preact@10.26.4: + resolution: {integrity: sha512-KJhO7LBFTjP71d83trW+Ilnjbo+ySsaAgCfXOXUlmGzJ4ygYPWmysm77yg4emwfmoz3b22yvH5IsVFHbhUaH5w==} prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} @@ -3424,6 +3423,9 @@ packages: resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} engines: {node: '>= 0.6.0'} + proj4@2.17.0: + resolution: {integrity: sha512-BqVoruVAOUgkw5U9Ns76+E2nHZG0Y42tbkC+0BpyqjhwPIai29hoivyQoyelEKFSfaV3zkR3NqPRD0EwPM4Wug==} + promise-inflight@1.0.1: resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==} peerDependencies: @@ -3488,8 +3490,8 @@ packages: regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - remeda@2.21.3: - resolution: {integrity: sha512-XXrZdLA10oEOQhLLzEJEiFFSKi21REGAkHdImIb4rt/XXy8ORGXh5HCcpUOsElfPNDb+X6TA/+wkh+p2KffYmg==} + remeda@2.21.2: + resolution: {integrity: sha512-wdhkMDou8HRpD7RnxKJ/FHJWEGXRH7jV/pb0NsdLLSoBo+G9RjtxcY41hVhogLfEMkThk6aySKjs+Yd6PnpzBA==} reodotdev@1.0.0: resolution: {integrity: sha512-wXe1vJucZjrhQL0SxOL9EvmJrtbMCIEGMdZX5lj/57n2T3UhBHZsAcM5TQASJ0T6ZBbrETRnMhH33bsbJeRO6Q==} @@ -3520,8 +3522,11 @@ packages: deprecated: Rimraf versions prior to v4 are no longer supported hasBin: true - rollup@4.40.0: - resolution: {integrity: sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==} + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + + rollup@4.35.0: + resolution: {integrity: sha512-kg6oI4g+vc41vePJyO6dHt/yl0Rz3Thv0kJeVQ3D1kS3E5XSuKbPc29G4IpT/Kv1KQwgHVcN+HtyS+HYLNSvQg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -3549,8 +3554,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - sass@1.86.3: - resolution: {integrity: sha512-iGtg8kus4GrsGLRDLRBRHY9dNVA78ZaS7xr01cWnS7PEMQyFtTqBiyCrfpTYTZXRWM94akzckYjh8oADfFNTzw==} + sass@1.85.1: + resolution: {integrity: sha512-Uk8WpxM5v+0cMR0XjX9KfRIacmSG86RH4DCCZjLU2rFh5tyutt9siAXJ7G+YfxQ99Q6wrRMbMlVl6KqUms71ag==} engines: {node: '>=14.0.0'} hasBin: true @@ -3634,8 +3639,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - std-env@3.9.0: - resolution: {integrity: sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==} + std-env@3.8.1: + resolution: {integrity: sha512-vj5lIj3Mwf9D79hBkltk5qmkFI+biIKWS2IBxEyEU3AX1tUf7AoL8nSazCOiiqQsGKIq01SClsKEzweu34uwvA==} string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} @@ -3683,8 +3688,8 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} - svelte-check@4.1.6: - resolution: {integrity: sha512-P7w/6tdSfk3zEVvfsgrp3h3DFC75jCdZjTQvgGJtjPORs1n7/v2VMPIoty3PWv7jnfEm3x0G/p9wH4pecTb0Wg==} + svelte-check@4.1.5: + resolution: {integrity: sha512-Gb0T2IqBNe1tLB9EB1Qh+LOe+JB8wt2/rNBDGvkxQVvk8vNeAoG+vZgFB/3P5+zC7RWlyBlzm9dVjZFph/maIg==} engines: {node: '>= 18.0.0'} hasBin: true peerDependencies: @@ -3719,10 +3724,13 @@ packages: peerDependencies: svelte: ^5.0.0 - svelte@5.27.0: - resolution: {integrity: sha512-Uai13Ydt1ZE+bUHme6b9U38PCYVNCqBRoBMkUKbFbKiD7kHWjdUUrklYAQZJxyKK81qII4mrBwe/YmvEMSlC9w==} + svelte@5.25.6: + resolution: {integrity: sha512-RGkaeAXDuJdvhA1fdSM5GgD++vYfJYijZL0uN6kM2s/TRJ663jktBhZlF0qjzAJGR/34PtaeT3G8MKJY1EKeqg==} engines: {node: '>=18'} + svg-dotted-map@2.0.1: + resolution: {integrity: sha512-eeI2XzIKm23gmSVr7ASTMNVJvxAvBfyL30tN33Y/DcZCJXvC/Br/cxQp9Ts6jDK/e7fkE5TpZStEfduPqPXrIw==} + svg-pathdata@6.0.3: resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} engines: {node: '>=12.0.0'} @@ -3763,8 +3771,8 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} - tailwind-merge@3.2.0: - resolution: {integrity: sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==} + tailwind-merge@3.0.2: + resolution: {integrity: sha512-l7z+OYZ7mu3DTqrL88RiKrKIqO3NcpEO8V/Od04bNpvk0kiIFndGEoqfuzvj4yuhRkHKjRkII2z+KS2HfPcSxw==} tailwindcss@4.1.4: resolution: {integrity: sha512-1ZIUqtPITFbv/DxRmDr5/agPqJwF69d24m9qmM1939TJehgY539CtzeZRjbLt5G6fSy/7YqqYsfvoTEw9xUI2A==} @@ -3802,10 +3810,6 @@ packages: tinyexec@0.3.2: resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} - tinyglobby@0.2.12: - resolution: {integrity: sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==} - engines: {node: '>=12.0.0'} - tinypool@1.0.2: resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3852,8 +3856,8 @@ packages: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} - ts-api-utils@2.1.0: - resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} + ts-api-utils@2.0.1: + resolution: {integrity: sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -3881,27 +3885,27 @@ packages: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} - type-fest@4.40.0: - resolution: {integrity: sha512-ABHZ2/tS2JkvH1PEjxFDTUWC8dB5OsIGZP4IFLhR293GqT5Y5qB1WwL2kMPYhQW9DVgVD8Hd7I8gjwPIf5GFkw==} + type-fest@4.37.0: + resolution: {integrity: sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==} engines: {node: '>=16'} - typescript-eslint@8.30.1: - resolution: {integrity: sha512-D7lC0kcehVH7Mb26MRQi64LMyRJsj3dToJxM1+JVTl53DQSV5/7oUGWQLcKl1C1KnoVHxMMU2FNQMffr7F3Row==} + typescript-eslint@8.26.1: + resolution: {integrity: sha512-t/oIs9mYyrwZGRpDv3g+3K6nZ5uhKEMt2oNmAPwaY4/ye0+EH4nXIPYNtkYFS6QHm+1DFg34DbglYBz5P9Xysg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <5.9.0' - typescript@5.8.3: - resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} + typescript@5.8.2: + resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==} engines: {node: '>=14.17'} hasBin: true uc.micro@2.1.0: resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.6.1: - resolution: {integrity: sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==} + ufo@1.5.4: + resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} uhyphen@0.2.0: resolution: {integrity: sha512-qz3o9CHXmJJPGBdqzab7qAYuW8kQGKNEuoHFYrBwV6hWIMcpAmxDLXojcHfFr9US1Pe6zUswEIJIbLI610fuqA==} @@ -3909,8 +3913,8 @@ packages: uncrypto@0.1.3: resolution: {integrity: sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==} - undici-types@6.21.0: - resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} undici@6.21.2: resolution: {integrity: sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==} @@ -3937,8 +3941,8 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - validator@13.15.0: - resolution: {integrity: sha512-36B2ryl4+oL5QxZ3AzD0t5SsMNGvTtQHpjgFO5tbNxfXbMFkY822ktCDe1MnlqV3301QQI9SLHDNJokDI+Z9pA==} + validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} engines: {node: '>= 0.10'} vaul-svelte@1.0.0-next.7: @@ -3968,8 +3972,8 @@ packages: vite-plugin-manifest-sri@0.2.0: resolution: {integrity: sha512-Zt5jt19xTIJ91LOuQTCtNG7rTFc5OziAjBz2H5NdCGqaOD1nxrWExLhcKW+W4/q8/jOPCg/n5ncYEQmqCxiGQQ==} - vite@6.3.0: - resolution: {integrity: sha512-9aC0n4pr6hIbvi1YOpFjwQ+QOTGssvbJKoeYkuHHGWwlXfdxQlI8L2qNMo9awEEcCPSiS+5mJZk5jH1PAqoDeQ==} + vite@6.2.4: + resolution: {integrity: sha512-veHMSew8CcRzhL5o8ONjy8gkfmFJAd5Ac16oxBUjlwgX3Gq2Wqr+qNC3TjPIpy7TPV/KporLga5GT9HqdrCizw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true peerDependencies: @@ -4066,10 +4070,6 @@ packages: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} - whatwg-mimetype@3.0.0: - resolution: {integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==} - engines: {node: '>=12'} - whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} @@ -4098,6 +4098,9 @@ packages: wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} + wkt-parser@1.5.2: + resolution: {integrity: sha512-1ZUiV1FTwSiSrgWzV9KXJuOF2BVW91KY/mau04BhnmgOdroRQea7Q0s5TVqwGLm0D2tZwObd/tBYXW49sSxp3Q==} + word-wrap@1.2.5: resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} engines: {node: '>=0.10.0'} @@ -4165,8 +4168,8 @@ packages: resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} engines: {node: '>= 6'} - yaml@2.7.1: - resolution: {integrity: sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==} + yaml@2.7.0: + resolution: {integrity: sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==} engines: {node: '>= 14'} hasBin: true @@ -4193,8 +4196,8 @@ packages: zimmerframe@1.1.2: resolution: {integrity: sha512-rAbqEGa8ovJy4pyBxZM70hg4pE6gDgaQ0Sl9M3enG3I0d6H4XSAM3GeNGLKnsBpuijUow064sf7ww1nutC5/3w==} - zod@3.24.2: - resolution: {integrity: sha512-lY7CDW43ECgW9u1TcT3IoXHflywfVqDYze4waEz812jR/bZ8FHDsl7pFQoSZTz5N+2NqRXs8GBwnAwo3ZNxqhQ==} + zod@3.24.4: + resolution: {integrity: sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==} snapshots: @@ -4249,47 +4252,47 @@ snapshots: normalize.css: 8.0.1 the-new-css-reset: 1.11.3 - '@appwrite.io/repo@https://codeload.github.com/appwrite/appwrite/tar.gz/72087298056c5db3dca81d2ca66725dcf47d41bb': {} + '@appwrite.io/repo@https://codeload.github.com/appwrite/appwrite/tar.gz/45e5509113f568190c66d491aa1145069c6d124c': {} '@asamuzakjp/css-color@3.2.0': dependencies: - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-color-parser': 3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-color-parser': 3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 optional: true - '@babel/runtime@7.27.0': + '@babel/runtime@7.26.10': dependencies: regenerator-runtime: 0.14.1 '@csstools/color-helpers@5.0.2': optional: true - '@csstools/css-calc@2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 optional: true - '@csstools/css-color-parser@3.0.9(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-color-parser@3.0.10(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.0.2 - '@csstools/css-calc': 2.1.3(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3) - '@csstools/css-parser-algorithms': 3.0.4(@csstools/css-tokenizer@3.0.3) - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-calc': 2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4) + '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) + '@csstools/css-tokenizer': 3.0.4 optional: true - '@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3)': + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: - '@csstools/css-tokenizer': 3.0.3 + '@csstools/css-tokenizer': 3.0.4 optional: true - '@csstools/css-tokenizer@3.0.3': + '@csstools/css-tokenizer@3.0.4': optional: true - '@emnapi/runtime@1.4.3': + '@emnapi/runtime@1.3.1': dependencies: tslib: 2.8.1 optional: true @@ -4369,18 +4372,18 @@ snapshots: '@esbuild/win32-x64@0.25.2': optional: true - '@eslint-community/eslint-utils@4.6.1(eslint@9.24.0(jiti@2.4.2))': + '@eslint-community/eslint-utils@4.5.1(eslint@9.22.0(jiti@2.4.2))': dependencies: - eslint: 9.24.0(jiti@2.4.2) + eslint: 9.22.0(jiti@2.4.2) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} - '@eslint/compat@1.2.8(eslint@9.24.0(jiti@2.4.2))': + '@eslint/compat@1.2.7(eslint@9.22.0(jiti@2.4.2))': optionalDependencies: - eslint: 9.24.0(jiti@2.4.2) + eslint: 9.22.0(jiti@2.4.2) - '@eslint/config-array@0.20.0': + '@eslint/config-array@0.19.2': dependencies: '@eslint/object-schema': 2.1.6 debug: 4.4.0 @@ -4388,17 +4391,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.2.1': {} + '@eslint/config-helpers@0.1.0': {} '@eslint/core@0.12.0': dependencies: '@types/json-schema': 7.0.15 - '@eslint/core@0.13.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.1': + '@eslint/eslintrc@3.3.0': dependencies: ajv: 6.12.6 debug: 4.4.0 @@ -4412,16 +4411,16 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.24.0': {} + '@eslint/js@9.22.0': {} '@eslint/object-schema@2.1.6': {} - '@eslint/plugin-kit@0.2.8': + '@eslint/plugin-kit@0.2.7': dependencies: - '@eslint/core': 0.13.0 + '@eslint/core': 0.12.0 levn: 0.4.1 - '@fingerprintjs/fingerprintjs@4.6.2': + '@fingerprintjs/fingerprintjs@4.6.1': dependencies: tslib: 2.8.1 @@ -4517,7 +4516,7 @@ snapshots: '@img/sharp-wasm32@0.33.5': dependencies: - '@emnapi/runtime': 1.4.3 + '@emnapi/runtime': 1.3.1 optional: true '@img/sharp-win32-ia32@0.33.5': @@ -4528,11 +4527,11 @@ snapshots: '@internationalized/date@3.5.0': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.15 '@internationalized/date@3.8.0': dependencies: - '@swc/helpers': 0.5.17 + '@swc/helpers': 0.5.15 '@isaacs/cliui@8.0.2': dependencies: @@ -4549,14 +4548,14 @@ snapshots: '@jimp/bmp@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 bmp-js: 0.1.0 '@jimp/core@0.16.13': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/utils': 0.16.13 any-base: 1.1.0 buffer: 5.7.1 @@ -4572,14 +4571,14 @@ snapshots: '@jimp/custom@0.16.13': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/core': 0.16.13 transitivePeerDependencies: - debug '@jimp/gif@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 gifwrap: 0.9.4 @@ -4587,39 +4586,39 @@ snapshots: '@jimp/jpeg@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 jpeg-js: 0.4.4 '@jimp/plugin-blit@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-blur@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-circle@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-color@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 tinycolor2: 1.6.0 '@jimp/plugin-contain@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-scale@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13)))': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugin-blit': 0.16.13(@jimp/custom@0.16.13) '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) @@ -4628,7 +4627,7 @@ snapshots: '@jimp/plugin-cover@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-crop@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-scale@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13)))': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugin-crop': 0.16.13(@jimp/custom@0.16.13) '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) @@ -4637,62 +4636,62 @@ snapshots: '@jimp/plugin-crop@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-displace@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-dither@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-fisheye@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-flip@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-rotate@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-crop@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13)))': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugin-rotate': 0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-crop@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13)) '@jimp/utils': 0.16.13 '@jimp/plugin-gaussian@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-invert@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-mask@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-normalize@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-print@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13(@jimp/custom@0.16.13))': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugin-blit': 0.16.13(@jimp/custom@0.16.13) '@jimp/utils': 0.16.13 @@ -4702,13 +4701,13 @@ snapshots: '@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 '@jimp/plugin-rotate@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blit@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-crop@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13))': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugin-blit': 0.16.13(@jimp/custom@0.16.13) '@jimp/plugin-crop': 0.16.13(@jimp/custom@0.16.13) @@ -4717,14 +4716,14 @@ snapshots: '@jimp/plugin-scale@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13))': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) '@jimp/utils': 0.16.13 '@jimp/plugin-shadow@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-blur@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13))': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugin-blur': 0.16.13(@jimp/custom@0.16.13) '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) @@ -4732,7 +4731,7 @@ snapshots: '@jimp/plugin-threshold@0.16.13(@jimp/custom@0.16.13)(@jimp/plugin-color@0.16.13(@jimp/custom@0.16.13))(@jimp/plugin-resize@0.16.13(@jimp/custom@0.16.13))': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugin-color': 0.16.13(@jimp/custom@0.16.13) '@jimp/plugin-resize': 0.16.13(@jimp/custom@0.16.13) @@ -4740,7 +4739,7 @@ snapshots: '@jimp/plugins@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugin-blit': 0.16.13(@jimp/custom@0.16.13) '@jimp/plugin-blur': 0.16.13(@jimp/custom@0.16.13) @@ -4769,20 +4768,20 @@ snapshots: '@jimp/png@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/utils': 0.16.13 pngjs: 3.4.0 '@jimp/tiff@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 utif: 2.0.1 '@jimp/types@0.16.13(@jimp/custom@0.16.13)': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/bmp': 0.16.13(@jimp/custom@0.16.13) '@jimp/custom': 0.16.13 '@jimp/gif': 0.16.13(@jimp/custom@0.16.13) @@ -4793,7 +4792,7 @@ snapshots: '@jimp/utils@0.16.13': dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 regenerator-runtime: 0.13.11 '@jridgewell/gen-mapping@0.3.8': @@ -4818,57 +4817,22 @@ snapshots: '@types/linkify-it': 3.0.5 '@types/markdown-it': 12.2.3 - '@melt-ui/pp@0.3.2(@melt-ui/svelte@0.86.6(svelte@5.27.0))(svelte@5.27.0)': + '@melt-ui/pp@0.3.2(@melt-ui/svelte@0.86.6(svelte@5.25.6))(svelte@5.25.6)': dependencies: - '@melt-ui/svelte': 0.86.6(svelte@5.27.0) + '@melt-ui/svelte': 0.86.6(svelte@5.25.6) estree-walker: 3.0.3 magic-string: 0.30.17 - svelte: 5.27.0 + svelte: 5.25.6 - '@melt-ui/svelte@0.86.6(svelte@5.27.0)': + '@melt-ui/svelte@0.86.6(svelte@5.25.6)': dependencies: '@floating-ui/core': 1.6.9 '@floating-ui/dom': 1.6.13 '@internationalized/date': 3.5.0 dequal: 2.0.3 focus-trap: 7.6.4 - nanoid: 5.1.5 - svelte: 5.27.0 - - '@motionone/animation@10.18.0': - dependencies: - '@motionone/easing': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/dom@10.18.0': - dependencies: - '@motionone/animation': 10.18.0 - '@motionone/generators': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - hey-listen: 1.0.8 - tslib: 2.8.1 - - '@motionone/easing@10.18.0': - dependencies: - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/generators@10.18.0': - dependencies: - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - tslib: 2.8.1 - - '@motionone/types@10.17.1': {} - - '@motionone/utils@10.18.0': - dependencies: - '@motionone/types': 10.17.1 - hey-listen: 1.0.8 - tslib: 2.8.1 + nanoid: 5.1.3 + svelte: 5.25.6 '@napi-rs/nice-android-arm-eabi@1.0.1': optional: true @@ -4960,11 +4924,11 @@ snapshots: mkdirp: 1.0.4 rimraf: 3.0.2 - '@number-flow/svelte@0.3.7(svelte@5.27.0)': + '@number-flow/svelte@0.3.7(svelte@5.25.6)': dependencies: esm-env: 1.2.2 number-flow: 0.5.7 - svelte: 5.27.0 + svelte: 5.25.6 '@parcel/watcher-android-arm64@2.5.1': optional: true @@ -5030,11 +4994,11 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/test@1.51.1': + '@playwright/test@1.51.0': dependencies: - playwright: 1.51.1 + playwright: 1.51.0 - '@polka/url@1.0.0-next.29': {} + '@polka/url@1.0.0-next.28': {} '@resvg/resvg-js-android-arm-eabi@2.6.2': optional: true @@ -5087,9 +5051,9 @@ snapshots: '@resvg/resvg-js-win32-ia32-msvc': 2.6.2 '@resvg/resvg-js-win32-x64-msvc': 2.6.2 - '@rollup/plugin-commonjs@28.0.3(rollup@4.40.0)': + '@rollup/plugin-commonjs@28.0.3(rollup@4.35.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.0) + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.4.3(picomatch@4.0.2) @@ -5097,90 +5061,87 @@ snapshots: magic-string: 0.30.17 picomatch: 4.0.2 optionalDependencies: - rollup: 4.40.0 + rollup: 4.35.0 - '@rollup/plugin-json@6.1.0(rollup@4.40.0)': + '@rollup/plugin-json@6.1.0(rollup@4.35.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.0) + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) optionalDependencies: - rollup: 4.40.0 + rollup: 4.35.0 - '@rollup/plugin-node-resolve@16.0.1(rollup@4.40.0)': + '@rollup/plugin-node-resolve@16.0.1(rollup@4.35.0)': dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.0) + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.10 optionalDependencies: - rollup: 4.40.0 + rollup: 4.35.0 - '@rollup/pluginutils@5.1.4(rollup@4.40.0)': + '@rollup/pluginutils@5.1.4(rollup@4.35.0)': dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.6 estree-walker: 2.0.2 picomatch: 4.0.2 optionalDependencies: - rollup: 4.40.0 + rollup: 4.35.0 - '@rollup/rollup-android-arm-eabi@4.40.0': + '@rollup/rollup-android-arm-eabi@4.35.0': optional: true - '@rollup/rollup-android-arm64@4.40.0': + '@rollup/rollup-android-arm64@4.35.0': optional: true - '@rollup/rollup-darwin-arm64@4.40.0': + '@rollup/rollup-darwin-arm64@4.35.0': optional: true - '@rollup/rollup-darwin-x64@4.40.0': + '@rollup/rollup-darwin-x64@4.35.0': optional: true - '@rollup/rollup-freebsd-arm64@4.40.0': + '@rollup/rollup-freebsd-arm64@4.35.0': optional: true - '@rollup/rollup-freebsd-x64@4.40.0': + '@rollup/rollup-freebsd-x64@4.35.0': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.40.0': + '@rollup/rollup-linux-arm-gnueabihf@4.35.0': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.40.0': + '@rollup/rollup-linux-arm-musleabihf@4.35.0': optional: true - '@rollup/rollup-linux-arm64-gnu@4.40.0': + '@rollup/rollup-linux-arm64-gnu@4.35.0': optional: true - '@rollup/rollup-linux-arm64-musl@4.40.0': + '@rollup/rollup-linux-arm64-musl@4.35.0': optional: true - '@rollup/rollup-linux-loongarch64-gnu@4.40.0': + '@rollup/rollup-linux-loongarch64-gnu@4.35.0': optional: true - '@rollup/rollup-linux-powerpc64le-gnu@4.40.0': + '@rollup/rollup-linux-powerpc64le-gnu@4.35.0': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.40.0': + '@rollup/rollup-linux-riscv64-gnu@4.35.0': optional: true - '@rollup/rollup-linux-riscv64-musl@4.40.0': + '@rollup/rollup-linux-s390x-gnu@4.35.0': optional: true - '@rollup/rollup-linux-s390x-gnu@4.40.0': + '@rollup/rollup-linux-x64-gnu@4.35.0': optional: true - '@rollup/rollup-linux-x64-gnu@4.40.0': + '@rollup/rollup-linux-x64-musl@4.35.0': optional: true - '@rollup/rollup-linux-x64-musl@4.40.0': + '@rollup/rollup-win32-arm64-msvc@4.35.0': optional: true - '@rollup/rollup-win32-arm64-msvc@4.40.0': + '@rollup/rollup-win32-ia32-msvc@4.35.0': optional: true - '@rollup/rollup-win32-ia32-msvc@4.40.0': - optional: true - - '@rollup/rollup-win32-x64-msvc@4.40.0': + '@rollup/rollup-win32-x64-msvc@4.35.0': optional: true '@sinclair/typebox@0.27.8': {} @@ -5189,29 +5150,29 @@ snapshots: dependencies: acorn: 8.14.1 - '@sveltejs/adapter-node@5.2.12(@sveltejs/kit@2.20.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)))(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)))': + '@sveltejs/adapter-node@5.2.12(@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)))(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)))': dependencies: - '@rollup/plugin-commonjs': 28.0.3(rollup@4.40.0) - '@rollup/plugin-json': 6.1.0(rollup@4.40.0) - '@rollup/plugin-node-resolve': 16.0.1(rollup@4.40.0) - '@sveltejs/kit': 2.20.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)))(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) - rollup: 4.40.0 + '@rollup/plugin-commonjs': 28.0.3(rollup@4.35.0) + '@rollup/plugin-json': 6.1.0(rollup@4.35.0) + '@rollup/plugin-node-resolve': 16.0.1(rollup@4.35.0) + '@sveltejs/kit': 2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)))(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) + rollup: 4.35.0 - '@sveltejs/enhanced-img@0.4.4(rollup@4.40.0)(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1))': + '@sveltejs/enhanced-img@0.4.4(rollup@4.35.0)(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0))': dependencies: magic-string: 0.30.17 sharp: 0.33.5 - svelte: 5.27.0 - svelte-parse-markup: 0.1.5(svelte@5.27.0) - vite: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) - vite-imagetools: 7.0.5(rollup@4.40.0) + svelte: 5.25.6 + svelte-parse-markup: 0.1.5(svelte@5.25.6) + vite: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) + vite-imagetools: 7.0.5(rollup@4.35.0) zimmerframe: 1.1.2 transitivePeerDependencies: - rollup - '@sveltejs/kit@2.20.7(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)))(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1))': + '@sveltejs/kit@2.20.2(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)))(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.1.1 @@ -5223,32 +5184,32 @@ snapshots: sade: 1.8.1 set-cookie-parser: 2.7.1 sirv: 3.0.1 - svelte: 5.27.0 - vite: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) + svelte: 5.25.6 + vite: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) - '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)))(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1))': + '@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)))(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) + '@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) debug: 4.4.0 - svelte: 5.27.0 - vite: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) + svelte: 5.25.6 + vite: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1))': + '@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)))(svelte@5.27.0)(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) + '@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)))(svelte@5.25.6)(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) debug: 4.4.0 deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.17 - svelte: 5.27.0 - vite: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) - vitefu: 1.0.6(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) + svelte: 5.25.6 + vite: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) + vitefu: 1.0.6(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) transitivePeerDependencies: - supports-color - '@swc/helpers@0.5.17': + '@swc/helpers@0.5.15': dependencies: tslib: 2.8.1 @@ -5336,48 +5297,70 @@ snapshots: readdirp: 3.6.0 run-parallel: 1.2.0 + '@turf/boolean-point-in-polygon@7.2.0': + dependencies: + '@turf/helpers': 7.2.0 + '@turf/invariant': 7.2.0 + '@types/geojson': 7946.0.16 + point-in-polygon-hao: 1.2.4 + tslib: 2.8.1 + + '@turf/helpers@7.2.0': + dependencies: + '@types/geojson': 7946.0.16 + tslib: 2.8.1 + + '@turf/invariant@7.2.0': + dependencies: + '@turf/helpers': 7.2.0 + '@types/geojson': 7946.0.16 + tslib: 2.8.1 + '@types/body-parser@1.19.5': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.14.1 + '@types/node': 22.13.10 '@types/compression@1.7.5': dependencies: - '@types/express': 5.0.1 + '@types/express': 5.0.0 '@types/connect@3.4.38': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.13.10 '@types/cookie@0.6.0': {} '@types/dlv@1.1.5': {} - '@types/estree@1.0.7': {} + '@types/estree@1.0.6': {} '@types/express-serve-static-core@5.0.6': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.13.10 '@types/qs': 6.9.18 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 - '@types/express@5.0.1': + '@types/express@5.0.0': dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 5.0.6 + '@types/qs': 6.9.18 '@types/serve-static': 1.15.7 + '@types/geojson@7946.0.16': {} + '@types/glob@8.1.0': dependencies: '@types/minimatch': 5.1.2 - '@types/node': 22.14.1 + '@types/node': 22.13.10 '@types/http-errors@2.0.4': {} '@types/jsdom@21.1.7': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.13.10 '@types/tough-cookie': 4.0.5 parse5: 7.2.1 @@ -5385,9 +5368,12 @@ snapshots: '@types/linkify-it@3.0.5': {} + '@types/linkify-it@5.0.0': + optional: true + '@types/markdown-it@12.2.3': dependencies: - '@types/linkify-it': 3.0.5 + '@types/linkify-it': 5.0.0 '@types/mdurl': 2.0.0 optional: true @@ -5409,13 +5395,15 @@ snapshots: '@types/morgan@1.9.9': dependencies: - '@types/node': 22.14.1 + '@types/node': 22.13.10 '@types/node@16.9.1': {} - '@types/node@22.14.1': + '@types/node@22.13.10': dependencies: - undici-types: 6.21.0 + undici-types: 6.20.0 + + '@types/proj4@2.5.6': {} '@types/qs@6.9.18': {} @@ -5426,91 +5414,91 @@ snapshots: '@types/send@0.17.4': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.14.1 + '@types/node': 22.13.10 '@types/serve-static@1.15.7': dependencies: '@types/http-errors': 2.0.4 - '@types/node': 22.14.1 + '@types/node': 22.13.10 '@types/send': 0.17.4 '@types/tough-cookie@4.0.5': {} - '@typescript-eslint/eslint-plugin@8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/eslint-plugin@8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/scope-manager': 8.30.1 - '@typescript-eslint/type-utils': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.30.1 - eslint: 9.24.0(jiti@2.4.2) + '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/scope-manager': 8.26.1 + '@typescript-eslint/type-utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.26.1 + eslint: 9.22.0(jiti@2.4.2) graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@typescript-eslint/scope-manager': 8.30.1 - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) - '@typescript-eslint/visitor-keys': 8.30.1 + '@typescript-eslint/scope-manager': 8.26.1 + '@typescript-eslint/types': 8.26.1 + '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) + '@typescript-eslint/visitor-keys': 8.26.1 debug: 4.4.0 - eslint: 9.24.0(jiti@2.4.2) - typescript: 5.8.3 + eslint: 9.22.0(jiti@2.4.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.30.1': + '@typescript-eslint/scope-manager@8.26.1': dependencies: - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/visitor-keys': 8.30.1 + '@typescript-eslint/types': 8.26.1 + '@typescript-eslint/visitor-keys': 8.26.1 - '@typescript-eslint/type-utils@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/type-utils@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) - '@typescript-eslint/utils': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) + '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) + '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) debug: 4.4.0 - eslint: 9.24.0(jiti@2.4.2) - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + eslint: 9.22.0(jiti@2.4.2) + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.30.1': {} + '@typescript-eslint/types@8.26.1': {} - '@typescript-eslint/typescript-estree@8.30.1(typescript@5.8.3)': + '@typescript-eslint/typescript-estree@8.26.1(typescript@5.8.2)': dependencies: - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/visitor-keys': 8.30.1 + '@typescript-eslint/types': 8.26.1 + '@typescript-eslint/visitor-keys': 8.26.1 debug: 4.4.0 fast-glob: 3.3.3 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.7.1 - ts-api-utils: 2.1.0(typescript@5.8.3) - typescript: 5.8.3 + ts-api-utils: 2.0.1(typescript@5.8.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3)': + '@typescript-eslint/utils@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2)': dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.24.0(jiti@2.4.2)) - '@typescript-eslint/scope-manager': 8.30.1 - '@typescript-eslint/types': 8.30.1 - '@typescript-eslint/typescript-estree': 8.30.1(typescript@5.8.3) - eslint: 9.24.0(jiti@2.4.2) - typescript: 5.8.3 + '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@2.4.2)) + '@typescript-eslint/scope-manager': 8.26.1 + '@typescript-eslint/types': 8.26.1 + '@typescript-eslint/typescript-estree': 8.26.1(typescript@5.8.2) + eslint: 9.22.0(jiti@2.4.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.30.1': + '@typescript-eslint/visitor-keys@8.26.1': dependencies: - '@typescript-eslint/types': 8.30.1 + '@typescript-eslint/types': 8.26.1 eslint-visitor-keys: 4.2.0 '@vitest/expect@3.1.1': @@ -5520,13 +5508,13 @@ snapshots: chai: 5.2.0 tinyrainbow: 2.0.0 - '@vitest/mocker@3.1.1(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1))': + '@vitest/mocker@3.1.1(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0))': dependencies: '@vitest/spy': 3.1.1 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) + vite: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) '@vitest/pretty-format@3.1.1': dependencies: @@ -5623,7 +5611,7 @@ snapshots: any-promise@1.3.0: {} - appwrite@17.0.1: {} + appwrite@17.0.2: {} aproba@2.0.0: {} @@ -5656,7 +5644,7 @@ snapshots: axe-core@4.9.1: {} - axios@1.8.4: + axios@1.8.3: dependencies: follow-redirects: 1.15.9 form-data: 4.0.2 @@ -5674,15 +5662,15 @@ snapshots: dependencies: file-uri-to-path: 1.0.0 - bits-ui@1.3.19(svelte@5.27.0): + bits-ui@1.3.19(svelte@5.25.6): dependencies: '@floating-ui/core': 1.6.9 '@floating-ui/dom': 1.6.13 '@internationalized/date': 3.8.0 esm-env: 1.2.2 - runed: 0.23.4(svelte@5.27.0) - svelte: 5.27.0 - svelte-toolbelt: 0.7.1(svelte@5.27.0) + runed: 0.23.4(svelte@5.25.6) + svelte: 5.25.6 + svelte-toolbelt: 0.7.1(svelte@5.25.6) tabbable: 6.2.0 bmp-js@0.1.0: {} @@ -5967,7 +5955,7 @@ snapshots: dequal@2.0.3: {} - destr@2.0.5: {} + destr@2.0.3: {} detect-libc@1.0.3: optional: true @@ -6018,26 +6006,26 @@ snapshots: dependencies: jake: 10.9.2 - embla-carousel-auto-scroll@8.6.0(embla-carousel@8.6.0): + embla-carousel-auto-scroll@8.5.2(embla-carousel@8.5.2): dependencies: - embla-carousel: 8.6.0 + embla-carousel: 8.5.2 - embla-carousel-reactive-utils@8.6.0(embla-carousel@8.6.0): + embla-carousel-reactive-utils@8.5.2(embla-carousel@8.5.2): dependencies: - embla-carousel: 8.6.0 + embla-carousel: 8.5.2 - embla-carousel-svelte@8.6.0(svelte@5.27.0): + embla-carousel-svelte@8.5.2(svelte@5.25.6): dependencies: - embla-carousel: 8.6.0 - embla-carousel-reactive-utils: 8.6.0(embla-carousel@8.6.0) - svelte: 5.27.0 + embla-carousel: 8.5.2 + embla-carousel-reactive-utils: 8.5.2(embla-carousel@8.5.2) + svelte: 5.25.6 - embla-carousel-wheel-gestures@8.0.2(embla-carousel@8.6.0): + embla-carousel-wheel-gestures@8.0.1(embla-carousel@8.5.2): dependencies: - embla-carousel: 8.6.0 + embla-carousel: 8.5.2 wheel-gestures: 2.2.48 - embla-carousel@8.6.0: {} + embla-carousel@8.5.2: {} emoji-regex@8.0.0: {} @@ -6119,21 +6107,21 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-compat-utils@0.5.1(eslint@9.24.0(jiti@2.4.2)): + eslint-compat-utils@0.5.1(eslint@9.22.0(jiti@2.4.2)): dependencies: - eslint: 9.24.0(jiti@2.4.2) + eslint: 9.22.0(jiti@2.4.2) semver: 7.7.1 - eslint-config-prettier@9.1.0(eslint@9.24.0(jiti@2.4.2)): + eslint-config-prettier@9.1.0(eslint@9.22.0(jiti@2.4.2)): dependencies: - eslint: 9.24.0(jiti@2.4.2) + eslint: 9.22.0(jiti@2.4.2) - eslint-plugin-svelte@2.46.1(eslint@9.24.0(jiti@2.4.2))(svelte@5.27.0): + eslint-plugin-svelte@2.46.1(eslint@9.22.0(jiti@2.4.2))(svelte@5.25.6): dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.24.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@2.4.2)) '@jridgewell/sourcemap-codec': 1.5.0 - eslint: 9.24.0(jiti@2.4.2) - eslint-compat-utils: 0.5.1(eslint@9.24.0(jiti@2.4.2)) + eslint: 9.22.0(jiti@2.4.2) + eslint-compat-utils: 0.5.1(eslint@9.22.0(jiti@2.4.2)) esutils: 2.0.3 known-css-properties: 0.35.0 postcss: 8.5.3 @@ -6141,9 +6129,9 @@ snapshots: postcss-safe-parser: 6.0.0(postcss@8.5.3) postcss-selector-parser: 6.1.2 semver: 7.7.1 - svelte-eslint-parser: 0.43.0(svelte@5.27.0) + svelte-eslint-parser: 0.43.0(svelte@5.25.6) optionalDependencies: - svelte: 5.27.0 + svelte: 5.25.6 transitivePeerDependencies: - ts-node @@ -6161,20 +6149,20 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.24.0(jiti@2.4.2): + eslint@9.22.0(jiti@2.4.2): dependencies: - '@eslint-community/eslint-utils': 4.6.1(eslint@9.24.0(jiti@2.4.2)) + '@eslint-community/eslint-utils': 4.5.1(eslint@9.22.0(jiti@2.4.2)) '@eslint-community/regexpp': 4.12.1 - '@eslint/config-array': 0.20.0 - '@eslint/config-helpers': 0.2.1 + '@eslint/config-array': 0.19.2 + '@eslint/config-helpers': 0.1.0 '@eslint/core': 0.12.0 - '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.24.0 - '@eslint/plugin-kit': 0.2.8 + '@eslint/eslintrc': 3.3.0 + '@eslint/js': 9.22.0 + '@eslint/plugin-kit': 0.2.7 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.4.2 - '@types/estree': 1.0.7 + '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 @@ -6235,7 +6223,7 @@ snapshots: estree-walker@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.6 esutils@2.0.3: {} @@ -6332,9 +6320,9 @@ snapshots: dependencies: fetch-blob: 3.2.0 - framer-motion@12.7.3: + framer-motion@12.7.4: dependencies: - motion-dom: 12.7.3 + motion-dom: 12.7.4 motion-utils: 12.7.2 tslib: 2.8.1 @@ -6371,6 +6359,8 @@ snapshots: strip-ansi: 6.0.1 wide-align: 1.1.5 + geographiclib-geodesic@2.1.1: {} + get-caller-file@2.0.5: {} get-intrinsic@1.3.0: @@ -6459,19 +6449,13 @@ snapshots: cookie-es: 1.2.2 crossws: 0.3.4 defu: 6.1.4 - destr: 2.0.5 + destr: 2.0.3 iron-webcrypto: 1.2.1 node-mock-http: 1.0.0 radix3: 1.1.2 - ufo: 1.6.1 + ufo: 1.5.4 uncrypto: 0.1.3 - happy-dom@17.4.4: - dependencies: - webidl-conversions: 7.0.0 - whatwg-mimetype: 3.0.0 - optional: true - has-flag@4.0.0: {} has-symbols@1.1.0: {} @@ -6488,8 +6472,6 @@ snapshots: he@1.2.0: {} - hey-listen@1.0.8: {} - highlight.js@11.11.1: {} html-encoding-sniffer@4.0.0: @@ -6566,7 +6548,7 @@ snapshots: imagetools-core@7.0.2: {} - immutable@5.1.1: {} + immutable@5.0.3: {} import-fresh@3.3.1: dependencies: @@ -6630,11 +6612,11 @@ snapshots: is-reference@1.2.1: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.6 is-reference@3.0.3: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.6 isarray@1.0.0: {} @@ -6678,7 +6660,7 @@ snapshots: jimp@0.16.13: dependencies: - '@babel/runtime': 7.27.0 + '@babel/runtime': 7.26.10 '@jimp/custom': 0.16.13 '@jimp/plugins': 0.16.13(@jimp/custom@0.16.13) '@jimp/types': 0.16.13(@jimp/custom@0.16.13) @@ -6807,7 +6789,7 @@ snapshots: lines-and-columns@1.2.4: {} - linkedom@0.18.9: + linkedom@0.18.10: dependencies: css-select: 5.1.0 cssom: 0.5.0 @@ -6910,17 +6892,19 @@ snapshots: transitivePeerDependencies: - encoding - melt@0.29.3(@floating-ui/dom@1.6.13)(svelte@5.27.0): + melt@0.29.2(@floating-ui/dom@1.6.13)(svelte@5.25.6): dependencies: '@floating-ui/dom': 1.6.13 dequal: 2.0.3 jest-axe: 9.0.0 - nanoid: 5.1.5 - runed: 0.23.4(svelte@5.27.0) - svelte: 5.27.0 + nanoid: 5.1.3 + runed: 0.23.4(svelte@5.25.6) + svelte: 5.25.6 merge2@1.4.1: {} + mgrs@1.0.0: {} + microbuffer@1.0.0: {} micromatch@4.0.8: @@ -6997,22 +6981,15 @@ snapshots: mkdirp@1.0.4: {} - motion-dom@12.7.3: + motion-dom@12.7.4: dependencies: motion-utils: 12.7.2 motion-utils@12.7.2: {} - motion@10.18.0: + motion@12.7.4: dependencies: - '@motionone/animation': 10.18.0 - '@motionone/dom': 10.18.0 - '@motionone/types': 10.17.1 - '@motionone/utils': 10.18.0 - - motion@12.7.3: - dependencies: - framer-motion: 12.7.3 + framer-motion: 12.7.4 tslib: 2.8.1 move-file@2.1.0: @@ -7033,9 +7010,9 @@ snapshots: nan@2.22.2: {} - nanoid@3.3.11: {} + nanoid@3.3.9: {} - nanoid@5.1.5: {} + nanoid@5.1.3: {} natural-compare@1.4.0: {} @@ -7044,7 +7021,7 @@ snapshots: node-addon-api@7.1.1: optional: true - node-appwrite@15.0.1: + node-appwrite@16.0.0: dependencies: node-fetch-native-with-agent: 1.7.2 @@ -7147,7 +7124,7 @@ snapshots: oslllo-potrace: 2.0.1 oslllo-svg2: 2.0.2 oslllo-validator: 3.1.0 - piscina: 4.9.2 + piscina: 4.8.0 yargs: 16.2.0 transitivePeerDependencies: - debug @@ -7164,7 +7141,7 @@ snapshots: oslllo-validator@3.1.0: dependencies: domino: 2.1.6 - validator: 13.15.0 + validator: 13.12.0 p-limit@3.1.0: dependencies: @@ -7195,7 +7172,7 @@ snapshots: xml-parse-from-string: 1.0.1 xml2js: 0.5.0 - parse-headers@2.0.6: {} + parse-headers@2.0.5: {} parse5-htmlparser2-tree-adapter@7.1.0: dependencies: @@ -7252,9 +7229,9 @@ snapshots: picomatch@4.0.2: {} - pirates@4.0.7: {} + pirates@4.0.6: {} - piscina@4.9.2: + piscina@4.8.0: optionalDependencies: '@napi-rs/nice': 1.0.1 @@ -7264,16 +7241,20 @@ snapshots: plausible-tracker@0.3.9: {} - playwright-core@1.51.1: {} + playwright-core@1.51.0: {} - playwright@1.51.1: + playwright@1.51.0: dependencies: - playwright-core: 1.51.1 + playwright-core: 1.51.0 optionalDependencies: fsevents: 2.3.2 pngjs@3.4.0: {} + point-in-polygon-hao@1.2.4: + dependencies: + robust-predicates: 3.0.2 + postcss-load-config@3.1.4(postcss@8.5.3): dependencies: lilconfig: 2.1.0 @@ -7296,37 +7277,37 @@ snapshots: postcss@8.5.3: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.9 picocolors: 1.1.1 source-map-js: 1.2.1 - posthog-js@1.236.1: + posthog-js@1.230.4: dependencies: core-js: 3.41.0 fflate: 0.4.8 - preact: 10.26.5 + preact: 10.26.4 web-vitals: 4.2.4 - posthog-node@4.11.6: + posthog-node@4.10.1: dependencies: - axios: 1.8.4 + axios: 1.8.3 transitivePeerDependencies: - debug - preact@10.26.5: {} + preact@10.26.4: {} prelude-ls@1.2.1: {} - prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.27.0): + prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.25.6): dependencies: prettier: 3.5.3 - svelte: 5.27.0 + svelte: 5.25.6 - prettier-plugin-tailwindcss@0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.27.0))(prettier@3.5.3): + prettier-plugin-tailwindcss@0.6.11(prettier-plugin-svelte@3.3.3(prettier@3.5.3)(svelte@5.25.6))(prettier@3.5.3): dependencies: prettier: 3.5.3 optionalDependencies: - prettier-plugin-svelte: 3.3.3(prettier@3.5.3)(svelte@5.27.0) + prettier-plugin-svelte: 3.3.3(prettier@3.5.3)(svelte@5.25.6) prettier@3.5.3: {} @@ -7340,6 +7321,12 @@ snapshots: process@0.11.10: {} + proj4@2.17.0: + dependencies: + geographiclib-geodesic: 2.1.1 + mgrs: 1.0.0 + wkt-parser: 1.5.2 + promise-inflight@1.0.1: {} promise-retry@2.0.1: @@ -7402,9 +7389,9 @@ snapshots: regenerator-runtime@0.14.1: {} - remeda@2.21.3: + remeda@2.21.2: dependencies: - type-fest: 4.40.0 + type-fest: 4.37.0 reodotdev@1.0.0: {} @@ -7426,30 +7413,31 @@ snapshots: dependencies: glob: 7.2.3 - rollup@4.40.0: + robust-predicates@3.0.2: {} + + rollup@4.35.0: dependencies: - '@types/estree': 1.0.7 + '@types/estree': 1.0.6 optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.40.0 - '@rollup/rollup-android-arm64': 4.40.0 - '@rollup/rollup-darwin-arm64': 4.40.0 - '@rollup/rollup-darwin-x64': 4.40.0 - '@rollup/rollup-freebsd-arm64': 4.40.0 - '@rollup/rollup-freebsd-x64': 4.40.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.40.0 - '@rollup/rollup-linux-arm-musleabihf': 4.40.0 - '@rollup/rollup-linux-arm64-gnu': 4.40.0 - '@rollup/rollup-linux-arm64-musl': 4.40.0 - '@rollup/rollup-linux-loongarch64-gnu': 4.40.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.40.0 - '@rollup/rollup-linux-riscv64-gnu': 4.40.0 - '@rollup/rollup-linux-riscv64-musl': 4.40.0 - '@rollup/rollup-linux-s390x-gnu': 4.40.0 - '@rollup/rollup-linux-x64-gnu': 4.40.0 - '@rollup/rollup-linux-x64-musl': 4.40.0 - '@rollup/rollup-win32-arm64-msvc': 4.40.0 - '@rollup/rollup-win32-ia32-msvc': 4.40.0 - '@rollup/rollup-win32-x64-msvc': 4.40.0 + '@rollup/rollup-android-arm-eabi': 4.35.0 + '@rollup/rollup-android-arm64': 4.35.0 + '@rollup/rollup-darwin-arm64': 4.35.0 + '@rollup/rollup-darwin-x64': 4.35.0 + '@rollup/rollup-freebsd-arm64': 4.35.0 + '@rollup/rollup-freebsd-x64': 4.35.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.35.0 + '@rollup/rollup-linux-arm-musleabihf': 4.35.0 + '@rollup/rollup-linux-arm64-gnu': 4.35.0 + '@rollup/rollup-linux-arm64-musl': 4.35.0 + '@rollup/rollup-linux-loongarch64-gnu': 4.35.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.35.0 + '@rollup/rollup-linux-riscv64-gnu': 4.35.0 + '@rollup/rollup-linux-s390x-gnu': 4.35.0 + '@rollup/rollup-linux-x64-gnu': 4.35.0 + '@rollup/rollup-linux-x64-musl': 4.35.0 + '@rollup/rollup-win32-arm64-msvc': 4.35.0 + '@rollup/rollup-win32-ia32-msvc': 4.35.0 + '@rollup/rollup-win32-x64-msvc': 4.35.0 fsevents: 2.3.3 rrweb-cssom@0.8.0: @@ -7459,10 +7447,10 @@ snapshots: dependencies: queue-microtask: 1.2.3 - runed@0.23.4(svelte@5.27.0): + runed@0.23.4(svelte@5.25.6): dependencies: esm-env: 1.2.2 - svelte: 5.27.0 + svelte: 5.25.6 sade@1.8.1: dependencies: @@ -7474,10 +7462,10 @@ snapshots: safer-buffer@2.1.2: {} - sass@1.86.3: + sass@1.85.1: dependencies: chokidar: 4.0.3 - immutable: 5.1.1 + immutable: 5.0.3 source-map-js: 1.2.1 optionalDependencies: '@parcel/watcher': 2.5.1 @@ -7539,7 +7527,7 @@ snapshots: sirv@3.0.1: dependencies: - '@polka/url': 1.0.0-next.29 + '@polka/url': 1.0.0-next.28 mrmime: 2.0.1 totalist: 3.0.1 @@ -7574,7 +7562,7 @@ snapshots: stackback@0.0.2: {} - std-env@3.9.0: {} + std-env@3.8.1: {} string-width@4.2.3: dependencies: @@ -7622,7 +7610,7 @@ snapshots: glob: 10.4.5 lines-and-columns: 1.2.4 mz: 2.7.0 - pirates: 4.0.7 + pirates: 4.0.6 ts-interface-checker: 0.1.13 supports-color@7.2.0: @@ -7631,19 +7619,19 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} - svelte-check@4.1.6(picomatch@4.0.2)(svelte@5.27.0)(typescript@5.8.3): + svelte-check@4.1.5(picomatch@4.0.2)(svelte@5.25.6)(typescript@5.8.2): dependencies: '@jridgewell/trace-mapping': 0.3.25 chokidar: 4.0.3 fdir: 6.4.3(picomatch@4.0.2) picocolors: 1.1.1 sade: 1.8.1 - svelte: 5.27.0 - typescript: 5.8.3 + svelte: 5.25.6 + typescript: 5.8.2 transitivePeerDependencies: - picomatch - svelte-eslint-parser@0.43.0(svelte@5.27.0): + svelte-eslint-parser@0.43.0(svelte@5.25.6): dependencies: eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 @@ -7651,7 +7639,7 @@ snapshots: postcss: 8.5.3 postcss-scss: 4.0.9(postcss@8.5.3) optionalDependencies: - svelte: 5.27.0 + svelte: 5.25.6 svelte-markdoc-preprocess@3.0.0: dependencies: @@ -7660,35 +7648,35 @@ snapshots: html-escaper: 3.0.3 js-yaml: 4.1.0 lovely-logs: 2.6.0 - svelte: 5.27.0 - typescript: 5.8.3 + svelte: 5.25.6 + typescript: 5.8.2 transitivePeerDependencies: - '@types/react' - react - svelte-markdown@0.4.1(svelte@5.27.0): + svelte-markdown@0.4.1(svelte@5.25.6): dependencies: '@types/marked': 5.0.2 marked: 5.1.2 - svelte: 5.27.0 + svelte: 5.25.6 - svelte-parse-markup@0.1.5(svelte@5.27.0): + svelte-parse-markup@0.1.5(svelte@5.25.6): dependencies: - svelte: 5.27.0 + svelte: 5.25.6 - svelte-toolbelt@0.7.1(svelte@5.27.0): + svelte-toolbelt@0.7.1(svelte@5.25.6): dependencies: clsx: 2.1.1 - runed: 0.23.4(svelte@5.27.0) + runed: 0.23.4(svelte@5.25.6) style-to-object: 1.0.8 - svelte: 5.27.0 + svelte: 5.25.6 - svelte@5.27.0: + svelte@5.25.6: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1) - '@types/estree': 1.0.7 + '@types/estree': 1.0.6 acorn: 8.14.1 aria-query: 5.3.2 axobject-query: 4.1.0 @@ -7700,6 +7688,8 @@ snapshots: magic-string: 0.30.17 zimmerframe: 1.1.2 + svg-dotted-map@2.0.1: {} + svg-pathdata@6.0.3: {} svg2ttf@6.0.3: @@ -7757,7 +7747,7 @@ snapshots: tabbable@6.2.0: {} - tailwind-merge@3.2.0: {} + tailwind-merge@3.0.2: {} tailwindcss@4.1.4: {} @@ -7795,11 +7785,6 @@ snapshots: tinyexec@0.3.2: {} - tinyglobby@0.2.12: - dependencies: - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 - tinypool@1.0.2: {} tinyrainbow@2.0.0: {} @@ -7841,9 +7826,9 @@ snapshots: punycode: 2.3.1 optional: true - ts-api-utils@2.1.0(typescript@5.8.3): + ts-api-utils@2.0.1(typescript@5.8.2): dependencies: - typescript: 5.8.3 + typescript: 5.8.2 ts-interface-checker@0.1.13: {} @@ -7872,29 +7857,29 @@ snapshots: dependencies: prelude-ls: 1.2.1 - type-fest@4.40.0: {} + type-fest@4.37.0: {} - typescript-eslint@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3): + typescript-eslint@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.30.1(@typescript-eslint/parser@8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3))(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/parser': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) - '@typescript-eslint/utils': 8.30.1(eslint@9.24.0(jiti@2.4.2))(typescript@5.8.3) - eslint: 9.24.0(jiti@2.4.2) - typescript: 5.8.3 + '@typescript-eslint/eslint-plugin': 8.26.1(@typescript-eslint/parser@8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2))(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/parser': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + '@typescript-eslint/utils': 8.26.1(eslint@9.22.0(jiti@2.4.2))(typescript@5.8.2) + eslint: 9.22.0(jiti@2.4.2) + typescript: 5.8.2 transitivePeerDependencies: - supports-color - typescript@5.8.3: {} + typescript@5.8.2: {} uc.micro@2.1.0: {} - ufo@1.6.1: {} + ufo@1.5.4: {} uhyphen@0.2.0: {} uncrypto@0.1.3: {} - undici-types@6.21.0: {} + undici-types@6.20.0: {} undici@6.21.2: {} @@ -7918,29 +7903,29 @@ snapshots: util-deprecate@1.0.2: {} - validator@13.15.0: {} + validator@13.12.0: {} - vaul-svelte@1.0.0-next.7(svelte@5.27.0): + vaul-svelte@1.0.0-next.7(svelte@5.25.6): dependencies: - runed: 0.23.4(svelte@5.27.0) - svelte: 5.27.0 - svelte-toolbelt: 0.7.1(svelte@5.27.0) + runed: 0.23.4(svelte@5.25.6) + svelte: 5.25.6 + svelte-toolbelt: 0.7.1(svelte@5.25.6) - vite-imagetools@7.0.5(rollup@4.40.0): + vite-imagetools@7.0.5(rollup@4.35.0): dependencies: - '@rollup/pluginutils': 5.1.4(rollup@4.40.0) + '@rollup/pluginutils': 5.1.4(rollup@4.35.0) imagetools-core: 7.0.2 sharp: 0.33.5 transitivePeerDependencies: - rollup - vite-node@3.1.1(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1): + vite-node@3.1.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0): dependencies: cac: 6.7.14 debug: 4.4.0 es-module-lexer: 1.6.0 pathe: 2.0.3 - vite: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) + vite: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) transitivePeerDependencies: - '@types/node' - jiti @@ -7962,38 +7947,35 @@ snapshots: fast-glob: 3.3.3 magic-string: 0.30.17 - vite-plugin-image-optimizer@1.1.8(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)): + vite-plugin-image-optimizer@1.1.8(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)): dependencies: ansi-colors: 4.1.3 pathe: 1.1.2 - vite: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) + vite: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) vite-plugin-manifest-sri@0.2.0: {} - vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1): + vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0): dependencies: esbuild: 0.25.2 - fdir: 6.4.3(picomatch@4.0.2) - picomatch: 4.0.2 postcss: 8.5.3 - rollup: 4.40.0 - tinyglobby: 0.2.12 + rollup: 4.35.0 optionalDependencies: - '@types/node': 22.14.1 + '@types/node': 22.13.10 fsevents: 2.3.3 jiti: 2.4.2 lightningcss: 1.29.2 - sass: 1.86.3 - yaml: 2.7.1 + sass: 1.85.1 + yaml: 2.7.0 - vitefu@1.0.6(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)): + vitefu@1.0.6(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)): optionalDependencies: - vite: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) + vite: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) - vitest@3.1.1(@types/node@22.14.1)(happy-dom@17.4.4)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1): + vitest@3.1.1(@types/node@22.13.10)(jiti@2.4.2)(jsdom@26.1.0)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0): dependencies: '@vitest/expect': 3.1.1 - '@vitest/mocker': 3.1.1(vite@6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1)) + '@vitest/mocker': 3.1.1(vite@6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0)) '@vitest/pretty-format': 3.1.1 '@vitest/runner': 3.1.1 '@vitest/snapshot': 3.1.1 @@ -8004,17 +7986,16 @@ snapshots: expect-type: 1.2.1 magic-string: 0.30.17 pathe: 2.0.3 - std-env: 3.9.0 + std-env: 3.8.1 tinybench: 2.9.0 tinyexec: 0.3.2 tinypool: 1.0.2 tinyrainbow: 2.0.0 - vite: 6.3.0(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) - vite-node: 3.1.1(@types/node@22.14.1)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.86.3)(yaml@2.7.1) + vite: 6.2.4(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) + vite-node: 3.1.1(@types/node@22.13.10)(jiti@2.4.2)(lightningcss@1.29.2)(sass@1.85.1)(yaml@2.7.0) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 22.14.1 - happy-dom: 17.4.4 + '@types/node': 22.13.10 jsdom: 26.1.0 transitivePeerDependencies: - jiti @@ -8048,9 +8029,6 @@ snapshots: dependencies: iconv-lite: 0.6.3 - whatwg-mimetype@3.0.0: - optional: true - whatwg-mimetype@4.0.0: {} whatwg-url@14.2.0: @@ -8079,6 +8057,8 @@ snapshots: dependencies: string-width: 4.2.3 + wkt-parser@1.5.2: {} + word-wrap@1.2.5: {} wrap-ansi@7.0.0: @@ -8102,7 +8082,7 @@ snapshots: dependencies: global: 4.4.0 is-function: 1.0.2 - parse-headers: 2.0.6 + parse-headers: 2.0.5 xtend: 4.0.2 xml-name-validator@5.0.0: @@ -8129,11 +8109,11 @@ snapshots: yaml-eslint-parser@1.3.0: dependencies: eslint-visitor-keys: 3.4.3 - yaml: 2.7.1 + yaml: 2.7.0 yaml@1.10.2: {} - yaml@2.7.1: {} + yaml@2.7.0: {} yargs-parser@20.2.9: {} @@ -8163,4 +8143,4 @@ snapshots: zimmerframe@1.1.2: {} - zod@3.24.2: {} + zod@3.24.4: {} diff --git a/src/app.css b/src/app.css index 9f1af3e2f..0e877d4cf 100644 --- a/src/app.css +++ b/src/app.css @@ -1,6 +1,6 @@ @import 'tailwindcss'; @import './styles/typography.css'; -@variant dark (&:is(.dark *)); +@custom-variant dark (&:where(.dark, .dark *)); @theme { /* Colors */ @@ -38,33 +38,33 @@ /* mint */ --color-mint-200: hsl(var(--color-mint-hue) 56% 88%); - --color-mint-500: hsl(calc(var(--color-mint-hue) + 1), 54%, 69%); - --color-mint-700: hsl(calc(var(--color-mint-hue) + 2), 24%, 41%); + --color-mint-500: hsl(calc(var(--color-mint-hue) + 1) 54% 69%); + --color-mint-700: hsl(calc(var(--color-mint-hue) + 2) 24% 41%); /* purple */ --color-purple-200: hsl(var(--color-purple-hue) 100% 88%); - --color-purple-500: hsl(calc(var(--color-purple-hue) - 1), 99%, 70%); - --color-purple-700: hsl(calc(var(--color-purple-hue) - 1), 42%, 42%); + --color-purple-500: hsl(calc(var(--color-purple-hue) - 1) 99% 70%); + --color-purple-700: hsl(calc(var(--color-purple-hue) - 1) 42% 42%); /* yellow */ --color-yellow-200: hsl(var(--color-yellow-hue) 100% 88%); --color-yellow-500: hsl(var(--color-yellow-hue) 99% 70%); - --color-yellow-700: hsl(calc(var(--color-yellow-hue) + 1), 42%, 42%); + --color-yellow-700: hsl(calc(var(--color-yellow-hue) + 1) 42% 42%); /* blue */ --color-blue-200: hsl(var(--color-blue-hue) 100% 88%); - --color-blue-500: hsl(calc(var(--color-blue-hue) - 1), 99%, 70%); - --color-blue-700: hsl(calc(var(--color-blue-hue) - 1), 42%, 42%); + --color-blue-500: hsl(calc(var(--color-blue-hue) - 1) 99% 70%); + --color-blue-700: hsl(calc(var(--color-blue-hue) - 1) 42% 42%); /* green */ --color-green-700: #0a714f; /* secondary */ --color-secondary-100: hsl(var(--color-secondary-hue) 99% 66%); - --color-accent-200: hsl(var(--color-secondary-hue), 78%, 60%, 0.32); + --color-accent-200: hsl(var(--color-secondary-hue) 78% 60% / 0.32); /* greyscale */ - --color-offset: hsl(var(--color-greyscale-hue) 2%, 11%, 0.94); + --color-offset: hsl(var(--color-greyscale-hue) 2% 11% / 0.94); --color-greyscale-25: hsl(var(--color-greyscale-hue) 11% 98%); --color-greyscale-50: hsl(var(--color-greyscale-hue) 11% 94%); --color-greyscale-100: hsl(var(--color-greyscale-hue) 6% 90%); @@ -86,26 +86,41 @@ /* Animations */ --animate-scale-in: scale-in 200ms ease-out forwards; + --animate-scale-out: scale-out 200ms ease-out forwards; --animate-caret-blink: caret-blink 1s ease-in-out infinite; --animate-enter: fade-in 0.75s ease-in-out both, blur 0.75s ease-in-out both, up 0.75s ease-in-out both; --animate-scroll: scroll 60s linear infinite; --animate-scroll-x: scroll-x var(--speed, 30s) linear infinite var(--direction, forwards); - --animate-scroll-y: scroll-y 60s linear infinite forwards; + --animate-scroll-y: scroll-y 30s linear infinite forwards; --animate-fade-in: fade-in 0.5s ease-in-out both; - --animate-marquee: marquee var(--speed, 30s) linear infinite var(--direction, forwards); + --animate-fade-out: fade-out 0.5s ease-in-out both; --animate-lighting: lighting 1.25s ease-out forwards; --animate-menu-in: menu-in 0.25s ease-out forwards; --animate-menu-out: menu-out 0.25s ease-out forwards; + --animate-enter-from-left: enter-from-left 0.2s ease; + --animate-enter-from-right: enter-from-right 0.2s ease; + --animate-exit-to-left: exit-to-left 0.2s ease; + --animate-exit-to-right: exit-to-right 0.2s ease; + --animate-wipe-in: wipe-in 2s ease-in-out; /* Keyframes */ @keyframes scale-in { 0% { - transform: scale(0); + transform: rotateX(-10deg) scale(0.9); } 100% { - transform: scale(1); + transform: rotateX(0) scale(1); + } + } + + @keyframes scale-out { + 0% { + transform: rotateX(0) scale(1); + } + 100% { + transform: rotateX(-10deg) scale(0.9); } } @@ -132,7 +147,7 @@ @keyframes up { 0% { - transform: translateY(8px); + transform: translateY(36px); } 100% { transform: translateY(0px); @@ -148,7 +163,16 @@ } } - @keyframes scroll { + @keyframes fade-out { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } + } + + @keyframes scroll-deprecate { 0% { transform: translateX(0); } @@ -157,9 +181,15 @@ } } - @keyframes marquee { + @keyframes scroll-x { to { - transform: translateX(-50%); + transform: translateX(-100%); + } + } + + @keyframes scroll-y { + to { + transform: translateY(-100%); } } @@ -202,15 +232,56 @@ } } - @keyframes scroll-x { + @keyframes enter-from-right { + from { + opacity: 0; + transform: translateX(200px); + } to { - transform: translateX(-100%); + opacity: 1; + transform: translateX(0); } } - @keyframes scroll-y { + @keyframes enter-from-left { + from { + opacity: 0; + transform: translateX(-200px); + } to { - transform: translateY(-50%); + opacity: 1; + transform: translateX(0); + } + } + + @keyframes exit-to-right { + from { + opacity: 1; + transform: translateX(0); + } + to { + opacity: 0; + transform: translateX(200px); + } + } + + @keyframes exit-to-left { + from { + opacity: 1; + transform: translateX(0); + } + to { + opacity: 0; + transform: translateX(-200px); + } + } + + @keyframes wipe-in { + 0% { + clip-path: polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%); + } + 100% { + clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%); } } @@ -224,10 +295,10 @@ /* Font sizes */ --text-x-micro: 0.625rem; --text-x-micro--line-height: 0.875rem; - --text-x-micro--letter-spacing: var(--tracking-loose); + --text-x-micro--letter-spacing: var(--tracking-tighter); --text-micro: 0.75rem; --text-micro--line-height: 1rem; - --text-micro--letter-spacing: var(--tracking-loose); + --text-micro--letter-spacing: var(--tracking-tighter); --text-caption: 0.875rem; --text-caption--line-height: 1.375rem; --text-caption--letter-spacing: var(--tracking-tight); @@ -251,9 +322,15 @@ --text-title: clamp(2rem, 5vw, 2.5rem); --text-title--line-height: clamp(2.125rem, 5.5vw, 2.75rem); --text-title--letter-spacing: var(--tracking-squeezed); + --text-title-lg: clamp(2.85rem, 5vw, 3rem); + --text-title-lg--line-height: clamp(2.75rem, 5.5vw, 3.5rem); + --text-title-lg--letter-spacing: var(--tracking-squeezed); --text-display: clamp(3rem, 7vw, 4rem); --text-display--line-height: clamp(3.125rem, 7.5vw, 4.25rem); --text-display--letter-spacing: var(--tracking-compressed); + --text-hero: clamp(3.2rem, 7vw, 4.5rem); + --text-hero--line-height: clamp(3.125rem, 7.5vw, 4.25rem); + --text-hero--letter-spacing: var(--tracking-compressed); --text-headline: clamp(3.5rem, 8vw, 5.5rem); --text-headline--line-height: clamp(3.5rem, 8.5vw, 5.75rem); --text-headline--letter-spacing: var(--tracking-compressed); @@ -276,12 +353,12 @@ @utility border-gradient { --border-gradient-before: linear-gradient( - 180deg, + var(--to, 180deg), rgba(255, 255, 255, 0.16) 0%, rgba(255, 255, 255, 0) 100% ); --border-gradient-after: linear-gradient( - 180deg, + var(--to, 180deg), rgba(255, 255, 255, 0.12) 0%, rgba(255, 255, 255, 0) 125.11% ); @@ -310,16 +387,6 @@ } } -@utility mask { - mask-image: linear-gradient( - to var(--mask-direction, top), - transparent, - black var(--mask-height, 32px), - black calc(100% - var(--mask-height, 32px)), - black - ); -} - :root, .light { /* pink polyfills */ @@ -340,14 +407,14 @@ /* base */ --color-primary: var(--color-greyscale-900); --color-secondary: var(--color-greyscale-700); - --color-accent: var(--color-pink-600); + --color-accent: var(--color-pink-500); --carousel-gradient: transparent; --color-badge-bg: var(--color-badge-bg-light); --color-badge-border: var(--color-badge-border-light); - --color-smooth: hsl(var(--color-greyscale-hue) 6%, 10%, 0.04); + --color-smooth: hsl(var(--color-greyscale-hue) 6% 10% / 0.04); --color-card: var(--color-greyscale-850); --color-tertiary: hsl(var(--color-greyscale-600)); - --color-offset: hsl(var(--color-greyscale-hue) 2%, 11%, 0.94); + --color-offset: hsl(var(--color-greyscale-hue) 2% 11% / 0.94); --color-subtle: var(--color-greyscale-850); } @@ -356,7 +423,7 @@ --color-secondary: var(--color-greyscale-300); --carousel-gradient: 23, 23, 26; --color-primary-bg: var(--color-greyscale-900); - --color-smooth: hsl(0 0%, 100%, 0.06); + --color-smooth: hsl(0 0% 100% / 0.06); --color-tertiary: hsl(var(--color-greyscale-600)); --color-offset: hsl(0 0% 100% / 0.1); } diff --git a/src/hooks.server.ts b/src/hooks.server.ts index 9a6702f05..3e23ac04f 100644 --- a/src/hooks.server.ts +++ b/src/hooks.server.ts @@ -37,7 +37,7 @@ const securityheaders: Handle = async ({ event, resolve }) => { }); // `true` if deployed via Coolify. - const isPreview = !!process.env.COOLIFY_FQDN; + const isPreview = !!process.env.COOLIFY_FQDN || process.env.NODE_ENV === 'development'; // COOLIFY_FQDN already includes `http`. const previewDomain = isPreview ? `${process.env.COOLIFY_FQDN}` : null; const join = (arr: string[]) => arr.join(' '); @@ -122,13 +122,6 @@ const securityheaders: Handle = async ({ event, resolve }) => { return response; }; -// const bannerRewriter: Handle = async ({ event, resolve }) => { -// const response = await resolve(event, { -// transformPageChunk: ({ html }) => html.replace('%aw_banner_key%', BANNER_KEY) -// }); -// return response; -// }; - const initSession: Handle = async ({ event, resolve }) => { const session = await createInitSessionClient(event.cookies); diff --git a/src/icons/optimized/edge.svg b/src/icons/optimized/edge.svg index c144fae4d..72746f196 100644 --- a/src/icons/optimized/edge.svg +++ b/src/icons/optimized/edge.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/optimized/sparkle.svg b/src/icons/optimized/sparkle.svg new file mode 100644 index 000000000..b872256ad --- /dev/null +++ b/src/icons/optimized/sparkle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/icons/output/_variables.scss b/src/icons/output/_variables.scss index 59efc364a..48f7c7b0d 100644 --- a/src/icons/output/_variables.scss +++ b/src/icons/output/_variables.scss @@ -15,43 +15,49 @@ $web-icon-chevron-up: "\ea0e"; $web-icon-close: "\ea0f"; $web-icon-command: "\ea10"; $web-icon-copy: "\ea11"; -$web-icon-daily-dev: "\ea12"; -$web-icon-dark: "\ea13"; -$web-icon-discord: "\ea14"; -$web-icon-divider-vertical: "\ea15"; -$web-icon-download: "\ea16"; -$web-icon-ext-link: "\ea17"; -$web-icon-firebase: "\ea18"; -$web-icon-github: "\ea19"; -$web-icon-google: "\ea1a"; -$web-icon-hamburger-menu: "\ea1b"; -$web-icon-instagram: "\ea1c"; -$web-icon-light: "\ea1d"; -$web-icon-linkedin: "\ea1e"; -$web-icon-location: "\ea1f"; -$web-icon-logout-left: "\ea20"; -$web-icon-logout-right: "\ea21"; -$web-icon-mailgun: "\ea22"; -$web-icon-mcp: "\ea23"; -$web-icon-message: "\ea24"; -$web-icon-microsoft: "\ea25"; -$web-icon-minus: "\ea26"; -$web-icon-nuxt: "\ea27"; -$web-icon-platform: "\ea28"; -$web-icon-play: "\ea29"; -$web-icon-plus: "\ea2a"; -$web-icon-product-hunt: "\ea2b"; -$web-icon-refine: "\ea2c"; -$web-icon-remix: "\ea2d"; -$web-icon-rest: "\ea2e"; -$web-icon-search: "\ea2f"; -$web-icon-sendgrid: "\ea30"; -$web-icon-star: "\ea31"; -$web-icon-system: "\ea32"; -$web-icon-textmagic: "\ea33"; -$web-icon-tiktok: "\ea34"; -$web-icon-twitter: "\ea35"; -$web-icon-vue: "\ea36"; -$web-icon-x: "\ea37"; -$web-icon-ycombinator: "\ea38"; -$web-icon-youtube: "\ea39"; +$web-icon-customize: "\ea12"; +$web-icon-daily-dev: "\ea13"; +$web-icon-dark: "\ea14"; +$web-icon-discord: "\ea15"; +$web-icon-divider-vertical: "\ea16"; +$web-icon-download: "\ea17"; +$web-icon-edge: "\ea18"; +$web-icon-ext-link: "\ea19"; +$web-icon-firebase: "\ea1a"; +$web-icon-github: "\ea1b"; +$web-icon-google: "\ea1c"; +$web-icon-hamburger-menu: "\ea1d"; +$web-icon-instagram: "\ea1e"; +$web-icon-light: "\ea1f"; +$web-icon-linkedin: "\ea20"; +$web-icon-location: "\ea21"; +$web-icon-logout-left: "\ea22"; +$web-icon-logout-right: "\ea23"; +$web-icon-mailgun: "\ea24"; +$web-icon-mcp: "\ea25"; +$web-icon-message: "\ea26"; +$web-icon-microsoft: "\ea27"; +$web-icon-minus: "\ea28"; +$web-icon-nuxt: "\ea29"; +$web-icon-platform: "\ea2a"; +$web-icon-play: "\ea2b"; +$web-icon-plus: "\ea2c"; +$web-icon-pop-locations: "\ea2d"; +$web-icon-product-hunt: "\ea2e"; +$web-icon-refine: "\ea2f"; +$web-icon-regions: "\ea30"; +$web-icon-remix: "\ea31"; +$web-icon-rest: "\ea32"; +$web-icon-search: "\ea33"; +$web-icon-sendgrid: "\ea34"; +$web-icon-sparkle: "\ea35"; +$web-icon-star: "\ea36"; +$web-icon-system: "\ea37"; +$web-icon-textmagic: "\ea38"; +$web-icon-ticket: "\ea39"; +$web-icon-tiktok: "\ea3a"; +$web-icon-twitter: "\ea3b"; +$web-icon-vue: "\ea3c"; +$web-icon-x: "\ea3d"; +$web-icon-ycombinator: "\ea3e"; +$web-icon-youtube: "\ea3f"; diff --git a/src/icons/output/info.json b/src/icons/output/info.json index 8d0043d78..1d8307bbd 100644 --- a/src/icons/output/info.json +++ b/src/icons/output/info.json @@ -101,244 +101,280 @@ "className": "web-icon-copy", "unicode": "" }, - "daily-dev": { + "customize": { "encodedCode": "\\ea12", "prefix": "web-icon", - "className": "web-icon-daily-dev", + "className": "web-icon-customize", "unicode": "" }, - "dark": { + "daily-dev": { "encodedCode": "\\ea13", "prefix": "web-icon", - "className": "web-icon-dark", + "className": "web-icon-daily-dev", "unicode": "" }, - "discord": { + "dark": { "encodedCode": "\\ea14", "prefix": "web-icon", - "className": "web-icon-discord", + "className": "web-icon-dark", "unicode": "" }, - "divider-vertical": { + "discord": { "encodedCode": "\\ea15", "prefix": "web-icon", - "className": "web-icon-divider-vertical", + "className": "web-icon-discord", "unicode": "" }, - "download": { + "divider-vertical": { "encodedCode": "\\ea16", "prefix": "web-icon", - "className": "web-icon-download", + "className": "web-icon-divider-vertical", "unicode": "" }, - "ext-link": { + "download": { "encodedCode": "\\ea17", "prefix": "web-icon", - "className": "web-icon-ext-link", + "className": "web-icon-download", "unicode": "" }, - "firebase": { + "edge": { "encodedCode": "\\ea18", "prefix": "web-icon", - "className": "web-icon-firebase", + "className": "web-icon-edge", "unicode": "" }, - "github": { + "ext-link": { "encodedCode": "\\ea19", "prefix": "web-icon", - "className": "web-icon-github", + "className": "web-icon-ext-link", "unicode": "" }, - "google": { + "firebase": { "encodedCode": "\\ea1a", "prefix": "web-icon", - "className": "web-icon-google", + "className": "web-icon-firebase", "unicode": "" }, - "hamburger-menu": { + "github": { "encodedCode": "\\ea1b", "prefix": "web-icon", - "className": "web-icon-hamburger-menu", + "className": "web-icon-github", "unicode": "" }, - "instagram": { + "google": { "encodedCode": "\\ea1c", "prefix": "web-icon", - "className": "web-icon-instagram", + "className": "web-icon-google", "unicode": "" }, - "light": { + "hamburger-menu": { "encodedCode": "\\ea1d", "prefix": "web-icon", - "className": "web-icon-light", + "className": "web-icon-hamburger-menu", "unicode": "" }, - "linkedin": { + "instagram": { "encodedCode": "\\ea1e", "prefix": "web-icon", - "className": "web-icon-linkedin", + "className": "web-icon-instagram", "unicode": "" }, - "location": { + "light": { "encodedCode": "\\ea1f", "prefix": "web-icon", - "className": "web-icon-location", + "className": "web-icon-light", "unicode": "" }, - "logout-left": { + "linkedin": { "encodedCode": "\\ea20", "prefix": "web-icon", - "className": "web-icon-logout-left", + "className": "web-icon-linkedin", "unicode": "" }, - "logout-right": { + "location": { "encodedCode": "\\ea21", "prefix": "web-icon", - "className": "web-icon-logout-right", + "className": "web-icon-location", "unicode": "" }, - "mailgun": { + "logout-left": { "encodedCode": "\\ea22", "prefix": "web-icon", - "className": "web-icon-mailgun", + "className": "web-icon-logout-left", "unicode": "" }, - "mcp": { + "logout-right": { "encodedCode": "\\ea23", "prefix": "web-icon", - "className": "web-icon-mcp", + "className": "web-icon-logout-right", "unicode": "" }, - "message": { + "mailgun": { "encodedCode": "\\ea24", "prefix": "web-icon", - "className": "web-icon-message", + "className": "web-icon-mailgun", "unicode": "" }, - "microsoft": { + "mcp": { "encodedCode": "\\ea25", "prefix": "web-icon", - "className": "web-icon-microsoft", + "className": "web-icon-mcp", "unicode": "" }, - "minus": { + "message": { "encodedCode": "\\ea26", "prefix": "web-icon", - "className": "web-icon-minus", + "className": "web-icon-message", "unicode": "" }, - "nuxt": { + "microsoft": { "encodedCode": "\\ea27", "prefix": "web-icon", - "className": "web-icon-nuxt", + "className": "web-icon-microsoft", "unicode": "" }, - "platform": { + "minus": { "encodedCode": "\\ea28", "prefix": "web-icon", - "className": "web-icon-platform", + "className": "web-icon-minus", "unicode": "" }, - "play": { + "nuxt": { "encodedCode": "\\ea29", "prefix": "web-icon", - "className": "web-icon-play", + "className": "web-icon-nuxt", "unicode": "" }, - "plus": { + "platform": { "encodedCode": "\\ea2a", "prefix": "web-icon", - "className": "web-icon-plus", + "className": "web-icon-platform", "unicode": "" }, - "product-hunt": { + "play": { "encodedCode": "\\ea2b", "prefix": "web-icon", - "className": "web-icon-product-hunt", + "className": "web-icon-play", "unicode": "" }, - "refine": { + "plus": { "encodedCode": "\\ea2c", "prefix": "web-icon", - "className": "web-icon-refine", + "className": "web-icon-plus", "unicode": "" }, - "remix": { + "pop-locations": { "encodedCode": "\\ea2d", "prefix": "web-icon", - "className": "web-icon-remix", + "className": "web-icon-pop-locations", "unicode": "" }, - "rest": { + "product-hunt": { "encodedCode": "\\ea2e", "prefix": "web-icon", - "className": "web-icon-rest", + "className": "web-icon-product-hunt", "unicode": "" }, - "search": { + "refine": { "encodedCode": "\\ea2f", "prefix": "web-icon", - "className": "web-icon-search", + "className": "web-icon-refine", "unicode": "" }, - "sendgrid": { + "regions": { "encodedCode": "\\ea30", "prefix": "web-icon", - "className": "web-icon-sendgrid", + "className": "web-icon-regions", "unicode": "" }, - "star": { + "remix": { "encodedCode": "\\ea31", "prefix": "web-icon", - "className": "web-icon-star", + "className": "web-icon-remix", "unicode": "" }, - "system": { + "rest": { "encodedCode": "\\ea32", "prefix": "web-icon", - "className": "web-icon-system", + "className": "web-icon-rest", "unicode": "" }, - "textmagic": { + "search": { "encodedCode": "\\ea33", "prefix": "web-icon", - "className": "web-icon-textmagic", + "className": "web-icon-search", "unicode": "" }, - "tiktok": { + "sendgrid": { "encodedCode": "\\ea34", "prefix": "web-icon", - "className": "web-icon-tiktok", + "className": "web-icon-sendgrid", "unicode": "" }, - "twitter": { + "sparkle": { "encodedCode": "\\ea35", "prefix": "web-icon", - "className": "web-icon-twitter", + "className": "web-icon-sparkle", "unicode": "" }, - "vue": { + "star": { "encodedCode": "\\ea36", "prefix": "web-icon", - "className": "web-icon-vue", + "className": "web-icon-star", "unicode": "" }, - "x": { + "system": { "encodedCode": "\\ea37", "prefix": "web-icon", - "className": "web-icon-x", + "className": "web-icon-system", "unicode": "" }, - "ycombinator": { + "textmagic": { "encodedCode": "\\ea38", "prefix": "web-icon", - "className": "web-icon-ycombinator", + "className": "web-icon-textmagic", "unicode": "" }, - "youtube": { + "ticket": { "encodedCode": "\\ea39", "prefix": "web-icon", - "className": "web-icon-youtube", + "className": "web-icon-ticket", "unicode": "" + }, + "tiktok": { + "encodedCode": "\\ea3a", + "prefix": "web-icon", + "className": "web-icon-tiktok", + "unicode": "" + }, + "twitter": { + "encodedCode": "\\ea3b", + "prefix": "web-icon", + "className": "web-icon-twitter", + "unicode": "" + }, + "vue": { + "encodedCode": "\\ea3c", + "prefix": "web-icon", + "className": "web-icon-vue", + "unicode": "" + }, + "x": { + "encodedCode": "\\ea3d", + "prefix": "web-icon", + "className": "web-icon-x", + "unicode": "" + }, + "ycombinator": { + "encodedCode": "\\ea3e", + "prefix": "web-icon", + "className": "web-icon-ycombinator", + "unicode": "" + }, + "youtube": { + "encodedCode": "\\ea3f", + "prefix": "web-icon", + "className": "web-icon-youtube", + "unicode": "" } } diff --git a/src/icons/output/web-icon.css b/src/icons/output/web-icon.css index cdefa56fe..13ff42464 100644 --- a/src/icons/output/web-icon.css +++ b/src/icons/output/web-icon.css @@ -71,123 +71,141 @@ .web-icon-copy:before { content: '\ea11'; } -.web-icon-daily-dev:before { +.web-icon-customize:before { content: '\ea12'; } -.web-icon-dark:before { +.web-icon-daily-dev:before { content: '\ea13'; } -.web-icon-discord:before { +.web-icon-dark:before { content: '\ea14'; } -.web-icon-divider-vertical:before { +.web-icon-discord:before { content: '\ea15'; } -.web-icon-download:before { +.web-icon-divider-vertical:before { content: '\ea16'; } -.web-icon-ext-link:before { +.web-icon-download:before { content: '\ea17'; } -.web-icon-firebase:before { +.web-icon-edge:before { content: '\ea18'; } -.web-icon-github:before { +.web-icon-ext-link:before { content: '\ea19'; } -.web-icon-google:before { +.web-icon-firebase:before { content: '\ea1a'; } -.web-icon-hamburger-menu:before { +.web-icon-github:before { content: '\ea1b'; } -.web-icon-instagram:before { +.web-icon-google:before { content: '\ea1c'; } -.web-icon-light:before { +.web-icon-hamburger-menu:before { content: '\ea1d'; } -.web-icon-linkedin:before { +.web-icon-instagram:before { content: '\ea1e'; } -.web-icon-location:before { +.web-icon-light:before { content: '\ea1f'; } -.web-icon-logout-left:before { +.web-icon-linkedin:before { content: '\ea20'; } -.web-icon-logout-right:before { +.web-icon-location:before { content: '\ea21'; } -.web-icon-mailgun:before { +.web-icon-logout-left:before { content: '\ea22'; } -.web-icon-mcp:before { +.web-icon-logout-right:before { content: '\ea23'; } -.web-icon-message:before { +.web-icon-mailgun:before { content: '\ea24'; } -.web-icon-microsoft:before { +.web-icon-mcp:before { content: '\ea25'; } -.web-icon-minus:before { +.web-icon-message:before { content: '\ea26'; } -.web-icon-nuxt:before { +.web-icon-microsoft:before { content: '\ea27'; } -.web-icon-platform:before { +.web-icon-minus:before { content: '\ea28'; } -.web-icon-play:before { +.web-icon-nuxt:before { content: '\ea29'; } -.web-icon-plus:before { +.web-icon-platform:before { content: '\ea2a'; } -.web-icon-product-hunt:before { +.web-icon-play:before { content: '\ea2b'; } -.web-icon-refine:before { +.web-icon-plus:before { content: '\ea2c'; } -.web-icon-remix:before { +.web-icon-pop-locations:before { content: '\ea2d'; } -.web-icon-rest:before { +.web-icon-product-hunt:before { content: '\ea2e'; } -.web-icon-search:before { +.web-icon-refine:before { content: '\ea2f'; } -.web-icon-sendgrid:before { +.web-icon-regions:before { content: '\ea30'; } -.web-icon-star:before { +.web-icon-remix:before { content: '\ea31'; } -.web-icon-system:before { +.web-icon-rest:before { content: '\ea32'; } -.web-icon-textmagic:before { +.web-icon-search:before { content: '\ea33'; } -.web-icon-tiktok:before { +.web-icon-sendgrid:before { content: '\ea34'; } -.web-icon-twitter:before { +.web-icon-sparkle:before { content: '\ea35'; } -.web-icon-vue:before { +.web-icon-star:before { content: '\ea36'; } -.web-icon-x:before { +.web-icon-system:before { content: '\ea37'; } -.web-icon-ycombinator:before { +.web-icon-textmagic:before { content: '\ea38'; } -.web-icon-youtube:before { +.web-icon-ticket:before { content: '\ea39'; } +.web-icon-tiktok:before { + content: '\ea3a'; +} +.web-icon-twitter:before { + content: '\ea3b'; +} +.web-icon-vue:before { + content: '\ea3c'; +} +.web-icon-x:before { + content: '\ea3d'; +} +.web-icon-ycombinator:before { + content: '\ea3e'; +} +.web-icon-youtube:before { + content: '\ea3f'; +} diff --git a/src/icons/output/web-icon.eot b/src/icons/output/web-icon.eot index 5c9ac0a61..bd56d98ce 100644 Binary files a/src/icons/output/web-icon.eot and b/src/icons/output/web-icon.eot differ diff --git a/src/icons/output/web-icon.scss b/src/icons/output/web-icon.scss index 22bb0cc71..fd7a2f6f0 100644 --- a/src/icons/output/web-icon.scss +++ b/src/icons/output/web-icon.scss @@ -33,46 +33,52 @@ .web-icon-close:before { content: "\ea0f"; } .web-icon-command:before { content: "\ea10"; } .web-icon-copy:before { content: "\ea11"; } -.web-icon-daily-dev:before { content: "\ea12"; } -.web-icon-dark:before { content: "\ea13"; } -.web-icon-discord:before { content: "\ea14"; } -.web-icon-divider-vertical:before { content: "\ea15"; } -.web-icon-download:before { content: "\ea16"; } -.web-icon-ext-link:before { content: "\ea17"; } -.web-icon-firebase:before { content: "\ea18"; } -.web-icon-github:before { content: "\ea19"; } -.web-icon-google:before { content: "\ea1a"; } -.web-icon-hamburger-menu:before { content: "\ea1b"; } -.web-icon-instagram:before { content: "\ea1c"; } -.web-icon-light:before { content: "\ea1d"; } -.web-icon-linkedin:before { content: "\ea1e"; } -.web-icon-location:before { content: "\ea1f"; } -.web-icon-logout-left:before { content: "\ea20"; } -.web-icon-logout-right:before { content: "\ea21"; } -.web-icon-mailgun:before { content: "\ea22"; } -.web-icon-mcp:before { content: "\ea23"; } -.web-icon-message:before { content: "\ea24"; } -.web-icon-microsoft:before { content: "\ea25"; } -.web-icon-minus:before { content: "\ea26"; } -.web-icon-nuxt:before { content: "\ea27"; } -.web-icon-platform:before { content: "\ea28"; } -.web-icon-play:before { content: "\ea29"; } -.web-icon-plus:before { content: "\ea2a"; } -.web-icon-product-hunt:before { content: "\ea2b"; } -.web-icon-refine:before { content: "\ea2c"; } -.web-icon-remix:before { content: "\ea2d"; } -.web-icon-rest:before { content: "\ea2e"; } -.web-icon-search:before { content: "\ea2f"; } -.web-icon-sendgrid:before { content: "\ea30"; } -.web-icon-star:before { content: "\ea31"; } -.web-icon-system:before { content: "\ea32"; } -.web-icon-textmagic:before { content: "\ea33"; } -.web-icon-tiktok:before { content: "\ea34"; } -.web-icon-twitter:before { content: "\ea35"; } -.web-icon-vue:before { content: "\ea36"; } -.web-icon-x:before { content: "\ea37"; } -.web-icon-ycombinator:before { content: "\ea38"; } -.web-icon-youtube:before { content: "\ea39"; } +.web-icon-customize:before { content: "\ea12"; } +.web-icon-daily-dev:before { content: "\ea13"; } +.web-icon-dark:before { content: "\ea14"; } +.web-icon-discord:before { content: "\ea15"; } +.web-icon-divider-vertical:before { content: "\ea16"; } +.web-icon-download:before { content: "\ea17"; } +.web-icon-edge:before { content: "\ea18"; } +.web-icon-ext-link:before { content: "\ea19"; } +.web-icon-firebase:before { content: "\ea1a"; } +.web-icon-github:before { content: "\ea1b"; } +.web-icon-google:before { content: "\ea1c"; } +.web-icon-hamburger-menu:before { content: "\ea1d"; } +.web-icon-instagram:before { content: "\ea1e"; } +.web-icon-light:before { content: "\ea1f"; } +.web-icon-linkedin:before { content: "\ea20"; } +.web-icon-location:before { content: "\ea21"; } +.web-icon-logout-left:before { content: "\ea22"; } +.web-icon-logout-right:before { content: "\ea23"; } +.web-icon-mailgun:before { content: "\ea24"; } +.web-icon-mcp:before { content: "\ea25"; } +.web-icon-message:before { content: "\ea26"; } +.web-icon-microsoft:before { content: "\ea27"; } +.web-icon-minus:before { content: "\ea28"; } +.web-icon-nuxt:before { content: "\ea29"; } +.web-icon-platform:before { content: "\ea2a"; } +.web-icon-play:before { content: "\ea2b"; } +.web-icon-plus:before { content: "\ea2c"; } +.web-icon-pop-locations:before { content: "\ea2d"; } +.web-icon-product-hunt:before { content: "\ea2e"; } +.web-icon-refine:before { content: "\ea2f"; } +.web-icon-regions:before { content: "\ea30"; } +.web-icon-remix:before { content: "\ea31"; } +.web-icon-rest:before { content: "\ea32"; } +.web-icon-search:before { content: "\ea33"; } +.web-icon-sendgrid:before { content: "\ea34"; } +.web-icon-sparkle:before { content: "\ea35"; } +.web-icon-star:before { content: "\ea36"; } +.web-icon-system:before { content: "\ea37"; } +.web-icon-textmagic:before { content: "\ea38"; } +.web-icon-ticket:before { content: "\ea39"; } +.web-icon-tiktok:before { content: "\ea3a"; } +.web-icon-twitter:before { content: "\ea3b"; } +.web-icon-vue:before { content: "\ea3c"; } +.web-icon-x:before { content: "\ea3d"; } +.web-icon-ycombinator:before { content: "\ea3e"; } +.web-icon-youtube:before { content: "\ea3f"; } $web-icon-apple: "\ea01"; $web-icon-appwrite: "\ea02"; @@ -91,43 +97,49 @@ $web-icon-chevron-up: "\ea0e"; $web-icon-close: "\ea0f"; $web-icon-command: "\ea10"; $web-icon-copy: "\ea11"; -$web-icon-daily-dev: "\ea12"; -$web-icon-dark: "\ea13"; -$web-icon-discord: "\ea14"; -$web-icon-divider-vertical: "\ea15"; -$web-icon-download: "\ea16"; -$web-icon-ext-link: "\ea17"; -$web-icon-firebase: "\ea18"; -$web-icon-github: "\ea19"; -$web-icon-google: "\ea1a"; -$web-icon-hamburger-menu: "\ea1b"; -$web-icon-instagram: "\ea1c"; -$web-icon-light: "\ea1d"; -$web-icon-linkedin: "\ea1e"; -$web-icon-location: "\ea1f"; -$web-icon-logout-left: "\ea20"; -$web-icon-logout-right: "\ea21"; -$web-icon-mailgun: "\ea22"; -$web-icon-mcp: "\ea23"; -$web-icon-message: "\ea24"; -$web-icon-microsoft: "\ea25"; -$web-icon-minus: "\ea26"; -$web-icon-nuxt: "\ea27"; -$web-icon-platform: "\ea28"; -$web-icon-play: "\ea29"; -$web-icon-plus: "\ea2a"; -$web-icon-product-hunt: "\ea2b"; -$web-icon-refine: "\ea2c"; -$web-icon-remix: "\ea2d"; -$web-icon-rest: "\ea2e"; -$web-icon-search: "\ea2f"; -$web-icon-sendgrid: "\ea30"; -$web-icon-star: "\ea31"; -$web-icon-system: "\ea32"; -$web-icon-textmagic: "\ea33"; -$web-icon-tiktok: "\ea34"; -$web-icon-twitter: "\ea35"; -$web-icon-vue: "\ea36"; -$web-icon-x: "\ea37"; -$web-icon-ycombinator: "\ea38"; -$web-icon-youtube: "\ea39"; +$web-icon-customize: "\ea12"; +$web-icon-daily-dev: "\ea13"; +$web-icon-dark: "\ea14"; +$web-icon-discord: "\ea15"; +$web-icon-divider-vertical: "\ea16"; +$web-icon-download: "\ea17"; +$web-icon-edge: "\ea18"; +$web-icon-ext-link: "\ea19"; +$web-icon-firebase: "\ea1a"; +$web-icon-github: "\ea1b"; +$web-icon-google: "\ea1c"; +$web-icon-hamburger-menu: "\ea1d"; +$web-icon-instagram: "\ea1e"; +$web-icon-light: "\ea1f"; +$web-icon-linkedin: "\ea20"; +$web-icon-location: "\ea21"; +$web-icon-logout-left: "\ea22"; +$web-icon-logout-right: "\ea23"; +$web-icon-mailgun: "\ea24"; +$web-icon-mcp: "\ea25"; +$web-icon-message: "\ea26"; +$web-icon-microsoft: "\ea27"; +$web-icon-minus: "\ea28"; +$web-icon-nuxt: "\ea29"; +$web-icon-platform: "\ea2a"; +$web-icon-play: "\ea2b"; +$web-icon-plus: "\ea2c"; +$web-icon-pop-locations: "\ea2d"; +$web-icon-product-hunt: "\ea2e"; +$web-icon-refine: "\ea2f"; +$web-icon-regions: "\ea30"; +$web-icon-remix: "\ea31"; +$web-icon-rest: "\ea32"; +$web-icon-search: "\ea33"; +$web-icon-sendgrid: "\ea34"; +$web-icon-sparkle: "\ea35"; +$web-icon-star: "\ea36"; +$web-icon-system: "\ea37"; +$web-icon-textmagic: "\ea38"; +$web-icon-ticket: "\ea39"; +$web-icon-tiktok: "\ea3a"; +$web-icon-twitter: "\ea3b"; +$web-icon-vue: "\ea3c"; +$web-icon-x: "\ea3d"; +$web-icon-ycombinator: "\ea3e"; +$web-icon-youtube: "\ea3f"; diff --git a/src/icons/output/web-icon.svg b/src/icons/output/web-icon.svg index 5160b6428..3043d03f4 100644 --- a/src/icons/output/web-icon.svg +++ b/src/icons/output/web-icon.svg @@ -58,125 +58,143 @@ - + - + + + + + + diff --git a/src/icons/output/web-icon.symbol.svg b/src/icons/output/web-icon.symbol.svg index 7c68e8df4..c58437347 100644 --- a/src/icons/output/web-icon.symbol.svg +++ b/src/icons/output/web-icon.symbol.svg @@ -1,6 +1,6 @@ - + - \ No newline at end of file + \ No newline at end of file diff --git a/src/icons/output/web-icon.ttf b/src/icons/output/web-icon.ttf index 383e75fbe..af1fba947 100644 Binary files a/src/icons/output/web-icon.ttf and b/src/icons/output/web-icon.ttf differ diff --git a/src/icons/output/web-icon.woff b/src/icons/output/web-icon.woff index 55283a8ed..eb49a51bf 100644 Binary files a/src/icons/output/web-icon.woff and b/src/icons/output/web-icon.woff differ diff --git a/src/icons/output/web-icon.woff2 b/src/icons/output/web-icon.woff2 index 97ad0df8e..a16880924 100644 Binary files a/src/icons/output/web-icon.woff2 and b/src/icons/output/web-icon.woff2 differ diff --git a/src/icons/svg/edge.svg b/src/icons/svg/edge.svg index 455115e10..0ebb3724c 100644 --- a/src/icons/svg/edge.svg +++ b/src/icons/svg/edge.svg @@ -1,14 +1,5 @@ - + + d="M3.07619 2.57566C3.28117 2.37086 3.59729 2.3449 3.83009 2.49851L3.92384 2.57566L7.41505 6.06687C8.26493 5.39934 9.3355 4.99948 10.5 4.99948L10.7569 5.00632C13.3987 5.14004 15.4998 7.32442 15.5 9.99948L15.4932 10.2563C15.4393 11.3213 15.0517 12.2984 14.4336 13.0854L17.9238 16.5757L18.001 16.6694C18.1547 16.9022 18.1287 17.2183 17.9238 17.4233C17.7188 17.6283 17.4028 17.6543 17.1699 17.5005L17.0762 17.4233L13.586 13.9331C12.7361 14.6009 11.6648 14.9995 10.5 14.9995L10.2432 14.9926C7.68619 14.8633 5.63624 12.8133 5.50685 10.2563L5.50001 9.99948C5.50011 8.83482 5.89864 7.76343 6.56642 6.91355L3.07619 3.42331L2.99904 3.32956C2.84545 3.0967 2.87123 2.78061 3.07619 2.57566ZM10.5 6.19968C8.40148 6.19968 6.70044 7.901 6.70021 9.99948C6.70021 12.0982 8.40133 13.7993 10.5 13.7993C12.5987 13.7992 14.2998 12.0981 14.2998 9.99948C14.2996 7.90103 12.5985 6.19972 10.5 6.19968Z" + fill="#19191C" /> \ No newline at end of file diff --git a/src/icons/svg/sparkle.svg b/src/icons/svg/sparkle.svg new file mode 100644 index 000000000..9dcff771b --- /dev/null +++ b/src/icons/svg/sparkle.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index c39d53894..bb7e6d3a1 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -59,7 +59,7 @@ export type TrackEventArgs = { name: string; data?: object }; export const trackEvent = (eventArgs?: string | TrackEventArgs): void => { if (!eventArgs || ENV.TEST) return; - const path = page.route.id ?? ''; + const path = page.route.id?.replace(/\(([^()]*)\)/g, '') ?? ''; const name = typeof eventArgs === 'string' ? eventArgs : eventArgs.name; const data = typeof eventArgs === 'string' ? { path } : { ...eventArgs.data, path }; diff --git a/src/lib/actions/animate-in-view.ts b/src/lib/actions/animate-in-view.ts index af2b703f8..594ace408 100644 --- a/src/lib/actions/animate-in-view.ts +++ b/src/lib/actions/animate-in-view.ts @@ -1,17 +1,13 @@ -import { inView, type InViewOptions } from 'motion-legacy'; +import { inView } from 'motion'; import { writable } from 'svelte/store'; -export const useAnimateInView = ({ options }: { options?: InViewOptions }) => { +export const useAnimateInView = () => { let animate = writable(false); const action = (node: HTMLElement) => { - inView( - node, - () => { - animate.set(true); - }, - { ...options } - ); + inView(node, () => { + animate.set(true); + }); }; return { diff --git a/src/lib/actions/mouse-position.svelte.ts b/src/lib/actions/mouse-position.svelte.ts new file mode 100644 index 000000000..338b1360e --- /dev/null +++ b/src/lib/actions/mouse-position.svelte.ts @@ -0,0 +1,41 @@ +import { hover } from 'motion'; +import { writable } from 'svelte/store'; + +export interface Position { + x: number; + y: number; +} + +export const useMousePosition = () => { + let position = $state({ + x: 0, + y: 0 + }); + + const action = (node: HTMLElement | SVGSVGElement) => { + const handleMouseMove = (event: MouseEvent) => { + const { clientX, clientY } = event; + + position = { + x: clientX - 12, // Remove rect.left + y: clientY + -350 // Remove rect.top + }; + }; + hover(node, () => { + document.addEventListener('mousemove', handleMouseMove); + }); + + return { + destroy() { + document.removeEventListener('mousemove', handleMouseMove); + } + }; + }; + + return { + action, + position: () => { + return position; + } + }; +}; diff --git a/src/lib/actions/mouse-position.ts b/src/lib/actions/mouse-position.ts deleted file mode 100644 index 25f33e7f5..000000000 --- a/src/lib/actions/mouse-position.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { inView } from 'motion-legacy'; -import { type Writable, writable } from 'svelte/store'; - -export const useMousePosition = () => { - let position = writable<{ x: number; y: number }>({ - x: 0, - y: 0 - }); - - const action = (node: HTMLElement) => { - const handleMouseMove = (event: MouseEvent) => { - position.set({ - x: event.clientX, - y: event.clientY - }); - }; - - inView( - node, - () => { - node.addEventListener('mousemove', handleMouseMove); - }, - { amount: 'any' } - ); - - return { - destroy() { - node.removeEventListener('mousemove', handleMouseMove); - } - }; - }; - - return { action, position }; -}; diff --git a/src/lib/animations/AutoBox.svelte b/src/lib/animations/AutoBox.svelte deleted file mode 100644 index 067c71407..000000000 --- a/src/lib/animations/AutoBox.svelte +++ /dev/null @@ -1,34 +0,0 @@ - - -
-
-
- -
-
- - diff --git a/src/lib/animations/CodeWindow/Code.svelte b/src/lib/animations/CodeWindow/Code.svelte deleted file mode 100644 index 30e781742..000000000 --- a/src/lib/animations/CodeWindow/Code.svelte +++ /dev/null @@ -1,11 +0,0 @@ - - - -{@html codeHtml} diff --git a/src/lib/animations/CodeWindow/CodeWindow.svelte b/src/lib/animations/CodeWindow/CodeWindow.svelte deleted file mode 100644 index 58d65d138..000000000 --- a/src/lib/animations/CodeWindow/CodeWindow.svelte +++ /dev/null @@ -1,96 +0,0 @@ - - -
-
-
-
-
-
-
- - - -
-
-
- - diff --git a/src/lib/animations/OpenSource.svelte b/src/lib/animations/OpenSource.svelte deleted file mode 100644 index d5f2f1f4c..000000000 --- a/src/lib/animations/OpenSource.svelte +++ /dev/null @@ -1,395 +0,0 @@ - - -
{ - const { percentage } = detail; - scrollHandler(percentage); - }} - on:web-resize={({ detail }) => { - scrollHandler.reset(); - const { percentage } = detail; - - scrollHandler(percentage); - }} -> - -
- - diff --git a/src/lib/animations/Phone.svelte b/src/lib/animations/Phone.svelte deleted file mode 100644 index 1014d12f0..000000000 --- a/src/lib/animations/Phone.svelte +++ /dev/null @@ -1,9 +0,0 @@ - - -
-
- -
-
diff --git a/src/lib/animations/Products/(assets)/auth-shot.png b/src/lib/animations/Products/(assets)/auth-shot.png deleted file mode 100644 index 9c77134b3..000000000 Binary files a/src/lib/animations/Products/(assets)/auth-shot.png and /dev/null differ diff --git a/src/lib/animations/Products/(assets)/db-shot.png b/src/lib/animations/Products/(assets)/db-shot.png deleted file mode 100644 index 1c0e59ef3..000000000 Binary files a/src/lib/animations/Products/(assets)/db-shot.png and /dev/null differ diff --git a/src/lib/animations/Products/(assets)/fn-shot.png b/src/lib/animations/Products/(assets)/fn-shot.png deleted file mode 100644 index 9b27722e1..000000000 Binary files a/src/lib/animations/Products/(assets)/fn-shot.png and /dev/null differ diff --git a/src/lib/animations/Products/(assets)/messaging-shot.png b/src/lib/animations/Products/(assets)/messaging-shot.png deleted file mode 100644 index 630dd34b1..000000000 Binary files a/src/lib/animations/Products/(assets)/messaging-shot.png and /dev/null differ diff --git a/src/lib/animations/Products/(assets)/realtime-shot.png b/src/lib/animations/Products/(assets)/realtime-shot.png deleted file mode 100644 index 019d9bcd7..000000000 Binary files a/src/lib/animations/Products/(assets)/realtime-shot.png and /dev/null differ diff --git a/src/lib/animations/Products/(assets)/storage-shot.png b/src/lib/animations/Products/(assets)/storage-shot.png deleted file mode 100644 index 8ecb10a2a..000000000 Binary files a/src/lib/animations/Products/(assets)/storage-shot.png and /dev/null differ diff --git a/src/lib/animations/Products/AnimatedBox.svelte b/src/lib/animations/Products/AnimatedBox.svelte deleted file mode 100644 index 1dc705c18..000000000 --- a/src/lib/animations/Products/AnimatedBox.svelte +++ /dev/null @@ -1,55 +0,0 @@ - - -
-
-
- - - -
-
- - diff --git a/src/lib/animations/Products/Products.svelte b/src/lib/animations/Products/Products.svelte deleted file mode 100644 index 7528a2754..000000000 --- a/src/lib/animations/Products/Products.svelte +++ /dev/null @@ -1,695 +0,0 @@ - - - - -
{ - scrollInfo = detail; - }} -> -
- - {#if scrollInfo.percentage < 0.075} -
- {#if scrollInfo.percentage > -0.1} - Products_ - -

- Your backend, minus the hassle -

-

- Build secure and scalable applications with less code. Add authentication, - databases, storage, and more using Appwrite's development platform. -

- {/if} -
- {:else} -
0.075 ? '' : undefined} - > -
- -
    - {#each products as product} - {@const copy = infos[product]} - {@const isActive = active.product === product} - - {#if copy} -
  • -

    - - {copy.title} -

    - {#if isActive} -
    -

    - {copy.subtitle} -

    -

    - {copy.description} -

    -
      - {#each copy.features as feature} -
    • {feature}
    • - {/each} -
    -
    - {/if} -
  • - {/if} - {/each} -
-
- -
-
- -
-

- {#if active.product === 'auth'} - Users - {:else if active.product === 'databases'} - Tasks - {:else if active.product === 'storage'} - Files - {:else if active.product === 'functions'} - - {:else if active.product === 'messaging'} - Messages - {:else if active.product === 'realtime'} - Realtime - {/if} -

-
- - {#if active.product === 'auth'} - - {:else if active.product === 'messaging'} - - {:else if active.product === 'databases'} - - {:else if active.product === 'storage'} - - {/if} -
-
- -
- - {#if active.product === 'auth'} - - {:else if active.product === 'databases'} - - {:else if active.product === 'storage'} - - {:else if active.product === 'functions'} - - {:else if active.product === 'messaging'} - - {/if} - -
- - {#if active.product === 'auth'} -
- -
- {/if} -
- -
-
- {#if active.product === 'auth'} - - {:else if active.product === 'databases'} - - {:else if active.product === 'storage'} - - {:else if active.product === 'messaging'} - - {:else if active.product === 'functions'} - - {:else if !['auth', 'databases', 'storage', 'messaging', 'functions'].includes(active.product)} - - {/if} -
-
- - {#if !['auth', 'databases', 'storage', 'functions', 'messaging', 'realtime'].includes(anyify(active.product))} - - {/if} -
- {/if} -
-
- - diff --git a/src/lib/animations/Products/ProductsMobile.svelte b/src/lib/animations/Products/ProductsMobile.svelte deleted file mode 100644 index 177e72f0d..000000000 --- a/src/lib/animations/Products/ProductsMobile.svelte +++ /dev/null @@ -1,218 +0,0 @@ - - -
-
- Products_ - -

- Your backend, minus the hassle -

- -

- Build secure and scalable applications with less code. Add authentication, databases, - storage, and more using Appwrite's development platform. -

- -
- {#each objectKeys(infos) as prod, i} - {@const info = infos[prod]} - {@const isLast = i === objectKeys(infos).length - 1} - - {#if info} -
-

- - {info.title} -

- -

{info.subtitle}

-

- {info.description} -

-
    - {#each info.features as feature} -
  • {feature}
  • - {/each} -
- - {#if info.shot} - - {/if} -
- - {#if !isLast} -
- {/if} - {/if} - {/each} -
- -
- - -

See your products grow

-

- Keep track of your projects progress on the Appwrite Console and see them grow into - products users love and use every day. -

-
-
-
-
- - diff --git a/src/lib/animations/Products/TaskCheckbox.svelte b/src/lib/animations/Products/TaskCheckbox.svelte deleted file mode 100644 index bd63c06c2..000000000 --- a/src/lib/animations/Products/TaskCheckbox.svelte +++ /dev/null @@ -1,61 +0,0 @@ - - -
- -
- - diff --git a/src/lib/animations/Products/auth/box.svelte b/src/lib/animations/Products/auth/box.svelte deleted file mode 100644 index 9af51bb78..000000000 --- a/src/lib/animations/Products/auth/box.svelte +++ /dev/null @@ -1,64 +0,0 @@ - - -
-
- Name - Identifier -
- {#each authData as user (user.id)} -
-
-
{user.avatar}
- {user.name} -
- {user.email} -
- {/each} -
diff --git a/src/lib/animations/Products/auth/code.svelte b/src/lib/animations/Products/auth/code.svelte deleted file mode 100644 index 5bc78f46b..000000000 --- a/src/lib/animations/Products/auth/code.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/src/lib/animations/Products/auth/controls.svelte b/src/lib/animations/Products/auth/controls.svelte deleted file mode 100644 index a14bf2cbc..000000000 --- a/src/lib/animations/Products/auth/controls.svelte +++ /dev/null @@ -1,81 +0,0 @@ - - -
- {#each objectKeys($state.controls) as provider, i} - {@const isLast = i === objectKeys($state.controls).length - 1} -
- - {provider} - -
- {#if !isLast} -
- {/if} - {/each} -
- - diff --git a/src/lib/animations/Products/auth/index.ts b/src/lib/animations/Products/auth/index.ts deleted file mode 100644 index ef5d79fcf..000000000 --- a/src/lib/animations/Products/auth/index.ts +++ /dev/null @@ -1,95 +0,0 @@ -import Box from './box.svelte'; -import Code from './code.svelte'; -import Controls from './controls.svelte'; -import Phone from './phone.svelte'; - -export const Auth = { - Phone, - Box, - Code, - Controls -}; - -import { safeAnimate, sleep, write } from '$lib/animations'; -import { createResettable } from '$lib/utils/resettable'; -import { getElSelector } from '../Products.svelte'; - -type State = { - email: string; - password: string; - name: string; - - showControls: boolean; - submitted: boolean; - controls: { - GitHub: boolean; - Google: boolean; - Apple: boolean; - Microsoft: boolean; - }; -}; - -const state = createResettable({ - email: '', - password: '', - name: "Walter O'Brien", - showControls: false, - submitted: false, - controls: { - GitHub: true, - Google: false, - Apple: false, - Microsoft: false - } -}); - -const emailToSet = 'walterobrian@example.com'; -const passwordToSet = 'password'; - -const execute = async () => { - const phone = getElSelector('phone'); - const box = getElSelector('box'); - const code = getElSelector('code'); - const controls = getElSelector('controls'); - - // Reset - const { update } = state.reset(); - - await Promise.all([ - safeAnimate(box, { x: 310, y: 140, opacity: 0 }, { duration: 0.5 })?.finished, - safeAnimate(code, { x: 200, y: 460, opacity: 0 }, { duration: 0.5 })?.finished, - safeAnimate(phone, { x: 0, y: 0 }, { duration: 0.5 })?.finished, - safeAnimate(controls, { x: 420, y: 0, opacity: 0 }, { duration: 0.5 })?.finished - ]); - - // Start - await safeAnimate(box, { y: [48, 140], opacity: 1 }, { duration: 0.25, delay: 0.25 })?.finished; - - await sleep(50); - - await write(emailToSet, (v) => update((p) => ({ ...p, email: v })), 300); - await sleep(50); - - await write(passwordToSet, (v) => update((p) => ({ ...p, password: v })), 300); - await sleep(50); - - await safeAnimate( - code, - { x: [200, 200], y: [460 + 16, 460], opacity: [0, 1] }, - { duration: 0.25 } - )?.finished; - - await sleep(350); - - update((p) => ({ ...p, submitted: true })); - - await sleep(1000); - - update((p) => ({ ...p, showControls: true })); - safeAnimate(controls, { x: [420, 420], y: [16, 0], opacity: 1 }, { duration: 0.5 }); -}; - -export const authController = { - execute, - state -}; diff --git a/src/lib/animations/Products/auth/phone.svelte b/src/lib/animations/Products/auth/phone.svelte deleted file mode 100644 index d781341d8..000000000 --- a/src/lib/animations/Products/auth/phone.svelte +++ /dev/null @@ -1,220 +0,0 @@ - - -
-

Create an Account

-

Please enter your details

-
-
- - -
-
- - -
-
- - -
-
- - {#if controlsEnabled} - or sign up with -
- {#each objectKeys($state.controls).filter((p) => $state.controls[p]) as provider (provider)} - - {/each} -
- {/if} -
- - diff --git a/src/lib/animations/Products/databases/box.svelte b/src/lib/animations/Products/databases/box.svelte deleted file mode 100644 index 869791f62..000000000 --- a/src/lib/animations/Products/databases/box.svelte +++ /dev/null @@ -1,54 +0,0 @@ - - -
-
- Document ID - Task -
- {#each $state.tasks.slice(0, $state.tableSlice) as task (task.id)} -
-
- - {task.id} -
- {task.title} -
- {/each} -
- - diff --git a/src/lib/animations/Products/databases/code.svelte b/src/lib/animations/Products/databases/code.svelte deleted file mode 100644 index b42ba7e18..000000000 --- a/src/lib/animations/Products/databases/code.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - diff --git a/src/lib/animations/Products/databases/index.ts b/src/lib/animations/Products/databases/index.ts deleted file mode 100644 index 259f21b4c..000000000 --- a/src/lib/animations/Products/databases/index.ts +++ /dev/null @@ -1,94 +0,0 @@ -import Box from './box.svelte'; -import Code from './code.svelte'; -import Phone from './phone.svelte'; - -import { safeAnimate, sleep } from '$lib/animations'; -import { createResettable } from '$lib/utils/resettable'; -import { getElSelector } from '../Products.svelte'; - -type Task = { - id: string; - title: string; - checked: boolean; -}; - -type State = { - tasks: Task[]; - tableSlice: number; -}; - -const state = createResettable({ - tasks: [ - { - id: '3397fecdedb13397fecdedb1', - title: 'Research user needs', - checked: true - } - ], - tableSlice: 1 -}); - -const execute = async () => { - const phone = getElSelector('phone'); - const box = getElSelector('box'); - const code = getElSelector('code'); - const { update } = state.reset(); - - await Promise.all([ - safeAnimate(phone, { x: 390, y: 0 }, { duration: 0.5 })?.finished, - safeAnimate(box, { x: 0, y: 32, opacity: 1 }, { duration: 0.5 })?.finished, - safeAnimate(code, { x: 80, y: 320, opacity: 1 }, { duration: 0.5 })?.finished - ]); - - await sleep(250); - - update((p) => ({ - ...p, - tasks: [ - ...p.tasks, - { - id: '3397fecdedb13397fecdedb2', - title: 'Create wireframes', - checked: false - } - ] - })); - await sleep(250); - - update((p) => ({ - ...p, - tableSlice: p.tableSlice + 1 - })); - - await sleep(250); - - update((p) => ({ - ...p, - tasks: [ - ...p.tasks, - { - id: '3397fecdedb13397fecdedb3', - title: 'Create visual design', - checked: false - } - ] - })); - - await sleep(250); - - update((p) => ({ - ...p, - tableSlice: p.tableSlice + 1 - })); -}; - -export const databasesController = { - execute, - state -}; - -export const Databases = { - Phone, - Box, - Code -}; diff --git a/src/lib/animations/Products/databases/phone.svelte b/src/lib/animations/Products/databases/phone.svelte deleted file mode 100644 index 04a8ad4b2..000000000 --- a/src/lib/animations/Products/databases/phone.svelte +++ /dev/null @@ -1,127 +0,0 @@ - - -
-
-

Your tasks

- -
- -
Today
-
- {#each $state.tasks as task (task.id)} -
- - {task.title} -
- {/each} -
- -
- -
-
- - diff --git a/src/lib/animations/Products/functions/code.svelte b/src/lib/animations/Products/functions/code.svelte deleted file mode 100644 index 1db228ad9..000000000 --- a/src/lib/animations/Products/functions/code.svelte +++ /dev/null @@ -1,56 +0,0 @@ - - - - -
- {#if $state.submit !== 'idle'} - - {/if} - {#if $state.submit === 'loading'} - Pushing to GitHub... -
- {:else if $state.submit === 'success'} - Deployed to Appwrite Cloud - - {/if} -
- - diff --git a/src/lib/animations/Products/functions/index.ts b/src/lib/animations/Products/functions/index.ts deleted file mode 100644 index 0c17bbc04..000000000 --- a/src/lib/animations/Products/functions/index.ts +++ /dev/null @@ -1,58 +0,0 @@ -import Code from './code.svelte'; -import Phone from './phone.svelte'; - -import { safeAnimate, sleep } from '$lib/animations'; -import { createResettable } from '$lib/utils/resettable'; -import { getElSelector } from '../Products.svelte'; - -type State = { - submit: 'idle' | 'loading' | 'success'; -}; - -const state = createResettable({ - submit: 'idle' -}); - -const execute = async () => { - const phone = getElSelector('phone'); - const box = getElSelector('box'); - const code = getElSelector('code'); - - const { update } = state.reset(); - - await Promise.all([ - safeAnimate(phone, { x: 430, y: 0, width: '275px' }, { duration: 0.5 })?.finished, - safeAnimate(code, { x: 0, y: 200, opacity: 0 }, { duration: 0.5 })?.finished, - safeAnimate(box, { opacity: 0 }, { duration: 0.5 })?.finished - ]); - - await sleep(250); - - await safeAnimate(code, { zIndex: 0 }, { duration: 0 })?.finished; - await safeAnimate(code, { y: [200 - 16, 200], opacity: 1 }, { duration: 0.5 })?.finished; - - await sleep(250); - - update((p) => ({ - ...p, - submit: 'loading' - })); - - await sleep(1500); - - update((p) => ({ - ...p, - submit: 'success' - })); -}; - -export const functionsController = { - execute, - state -}; - -export const Functions = { - Phone, - - Code -}; diff --git a/src/lib/animations/Products/functions/phone.svelte b/src/lib/animations/Products/functions/phone.svelte deleted file mode 100644 index 12a32de62..000000000 --- a/src/lib/animations/Products/functions/phone.svelte +++ /dev/null @@ -1,325 +0,0 @@ - - -
-
-

Upgrade plan

- -
- -
-

Premium plan

-
-

$20

-

/month

-
-
    -
  • Premium plan
  • -
  • Premium plan
  • -
  • Premium plan
  • -
-
- -
    - {#each methods as method, i (method.label)} -
  • - -

    {method.label}

    -
  • - {/each} -
- - {#if $state.submit !== 'success'} -
-

Card information

-
-
-

placeholder

- - -
-
-

MM/YY

-

CVV

-
-
-
- {/if} - - -
- - diff --git a/src/lib/animations/Products/messaging/box.svelte b/src/lib/animations/Products/messaging/box.svelte deleted file mode 100644 index 019eec445..000000000 --- a/src/lib/animations/Products/messaging/box.svelte +++ /dev/null @@ -1,116 +0,0 @@ - - -
-
- Message ID - Type - Status -
- {#each $state.messages.slice(0, $state.tableSlice) as task (task.id)} -
-
- - {task.id} -
-
-
- -
- {task.type} -
- -
- {#if task.status === 'sending'} -
- {:else} - - {/if} -
-
- {/each} -
- - diff --git a/src/lib/animations/Products/messaging/code.svelte b/src/lib/animations/Products/messaging/code.svelte deleted file mode 100644 index 52854edca..000000000 --- a/src/lib/animations/Products/messaging/code.svelte +++ /dev/null @@ -1,15 +0,0 @@ - - - diff --git a/src/lib/animations/Products/messaging/index.ts b/src/lib/animations/Products/messaging/index.ts deleted file mode 100644 index 10fdcd8c2..000000000 --- a/src/lib/animations/Products/messaging/index.ts +++ /dev/null @@ -1,164 +0,0 @@ -import Box from './box.svelte'; -import Code from './code.svelte'; -import Phone from './phone.svelte'; - -import { safeAnimate, sleep, write } from '$lib/animations'; -import { createResettable } from '$lib/utils/resettable'; -import { getElSelector } from '../Products.svelte'; - -type Task = { - id: string; - title: string; - checked: boolean; -}; - -type Message = { - id: string; - type: string; - icon: string; - status: 'sending' | 'sent'; -}; - -type State = { - heading: string; - message: string; - tasks: Task[]; - messages: Message[]; - tableSlice: number; - submit: 'loading' | 'success'; -}; - -const state = createResettable({ - heading: '', - message: '', - tasks: [ - { - id: '3397fecdedb13397fecdedb1', - title: 'Research user needs', - checked: true - } - ], - messages: [ - { - id: '...3397fecdedb1', - type: 'SMS', - icon: './images/icons/illustrated/dark/sms.svg', - status: 'sent' - }, - { - id: '...2224gabjger4', - type: 'Email', - icon: './images/icons/illustrated/dark/email.svg', - status: 'sent' - } - ], - tableSlice: 2, - submit: 'loading' -}); - -const execute = async () => { - const phone = getElSelector('phone'); - const box = getElSelector('box'); - const code = getElSelector('code'); - const { update } = state.reset(); - - await Promise.all([ - safeAnimate(phone, { x: 365, y: 0, width: '275px' }, { duration: 0.5 })?.finished, - safeAnimate(code, { x: 80, y: 325, opacity: 0, zIndex: 100 }, { duration: 0.5 })?.finished, - safeAnimate(box, { x: 0, y: 32, opacity: 1 }, { duration: 0.5, delay: 1 })?.finished - ]); - - await sleep(250); - - update((p) => ({ - ...p, - tasks: [ - ...p.tasks, - { - id: '3397fecdedb13397fecdedb2', - title: 'Create wireframes', - checked: false - } - ] - })); - await sleep(250); - - update((p) => ({ - ...p, - tableSlice: p.tableSlice + 1 - })); - - await sleep(250); - - update((p) => ({ - ...p, - tasks: [ - ...p.tasks, - { - id: '3397fecdedb13397fecdedb3', - title: 'Create visual design', - checked: false - } - ] - })); - - await sleep(250); - - update((p) => ({ - ...p, - tableSlice: p.tableSlice + 1 - })); - - await sleep(250); - - safeAnimate(code, { opacity: 1 }, { duration: 0.5 })?.finished, await sleep(250); - await write( - 'New task assigned to you', - (v) => { - state.update((n) => ({ ...n, heading: v })); - }, - 300 - ); - - await write( - 'You were assigned a new task in your board. Tap to check it out.', - (v) => { - state.update((n) => ({ ...n, message: v })); - }, - 300 - ); - - await sleep(250); - - update((p) => ({ - ...p, - messages: [ - ...p.messages, - { - id: '...5689fdoerre2', - type: 'Push', - icon: './images/icons/illustrated/dark/push.svg', - status: 'sending' - } - ] - })); - - await sleep(1250); - - update((p) => ({ - ...p, - submit: 'success', - messages: p.messages.map((m) => (m.id === '...5689fdoerre2' ? { ...m, status: 'sent' } : m)) - })); -}; - -export const messagingController = { - execute, - state -}; - -export const Messaging = { - Phone, - Box, - Code -}; diff --git a/src/lib/animations/Products/messaging/phone.svelte b/src/lib/animations/Products/messaging/phone.svelte deleted file mode 100644 index ebf9bafb7..000000000 --- a/src/lib/animations/Products/messaging/phone.svelte +++ /dev/null @@ -1,205 +0,0 @@ - - -{#if $state.submit === 'success'} -
-
-
-
-

New task assigned to you

- now -
-

You were assigned a new task in your board. Tap to check it out.

-
-
-{/if} - -
-
-

Your tasks

- -
- -
Today
-
- {#each $state.tasks as task (task.id)} -
- - {task.title} -
- {/each} -
-
- -
-
- - diff --git a/src/lib/animations/Products/post/index.ts b/src/lib/animations/Products/post/index.ts deleted file mode 100644 index a57774b00..000000000 --- a/src/lib/animations/Products/post/index.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { safeAnimate } from '$lib/animations'; -import { createResettable } from '$lib/utils/resettable'; -import { animate } from 'motion-legacy'; -import { getElSelector } from '../Products.svelte'; - -const requests = createResettable(0); -const databases = createResettable(0); -const authentication = createResettable(0); -const storage = createResettable(0); -const bandwidth = createResettable(0); -const executions = createResettable(0); -const realtime = createResettable(0); - -const execute = async () => { - const phone = getElSelector('phone'); - const pd = getElSelector('pd'); - - const graphBox = getElSelector('graph-box'); - - const boxesAndStates = [ - { box: getElSelector('post-auth'), state: authentication.reset() }, - { box: getElSelector('post-storage'), state: storage.reset() }, - { box: getElSelector('post-bandwidth'), state: bandwidth.reset() }, - { box: getElSelector('post-functions'), state: executions.reset() }, - { box: getElSelector('post-databases'), state: databases.reset() }, - { box: getElSelector('post-realtime'), state: realtime.reset() }, - { box: getElSelector('post-requests'), state: requests.reset() } - ]; - - await Promise.all([ - safeAnimate(pd, { opacity: 0, y: -16 }, { duration: 0.5 })?.finished, - safeAnimate(graphBox, { opacity: 0, visibility: 'hidden' }, { duration: 0.5 })?.finished, - safeAnimate(phone, { x: '-50%', width: '660px' }, { duration: 1, delay: 0.5 })?.finished - ]); - - boxesAndStates.forEach(({ box, state }, i) => { - safeAnimate(box, { opacity: 1, y: [1200, 0] }, { duration: 0.5, delay: i * 0.1 })?.finished; - animate(state.set, { duration: 2, delay: (i + 1) * 0.25 }); - }); -}; - -export const postController = { - execute, - state: { - requests, - databases, - authentication, - storage, - bandwidth, - executions, - realtime - } -}; diff --git a/src/lib/animations/Products/post/post.svelte b/src/lib/animations/Products/post/post.svelte deleted file mode 100644 index 372c3399d..000000000 --- a/src/lib/animations/Products/post/post.svelte +++ /dev/null @@ -1,308 +0,0 @@ - - -
-
-

-

Authentication

-
-

- {formatK(toScale($authentication, [0, 1], [0, 4000]))} -

-
-

Users

-

Sessions: 20K

-
-
- -
-
-

-

Storage

-
-

- {toScale($storage, [0, 1], [0, 8]).toFixed(1)} - GB -

-
-

Storage

-

Buckets: 44

-
-
- -
-

- {toScale($bandwidth, [0, 1], [0, 1.2]).toFixed(2)} - GB -

-

Bandwidth

- -
- -
-
-

-

Functions

-
-

- {toScale($executions, [0, 1], [0, 846]).toFixed(0)} -

-
-

Executions

-
-
- -
-
-

-

Databases

-
-

- {toScale($databases, [0, 1], [0, 8]).toFixed(0)} -

-
-

Databases

-

Documents: 20

-
-
- -
-

{formatK(toScale($requests, [0, 1], [0, 6849]))}

-

Requests

- -
- -
-

{formatK(toScale($realtime, [0, 1], [0, 100000]))}

-

Realtime connections

- -
- -
-

See your products grow

-

- Keep track of your projects progress on the Appwrite Console and see them grow into products - users love and use every day. -

-
- - diff --git a/src/lib/animations/Products/realtime/index.ts b/src/lib/animations/Products/realtime/index.ts deleted file mode 100644 index 423ec0f28..000000000 --- a/src/lib/animations/Products/realtime/index.ts +++ /dev/null @@ -1,238 +0,0 @@ -import Phone from './phone.svelte'; - -import { safeAnimate, sleep } from '$lib/animations'; -import { createResettable } from '$lib/utils/resettable'; -import { getElSelector } from '../Products.svelte'; -import { animate } from 'motion-legacy'; - -type Task = { - title: string; - tags: string[]; - images?: string[]; -}; - -type User = { - name: string; - color: string; -}; - -type State = { - tasks: { - todo: Task[]; - doing: Task[]; - done: Task[]; - }; - users: User[]; -}; - -const state = createResettable({ - tasks: { - todo: [ - { - title: 'Edit images for website', - tags: ['design', 'content'], - images: ['./images/animations/storage-2.png', './images/animations/storage-3.png'] - } - ], - doing: [ - { - title: 'Handoff meet', - tags: ['design', 'dev'] - } - ], - done: [] - }, - users: [] -}); - -export const connectionsProg = createResettable(0); - -const addUser = (update: typeof state.update, user: User) => { - update((p) => ({ - ...p, - users: [...p.users, user] - })); -}; - -const addTask = (update: typeof state.update, group: keyof State['tasks'], task: Task) => { - update((p) => ({ - ...p, - tasks: { - ...p.tasks, - [group]: [task, ...p.tasks[group]] - } - })); -}; - -const execute = async () => { - const phone = getElSelector('phone'); - const code = getElSelector('code'); - const box = getElSelector('box'); - - const walter = getElSelector('user-Walter'); - const aditya = getElSelector('user-Aditya'); - const sara = getElSelector('user-Sara'); - - const addTodo = getElSelector('add-todo'); - const addDoing = getElSelector('add-doing'); - const addDone = getElSelector('add-done'); - - const graphBox = getElSelector('graph-box'); - - const pd = getElSelector('pd'); - - const { update } = state.reset(); - const { set: setConn } = connectionsProg.reset(); - - await Promise.all([ - safeAnimate(box, { opacity: 0 }, { duration: 0.5 })?.finished, - safeAnimate(phone, { x: 0, y: 0, width: '660px' }, { duration: 0.5 })?.finished, - safeAnimate(code, { opacity: 0 }, { duration: 0.5 })?.finished, - safeAnimate(graphBox, { opacity: 0, x: 0, y: 0, visibility: 'visible' }, { duration: 0 }) - ?.finished, - safeAnimate(pd, { opacity: 1, y: 0 }, { duration: 0.5 })?.finished - ]); - - // Graphbox - sleep(1250).then(async () => { - await safeAnimate(graphBox, { opacity: 1 }, { duration: 0.5 })?.finished; - - animate( - (y) => { - setConn(y); - }, - { duration: 2.5, easing: 'ease-in' } - ); - }); - - // Walter - sleep(500).then(async () => { - addUser(update, { name: 'Walter', color: '#fd366e' }); - await sleep(500); - await safeAnimate(walter, { x: -200, y: -100, scale: 1 }, { duration: 0.5 })?.finished; - await Promise.all([ - safeAnimate(walter, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished, - safeAnimate(addTodo, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished - ]); - - addTask(update, 'todo', { - title: 'Handoff meet', - tags: ['design', 'dev'] - }); - - await safeAnimate(walter, { scale: 1, x: -180, y: -160 }, { duration: 0.75, delay: 0.5 }) - ?.finished; - - await sleep(500); - - await safeAnimate(walter, { x: 210, y: -100, scale: 1 }, { duration: 0.5 })?.finished; - - await Promise.all([ - safeAnimate(walter, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished, - safeAnimate(addDone, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished - ]); - - addTask(update, 'done', { - title: 'Create migrations script', - tags: ['Dev'] - }); - - safeAnimate(walter, { scale: 1, x: 230, y: -20 }, { duration: 0.75, delay: 0.5 }); - - await sleep(750); - - await safeAnimate(walter, { x: -10, y: -100, scale: 1 }, { duration: 0.5 })?.finished; - - await Promise.all([ - safeAnimate(walter, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished, - safeAnimate(addDoing, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished - ]); - - addTask(update, 'doing', { - title: 'Configure blog SEO', - tags: ['dev', 'content'] - }); - - await safeAnimate(walter, { scale: 1, x: -70, y: 80 }, { duration: 0.75, delay: 0.25 }); - }); - - // Aditya - sleep(1500).then(async () => { - addUser(update, { name: 'Aditya', color: 'rgba(124, 103, 254, 1)' }); - await sleep(500); - await safeAnimate(aditya, { x: 200, y: -100, scale: 1 }, { duration: 0.5 })?.finished; - await Promise.all([ - safeAnimate(aditya, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished, - safeAnimate(addDone, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished - ]); - - addTask(update, 'done', { - title: 'Write up briefing', - tags: ['dev-rel'] - }); - - await safeAnimate(aditya, { scale: 1, x: 180, y: 60 }, { duration: 0.75, delay: 0.5 }) - ?.finished; - - await sleep(750); - - await safeAnimate(aditya, { x: -210, y: -100, scale: 1 }, { duration: 0.5 })?.finished; - - await Promise.all([ - safeAnimate(aditya, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished, - safeAnimate(addTodo, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished - ]); - - addTask(update, 'todo', { - title: 'Review branding blog post', - tags: ['dev-rel'] - }); - - await safeAnimate(aditya, { scale: 1, x: 70, y: -220 }, { duration: 0.75, delay: 0.5 }) - ?.finished; - }); - - // Sara - sleep(2500).then(async () => { - addUser(update, { name: 'Sara', color: 'rgba(103, 163, 254, 1)' }); - await sleep(500); - await safeAnimate(sara, { x: 0, y: -100, scale: 1 }, { duration: 0.5 })?.finished; - await Promise.all([ - safeAnimate(sara, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished, - safeAnimate(addDoing, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished - ]); - - addTask(update, 'doing', { - title: 'Prepare design system presentation', - tags: ['design'] - }); - - await safeAnimate(sara, { scale: 1, y: 60, x: -50 }, { duration: 0.75, delay: 0.5 }) - ?.finished; - await sleep(250); - - await safeAnimate(sara, { x: 200, y: -100, scale: 1 }, { duration: 0.5 })?.finished; - - await Promise.all([ - safeAnimate(sara, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished, - safeAnimate(addDone, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished - ]); - - addTask(update, 'done', { - title: 'QA branding animations', - tags: ['Dev'] - }); - - await safeAnimate(sara, { scale: 1, x: 180, y: 60 }, { duration: 0.75, delay: 0.5 }) - ?.finished; - }); -}; - -export const realtimeController = { - execute, - state -}; - -export const Realtime = { - Phone -}; diff --git a/src/lib/animations/Products/realtime/phone.svelte b/src/lib/animations/Products/realtime/phone.svelte deleted file mode 100644 index bb4785b7f..000000000 --- a/src/lib/animations/Products/realtime/phone.svelte +++ /dev/null @@ -1,657 +0,0 @@ - - -
-
-
-
-

My Team's tasks

-
-
- {#each $state.users as user} -
- {getInitial(user.name)} -
- {/each} -
-
- -
-
-
- -
- - -
-
-
- -
- -
- {#each objectKeys($state.tasks) as col, i} - {@const tasks = $state.tasks[col]} - {@const isLast = i === objectKeys($state.tasks).length - 1} -
-
- {col} - {tasks.length} - -
-
- - {#each tasks as task (task.title)} -
- {#if task.images} -
    - {#each task.images as image} - - {/each} -
- {/if} -

{task.title}

-
    - {#each task.tags as tag} -
  • {tag}
  • - {/each} -
-
- {/each} -
-
- {#if !isLast} -
- {/if} - {/each} -
- - {#each $state.users as user} -
- - - -

{user.name}

-
- {/each} -
- -
-

{formatNumber(connections)}

-

Realtime Connections

- - - - - - - - - - - - - - - - - - - - - {#each progressedLines as line, i} - {@const x = 57 + i * 24} - {@const y = 124 - line} - {#if line > 3} - - - {/if} - {/each} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - diff --git a/src/lib/animations/Products/storage/box.svelte b/src/lib/animations/Products/storage/box.svelte deleted file mode 100644 index 30d716844..000000000 --- a/src/lib/animations/Products/storage/box.svelte +++ /dev/null @@ -1,39 +0,0 @@ - - -
-
- Filename - Type - Size -
- {#each $state.files as file (file.src)} -
-
- - {file.filename} -
- {file.type} - {file.size} -
- {/each} -
- - diff --git a/src/lib/animations/Products/storage/code.svelte b/src/lib/animations/Products/storage/code.svelte deleted file mode 100644 index c54899395..000000000 --- a/src/lib/animations/Products/storage/code.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - diff --git a/src/lib/animations/Products/storage/index.ts b/src/lib/animations/Products/storage/index.ts deleted file mode 100644 index d33dfdb48..000000000 --- a/src/lib/animations/Products/storage/index.ts +++ /dev/null @@ -1,137 +0,0 @@ -import Box from './box.svelte'; -import Code from './code.svelte'; -import Phone from './phone.svelte'; - -import { safeAnimate, sleep } from '$lib/animations'; -import { createResettable } from '$lib/utils/resettable'; -import { getElSelector } from '../Products.svelte'; - -type File = { - src: string; - filename: string; - type: string; - size: string; -}; - -type State = { - files: File[]; -}; - -const state = createResettable({ - files: [] -}); - -const execute = async () => { - const phone = getElSelector('phone'); - const box = getElSelector('box'); - const code = getElSelector('code'); - const overlay = getElSelector('overlay'); - const drawer = getElSelector('drawer'); - const upload = getElSelector('upload'); - const uploadBtn = getElSelector('upload-btn'); - const uploadImg = getElSelector('upload-img'); - const uploadLoading = getElSelector('upload-loading'); - const uploadText = getElSelector('upload-text'); - - const { update } = state.reset(); - - await Promise.all([ - safeAnimate(phone, { x: 0, y: 0 }, { duration: 0.5 })?.finished, - safeAnimate(box, { opacity: 0 }, { duration: 0.5 })?.finished, - safeAnimate(code, { opacity: 0 }, { duration: 0.5 })?.finished, - safeAnimate(uploadLoading, { opacity: 0 }, { duration: 0 })?.finished - ]); - - await safeAnimate(code, { zIndex: 20 }, { duration: 0 })?.finished; - - update((p) => ({ - ...p, - files: [ - ...p.files, - { - src: '/images/animations/storage-1.png', - filename: 'Profile.png', - type: 'image/png', - size: '362.6 KB' - } - ] - })); - - await sleep(250); - - await Promise.all([ - safeAnimate(overlay, { opacity: 1 }, { duration: 0.25 })?.finished, - safeAnimate(drawer, { y: [128, 0], opacity: 1 }, { duration: 0.5 })?.finished - ]); - - await sleep(250); - - await safeAnimate(uploadBtn, { scale: [1, 0.9, 1] }, { duration: 0.25 })?.finished; - - await safeAnimate(code, { x: 300, y: 32 }, { duration: 0 })?.finished; - - await Promise.all([ - safeAnimate(code, { y: [32 - 16, 32], opacity: 1 }, { duration: 0.5 })?.finished, - safeAnimate(upload, { y: [-16, 0], opacity: 1 }, { duration: 0.5 })?.finished - ]); - - await sleep(250); - - await safeAnimate(box, { x: 300, y: 300 }, { duration: 0 })?.finished; - - await Promise.all([ - safeAnimate(uploadImg, { x: [64, 48], y: [80, 64], opacity: 1 }, { duration: 0.5 }) - ?.finished, - safeAnimate(box, { y: [300 - 16, 300], opacity: 1 }, { duration: 1 })?.finished - ]); - - await sleep(250); - - await Promise.all([ - safeAnimate(uploadText, { opacity: 0 }, { duration: 0.5 })?.finished, - safeAnimate(uploadLoading, { opacity: 1 }, { duration: 0.5 })?.finished, - safeAnimate(uploadImg, { opacity: 0, y: 64 + 8 }, { duration: 0.5 })?.finished - ]); - await sleep(250); - - await safeAnimate(upload, { opacity: 0, y: 48 }, { duration: 0.5 })?.finished; - - update((p) => ({ - ...p, - files: [ - ...p.files, - { - src: '/images/animations/storage-2.png', - filename: 'Vector.svg', - type: 'vector/svg', - size: '1.5 KB' - } - ] - })); - - await sleep(250); - - update((p) => ({ - ...p, - files: [ - ...p.files, - { - src: '/images/animations/storage-3.png', - filename: 'img2.webp', - type: 'image/webp', - size: '3.2 MB' - } - ] - })); -}; - -export const storageController = { - execute, - state -}; - -export const Storage = { - Phone, - Box, - Code -}; diff --git a/src/lib/animations/Products/storage/phone.svelte b/src/lib/animations/Products/storage/phone.svelte deleted file mode 100644 index f6497202a..000000000 --- a/src/lib/animations/Products/storage/phone.svelte +++ /dev/null @@ -1,284 +0,0 @@ - - -
-
-

Your tasks

- -
- -
Today
-
- {#each fixedTasks as task (task.id)} -
- - {task.title} -
- {/each} -
- -
- -
- -
-
-

Edit images for website

-

Edit the attached images to use in the website

- -
Upload media...
-
- {#each $state.files.slice(1) as file} - - {/each} -
-
-
-
-
-

Upload media

-
- Drop media here -
-
-
-
- -
- - diff --git a/src/lib/animations/index.ts b/src/lib/animations/index.ts index 27f9edaa7..341ef1872 100644 --- a/src/lib/animations/index.ts +++ b/src/lib/animations/index.ts @@ -1,222 +1,3 @@ -import type { Action } from 'svelte/action'; -import { - animate as motionAnimate, - type ElementOrSelector, - type MotionKeyframesDefinition, - type AnimationOptionsWithOverrides, - animate -} from 'motion-legacy'; - -export function animation( - elementOrSelector: ElementOrSelector, - keyframes: MotionKeyframesDefinition, - options?: AnimationOptionsWithOverrides -) { - const play = () => { - const played = motionAnimate(elementOrSelector, keyframes, options); - return played; - }; - - const reverse = () => { - const reversedKeyframes = Object.fromEntries( - Object.entries(keyframes).map(([key, keyframe]) => { - return [key, Array.isArray(keyframe) ? [...keyframe].reverse() : keyframe]; - }) - ) as typeof keyframes; - const reversed = motionAnimate(elementOrSelector, reversedKeyframes, options); - return reversed; - }; - - return { - play, - reverse - }; -} - -export type Animation = ReturnType; - -export const safeAnimate = ( - elementOrSelector: ElementOrSelector, - keyframes: MotionKeyframesDefinition, - options?: AnimationOptionsWithOverrides -) => { - try { - return animate(elementOrSelector, keyframes, options); - } catch { - // do nothing lol - } -}; - -type Unsubscriber = () => void; - -type PreviousScroll = 'before' | 'after' | undefined; - -type ScrollCallbackState = { - previous?: PreviousScroll; - unsubscribe?: Unsubscriber; - executedCount: number; -}; - -export type ScrollCallback = { - percentage: number; - whenAfter?: (args: Omit) => Unsubscriber | void; -}; - -export function createScrollHandler(callbacks: ScrollCallback[]) { - const states: ScrollCallbackState[] = callbacks.map(() => ({ - executedCount: 0 - })); - - const handler = function (scrollPercentage: number) { - callbacks.forEach((callback, i) => { - const { percentage, whenAfter } = callback; - const { previous, unsubscribe, executedCount } = states[i]; - - if (scrollPercentage >= percentage && previous !== 'after') { - // Execute whenAfter - states[i].unsubscribe = whenAfter?.({ previous, executedCount }) ?? undefined; - states[i].previous = 'after'; - if (whenAfter) { - states[i].executedCount++; - } - } else if (scrollPercentage < percentage && previous === 'after') { - unsubscribe?.(); - states[i].unsubscribe = undefined; - states[i].previous = 'before'; - } - }); - }; - - handler.reset = () => { - states.forEach((state) => { - // state.unsubscribe?.(); - state.unsubscribe = undefined; - state.previous = undefined; - state.executedCount = 0; - }); - }; - - return handler; -} - -export type ScrollInfo = { - percentage: number; - traversed: number; - remaning: number; -}; - -export const scroll: Action< - HTMLElement, - undefined, - { - 'on:web-scroll': (e: CustomEvent) => void; - 'on:web-resize': (e: CustomEvent) => void; - } -> = (node) => { - function getScrollInfo(): ScrollInfo { - const { top, height } = node.getBoundingClientRect(); - const { innerHeight } = window; - - const scrollHeight = height - innerHeight; - const scrollPercentage = (-1 * top) / scrollHeight; - - const traversed = scrollPercentage * scrollHeight; - const remaning = scrollHeight - traversed; - - return { - percentage: scrollPercentage, - traversed, - remaning - }; - } - - const createHandler = (eventName: 'web-scroll' | 'web-resize') => { - return () => { - node.dispatchEvent( - new CustomEvent(eventName, { - detail: getScrollInfo() - }) - ); - }; - }; - - const handleScroll = createHandler('web-scroll'); - const handleResize = createHandler('web-resize'); - - handleScroll(); - handleResize(); - - window.addEventListener('scroll', handleScroll); - window.addEventListener('resize', handleResize); - - return { - destroy() { - window.removeEventListener('scroll', handleScroll); - window.removeEventListener('resize', handleResize); - } - }; -}; - -type TimelineEvent = { - at: number; - callback: () => void; -}; - -export function createTimeline(events: TimelineEvent[]) { - let timeoutIds: NodeJS.Timeout[] = []; - - const play = () => { - events.forEach((event) => { - const timeoutId = setTimeout(event.callback, event.at); - timeoutIds.push(timeoutId); - }); - }; - - const cancel = () => { - timeoutIds.forEach(clearTimeout); - timeoutIds = []; - }; - - return { play, cancel }; -} - -type ProgressEvent = { - percentage: number; - callback: () => void; -}; - -/** - * Given a list of events, create a sequence of events that will be executed - * when a given percentage is greater than the event percentage, and before - * the next event percentage. - * e.g. const handler = createProgressSequence(events) // where there's an event for each 0.1 percentage - * handler(0.45) // will execute the event with percentage 0.4. - */ -export function createProgressSequence(events: ProgressEvent[]) { - // Sort from highest to lowest percentage - const sortedEvents = [...events].sort((a, b) => b.percentage - a.percentage); - - let lastEventIdx = -1; - - const handler = (percentage: number) => { - const idx = sortedEvents.findIndex((event) => event.percentage <= percentage); - if (idx === lastEventIdx) { - return; - } - const event = sortedEvents[idx]; - event?.callback(); - lastEventIdx = idx; - }; - - handler.resetLastEventIdx = () => { - lastEventIdx = -1; - }; - - return handler; -} - -export type ProgressSequence = ReturnType; - export function write(text: string, cb: (v: string) => void, duration = 500) { if (text.length === 0) { cb(''); @@ -258,11 +39,3 @@ export function sleep(duration: number) { setTimeout(resolve, duration); }); } - -export function getInitials(name: string) { - return name - .split(' ') - .map((word) => word?.[0]?.toUpperCase() ?? '') - .join('') - .slice(0, 2); -} diff --git a/src/lib/animations/scroll-indicator.svelte b/src/lib/animations/scroll-indicator.svelte deleted file mode 100644 index 065ce6901..000000000 --- a/src/lib/animations/scroll-indicator.svelte +++ /dev/null @@ -1,45 +0,0 @@ - - -
-
-
- - diff --git a/src/lib/components/AppwriteIn100Seconds.svelte b/src/lib/components/AppwriteIn100Seconds.svelte index f0770753c..47413c841 100644 --- a/src/lib/components/AppwriteIn100Seconds.svelte +++ b/src/lib/components/AppwriteIn100Seconds.svelte @@ -14,7 +14,8 @@ diff --git a/src/lib/components/appwrite-network/map-nav.svelte b/src/lib/components/appwrite-network/map-nav.svelte index 68e46beee..d5c056f59 100644 --- a/src/lib/components/appwrite-network/map-nav.svelte +++ b/src/lib/components/appwrite-network/map-nav.svelte @@ -3,6 +3,7 @@ import type { IconType } from '../ui'; import Icon from '../ui/icon/icon.svelte'; import { classNames } from '$lib/utils/classnames'; + import { trackEvent } from '$lib/actions/analytics'; const { onValueChange, @@ -13,31 +14,41 @@ } = $props(); const navItems = [ - { label: 'PoP Locations', value: 'pop-locations', icon: 'pop-locations' }, - { label: 'Edges', value: 'edges', icon: 'edge' }, - { label: 'Regions', value: 'regions', icon: 'regions' } - ] satisfies Array<{ label: string; value: string; icon: IconType }>; - - let selectedTab = $state('pop-locations'); - - function getDescription() { - switch (selectedTab) { - case 'pop-locations': - return 'Points of presence ensure <50ms ping around the globe.'; - case 'edges': - return 'Edges bring compute closer to users for faster response times.'; - case 'regions': - return 'Regions offer data residency and redundancy across continents.'; - default: - return ''; + { + label: 'PoP Locations', + value: 'pop-locations', + icon: 'pop-locations', + href: '/docs/products/network/cdn', + description: 'Points of presence ensure <50ms ping around the globe.' + }, + { + label: 'Edges', + value: 'edges', + icon: 'edge', + href: '/docs/products/network/edges#list', + description: 'Edges bring compute closer to users for faster response times.' + }, + { + label: 'Regions', + value: 'regions', + icon: 'regions', + href: '/docs/products/network/regions#list', + description: 'Regions offer data residency and redundancy across continents.' } - } + ] satisfies Array<{ + label: string; + value: string; + icon: IconType; + href: string; + description: string; + }>; + let activeIndex = $state(0);
{ - selectedTab = value; + activeIndex = navItems.findIndex((item) => item.value === value); onValueChange(value); }} value={navItems[0]?.value} @@ -45,8 +56,8 @@ > {#each navItems as { label, icon, value }, index} @@ -57,6 +68,11 @@ 'group data-[state="active"]:bg-accent/4 data-[state="active"]:border-accent/36 data-[state="active"]:text-accent' )} style="animation-delay:{index * 75}ms;" + onclick={() => { + trackEvent( + `network-map-nav-${value.toLowerCase().replace(' ', '-')}-click` + ); + }} > - {#key selectedTab} -

- {getDescription()} -

- {/key} +

+ {navItems[activeIndex].description} + + Learn more about {navItems[activeIndex].label} + + +

diff --git a/src/lib/components/appwrite-network/map-tooltip.svelte b/src/lib/components/appwrite-network/map-tooltip.svelte index 68656bcd1..2832f8e74 100644 --- a/src/lib/components/appwrite-network/map-tooltip.svelte +++ b/src/lib/components/appwrite-network/map-tooltip.svelte @@ -1,61 +1,124 @@ -{#if $tooltipData.city} -
+ -{/if} + {/if} +
diff --git a/src/lib/components/appwrite-network/map.svelte b/src/lib/components/appwrite-network/map.svelte index c511adfb8..6b4bb384b 100644 --- a/src/lib/components/appwrite-network/map.svelte +++ b/src/lib/components/appwrite-network/map.svelte @@ -1,35 +1,25 @@ - - -
-
- -
- -
+
+
-
-
-
- - - Map of the world - - {#each pins[activeSegment] as pin, index} - - {/each} + + {#each points as point} + + {/each} + {#each markers as marker} + + handleSetActiveTooltip( + marker.city, + marker.code, + marker.available, + marker.date + )} + onfocus={() => + handleSetActiveTooltip( + marker.city, + marker.code, + marker.available, + marker.date + )} + onblur={() => handleResetActiveTooltip()} + onmouseout={() => handleResetActiveTooltip()} + data-region={slugify(marker.city)} + > + + + + + {/each} +
- - + (activeSegment = value)} /> diff --git a/src/lib/components/appwrite-network/utils/projections.ts b/src/lib/components/appwrite-network/utils/projections.ts deleted file mode 100644 index ba972a185..000000000 --- a/src/lib/components/appwrite-network/utils/projections.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { MAP_BOUNDS } from '../map.svelte'; - -const MAP_WIDTH = 1048.25; -const MAP_HEIGHT = 525; - -type Coordinates = { - latitude: number; - longitude: number; -}; - -export const latLongToSvgPosition = ({ latitude, longitude }: Coordinates) => { - const { west, east, north, south } = MAP_BOUNDS; - - const lngRatio = (longitude - west) / (east - west); - const latRatio = (latitude - south) / (north - south); - - const clampedLngRatio = Math.max(0, Math.min(1, lngRatio)); - const clampedLatRatio = Math.max(0, Math.min(1, latRatio)); - - const x = clampedLngRatio * 100; - const y = (1 - clampedLatRatio) * 100; - - return { x, y }; // percentages, e.g., { x: 42.3, y: 71.8 } -}; diff --git a/src/lib/components/fancy/animated-text.svelte b/src/lib/components/fancy/animated-text.svelte index 83e8f3f98..c02fc637c 100644 --- a/src/lib/components/fancy/animated-text.svelte +++ b/src/lib/components/fancy/animated-text.svelte @@ -1,20 +1,25 @@ {text} - + {#each words as word, i} - {word} + + {word} + {/each} diff --git a/src/lib/components/fancy/checkmark.svelte b/src/lib/components/fancy/checkmark.svelte new file mode 100644 index 000000000..6536e4524 --- /dev/null +++ b/src/lib/components/fancy/checkmark.svelte @@ -0,0 +1,67 @@ + + + + + + diff --git a/src/lib/components/fancy/gradient-text.svelte b/src/lib/components/fancy/gradient-text.svelte index 38bcfdd9a..5493f8b71 100644 --- a/src/lib/components/fancy/gradient-text.svelte +++ b/src/lib/components/fancy/gradient-text.svelte @@ -1,17 +1,22 @@ - + {@render children()} diff --git a/src/lib/components/fancy/noise.svelte b/src/lib/components/fancy/noise.svelte index 406b8b4bb..f24c293a8 100644 --- a/src/lib/components/fancy/noise.svelte +++ b/src/lib/components/fancy/noise.svelte @@ -1,20 +1,22 @@ @@ -23,9 +25,10 @@ width="100%" height="100%" xmlns="http://www.w3.org/2000/svg" - class={classNames('pointer-events-none absolute inset-0 rounded-[inherit]', className)} + class={classNames('pointer-events-none absolute inset-0', className)} style:opacity style:filter={invert ? 'invert(1)' : 'none'} + {...rest} > + import { classNames } from '$lib/utils/classnames'; + import type { SvelteHTMLElements } from 'svelte/elements'; + import { navState } from './menu-state.svelte'; + + type Props = { + class?: string; + } & SvelteHTMLElements['button']; + + const { + class: className, + 'aria-label': ariaLabel = 'Open navigation menu', + onclick, + ...rest + }: Props = $props(); + + const toggleMobileNav = () => { + navState.isOpen = !navState.isOpen; + }; + + + + + (navState.isOpen = false)} /> diff --git a/src/lib/components/layout/navigation/menu-state.svelte.ts b/src/lib/components/layout/navigation/menu-state.svelte.ts new file mode 100644 index 000000000..0a3724a8a --- /dev/null +++ b/src/lib/components/layout/navigation/menu-state.svelte.ts @@ -0,0 +1,5 @@ +export let navState = $state<{ + isOpen: boolean; +}>({ + isOpen: false +}); diff --git a/src/lib/components/layout/navigation/menus/menu-wrapper.svelte b/src/lib/components/layout/navigation/menus/menu-wrapper.svelte new file mode 100644 index 000000000..abc5856b8 --- /dev/null +++ b/src/lib/components/layout/navigation/menus/menu-wrapper.svelte @@ -0,0 +1,23 @@ + + + +
+ {@render children()} +
+
diff --git a/src/lib/components/layout/navigation/menus/product-menu.svelte b/src/lib/components/layout/navigation/menus/product-menu.svelte new file mode 100644 index 000000000..5756d39b7 --- /dev/null +++ b/src/lib/components/layout/navigation/menus/product-menu.svelte @@ -0,0 +1,54 @@ + + + +
+ {#each products as product} + +
{product.name}
+

+ {product.description} +

+
+ {/each} +
+
diff --git a/src/lib/components/layout/navigation/mobile-nav.svelte b/src/lib/components/layout/navigation/mobile-nav.svelte new file mode 100644 index 000000000..2009dc60e --- /dev/null +++ b/src/lib/components/layout/navigation/mobile-nav.svelte @@ -0,0 +1,58 @@ + + +{#snippet ListItem({ className, label }: CollapsibleItemProps)} + + {label} + +
{name}
+
+
+{/snippet} diff --git a/src/lib/components/layout/navigation/primary-nav.svelte b/src/lib/components/layout/navigation/primary-nav.svelte new file mode 100644 index 000000000..e3197e971 --- /dev/null +++ b/src/lib/components/layout/navigation/primary-nav.svelte @@ -0,0 +1,67 @@ + + + + + {#each navItems as item} + + {#if item.menu} + {@const Submenu = item.menu} + {item.label} + + + {:else} + {item.label} + {/if} + + {/each} + +
+ +
+
diff --git a/src/lib/components/layout/site-footer.svelte b/src/lib/components/layout/site-footer.svelte new file mode 100644 index 000000000..ed4702733 --- /dev/null +++ b/src/lib/components/layout/site-footer.svelte @@ -0,0 +1,158 @@ + + + diff --git a/src/lib/components/layout/site-header.svelte b/src/lib/components/layout/site-header.svelte new file mode 100644 index 000000000..49d313caa --- /dev/null +++ b/src/lib/components/layout/site-header.svelte @@ -0,0 +1,26 @@ + + +
+
+ + + +
+
diff --git a/src/lib/components/layout/sub-footer.svelte b/src/lib/components/layout/sub-footer.svelte new file mode 100644 index 000000000..8e201b29f --- /dev/null +++ b/src/lib/components/layout/sub-footer.svelte @@ -0,0 +1,43 @@ + + +