@nice2dev/game-engine 1.1.7 β†’ 1.1.9

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 (487) hide show
  1. package/CHANGELOG.md +77 -0
  2. package/dist/cjs/devtools/DeveloperExperience.js +5 -5
  3. package/dist/cjs/dialogue/DialogueSystem.js +1 -1
  4. package/dist/cjs/editor/AssetBrowser.js +26 -25
  5. package/dist/cjs/editor/NiceGameEditor.js +66 -49
  6. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js +33 -32
  7. package/dist/cjs/i18n/I18n.js +305 -0
  8. package/dist/cjs/kids/KidMode.js +36 -36
  9. package/dist/cjs/kids/KidTools.js +31 -31
  10. package/dist/cjs/native-engine/InputSystem.js +9 -2
  11. package/dist/cjs/plugins/PluginSDK.js +1 -1
  12. package/dist/cjs/plugins/PluginTestKit.js +1 -1
  13. package/dist/cjs/quest/QuestSystem.js +5 -1
  14. package/dist/cjs/tutorials/TutorialBranching.js +12 -12
  15. package/dist/cjs/tutorials/TutorialEngine.js +35 -35
  16. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js +75 -75
  17. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js +24 -24
  18. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js +33 -33
  19. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js +25 -24
  20. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js +28 -27
  21. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js +31 -30
  22. package/dist/esm/devtools/DeveloperExperience.js +5 -5
  23. package/dist/esm/dialogue/DialogueSystem.js +1 -1
  24. package/dist/esm/editor/AssetBrowser.js +26 -25
  25. package/dist/esm/editor/NiceGameEditor.js +67 -50
  26. package/dist/esm/godot-integration/components/GodotProjectBrowser.js +33 -32
  27. package/dist/esm/i18n/I18n.js +305 -0
  28. package/dist/esm/kids/KidMode.js +36 -36
  29. package/dist/esm/kids/KidTools.js +31 -31
  30. package/dist/esm/native-engine/InputSystem.js +9 -2
  31. package/dist/esm/plugins/PluginSDK.js +1 -1
  32. package/dist/esm/plugins/PluginTestKit.js +1 -1
  33. package/dist/esm/quest/QuestSystem.js +5 -1
  34. package/dist/esm/tutorials/TutorialBranching.js +12 -12
  35. package/dist/esm/tutorials/TutorialEngine.js +35 -35
  36. package/dist/esm/tutorials/content/Tutorials_T05_T08.js +75 -75
  37. package/dist/esm/tutorials/content/Tutorials_T09_T11.js +24 -24
  38. package/dist/esm/tutorials/content/Tutorials_T12_T15.js +33 -33
  39. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js +25 -24
  40. package/dist/esm/unity-integration/components/UnityProjectBrowser.js +28 -27
  41. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js +31 -30
  42. package/dist/types/editor/AssetBrowser.d.ts +1 -0
  43. package/dist/types/editor/behavior-tree/BTEditorNode.d.ts +2 -1
  44. package/dist/types/editor/behavior-tree/BTEditorToolbar.d.ts +1 -0
  45. package/dist/types/kids/KidMode.d.ts +4 -2
  46. package/dist/types/kids/KidTools.d.ts +1 -1
  47. package/dist/types/tutorials/TutorialBranching.d.ts +1 -1
  48. package/package.json +3 -2
  49. package/dist/cjs/accessibility/Accessibility.js.map +0 -1
  50. package/dist/cjs/ai/AI.js.map +0 -1
  51. package/dist/cjs/ai/BehaviorTree.js.map +0 -1
  52. package/dist/cjs/ai/StateMachine.js.map +0 -1
  53. package/dist/cjs/animation/Animation.js.map +0 -1
  54. package/dist/cjs/audio/AudioAdvanced.js.map +0 -1
  55. package/dist/cjs/audio/AudioBridge.js.map +0 -1
  56. package/dist/cjs/audio/AudioManager.js.map +0 -1
  57. package/dist/cjs/build-cloud/BuildOrchestration.js.map +0 -1
  58. package/dist/cjs/build-cloud/GodotBuildCloud.js.map +0 -1
  59. package/dist/cjs/build-cloud/UnityBuildCloud.js.map +0 -1
  60. package/dist/cjs/build-cloud/UnrealBuildCloud.js.map +0 -1
  61. package/dist/cjs/core/EventBus.js.map +0 -1
  62. package/dist/cjs/core/GameClock.js.map +0 -1
  63. package/dist/cjs/core/GameConfig.js.map +0 -1
  64. package/dist/cjs/core/GameLoop.js.map +0 -1
  65. package/dist/cjs/core/ServiceLocator.js.map +0 -1
  66. package/dist/cjs/core/Validation.js.map +0 -1
  67. package/dist/cjs/core/math.js.map +0 -1
  68. package/dist/cjs/devtools/DevTools.js.map +0 -1
  69. package/dist/cjs/devtools/DeveloperExperience.js.map +0 -1
  70. package/dist/cjs/devtools/GameplayAnalytics.js.map +0 -1
  71. package/dist/cjs/dialogue/DialogueSystem.js.map +0 -1
  72. package/dist/cjs/docs/DocGenerator.js.map +0 -1
  73. package/dist/cjs/ecs/World.js.map +0 -1
  74. package/dist/cjs/editor/AchievementEditor.js.map +0 -1
  75. package/dist/cjs/editor/AdvancedEditor.js.map +0 -1
  76. package/dist/cjs/editor/AnimationRetargeting.js.map +0 -1
  77. package/dist/cjs/editor/AssetBrowser.js.map +0 -1
  78. package/dist/cjs/editor/AssetManager.js.map +0 -1
  79. package/dist/cjs/editor/ConsolePro.js.map +0 -1
  80. package/dist/cjs/editor/CraftingEditor.js.map +0 -1
  81. package/dist/cjs/editor/DebugTools.js.map +0 -1
  82. package/dist/cjs/editor/DialogueSystem.js.map +0 -1
  83. package/dist/cjs/editor/LeaderboardSystem.js.map +0 -1
  84. package/dist/cjs/editor/NiceGameEditor.js.map +0 -1
  85. package/dist/cjs/editor/PrefabSystem.js.map +0 -1
  86. package/dist/cjs/editor/ProfilerPanel.js.map +0 -1
  87. package/dist/cjs/editor/QuestEditor.js.map +0 -1
  88. package/dist/cjs/editor/ReplaySystem.js.map +0 -1
  89. package/dist/cjs/editor/SceneEditor.js.map +0 -1
  90. package/dist/cjs/editor/ScreenshotMode.js.map +0 -1
  91. package/dist/cjs/editor/ShaderGraph.js.map +0 -1
  92. package/dist/cjs/editor/TimelineEditor.js.map +0 -1
  93. package/dist/cjs/editor/UndoRedoPro.js.map +0 -1
  94. package/dist/cjs/editor/VRARMode.js.map +0 -1
  95. package/dist/cjs/engine/NiceGameEngine.js.map +0 -1
  96. package/dist/cjs/engine/SaveSystem.js.map +0 -1
  97. package/dist/cjs/engine/SaveSystemV2.js +0 -530
  98. package/dist/cjs/engine/SaveSystemV2.js.map +0 -1
  99. package/dist/cjs/enterprise/Enterprise.js.map +0 -1
  100. package/dist/cjs/export/BevyExporter.js.map +0 -1
  101. package/dist/cjs/export/CocosExporter.js.map +0 -1
  102. package/dist/cjs/export/Construct3Exporter.js.map +0 -1
  103. package/dist/cjs/export/DefoldExporter.js.map +0 -1
  104. package/dist/cjs/export/GDevelopExporter.js.map +0 -1
  105. package/dist/cjs/export/GameMakerExporter.js.map +0 -1
  106. package/dist/cjs/export/GodotExporter.js.map +0 -1
  107. package/dist/cjs/export/MinecraftBedrockExporter.js.map +0 -1
  108. package/dist/cjs/export/MonoGameExporter.js.map +0 -1
  109. package/dist/cjs/export/Pico8Exporter.js.map +0 -1
  110. package/dist/cjs/export/PlatformExporter.js.map +0 -1
  111. package/dist/cjs/export/RPGMakerExporter.js.map +0 -1
  112. package/dist/cjs/export/RobloxExporter.js.map +0 -1
  113. package/dist/cjs/export/Solar2DExporter.js.map +0 -1
  114. package/dist/cjs/export/ThreeJSExporter.js.map +0 -1
  115. package/dist/cjs/export/Tic80Exporter.js.map +0 -1
  116. package/dist/cjs/export/UnityExporter.js.map +0 -1
  117. package/dist/cjs/export/UnrealExporter.js.map +0 -1
  118. package/dist/cjs/export/WebExporter.js.map +0 -1
  119. package/dist/cjs/export/index.js.map +0 -1
  120. package/dist/cjs/godot-integration/GodotAssetLibrary.js.map +0 -1
  121. package/dist/cjs/godot-integration/GodotImport.js.map +0 -1
  122. package/dist/cjs/godot-integration/GodotLiveLink.js.map +0 -1
  123. package/dist/cjs/godot-integration/components/GodotProjectBrowser.js.map +0 -1
  124. package/dist/cjs/i18n/I18n.js.map +0 -1
  125. package/dist/cjs/i18n/useTranslation.js.map +0 -1
  126. package/dist/cjs/import/AsepriteImporter.js.map +0 -1
  127. package/dist/cjs/import/DragonBonesImporter.js.map +0 -1
  128. package/dist/cjs/import/GameMakerImporter.js.map +0 -1
  129. package/dist/cjs/import/GodotSceneImporter.js.map +0 -1
  130. package/dist/cjs/import/LDtkImporter.js.map +0 -1
  131. package/dist/cjs/import/Live2DImporter.js.map +0 -1
  132. package/dist/cjs/import/NdgFormat.js.map +0 -1
  133. package/dist/cjs/import/OgmoImporter.js.map +0 -1
  134. package/dist/cjs/import/RPGMakerImporter.js.map +0 -1
  135. package/dist/cjs/import/SceneImporter.js.map +0 -1
  136. package/dist/cjs/import/SpineImporter.js.map +0 -1
  137. package/dist/cjs/import/SpriterImporter.js.map +0 -1
  138. package/dist/cjs/import/TiledMapImporter.js.map +0 -1
  139. package/dist/cjs/import/UnitySceneImporter.js.map +0 -1
  140. package/dist/cjs/import/index.js.map +0 -1
  141. package/dist/cjs/index.js.map +0 -1
  142. package/dist/cjs/input/GamepadNavigation.js.map +0 -1
  143. package/dist/cjs/input/InputManager.js.map +0 -1
  144. package/dist/cjs/input/useGamepads.js.map +0 -1
  145. package/dist/cjs/integration/IconSprite.js.map +0 -1
  146. package/dist/cjs/inventory/InventorySystem.js.map +0 -1
  147. package/dist/cjs/kids/KidMode.js.map +0 -1
  148. package/dist/cjs/kids/KidTools.js.map +0 -1
  149. package/dist/cjs/monetization/Monetization.js.map +0 -1
  150. package/dist/cjs/multiplayer/LocalMultiplayer.js.map +0 -1
  151. package/dist/cjs/multiplayer/MiniGameTypes.js.map +0 -1
  152. package/dist/cjs/native-engine/AssetPipeline.js.map +0 -1
  153. package/dist/cjs/native-engine/AudioEngine.js.map +0 -1
  154. package/dist/cjs/native-engine/InputSystem.js.map +0 -1
  155. package/dist/cjs/native-engine/NetworkingSystem.js.map +0 -1
  156. package/dist/cjs/native-engine/PhysicsEngine.js.map +0 -1
  157. package/dist/cjs/native-engine/RenderingEngine.js.map +0 -1
  158. package/dist/cjs/native-engine/SceneGraph.js.map +0 -1
  159. package/dist/cjs/network/MultiplayerTransport.js.map +0 -1
  160. package/dist/cjs/network/Networking.js.map +0 -1
  161. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +0 -1
  162. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +0 -1
  163. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +0 -1
  164. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +0 -1
  165. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +0 -1
  166. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +0 -1
  167. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +0 -1
  168. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +0 -1
  169. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +0 -1
  170. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +0 -1
  171. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +0 -1
  172. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +0 -1
  173. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +0 -1
  174. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +0 -1
  175. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +0 -1
  176. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +0 -1
  177. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +0 -1
  178. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +0 -1
  179. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +0 -1
  180. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +0 -1
  181. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +0 -1
  182. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +0 -1
  183. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +0 -1
  184. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +0 -1
  185. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +0 -1
  186. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/index.js.map +0 -1
  187. package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +0 -1
  188. package/dist/cjs/pathfinding/Pathfinding.js.map +0 -1
  189. package/dist/cjs/performance/AssetStreaming.js.map +0 -1
  190. package/dist/cjs/performance/BenchmarkSuite.js.map +0 -1
  191. package/dist/cjs/performance/DeltaCompression.js.map +0 -1
  192. package/dist/cjs/performance/DeterministicPhysics.js.map +0 -1
  193. package/dist/cjs/performance/ECSOptimization.js.map +0 -1
  194. package/dist/cjs/performance/GameSaveSystem.js.map +0 -1
  195. package/dist/cjs/performance/HotReload.js.map +0 -1
  196. package/dist/cjs/performance/InputRecording.js.map +0 -1
  197. package/dist/cjs/performance/InterestManagement.js.map +0 -1
  198. package/dist/cjs/performance/LocalizationRuntime.js.map +0 -1
  199. package/dist/cjs/performance/MemoryManagement.js.map +0 -1
  200. package/dist/cjs/performance/ModSupport.js.map +0 -1
  201. package/dist/cjs/performance/MultiThreadedPhysics.js.map +0 -1
  202. package/dist/cjs/performance/NetworkPrediction.js.map +0 -1
  203. package/dist/cjs/performance/ObjectPooling.js.map +0 -1
  204. package/dist/cjs/performance/Performance.js.map +0 -1
  205. package/dist/cjs/performance/PerformanceAdvanced.js.map +0 -1
  206. package/dist/cjs/performance/SaveSystem.js +0 -574
  207. package/dist/cjs/performance/SaveSystem.js.map +0 -1
  208. package/dist/cjs/performance/WebGPURenderer.js.map +0 -1
  209. package/dist/cjs/physics/PhysicsAdvanced.js.map +0 -1
  210. package/dist/cjs/physics/PhysicsEngine2D.js.map +0 -1
  211. package/dist/cjs/plugins/PluginSDK.js.map +0 -1
  212. package/dist/cjs/plugins/PluginTestKit.js.map +0 -1
  213. package/dist/cjs/procedural/Procedural.js.map +0 -1
  214. package/dist/cjs/procedural/WorldBuilding.js.map +0 -1
  215. package/dist/cjs/quest/QuestSystem.js.map +0 -1
  216. package/dist/cjs/release/MobileExport.js.map +0 -1
  217. package/dist/cjs/release/Release.js.map +0 -1
  218. package/dist/cjs/rendering/Camera2D.js.map +0 -1
  219. package/dist/cjs/rendering/Renderer2D.js.map +0 -1
  220. package/dist/cjs/rendering/WebGPURenderPipeline.js.map +0 -1
  221. package/dist/cjs/runtime3d/Runtime3D.js.map +0 -1
  222. package/dist/cjs/runtime3d/SceneEditor3D.js.map +0 -1
  223. package/dist/cjs/scene/SceneManager.js.map +0 -1
  224. package/dist/cjs/scripting/GraphToAST.js.map +0 -1
  225. package/dist/cjs/scripting/LanguageExporter.js.map +0 -1
  226. package/dist/cjs/scripting/NodeGraph.js.map +0 -1
  227. package/dist/cjs/scripting/ScriptAST.js.map +0 -1
  228. package/dist/cjs/scripting/VisualScripting2.js.map +0 -1
  229. package/dist/cjs/scripting/exporters/CSharpExporter.js.map +0 -1
  230. package/dist/cjs/scripting/exporters/GDScriptExporter.js.map +0 -1
  231. package/dist/cjs/scripting/exporters/LuaExporter.js.map +0 -1
  232. package/dist/cjs/scripting/exporters/PythonExporter.js.map +0 -1
  233. package/dist/cjs/scripting/exporters/RustExporter.js.map +0 -1
  234. package/dist/cjs/scripting/exporters/TypeScriptExporter.js.map +0 -1
  235. package/dist/cjs/social/Social.js.map +0 -1
  236. package/dist/cjs/systems/LightingSystem.js.map +0 -1
  237. package/dist/cjs/systems/ParticleSystem2.js.map +0 -1
  238. package/dist/cjs/systems/PhysicsDebugSystem.js.map +0 -1
  239. package/dist/cjs/systems/TerrainSystem.js.map +0 -1
  240. package/dist/cjs/templates/ActionTemplates.js.map +0 -1
  241. package/dist/cjs/templates/FightingTemplate.js.map +0 -1
  242. package/dist/cjs/templates/MetroidvaniaTemplate.js.map +0 -1
  243. package/dist/cjs/templates/PartyTemplates.js.map +0 -1
  244. package/dist/cjs/templates/PuzzleTemplates.js.map +0 -1
  245. package/dist/cjs/templates/RPGTemplates.js.map +0 -1
  246. package/dist/cjs/templates/SportsTemplates.js.map +0 -1
  247. package/dist/cjs/templates/StrategyTemplates.js.map +0 -1
  248. package/dist/cjs/templates/SurvivalTemplate.js.map +0 -1
  249. package/dist/cjs/templates/WaveDefense.js.map +0 -1
  250. package/dist/cjs/tilemap/Tilemap.js.map +0 -1
  251. package/dist/cjs/tutorials/TutorialBranching.js.map +0 -1
  252. package/dist/cjs/tutorials/TutorialEngine.js.map +0 -1
  253. package/dist/cjs/tutorials/TutorialOverlay.js.map +0 -1
  254. package/dist/cjs/tutorials/content/Tutorials_T05_T08.js.map +0 -1
  255. package/dist/cjs/tutorials/content/Tutorials_T09_T11.js.map +0 -1
  256. package/dist/cjs/tutorials/content/Tutorials_T12_T15.js.map +0 -1
  257. package/dist/cjs/ui/GameUI.js.map +0 -1
  258. package/dist/cjs/unity-integration/UnityAssetStore.js.map +0 -1
  259. package/dist/cjs/unity-integration/UnityImport.js.map +0 -1
  260. package/dist/cjs/unity-integration/UnityLiveLink.js.map +0 -1
  261. package/dist/cjs/unity-integration/components/UnityAssetStoreBrowser.js.map +0 -1
  262. package/dist/cjs/unity-integration/components/UnityProjectBrowser.js.map +0 -1
  263. package/dist/cjs/unreal-integration/UnrealImport.js.map +0 -1
  264. package/dist/cjs/unreal-integration/UnrealLiveLink.js.map +0 -1
  265. package/dist/cjs/unreal-integration/UnrealMarketplace.js.map +0 -1
  266. package/dist/cjs/unreal-integration/components/UnrealProjectBrowser.js.map +0 -1
  267. package/dist/cjs/xr/ARVR.js.map +0 -1
  268. package/dist/esm/accessibility/Accessibility.js.map +0 -1
  269. package/dist/esm/ai/AI.js.map +0 -1
  270. package/dist/esm/ai/BehaviorTree.js.map +0 -1
  271. package/dist/esm/ai/StateMachine.js.map +0 -1
  272. package/dist/esm/animation/Animation.js.map +0 -1
  273. package/dist/esm/audio/AudioAdvanced.js.map +0 -1
  274. package/dist/esm/audio/AudioBridge.js.map +0 -1
  275. package/dist/esm/audio/AudioManager.js.map +0 -1
  276. package/dist/esm/build-cloud/BuildOrchestration.js.map +0 -1
  277. package/dist/esm/build-cloud/GodotBuildCloud.js.map +0 -1
  278. package/dist/esm/build-cloud/UnityBuildCloud.js.map +0 -1
  279. package/dist/esm/build-cloud/UnrealBuildCloud.js.map +0 -1
  280. package/dist/esm/core/EventBus.js.map +0 -1
  281. package/dist/esm/core/GameClock.js.map +0 -1
  282. package/dist/esm/core/GameConfig.js.map +0 -1
  283. package/dist/esm/core/GameLoop.js.map +0 -1
  284. package/dist/esm/core/ServiceLocator.js.map +0 -1
  285. package/dist/esm/core/Validation.js.map +0 -1
  286. package/dist/esm/core/math.js.map +0 -1
  287. package/dist/esm/devtools/DevTools.js.map +0 -1
  288. package/dist/esm/devtools/DeveloperExperience.js.map +0 -1
  289. package/dist/esm/devtools/GameplayAnalytics.js.map +0 -1
  290. package/dist/esm/dialogue/DialogueSystem.js.map +0 -1
  291. package/dist/esm/docs/DocGenerator.js.map +0 -1
  292. package/dist/esm/ecs/World.js.map +0 -1
  293. package/dist/esm/editor/AchievementEditor.js.map +0 -1
  294. package/dist/esm/editor/AdvancedEditor.js.map +0 -1
  295. package/dist/esm/editor/AnimationRetargeting.js.map +0 -1
  296. package/dist/esm/editor/AssetBrowser.js.map +0 -1
  297. package/dist/esm/editor/AssetManager.js.map +0 -1
  298. package/dist/esm/editor/ConsolePro.js.map +0 -1
  299. package/dist/esm/editor/CraftingEditor.js.map +0 -1
  300. package/dist/esm/editor/DebugTools.js.map +0 -1
  301. package/dist/esm/editor/DialogueSystem.js.map +0 -1
  302. package/dist/esm/editor/LeaderboardSystem.js.map +0 -1
  303. package/dist/esm/editor/NiceGameEditor.js.map +0 -1
  304. package/dist/esm/editor/PrefabSystem.js.map +0 -1
  305. package/dist/esm/editor/ProfilerPanel.js.map +0 -1
  306. package/dist/esm/editor/QuestEditor.js.map +0 -1
  307. package/dist/esm/editor/ReplaySystem.js.map +0 -1
  308. package/dist/esm/editor/SceneEditor.js.map +0 -1
  309. package/dist/esm/editor/ScreenshotMode.js.map +0 -1
  310. package/dist/esm/editor/ShaderGraph.js.map +0 -1
  311. package/dist/esm/editor/TimelineEditor.js.map +0 -1
  312. package/dist/esm/editor/UndoRedoPro.js.map +0 -1
  313. package/dist/esm/editor/VRARMode.js.map +0 -1
  314. package/dist/esm/engine/NiceGameEngine.js.map +0 -1
  315. package/dist/esm/engine/SaveSystem.js.map +0 -1
  316. package/dist/esm/engine/SaveSystemV2.js +0 -523
  317. package/dist/esm/engine/SaveSystemV2.js.map +0 -1
  318. package/dist/esm/enterprise/Enterprise.js.map +0 -1
  319. package/dist/esm/export/BevyExporter.js.map +0 -1
  320. package/dist/esm/export/CocosExporter.js.map +0 -1
  321. package/dist/esm/export/Construct3Exporter.js.map +0 -1
  322. package/dist/esm/export/DefoldExporter.js.map +0 -1
  323. package/dist/esm/export/GDevelopExporter.js.map +0 -1
  324. package/dist/esm/export/GameMakerExporter.js.map +0 -1
  325. package/dist/esm/export/GodotExporter.js.map +0 -1
  326. package/dist/esm/export/MinecraftBedrockExporter.js.map +0 -1
  327. package/dist/esm/export/MonoGameExporter.js.map +0 -1
  328. package/dist/esm/export/Pico8Exporter.js.map +0 -1
  329. package/dist/esm/export/PlatformExporter.js.map +0 -1
  330. package/dist/esm/export/RPGMakerExporter.js.map +0 -1
  331. package/dist/esm/export/RobloxExporter.js.map +0 -1
  332. package/dist/esm/export/Solar2DExporter.js.map +0 -1
  333. package/dist/esm/export/ThreeJSExporter.js.map +0 -1
  334. package/dist/esm/export/Tic80Exporter.js.map +0 -1
  335. package/dist/esm/export/UnityExporter.js.map +0 -1
  336. package/dist/esm/export/UnrealExporter.js.map +0 -1
  337. package/dist/esm/export/WebExporter.js.map +0 -1
  338. package/dist/esm/export/index.js.map +0 -1
  339. package/dist/esm/godot-integration/GodotAssetLibrary.js.map +0 -1
  340. package/dist/esm/godot-integration/GodotImport.js.map +0 -1
  341. package/dist/esm/godot-integration/GodotLiveLink.js.map +0 -1
  342. package/dist/esm/godot-integration/components/GodotProjectBrowser.js.map +0 -1
  343. package/dist/esm/i18n/I18n.js.map +0 -1
  344. package/dist/esm/i18n/useTranslation.js.map +0 -1
  345. package/dist/esm/import/AsepriteImporter.js.map +0 -1
  346. package/dist/esm/import/DragonBonesImporter.js.map +0 -1
  347. package/dist/esm/import/GameMakerImporter.js.map +0 -1
  348. package/dist/esm/import/GodotSceneImporter.js.map +0 -1
  349. package/dist/esm/import/LDtkImporter.js.map +0 -1
  350. package/dist/esm/import/Live2DImporter.js.map +0 -1
  351. package/dist/esm/import/NdgFormat.js.map +0 -1
  352. package/dist/esm/import/OgmoImporter.js.map +0 -1
  353. package/dist/esm/import/RPGMakerImporter.js.map +0 -1
  354. package/dist/esm/import/SceneImporter.js.map +0 -1
  355. package/dist/esm/import/SpineImporter.js.map +0 -1
  356. package/dist/esm/import/SpriterImporter.js.map +0 -1
  357. package/dist/esm/import/TiledMapImporter.js.map +0 -1
  358. package/dist/esm/import/UnitySceneImporter.js.map +0 -1
  359. package/dist/esm/import/index.js.map +0 -1
  360. package/dist/esm/index.js.map +0 -1
  361. package/dist/esm/input/GamepadNavigation.js.map +0 -1
  362. package/dist/esm/input/InputManager.js.map +0 -1
  363. package/dist/esm/input/useGamepads.js.map +0 -1
  364. package/dist/esm/integration/IconSprite.js.map +0 -1
  365. package/dist/esm/inventory/InventorySystem.js.map +0 -1
  366. package/dist/esm/kids/KidMode.js.map +0 -1
  367. package/dist/esm/kids/KidTools.js.map +0 -1
  368. package/dist/esm/monetization/Monetization.js.map +0 -1
  369. package/dist/esm/multiplayer/LocalMultiplayer.js.map +0 -1
  370. package/dist/esm/multiplayer/MiniGameTypes.js.map +0 -1
  371. package/dist/esm/native-engine/AssetPipeline.js.map +0 -1
  372. package/dist/esm/native-engine/AudioEngine.js.map +0 -1
  373. package/dist/esm/native-engine/InputSystem.js.map +0 -1
  374. package/dist/esm/native-engine/NetworkingSystem.js.map +0 -1
  375. package/dist/esm/native-engine/PhysicsEngine.js.map +0 -1
  376. package/dist/esm/native-engine/RenderingEngine.js.map +0 -1
  377. package/dist/esm/native-engine/SceneGraph.js.map +0 -1
  378. package/dist/esm/network/MultiplayerTransport.js.map +0 -1
  379. package/dist/esm/network/Networking.js.map +0 -1
  380. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +0 -1
  381. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +0 -1
  382. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +0 -1
  383. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +0 -1
  384. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +0 -1
  385. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +0 -1
  386. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +0 -1
  387. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +0 -1
  388. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +0 -1
  389. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +0 -1
  390. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +0 -1
  391. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +0 -1
  392. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +0 -1
  393. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +0 -1
  394. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +0 -1
  395. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +0 -1
  396. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +0 -1
  397. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +0 -1
  398. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +0 -1
  399. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +0 -1
  400. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +0 -1
  401. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +0 -1
  402. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +0 -1
  403. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +0 -1
  404. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +0 -1
  405. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/index.js.map +0 -1
  406. package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +0 -1
  407. package/dist/esm/pathfinding/Pathfinding.js.map +0 -1
  408. package/dist/esm/performance/AssetStreaming.js.map +0 -1
  409. package/dist/esm/performance/BenchmarkSuite.js.map +0 -1
  410. package/dist/esm/performance/DeltaCompression.js.map +0 -1
  411. package/dist/esm/performance/DeterministicPhysics.js.map +0 -1
  412. package/dist/esm/performance/ECSOptimization.js.map +0 -1
  413. package/dist/esm/performance/GameSaveSystem.js.map +0 -1
  414. package/dist/esm/performance/HotReload.js.map +0 -1
  415. package/dist/esm/performance/InputRecording.js.map +0 -1
  416. package/dist/esm/performance/InterestManagement.js.map +0 -1
  417. package/dist/esm/performance/LocalizationRuntime.js.map +0 -1
  418. package/dist/esm/performance/MemoryManagement.js.map +0 -1
  419. package/dist/esm/performance/ModSupport.js.map +0 -1
  420. package/dist/esm/performance/MultiThreadedPhysics.js.map +0 -1
  421. package/dist/esm/performance/NetworkPrediction.js.map +0 -1
  422. package/dist/esm/performance/ObjectPooling.js.map +0 -1
  423. package/dist/esm/performance/Performance.js.map +0 -1
  424. package/dist/esm/performance/PerformanceAdvanced.js.map +0 -1
  425. package/dist/esm/performance/SaveSystem.js +0 -567
  426. package/dist/esm/performance/SaveSystem.js.map +0 -1
  427. package/dist/esm/performance/WebGPURenderer.js.map +0 -1
  428. package/dist/esm/physics/PhysicsAdvanced.js.map +0 -1
  429. package/dist/esm/physics/PhysicsEngine2D.js.map +0 -1
  430. package/dist/esm/plugins/PluginSDK.js.map +0 -1
  431. package/dist/esm/plugins/PluginTestKit.js.map +0 -1
  432. package/dist/esm/procedural/Procedural.js.map +0 -1
  433. package/dist/esm/procedural/WorldBuilding.js.map +0 -1
  434. package/dist/esm/quest/QuestSystem.js.map +0 -1
  435. package/dist/esm/release/MobileExport.js.map +0 -1
  436. package/dist/esm/release/Release.js.map +0 -1
  437. package/dist/esm/rendering/Camera2D.js.map +0 -1
  438. package/dist/esm/rendering/Renderer2D.js.map +0 -1
  439. package/dist/esm/rendering/WebGPURenderPipeline.js.map +0 -1
  440. package/dist/esm/runtime3d/Runtime3D.js.map +0 -1
  441. package/dist/esm/runtime3d/SceneEditor3D.js.map +0 -1
  442. package/dist/esm/scene/SceneManager.js.map +0 -1
  443. package/dist/esm/scripting/GraphToAST.js.map +0 -1
  444. package/dist/esm/scripting/LanguageExporter.js.map +0 -1
  445. package/dist/esm/scripting/NodeGraph.js.map +0 -1
  446. package/dist/esm/scripting/ScriptAST.js.map +0 -1
  447. package/dist/esm/scripting/VisualScripting2.js.map +0 -1
  448. package/dist/esm/scripting/exporters/CSharpExporter.js.map +0 -1
  449. package/dist/esm/scripting/exporters/GDScriptExporter.js.map +0 -1
  450. package/dist/esm/scripting/exporters/LuaExporter.js.map +0 -1
  451. package/dist/esm/scripting/exporters/PythonExporter.js.map +0 -1
  452. package/dist/esm/scripting/exporters/RustExporter.js.map +0 -1
  453. package/dist/esm/scripting/exporters/TypeScriptExporter.js.map +0 -1
  454. package/dist/esm/social/Social.js.map +0 -1
  455. package/dist/esm/systems/LightingSystem.js.map +0 -1
  456. package/dist/esm/systems/ParticleSystem2.js.map +0 -1
  457. package/dist/esm/systems/PhysicsDebugSystem.js.map +0 -1
  458. package/dist/esm/systems/TerrainSystem.js.map +0 -1
  459. package/dist/esm/templates/ActionTemplates.js.map +0 -1
  460. package/dist/esm/templates/FightingTemplate.js.map +0 -1
  461. package/dist/esm/templates/MetroidvaniaTemplate.js.map +0 -1
  462. package/dist/esm/templates/PartyTemplates.js.map +0 -1
  463. package/dist/esm/templates/PuzzleTemplates.js.map +0 -1
  464. package/dist/esm/templates/RPGTemplates.js.map +0 -1
  465. package/dist/esm/templates/SportsTemplates.js.map +0 -1
  466. package/dist/esm/templates/StrategyTemplates.js.map +0 -1
  467. package/dist/esm/templates/SurvivalTemplate.js.map +0 -1
  468. package/dist/esm/templates/WaveDefense.js.map +0 -1
  469. package/dist/esm/tilemap/Tilemap.js.map +0 -1
  470. package/dist/esm/tutorials/TutorialBranching.js.map +0 -1
  471. package/dist/esm/tutorials/TutorialEngine.js.map +0 -1
  472. package/dist/esm/tutorials/TutorialOverlay.js.map +0 -1
  473. package/dist/esm/tutorials/content/Tutorials_T05_T08.js.map +0 -1
  474. package/dist/esm/tutorials/content/Tutorials_T09_T11.js.map +0 -1
  475. package/dist/esm/tutorials/content/Tutorials_T12_T15.js.map +0 -1
  476. package/dist/esm/ui/GameUI.js.map +0 -1
  477. package/dist/esm/unity-integration/UnityAssetStore.js.map +0 -1
  478. package/dist/esm/unity-integration/UnityImport.js.map +0 -1
  479. package/dist/esm/unity-integration/UnityLiveLink.js.map +0 -1
  480. package/dist/esm/unity-integration/components/UnityAssetStoreBrowser.js.map +0 -1
  481. package/dist/esm/unity-integration/components/UnityProjectBrowser.js.map +0 -1
  482. package/dist/esm/unreal-integration/UnrealImport.js.map +0 -1
  483. package/dist/esm/unreal-integration/UnrealLiveLink.js.map +0 -1
  484. package/dist/esm/unreal-integration/UnrealMarketplace.js.map +0 -1
  485. package/dist/esm/unreal-integration/components/UnrealProjectBrowser.js.map +0 -1
  486. package/dist/esm/xr/ARVR.js.map +0 -1
  487. package/dist/types/engine/SaveSystemV2.d.ts +0 -155
