@crapthings/run3d 0.2.1 → 0.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  Create a 3D project in one command. The starter scene has a grid and a box ready to edit.
4
4
 
5
+ As models like GPT-6 Astra grow more capable at building 3D experiences, the distance from an idea to a working prototype keeps shrinking. I have new ideas every day, and I want to spend that energy creating. run3d brings my go-to tools for brainstorming and experimentation into one ready-to-use starter, so I can jump straight into building, testing ideas, and discovering what works.
6
+
5
7
  ## Usage
6
8
 
7
9
  Requires Node.js `^20.19.0 || >=22.12.0` and pnpm.
@@ -18,37 +20,37 @@ Edit `src/Scene.jsx` to make it your own. To install dependencies later, add `--
18
20
 
19
21
  ### App foundation
20
22
 
21
- - Vite — runs the development server and builds the app.
22
- - React and React DOM — build and render the app UI.
23
+ - [React and React DOM](https://github.com/react/react) — build and render the app UI.
24
+ - [Vite](https://github.com/vitejs/vite) — runs the development server and builds the app.
23
25
 
24
26
  ### 3D scenes
25
27
 
26
- - Three.js — renders 3D scenes.
27
- - pmndrs/math — provides math utilities for 3D work.
28
- - Postprocessing — applies visual effects to rendered scenes.
29
- - React Three Fiber — lets you build Three.js scenes with React.
30
- - Drei — provides ready-made 3D helpers and controls.
31
- - GSAP — animates scene and UI properties with timelines.
32
- - `@react-three/postprocessing` — uses postprocessing effects as React components.
33
- - R3F-Perf — monitors rendering performance while developing.
28
+ - [Three.js](https://github.com/mrdoob/three.js) — renders 3D scenes.
29
+ - [React Three Fiber](https://github.com/pmndrs/react-three-fiber) — lets you build Three.js scenes with React.
30
+ - [Drei](https://github.com/pmndrs/drei) — provides ready-made 3D helpers and controls.
31
+ - [GSAP](https://github.com/greensock/GSAP) and [@gsap/react](https://github.com/greensock/react) — animate scene and UI properties with timelines and the `useGSAP` React hook.
32
+ - [Postprocessing](https://github.com/pmndrs/postprocessing) and [@react-three/postprocessing](https://github.com/pmndrs/react-postprocessing) — add visual effects with React components.
33
+ - [pmndrs/math](https://github.com/pmndrs/math) — provides math utilities for 3D work.
34
+ - [R3F-Perf](https://github.com/utsuboco/r3f-perf) — monitors rendering performance while developing.
34
35
 
35
36
  ### Worlds and movement
36
37
 
37
- - FastNoiseLite — generates procedural 2D and 3D noise.
38
- - Three Hex Tiling — reduces visible repetition in tiled textures.
39
- - Recast Navigation — generates navmeshes and finds paths.
40
- - `@recast-navigation/three` — connects Recast Navigation to Three.js scenes.
41
- - Navcat — builds and queries navmeshes in pure JavaScript, with Three.js helpers.
42
- - React Three Rapier — adds physics and collisions.
38
+ - [React Three Rapier](https://github.com/pmndrs/react-three-rapier) — adds physics and collisions.
39
+ - [Recast Navigation and @recast-navigation/three](https://github.com/isaac-mason/recast-navigation-js) — generate navmeshes and find paths in Three.js scenes.
40
+ - [Navcat](https://github.com/isaac-mason/navcat) — builds and queries navmeshes in pure JavaScript, with Three.js helpers.
41
+ - [FastNoiseLite](https://github.com/Auburn/FastNoiseLite) — generates procedural 2D and 3D noise.
42
+ - [Three Hex Tiling](https://github.com/Ameobea/three-hex-tiling) — reduces visible repetition in tiled textures.
43
43
 
44
44
  ### Data and state
45
45
 
46
- - D3 — provides data scales, layouts, and visualizations.
47
- - Zustand — manages React app state.
48
- - Koota — manages game state with entities and components.
46
+ - [Zustand](https://github.com/pmndrs/zustand) — manages React app state.
47
+ - [Koota](https://github.com/pmndrs/koota) — manages game state with entities and components.
48
+ - [D3](https://github.com/d3/d3) — provides data scales, layouts, and visualizations.
49
+ - [p5.js](https://github.com/processing/p5.js) — creates interactive graphics and creative coding sketches.
49
50
 
50
51
  ### Interface
51
52
 
52
- - React Router — connects URLs to pages and handles navigation.
53
- - Tailwind CSS — styles the app.
54
- - Floating UI — positions menus, tooltips, and popovers.
53
+ - [React Router](https://github.com/remix-run/react-router) — connects URLs to pages and handles navigation.
54
+ - [Tailwind CSS](https://github.com/tailwindlabs/tailwindcss) — styles the app.
55
+ - [Headless UI](https://github.com/tailwindlabs/headlessui) — provides accessible, unstyled React UI components.
56
+ - [Floating UI](https://github.com/floating-ui/floating-ui) — positions menus, tooltips, and popovers.
package/package.json CHANGED
@@ -3,14 +3,15 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "0.2.1",
7
- "description": "Create a minimal Vite, React Three Fiber, and Drei Grid starter project",
6
+ "version": "0.2.3",
7
+ "description": "From idea to interactive 3D prototype in one command. A JavaScript starter with Vite, React Three Fiber, and tools for creative experimentation.",
8
8
  "type": "module",
9
9
  "bin": {
10
10
  "run3d": "bin/run3d.js"
11
11
  },
12
12
  "files": [
13
13
  "bin",
14
+ "template/AGENTS.md",
14
15
  "template/gitignore",
15
16
  "template/index.html",
16
17
  "template/jsconfig.json",
@@ -31,12 +32,21 @@
31
32
  "release": "node scripts/release.js"
32
33
  },
33
34
  "keywords": [
34
- "vite",
35
- "react",
35
+ "3d",
36
36
  "three",
37
+ "threejs",
38
+ "react",
37
39
  "react-three-fiber",
40
+ "r3f",
38
41
  "drei",
42
+ "vite",
43
+ "webgl",
44
+ "creative-coding",
45
+ "prototyping",
46
+ "javascript",
39
47
  "starter",
48
+ "template",
49
+ "scaffolding",
40
50
  "cli"
41
51
  ],
42
52
  "license": "MIT",
@@ -0,0 +1,4 @@
1
+ # Rules
2
+
3
+ - Only run `pnpm build`, `pnpm lint`, or `pnpm test` when explicitly requested by the user.
4
+ - Follow JavaScript Standard Style (standard.js) when writing `.js` and `.jsx` files.
@@ -14,6 +14,8 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@floating-ui/react": "^0.27.20",
17
+ "@gsap/react": "^2.1.2",
18
+ "@headlessui/react": "^2.2.10",
17
19
  "@react-three/drei": "^10.7.8",
18
20
  "@react-three/fiber": "^9.7.0",
19
21
  "@react-three/postprocessing": "^3.1.1",
@@ -25,6 +27,7 @@
25
27
  "koota": "^0.6.6",
26
28
  "math": "0.1.0",
27
29
  "navcat": "^0.4.1",
30
+ "p5": "^2.3.3",
28
31
  "postprocessing": "^6.39.5",
29
32
  "react": "19.2.8",
30
33
  "react-dom": "19.2.8",
@@ -169,6 +169,12 @@ importers:
169
169
  '@floating-ui/react':
170
170
  specifier: ^0.27.20
171
171
  version: 0.27.20(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
172
+ '@gsap/react':
173
+ specifier: ^2.1.2
174
+ version: 2.1.2(gsap@3.15.0)(react@19.2.8)
175
+ '@headlessui/react':
176
+ specifier: ^2.2.10
177
+ version: 2.2.10(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
172
178
  '@react-three/drei':
173
179
  specifier: ^10.7.8
174
180
  version: 10.7.8(@react-three/fiber@9.7.0(@types/react@19.3.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(three@0.186.0))(@types/react@19.3.0)(@types/three@0.186.0)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(three@0.186.0)
@@ -202,6 +208,9 @@ importers:
202
208
  navcat:
203
209
  specifier: ^0.4.1
204
210
  version: 0.4.1(three@0.186.0)
211
+ p5:
212
+ specifier: ^2.3.3
213
+ version: 2.3.3
205
214
  postprocessing:
206
215
  specifier: ^6.39.5
207
216
  version: 6.39.5(three@0.186.0)
@@ -249,6 +258,9 @@ packages:
249
258
  resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==}
250
259
  engines: {node: '>=6.9.0'}
251
260
 
261
+ '@davepagurek/bezier-path@0.0.7':
262
+ resolution: {integrity: sha512-CVlnCOrV1iy4Z12T756i9l4G6kF7r8uhlnb+xqDemAMmWQB+8Q0b+8VEqIiUfywgZDSiDr18Rm7pZlnA69rE8Q==}
263
+
252
264
  '@dimforge/rapier3d-compat@0.12.0':
253
265
  resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==}
254
266
 
@@ -267,6 +279,12 @@ packages:
267
279
  react: '>=16.8.0'
268
280
  react-dom: '>=16.8.0'
269
281
 
282
+ '@floating-ui/react@0.26.28':
283
+ resolution: {integrity: sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==}
284
+ peerDependencies:
285
+ react: '>=16.8.0'
286
+ react-dom: '>=16.8.0'
287
+
270
288
  '@floating-ui/react@0.27.20':
271
289
  resolution: {integrity: sha512-CMqMy7OaXl9W0eq1Uy7L7i2Y/anPvHmFmESd2CEw0t5YvZhcVCeo4MBevAmswRllX7Y2dEidA4ozGPunLSTQpw==}
272
290
  peerDependencies:
@@ -276,6 +294,31 @@ packages:
276
294
  '@floating-ui/utils@0.2.12':
277
295
  resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==}
278
296
 
297
+ '@gsap/react@2.1.2':
298
+ resolution: {integrity: sha512-JqliybO1837UcgH2hVOM4VO+38APk3ECNrsuSM4MuXp+rbf+/2IG2K1YJiqfTcXQHH7XlA0m3ykniFYstfq0Iw==}
299
+ peerDependencies:
300
+ gsap: ^3.12.5
301
+ react: '>=17'
302
+
303
+ '@headlessui/react@2.2.10':
304
+ resolution: {integrity: sha512-5pVLNK9wlpxTUTy9GpgbX/SdcRh+HBnPktjM2wbiLTH4p+2EPHBO1aoSryUCuKUIItdDWO9ITlhUL8UnUN/oIA==}
305
+ engines: {node: '>=10'}
306
+ peerDependencies:
307
+ react: ^18 || ^19 || ^19.0.0-rc
308
+ react-dom: ^18 || ^19 || ^19.0.0-rc
309
+
310
+ '@internationalized/date@3.12.4':
311
+ resolution: {integrity: sha512-M1dEn4c1U1HsSlaVR8upZtSqvXrTkHDfv18H01uCSJyjVLDxnBR38v/fMxecmlwXKR4i9HeZcmgQAPE6A+aGJQ==}
312
+
313
+ '@internationalized/number@3.6.8':
314
+ resolution: {integrity: sha512-8UmMFia46DUt+k97zKd9fKWXcWHR+k8ae3eYzILETuT2KbIvLyOfac7zesw+sJdRAAZ7Q9pM1Mk22aXp2LD0Ig==}
315
+
316
+ '@internationalized/string@3.2.10':
317
+ resolution: {integrity: sha512-PDx6//vHSpRnHfxqMqto11zQvhsaU74O3mKv2F/0eicGZcl9NLjQmGlbHz/LsJh5tLKp4A4L7ZVTzN1/MmMTvA==}
318
+
319
+ '@japont/unicode-range@1.0.0':
320
+ resolution: {integrity: sha512-BckHvA2XdjRBVAWe2uceNuRf78lBeI28kyWEbfr/Q2pE17POkwuZ6WWY/UMv8FL9iBxhW4xfDoNLM9UVZaTeUQ==}
321
+
279
322
  '@jridgewell/gen-mapping@0.3.13':
280
323
  resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
281
324
 
@@ -308,6 +351,18 @@ packages:
308
351
  peerDependencies:
309
352
  react: ^16.x || ^17.x || ^18.x || ^19.0.0 || ^19.0.0-rc
310
353
 
354
+ '@react-aria/focus@3.22.1':
355
+ resolution: {integrity: sha512-CPxtkyrBi/HYY5P3lE/57sQ6qfa0lN8E55TOm89H0kNGv0lKt+/0zP7lWERzBjRr5IxBVrQX4gFEowBN52LPaA==}
356
+ peerDependencies:
357
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
358
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
359
+
360
+ '@react-aria/interactions@3.28.1':
361
+ resolution: {integrity: sha512-Bqb+HrD5I5MHS2SKBhISYqo2SW8Y2dfzgF/Y1lIJq7xqLxheo9vzxPGEHhz+XzkgGfoqEJx8A6a3C7uiqS3HWA==}
362
+ peerDependencies:
363
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
364
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
365
+
311
366
  '@react-spring/animated@9.7.5':
312
367
  resolution: {integrity: sha512-Tqrwz7pIlsSDITzxoLS3n/v/YCUHQdOIKtOJf4yL6kYVSDTSmVK1LI1Q3M/uu2Sx4X3pIWF3xLUhlsA6SPNTNg==}
313
368
  peerDependencies:
@@ -398,6 +453,11 @@ packages:
398
453
  react: ^19
399
454
  three: '>=0.159.0'
400
455
 
456
+ '@react-types/shared@3.36.1':
457
+ resolution: {integrity: sha512-AzsuD9OfxTOZMMvTRhlN3oHBwOmFN7tDh27LzqmHt4+uOgPhJT7ZM7/kVs/8/o0WxayMUIk3hBmCFRHv1FUoag==}
458
+ peerDependencies:
459
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
460
+
401
461
  '@recast-navigation/core@0.43.1':
402
462
  resolution: {integrity: sha512-4igfPgnoV90O92sDSIA0xHa6tanh3z/udlgGmD0SqGQ6PKV4JS2l9jWO8YnxfZuXP/NV52H4c5FU6pSdZc9WDA==}
403
463
 
@@ -517,6 +577,9 @@ packages:
517
577
  peerDependencies:
518
578
  react: '>= 16.3.0'
519
579
 
580
+ '@swc/helpers@0.5.23':
581
+ resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==}
582
+
520
583
  '@tailwindcss/node@4.3.3':
521
584
  resolution: {integrity: sha512-/T8IKEsf9VTU6tLjgC7+sv2mOPtQxzE2jMw7u4Tt40Tx+QSZxpzh95/H6cMKoja9XuW7iMdLJYBB0o9G1CaAgg==}
522
585
 
@@ -611,6 +674,15 @@ packages:
611
674
  peerDependencies:
612
675
  vite: ^5.2.0 || ^6 || ^7 || ^8
613
676
 
677
+ '@tanstack/react-virtual@3.14.13':
678
+ resolution: {integrity: sha512-JbDTAwtzZ99aOeCrAfW5EsE5KSq5RWh6Af2dtFwyLIIk48Ja7vm6n4axu/43T3vfjFnEGJalxJ1wyYjSQD6bSg==}
679
+ peerDependencies:
680
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
681
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
682
+
683
+ '@tanstack/virtual-core@3.17.11':
684
+ resolution: {integrity: sha512-+ILjvtHup6Y2hzQ6YzwMgX1Q+oQpxEGOXCEsCNaPoIP0VxMbizIBTmYTDtkerkIQS8/CbP1BRuyt8V/8BCsy1g==}
685
+
614
686
  '@tweenjs/tween.js@23.1.3':
615
687
  resolution: {integrity: sha512-vJmvvwFxYuGnF2axRtPYocag6Clbb5YS7kLL+SO/TeVFzHqDIWrNKYtcsPMibjDx9O+bu+psAy9NKfWklassUA==}
616
688
 
@@ -669,6 +741,19 @@ packages:
669
741
  oxc-transform-react:
670
742
  optional: true
671
743
 
744
+ acorn-walk@8.3.5:
745
+ resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==}
746
+ engines: {node: '>=0.4.0'}
747
+
748
+ acorn@8.18.0:
749
+ resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==}
750
+ engines: {node: '>=0.4.0'}
751
+ hasBin: true
752
+
753
+ aria-hidden@1.2.6:
754
+ resolution: {integrity: sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==}
755
+ engines: {node: '>=10'}
756
+
672
757
  base64-js@1.5.1:
673
758
  resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
674
759
 
@@ -689,6 +774,13 @@ packages:
689
774
  peerDependencies:
690
775
  three: '>=0.126.1'
691
776
 
777
+ clsx@2.1.1:
778
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
779
+ engines: {node: '>=6'}
780
+
781
+ colorjs.io@0.6.1:
782
+ resolution: {integrity: sha512-8lyR2wHzuIykCpqHKgluGsqQi5iDm3/a2IgP2GBZrasn2sBRkE4NOGsglZxWLs/jZQoNkmA/KM/8NV16rLUdBg==}
783
+
692
784
  commander@7.2.0:
693
785
  resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==}
694
786
  engines: {node: '>= 10'}
@@ -853,6 +945,24 @@ packages:
853
945
  resolution: {integrity: sha512-nGXts5znJzmWPu+mIE9izCOzdg63oJca2mDzGWWTth7sr4aCToKcoyFVBQwN75Ij5Pf6p510EwkTqViTRzDV+w==}
854
946
  engines: {node: '>=10.13.0'}
855
947
 
948
+ escodegen@2.1.0:
949
+ resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==}
950
+ engines: {node: '>=6.0'}
951
+ hasBin: true
952
+
953
+ esprima@4.0.1:
954
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
955
+ engines: {node: '>=4'}
956
+ hasBin: true
957
+
958
+ estraverse@5.3.0:
959
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
960
+ engines: {node: '>=4.0'}
961
+
962
+ esutils@2.0.3:
963
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
964
+ engines: {node: '>=0.10.0'}
965
+
856
966
  eventemitter3@4.0.7:
857
967
  resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==}
858
968
 
@@ -879,6 +989,9 @@ packages:
879
989
  engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
880
990
  os: [darwin]
881
991
 
992
+ gifenc@1.0.3:
993
+ resolution: {integrity: sha512-xdr6AdrfGBcfzncONUOlXMBuc5wJDtOueE3c5rdG0oNgtINLD+f2iFZltrBRZYzACRbKr+mSVU/x98zv2u3jmw==}
994
+
882
995
  glsl-noise@0.0.0:
883
996
  resolution: {integrity: sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w==}
884
997
 
@@ -891,6 +1004,12 @@ packages:
891
1004
  hls.js@1.7.3:
892
1005
  resolution: {integrity: sha512-MsPlx6yVW4Qv4C7mEVou4/gk/5cN2dVxOTnrNjPSmyH2f0Ln+/UkG10Ax1PE6OvrmTVPKgQYozTtBaPOuCzq7A==}
893
1006
 
1007
+ i18next-browser-languagedetector@4.3.1:
1008
+ resolution: {integrity: sha512-KIToAzf8zwWvacgnRwJp63ase26o24AuNUlfNVJ5YZAFmdGhsJpmFClxXPuk9rv1FMI4lnc8zLSqgZPEZMrW4g==}
1009
+
1010
+ i18next@19.9.2:
1011
+ resolution: {integrity: sha512-0i6cuo6ER6usEOtKajUUDj92zlG+KArFia0857xxiEHAQcUwh/RtOQocui1LPJwunSYT574Pk64aNva1kwtxZg==}
1012
+
894
1013
  iconv-lite@0.6.3:
895
1014
  resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
896
1015
  engines: {node: '>=0.10.0'}
@@ -934,6 +1053,9 @@ packages:
934
1053
  react:
935
1054
  optional: true
936
1055
 
1056
+ libtess@1.2.2:
1057
+ resolution: {integrity: sha512-Nps8HPeVVcsmJxUvFLKVJcCgcz+1ajPTXDVAVPs6+giOQP4AHV31uZFFkh+CKow/bkB7GbZWKmwmit7myaqDSw==}
1058
+
937
1059
  lie@3.3.0:
938
1060
  resolution: {integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==}
939
1061
 
@@ -1135,6 +1257,15 @@ packages:
1135
1257
  resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
1136
1258
  engines: {node: '>=0.10.0'}
1137
1259
 
1260
+ omggif@1.0.10:
1261
+ resolution: {integrity: sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw==}
1262
+
1263
+ p5@2.3.3:
1264
+ resolution: {integrity: sha512-+zVz5JFp3sCLpLscTMOLoA0UEHV0dsHxngKVfMmeW1J2/IXvfFqCjNYZeIOtG4Lhfnpm7cu6446P6Ho64ihXfA==}
1265
+
1266
+ pako@2.2.0:
1267
+ resolution: {integrity: sha512-zJq6RP/5q+TO2OpFV3FHzlPnFjmkb7Nc99a5SNjJE+uu/PkpChs+NIZSSzbBoD+6kjiISXjfYdwj1ZRQ81dz/w==}
1268
+
1138
1269
  path-key@3.1.1:
1139
1270
  resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
1140
1271
  engines: {node: '>=8'}
@@ -1180,6 +1311,12 @@ packages:
1180
1311
  react-dom:
1181
1312
  optional: true
1182
1313
 
1314
+ react-aria@3.52.1:
1315
+ resolution: {integrity: sha512-fdZZruC9/x/joCg0mhKGs5aHpwrXLCSZ4GOJmhhYyiE0ffyEsk9MLFt9LCOCF9tn8ErTD+UDQP4oDUSlZkmpCg==}
1316
+ peerDependencies:
1317
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
1318
+ react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
1319
+
1183
1320
  react-composer@5.0.3:
1184
1321
  resolution: {integrity: sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA==}
1185
1322
  peerDependencies:
@@ -1203,6 +1340,11 @@ packages:
1203
1340
  react-dom:
1204
1341
  optional: true
1205
1342
 
1343
+ react-stately@3.50.0:
1344
+ resolution: {integrity: sha512-TnckvpDQGU0672wEaLZqdzvhuSeXWjgW6vijMWxiKOxc8CosQUfPGISdcZyfHqjX3XMjEtRxj4w9HumvX4h4mw==}
1345
+ peerDependencies:
1346
+ react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1
1347
+
1206
1348
  react-use-measure@2.1.7:
1207
1349
  resolution: {integrity: sha512-KrvcAo13I/60HpwGO5jpW7E9DfusKyLPLvuHlUyP5zqnmAPhNc6qTRjUQrdTADl0lpPpDVU2/Gg51UlOGHXbdg==}
1208
1350
  peerDependencies:
@@ -1255,6 +1397,10 @@ packages:
1255
1397
  resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
1256
1398
  engines: {node: '>=0.10.0'}
1257
1399
 
1400
+ source-map@0.6.1:
1401
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
1402
+ engines: {node: '>=0.10.0'}
1403
+
1258
1404
  stats-gl@2.4.2:
1259
1405
  resolution: {integrity: sha512-g5O9B0hm9CvnM36+v7SFl39T7hmAlv541tU81ME8YeSb3i1CIP5/QdDeSB3A0la0bKNHpxpwxOVRo2wFTYEosQ==}
1260
1406
  peerDependencies:
@@ -1320,6 +1466,9 @@ packages:
1320
1466
  troika-worker-utils@0.52.0:
1321
1467
  resolution: {integrity: sha512-W1CpvTHykaPH5brv5VHLfQo9D1OYuo0cSBEUQFFT/nBUzM8iD6Lq2/tgG/f1OelbAS1WtaTPQzE5uM49egnngw==}
1322
1468
 
1469
+ tslib@2.8.1:
1470
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
1471
+
1323
1472
  tunnel-rat@0.1.2:
1324
1473
  resolution: {integrity: sha512-lR5VHmkPhzdhrM092lI2nACsLO4QubF0/yoOhzX7c+wIpbN1GjHNzCc91QlpxBi+cnx8vVJ+Ur6vL5cEoQPFpQ==}
1325
1474
 
@@ -1386,6 +1535,9 @@ packages:
1386
1535
  engines: {node: '>= 8'}
1387
1536
  hasBin: true
1388
1537
 
1538
+ zod@4.6.5:
1539
+ resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==}
1540
+
1389
1541
  zustand@4.5.7:
1390
1542
  resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==}
1391
1543
  engines: {node: '>=12.7.0'}
@@ -1423,6 +1575,8 @@ snapshots:
1423
1575
 
1424
1576
  '@babel/runtime@7.29.7': {}
1425
1577
 
1578
+ '@davepagurek/bezier-path@0.0.7': {}
1579
+
1426
1580
  '@dimforge/rapier3d-compat@0.12.0': {}
1427
1581
 
1428
1582
  '@dimforge/rapier3d-compat@0.19.2': {}
@@ -1442,6 +1596,14 @@ snapshots:
1442
1596
  react: 19.2.8
1443
1597
  react-dom: 19.2.8(react@19.2.8)
1444
1598
 
1599
+ '@floating-ui/react@0.26.28(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
1600
+ dependencies:
1601
+ '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
1602
+ '@floating-ui/utils': 0.2.12
1603
+ react: 19.2.8
1604
+ react-dom: 19.2.8(react@19.2.8)
1605
+ tabbable: 6.5.0
1606
+
1445
1607
  '@floating-ui/react@0.27.20(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
1446
1608
  dependencies:
1447
1609
  '@floating-ui/react-dom': 2.1.9(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
@@ -1452,6 +1614,35 @@ snapshots:
1452
1614
 
1453
1615
  '@floating-ui/utils@0.2.12': {}
1454
1616
 
1617
+ '@gsap/react@2.1.2(gsap@3.15.0)(react@19.2.8)':
1618
+ dependencies:
1619
+ gsap: 3.15.0
1620
+ react: 19.2.8
1621
+
1622
+ '@headlessui/react@2.2.10(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
1623
+ dependencies:
1624
+ '@floating-ui/react': 0.26.28(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
1625
+ '@react-aria/focus': 3.22.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
1626
+ '@react-aria/interactions': 3.28.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
1627
+ '@tanstack/react-virtual': 3.14.13(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
1628
+ react: 19.2.8
1629
+ react-dom: 19.2.8(react@19.2.8)
1630
+ use-sync-external-store: 1.7.0(react@19.2.8)
1631
+
1632
+ '@internationalized/date@3.12.4':
1633
+ dependencies:
1634
+ '@swc/helpers': 0.5.23
1635
+
1636
+ '@internationalized/number@3.6.8':
1637
+ dependencies:
1638
+ '@swc/helpers': 0.5.23
1639
+
1640
+ '@internationalized/string@3.2.10':
1641
+ dependencies:
1642
+ '@swc/helpers': 0.5.23
1643
+
1644
+ '@japont/unicode-range@1.0.0': {}
1645
+
1455
1646
  '@jridgewell/gen-mapping@0.3.13':
1456
1647
  dependencies:
1457
1648
  '@jridgewell/sourcemap-codec': 1.6.0
@@ -1484,6 +1675,21 @@ snapshots:
1484
1675
  dependencies:
1485
1676
  react: 19.2.8
1486
1677
 
1678
+ '@react-aria/focus@3.22.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
1679
+ dependencies:
1680
+ '@swc/helpers': 0.5.23
1681
+ react: 19.2.8
1682
+ react-aria: 3.52.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
1683
+ react-dom: 19.2.8(react@19.2.8)
1684
+
1685
+ '@react-aria/interactions@3.28.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
1686
+ dependencies:
1687
+ '@react-types/shared': 3.36.1(react@19.2.8)
1688
+ '@swc/helpers': 0.5.23
1689
+ react: 19.2.8
1690
+ react-aria: 3.52.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8)
1691
+ react-dom: 19.2.8(react@19.2.8)
1692
+
1487
1693
  '@react-spring/animated@9.7.5(react@19.2.8)':
1488
1694
  dependencies:
1489
1695
  '@react-spring/shared': 9.7.5(react@19.2.8)
@@ -1625,6 +1831,10 @@ snapshots:
1625
1831
  three: 0.186.0
1626
1832
  three-stdlib: 2.36.1(three@0.186.0)
1627
1833
 
1834
+ '@react-types/shared@3.36.1(react@19.2.8)':
1835
+ dependencies:
1836
+ react: 19.2.8
1837
+
1628
1838
  '@recast-navigation/core@0.43.1':
1629
1839
  dependencies:
1630
1840
  '@recast-navigation/wasm': 0.43.1
@@ -1694,6 +1904,10 @@ snapshots:
1694
1904
  dependencies:
1695
1905
  react: 19.2.8
1696
1906
 
1907
+ '@swc/helpers@0.5.23':
1908
+ dependencies:
1909
+ tslib: 2.8.1
1910
+
1697
1911
  '@tailwindcss/node@4.3.3':
1698
1912
  dependencies:
1699
1913
  '@jridgewell/remapping': 2.3.5
@@ -1762,6 +1976,14 @@ snapshots:
1762
1976
  tailwindcss: 4.3.3
1763
1977
  vite: 8.3.0(jiti@2.7.0)
1764
1978
 
1979
+ '@tanstack/react-virtual@3.14.13(react-dom@19.2.8(react@19.2.8))(react@19.2.8)':
1980
+ dependencies:
1981
+ '@tanstack/virtual-core': 3.17.11
1982
+ react: 19.2.8
1983
+ react-dom: 19.2.8(react@19.2.8)
1984
+
1985
+ '@tanstack/virtual-core@3.17.11': {}
1986
+
1765
1987
  '@tweenjs/tween.js@23.1.3': {}
1766
1988
 
1767
1989
  '@types/draco3d@1.4.10': {}
@@ -1807,6 +2029,16 @@ snapshots:
1807
2029
  '@rolldown/pluginutils': 1.0.1
1808
2030
  vite: 8.3.0(jiti@2.7.0)
1809
2031
 
2032
+ acorn-walk@8.3.5:
2033
+ dependencies:
2034
+ acorn: 8.18.0
2035
+
2036
+ acorn@8.18.0: {}
2037
+
2038
+ aria-hidden@1.2.6:
2039
+ dependencies:
2040
+ tslib: 2.8.1
2041
+
1810
2042
  base64-js@1.5.1: {}
1811
2043
 
1812
2044
  bidi-js@1.1.0:
@@ -1826,6 +2058,10 @@ snapshots:
1826
2058
  dependencies:
1827
2059
  three: 0.186.0
1828
2060
 
2061
+ clsx@2.1.1: {}
2062
+
2063
+ colorjs.io@0.6.1: {}
2064
+
1829
2065
  commander@7.2.0: {}
1830
2066
 
1831
2067
  cookie@1.1.1: {}
@@ -2011,6 +2247,20 @@ snapshots:
2011
2247
  graceful-fs: 4.2.11
2012
2248
  tapable: 2.3.3
2013
2249
 
2250
+ escodegen@2.1.0:
2251
+ dependencies:
2252
+ esprima: 4.0.1
2253
+ estraverse: 5.3.0
2254
+ esutils: 2.0.3
2255
+ optionalDependencies:
2256
+ source-map: 0.6.1
2257
+
2258
+ esprima@4.0.1: {}
2259
+
2260
+ estraverse@5.3.0: {}
2261
+
2262
+ esutils@2.0.3: {}
2263
+
2014
2264
  eventemitter3@4.0.7: {}
2015
2265
 
2016
2266
  fastnoise-lite@1.1.1: {}
@@ -2026,6 +2276,8 @@ snapshots:
2026
2276
  fsevents@2.3.3:
2027
2277
  optional: true
2028
2278
 
2279
+ gifenc@1.0.3: {}
2280
+
2029
2281
  glsl-noise@0.0.0: {}
2030
2282
 
2031
2283
  graceful-fs@4.2.11: {}
@@ -2034,6 +2286,14 @@ snapshots:
2034
2286
 
2035
2287
  hls.js@1.7.3: {}
2036
2288
 
2289
+ i18next-browser-languagedetector@4.3.1:
2290
+ dependencies:
2291
+ '@babel/runtime': 7.29.7
2292
+
2293
+ i18next@19.9.2:
2294
+ dependencies:
2295
+ '@babel/runtime': 7.29.7
2296
+
2037
2297
  iconv-lite@0.6.3:
2038
2298
  dependencies:
2039
2299
  safer-buffer: 2.1.2
@@ -2064,6 +2324,8 @@ snapshots:
2064
2324
  '@types/react': 19.3.0
2065
2325
  react: 19.2.8
2066
2326
 
2327
+ libtess@1.2.2: {}
2328
+
2067
2329
  lie@3.3.0:
2068
2330
  dependencies:
2069
2331
  immediate: 3.0.6
@@ -2204,6 +2466,26 @@ snapshots:
2204
2466
 
2205
2467
  object-assign@4.1.1: {}
2206
2468
 
2469
+ omggif@1.0.10: {}
2470
+
2471
+ p5@2.3.3:
2472
+ dependencies:
2473
+ '@davepagurek/bezier-path': 0.0.7
2474
+ '@japont/unicode-range': 1.0.0
2475
+ acorn: 8.18.0
2476
+ acorn-walk: 8.3.5
2477
+ colorjs.io: 0.6.1
2478
+ escodegen: 2.1.0
2479
+ gifenc: 1.0.3
2480
+ i18next: 19.9.2
2481
+ i18next-browser-languagedetector: 4.3.1
2482
+ libtess: 1.2.2
2483
+ omggif: 1.0.10
2484
+ pako: 2.2.0
2485
+ zod: 4.6.5
2486
+
2487
+ pako@2.2.0: {}
2488
+
2207
2489
  path-key@3.1.1: {}
2208
2490
 
2209
2491
  picocolors@1.1.1: {}
@@ -2251,6 +2533,20 @@ snapshots:
2251
2533
  - immer
2252
2534
  - use-sync-external-store
2253
2535
 
2536
+ react-aria@3.52.1(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
2537
+ dependencies:
2538
+ '@internationalized/date': 3.12.4
2539
+ '@internationalized/number': 3.6.8
2540
+ '@internationalized/string': 3.2.10
2541
+ '@react-types/shared': 3.36.1(react@19.2.8)
2542
+ '@swc/helpers': 0.5.23
2543
+ aria-hidden: 1.2.6
2544
+ clsx: 2.1.1
2545
+ react: 19.2.8
2546
+ react-dom: 19.2.8(react@19.2.8)
2547
+ react-stately: 3.50.0(react@19.2.8)
2548
+ use-sync-external-store: 1.7.0(react@19.2.8)
2549
+
2254
2550
  react-composer@5.0.3(react@19.2.8):
2255
2551
  dependencies:
2256
2552
  prop-types: 15.8.1
@@ -2271,6 +2567,16 @@ snapshots:
2271
2567
  optionalDependencies:
2272
2568
  react-dom: 19.2.8(react@19.2.8)
2273
2569
 
2570
+ react-stately@3.50.0(react@19.2.8):
2571
+ dependencies:
2572
+ '@internationalized/date': 3.12.4
2573
+ '@internationalized/number': 3.6.8
2574
+ '@internationalized/string': 3.2.10
2575
+ '@react-types/shared': 3.36.1(react@19.2.8)
2576
+ '@swc/helpers': 0.5.23
2577
+ react: 19.2.8
2578
+ use-sync-external-store: 1.7.0(react@19.2.8)
2579
+
2274
2580
  react-use-measure@2.1.7(react-dom@19.2.8(react@19.2.8))(react@19.2.8):
2275
2581
  dependencies:
2276
2582
  react: 19.2.8
@@ -2325,6 +2631,9 @@ snapshots:
2325
2631
 
2326
2632
  source-map-js@1.2.1: {}
2327
2633
 
2634
+ source-map@0.6.1:
2635
+ optional: true
2636
+
2328
2637
  stats-gl@2.4.2(@types/three@0.186.0)(three@0.186.0):
2329
2638
  dependencies:
2330
2639
  '@types/three': 0.186.0
@@ -2385,6 +2694,8 @@ snapshots:
2385
2694
 
2386
2695
  troika-worker-utils@0.52.0: {}
2387
2696
 
2697
+ tslib@2.8.1: {}
2698
+
2388
2699
  tunnel-rat@0.1.2(@types/react@19.3.0)(react@19.2.8):
2389
2700
  dependencies:
2390
2701
  zustand: 4.5.7(@types/react@19.3.0)(react@19.2.8)
@@ -2418,6 +2729,8 @@ snapshots:
2418
2729
  dependencies:
2419
2730
  isexe: 2.0.0
2420
2731
 
2732
+ zod@4.6.5: {}
2733
+
2421
2734
  zustand@4.5.7(@types/react@19.3.0)(react@19.2.8):
2422
2735
  dependencies:
2423
2736
  use-sync-external-store: 1.7.0(react@19.2.8)