diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 6926b0c50d..ac3434c11d 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -21,7 +21,8 @@ jobs: - name: Use Node.js uses: actions/setup-node@v6 with: - node-version: 20 + node-version: 22 + - name: Install pnpm uses: pnpm/action-setup@v4 - name: Install dependencies diff --git a/.github/workflows/e2e.yml b/.github/workflows/e2e.yml index 73a4883e68..ac1d7e7828 100644 --- a/.github/workflows/e2e.yml +++ b/.github/workflows/e2e.yml @@ -16,7 +16,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: 20 + node-version: 22 - name: Install pnpm uses: pnpm/action-setup@v4 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1674ff728d..968f8763e1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -19,7 +19,7 @@ jobs: - name: Use Node.js uses: actions/setup-node@v3 with: - node-version: 20 + node-version: 22 - name: Install pnpm uses: pnpm/action-setup@v4 diff --git a/package.json b/package.json index 5579ef2721..15cb88fa7f 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "@appwrite/console", "type": "module", "engines": { - "node": ">=20" + "node": ">=22.0.0" }, "scripts": { "dev": "vite dev", @@ -31,6 +31,8 @@ "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", "@stripe/stripe-js": "^3.5.0", + "@threlte/core": "^8.3.1", + "@threlte/extras": "^9.7.1", "ai": "^2.2.37", "analytics": "^0.8.16", "cron-parser": "^4.9.0", @@ -45,6 +47,7 @@ "prismjs": "^1.30.0", "remarkable": "^2.0.1", "svelte-confetti": "^1.4.0", + "three": "^0.181.2", "tippy.js": "^6.3.7" }, "devDependencies": { @@ -63,6 +66,7 @@ "@types/deep-equal": "^1.0.4", "@types/prismjs": "^1.26.5", "@types/remarkable": "^2.0.8", + "@types/three": "^0.182.0", "@typescript-eslint/eslint-plugin": "^8.28.0", "@typescript-eslint/parser": "^8.28.0", "@vitest/ui": "^3.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 479be4ae9f..f7492f49f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,6 +38,12 @@ importers: '@stripe/stripe-js': specifier: ^3.5.0 version: 3.5.0 + '@threlte/core': + specifier: ^8.3.1 + version: 8.3.1(svelte@5.25.3)(three@0.181.2) + '@threlte/extras': + specifier: ^9.7.1 + version: 9.7.1(@types/three@0.182.0)(svelte@5.25.3)(three@0.181.2) ai: specifier: ^2.2.37 version: 2.2.37(react@18.3.1)(solid-js@1.9.5)(svelte@5.25.3)(vue@3.5.13(typescript@5.8.2)) @@ -80,6 +86,9 @@ importers: svelte-confetti: specifier: ^1.4.0 version: 1.4.0(svelte@5.25.3) + three: + specifier: ^0.181.2 + version: 0.181.2 tippy.js: specifier: ^6.3.7 version: 6.3.7 @@ -129,6 +138,9 @@ importers: '@types/remarkable': specifier: ^2.0.8 version: 2.0.8 + '@types/three': + specifier: ^0.182.0 + version: 0.182.0 '@typescript-eslint/eslint-plugin': specifier: ^8.28.0 version: 8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.31.0)(typescript@5.8.2))(eslint@9.31.0)(typescript@5.8.2) @@ -405,6 +417,9 @@ packages: resolution: {integrity: sha512-UJnjoFsmxfKUdNYdWgOB0mWUypuLvAfQPH1+pyvRJs6euowbFkFC6P13w1l8mJyi3vxYMxc9kld5jZEGRQs6bw==} engines: {node: '>=18'} + '@dimforge/rapier3d-compat@0.12.0': + resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==} + '@esbuild/aix-ppc64@0.25.1': resolution: {integrity: sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==} engines: {node: '>=18'} @@ -1330,6 +1345,26 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@threejs-kit/instanced-sprite-mesh@2.5.1': + resolution: {integrity: sha512-pmt1ALRhbHhCJQTj2FuthH6PeLIeaM4hOuS2JO3kWSwlnvx/9xuUkjFR3JOi/myMqsH7pSsLIROSaBxDfttjeA==} + peerDependencies: + three: '>=0.170.0' + + '@threlte/core@8.3.1': + resolution: {integrity: sha512-qKjjNCQ+40hyeBcfOMh/8ef5x/j5PG5Wmo/L9Ye0aDCcdD6fCewWxfp7tV/J3CxPzX1dEp1JGK7sjyc7ntZSrg==} + peerDependencies: + svelte: '>=5' + three: '>=0.160' + + '@threlte/extras@9.7.1': + resolution: {integrity: sha512-SGm59HDCdHxADFHuweHfFDknwubkCPodyK0pbfsVtOWWOX26gE2xfK7aKolh6YFDiPAjWjGxN0jIgkNbbr1ohg==} + peerDependencies: + svelte: '>=5' + three: '>=0.160' + + '@tweenjs/tween.js@23.1.3': + resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -1393,12 +1428,21 @@ packages: '@types/shimmer@1.2.0': resolution: {integrity: sha512-UE7oxhQLLd9gub6JKIAhDq06T0F6FnztwMNRvYgjeQSBeMc1ZG/tA47EwfduvkuQS8apbkM/lpLpWsaCeYsXVg==} + '@types/stats.js@0.17.4': + resolution: {integrity: sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==} + '@types/tedious@4.0.14': resolution: {integrity: sha512-KHPsfX/FoVbUGbyYvk1q9MMQHLPeRZhRJZdO45Q4YjvFkv4hMNghCWTvy7rdKessBsmtz4euWCWAB6/tVpI1Iw==} + '@types/three@0.182.0': + resolution: {integrity: sha512-WByN9V3Sbwbe2OkWuSGyoqQO8Du6yhYaXtXLoA5FkKTUJorZ+yOHBZ35zUUPQXlAKABZmbYp5oAqpA4RBjtJ/Q==} + '@types/unist@3.0.3': resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} + '@types/webxr@0.5.24': + resolution: {integrity: sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==} + '@typescript-eslint/eslint-plugin@8.28.0': resolution: {integrity: sha512-lvFK3TCGAHsItNdWZ/1FkvpzCxTHUVuFrdnOGLMa0GGCFIbCgQWVk3CzCGdA7kM3qGVc+dfW9tr0Z/sHnGDFyg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1559,6 +1603,9 @@ packages: '@vue/shared@3.5.13': resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@webgpu/types@0.1.67': + resolution: {integrity: sha512-uk53+2ECGUkWoDFez/hymwpRfdgdIn6y1ref70fEecGMe5607f4sozNFgBk0oxlr7j2CRGWBEc3IBYMmFdGGTQ==} + acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: @@ -1674,6 +1721,9 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -1713,6 +1763,12 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} + camera-controls@3.1.2: + resolution: {integrity: sha512-xkxfpG2ECZ6Ww5/9+kf4mfg1VEYAoe9aDSY+IwF0UEs7qEzwy0aVRfs2grImIECs/PoBtWFrh7RXsQkwG922JA==} + engines: {node: '>=22.0.0', npm: '>=10.5.1'} + peerDependencies: + three: '>=0.126.1' + caniuse-lite@1.0.30001707: resolution: {integrity: sha512-3qtRjw/HQSMlDWf+X79N206fepf4SOOU6SQLMaq/0KkZLmSjPxAkBOQQ+FxbHKfHmYLZFfdWsO3KA90ceHPSnw==} @@ -2022,6 +2078,9 @@ packages: devlop@1.1.0: resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} + diet-sprite@0.0.1: + resolution: {integrity: sha512-zSHI2WDAn1wJqJYxcmjWfJv3Iw8oL9reQIbEyx2x2/EZ4/qmUTIo8/5qOCurnAcq61EwtJJaZ0XTy2NRYqpB5A==} + dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} @@ -2039,6 +2098,9 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} + earcut@2.2.4: + resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==} + echarts@5.6.0: resolution: {integrity: sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==} @@ -2601,6 +2663,12 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true + maath@0.10.8: + resolution: {integrity: sha512-tRvbDF0Pgqz+9XUa4jjfgAQ8/aPKmQdWXilFu2tMy4GWj4NOsx99HlULO4IeREfbO3a0sA145DZYyvXPkybm0g==} + peerDependencies: + '@types/three': '>=0.134.0' + three: '>=0.134.0' + magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -2635,6 +2703,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + meshoptimizer@0.22.0: + resolution: {integrity: sha512-IebiK79sqIy+E4EgOr+CAw+Ke8hAspXKzBd0JdgEmPHiAwmvEj2S4h1rfvo+o/BnfEYd/jAOg5IeeIjzlzSnDg==} + micromark-util-character@2.1.1: resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} @@ -2680,6 +2751,9 @@ packages: resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} engines: {node: '>=16 || 14 >=14.17'} + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + module-details-from-path@1.0.3: resolution: {integrity: sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==} @@ -2987,6 +3061,10 @@ packages: engines: {node: '>= 6.0.0'} hasBin: true + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + require-in-the-middle@7.5.2: resolution: {integrity: sha512-gAZ+kLqBdHarXB64XpAe2VCjB7rIRv+mU8tfRWziHRJ5umKsIHN2tLLv6EtMw7WCdP19S0ERVMldNvxYCHnhSQ==} engines: {node: '>=8.6.0'} @@ -3286,6 +3364,29 @@ packages: the-new-css-reset@1.11.3: resolution: {integrity: sha512-61SB81vu9foUyEIqoU1CeqxrdlsVjJojj/CBXoG8BdvlKFsllB0Rza63DblnRqH+3uttPj3FGWo7+c9nu7MT+A==} + three-instanced-uniforms-mesh@0.52.4: + resolution: {integrity: sha512-YwDBy05hfKZQtU+Rp0KyDf9yH4GxfhxMbVt9OYruxdgLfPwmDG5oAbGoW0DrKtKZSM3BfFcCiejiOHCjFBTeng==} + peerDependencies: + three: '>=0.125.0' + + three-mesh-bvh@0.9.3: + resolution: {integrity: sha512-LaxfvQpF+At96fS90GnQxHpff9bu78UL5eooJNxYyBbyiWrOBpjRx+5yn/+Dj2lQVhz5A/jHqwpVchYYnz/hWQ==} + peerDependencies: + three: '>= 0.159.0' + + three-perf@1.0.11: + resolution: {integrity: sha512-OgBpZjwL+csQKGKZjpkH/QHdbGFMxqngMbSEJeSnVNfXDYd6On7WHNv/GhUZH4YxIpNMwMahBWrNnsJvnbSJHQ==} + peerDependencies: + three: '>=0.170' + + three-viewport-gizmo@2.2.0: + resolution: {integrity: sha512-Jo9Liur1rUmdKk75FZumLU/+hbF+RtJHi1qsKZpntjKlCYScK6tjbYoqvJ9M+IJphrlQJF5oReFW7Sambh0N4Q==} + peerDependencies: + three: '>=0.162.0 <1.0.0' + + three@0.181.2: + resolution: {integrity: sha512-k/CjiZ80bYss6Qs7/ex1TBlPD11whT9oKfT8oTGiHa34W4JRd1NiH/Tr1DbHWQ2/vMUypxksLnF2CfmlmM5XFQ==} + tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -3353,6 +3454,19 @@ packages: trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} + troika-three-text@0.52.4: + resolution: {integrity: sha512-V50EwcYGruV5rUZ9F4aNsrytGdKcXKALjEtQXIOBfhVoZU9VAqZNIoGQ3TMiooVqFAbR1w15T+f+8gkzoFzawg==} + peerDependencies: + three: '>=0.125.0' + + troika-three-utils@0.52.4: + resolution: {integrity: sha512-NORAStSVa/BDiG52Mfudk4j1FG4jC4ILutB3foPnfGbOeIs9+G5vZLa0pnmnaftZUGm4UwSoqEpWdqvC7zms3A==} + peerDependencies: + three: '>=0.125.0' + + troika-worker-utils@0.52.0: + resolution: {integrity: sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==} + ts-api-utils@2.1.0: resolution: {integrity: sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==} engines: {node: '>=18.12'} @@ -3371,6 +3485,9 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tweakpane@3.1.10: + resolution: {integrity: sha512-rqwnl/pUa7+inhI2E9ayGTqqP0EPOOn/wVvSWjZsRbZUItzNShny7pzwL3hVlaN4m9t/aZhsP0aFQ9U5VVR2VQ==} + type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} @@ -3524,6 +3641,9 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} + webgl-sdf-generator@1.1.1: + resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==} + webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} @@ -3881,6 +4001,8 @@ snapshots: '@csstools/css-tokenizer@3.0.3': {} + '@dimforge/rapier3d-compat@0.12.0': {} + '@esbuild/aix-ppc64@0.25.1': optional: true @@ -4844,6 +4966,38 @@ snapshots: dependencies: '@testing-library/dom': 10.4.0 + '@threejs-kit/instanced-sprite-mesh@2.5.1(@types/three@0.182.0)(three@0.181.2)': + dependencies: + diet-sprite: 0.0.1 + earcut: 2.2.4 + maath: 0.10.8(@types/three@0.182.0)(three@0.181.2) + three: 0.181.2 + three-instanced-uniforms-mesh: 0.52.4(three@0.181.2) + troika-three-utils: 0.52.4(three@0.181.2) + transitivePeerDependencies: + - '@types/three' + + '@threlte/core@8.3.1(svelte@5.25.3)(three@0.181.2)': + dependencies: + mitt: 3.0.1 + svelte: 5.25.3 + three: 0.181.2 + + '@threlte/extras@9.7.1(@types/three@0.182.0)(svelte@5.25.3)(three@0.181.2)': + dependencies: + '@threejs-kit/instanced-sprite-mesh': 2.5.1(@types/three@0.182.0)(three@0.181.2) + camera-controls: 3.1.2(three@0.181.2) + svelte: 5.25.3 + three: 0.181.2 + three-mesh-bvh: 0.9.3(three@0.181.2) + three-perf: 1.0.11(three@0.181.2) + three-viewport-gizmo: 2.2.0(three@0.181.2) + troika-three-text: 0.52.4(three@0.181.2) + transitivePeerDependencies: + - '@types/three' + + '@tweenjs/tween.js@23.1.3': {} + '@types/aria-query@5.0.4': {} '@types/chai@5.2.2': @@ -4907,12 +5061,26 @@ snapshots: '@types/shimmer@1.2.0': {} + '@types/stats.js@0.17.4': {} + '@types/tedious@4.0.14': dependencies: '@types/node': 22.13.14 + '@types/three@0.182.0': + dependencies: + '@dimforge/rapier3d-compat': 0.12.0 + '@tweenjs/tween.js': 23.1.3 + '@types/stats.js': 0.17.4 + '@types/webxr': 0.5.24 + '@webgpu/types': 0.1.67 + fflate: 0.8.2 + meshoptimizer: 0.22.0 + '@types/unist@3.0.3': {} + '@types/webxr@0.5.24': {} + '@typescript-eslint/eslint-plugin@8.28.0(@typescript-eslint/parser@8.28.0(eslint@9.31.0)(typescript@5.8.2))(eslint@9.31.0)(typescript@5.8.2)': dependencies: '@eslint-community/regexpp': 4.12.1 @@ -5176,6 +5344,8 @@ snapshots: '@vue/shared@3.5.13': {} + '@webgpu/types@0.1.67': {} + acorn-import-attributes@1.9.5(acorn@8.14.1): dependencies: acorn: 8.14.1 @@ -5285,6 +5455,10 @@ snapshots: balanced-match@1.0.2: {} + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + binary-extensions@2.3.0: {} brace-expansion@1.1.11: @@ -5328,6 +5502,10 @@ snapshots: callsites@3.1.0: {} + camera-controls@3.1.2(three@0.181.2): + dependencies: + three: 0.181.2 + caniuse-lite@1.0.30001707: {} ccount@2.0.1: {} @@ -5664,6 +5842,8 @@ snapshots: dependencies: dequal: 2.0.3 + diet-sprite@0.0.1: {} + dlv@1.1.3: {} dom-accessibility-api@0.5.16: {} @@ -5678,6 +5858,8 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 + earcut@2.2.4: {} + echarts@5.6.0: dependencies: tslib: 2.3.0 @@ -6277,6 +6459,11 @@ snapshots: lz-string@1.5.0: {} + maath@0.10.8(@types/three@0.182.0)(three@0.181.2): + dependencies: + '@types/three': 0.182.0 + three: 0.181.2 + magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -6321,6 +6508,8 @@ snapshots: merge2@1.4.1: {} + meshoptimizer@0.22.0: {} + micromark-util-character@2.1.1: dependencies: micromark-util-symbol: 2.0.1 @@ -6363,6 +6552,8 @@ snapshots: minipass@7.1.2: {} + mitt@3.0.1: {} + module-details-from-path@1.0.3: {} mri@1.2.0: {} @@ -6626,6 +6817,8 @@ snapshots: argparse: 1.0.10 autolinker: 3.16.2 + require-from-string@2.0.2: {} + require-in-the-middle@7.5.2: dependencies: debug: 4.4.0 @@ -6964,6 +7157,27 @@ snapshots: the-new-css-reset@1.11.3: {} + three-instanced-uniforms-mesh@0.52.4(three@0.181.2): + dependencies: + three: 0.181.2 + troika-three-utils: 0.52.4(three@0.181.2) + + three-mesh-bvh@0.9.3(three@0.181.2): + dependencies: + three: 0.181.2 + + three-perf@1.0.11(three@0.181.2): + dependencies: + three: 0.181.2 + troika-three-text: 0.52.4(three@0.181.2) + tweakpane: 3.1.10 + + three-viewport-gizmo@2.2.0(three@0.181.2): + dependencies: + three: 0.181.2 + + three@0.181.2: {} + tiny-glob@0.2.9: dependencies: globalyzer: 0.1.0 @@ -7020,6 +7234,20 @@ snapshots: trim-lines@3.0.1: {} + troika-three-text@0.52.4(three@0.181.2): + dependencies: + bidi-js: 1.0.3 + three: 0.181.2 + troika-three-utils: 0.52.4(three@0.181.2) + troika-worker-utils: 0.52.0 + webgl-sdf-generator: 1.1.1 + + troika-three-utils@0.52.4(three@0.181.2): + dependencies: + three: 0.181.2 + + troika-worker-utils@0.52.0: {} + ts-api-utils@2.1.0(typescript@5.8.2): dependencies: typescript: 5.8.2 @@ -7032,6 +7260,8 @@ snapshots: tslib@2.8.1: {} + tweakpane@3.1.10: {} + type-check@0.4.0: dependencies: prelude-ls: 1.2.1 @@ -7201,6 +7431,8 @@ snapshots: dependencies: xml-name-validator: 5.0.0 + webgl-sdf-generator@1.1.1: {} + webidl-conversions@3.0.1: {} webidl-conversions@7.0.0: {} diff --git a/src/lib/components/bottomModalAlert.svelte b/src/lib/components/bottomModalAlert.svelte index 1c0f24a9f6..623a510c19 100644 --- a/src/lib/components/bottomModalAlert.svelte +++ b/src/lib/components/bottomModalAlert.svelte @@ -19,6 +19,14 @@ import { goto } from '$app/navigation'; import { Typography } from '@appwrite.io/pink-svelte'; + function resolveThemeColor( + color: Record<'light' | 'dark', string> | string | undefined + ): string | undefined { + if (!color) return undefined; + if (typeof color === 'string') return color; + return color[$app.themeInUse]; + } + let currentIndex = $state(0); let openModalOnMobile = $state(false); @@ -100,6 +108,12 @@ message: 'Explore new features to enhance your projects and improve security.' }; + // override + if (currentModalAlert?.sameContentOnMobileLayout) { + fallback.title = currentModalAlert?.title; + fallback.message = currentModalAlert?.message; + } + const shouldApplyConfig = config?.enabled === true && visibleAlerts.length === 1; return { @@ -199,7 +213,10 @@
- {#if $app.themeInUse === 'dark'} + {#if currentModalAlert.backgroundComponent} + {@const BackgroundComponent = currentModalAlert.backgroundComponent} + + {:else if $app.themeInUse === 'dark'} {currentModalAlert.title} {#if currentModalAlert.learnMore} {#if currentModalAlert.learnMore}