@@ -1,4 +1,5 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { NiceIcon } from '@nice2dev/ui';
2
3
  import { createContext, forwardRef, useReducer, useMemo, useCallback, useImperativeHandle, useState, useContext } from 'react';
3
4
 
4
5
  const DEFAULT_THEME = {
@@ -104,21 +105,21 @@ function formatFileSize(bytes) {
104
105
  function getCategoryIcon(category) {
105
106
  switch (category) {
106
107
  case '3d':
107
- return '🎲';
108
+ return 'box';
108
109
  case '2d':
109
- return 'πŸ–ΌοΈ';
110
+ return 'image';
110
111
  case 'tools':
111
- return 'πŸ”§';
112
+ return 'settings';
112
113
  case 'vfx':
113
- return '✨';
114
+ return 'star';
114
115
  case 'audio':
115
- return 'πŸ”Š';
116
+ return 'volume';
116
117
  case 'templates':
117
- return 'πŸ“‹';
118
+ return 'clipboard';
118
119
  case 'add-ons':
119
- return '🧩';
120
+ return 'puzzle';
120
121
  default:
121
- return 'πŸ“¦';
122
+ return 'box';
122
123
  }
123
124
  }
124
125
  /* ── Search Header ────────────────────────────────────────────── */
@@ -143,7 +144,7 @@ const SearchHeader = () => {
143
144
  padding: '16px 24px',
144
145
  backgroundColor: theme.headerBackground,
145
146
  borderBottom: `1px solid ${theme.border}`,
146
- }, children: [jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 12, marginBottom: 12 }, children: [jsx("div", { style: { fontSize: 24 }, children: "\uD83C\uDFEA" }), jsx("h1", { style: { margin: 0, fontSize: 18, fontWeight: 600, color: theme.textPrimary }, children: "Unity Asset Store" }), jsx("div", { style: { flex: 1 } }), jsxs("button", { style: {
147
+ }, children: [jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 12, marginBottom: 12 }, children: [jsx(NiceIcon, { name: "building", size: 24 }), jsx("h1", { style: { margin: 0, fontSize: 18, fontWeight: 600, color: theme.textPrimary }, children: "Unity Asset Store" }), jsx("div", { style: { flex: 1 } }), jsxs("button", { style: {
147
148
  display: 'flex',
148
149
  alignItems: 'center',
149
150
  gap: 6,
@@ -153,14 +154,14 @@ const SearchHeader = () => {
153
154
  borderRadius: 6,
154
155
  color: '#fff',
155
156
  cursor: 'pointer',
156
- }, children: ["\uD83D\uDED2 Cart (", state.cart.size, ")"] }), jsx("button", { onClick: () => dispatch({ type: 'TOGGLE_MY_ASSETS' }), style: {
157
+ }, children: [jsx(NiceIcon, { name: "box", size: 14 }), " Cart (", state.cart.size, ")"] }), jsxs("button", { onClick: () => dispatch({ type: 'TOGGLE_MY_ASSETS' }), style: {
157
158
  padding: '8px 12px',
158
159
  backgroundColor: state.myAssets ? theme.accent : 'rgba(0,0,0,0.2)',
159
160
  border: 'none',
160
161
  borderRadius: 6,
161
162
  color: '#fff',
162
163
  cursor: 'pointer',
163
- }, children: "\uD83D\uDCDA My Assets" })] }), jsxs("div", { style: { display: 'flex', gap: 8 }, children: [jsxs("div", { style: { flex: 1, position: 'relative' }, children: [jsx("input", { type: "text", placeholder: "Search assets...", value: localQuery, onChange: (e) => setLocalQuery(e.target.value), onKeyDown: (e) => e.key === 'Enter' && handleSearch(), style: {
164
+ }, children: [jsx(NiceIcon, { name: "book", size: 14 }), " My Assets"] })] }), jsxs("div", { style: { display: 'flex', gap: 8 }, children: [jsxs("div", { style: { flex: 1, position: 'relative' }, children: [jsx("input", { type: "text", placeholder: "Search assets...", value: localQuery, onChange: (e) => setLocalQuery(e.target.value), onKeyDown: (e) => e.key === 'Enter' && handleSearch(), style: {
164
165
  width: '100%',
165
166
  padding: '10px 16px',
166
167
  paddingRight: 50,
@@ -181,7 +182,7 @@ const SearchHeader = () => {
181
182
  borderRadius: 6,
182
183
  color: '#fff',
183
184
  cursor: 'pointer',
184
- }, children: "\uD83D\uDD0D" })] }), jsx("select", { value: state.query.category, onChange: (e) => {
185
+ }, children: jsx(NiceIcon, { name: "search", size: 14 }) })] }), jsx("select", { value: state.query.category, onChange: (e) => {
185
186
  dispatch({
186
187
  type: 'SET_QUERY',
187
188
  query: { category: e.target.value, page: 1 },
@@ -228,7 +229,7 @@ const RatingStars = ({ rating, count }) => {
228
229
  return (jsxs("div", { style: { display: 'flex', alignItems: 'center', gap: 4 }, children: [[1, 2, 3, 4, 5].map((star) => (jsx("span", { style: {
229
230
  fontSize: 12,
230
231
  color: star <= Math.round(rating) ? theme.star : theme.textSecondary,
231
- }, children: "\u2605" }, star))), count !== undefined && (jsxs("span", { style: { fontSize: 11, color: theme.textSecondary, marginLeft: 4 }, children: ["(", count, ")"] }))] }));
232
+ }, children: jsx(NiceIcon, { name: "star", size: 12 }) }, star))), count !== undefined && (jsxs("span", { style: { fontSize: 11, color: theme.textSecondary, marginLeft: 4 }, children: ["(", count, ")"] }))] }));
232
233
  };
233
234
  /* ── Asset Card ───────────────────────────────────────────────── */
234
235
  const AssetCard = ({ asset }) => {
@@ -290,7 +291,7 @@ const AssetCard = ({ asset }) => {
290
291
  alignItems: 'center',
291
292
  justifyContent: 'center',
292
293
  fontSize: 14,
293
- }, children: getCategoryIcon(asset.category) })] }), jsxs("div", { style: { padding: 12 }, children: [jsx("h3", { style: {
294
+ }, children: jsx(NiceIcon, { name: getCategoryIcon(asset.category), size: 32 }) })] }), jsxs("div", { style: { padding: 12 }, children: [jsx("h3", { style: {
294
295
  margin: 0,
295
296
  fontSize: 13,
296
297
  fontWeight: 600,
@@ -331,7 +332,7 @@ const AssetCard = ({ asset }) => {
331
332
  borderRadius: 6,
332
333
  color: '#fff',
333
334
  cursor: isDownloading ? 'not-allowed' : 'pointer',
334
- }, children: isDownloading ? `${downloadProgress}%` : 'πŸ“₯ Download' })) : (jsx("button", { onClick: (e) => {
335
+ }, children: isDownloading ? `${downloadProgress}%` : 'Download' })) : (jsx("button", { onClick: (e) => {
335
336
  e.stopPropagation();
336
337
  if (isInCart) {
337
338
  dispatch({ type: 'REMOVE_FROM_CART', id: asset.id });
@@ -349,7 +350,7 @@ const AssetCard = ({ asset }) => {
349
350
  borderRadius: 6,
350
351
  color: '#fff',
351
352
  cursor: 'pointer',
352
- }, children: isInCart ? 'βœ“ In Cart' : 'πŸ›’ Add to Cart' })), jsx("button", { onClick: (e) => {
353
+ }, children: isInCart ? 'In Cart' : 'Add to Cart' })), jsx("button", { onClick: (e) => {
353
354
  e.stopPropagation();
354
355
  openInBrowser(asset);
355
356
  }, style: {
@@ -360,7 +361,7 @@ const AssetCard = ({ asset }) => {
360
361
  borderRadius: 6,
361
362
  color: theme.textSecondary,
362
363
  cursor: 'pointer',
363
- }, children: "\uD83D\uDD17" })] })] })] }));
364
+ }, children: jsx(NiceIcon, { name: "link", size: 14 }) })] })] })] }));
364
365
  };
