@vgai/editor 0.2.0 → 0.4.0-canary.20260715.0

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.
Files changed (430) hide show
  1. package/README.md +24 -0
  2. package/dist/assets/axe-C7YBtOuM.js +30 -0
  3. package/dist/assets/browserAll-DDtGGE48.js +1 -0
  4. package/dist/assets/create-runtime-DbTlBlKG.js +1 -0
  5. package/dist/assets/{game-BI111o5f.js → game-BE0r7DMI.js} +3 -3
  6. package/dist/assets/game-BdTHR2_X.js +1 -0
  7. package/dist/assets/{game-pt_1lQLv.js → game-C3iQGSqo.js} +1 -1
  8. package/dist/assets/game-CcHfYxjP.js +1 -0
  9. package/dist/assets/game-Cqzj_lpD.js +1 -0
  10. package/dist/assets/game-DSZdeCHu.js +1 -0
  11. package/dist/assets/game-Dch9sAPc.js +1 -0
  12. package/dist/assets/{game-xsOho_wg.js → game-SAFn90pA.js} +3 -3
  13. package/dist/assets/game-loop-DMIgSMV-.js +1 -0
  14. package/dist/assets/{game-source-CvidN7AB.js → game-source-Dk83w26t.js} +1 -1
  15. package/dist/assets/{index-Bp5cecD6.js → index-4idIsHHJ.js} +2 -2
  16. package/dist/assets/{index-DL7RcQ0n.js → index-C-LhOTBN.js} +1 -1
  17. package/dist/assets/{index-Cs8xwv3e.js → index-CDkxceqE.js} +1 -1
  18. package/dist/assets/index-CQEfi217.js +15412 -0
  19. package/dist/assets/index-Dvi-V0NE.css +1 -0
  20. package/dist/assets/ingest-siblings-s0P5I1Ub.js +1 -0
  21. package/dist/assets/mount-manifest-DXMOlF79.js +1 -0
  22. package/dist/assets/react-18-C9eHn8x1.js +1 -0
  23. package/dist/assets/webworkerAll-Fn0e-ouF.js +1 -0
  24. package/dist/assets/world-documents-GM0a9Kv7.js +1 -0
  25. package/dist/index.html +15 -13
  26. package/dist/ingest/racing-game/vgai.game.json +5 -4
  27. package/dist/ingest/simcity/vgai.game.json +5 -4
  28. package/dist/ingest/tanks/vgai.game.json +5 -4
  29. package/dist/project-scripts.bundle.js +3917 -0
  30. package/dist/scenes/untitled.vscn.json +2 -0
  31. package/dist-server/packaged.mjs +7697 -3435
  32. package/package.json +31 -4
  33. package/scripts/probe-reporter.ts +349 -0
  34. package/scripts/run-probe.ts +2260 -0
  35. package/server/asset-catalog-audit.ts +268 -0
  36. package/server/asset-catalog-v2.ts +146 -0
  37. package/server/asset-library-routes.ts +276 -58
  38. package/server/canonical-path.ts +1 -1
  39. package/server/dev.ts +148 -44
  40. package/server/editor-server.ts +888 -61
  41. package/server/editor-sse.ts +115 -4
  42. package/server/harness-chat-service.ts +796 -0
  43. package/server/local-asset-catalog.ts +157 -22
  44. package/server/packaged.ts +51 -21
  45. package/server/process-shutdown.ts +136 -0
  46. package/server/prod.ts +9 -6
  47. package/server/project-hmr-files.ts +41 -0
  48. package/server/project-operations.ts +343 -0
  49. package/server/project-optimize-deps-entries.ts +4 -4
  50. package/server/project-output-writer.ts +156 -0
  51. package/server/project-validation.ts +140 -0
  52. package/server/project-view.ts +8 -50
  53. package/server/server-utils.ts +75 -10
  54. package/server/session-registry.ts +12 -0
  55. package/src/EditorContext.tsx +107 -3
  56. package/src/action-registry.ts +115 -17
  57. package/src/adapter-resolver.ts +213 -478
  58. package/src/asset-events.ts +64 -1
  59. package/src/asset-preview.ts +906 -0
  60. package/src/asset-selection.ts +121 -0
  61. package/src/asset-workflow/asset-capabilities.ts +259 -0
  62. package/src/asset-workflow/asset-editor-errors.ts +46 -0
  63. package/src/asset-workflow/asset-import-pipeline.ts +176 -0
  64. package/src/asset-workflow/asset-library-query.ts +107 -0
  65. package/src/asset-workflow/asset-types.ts +192 -0
  66. package/src/asset-workflow/asset-workflow-quality.ts +65 -0
  67. package/src/asset-workflow/import-contract.ts +113 -0
  68. package/src/asset-workflow/model-conversion.ts +126 -0
  69. package/src/asset-workflow/model-inspection.ts +185 -0
  70. package/src/asset-workflow/project-asset-commands.ts +23 -0
  71. package/src/asset-workflow/project-asset-health.ts +153 -0
  72. package/src/asset-workflow/project-asset-operations.ts +119 -0
  73. package/src/asset-workflow/thumbnail-system.ts +172 -0
  74. package/src/authoring/active-systems.ts +15 -0
  75. package/src/authoring/boundary-authoring-adapter.ts +16 -5
  76. package/src/authoring/composite-authoring-adapter.ts +305 -124
  77. package/src/authoring/design-time-layers.ts +300 -117
  78. package/src/authoring/edit-mode-authoring.ts +278 -293
  79. package/src/authoring/embed-only-adapter.ts +4 -2
  80. package/src/authoring/first-party-hierarchy-menu.ts +7 -2
  81. package/src/authoring/first-party-inspector/AddSectionMenu.tsx +5 -12
  82. package/src/authoring/first-party-inspector/EnvironmentSection.tsx +53 -126
  83. package/src/authoring/first-party-inspector/HeaderSection.tsx +54 -65
  84. package/src/authoring/first-party-inspector/is-first-party-selection.ts +30 -11
  85. package/src/authoring/first-party-inspector/register.tsx +13 -2
  86. package/src/authoring/ingest-authoring-adapter.ts +142 -45
  87. package/src/authoring/mount-failure-report.ts +5 -5
  88. package/src/authoring/provenance.ts +41 -0
  89. package/src/authoring/react-dom-authoring-adapter.ts +92 -92
  90. package/src/authoring/react-inspector-section.tsx +489 -51
  91. package/src/authoring/react-world-authoring-adapter.ts +541 -306
  92. package/src/authoring/story-overlay.ts +1 -1
  93. package/src/authoring/story-types.ts +11 -0
  94. package/src/authoring/vgai-scene-authoring-adapter.ts +54 -25
  95. package/src/authoring/viewport-tool-context.ts +78 -0
  96. package/src/authoring/world-canvas-viewport-state.ts +35 -0
  97. package/src/authoring/world-hidden-viewport.ts +186 -0
  98. package/src/authoring/world-pan-state.ts +33 -17
  99. package/src/authoring/world-session-state.ts +1 -1
  100. package/src/authoring/world2d-authoring-adapter.ts +109 -52
  101. package/src/availability-tick.ts +56 -0
  102. package/src/browser-play-entry.ts +5 -5
  103. package/src/browser-project-scripts.ts +1 -0
  104. package/src/build-identity.ts +15 -0
  105. package/src/command-listener.ts +893 -19
  106. package/src/components/AlignToolbar.tsx +74 -63
  107. package/src/components/AppRoot.tsx +193 -26
  108. package/src/components/ApplicationMenus.tsx +272 -0
  109. package/src/components/AssetBrowser.tsx +1450 -293
  110. package/src/components/AssetEditorShell.tsx +141 -0
  111. package/src/components/AssetImportDetails.tsx +218 -0
  112. package/src/components/AssetLibraryPanel.tsx +14 -0
  113. package/src/components/CameraInfo.tsx +11 -20
  114. package/src/components/CenterDocuments.tsx +585 -0
  115. package/src/components/CommandPalette.tsx +75 -30
  116. package/src/components/ConsolePanel.css +55 -0
  117. package/src/components/ConsolePanel.tsx +57 -112
  118. package/src/components/DebugConsolePanel.tsx +461 -0
  119. package/src/components/DebuggerPanel.tsx +165 -0
  120. package/src/components/DefaultEditorLayout.tsx +167 -231
  121. package/src/components/GameHierarchy.tsx +873 -290
  122. package/src/components/GamePerformanceOverlay.tsx +46 -0
  123. package/src/components/HarnessChatPanel.tsx +2352 -0
  124. package/src/components/HistoryPanel.tsx +226 -0
  125. package/src/components/Inspector.tsx +153 -99
  126. package/src/components/InspectorToolSection.tsx +6 -4
  127. package/src/components/MountFailureBanner.tsx +31 -48
  128. package/src/components/NetworkSection.tsx +25 -14
  129. package/src/components/OnlineAssetBrowser.tsx +794 -343
  130. package/src/components/OverlayReportBanner.tsx +38 -64
  131. package/src/components/PerformancePanel.tsx +206 -0
  132. package/src/components/PlayBar.tsx +93 -263
  133. package/src/components/PrefabSaveDialog.tsx +55 -127
  134. package/src/components/ProjectHeader.css +60 -0
  135. package/src/components/ProjectHeader.tsx +170 -105
  136. package/src/components/ProjectScreen.tsx +246 -184
  137. package/src/components/ReactCanvasControls.tsx +185 -0
  138. package/src/components/ResolutionPicker.tsx +85 -0
  139. package/src/components/RootActivateDialog.tsx +39 -68
  140. package/src/components/SaveDialog.tsx +55 -127
  141. package/src/components/SaveStatus.tsx +11 -29
  142. package/src/components/StartupLoadingScreen.tsx +96 -0
  143. package/src/components/StateWatchPanel.tsx +302 -0
  144. package/src/components/StatsOverlay.tsx +12 -5
  145. package/src/components/StatusBar.tsx +64 -0
  146. package/src/components/ThemeManagerDialog.css +89 -0
  147. package/src/components/ThemeManagerDialog.tsx +371 -0
  148. package/src/components/ToolHost.tsx +26 -15
  149. package/src/components/Toolbar.tsx +117 -214
  150. package/src/components/VgaiVoxelLogo.tsx +89 -0
  151. package/src/components/ViewportOverlay.tsx +97 -172
  152. package/src/components/ViewportPanel.tsx +130 -31
  153. package/src/components/WorkspaceDock.tsx +891 -0
  154. package/src/components/WorldSelectionOverlay.tsx +51 -63
  155. package/src/components/WorldTextEditor.tsx +9 -5
  156. package/src/components/asset-documents.tsx +390 -0
  157. package/src/components/asset-editor-persistence.ts +44 -0
  158. package/src/components/asset-selection-section.tsx +338 -0
  159. package/src/components/asset-viewers/AudioViewer.tsx +73 -21
  160. package/src/components/asset-viewers/GenericJsonViewer.tsx +26 -11
  161. package/src/components/asset-viewers/ImageViewer.tsx +43 -11
  162. package/src/components/asset-viewers/InputMapViewer.tsx +512 -134
  163. package/src/components/asset-viewers/MaterialAssetEditor.tsx +540 -0
  164. package/src/components/asset-viewers/ModelViewer.tsx +805 -121
  165. package/src/components/asset-viewers/OnlineAssetDetail.tsx +177 -60
  166. package/src/components/asset-viewers/SourceAssetViewer.tsx +121 -0
  167. package/src/components/asset-workflow.css +506 -0
  168. package/src/components/build-documents.tsx +696 -0
  169. package/src/components/core-utilities.tsx +75 -0
  170. package/src/components/data-documents.tsx +364 -0
  171. package/src/components/{DataPanel.tsx → data-editor.tsx} +138 -288
  172. package/src/components/debugger-panel-state.ts +57 -0
  173. package/src/components/inspector-widgets/AlignmentGrid.tsx +8 -14
  174. package/src/components/inspector-widgets/BorderEditor.tsx +41 -33
  175. package/src/components/inspector-widgets/ColorPicker.tsx +39 -39
  176. package/src/components/inspector-widgets/FontPicker.tsx +13 -21
  177. package/src/components/inspector-widgets/GradientEditor.tsx +11 -19
  178. package/src/components/inspector-widgets/ScrubbableInput.tsx +6 -3
  179. package/src/components/inspector-widgets/ShadowEditor.tsx +20 -33
  180. package/src/components/inspector-widgets/shared.tsx +90 -49
  181. package/src/components/inspectors/AnimationSection.tsx +39 -40
  182. package/src/components/inspectors/AudioSection.tsx +28 -39
  183. package/src/components/inspectors/BoneAttachmentSection.tsx +19 -24
  184. package/src/components/inspectors/CameraSection.tsx +14 -23
  185. package/src/components/inspectors/ComponentsSection.tsx +39 -43
  186. package/src/components/inspectors/JointsSection.tsx +34 -43
  187. package/src/components/inspectors/LightSection.tsx +90 -35
  188. package/src/components/inspectors/MaterialSection.tsx +137 -174
  189. package/src/components/inspectors/MeshSection.tsx +9 -17
  190. package/src/components/inspectors/NavigationSection.tsx +8 -15
  191. package/src/components/inspectors/ParticleSection.tsx +91 -76
  192. package/src/components/inspectors/PhysicsSection.tsx +42 -46
  193. package/src/components/inspectors/PostProcessingSection.tsx +28 -36
  194. package/src/components/inspectors/RenderingSection.tsx +12 -20
  195. package/src/components/inspectors/ShadowSection.tsx +7 -8
  196. package/src/components/inspectors/SplineSection.tsx +31 -42
  197. package/src/components/inspectors/TransformSection.tsx +14 -22
  198. package/src/components/patterns/Dialog.tsx +95 -0
  199. package/src/components/patterns/Fields.tsx +44 -0
  200. package/src/components/patterns/List.tsx +25 -0
  201. package/src/components/patterns/StateSurface.tsx +40 -0
  202. package/src/components/patterns/Surfaces.tsx +115 -0
  203. package/src/components/patterns/Tabs.tsx +80 -0
  204. package/src/components/patterns/Toolbar.tsx +51 -0
  205. package/src/components/patterns/Tree.tsx +72 -0
  206. package/src/components/primitives/Button.tsx +46 -0
  207. package/src/components/primitives/ColorInput.tsx +11 -47
  208. package/src/components/primitives/EditorIcon.tsx +99 -0
  209. package/src/components/primitives/FormControls.tsx +71 -0
  210. package/src/components/primitives/JsonInput.tsx +15 -2
  211. package/src/components/primitives/Layout.tsx +100 -0
  212. package/src/components/primitives/Menu.tsx +105 -0
  213. package/src/components/primitives/NumberInput.tsx +8 -35
  214. package/src/components/primitives/Panel.tsx +49 -44
  215. package/src/components/primitives/SectionHeader.tsx +10 -28
  216. package/src/components/primitives/Text.tsx +46 -0
  217. package/src/components/primitives/Tooltip.tsx +20 -12
  218. package/src/components/primitives/Vec3Input.tsx +3 -0
  219. package/src/components/primitives/banner-tones.ts +33 -0
  220. package/src/components/primitives/editor-icons.ts +102 -0
  221. package/src/components/primitives/panel-header-styles.ts +30 -0
  222. package/src/components/project-operation-documents.tsx +226 -0
  223. package/src/components/status-contributions.tsx +175 -0
  224. package/src/components/story-documents-register.ts +15 -0
  225. package/src/components/story-documents.tsx +1185 -0
  226. package/src/components/tool-documents.tsx +110 -0
  227. package/src/components/workspace-dock.css +293 -0
  228. package/src/components/workspace-history.ts +33 -0
  229. package/src/components/world-documents.tsx +145 -0
  230. package/src/components/xstate-documents.tsx +209 -0
  231. package/src/composite-screenshot.ts +248 -0
  232. package/src/design-system/index.ts +70 -0
  233. package/src/design-system-stories/Foundation.stories.tsx +183 -0
  234. package/src/design-system-stories/Patterns.stories.tsx +251 -0
  235. package/src/design-system-stories/Workspace.stories.tsx +538 -0
  236. package/src/doctor/report.ts +57 -13
  237. package/src/editor-api.ts +295 -31
  238. package/src/editor-compatibility.ts +200 -0
  239. package/src/editor-console.ts +35 -17
  240. package/src/editor-hotkeys.ts +85 -33
  241. package/src/editor-store.ts +538 -233
  242. package/src/editor-viewport.ts +160 -34
  243. package/src/entity-factory.ts +14 -3
  244. package/src/gizmo-registry.ts +21 -5
  245. package/src/harness-chat-editor-context.ts +37 -0
  246. package/src/harness-chat-indicator.ts +68 -0
  247. package/src/harness-chat-layout.ts +53 -0
  248. package/src/harness-chat-lifecycle.ts +170 -0
  249. package/src/harness-chat-reconnect.ts +85 -0
  250. package/src/harness-chat-types.ts +409 -0
  251. package/src/hierarchy-drop.ts +50 -0
  252. package/src/hierarchy-expansion-state.ts +100 -0
  253. package/src/hierarchy-menu-registry.ts +1 -1
  254. package/src/hierarchy-projection.ts +76 -0
  255. package/src/history/editor-session.ts +21 -0
  256. package/src/history/history-commands.ts +147 -0
  257. package/src/history/history-service.ts +904 -0
  258. package/src/history/json-history-resource.ts +165 -0
  259. package/src/history/persistence-coordinator.ts +35 -0
  260. package/src/history/project-file-history.ts +266 -0
  261. package/src/history/project-root-history-backends.ts +53 -0
  262. package/src/history/resource-registry.ts +209 -0
  263. package/src/history/snapshot-store.ts +108 -0
  264. package/src/history/source-history-backend.ts +374 -0
  265. package/src/history/types.ts +100 -0
  266. package/src/hmr-registration-group.ts +67 -0
  267. package/src/hmr-stable-react-context.ts +23 -0
  268. package/src/hosted-example.ts +12 -2
  269. package/src/hotkeys.ts +89 -18
  270. package/src/ingest/discovery-react.ts +9 -10
  271. package/src/ingest/discovery.ts +4 -4
  272. package/src/ingest/discovery2d.ts +5 -5
  273. package/src/ingest/games/bloom-composer/vgai.game.json +3 -3
  274. package/src/ingest/games/embed-bundle/vgai.game.json +3 -3
  275. package/src/ingest/games/games-fps/vgai.game.json +3 -3
  276. package/src/ingest/games/iframe-reachable/vgai.game.json +3 -3
  277. package/src/ingest/games/interactive-cubes/vgai.game.json +3 -3
  278. package/src/ingest/games/mismatched-three/vgai.game.json +3 -3
  279. package/src/ingest/games/own-three-bundled/vgai.game.json +3 -3
  280. package/src/ingest/games/pointerlock-maze/vgai.game.json +7 -4
  281. package/src/ingest/games-2d/bubbo-bubbo/vgai.game.json +3 -3
  282. package/src/ingest/games-2d/bunnymark/vgai.game.json +3 -3
  283. package/src/ingest/games-2d/flappy/vgai.game.json +3 -3
  284. package/src/ingest/games-2d/flappy-pixi/vgai.game.json +3 -3
  285. package/src/ingest/games-2d/puzzling-potions/vgai.game.json +3 -3
  286. package/src/ingest/games-2d/tilemap-camera/vgai.game.json +3 -3
  287. package/src/ingest/games-react/react-rpg/vgai.game.json +3 -3
  288. package/src/ingest/types.ts +1 -1
  289. package/src/ingest-mode.ts +47 -52
  290. package/src/ingest-siblings.ts +23 -33
  291. package/src/initial-scene.ts +1 -2
  292. package/src/main.tsx +16 -8
  293. package/src/manifest-project.ts +10 -12
  294. package/src/model-thumbnail.ts +261 -26
  295. package/src/module-mode.ts +44 -50
  296. package/src/play-log-events.ts +26 -0
  297. package/src/play-mode.ts +495 -401
  298. package/src/play-scene-adoption.ts +23 -0
  299. package/src/playground/main.ts +68 -24
  300. package/src/playwright-shim.ts +473 -0
  301. package/src/project-manager.ts +90 -10
  302. package/src/project-operations.ts +112 -0
  303. package/src/project-story-discovery.ts +25 -0
  304. package/src/project-tool-discovery.ts +43 -0
  305. package/src/scene-serializer.ts +0 -6
  306. package/src/scene-sync.ts +7 -2
  307. package/src/script-loader.ts +3 -3
  308. package/src/skeleton-helper.ts +57 -0
  309. package/src/storage/seed.ts +68 -8
  310. package/src/stories/StoryPreviewMount.tsx +265 -0
  311. package/src/stories/action-stories.fixture.tsx +44 -0
  312. package/src/stories/button-stories.fixture.tsx +50 -0
  313. package/src/stories/compose-project-stories.ts +182 -0
  314. package/src/stories/loader-stories.fixture.tsx +53 -0
  315. package/src/stories/story-discovery.ts +130 -0
  316. package/src/stories/story-registry.ts +146 -0
  317. package/src/theme-css.ts +1049 -0
  318. package/src/theme-library.ts +238 -0
  319. package/src/theme-preference.ts +130 -0
  320. package/src/theme.ts +527 -0
  321. package/src/tool-loader.ts +80 -24
  322. package/src/ui-source/inspect.ts +27 -4
  323. package/src/ui-source/source-write-backend.ts +83 -22
  324. package/src/widgets/index.ts +9 -18
  325. package/src/workspace-aux-commands.ts +11 -0
  326. package/src/workspace-dock-controller.ts +64 -0
  327. package/src/workspace-document-ids.ts +5 -0
  328. package/src/workspace-document-registry.ts +367 -0
  329. package/src/workspace-state-persistence.ts +455 -0
  330. package/src/workspace-status-registry.ts +110 -0
  331. package/src/workspace-utility-commands.ts +49 -0
  332. package/src/workspace-utility-registry.ts +161 -0
  333. package/src/world-document-routing.ts +16 -0
  334. package/src/xstate-inspect/XStateMachineInspector.tsx +544 -0
  335. package/src/xstate-inspect/character-animation-machine.fixture.ts +74 -0
  336. package/src/xstate-inspect/use-live-actor-state.ts +39 -0
  337. package/src/xstate-inspect/xstate-graph.ts +265 -0
  338. package/src/xstate-inspect/xstate-layout.ts +76 -0
  339. package/src/z-index.ts +26 -0
  340. package/template/.claude/skills/editor/SKILL.md +129 -90
  341. package/template/AGENTS.md +1110 -0
  342. package/template/CLAUDE.md +1 -512
  343. package/template/IDIOMS.md +50 -0
  344. package/template/check-idioms.ts +706 -0
  345. package/template/manifest-entry-modules-plugin.ts +53 -0
  346. package/template/package.json +13 -4
  347. package/template/public/scenes/default.scn2d.json +6 -0
  348. package/template/public/scenes/default.vscn.json +7 -1
  349. package/template/public/scenes/untitled.vscn.json +10 -0
  350. package/template/scripts/playtest.ts +40 -0
  351. package/template/server/loopback.ts +75 -0
  352. package/template/server/rooms/arena-room.ts +69 -1
  353. package/template/server/rooms/game-room.ts +68 -1
  354. package/template/src/data/README.md +9 -4
  355. package/template/src/data/data-ref.ts +35 -0
  356. package/template/src/data/tuning.schema.ts +1 -1
  357. package/template/src/main.ts +41 -62
  358. package/template/src/manifest-entry-modules.d.ts +3 -0
  359. package/template/src/operations/README.md +88 -0
  360. package/template/src/runtime/pixi-adapter.ts +24 -0
  361. package/template/src/scripts/components/data-spinner.ts +43 -2
  362. package/template/src/scripts/components/spin-lap-math.ts +27 -0
  363. package/template/src/tools/README.md +5 -3
  364. package/template/src/tools/example.tool.tsx +13 -7
  365. package/template/src/ui/Button.stories.tsx +66 -0
  366. package/template/src/ui/RebindPanel.tsx +2 -6
  367. package/template/src/ui/game.tsx +17 -0
  368. package/template/tests/acceptance/example.spec.ts +64 -0
  369. package/template/tests/logic/example.test.ts +31 -0
  370. package/template/tests/logic/room.test.ts +100 -0
  371. package/template/tests/tsconfig.json +30 -0
  372. package/template/validate-manifest.ts +5 -5
  373. package/template/validate-scenes.ts +50 -18
  374. package/template/vgai.game.json +20 -13
  375. package/template/vite.config.ts +77 -16
  376. package/vite-plugin-ui-oid.ts +261 -17
  377. package/dist/assets/CCDIKSolver-Dz-ysxZF.js +0 -1
  378. package/dist/assets/SelectionBox-BXsv_6aH.js +0 -1
  379. package/dist/assets/browser-project-scripts-DOru4L1x.js +0 -2
  380. package/dist/assets/browserAll-CEkWYlFk.js +0 -1
  381. package/dist/assets/create-runtime-DYIWr3va.js +0 -1
  382. package/dist/assets/data-asset-Bb9sIM7i.js +0 -5
  383. package/dist/assets/game-8SDZPPgH.js +0 -1
  384. package/dist/assets/game-CevorxyV.js +0 -1
  385. package/dist/assets/game-Di7XlywD.js +0 -1
  386. package/dist/assets/game-DjnCaw8R.js +0 -1
  387. package/dist/assets/game-Q9A0aXSV.js +0 -1
  388. package/dist/assets/index-CPVV6pjw.js +0 -1
  389. package/dist/assets/index-CpOnYyeD.js +0 -213
  390. package/dist/assets/index-Dr8H_6Rl.js +0 -1
  391. package/dist/assets/index-_bCaipUk.js +0 -13650
  392. package/dist/assets/ingest-siblings-Dz8eEqrV.js +0 -1
  393. package/dist/assets/mount-manifest-Bhk0ohsl.js +0 -1
  394. package/dist/assets/scene-query-BivAHhJu.js +0 -1
  395. package/dist/assets/webworkerAll-BLrH0F6F.js +0 -1
  396. package/dist/assets/xstate-animation-binding-1NGLmw6y.js +0 -1
  397. package/dist/assets/xstate.esm-BgUD33nl.js +0 -3
  398. package/src/authoring/scene-ui-layer.ts +0 -485
  399. package/src/authoring/ui-authoring-adapter.ts +0 -325
  400. package/src/authoring/ui-hierarchy-menu.ts +0 -40
  401. package/src/authoring/ui-inspector-sections.tsx +0 -156
  402. package/src/authoring/undo-timeline.ts +0 -145
  403. package/src/components/BottomPanel.tsx +0 -326
  404. package/src/components/BuildPanel.tsx +0 -455
  405. package/src/components/FolderTree.tsx +0 -179
  406. package/src/components/RightPanel.tsx +0 -166
  407. package/src/components/WorldContextMenu.tsx +0 -257
  408. package/src/components/asset-viewers/AssetViewer.tsx +0 -38
  409. package/src/ingest/games-react/react-rpg/src/ui/game-state.tsx +0 -129
  410. package/src/scene-ui-mode/active-scene-ui.ts +0 -58
  411. package/src/scene-ui-mode/scene-ui-palette-panel.tsx +0 -152
  412. package/src/scene-ui-mode/scene-ui-timeline-tab.tsx +0 -29
  413. package/src/scene-ui-mode/ui-prefab-dialog-host.tsx +0 -74
  414. package/src/scene-ui-mode/ui-prefab-hierarchy-menu.ts +0 -49
  415. package/src/scene-ui-mode/ui-prefab-io.ts +0 -76
  416. package/src/ui-editor/inspector.tsx +0 -563
  417. package/src/ui-editor/node-ops.ts +0 -266
  418. package/src/ui-editor/overlay.tsx +0 -380
  419. package/src/ui-editor/palette.tsx +0 -114
  420. package/src/ui-editor/react-store.ts +0 -78
  421. package/src/ui-editor/timeline-panel.tsx +0 -443
  422. package/src/ui-editor/ui-edit-store.ts +0 -552
  423. package/src/ui-editor/ui-prefab.ts +0 -95
  424. package/template/project.json +0 -9
  425. package/template/src/scripts/main.ts +0 -94
  426. package/template/src/ui/DefaultHud.tsx +0 -40
  427. package/template/src/ui/game-state.tsx +0 -37
  428. package/template/src/ui/mount-default-hud.tsx +0 -19
  429. package/template/src/ui/mount-ui.ts +0 -15
  430. package/vite-plugin-react-world-provider.ts +0 -81
