{data.interest.description}
+diff --git a/package.json b/package.json
index aed394e..a2e5ac3 100644
--- a/package.json
+++ b/package.json
@@ -28,6 +28,9 @@
"@sveltejs/vite-plugin-svelte": "^7.0.0",
"@tailwindcss/typography": "^0.5.16",
"@tailwindcss/vite": "^4.1.13",
+ "@threlte/core": "^8.3.1",
+ "@threlte/extras": "^9.7.1",
+ "@types/three": "^0.182.0",
"@typescript-eslint/eslint-plugin": "^8.44.0",
"@typescript-eslint/parser": "^8.44.0",
"bits-ui": "^2.9.9",
@@ -38,6 +41,7 @@
"globals": "^17.3.0",
"lottie-web": "^5.13.0",
"playwright": "1.58.2",
+ "postprocessing": "^6.38.2",
"prettier": "^3.6.2",
"prettier-plugin-svelte": "^3.4.0",
"prettier-plugin-tailwindcss": "^0.7.2",
@@ -48,6 +52,7 @@
"svelte-sitemap": "^3.0.0",
"svgo": "^4.0.0",
"tailwindcss": "^4.1.13",
+ "three": "0.182.0",
"tslib": "^2.8.1",
"tsx": "^4.21.0",
"typescript": "^6.0.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 5c3c1e3..ba933b3 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -38,6 +38,15 @@ importers:
'@tailwindcss/vite':
specifier: ^4.1.13
version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.8.1)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0))
+ '@threlte/core':
+ specifier: ^8.3.1
+ version: 8.3.1(svelte@5.55.1)(three@0.182.0)
+ '@threlte/extras':
+ specifier: ^9.7.1
+ version: 9.7.1(@types/three@0.182.0)(svelte@5.55.1)(three@0.182.0)
+ '@types/three':
+ specifier: ^0.182.0
+ version: 0.182.0
'@typescript-eslint/eslint-plugin':
specifier: ^8.44.0
version: 8.58.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.2))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.2)
@@ -68,6 +77,9 @@ importers:
playwright:
specifier: 1.58.2
version: 1.58.2
+ postprocessing:
+ specifier: ^6.38.2
+ version: 6.38.2(three@0.182.0)
prettier:
specifier: ^3.6.2
version: 3.8.1
@@ -98,6 +110,9 @@ importers:
tailwindcss:
specifier: ^4.1.13
version: 4.2.2
+ three:
+ specifier: 0.182.0
+ version: 0.182.0
tslib:
specifier: ^2.8.1
version: 2.8.1
@@ -176,6 +191,9 @@ packages:
resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
engines: {node: '>=12'}
+ '@dimforge/rapier3d-compat@0.12.0':
+ resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==}
+
'@emnapi/core@1.9.1':
resolution: {integrity: sha512-mukuNALVsoix/w1BJwFzwXBN/dHeejQtuVzcDsfOEsdpCumXb/E9j8w11h5S54tT1xhifGfbbSm/ICrObRb3KA==}
@@ -1189,6 +1207,26 @@ packages:
peerDependencies:
vite: ^5.2.0 || ^6 || ^7 || ^8
+ '@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==}
+
'@tybys/wasm-util@0.10.1':
resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
@@ -1201,9 +1239,18 @@ packages:
'@types/json-schema@7.0.15':
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ '@types/stats.js@0.17.4':
+ resolution: {integrity: sha512-jIBvWWShCvlBqBNIZt0KAshWpvSjhkwkEu4ZUcASoAvhmrgAUI2t1dXrjSL4xXVLB4FznPrIsX3nKXFl/Dt4vA==}
+
+ '@types/three@0.182.0':
+ resolution: {integrity: sha512-WByN9V3Sbwbe2OkWuSGyoqQO8Du6yhYaXtXLoA5FkKTUJorZ+yOHBZ35zUUPQXlAKABZmbYp5oAqpA4RBjtJ/Q==}
+
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
+ '@types/webxr@0.5.24':
+ resolution: {integrity: sha512-h8fgEd/DpoS9CBrjEQXR+dIDraopAEfu4wYVNY2tEPwk60stPWhvZMf4Foo5FakuQ7HFZoa8WceaWFervK2Ovg==}
+
'@typescript-eslint/eslint-plugin@8.58.0':
resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
@@ -1263,6 +1310,9 @@ packages:
resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==}
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
+ '@webgpu/types@0.1.68':
+ resolution: {integrity: sha512-3ab1B59Ojb6RwjOspYLsTpCzbNB3ZaamIAxBMmvnNkiDoLTZUOBXZ9p5nAYVEkQlDdf6qAZWi1pqj9+ypiqznA==}
+
acorn-jsx@5.3.2:
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
peerDependencies:
@@ -1298,6 +1348,9 @@ packages:
resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
engines: {node: 18 || 20 || >=22}
+ bidi-js@1.0.3:
+ resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==}
+
bits-ui@2.16.5:
resolution: {integrity: sha512-Dx+Sc1DGzRaRfzpxrBI40d+O7vykIZ8E2G6tCaOzqYLzg+mN3YYK+8f8ysAFLfkHzey1MACGrYO3IcO6ROKlSA==}
engines: {node: '>=20'}
@@ -1326,6 +1379,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'
+
chalk@4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
@@ -1424,6 +1483,9 @@ packages:
devalue@5.6.4:
resolution: {integrity: sha512-Gp6rDldRsFh/7XuouDbxMH3Mx8GMCcgzIb1pDTvNyn8pZGQ22u+Wa+lGV9dQCltFQ7uVw0MhRyb8XDskNFOReA==}
+ diet-sprite@0.0.1:
+ resolution: {integrity: sha512-zSHI2WDAn1wJqJYxcmjWfJv3Iw8oL9reQIbEyx2x2/EZ4/qmUTIo8/5qOCurnAcq61EwtJJaZ0XTy2NRYqpB5A==}
+
dom-serializer@2.0.0:
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
@@ -1437,6 +1499,9 @@ packages:
domutils@3.2.2:
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
+ earcut@2.2.4:
+ resolution: {integrity: sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==}
+
enhanced-resolve@5.20.1:
resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==}
engines: {node: '>=10.13.0'}
@@ -1564,6 +1629,9 @@ packages:
picomatch:
optional: true
+ fflate@0.8.2:
+ resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==}
+
file-entry-cache@8.0.0:
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
engines: {node: '>=16.0.0'}
@@ -1786,6 +1854,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.18:
resolution: {integrity: sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ==}
@@ -1805,6 +1879,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==}
+
micromatch@4.0.8:
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
@@ -1824,6 +1901,9 @@ packages:
minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ mitt@3.0.1:
+ resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
+
mri@1.2.0:
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
engines: {node: '>=4'}
@@ -1948,6 +2028,11 @@ packages:
resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==}
engines: {node: ^10 || ^12 || >=14}
+ postprocessing@6.38.2:
+ resolution: {integrity: sha512-7DwuT7Tkst41ZjSj287g7C9c5/D3Xx5rMgBosg0dadbUPoZD2HNzkadKPol1d2PJAoI9f+Jeh1/v9YfLzpFGVw==}
+ peerDependencies:
+ three: '>= 0.157.0 < 0.183.0'
+
prelude-ls@1.2.1:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
@@ -2033,6 +2118,10 @@ packages:
resolution: {integrity: sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==}
engines: {node: '>=8'}
+ require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -2187,6 +2276,29 @@ packages:
resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==}
engines: {node: '>=6'}
+ three-instanced-uniforms-mesh@0.52.4:
+ resolution: {integrity: sha512-YwDBy05hfKZQtU+Rp0KyDf9yH4GxfhxMbVt9OYruxdgLfPwmDG5oAbGoW0DrKtKZSM3BfFcCiejiOHCjFBTeng==}
+ peerDependencies:
+ three: '>=0.125.0'
+
+ three-mesh-bvh@0.9.5:
+ resolution: {integrity: sha512-MYpwzUWDxPAKGhSBFin9E/7K4AAHyIm4IfMZQ/3+Z/jq/swa2dAhXx0yUNDd9mjlhLuzXkMBTGDZioL2GSlIfQ==}
+ 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.182.0:
+ resolution: {integrity: sha512-GbHabT+Irv+ihI1/f5kIIsZ+Ef9Sl5A1Y7imvS5RQjWgtTPfPnZ43JmlYI7NtCRDK9zir20lQpfg8/9Yd02OvQ==}
+
tinyglobby@0.2.15:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
@@ -2199,6 +2311,19 @@ packages:
resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==}
engines: {node: '>=6'}
+ 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.5.0:
resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==}
engines: {node: '>=18.12'}
@@ -2213,6 +2338,9 @@ packages:
engines: {node: '>=18.0.0'}
hasBin: true
+ 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'}
@@ -2303,6 +2431,9 @@ packages:
vite:
optional: true
+ webgl-sdf-generator@1.1.1:
+ resolution: {integrity: sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA==}
+
which@2.0.2:
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
engines: {node: '>= 8'}
@@ -2400,6 +2531,8 @@ snapshots:
dependencies:
'@jridgewell/trace-mapping': 0.3.9
+ '@dimforge/rapier3d-compat@0.12.0': {}
+
'@emnapi/core@1.9.1':
dependencies:
'@emnapi/wasi-threads': 1.2.0
@@ -3129,6 +3262,38 @@ snapshots:
tailwindcss: 4.2.2
vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.8.1)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0)
+ '@threejs-kit/instanced-sprite-mesh@2.5.1(@types/three@0.182.0)(three@0.182.0)':
+ dependencies:
+ diet-sprite: 0.0.1
+ earcut: 2.2.4
+ maath: 0.10.8(@types/three@0.182.0)(three@0.182.0)
+ three: 0.182.0
+ three-instanced-uniforms-mesh: 0.52.4(three@0.182.0)
+ troika-three-utils: 0.52.4(three@0.182.0)
+ transitivePeerDependencies:
+ - '@types/three'
+
+ '@threlte/core@8.3.1(svelte@5.55.1)(three@0.182.0)':
+ dependencies:
+ mitt: 3.0.1
+ svelte: 5.55.1
+ three: 0.182.0
+
+ '@threlte/extras@9.7.1(@types/three@0.182.0)(svelte@5.55.1)(three@0.182.0)':
+ dependencies:
+ '@threejs-kit/instanced-sprite-mesh': 2.5.1(@types/three@0.182.0)(three@0.182.0)
+ camera-controls: 3.1.2(three@0.182.0)
+ svelte: 5.55.1
+ three: 0.182.0
+ three-mesh-bvh: 0.9.5(three@0.182.0)
+ three-perf: 1.0.11(three@0.182.0)
+ three-viewport-gizmo: 2.2.0(three@0.182.0)
+ troika-three-text: 0.52.4(three@0.182.0)
+ transitivePeerDependencies:
+ - '@types/three'
+
+ '@tweenjs/tween.js@23.1.3': {}
+
'@tybys/wasm-util@0.10.1':
dependencies:
tslib: 2.8.1
@@ -3140,8 +3305,22 @@ snapshots:
'@types/json-schema@7.0.15': {}
+ '@types/stats.js@0.17.4': {}
+
+ '@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.68
+ fflate: 0.8.2
+ meshoptimizer: 0.22.0
+
'@types/trusted-types@2.0.7': {}
+ '@types/webxr@0.5.24': {}
+
'@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.2))(eslint@9.39.4(jiti@2.6.1))(typescript@6.0.2)':
dependencies:
'@eslint-community/regexpp': 4.12.2
@@ -3233,6 +3412,8 @@ snapshots:
'@typescript-eslint/types': 8.58.0
eslint-visitor-keys: 5.0.1
+ '@webgpu/types@0.1.68': {}
+
acorn-jsx@5.3.2(acorn@8.15.0):
dependencies:
acorn: 8.15.0
@@ -3260,6 +3441,10 @@ snapshots:
balanced-match@4.0.4: {}
+ bidi-js@1.0.3:
+ dependencies:
+ require-from-string: 2.0.2
+
bits-ui@2.16.5(@internationalized/date@3.8.0)(@sveltejs/kit@2.55.0(@sveltejs/vite-plugin-svelte@7.0.0(svelte@5.55.1)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.8.1)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0)))(svelte@5.55.1)(typescript@6.0.2)(vite@8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.8.1)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0)))(svelte@5.55.1):
dependencies:
'@floating-ui/core': 1.7.3
@@ -3292,6 +3477,10 @@ snapshots:
callsites@3.1.0: {}
+ camera-controls@3.1.2(three@0.182.0):
+ dependencies:
+ three: 0.182.0
+
chalk@4.1.2:
dependencies:
ansi-styles: 4.3.0
@@ -3367,6 +3556,8 @@ snapshots:
devalue@5.6.4: {}
+ diet-sprite@0.0.1: {}
+
dom-serializer@2.0.0:
dependencies:
domelementtype: 2.3.0
@@ -3385,6 +3576,8 @@ snapshots:
domelementtype: 2.3.0
domhandler: 5.0.3
+ earcut@2.2.4: {}
+
enhanced-resolve@5.20.1:
dependencies:
graceful-fs: 4.2.11
@@ -3586,6 +3779,8 @@ snapshots:
optionalDependencies:
picomatch: 4.0.4
+ fflate@0.8.2: {}
+
file-entry-cache@8.0.0:
dependencies:
flat-cache: 4.0.1
@@ -3751,6 +3946,11 @@ snapshots:
lz-string@1.5.0: {}
+ maath@0.10.8(@types/three@0.182.0)(three@0.182.0):
+ dependencies:
+ '@types/three': 0.182.0
+ three: 0.182.0
+
magic-string@0.30.18:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -3769,6 +3969,8 @@ snapshots:
merge2@1.4.1: {}
+ meshoptimizer@0.22.0: {}
+
micromatch@4.0.8:
dependencies:
braces: 3.0.3
@@ -3796,6 +3998,8 @@ snapshots:
minimist@1.2.8: {}
+ mitt@3.0.1: {}
+
mri@1.2.0: {}
mrmime@2.0.1: {}
@@ -3896,6 +4100,10 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postprocessing@6.38.2(three@0.182.0):
+ dependencies:
+ three: 0.182.0
+
prelude-ls@1.2.1: {}
prettier-plugin-svelte@3.5.1(prettier@3.8.1)(svelte@5.55.1):
@@ -3919,6 +4127,8 @@ snapshots:
regexparam@3.0.0: {}
+ require-from-string@2.0.2: {}
+
resolve-from@4.0.0: {}
resolve-pkg-maps@1.0.0: {}
@@ -4145,6 +4355,27 @@ snapshots:
tapable@2.3.2: {}
+ three-instanced-uniforms-mesh@0.52.4(three@0.182.0):
+ dependencies:
+ three: 0.182.0
+ troika-three-utils: 0.52.4(three@0.182.0)
+
+ three-mesh-bvh@0.9.5(three@0.182.0):
+ dependencies:
+ three: 0.182.0
+
+ three-perf@1.0.11(three@0.182.0):
+ dependencies:
+ three: 0.182.0
+ troika-three-text: 0.52.4(three@0.182.0)
+ tweakpane: 3.1.10
+
+ three-viewport-gizmo@2.2.0(three@0.182.0):
+ dependencies:
+ three: 0.182.0
+
+ three@0.182.0: {}
+
tinyglobby@0.2.15:
dependencies:
fdir: 6.5.0(picomatch@4.0.4)
@@ -4156,6 +4387,20 @@ snapshots:
totalist@3.0.1: {}
+ troika-three-text@0.52.4(three@0.182.0):
+ dependencies:
+ bidi-js: 1.0.3
+ three: 0.182.0
+ troika-three-utils: 0.52.4(three@0.182.0)
+ troika-worker-utils: 0.52.0
+ webgl-sdf-generator: 1.1.1
+
+ troika-three-utils@0.52.4(three@0.182.0):
+ dependencies:
+ three: 0.182.0
+
+ troika-worker-utils@0.52.0: {}
+
ts-api-utils@2.5.0(typescript@6.0.2):
dependencies:
typescript: 6.0.2
@@ -4169,6 +4414,8 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
+ tweakpane@3.1.10: {}
+
type-check@0.4.0:
dependencies:
prelude-ls: 1.2.1
@@ -4235,6 +4482,8 @@ snapshots:
optionalDependencies:
vite: 8.0.3(@emnapi/core@1.9.1)(@emnapi/runtime@1.8.1)(esbuild@0.27.3)(jiti@2.6.1)(tsx@4.21.0)
+ webgl-sdf-generator@1.1.1: {}
+
which@2.0.2:
dependencies:
isexe: 2.0.0
diff --git a/src/lib/components/ModelViewer/Environment.svelte b/src/lib/components/ModelViewer/Environment.svelte
new file mode 100644
index 0000000..856481e
--- /dev/null
+++ b/src/lib/components/ModelViewer/Environment.svelte
@@ -0,0 +1,12 @@
+
+
+
{data.interest.description}
+