365
366
  /* ── Asset Grid ───────────────────────────────────────────────── */
366
367
  const AssetGrid = () => {
@@ -372,7 +373,7 @@ const AssetGrid = () => {
372
373
  alignItems: 'center',
373
374
  justifyContent: 'center',
374
375
  color: theme.textSecondary,
375
- }, children: "\u23F3 Loading assets..." }));
376
+ }, children: "Loading assets..." }));
376
377
  }
377
378
  if (state.error) {
378
379
  return (jsxs("div", { style: {
@@ -381,7 +382,7 @@ const AssetGrid = () => {
381
382
  alignItems: 'center',
382
383
  justifyContent: 'center',
383
384
  color: theme.danger,
384
- }, children: ["\u274C ", state.error] }));
385
+ }, children: [jsx(NiceIcon, { name: "error", size: 14 }), " ", state.error] }));
385
386
  }
386
387
  if (state.results.length === 0) {
387
388
  return (jsxs("div", { style: {
@@ -391,7 +392,7 @@ const AssetGrid = () => {
391
392
  alignItems: 'center',
392
393
  justifyContent: 'center',
393
394
  color: theme.textSecondary,
394
- }, children: [jsx("div", { style: { fontSize: 48, marginBottom: 16 }, children: "\uD83D\uDCED" }), jsx("div", { children: "No assets found" })] }));
395
+ }, children: [jsx("div", { style: { marginBottom: 16 }, children: jsx(NiceIcon, { name: "archive", size: 48 }) }), jsx("div", { children: "No assets found" })] }));
395
396
  }