@@ -0,0 +1,183 @@
1
+ import { faFolderOpen, faPlus, faTrash } from '@fortawesome/free-solid-svg-icons';
2
+ import type { Meta, StoryObj } from '@storybook/react';
3
+ import type React from 'react';
4
+ import {
5
+ Button,
6
+ Checkbox,
7
+ DisclosureIcon,
8
+ EDITOR_THEME_CLASS,
9
+ EditorIcon,
10
+ type EditorTheme,
11
+ editorThemeVariables,
12
+ graphiteDarkEditorTheme,
13
+ IconButton,
14
+ Menu,
15
+ MenuItem,
16
+ MenuSeparator,
17
+ midnightHighContrastEditorTheme,
18
+ Panel,
19
+ SectionHeader,
20
+ Select,
21
+ TextInput,
22
+ themeVars,
23
+ } from '../design-system';
24
+
25
+ const meta = {
26
+ title: 'Editor Design System/Foundation',
27
+ parameters: { controls: { disable: true } },
28
+ } satisfies Meta;
29
+
30
+ export default meta;
31
+ type Story = StoryObj<typeof meta>;
32
+
33
+ const row: React.CSSProperties = {
34
+ display: 'flex',
35
+ alignItems: 'center',
36
+ flexWrap: 'wrap',
37
+ gap: 8,
38
+ };
39
+
40
+ const section: React.CSSProperties = {
41
+ display: 'grid',
42
+ gap: 8,
43
+ };
44
+
45
+ export const Controls: Story = {
46
+ render: () => (
47
+ <div style={{ display: 'grid', gap: 20, maxWidth: 640 }}>
48
+ <div style={section}>
49
+ <strong>Buttons</strong>
50
+ <div style={row}>
51
+ <Button variant="primary">Create</Button>
52
+ <Button variant="success">Ready</Button>
53
+ <Button variant="danger">Delete</Button>
54
+ <Button variant="outline">Outline</Button>
55
+ <Button variant="ghost">Cancel</Button>
56
+ <Button disabled>Disabled</Button>
57
+ <IconButton aria-label="Add item">
58
+ <EditorIcon icon={faPlus} />
59
+ </IconButton>
60
+ <IconButton aria-label="Delete item">
61
+ <EditorIcon icon={faTrash} tone="danger" />
62
+ </IconButton>
63
+ </div>
64
+ </div>
65
+
66
+ <div style={section}>
67
+ <strong>Fields</strong>
68
+ <div style={row}>
69
+ <TextInput aria-label="Name" defaultValue="Player" />
70
+ <Select aria-label="World kind" defaultValue="threejs">
71
+ <option value="threejs">Three.js</option>
72
+ <option value="react">React</option>
73
+ <option value="pixijs">PixiJS</option>
74
+ </Select>
75
+ <label style={row}>
76
+ <Checkbox defaultChecked /> Visible
77
+ </label>
78
+ <TextInput aria-label="Unavailable" value="Read only" disabled readOnly />
79
+ </div>
80
+ </div>
81
+
82
+ <div style={section}>
83
+ <strong>Disclosure and menu semantics</strong>
84
+ <div style={row}>
85
+ <span style={row}>
86
+ <DisclosureIcon direction="right" /> Collapsed
87
+ </span>
88
+ <span style={row}>
89
+ <DisclosureIcon direction="down" /> Expanded
90
+ </span>
91
+ </div>
92
+ <Menu style={{ width: 220 }}>
93
+ <MenuItem>
94
+ <EditorIcon icon={faFolderOpen} /> Open project…
95
+ </MenuItem>
96
+ <MenuSeparator />
97
+ <MenuItem disabled>Unavailable action</MenuItem>
98
+ </Menu>
99
+ </div>
100
+ </div>
101
+ ),
102
+ };
103
+
104
+ export const Structure: Story = {
105
+ render: () => (
106
+ <Panel name="Inspector" style={{ width: 320, minHeight: 260 }}>
107
+ <SectionHeader label="Transform">
108
+ <div style={{ display: 'grid', gap: 6, color: themeVars.content.muted }}>
109
+ <TextInput aria-label="X position" defaultValue="0.000" />
110
+ <TextInput aria-label="Y position" defaultValue="1.000" />
111
+ <TextInput aria-label="Z position" defaultValue="0.000" />
112
+ </div>
113
+ </SectionHeader>
114
+ <SectionHeader label="Material" defaultOpen={false}>
115
+ Material controls
116
+ </SectionHeader>
117
+ </Panel>
118
+ ),
119
+ };
120
+
121
+ export const DensityAndStress: Story = {
122
+ render: () => (
123
+ <div style={{ display: 'grid', gap: 16, width: 250 }}>
124
+ <div style={section}>
125
+ <strong>Control density</strong>
126
+ <div style={row}>
127
+ <Button size="compact">Compact</Button>
128
+ <Button size="default">Default</Button>
129
+ <Button size="comfortable">Comfortable</Button>
130
+ <Button aria-pressed="true">Selected</Button>
131
+ <Button aria-busy="true">Busy</Button>
132
+ </div>
133
+ </div>
134
+ <div style={section}>
135
+ <strong>Narrow and exceptional states</strong>
136
+ <TextInput aria-label="Invalid project name" aria-invalid defaultValue="Invalid/name" />
137
+ <Menu>
138
+ <MenuItem style={{ whiteSpace: 'normal' }}>
139
+ A deliberately long menu label that must remain readable in a narrow panel
140
+ </MenuItem>
141
+ <MenuItem disabled>Unavailable action</MenuItem>
142
+ </Menu>
143
+ </div>
144
+ </div>
145
+ ),
146
+ };
147
+
148
+ function ThemeProof({ theme, label }: { theme: EditorTheme; label: string }) {
149
+ return (
150
+ <div
151
+ className={EDITOR_THEME_CLASS}
152
+ data-vgai-theme={theme.id}
153
+ style={{
154
+ ...editorThemeVariables(theme),
155
+ width: 300,
156
+ padding: 16,
157
+ border: `1px solid ${themeVars.boundary.strong}`,
158
+ borderRadius: themeVars.shape.medium,
159
+ background: themeVars.surface.panel,
160
+ color: themeVars.content.primary,
161
+ fontFamily: themeVars.typography.sans,
162
+ }}
163
+ >
164
+ <strong>{label}</strong>
165
+ <div style={{ ...row, marginTop: 12 }}>
166
+ <Button variant="primary">Primary</Button>
167
+ <Button>Secondary</Button>
168
+ <IconButton aria-label="Add">
169
+ <EditorIcon icon={faPlus} />
170
+ </IconButton>
171
+ </div>
172
+ </div>
173
+ );
174
+ }
175
+
176
+ export const ThemeScopes: Story = {
177
+ render: () => (
178
+ <div style={row}>
179
+ <ThemeProof theme={graphiteDarkEditorTheme} label="Graphite dark" />
180
+ <ThemeProof theme={midnightHighContrastEditorTheme} label="Midnight high contrast" />
181
+ </div>
182
+ ),
183
+ };
@@ -0,0 +1,251 @@
1
+ import type { Meta, StoryObj } from '@storybook/react';
2
+ import {
3
+ Button,
4
+ Checkbox,
5
+ Dialog,
6
+ DialogBody,
7
+ DialogFooter,
8
+ DialogHeader,
9
+ DisclosureIcon,
10
+ DropIndicator,
11
+ EditorBadge,
12
+ EditorBanner,
13
+ EditorIcon,
14
+ EditorPopover,
15
+ EditorTab,
16
+ EditorTabList,
17
+ EditorToolbar,
18
+ EditorTree,
19
+ EditorTreeRow,
20
+ editorIcons,
21
+ FieldGroup,
22
+ FieldRow,
23
+ IconButton,
24
+ ResizeHandle,
25
+ Select,
26
+ StateSurface,
27
+ Text,
28
+ TextInput,
29
+ ToolbarDivider,
30
+ ToolbarGroup,
31
+ TreeDisclosureIcon,
32
+ themeVars,
33
+ } from '../design-system';
34
+
35
+ const meta = {
36
+ title: 'Editor Design System/Patterns',
37
+ parameters: { controls: { disable: true } },
38
+ } satisfies Meta;
39
+
40
+ export default meta;
41
+ type Story = StoryObj<typeof meta>;
42
+
43
+ const gallery = {
44
+ display: 'grid',
45
+ gridTemplateColumns: 'repeat(auto-fit, minmax(320px, 1fr))',
46
+ gap: 20,
47
+ } as const;
48
+
49
+ const card = {
50
+ minWidth: 0,
51
+ overflow: 'hidden',
52
+ border: `1px solid ${themeVars.boundary.default}`,
53
+ borderRadius: themeVars.shape.medium,
54
+ background: themeVars.surface.panel,
55
+ } as const;
56
+
57
+ const cardTitle = {
58
+ padding: '8px 10px',
59
+ borderBottom: `1px solid ${themeVars.boundary.default}`,
60
+ color: themeVars.content.primary,
61
+ } as const;
62
+
63
+ export const CompletePatternGallery: Story = {
64
+ render: () => (
65
+ <div style={gallery}>
66
+ <section style={card}>
67
+ <div style={cardTitle}>Toolbars</div>
68
+ <EditorToolbar label="Viewport tools">
69
+ <ToolbarGroup>
70
+ <IconButton aria-label="Move" aria-pressed="true">
71
+ <EditorIcon icon={editorIcons.tool.move} />
72
+ </IconButton>
73
+ <IconButton aria-label="Rotate">
74
+ <EditorIcon icon={editorIcons.tool.rotate} />
75
+ </IconButton>
76
+ <IconButton aria-label="Snap">
77
+ <EditorIcon icon={editorIcons.tool.snap} />
78
+ </IconButton>
79
+ </ToolbarGroup>
80
+ <ToolbarDivider />
81
+ <Button size="compact">Local</Button>
82
+ </EditorToolbar>
83
+ <EditorToolbar label="Transport" compact>
84
+ <ToolbarGroup>
85
+ <IconButton aria-label="Play">
86
+ <EditorIcon icon={editorIcons.transport.play} />
87
+ </IconButton>
88
+ <IconButton aria-label="Pause" disabled>
89
+ <EditorIcon icon={editorIcons.transport.pause} />
90
+ </IconButton>
91
+ <IconButton aria-label="Stop" disabled>
92
+ <EditorIcon icon={editorIcons.transport.stop} />
93
+ </IconButton>
94
+ </ToolbarGroup>
95
+ </EditorToolbar>
96
+ </section>
97
+
98
+ <section style={card}>
99
+ <div style={cardTitle}>Tabs</div>
100
+ <EditorTabList aria-label="Documents">
101
+ <EditorTab selected>Scene</EditorTab>
102
+ <EditorTab dirty>Player.prefab</EditorTab>
103
+ <EditorTab badge={3}>Console</EditorTab>
104
+ <EditorTab disabled>Unavailable</EditorTab>
105
+ </EditorTabList>
106
+ </section>
107
+
108
+ <section style={card}>
109
+ <div style={cardTitle}>Hierarchy rows</div>
110
+ <EditorTree label="Example hierarchy">
111
+ <EditorTreeRow
112
+ level={1}
113
+ expanded
114
+ leading={<TreeDisclosureIcon direction="down" />}
115
+ actions={<EditorIcon icon={editorIcons.status.visible} tone="dim" />}
116
+ >
117
+ Main
118
+ </EditorTreeRow>
119
+ <EditorTreeRow
120
+ level={2}
121
+ selected
122
+ leading={<EditorIcon icon={editorIcons.content.camera} />}
123
+ actions={<EditorIcon icon={editorIcons.status.locked} tone="dim" />}
124
+ >
125
+ Main Camera
126
+ </EditorTreeRow>
127
+ <EditorTreeRow level={2} muted leading={<EditorIcon icon={editorIcons.content.light} />}>
128
+ Disabled Light
129
+ </EditorTreeRow>
130
+ <EditorTreeRow
131
+ level={2}
132
+ dragging
133
+ leading={<EditorIcon icon={editorIcons.content.entity} />}
134
+ >
135
+ Dragged Entity
136
+ </EditorTreeRow>
137
+ </EditorTree>
138
+ </section>
139
+
140
+ <section style={card}>
141
+ <div style={cardTitle}>Inspector fields</div>
142
+ <FieldGroup>
143
+ <FieldRow label="Name" htmlFor="pattern-name">
144
+ <TextInput id="pattern-name" value="Main Camera" readOnly />
145
+ </FieldRow>
146
+ <FieldRow label="Projection" htmlFor="pattern-projection">
147
+ <Select id="pattern-projection" defaultValue="perspective">
148
+ <option value="perspective">Perspective</option>
149
+ <option value="orthographic">Orthographic</option>
150
+ </Select>
151
+ </FieldRow>
152
+ <FieldRow
153
+ label="Visible"
154
+ htmlFor="pattern-visible"
155
+ hint="Included in editor and game rendering."
156
+ >
157
+ <Checkbox id="pattern-visible" defaultChecked />
158
+ </FieldRow>
159
+ <FieldRow label="Invalid" htmlFor="pattern-invalid">
160
+ <TextInput id="pattern-invalid" aria-invalid value="Not a number" readOnly />
161
+ </FieldRow>
162
+ </FieldGroup>
163
+ </section>
164
+
165
+ <section style={{ ...card, display: 'grid', gap: 8, paddingBottom: 8 }}>
166
+ <div style={cardTitle}>Banners and popovers</div>
167
+ <EditorBanner tone="info" icon={<EditorIcon icon={editorIcons.status.info} />}>
168
+ Informational editor notice
169
+ </EditorBanner>
170
+ <EditorBanner tone="warning" icon={<EditorIcon icon={editorIcons.status.warning} />}>
171
+ This document has external changes
172
+ </EditorBanner>
173
+ <EditorBanner tone="error" icon={<EditorIcon icon={editorIcons.status.error} />}>
174
+ World failed to mount
175
+ </EditorBanner>
176
+ <EditorPopover style={{ margin: '4px 10px', padding: 10 }}>
177
+ Floating surface <EditorBadge>3</EditorBadge>
178
+ </EditorPopover>
179
+ </section>
180
+
181
+ <section style={card}>
182
+ <div style={cardTitle}>Empty, loading, and error states</div>
183
+ <div style={{ display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)' }}>
184
+ <StateSurface
185
+ compact
186
+ icon={<EditorIcon icon={editorIcons.content.folder} />}
187
+ title="No assets"
188
+ />
189
+ <StateSurface
190
+ compact
191
+ tone="loading"
192
+ icon={<EditorIcon icon={editorIcons.action.refresh} />}
193
+ title="Loading"
194
+ />
195
+ <StateSurface
196
+ compact
197
+ tone="error"
198
+ icon={<EditorIcon icon={editorIcons.status.error} />}
199
+ title="Failed"
200
+ />
201
+ </div>
202
+ </section>
203
+
204
+ <section style={{ ...card, minHeight: 160, position: 'relative', display: 'flex' }}>
205
+ <div style={cardTitle}>Drag and resize feedback</div>
206
+ <div
207
+ style={{ position: 'relative', flex: 1, margin: 12, background: themeVars.surface.inset }}
208
+ >
209
+ <DropIndicator position="inside" />
210
+ </div>
211
+ <ResizeHandle
212
+ orientation="vertical"
213
+ label="Resize preview panels"
214
+ valueNow={64}
215
+ tabIndex={0}
216
+ />
217
+ <div
218
+ style={{ width: 80, display: 'grid', placeItems: 'center', color: themeVars.content.dim }}
219
+ >
220
+ <DisclosureIcon direction="right" />
221
+ </div>
222
+ </section>
223
+ </div>
224
+ ),
225
+ };
226
+
227
+ export const ModalDialog: Story = {
228
+ render: () => (
229
+ <div style={{ minHeight: 360 }}>
230
+ <Dialog labelledBy="pattern-dialog-title">
231
+ <DialogHeader titleId="pattern-dialog-title" title="Save scene" />
232
+ <DialogBody>
233
+ <Text tone="muted">Choose where the current scene document should be saved.</Text>
234
+ <FieldGroup>
235
+ <FieldRow label="Filename" htmlFor="pattern-dialog-filename">
236
+ <TextInput id="pattern-dialog-filename" defaultValue="main.vscn.json" />
237
+ </FieldRow>
238
+ </FieldGroup>
239
+ </DialogBody>
240
+ <DialogFooter>
241
+ <Button variant="ghost" size="comfortable">
242
+ Cancel
243
+ </Button>
244
+ <Button variant="primary" size="comfortable">
245
+ Save
246
+ </Button>
247
+ </DialogFooter>
248
+ </Dialog>
249
+ </div>
250
+ ),
251
+ };