396
397
  return (jsx("div", { style: {
397
398
  display: 'grid',
@@ -474,7 +475,7 @@ const AssetDetailModal = () => {
474
475
  borderRadius: 8,
475
476
  color: '#fff',
476
477
  cursor: isDownloading ? 'not-allowed' : 'pointer',
477
- }, children: isDownloading ? `Downloading ${downloadProgress}%` : 'πŸ“₯ Download & Import' })) : (jsx("button", { onClick: () => isInCart
478
+ }, children: isDownloading ? `Downloading ${downloadProgress}%` : 'Download & Import' })) : (jsx("button", { onClick: () => isInCart
478
479
  ? dispatch({ type: 'REMOVE_FROM_CART', id: asset.id })
479
480
  : dispatch({ type: 'ADD_TO_CART', id: asset.id }), style: {
480
481
  width: '100%',
@@ -486,7 +487,7 @@ const AssetDetailModal = () => {
486
487
  borderRadius: 8,
487
488
  color: '#fff',
488
489
  cursor: 'pointer',
489
- }, children: isInCart ? 'βœ“ Remove from Cart' : 'πŸ›’ Add to Cart' })), jsx("button", { onClick: () => openInBrowser(asset), style: {
490
+ }, children: isInCart ? 'Remove from Cart' : 'Add to Cart' })), jsxs("button", { onClick: () => openInBrowser(asset), style: {
490
491
  width: '100%',
491
492
  marginTop: 8,
492
493
  padding: '10px 24px',
@@ -496,7 +497,7 @@ const AssetDetailModal = () => {
496
497
  borderRadius: 8,
497
498
  color: theme.textSecondary,
498
499
  cursor: 'pointer',
499
- }, children: "\uD83D\uDD17 View on Asset Store" })] })] }), jsx("button", { onClick: () => dispatch({ type: 'SELECT_ASSET', asset: null }), style: {
500
+ }, children: [jsx(NiceIcon, { name: "external-link", size: 14 }), " View on Asset Store"] })] })] }), jsx("button", { onClick: () => dispatch({ type: 'SELECT_ASSET', asset: null }), style: {
500
501
  position: 'absolute',
501
502
  top: 16,
502
503
  right: 16,
@@ -506,7 +507,7 @@ const AssetDetailModal = () => {
506
507
  border: 'none',
507
508
  color: theme.textSecondary,
508
509
  cursor: 'pointer',
509
- }, children: "\u2715" })] }), jsx("div", { style: { display: 'flex', borderBottom: `1px solid ${theme.border}` }, children: ['overview', 'images', 'reviews'].map((tab) => (jsx("button", { onClick: () => setActiveTab(tab), style: {
510
+ }, children: jsx(NiceIcon, { name: "close", size: 14 }) })] }), jsx("div", { style: { display: 'flex', borderBottom: `1px solid ${theme.border}` }, children: ['overview', 'images', 'reviews'].map((tab) => (jsx("button", { onClick: () => setActiveTab(tab), style: {
510
511
  flex: 1,
511
512
  padding: '12px 16px',
512
513
  fontSize: 13,
@@ -1,4 +1,5 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { NiceIcon } from '@nice2dev/ui';
2
3
  import { createContext, forwardRef, useReducer, useMemo, useCallback, useImperativeHandle, useContext } from 'react';
3
4
 
4
5
  const DEFAULT_THEME = {
@@ -102,23 +103,23 @@ function useBrowser() {
102
103
  function getAssetIcon(type) {
103
104
  switch (type) {
104
105
  case 'scene':
105
- return '🎬';
106
+ return 'video';
106
107
  case 'prefab':
107
- return 'πŸ“¦';
108
+ return 'box';
108
109
  case 'material':
109
- return '🎨';
110
+ return 'palette';
110
111
  case 'texture':
111
- return 'πŸ–ΌοΈ';
112
+ return 'image';
112
113
  case 'mesh':
113
- return 'πŸ”·';
114
+ return 'hexagon';
114
115
  case 'animation':
115
- return 'πŸƒ';
116
+ return 'play';
116
117
  case 'script':
117
- return 'πŸ“œ';
118
+ return 'code';
118
119
  case 'audio':
119
- return 'πŸ”Š';
120
+ return 'volume';
120
121
  default:
121
- return 'πŸ“„';
122
+ return 'file';
122
123
  }
123
124
  }
124
125
  function formatFileSize(bytes) {
@@ -149,7 +150,7 @@ const BrowserHeader = ({ projectPath }) => {
149
150
  alignItems: 'center',
150
151
  justifyContent: 'center',
151
152
  fontSize: 20,
152
- }, children: "\uD83C\uDFAE" }), jsxs("div", { style: { flex: 1 }, children: [jsx("div", { style: { fontSize: 14, fontWeight: 600, color: theme.textPrimary }, children: state.projectInfo?.name ?? 'No Project Loaded' }), jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: state.projectInfo ? (jsxs(Fragment, { children: ["Unity ", state.projectInfo.unityVersion, " \u2022", ' ', state.projectInfo.renderPipeline.toUpperCase()] })) : ((projectPath ?? 'Select a Unity project folder')) })] }), jsxs("div", { style: {
153
+ }, children: jsx(NiceIcon, { name: "gamepad", size: 18 }) }), jsxs("div", { style: { flex: 1 }, children: [jsx("div", { style: { fontSize: 14, fontWeight: 600, color: theme.textPrimary }, children: state.projectInfo?.name ?? 'No Project Loaded' }), jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: state.projectInfo ? (jsxs(Fragment, { children: ["Unity ", state.projectInfo.unityVersion, " \u2022", ' ', state.projectInfo.renderPipeline.toUpperCase()] })) : ((projectPath ?? 'Select a Unity project folder')) })] }), jsxs("div", { style: {
153
154
  display: 'flex',
154
155
  alignItems: 'center',
155
156
  gap: 8,
@@ -216,21 +217,21 @@ const BrowserToolbar = () => {
216
217
  backgroundColor: 'rgba(0,0,0,0.2)',
217
218
  borderRadius: 6,
218
219
  overflow: 'hidden',
219
- }, children: [jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'tree' }), style: {
220
+ }, children: [jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'tree' }), "aria-label": "Tree view", style: {
220
221
  padding: '6px 10px',
221
222
  fontSize: 12,
222
223
  backgroundColor: state.viewMode === 'tree' ? theme.accent : 'transparent',
223
224
  border: 'none',
224
225
  color: '#fff',
225
226
  cursor: 'pointer',
226
- }, children: "\uD83D\uDCD1" }), jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'grid' }), style: {
227
+ }, children: jsx(NiceIcon, { name: "list", size: 14 }) }), jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'grid' }), "aria-label": "Grid view", style: {
227
228
  padding: '6px 10px',
228
229
  fontSize: 12,
229
230
  backgroundColor: state.viewMode === 'grid' ? theme.accent : 'transparent',
230
231
  border: 'none',
231
232
  color: '#fff',
232
233
  cursor: 'pointer',
233
- }, children: "\uD83D\uDD32" })] }), jsx("div", { style: { flex: 1 } }), jsxs("span", { style: { fontSize: 11, color: theme.textSecondary }, children: [state.selectedAssets.size, " selected"] }), jsx("button", { onClick: importSelectedAssets, disabled: state.selectedAssets.size === 0 || state.importProgress !== null, style: {
234
+ }, children: jsx(NiceIcon, { name: "grid", size: 14 }) })] }), jsx("div", { style: { flex: 1 } }), jsxs("span", { style: { fontSize: 11, color: theme.textSecondary }, children: [state.selectedAssets.size, " selected"] }), jsxs("button", { onClick: importSelectedAssets, disabled: state.selectedAssets.size === 0 || state.importProgress !== null, style: {
234
235
  padding: '8px 16px',
235
236
  fontSize: 12,
236
237
  fontWeight: 500,
@@ -242,16 +243,16 @@ const BrowserToolbar = () => {
242
243
  color: '#fff',
243
244
  cursor: state.selectedAssets.size > 0 && !state.importProgress ? 'pointer' : 'not-allowed',
244
245
  opacity: state.selectedAssets.size > 0 && !state.importProgress ? 1 : 0.5,
245
- }, children: state.importProgress ? '⏳ Importing...' : 'πŸ“₯ Import Selected' })] }));
246
+ }, children: [jsx(NiceIcon, { name: state.importProgress ? 'clock' : 'download', size: 14 }), ' ', state.importProgress ? 'Importing...' : 'Import Selected'] })] }));
246
247
  };
247
248
  /* ── Tab Bar Component ────────────────────────────────────────── */
248
249
  const TabBar = () => {
249
250
  const { state, dispatch, theme } = useBrowser();
250
251
  const tabs = [
251
- { id: 'assets', label: 'Assets', icon: 'πŸ“' },
252
- { id: 'scenes', label: 'Scenes', icon: '🎬' },
253
- { id: 'packages', label: 'Packages', icon: 'πŸ“¦' },
254
- { id: 'settings', label: 'Settings', icon: 'βš™οΈ' },
252
+ { id: 'assets', label: 'Assets', icon: 'folder' },
253
+ { id: 'scenes', label: 'Scenes', icon: 'video' },
254
+ { id: 'packages', label: 'Packages', icon: 'box' },
255
+ { id: 'settings', label: 'Settings', icon: 'settings' },
255
256
  ];
256
257
  return (jsx("div", { style: {
257
258
  display: 'flex',
@@ -267,7 +268,7 @@ const TabBar = () => {
267
268
  borderBottom: state.tab === tab.id ? `2px solid ${theme.accent}` : '2px solid transparent',
268
269
  color: state.tab === tab.id ? theme.textPrimary : theme.textSecondary,
269
270
  cursor: 'pointer',
270
- }, children: [tab.icon, " ", tab.label] }, tab.id))) }));
271
+ }, children: [jsx(NiceIcon, { name: tab.icon, size: 14 }), " ", tab.label] }, tab.id))) }));
271
272
  };
272
273
  /* ── Asset Tree View ──────────────────────────────────────────── */
273
274
  const AssetTreeItem = ({ asset, indent }) => {
@@ -281,7 +282,7 @@ const AssetTreeItem = ({ asset, indent }) => {
281
282
  paddingLeft: indent * 16 + 8,
282
283
  backgroundColor: isSelected ? theme.itemSelected : 'transparent',
283
284
  cursor: 'pointer',
284
- }, children: [jsx("input", { type: "checkbox", checked: isSelected, onChange: () => dispatch({ type: 'SELECT_ASSET', id: asset.id, additive: true }), onClick: (e) => e.stopPropagation() }), jsx("span", { style: { fontSize: 14 }, children: getAssetIcon(asset.type) }), jsx("span", { style: {
285
+ }, children: [jsx("input", { type: "checkbox", checked: isSelected, onChange: () => dispatch({ type: 'SELECT_ASSET', id: asset.id, additive: true }), onClick: (e) => e.stopPropagation() }), jsx(NiceIcon, { name: getAssetIcon(asset.type), size: 14 }), jsx("span", { style: {
285
286
  flex: 1,
286
287
  fontSize: 12,
287
288
  color: isSelected ? theme.textPrimary : theme.textSecondary,
@@ -318,7 +319,7 @@ const FolderTreeItem = ({ folder, indent }) => {
318
319
  padding: '4px 8px',
319
320
  paddingLeft: indent * 16 + 8,
320
321
  cursor: 'pointer',
321
- }, children: [jsx("span", { style: { fontSize: 10, color: theme.textSecondary }, children: isExpanded ? 'β–Ό' : 'β–Ά' }), jsx("span", { style: { fontSize: 14, color: theme.folderColor }, children: "\uD83D\uDCC1" }), jsx("span", { style: { fontSize: 12, color: theme.textPrimary, fontWeight: 500 }, children: folder.name }), jsxs("span", { style: { fontSize: 10, color: theme.textSecondary }, children: ["(", filteredChildren.length, ")"] })] }), isExpanded &&
322
+ }, children: [jsx(NiceIcon, { name: isExpanded ? 'chevron-down' : 'chevron-right', size: 10, color: theme.textSecondary }), jsx(NiceIcon, { name: "folder", size: 14, color: theme.folderColor }), jsx("span", { style: { fontSize: 12, color: theme.textPrimary, fontWeight: 500 }, children: folder.name }), jsxs("span", { style: { fontSize: 10, color: theme.textSecondary }, children: ["(", filteredChildren.length, ")"] })] }), isExpanded &&
322
323
  filteredChildren.map((child, _i) => 'children' in child ? (jsx(FolderTreeItem, { folder: child, indent: indent + 1 }, child.path)) : (jsx(AssetTreeItem, { asset: child, indent: indent + 1 }, child.id)))] }));
323
324
  };
324
325
  /* ── Asset Grid View ──────────────────────────────────────────── */
@@ -364,7 +365,7 @@ const AssetGridView = () => {
364
365
  justifyContent: 'center',
365
366
  fontSize: 24,
366
367
  marginBottom: 8,
367
- }, children: asset.thumbnail ? (jsx("img", { src: asset.thumbnail, alt: asset.name, style: { width: '100%', height: '100%', objectFit: 'cover', borderRadius: 8 } })) : (getAssetIcon(asset.type)) }), jsx("span", { style: {
368
+ }, children: asset.thumbnail ? (jsx("img", { src: asset.thumbnail, alt: asset.name, style: { width: '100%', height: '100%', objectFit: 'cover', borderRadius: 8 } })) : (jsx(NiceIcon, { name: getAssetIcon(asset.type), size: 32 })) }), jsx("span", { style: {
368
369
  fontSize: 11,
369
370
  color: theme.textPrimary,
370
371
  textAlign: 'center',
@@ -414,7 +415,7 @@ const PackagesPanel = () => {
414
415
  marginBottom: 4,
415
416
  backgroundColor: theme.itemBackground,
416
417
  borderRadius: 6,
417
- }, children: [jsx("span", { style: { fontSize: 14 }, children: "\uD83D\uDCE6" }), jsx("span", { style: { fontSize: 12, color: theme.textPrimary, flex: 1 }, children: pkg.name }), jsx("span", { style: {
418
+ }, children: [jsx(NiceIcon, { name: "box", size: 14 }), jsx("span", { style: { fontSize: 12, color: theme.textPrimary, flex: 1 }, children: pkg.name }), jsx("span", { style: {
418
419
  padding: '2px 8px',
419
420
  fontSize: 10,
420
421
  backgroundColor: getSourceBadge(pkg.source),
@@ -467,14 +468,14 @@ const PreviewPanel = () => {
467
468
  gap: 12,
468
469
  padding: 16,
469
470
  borderBottom: `1px solid ${theme.border}`,
470
- }, children: [jsx("span", { style: { fontSize: 24 }, children: getAssetIcon(asset.type) }), jsxs("div", { style: { flex: 1 }, children: [jsx("div", { style: { fontSize: 16, fontWeight: 600, color: theme.textPrimary }, children: asset.name }), jsx("div", { style: { fontSize: 12, color: theme.textSecondary }, children: asset.path })] }), jsx("button", { onClick: () => dispatch({ type: 'SET_PREVIEW', asset: null }), style: {
471
+ }, children: [jsx(NiceIcon, { name: getAssetIcon(asset.type), size: 24 }), jsxs("div", { style: { flex: 1 }, children: [jsx("div", { style: { fontSize: 16, fontWeight: 600, color: theme.textPrimary }, children: asset.name }), jsx("div", { style: { fontSize: 12, color: theme.textSecondary }, children: asset.path })] }), jsx("button", { onClick: () => dispatch({ type: 'SET_PREVIEW', asset: null }), style: {
471
472
  padding: '4px 8px',
472
473
  fontSize: 14,
473
474
  backgroundColor: 'transparent',
474
475
  border: 'none',
475
476
  color: theme.textSecondary,
476
477
  cursor: 'pointer',
477
- }, children: "\u2715" })] }), jsxs("div", { style: { padding: 16 }, children: [jsx("div", { style: {
478
+ }, children: jsx(NiceIcon, { name: "close", size: 14 }) })] }), jsxs("div", { style: { padding: 16 }, children: [jsx("div", { style: {
478
479
  width: '100%',
479
480
  height: 300,
480
481
  backgroundColor: 'rgba(0,0,0,0.3)',
@@ -484,7 +485,7 @@ const PreviewPanel = () => {
484
485
  justifyContent: 'center',
485
486
  fontSize: 48,
486
487
  marginBottom: 16,
487
- }, children: asset.thumbnail ? (jsx("img", { src: asset.thumbnail, alt: asset.name, style: { maxWidth: '100%', maxHeight: '100%', objectFit: 'contain' } })) : (getAssetIcon(asset.type)) }), jsxs("div", { style: { display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12 }, children: [jsxs("div", { children: [jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: "Type" }), jsx("div", { style: { fontSize: 13, color: theme.textPrimary }, children: asset.type })] }), jsxs("div", { children: [jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: "Size" }), jsx("div", { style: { fontSize: 13, color: theme.textPrimary }, children: formatFileSize(asset.size) })] }), jsxs("div", { children: [jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: "GUID" }), jsx("div", { style: { fontSize: 13, color: theme.textPrimary, fontFamily: 'monospace' }, children: asset.guid })] }), jsxs("div", { children: [jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: "Last Modified" }), jsx("div", { style: { fontSize: 13, color: theme.textPrimary }, children: asset.lastModified })] })] }), asset.dependencies && asset.dependencies.length > 0 && (jsxs("div", { style: { marginTop: 16 }, children: [jsxs("div", { style: { fontSize: 12, fontWeight: 500, color: theme.textPrimary, marginBottom: 8 }, children: ["Dependencies (", asset.dependencies.length, ")"] }), jsx("div", { style: { maxHeight: 100, overflow: 'auto' }, children: asset.dependencies.map((dep, i) => (jsx("div", { style: {
488
+ }, children: asset.thumbnail ? (jsx("img", { src: asset.thumbnail, alt: asset.name, style: { maxWidth: '100%', maxHeight: '100%', objectFit: 'contain' } })) : (jsx(NiceIcon, { name: getAssetIcon(asset.type), size: 32 })) }), jsxs("div", { style: { display: 'grid', gridTemplateColumns: '1fr 1fr', gap: 12 }, children: [jsxs("div", { children: [jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: "Type" }), jsx("div", { style: { fontSize: 13, color: theme.textPrimary }, children: asset.type })] }), jsxs("div", { children: [jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: "Size" }), jsx("div", { style: { fontSize: 13, color: theme.textPrimary }, children: formatFileSize(asset.size) })] }), jsxs("div", { children: [jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: "GUID" }), jsx("div", { style: { fontSize: 13, color: theme.textPrimary, fontFamily: 'monospace' }, children: asset.guid })] }), jsxs("div", { children: [jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: "Last Modified" }), jsx("div", { style: { fontSize: 13, color: theme.textPrimary }, children: asset.lastModified })] })] }), asset.dependencies && asset.dependencies.length > 0 && (jsxs("div", { style: { marginTop: 16 }, children: [jsxs("div", { style: { fontSize: 12, fontWeight: 500, color: theme.textPrimary, marginBottom: 8 }, children: ["Dependencies (", asset.dependencies.length, ")"] }), jsx("div", { style: { maxHeight: 100, overflow: 'auto' }, children: asset.dependencies.map((dep, i) => (jsx("div", { style: {
488
489
  padding: '4px 8px',
489
490
  fontSize: 11,
490
491
  color: theme.textSecondary,
@@ -534,7 +535,7 @@ const ImportProgressOverlay = () => {
534
535
  backgroundColor: theme.panelBackground,
535
536
  borderRadius: 12,
536
537
  padding: 24,
537
- }, children: [jsx("h3", { style: { margin: '0 0 16px', fontSize: 16, fontWeight: 600, color: theme.textPrimary }, children: progress.phase === 'complete' ? 'βœ… Import Complete' : 'πŸ“₯ Importing Assets' }), jsx("div", { style: { fontSize: 12, color: theme.textSecondary, marginBottom: 8 }, children: progress.message }), progress.currentAsset && (jsx("div", { style: {
538
+ }, children: [jsxs("h3", { style: { margin: '0 0 16px', fontSize: 16, fontWeight: 600, color: theme.textPrimary }, children: [jsx(NiceIcon, { name: progress.phase === 'complete' ? 'success' : 'download', size: 16 }), ' ', progress.phase === 'complete' ? 'Import Complete' : 'Importing Assets'] }), jsx("div", { style: { fontSize: 12, color: theme.textSecondary, marginBottom: 8 }, children: progress.message }), progress.currentAsset && (jsx("div", { style: {
538
539
  fontSize: 11,
539
540
  color: theme.textPrimary,
540
541
  backgroundColor: 'rgba(0,0,0,0.2)',
@@ -1,4 +1,5 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
+ import { NiceIcon } from '@nice2dev/ui';
2
3
  import { createContext, forwardRef, useReducer, useMemo, useCallback, useImperativeHandle, useContext } from 'react';
3
4
 
4
5
  const DEFAULT_THEME = {
@@ -110,29 +111,29 @@ function useBrowser() {
110
111
  function getAssetIcon(type) {
111
112
  switch (type) {
112
113
  case 'blueprint':
113
- return 'πŸ”΅';
114
+ return 'code';
114
115
  case 'level':
115
- return 'πŸ—ΊοΈ';
116
+ return 'map-pin';
116
117
  case 'material':
117
- return '🎨';
118
+ return 'palette';
118
119
  case 'texture':
119
- return 'πŸ–ΌοΈ';
120
+ return 'image';
120
121
  case 'mesh':
121
- return 'πŸ”·';
122
+ return 'hexagon';
122
123
  case 'skeletal_mesh':
123
- return '🦴';
124
+ return 'user';
124
125
  case 'animation':
125
- return 'πŸƒ';
126
+ return 'play';
126
127
  case 'sound':
127
- return 'πŸ”Š';
128
+ return 'volume';
128
129
  case 'particle':
129
- return '✨';
130
+ return 'star';
130
131
  case 'widget':
131
- return 'πŸ“±';
132
+ return 'monitor';
132
133
  case 'data_asset':
133
- return 'πŸ“Š';
134
+ return 'table';
134
135
  default:
135
- return 'πŸ“„';
136
+ return 'file';
136
137
  }
137
138
  }
138
139
  function formatFileSize(bytes) {
@@ -183,7 +184,7 @@ const BrowserHeader = () => {
183
184
  justifyContent: 'center',
184
185
  fontSize: 18,
185
186
  border: '1px solid rgba(255,255,255,0.1)',
186
- }, children: "\uD83C\uDFAE" }), jsxs("div", { style: { flex: 1 }, children: [jsx("div", { style: { fontSize: 14, fontWeight: 600, color: theme.textPrimary }, children: state.projectInfo?.name ?? 'No Project Loaded' }), jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: state.projectInfo ? (jsxs(Fragment, { children: ["UE ", state.projectInfo.engineVersion, " \u2022 ", state.projectInfo.targetPlatforms.join(', ')] })) : ('Select a .uproject file') })] }), state.liveLinkStatus.connected && state.liveLinkStatus.hotReloadAvailable && (jsx("button", { onClick: triggerHotReload, disabled: state.liveLinkStatus.compiling, style: {
187
+ }, children: jsx(NiceIcon, { name: "gamepad", size: 18 }) }), jsxs("div", { style: { flex: 1 }, children: [jsx("div", { style: { fontSize: 14, fontWeight: 600, color: theme.textPrimary }, children: state.projectInfo?.name ?? 'No Project Loaded' }), jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: state.projectInfo ? (jsxs(Fragment, { children: ["UE ", state.projectInfo.engineVersion, " \u2022 ", state.projectInfo.targetPlatforms.join(', ')] })) : ('Select a .uproject file') })] }), state.liveLinkStatus.connected && state.liveLinkStatus.hotReloadAvailable && (jsxs("button", { onClick: triggerHotReload, disabled: state.liveLinkStatus.compiling, style: {
187
188
  padding: '6px 12px',
188
189
  fontSize: 11,
189
190
  backgroundColor: state.liveLinkStatus.compiling ? theme.warning : theme.cppOrange,
@@ -191,7 +192,7 @@ const BrowserHeader = () => {
191
192
  borderRadius: 4,
192
193
  color: '#fff',
193
194
  cursor: state.liveLinkStatus.compiling ? 'not-allowed' : 'pointer',
194
- }, children: state.liveLinkStatus.compiling ? '⏳ Compiling...' : 'πŸ”₯ Hot Reload' })), jsxs("div", { style: {
195
+ }, children: [jsx(NiceIcon, { name: state.liveLinkStatus.compiling ? 'clock' : 'zap', size: 14 }), ' ', state.liveLinkStatus.compiling ? 'Compiling...' : 'Hot Reload'] })), jsxs("div", { style: {
195
196
  display: 'flex',
196
197
  alignItems: 'center',
197
198
  gap: 8,
@@ -270,35 +271,35 @@ const BrowserToolbar = () => {
270
271
  backgroundColor: 'rgba(0,0,0,0.2)',
271
272
  borderRadius: 4,
272
273
  overflow: 'hidden',
273
- }, children: [jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'tiles' }), style: {
274
+ }, children: [jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'tiles' }), "aria-label": "Tile view", style: {
274
275
  padding: '6px 10px',
275
276
  fontSize: 12,
276
277
  backgroundColor: state.viewMode === 'tiles' ? theme.accent : 'transparent',
277
278
  border: 'none',
278
279
  color: '#fff',
279
280
  cursor: 'pointer',
280
- }, children: "\uD83D\uDD32" }), jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'list' }), style: {
281
+ }, children: jsx(NiceIcon, { name: "grid", size: 14 }) }), jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'list' }), "aria-label": "List view", style: {
281
282
  padding: '6px 10px',
282
283
  fontSize: 12,
283
284
  backgroundColor: state.viewMode === 'list' ? theme.accent : 'transparent',
284
285
  border: 'none',
285
286
  color: '#fff',
286
287
  cursor: 'pointer',
287
- }, children: "\uD83D\uDCCB" }), jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'columns' }), style: {
288
+ }, children: jsx(NiceIcon, { name: "list", size: 14 }) }), jsx("button", { onClick: () => dispatch({ type: 'SET_VIEW_MODE', mode: 'columns' }), "aria-label": "Column view", style: {
288
289
  padding: '6px 10px',
289
290
  fontSize: 12,
290
291
  backgroundColor: state.viewMode === 'columns' ? theme.accent : 'transparent',
291
292
  border: 'none',
292
293
  color: '#fff',
293
294
  cursor: 'pointer',
294
- }, children: "\uD83D\uDCD1" })] }), state.viewMode === 'tiles' && (jsxs("select", { value: state.tileSize, onChange: (e) => dispatch({ type: 'SET_TILE_SIZE', size: e.target.value }), style: {
295
+ }, children: jsx(NiceIcon, { name: "columns", size: 14 }) })] }), state.viewMode === 'tiles' && (jsxs("select", { value: state.tileSize, onChange: (e) => dispatch({ type: 'SET_TILE_SIZE', size: e.target.value }), style: {
295
296
  padding: '6px 10px',
296
297
  fontSize: 12,
297
298
  backgroundColor: 'rgba(0,0,0,0.3)',
298
299
  border: `1px solid ${theme.border}`,
299
300
  borderRadius: 4,
300
301
  color: theme.textPrimary,
301
- }, children: [jsx("option", { value: "small", children: "Small" }), jsx("option", { value: "medium", children: "Medium" }), jsx("option", { value: "large", children: "Large" })] })), jsx("div", { style: { flex: 1 } }), jsxs("span", { style: { fontSize: 11, color: theme.textSecondary }, children: [state.selectedAssets.size, " selected"] }), jsx("button", { onClick: importSelectedAssets, disabled: state.selectedAssets.size === 0 || state.importing, style: {
302
+ }, children: [jsx("option", { value: "small", children: "Small" }), jsx("option", { value: "medium", children: "Medium" }), jsx("option", { value: "large", children: "Large" })] })), jsx("div", { style: { flex: 1 } }), jsxs("span", { style: { fontSize: 11, color: theme.textSecondary }, children: [state.selectedAssets.size, " selected"] }), jsxs("button", { onClick: importSelectedAssets, disabled: state.selectedAssets.size === 0 || state.importing, style: {
302
303
  padding: '8px 16px',
303
304
  fontSize: 12,
304
305
  fontWeight: 500,
@@ -308,17 +309,17 @@ const BrowserToolbar = () => {
308
309
  color: '#fff',
309
310
  cursor: state.selectedAssets.size > 0 && !state.importing ? 'pointer' : 'not-allowed',
310
311
  opacity: state.selectedAssets.size > 0 && !state.importing ? 1 : 0.5,
311
- }, children: state.importing ? `⏳ ${state.importProgress}%` : 'πŸ“₯ Import Selected' })] }));
312
+ }, children: [jsx(NiceIcon, { name: state.importing ? 'clock' : 'download', size: 14 }), ' ', state.importing ? `${state.importProgress}%` : 'Import Selected'] })] }));
312
313
  };
313
314
  /* ── Tab Bar ─────────────────────────────────────────────────── */
314
315
  const TabBar = () => {
315
316
  const { state, dispatch, theme } = useBrowser();
316
317
  const tabs = [
317
- { id: 'content', label: 'Content', icon: 'πŸ“' },
318
- { id: 'levels', label: 'Levels', icon: 'πŸ—ΊοΈ' },
319
- { id: 'plugins', label: 'Plugins', icon: 'πŸ”Œ' },
320
- { id: 'modules', label: 'Modules', icon: 'πŸ“¦' },
321
- { id: 'settings', label: 'Settings', icon: 'βš™οΈ' },
318
+ { id: 'content', label: 'Content', icon: 'folder' },
319
+ { id: 'levels', label: 'Levels', icon: 'map-pin' },
320
+ { id: 'plugins', label: 'Plugins', icon: 'plug' },
321
+ { id: 'modules', label: 'Modules', icon: 'box' },
322
+ { id: 'settings', label: 'Settings', icon: 'settings' },
322
323
  ];
323
324
  return (jsx("div", { style: {
324
325
  display: 'flex',
@@ -333,7 +334,7 @@ const TabBar = () => {
333
334
  borderBottom: state.tab === tab.id ? `2px solid ${theme.accent}` : '2px solid transparent',
334
335
  color: state.tab === tab.id ? theme.textPrimary : theme.textSecondary,
335
336
  cursor: 'pointer',
336
- }, children: [tab.icon, " ", tab.label] }, tab.id))) }));
337
+ }, children: [jsx(NiceIcon, { name: tab.icon, size: 14 }), " ", tab.label] }, tab.id))) }));
337
338
  };
338
339
  /* ── Asset Tile ───────────────────────────────────────────────── */
339
340
  const AssetTile = ({ asset, size, }) => {
@@ -369,7 +370,7 @@ const AssetTile = ({ asset, size, }) => {
369
370
  backgroundSize: 'cover',
370
371
  backgroundPosition: 'center',
371
372
  borderRadius: 4,
372
- } })) : (getAssetIcon(asset.type)), jsx("div", { style: {
373
+ } })) : (jsx(NiceIcon, { name: getAssetIcon(asset.type), size: 32 })), jsx("div", { style: {
373
374
  position: 'absolute',
374
375
  bottom: 4,
375
376
  right: 4,
@@ -432,7 +433,7 @@ const AssetListItem = ({ asset, isSelected, }) => {
432
433
  height: 6,
433
434
  borderRadius: 2,
434
435
  backgroundColor: getAssetColor(asset.type, theme),
435
- } }), jsx("span", { style: { fontSize: 14 }, children: getAssetIcon(asset.type) }), jsx("span", { style: { flex: 1, fontSize: 12, color: theme.textPrimary }, children: asset.name }), jsx("span", { style: { fontSize: 11, color: theme.textSecondary }, children: asset.className }), jsx("span", { style: { fontSize: 10, color: theme.textSecondary }, children: formatFileSize(asset.size) })] }));
436
+ } }), jsx(NiceIcon, { name: getAssetIcon(asset.type), size: 14 }), jsx("span", { style: { flex: 1, fontSize: 12, color: theme.textPrimary }, children: asset.name }), jsx("span", { style: { fontSize: 11, color: theme.textSecondary }, children: asset.className }), jsx("span", { style: { fontSize: 10, color: theme.textSecondary }, children: formatFileSize(asset.size) })] }));
436
437
  };
437
438
  /* ── Levels Panel ─────────────────────────────────────────────── */
438
439
  const LevelsPanel = () => {
@@ -448,7 +449,7 @@ const LevelsPanel = () => {
448
449
  marginBottom: 4,
449
450
  backgroundColor: theme.itemBackground,
450
451
  borderRadius: 4,
451
- }, children: [jsx("span", { style: { fontSize: 20 }, children: "\uD83D\uDDFA\uFE0F" }), jsxs("div", { style: { flex: 1 }, children: [jsx("div", { style: { fontSize: 13, color: theme.textPrimary, fontWeight: 500 }, children: map.name }), jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: map.path })] }), map.persistent && (jsx("span", { style: {
452
+ }, children: [jsx(NiceIcon, { name: "map-pin", size: 20 }), jsxs("div", { style: { flex: 1 }, children: [jsx("div", { style: { fontSize: 13, color: theme.textPrimary, fontWeight: 500 }, children: map.name }), jsx("div", { style: { fontSize: 11, color: theme.textSecondary }, children: map.path })] }), map.persistent && (jsx("span", { style: {
452
453
  padding: '2px 8px',
453
454
  fontSize: 10,
454
455
  backgroundColor: theme.accent,
@@ -527,7 +528,7 @@ const ModulesPanel = () => {
527
528
  marginBottom: 4,
528
529
  backgroundColor: theme.itemBackground,
529
530
  borderRadius: 4,
530
- }, children: [jsx("span", { style: { fontSize: 14 }, children: "\uD83D\uDCE6" }), jsx("span", { style: { flex: 1, fontSize: 13, color: theme.textPrimary, fontWeight: 500 }, children: module.name }), jsx("span", { style: {
531
+ }, children: [jsx(NiceIcon, { name: "box", size: 14 }), jsx("span", { style: { flex: 1, fontSize: 13, color: theme.textPrimary, fontWeight: 500 }, children: module.name }), jsx("span", { style: {
531
532
  padding: '2px 8px',
532
533
  fontSize: 10,
533
534
  backgroundColor: getModuleTypeColor(module.type),
@@ -208,6 +208,7 @@ export declare class AssetBrowser {
208
208
  setOnAssetOpen(callback: (asset: BrowserAsset) => void): void;
209
209
  openAsset(assetId: string): void;
210
210
  formatFileSize(bytes: number): string;
211
+ /** NiceIcon name for an asset type. */
211
212
  getAssetTypeIcon(type: BrowserAssetType): string;
212
213
  }
213
214
  export declare function createAssetBrowser(config?: Partial<AssetBrowserConfig>): AssetBrowser;
@@ -33,7 +33,8 @@ export declare class DefaultBTNodeRenderer implements BTEditorNodeRenderer {
33
33
  private drawBadge;
34
34
  private roundRect;
35
35
  private truncateText;
36
- private getCategoryIcon;
36
+ /** Small category marker drawn as a shape (no glyph fonts on the canvas). */
37
+ private drawCategoryMarker;
37
38
  }
38
39
  export interface BTConnectionRenderer {
39
40
  /** Render connection */
@@ -71,4 +71,5 @@ export declare class BTEditorToolbar {
71
71
  private notifyListeners;
72
72
  }
73
73
  export declare function createBTEditorToolbar(editor: BehaviorTreeEditor): BTEditorToolbar;
74
+ /** Toolbar icon id -> NiceIcon builtin name (render with `<NiceIcon name={…} />`). */
74
75
  export declare const TOOLBAR_ICONS: Record<string, string>;
@@ -9,7 +9,7 @@ export type BlockCategory = 'motion' | 'looks' | 'events' | 'control' | 'sensing
9
9
  export interface VisualBlock {
10
10
  id: string;
11
11
  category: BlockCategory;
12
- /** Emoji icon for the block */
12
+ /** NiceIcon name for the block (field keeps its historical name). */
13
13
  emoji: string;
14
14
  /** Block label per locale */
15
15
  label: Partial<Record<Locale, string>>;
@@ -44,7 +44,7 @@ export interface KidSprite {
44
44
  name: Partial<Record<Locale, string>>;
45
45
  /** Category for browsing */
46
46
  category: 'animals' | 'people' | 'vehicles' | 'nature' | 'food' | 'fantasy' | 'space' | 'sports' | 'buildings' | 'effects';
47
- /** Emoji preview */
47
+ /** Emoji preview of the sprite art (content, not a UI icon). */
48
48
  emoji: string;
49
49
  /** Asset URL pattern */
50
50
  assetPath: string;
@@ -58,6 +58,7 @@ export interface KidSprite {
58
58
  /** Gamification badge */
59
59
  export interface KidBadge {
60
60
  id: string;
61
+ /** NiceIcon name for the badge (field keeps its historical name). */
61
62
  emoji: string;
62
63
  name: Partial<Record<Locale, string>>;
63
64
  description: Partial<Record<Locale, string>>;
@@ -187,6 +188,7 @@ export declare class KidModeManager {
187
188
  }
188
189
  export interface KidDifficultySettings {
189
190
  label: Partial<Record<Locale, string>>;
191
+ /** NiceIcon name for the level (field keeps its historical name). */
190
192
  emoji: string;
191
193
  /** Which block categories are available */
192
194
  enabledCategories: BlockCategory[];
@@ -2,7 +2,7 @@ import { EventBus } from '../core/EventBus';
2
2
  import type { Locale } from '../i18n/I18n';
3
3
  export interface WizardChoice {
4
4
  id: string;
5
- /** Emoji icon shown to the child. */
5
+ /** NiceIcon name shown to the child. */
6
6
  icon: string;
7
7
  /** Localized label. */
8
8
  label: Record<string, string>;