@edenapp/sdk 0.1.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 (432) hide show
  1. package/apps/com/eden/editor/dist/assets/css-DQU6DXDx.js +3 -0
  2. package/apps/com/eden/editor/dist/assets/editor-BRA9licV.css +1 -0
  3. package/apps/com/eden/editor/dist/assets/editor.main-DAsyVptA.js +677 -0
  4. package/apps/com/eden/editor/dist/assets/editor.worker-B4pQIWZD.js +12 -0
  5. package/apps/com/eden/editor/dist/assets/html-CTBLac3N.js +1 -0
  6. package/apps/com/eden/editor/dist/assets/index-B7GgDQ9I.css +1 -0
  7. package/apps/com/eden/editor/dist/assets/index-BWJI9cyM.js +2 -0
  8. package/apps/com/eden/editor/dist/assets/ini-BvajGCUy.js +1 -0
  9. package/apps/com/eden/editor/dist/assets/javascript-DJ6Ya8pi.js +1 -0
  10. package/apps/com/eden/editor/dist/assets/jsonMode-BA0kYRDI.js +10 -0
  11. package/apps/com/eden/editor/dist/assets/less-GGFNNJHn.js +2 -0
  12. package/apps/com/eden/editor/dist/assets/markdown-B811l8j2.js +1 -0
  13. package/apps/com/eden/editor/dist/assets/shell-CsDZo4DB.js +1 -0
  14. package/apps/com/eden/editor/dist/assets/typescript-C7BsmV0J.js +1 -0
  15. package/apps/com/eden/editor/dist/assets/yaml-QL02lm_B.js +1 -0
  16. package/apps/com/eden/editor/dist/index.html +13 -0
  17. package/apps/com/eden/editor/icon.svg +22 -0
  18. package/apps/com/eden/editor/index.html +12 -0
  19. package/apps/com/eden/editor/manifest.json +58 -0
  20. package/apps/com/eden/editor/node_modules/.bin/browserslist +21 -0
  21. package/apps/com/eden/editor/node_modules/.bin/tsc +21 -0
  22. package/apps/com/eden/editor/node_modules/.bin/tsserver +21 -0
  23. package/apps/com/eden/editor/node_modules/.bin/vite +21 -0
  24. package/apps/com/eden/editor/package.json +21 -0
  25. package/apps/com/eden/editor/src/App.tsx +212 -0
  26. package/apps/com/eden/editor/src/components/ErrorBanner.tsx +13 -0
  27. package/apps/com/eden/editor/src/components/LazyMonacoEditor.tsx +154 -0
  28. package/apps/com/eden/editor/src/components/TabBar.tsx +36 -0
  29. package/apps/com/eden/editor/src/components/Toolbar.tsx +39 -0
  30. package/apps/com/eden/editor/src/components/WelcomeScreen.tsx +49 -0
  31. package/apps/com/eden/editor/src/components/index.ts +11 -0
  32. package/apps/com/eden/editor/src/index.tsx +10 -0
  33. package/apps/com/eden/editor/src/styles.css +319 -0
  34. package/apps/com/eden/editor/src/types.ts +69 -0
  35. package/apps/com/eden/editor/tsconfig.json +24 -0
  36. package/apps/com/eden/editor/vite.config.mts +67 -0
  37. package/apps/com/eden/eveshell/assets/apps-grid-icon.svg +17 -0
  38. package/apps/com/eden/eveshell/assets/default-icon.svg +17 -0
  39. package/apps/com/eden/eveshell/dist/assets/index-BS2yCXxK.css +1 -0
  40. package/apps/com/eden/eveshell/dist/assets/index-De0NEh_d.js +1 -0
  41. package/apps/com/eden/eveshell/dist/index.html +13 -0
  42. package/apps/com/eden/eveshell/index.html +12 -0
  43. package/apps/com/eden/eveshell/manifest.json +28 -0
  44. package/apps/com/eden/eveshell/node_modules/.bin/tsc +21 -0
  45. package/apps/com/eden/eveshell/node_modules/.bin/tsserver +21 -0
  46. package/apps/com/eden/eveshell/node_modules/.bin/vite +21 -0
  47. package/apps/com/eden/eveshell/package.json +20 -0
  48. package/apps/com/eden/eveshell/src/components/AllApps.tsx +228 -0
  49. package/apps/com/eden/eveshell/src/components/AppContextMenu.tsx +125 -0
  50. package/apps/com/eden/eveshell/src/components/AppIcon.tsx +40 -0
  51. package/apps/com/eden/eveshell/src/components/Clock.tsx +35 -0
  52. package/apps/com/eden/eveshell/src/components/Dock.tsx +147 -0
  53. package/apps/com/eden/eveshell/src/components/ShellOverlay.tsx +343 -0
  54. package/apps/com/eden/eveshell/src/icon-cache.ts +38 -0
  55. package/apps/com/eden/eveshell/src/index.tsx +11 -0
  56. package/apps/com/eden/eveshell/src/styles.css +409 -0
  57. package/apps/com/eden/eveshell/src/types.ts +5 -0
  58. package/apps/com/eden/eveshell/tsconfig.json +37 -0
  59. package/apps/com/eden/eveshell/vite.config.mts +23 -0
  60. package/apps/com/eden/example/appbus/client-a/app.js +239 -0
  61. package/apps/com/eden/example/appbus/client-a/index.html +48 -0
  62. package/apps/com/eden/example/appbus/client-a/manifest.json +27 -0
  63. package/apps/com/eden/example/appbus/client-a/styles.css +52 -0
  64. package/apps/com/eden/example/appbus/client-b/app.js +130 -0
  65. package/apps/com/eden/example/appbus/client-b/index.html +35 -0
  66. package/apps/com/eden/example/appbus/client-b/manifest.json +27 -0
  67. package/apps/com/eden/example/appbus/client-b/styles.css +48 -0
  68. package/apps/com/eden/example/appbus/hub/README.md +18 -0
  69. package/apps/com/eden/example/appbus/hub/backend.js +121 -0
  70. package/apps/com/eden/example/appbus/hub/manifest.json +17 -0
  71. package/apps/com/eden/example/appbus/isolated/app.js +107 -0
  72. package/apps/com/eden/example/appbus/isolated/index.html +35 -0
  73. package/apps/com/eden/example/appbus/isolated/manifest.json +27 -0
  74. package/apps/com/eden/example/appbus/isolated/styles.css +52 -0
  75. package/apps/com/eden/example/calculator/.dev-manifest.json +5 -0
  76. package/apps/com/eden/example/calculator/app.js +95 -0
  77. package/apps/com/eden/example/calculator/icon.svg +19 -0
  78. package/apps/com/eden/example/calculator/index.html +39 -0
  79. package/apps/com/eden/example/calculator/manifest.json +30 -0
  80. package/apps/com/eden/example/calculator/styles.css +83 -0
  81. package/apps/com/eden/example/hello/README.md +3 -0
  82. package/apps/com/eden/example/hello/backend/dist/backend.js +47 -0
  83. package/apps/com/eden/example/hello/backend/node_modules/.bin/tsc +21 -0
  84. package/apps/com/eden/example/hello/backend/node_modules/.bin/tsserver +21 -0
  85. package/apps/com/eden/example/hello/backend/package.json +13 -0
  86. package/apps/com/eden/example/hello/backend/src/backend.ts +58 -0
  87. package/apps/com/eden/example/hello/backend/tsconfig.json +19 -0
  88. package/apps/com/eden/example/hello/frontend/dist/assets/index-D2WAwW3g.css +1 -0
  89. package/apps/com/eden/example/hello/frontend/dist/assets/index-D4bTq3-Q.js +1 -0
  90. package/apps/com/eden/example/hello/frontend/dist/index.html +59 -0
  91. package/apps/com/eden/example/hello/frontend/index.html +59 -0
  92. package/apps/com/eden/example/hello/frontend/node_modules/.bin/tsc +21 -0
  93. package/apps/com/eden/example/hello/frontend/node_modules/.bin/tsserver +21 -0
  94. package/apps/com/eden/example/hello/frontend/node_modules/.bin/vite +21 -0
  95. package/apps/com/eden/example/hello/frontend/package.json +15 -0
  96. package/apps/com/eden/example/hello/frontend/src/App.ts +191 -0
  97. package/apps/com/eden/example/hello/frontend/styles.css +96 -0
  98. package/apps/com/eden/example/hello/frontend/tsconfig.json +16 -0
  99. package/apps/com/eden/example/hello/frontend/vite.config.mts +21 -0
  100. package/apps/com/eden/example/hello/manifest.json +34 -0
  101. package/apps/com/eden/example/hello/shared/protocol.d.ts +38 -0
  102. package/apps/com/eden/example/showcase/app.js +186 -0
  103. package/apps/com/eden/example/showcase/index.html +637 -0
  104. package/apps/com/eden/example/showcase/manifest.json +24 -0
  105. package/apps/com/eden/example/showcase/styles.css +195 -0
  106. package/apps/com/eden/files/.dev-manifest.json +5 -0
  107. package/apps/com/eden/files/dist/assets/index-BOw4ESi3.js +1 -0
  108. package/apps/com/eden/files/dist/assets/index-BPH5FvSW.css +1 -0
  109. package/apps/com/eden/files/dist/index.html +13 -0
  110. package/apps/com/eden/files/icon.svg +15 -0
  111. package/apps/com/eden/files/index.html +12 -0
  112. package/apps/com/eden/files/manifest.json +28 -0
  113. package/apps/com/eden/files/node_modules/.bin/tsc +21 -0
  114. package/apps/com/eden/files/node_modules/.bin/tsserver +21 -0
  115. package/apps/com/eden/files/node_modules/.bin/vite +21 -0
  116. package/apps/com/eden/files/node_modules/.vite/deps/_metadata.json +46 -0
  117. package/apps/com/eden/files/node_modules/.vite/deps/chunk-5W77UGHT.js +1253 -0
  118. package/apps/com/eden/files/node_modules/.vite/deps/chunk-5W77UGHT.js.map +7 -0
  119. package/apps/com/eden/files/node_modules/.vite/deps/chunk-K4SCX2FD.js +1809 -0
  120. package/apps/com/eden/files/node_modules/.vite/deps/chunk-K4SCX2FD.js.map +7 -0
  121. package/apps/com/eden/files/node_modules/.vite/deps/package.json +3 -0
  122. package/apps/com/eden/files/node_modules/.vite/deps/solid-js.js +112 -0
  123. package/apps/com/eden/files/node_modules/.vite/deps/solid-js.js.map +7 -0
  124. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_h.js +122 -0
  125. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_h.js.map +7 -0
  126. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_html.js +606 -0
  127. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_html.js.map +7 -0
  128. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_store.js +455 -0
  129. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_store.js.map +7 -0
  130. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_web.js +147 -0
  131. package/apps/com/eden/files/node_modules/.vite/deps/solid-js_web.js.map +7 -0
  132. package/apps/com/eden/files/package-lock.json +1754 -0
  133. package/apps/com/eden/files/package.json +20 -0
  134. package/apps/com/eden/files/src/App.tsx +387 -0
  135. package/apps/com/eden/files/src/components/FileExplorerHeader.tsx +90 -0
  136. package/apps/com/eden/files/src/components/FileItem.tsx +70 -0
  137. package/apps/com/eden/files/src/components/FileList.tsx +77 -0
  138. package/apps/com/eden/files/src/components/Modal.tsx +48 -0
  139. package/apps/com/eden/files/src/components/Omnibox.tsx +241 -0
  140. package/apps/com/eden/files/src/dialogs/CreateFileDialog.tsx +71 -0
  141. package/apps/com/eden/files/src/dialogs/CreateFolderDialog.tsx +68 -0
  142. package/apps/com/eden/files/src/dialogs/DeleteConfirmDialog.tsx +35 -0
  143. package/apps/com/eden/files/src/dialogs/DisplayOptionsModal.tsx +122 -0
  144. package/apps/com/eden/files/src/dialogs/ErrorDialog.tsx +28 -0
  145. package/apps/com/eden/files/src/index.tsx +9 -0
  146. package/apps/com/eden/files/src/styles.css +595 -0
  147. package/apps/com/eden/files/src/types.ts +20 -0
  148. package/apps/com/eden/files/src/utils.ts +44 -0
  149. package/apps/com/eden/files/tsconfig.json +27 -0
  150. package/apps/com/eden/files/vite.config.mts +23 -0
  151. package/apps/com/eden/settings/dist/assets/index-CTkJneTg.js +1 -0
  152. package/apps/com/eden/settings/dist/assets/index-GIMJANTM.css +1 -0
  153. package/apps/com/eden/settings/dist/index.html +13 -0
  154. package/apps/com/eden/settings/icon.svg +15 -0
  155. package/apps/com/eden/settings/index.html +12 -0
  156. package/apps/com/eden/settings/manifest.json +28 -0
  157. package/apps/com/eden/settings/node_modules/.bin/tsc +21 -0
  158. package/apps/com/eden/settings/node_modules/.bin/tsserver +21 -0
  159. package/apps/com/eden/settings/node_modules/.bin/vite +21 -0
  160. package/apps/com/eden/settings/package.json +21 -0
  161. package/apps/com/eden/settings/src/App.css +168 -0
  162. package/apps/com/eden/settings/src/App.tsx +301 -0
  163. package/apps/com/eden/settings/src/components/SettingInput.tsx +131 -0
  164. package/apps/com/eden/settings/src/index.tsx +9 -0
  165. package/apps/com/eden/settings/tsconfig.json +21 -0
  166. package/apps/com/eden/settings/vite.config.mts +22 -0
  167. package/apps/com/eden/toaster/README.md +89 -0
  168. package/apps/com/eden/toaster/dist/assets/index-8JMcmBCJ.css +1 -0
  169. package/apps/com/eden/toaster/dist/assets/index-C4cVyh7j.js +16 -0
  170. package/apps/com/eden/toaster/dist/index.html +16 -0
  171. package/apps/com/eden/toaster/index.html +16 -0
  172. package/apps/com/eden/toaster/manifest.json +28 -0
  173. package/apps/com/eden/toaster/node_modules/.bin/vite +21 -0
  174. package/apps/com/eden/toaster/package.json +15 -0
  175. package/apps/com/eden/toaster/src/styles.css +159 -0
  176. package/apps/com/eden/toaster/src/toaster.ts +470 -0
  177. package/apps/com/eden/toaster/tsconfig.json +28 -0
  178. package/apps/com/eden/toaster/vite.config.mts +18 -0
  179. package/apps/com/eden/webbrowser/.dev-manifest.json +5 -0
  180. package/apps/com/eden/webbrowser/icon.svg +20 -0
  181. package/apps/com/eden/webbrowser/index.html +141 -0
  182. package/apps/com/eden/webbrowser/manifest.json +23 -0
  183. package/apps/com/eden/webbrowser/node_modules/.bin/vite +21 -0
  184. package/apps/com/eden/webbrowser/node_modules/.vite/deps/_metadata.json +8 -0
  185. package/apps/com/eden/webbrowser/node_modules/.vite/deps/package.json +3 -0
  186. package/apps/com/eden/webbrowser/package.json +13 -0
  187. package/apps/com/eden/webbrowser/vite.config.mts +11 -0
  188. package/dist/Eden.d.ts +40 -0
  189. package/dist/Eden.d.ts.map +1 -0
  190. package/dist/Eden.js +186 -0
  191. package/dist/Eden.js.map +1 -0
  192. package/dist/SystemHandler.d.ts +11 -0
  193. package/dist/SystemHandler.d.ts.map +1 -0
  194. package/dist/SystemHandler.js +53 -0
  195. package/dist/SystemHandler.js.map +1 -0
  196. package/dist/app-frame/frame-injector.js +19 -0
  197. package/dist/app-frame/frame-injector.js.map +7 -0
  198. package/dist/app-frame/frame.css +186 -0
  199. package/dist/app-runtime/app-preload.js +2 -0
  200. package/dist/app-runtime/app-preload.js.map +7 -0
  201. package/dist/app-runtime/backend-preload.js +2 -0
  202. package/dist/app-runtime/backend-preload.js.map +7 -0
  203. package/dist/appbus/AppChannelHandler.d.ts +65 -0
  204. package/dist/appbus/AppChannelHandler.d.ts.map +1 -0
  205. package/dist/appbus/AppChannelHandler.js +120 -0
  206. package/dist/appbus/AppChannelHandler.js.map +1 -0
  207. package/dist/appbus/AppChannelManager.d.ts +80 -0
  208. package/dist/appbus/AppChannelManager.d.ts.map +1 -0
  209. package/dist/appbus/AppChannelManager.js +312 -0
  210. package/dist/appbus/AppChannelManager.js.map +1 -0
  211. package/dist/appbus/index.d.ts +2 -0
  212. package/dist/appbus/index.d.ts.map +1 -0
  213. package/dist/appbus/index.js +18 -0
  214. package/dist/appbus/index.js.map +1 -0
  215. package/dist/db/DbHandler.d.ts +119 -0
  216. package/dist/db/DbHandler.d.ts.map +1 -0
  217. package/dist/db/DbHandler.js +204 -0
  218. package/dist/db/DbHandler.js.map +1 -0
  219. package/dist/db/DbManager.d.ts +49 -0
  220. package/dist/db/DbManager.d.ts.map +1 -0
  221. package/dist/db/DbManager.js +172 -0
  222. package/dist/db/DbManager.js.map +1 -0
  223. package/dist/db/index.d.ts +3 -0
  224. package/dist/db/index.d.ts.map +1 -0
  225. package/dist/db/index.js +8 -0
  226. package/dist/db/index.js.map +1 -0
  227. package/dist/edencss/eden-tokens.css +1 -0
  228. package/dist/edencss/eden.css +1 -0
  229. package/dist/file-open/FileOpenHandler.d.ts +59 -0
  230. package/dist/file-open/FileOpenHandler.d.ts.map +1 -0
  231. package/dist/file-open/FileOpenHandler.js +122 -0
  232. package/dist/file-open/FileOpenHandler.js.map +1 -0
  233. package/dist/file-open/FileOpenManager.d.ts +91 -0
  234. package/dist/file-open/FileOpenManager.d.ts.map +1 -0
  235. package/dist/file-open/FileOpenManager.js +411 -0
  236. package/dist/file-open/FileOpenManager.js.map +1 -0
  237. package/dist/file-open/index.d.ts +3 -0
  238. package/dist/file-open/index.d.ts.map +1 -0
  239. package/dist/file-open/index.js +8 -0
  240. package/dist/file-open/index.js.map +1 -0
  241. package/dist/filesystem/FilesystemHandler.d.ts +65 -0
  242. package/dist/filesystem/FilesystemHandler.d.ts.map +1 -0
  243. package/dist/filesystem/FilesystemHandler.js +134 -0
  244. package/dist/filesystem/FilesystemHandler.js.map +1 -0
  245. package/dist/filesystem/FilesystemManager.d.ts +70 -0
  246. package/dist/filesystem/FilesystemManager.d.ts.map +1 -0
  247. package/dist/filesystem/FilesystemManager.js +236 -0
  248. package/dist/filesystem/FilesystemManager.js.map +1 -0
  249. package/dist/filesystem/index.d.ts +3 -0
  250. package/dist/filesystem/index.d.ts.map +1 -0
  251. package/dist/filesystem/index.js +8 -0
  252. package/dist/filesystem/index.js.map +1 -0
  253. package/dist/foundation/foundation-preload.js +15 -0
  254. package/dist/foundation/foundation.css +40 -0
  255. package/dist/foundation/foundation.html +22 -0
  256. package/dist/foundation/foundation.js +69 -0
  257. package/dist/hotreload-config.d.ts +8 -0
  258. package/dist/hotreload-config.d.ts.map +1 -0
  259. package/dist/hotreload-config.js +73 -0
  260. package/dist/hotreload-config.js.map +1 -0
  261. package/dist/index.d.ts +7 -0
  262. package/dist/index.d.ts.map +1 -0
  263. package/dist/index.js +20 -0
  264. package/dist/index.js.map +1 -0
  265. package/dist/ipc/CommandDecorators.d.ts +72 -0
  266. package/dist/ipc/CommandDecorators.d.ts.map +1 -0
  267. package/dist/ipc/CommandDecorators.js +49 -0
  268. package/dist/ipc/CommandDecorators.js.map +1 -0
  269. package/dist/ipc/CommandRegistry.d.ts +77 -0
  270. package/dist/ipc/CommandRegistry.d.ts.map +1 -0
  271. package/dist/ipc/CommandRegistry.js +175 -0
  272. package/dist/ipc/CommandRegistry.js.map +1 -0
  273. package/dist/ipc/EdenEmitter.d.ts +54 -0
  274. package/dist/ipc/EdenEmitter.d.ts.map +1 -0
  275. package/dist/ipc/EdenEmitter.js +81 -0
  276. package/dist/ipc/EdenEmitter.js.map +1 -0
  277. package/dist/ipc/EventHandler.d.ts +21 -0
  278. package/dist/ipc/EventHandler.d.ts.map +1 -0
  279. package/dist/ipc/EventHandler.js +87 -0
  280. package/dist/ipc/EventHandler.js.map +1 -0
  281. package/dist/ipc/EventSubscriberManager.d.ts +67 -0
  282. package/dist/ipc/EventSubscriberManager.d.ts.map +1 -0
  283. package/dist/ipc/EventSubscriberManager.js +204 -0
  284. package/dist/ipc/EventSubscriberManager.js.map +1 -0
  285. package/dist/ipc/IPCBridge.d.ts +60 -0
  286. package/dist/ipc/IPCBridge.d.ts.map +1 -0
  287. package/dist/ipc/IPCBridge.js +186 -0
  288. package/dist/ipc/IPCBridge.js.map +1 -0
  289. package/dist/ipc/PermissionRegistry.d.ts +52 -0
  290. package/dist/ipc/PermissionRegistry.d.ts.map +1 -0
  291. package/dist/ipc/PermissionRegistry.js +120 -0
  292. package/dist/ipc/PermissionRegistry.js.map +1 -0
  293. package/dist/ipc/index.d.ts +7 -0
  294. package/dist/ipc/index.d.ts.map +1 -0
  295. package/dist/ipc/index.js +23 -0
  296. package/dist/ipc/index.js.map +1 -0
  297. package/dist/main.d.ts +2 -0
  298. package/dist/main.d.ts.map +1 -0
  299. package/dist/main.js +15 -0
  300. package/dist/main.js.map +1 -0
  301. package/dist/notification/NotificationHandler.d.ts +16 -0
  302. package/dist/notification/NotificationHandler.d.ts.map +1 -0
  303. package/dist/notification/NotificationHandler.js +39 -0
  304. package/dist/notification/NotificationHandler.js.map +1 -0
  305. package/dist/notification/NotificationManager.d.ts +32 -0
  306. package/dist/notification/NotificationManager.d.ts.map +1 -0
  307. package/dist/notification/NotificationManager.js +66 -0
  308. package/dist/notification/NotificationManager.js.map +1 -0
  309. package/dist/notification/index.d.ts +3 -0
  310. package/dist/notification/index.d.ts.map +1 -0
  311. package/dist/notification/index.js +19 -0
  312. package/dist/notification/index.js.map +1 -0
  313. package/dist/package-manager/PackageHandler.d.ts +50 -0
  314. package/dist/package-manager/PackageHandler.d.ts.map +1 -0
  315. package/dist/package-manager/PackageHandler.js +107 -0
  316. package/dist/package-manager/PackageHandler.js.map +1 -0
  317. package/dist/package-manager/PackageManager.d.ts +73 -0
  318. package/dist/package-manager/PackageManager.d.ts.map +1 -0
  319. package/dist/package-manager/PackageManager.js +373 -0
  320. package/dist/package-manager/PackageManager.js.map +1 -0
  321. package/dist/package-manager/index.d.ts +3 -0
  322. package/dist/package-manager/index.d.ts.map +1 -0
  323. package/dist/package-manager/index.js +8 -0
  324. package/dist/package-manager/index.js.map +1 -0
  325. package/dist/process-manager/AutostartManager.d.ts +15 -0
  326. package/dist/process-manager/AutostartManager.d.ts.map +1 -0
  327. package/dist/process-manager/AutostartManager.js +56 -0
  328. package/dist/process-manager/AutostartManager.js.map +1 -0
  329. package/dist/process-manager/BackendManager.d.ts +63 -0
  330. package/dist/process-manager/BackendManager.d.ts.map +1 -0
  331. package/dist/process-manager/BackendManager.js +272 -0
  332. package/dist/process-manager/BackendManager.js.map +1 -0
  333. package/dist/process-manager/ProcessHandler.d.ts +29 -0
  334. package/dist/process-manager/ProcessHandler.d.ts.map +1 -0
  335. package/dist/process-manager/ProcessHandler.js +66 -0
  336. package/dist/process-manager/ProcessHandler.js.map +1 -0
  337. package/dist/process-manager/ProcessManager.d.ts +94 -0
  338. package/dist/process-manager/ProcessManager.d.ts.map +1 -0
  339. package/dist/process-manager/ProcessManager.js +286 -0
  340. package/dist/process-manager/ProcessManager.js.map +1 -0
  341. package/dist/process-manager/index.d.ts +5 -0
  342. package/dist/process-manager/index.d.ts.map +1 -0
  343. package/dist/process-manager/index.js +12 -0
  344. package/dist/process-manager/index.js.map +1 -0
  345. package/dist/settings/EdenSettings.d.ts +8 -0
  346. package/dist/settings/EdenSettings.d.ts.map +1 -0
  347. package/dist/settings/EdenSettings.js +148 -0
  348. package/dist/settings/EdenSettings.js.map +1 -0
  349. package/dist/settings/SettingsHandler.d.ts +117 -0
  350. package/dist/settings/SettingsHandler.d.ts.map +1 -0
  351. package/dist/settings/SettingsHandler.js +199 -0
  352. package/dist/settings/SettingsHandler.js.map +1 -0
  353. package/dist/settings/SettingsManager.d.ts +64 -0
  354. package/dist/settings/SettingsManager.d.ts.map +1 -0
  355. package/dist/settings/SettingsManager.js +221 -0
  356. package/dist/settings/SettingsManager.js.map +1 -0
  357. package/dist/settings/index.d.ts +4 -0
  358. package/dist/settings/index.d.ts.map +1 -0
  359. package/dist/settings/index.js +11 -0
  360. package/dist/settings/index.js.map +1 -0
  361. package/dist/utils/cachedFileReader.d.ts +46 -0
  362. package/dist/utils/cachedFileReader.d.ts.map +1 -0
  363. package/dist/utils/cachedFileReader.js +100 -0
  364. package/dist/utils/cachedFileReader.js.map +1 -0
  365. package/dist/view-manager/DevToolsManager.d.ts +29 -0
  366. package/dist/view-manager/DevToolsManager.d.ts.map +1 -0
  367. package/dist/view-manager/DevToolsManager.js +88 -0
  368. package/dist/view-manager/DevToolsManager.js.map +1 -0
  369. package/dist/view-manager/FloatingWindowController.d.ts +44 -0
  370. package/dist/view-manager/FloatingWindowController.d.ts.map +1 -0
  371. package/dist/view-manager/FloatingWindowController.js +124 -0
  372. package/dist/view-manager/FloatingWindowController.js.map +1 -0
  373. package/dist/view-manager/LayoutCalculator.d.ts +49 -0
  374. package/dist/view-manager/LayoutCalculator.d.ts.map +1 -0
  375. package/dist/view-manager/LayoutCalculator.js +94 -0
  376. package/dist/view-manager/LayoutCalculator.js.map +1 -0
  377. package/dist/view-manager/MouseTracker.d.ts +65 -0
  378. package/dist/view-manager/MouseTracker.d.ts.map +1 -0
  379. package/dist/view-manager/MouseTracker.js +114 -0
  380. package/dist/view-manager/MouseTracker.js.map +1 -0
  381. package/dist/view-manager/TilingManager.d.ts +61 -0
  382. package/dist/view-manager/TilingManager.d.ts.map +1 -0
  383. package/dist/view-manager/TilingManager.js +142 -0
  384. package/dist/view-manager/TilingManager.js.map +1 -0
  385. package/dist/view-manager/ViewCreator.d.ts +72 -0
  386. package/dist/view-manager/ViewCreator.d.ts.map +1 -0
  387. package/dist/view-manager/ViewCreator.js +277 -0
  388. package/dist/view-manager/ViewCreator.js.map +1 -0
  389. package/dist/view-manager/ViewHandler.d.ts +112 -0
  390. package/dist/view-manager/ViewHandler.d.ts.map +1 -0
  391. package/dist/view-manager/ViewHandler.js +307 -0
  392. package/dist/view-manager/ViewHandler.js.map +1 -0
  393. package/dist/view-manager/ViewLifecycle.d.ts +66 -0
  394. package/dist/view-manager/ViewLifecycle.d.ts.map +1 -0
  395. package/dist/view-manager/ViewLifecycle.js +142 -0
  396. package/dist/view-manager/ViewLifecycle.js.map +1 -0
  397. package/dist/view-manager/ViewManager.d.ts +112 -0
  398. package/dist/view-manager/ViewManager.d.ts.map +1 -0
  399. package/dist/view-manager/ViewManager.js +422 -0
  400. package/dist/view-manager/ViewManager.js.map +1 -0
  401. package/dist/view-manager/index.d.ts +11 -0
  402. package/dist/view-manager/index.d.ts.map +1 -0
  403. package/dist/view-manager/index.js +23 -0
  404. package/dist/view-manager/index.js.map +1 -0
  405. package/dist/view-manager/types.d.ts +24 -0
  406. package/dist/view-manager/types.d.ts.map +1 -0
  407. package/dist/view-manager/types.js +11 -0
  408. package/dist/view-manager/types.js.map +1 -0
  409. package/edencss/README.md +214 -0
  410. package/edencss/components/badges.css +180 -0
  411. package/edencss/components/buttons.css +221 -0
  412. package/edencss/components/cards.css +201 -0
  413. package/edencss/components/inputs.css +424 -0
  414. package/edencss/components/lists.css +242 -0
  415. package/edencss/components/modals.css +207 -0
  416. package/edencss/components/progress.css +186 -0
  417. package/edencss/components/sidebar.css +232 -0
  418. package/edencss/components/tabs.css +189 -0
  419. package/edencss/eden.css +16 -0
  420. package/edencss/index.ts +11 -0
  421. package/edencss/style-dictionary.config.mjs +75 -0
  422. package/edencss/tokens-pink.json +163 -0
  423. package/edencss/tokens.css +121 -0
  424. package/edencss/tokens.d.ts +111 -0
  425. package/edencss/tokens.json +369 -0
  426. package/edencss/tokens.ts +125 -0
  427. package/edencss/utilities.css +423 -0
  428. package/foundation/foundation-preload.js +15 -0
  429. package/foundation/foundation.css +40 -0
  430. package/foundation/foundation.html +22 -0
  431. package/foundation/foundation.js +69 -0
  432. package/package.json +55 -0
@@ -0,0 +1,28 @@
1
+ {
2
+ "id": "com.eden.eveshell",
3
+ "name": "Shell for Eden",
4
+ "version": "1.0.0",
5
+ "overlay": true,
6
+ "permissions": ["db/rw"],
7
+ "build": {
8
+ "command": "npm run build"
9
+ },
10
+ "frontend": {
11
+ "entry": "dist/index.html"
12
+ },
13
+ "window": {
14
+ "mode": "floating",
15
+ "defaultSize": {
16
+ "width": 1200,
17
+ "height": 72
18
+ },
19
+ "defaultPosition": {
20
+ "x": 40,
21
+ "y": 700
22
+ },
23
+ "injections": {
24
+ "css": "full",
25
+ "appFrame": false
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules/typescript/bin/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules/typescript/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules/typescript/bin/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules/typescript/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../typescript/bin/tsc" "$@"
19
+ else
20
+ exec node "$basedir/../typescript/bin/tsc" "$@"
21
+ fi
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules/typescript/bin/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules/typescript/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules/typescript/bin/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules/typescript/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/typescript@5.6.3/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../typescript/bin/tsserver" "$@"
19
+ else
20
+ exec node "$basedir/../typescript/bin/tsserver" "$@"
21
+ fi
@@ -0,0 +1,21 @@
1
+ #!/bin/sh
2
+ basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
3
+
4
+ case `uname` in
5
+ *CYGWIN*|*MINGW*|*MSYS*)
6
+ if command -v cygpath > /dev/null 2>&1; then
7
+ basedir=`cygpath -w "$basedir"`
8
+ fi
9
+ ;;
10
+ esac
11
+
12
+ if [ -z "$NODE_PATH" ]; then
13
+ export NODE_PATH="/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@7.2.6_@types+node@22.19.1/node_modules/vite/bin/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@7.2.6_@types+node@22.19.1/node_modules/vite/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@7.2.6_@types+node@22.19.1/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/node_modules"
14
+ else
15
+ export NODE_PATH="/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@7.2.6_@types+node@22.19.1/node_modules/vite/bin/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@7.2.6_@types+node@22.19.1/node_modules/vite/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/vite@7.2.6_@types+node@22.19.1/node_modules:/home/dariusz/Desktop/eden/node_modules/.pnpm/node_modules:$NODE_PATH"
16
+ fi
17
+ if [ -x "$basedir/node" ]; then
18
+ exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
19
+ else
20
+ exec node "$basedir/../vite/bin/vite.js" "$@"
21
+ fi
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "com.eden.eveshell",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "scripts": {
6
+ "dev": "vite",
7
+ "build": "vite build",
8
+ "preview": "vite preview"
9
+ },
10
+ "devDependencies": {
11
+ "@edenapp/types": "workspace:*",
12
+ "solid-js": "^1.9.10",
13
+ "typescript": "^5.3.0",
14
+ "vite": "^7.2.4",
15
+ "vite-plugin-solid": "^2.11.10"
16
+ },
17
+ "dependencies": {
18
+ "solid-icons": "^1.1.0"
19
+ }
20
+ }
@@ -0,0 +1,228 @@
1
+ import { For, Show, createSignal, onCleanup, onMount } from "solid-js";
2
+ import AppIcon from "./AppIcon";
3
+ import AppContextMenu, { ContextMenuData } from "./AppContextMenu";
4
+ import { AppInfo } from "../types";
5
+
6
+ interface AllAppsProps {
7
+ apps: AppInfo[];
8
+ onClose: () => void;
9
+ onAppClick: (appId: string) => Promise<void> | void;
10
+ onStopApp: (appId: string) => Promise<void> | void;
11
+ onUninstallApp: (appId: string) => Promise<void> | void;
12
+ isAppPinned: (appId: string) => boolean;
13
+ onAddToDock: (appId: string) => Promise<void> | void;
14
+ onRemoveFromDock: (appId: string) => Promise<void> | void;
15
+ }
16
+
17
+ export default function AllApps(props: AllAppsProps) {
18
+ const [searchQuery, setSearchQuery] = createSignal("");
19
+ const [contextMenu, setContextMenu] = createSignal<ContextMenuData | null>(null);
20
+ const [longPressTimer, setLongPressTimer] = createSignal<number | null>(null);
21
+ const [isClosing, setIsClosing] = createSignal(false);
22
+ const EXIT_ANIMATION_MS = 280;
23
+ let exitTimer: number | undefined;
24
+ let searchInputRef: HTMLInputElement | undefined;
25
+
26
+ const filteredApps = () => {
27
+ const query = searchQuery().toLowerCase().trim();
28
+ if (!query) return props.apps;
29
+ return props.apps.filter(
30
+ (app) =>
31
+ app.name.toLowerCase().includes(query) ||
32
+ app.id.toLowerCase().includes(query)
33
+ );
34
+ };
35
+
36
+ onMount(() => {
37
+ searchInputRef?.focus();
38
+ });
39
+
40
+ onCleanup(() => {
41
+ const timer = longPressTimer();
42
+ if (timer) clearTimeout(timer);
43
+ if (exitTimer) clearTimeout(exitTimer);
44
+ });
45
+
46
+ function clearLongPressTimer() {
47
+ const timer = longPressTimer();
48
+ if (timer) {
49
+ clearTimeout(timer);
50
+ setLongPressTimer(null);
51
+ }
52
+ }
53
+
54
+ function triggerClose() {
55
+ if (isClosing()) return;
56
+ setContextMenu(null);
57
+ setIsClosing(true);
58
+ exitTimer = window.setTimeout(() => {
59
+ props.onClose();
60
+ exitTimer = undefined;
61
+ }, EXIT_ANIMATION_MS);
62
+ }
63
+
64
+ function handleOverlayClick() {
65
+ if (isClosing()) return;
66
+ triggerClose();
67
+ }
68
+
69
+ async function handleTileClick(appId: string) {
70
+ if (!isClosing()) triggerClose();
71
+
72
+ // Show all running apps when clicking a tile
73
+ const runningAppIds = props.apps
74
+ .filter((app) => app.isRunning)
75
+ .map((app) => app.id);
76
+ for (const runningAppId of runningAppIds) {
77
+ try {
78
+ await window.edenAPI.shellCommand("view/set-view-visibility", {
79
+ appId: runningAppId,
80
+ visible: true,
81
+ });
82
+ } catch (error) {
83
+ console.error(`Failed to set visibility for ${runningAppId}:`, error);
84
+ }
85
+ }
86
+
87
+ await props.onAppClick(appId);
88
+ }
89
+
90
+ function handleContextMenu(
91
+ e: MouseEvent,
92
+ appId: string,
93
+ appName: string,
94
+ isRunning: boolean
95
+ ) {
96
+ if (isClosing()) return;
97
+ e.preventDefault();
98
+ e.stopPropagation();
99
+ setContextMenu({ appId, appName, isRunning, left: e.clientX, top: e.clientY });
100
+ }
101
+
102
+ function handleLongPressStart(
103
+ e: TouchEvent | MouseEvent,
104
+ appId: string,
105
+ appName: string,
106
+ isRunning: boolean
107
+ ) {
108
+ if (isClosing()) return;
109
+ const timer = window.setTimeout(() => {
110
+ const clientX =
111
+ "touches" in e ? e.touches[0].clientX : (e as MouseEvent).clientX;
112
+ const clientY =
113
+ "touches" in e ? e.touches[0].clientY : (e as MouseEvent).clientY;
114
+ setContextMenu({ appId, appName, isRunning, left: clientX, top: clientY });
115
+ }, 500);
116
+ setLongPressTimer(timer);
117
+ }
118
+
119
+ function handleLongPressEnd() {
120
+ clearLongPressTimer();
121
+ }
122
+
123
+ function handleKeyDown(e: KeyboardEvent) {
124
+ if (e.key === "Escape") triggerClose();
125
+ }
126
+
127
+ return (
128
+ <>
129
+ {/* Main overlay - uses eden-modal-overlay but without blur */}
130
+ <div
131
+ class="eden-modal-overlay"
132
+ classList={{ closing: isClosing() }}
133
+ style="background: rgba(0,0,0,0.4); backdrop-filter: none;"
134
+ onClick={handleOverlayClick}
135
+ onKeyDown={handleKeyDown}
136
+ >
137
+ {/* Floating island - uses eden-modal as base */}
138
+ <div
139
+ class="eden-modal eden-modal-lg"
140
+ classList={{ closing: isClosing() }}
141
+ style="max-height: 70vh; background: var(--eden-color-surface-primary);"
142
+ onClick={(e) => e.stopPropagation()}
143
+ >
144
+ {/* Header with search */}
145
+ <div class="eden-modal-header">
146
+ <div class="eden-flex eden-gap-sm" style="flex: 1;">
147
+ <input
148
+ ref={searchInputRef}
149
+ type="text"
150
+ class="eden-input"
151
+ placeholder="Search apps..."
152
+ value={searchQuery()}
153
+ onInput={(e) => setSearchQuery(e.currentTarget.value)}
154
+ />
155
+ </div>
156
+ </div>
157
+
158
+ {/* App grid - uses eden-modal-body for scrolling */}
159
+ <div class="eden-modal-body eden-scrollbar">
160
+ <div class="eden-card-grid" style="gap: var(--eden-space-lg);">
161
+ <For each={filteredApps()}>
162
+ {(app) => (
163
+ <div
164
+ class="all-apps-tile eden-interactive"
165
+ classList={{ running: app.isRunning }}
166
+ onClick={async () => {
167
+ if (contextMenu() || isClosing()) return;
168
+ await handleTileClick(app.id);
169
+ }}
170
+ onContextMenu={(e) =>
171
+ handleContextMenu(e, app.id, app.name, app.isRunning)
172
+ }
173
+ onMouseDown={(e) => {
174
+ if (e.button === 0) {
175
+ handleLongPressStart(
176
+ e,
177
+ app.id,
178
+ app.name,
179
+ app.isRunning
180
+ );
181
+ }
182
+ }}
183
+ onMouseUp={handleLongPressEnd}
184
+ onMouseLeave={handleLongPressEnd}
185
+ onTouchStart={(e) =>
186
+ handleLongPressStart(e, app.id, app.name, app.isRunning)
187
+ }
188
+ onTouchEnd={handleLongPressEnd}
189
+ onTouchCancel={handleLongPressEnd}
190
+ >
191
+ <AppIcon
192
+ appId={app.id}
193
+ appName={app.name}
194
+ isRunning={app.isRunning}
195
+ />
196
+ </div>
197
+ )}
198
+ </For>
199
+ <Show when={filteredApps().length === 0}>
200
+ <div
201
+ class="eden-text-tertiary eden-text-md"
202
+ style="grid-column: 1 / -1; text-align: center; padding: var(--eden-space-2xl);"
203
+ >
204
+ No apps found
205
+ </div>
206
+ </Show>
207
+ </div>
208
+ </div>
209
+ </div>
210
+ </div>
211
+
212
+ {/* Context menu */}
213
+ <Show when={contextMenu()}>
214
+ {(menu) => (
215
+ <AppContextMenu
216
+ menu={menu()}
217
+ isAppPinned={props.isAppPinned}
218
+ onStopApp={props.onStopApp}
219
+ onAddToDock={props.onAddToDock}
220
+ onRemoveFromDock={props.onRemoveFromDock}
221
+ onUninstallApp={props.onUninstallApp}
222
+ onClose={() => setContextMenu(null)}
223
+ />
224
+ )}
225
+ </Show>
226
+ </>
227
+ );
228
+ }
@@ -0,0 +1,125 @@
1
+ import { Show, createSignal, onMount } from "solid-js";
2
+ import { FaSolidStop, FaSolidFire, FaSolidBolt, FaSolidThumbtack, FaSolidPlus, FaSolidTrash } from "solid-icons/fa";
3
+
4
+ export interface ContextMenuData {
5
+ appId: string;
6
+ appName: string;
7
+ isRunning: boolean;
8
+ left?: number;
9
+ right?: number;
10
+ top?: number;
11
+ bottom?: number;
12
+ }
13
+
14
+ interface AppContextMenuProps {
15
+ menu: ContextMenuData;
16
+ isAppPinned: (appId: string) => boolean;
17
+ onStopApp: (appId: string) => Promise<void> | void;
18
+ onAddToDock: (appId: string) => Promise<void> | void;
19
+ onRemoveFromDock: (appId: string) => Promise<void> | void;
20
+ onUninstallApp: (appId: string) => Promise<void> | void;
21
+ onClose: () => void;
22
+ }
23
+
24
+ export default function AppContextMenu(props: AppContextMenuProps) {
25
+ const [hotReloadEnabled, setHotReloadEnabled] = createSignal(false);
26
+
27
+ onMount(async () => {
28
+ // Check hot reload status for this app
29
+ try {
30
+ const result = await window.edenAPI.shellCommand(
31
+ "package/is-hot-reload-enabled",
32
+ { appId: props.menu.appId }
33
+ );
34
+ if (result.enabled) {
35
+ setHotReloadEnabled(true);
36
+ }
37
+ } catch (error) {
38
+ console.error("Failed to check hot reload status:", error);
39
+ }
40
+ });
41
+
42
+ const handleToggleHotReload = async () => {
43
+ try {
44
+ const result = await window.edenAPI.shellCommand(
45
+ "package/toggle-hot-reload",
46
+ { appId: props.menu.appId }
47
+ );
48
+ setHotReloadEnabled(result.enabled);
49
+ } catch (error) {
50
+ console.error("Failed to toggle hot reload:", error);
51
+ }
52
+ props.onClose();
53
+ };
54
+
55
+ const handleToggleDock = async () => {
56
+ if (props.isAppPinned(props.menu.appId)) {
57
+ await props.onRemoveFromDock(props.menu.appId);
58
+ } else {
59
+ await props.onAddToDock(props.menu.appId);
60
+ }
61
+ props.onClose();
62
+ };
63
+
64
+ const handleStopApp = async () => {
65
+ await props.onStopApp(props.menu.appId);
66
+ props.onClose();
67
+ };
68
+
69
+ const handleUninstall = async () => {
70
+ await props.onUninstallApp(props.menu.appId);
71
+ props.onClose();
72
+ };
73
+
74
+ return (
75
+ <>
76
+ <div
77
+ class="eden-modal-overlay context-menu-overlay"
78
+ onClick={props.onClose}
79
+ />
80
+ <div
81
+ class="eden-popover"
82
+ style={{
83
+ ...(props.menu.left !== undefined && { left: `${props.menu.left}px` }),
84
+ ...(props.menu.right !== undefined && { right: `${props.menu.right}px` }),
85
+ ...(props.menu.top !== undefined && { top: `${props.menu.top}px` }),
86
+ ...(props.menu.bottom !== undefined && { bottom: `${props.menu.bottom}px` }),
87
+ }}
88
+ >
89
+ <div class="eden-popover-title context-menu-title">
90
+ {props.menu.appName}
91
+ </div>
92
+ <Show when={props.menu.isRunning}>
93
+ <button
94
+ class="eden-btn eden-btn-ghost eden-btn-sm context-menu-btn"
95
+ onClick={handleStopApp}
96
+ >
97
+ <FaSolidStop />
98
+ Stop App
99
+ </button>
100
+ </Show>
101
+ <button
102
+ class="eden-btn eden-btn-ghost eden-btn-sm context-menu-btn"
103
+ onClick={handleToggleHotReload}
104
+ >
105
+ {hotReloadEnabled() ? <FaSolidFire /> : <FaSolidBolt />}
106
+ {hotReloadEnabled() ? "Disable" : "Enable"} Hot Reload
107
+ </button>
108
+ <button
109
+ class="eden-btn eden-btn-ghost eden-btn-sm context-menu-btn"
110
+ onClick={handleToggleDock}
111
+ >
112
+ {props.isAppPinned(props.menu.appId) ? <FaSolidThumbtack /> : <FaSolidPlus />}
113
+ {props.isAppPinned(props.menu.appId) ? "Remove from Dock" : "Add to Dock"}
114
+ </button>
115
+ <button
116
+ class="eden-btn eden-btn-ghost eden-btn-sm eden-btn-danger context-menu-btn"
117
+ onClick={handleUninstall}
118
+ >
119
+ <FaSolidTrash />
120
+ Uninstall
121
+ </button>
122
+ </div>
123
+ </>
124
+ );
125
+ }
@@ -0,0 +1,40 @@
1
+ import { Show, createResource } from "solid-js";
2
+ import { fetchAppIcon } from "../icon-cache";
3
+ import defaultIcon from "../../assets/default-icon.svg";
4
+
5
+ interface AppIconProps {
6
+ appId: string;
7
+ appName: string;
8
+ /** Optional direct icon data URL (for built-in icons that don't need fetching) */
9
+ icon?: string;
10
+ isRunning?: boolean;
11
+ onClick?: () => void;
12
+ onContextMenu?: (e: MouseEvent) => void;
13
+ }
14
+
15
+ export default function AppIcon(props: AppIconProps) {
16
+ // Only fetch if no direct icon prop was provided
17
+ const [fetchedIcon] = createResource(
18
+ () => (props.icon ? null : props.appId),
19
+ (appId) => (appId ? fetchAppIcon(appId) : Promise.resolve(undefined))
20
+ );
21
+
22
+ const iconSrc = () => props.icon || fetchedIcon() || defaultIcon;
23
+
24
+ return (
25
+ <div
26
+ class="app-icon"
27
+ onClick={props.onClick}
28
+ onContextMenu={props.onContextMenu}
29
+ title={props.appName}
30
+ >
31
+ <div class="icon-container">
32
+ <img src={iconSrc()} alt={props.appName} draggable={false} />
33
+ <Show when={props.isRunning}>
34
+ <div class="running-indicator"></div>
35
+ </Show>
36
+ </div>
37
+ <div class="app-name">{props.appName}</div>
38
+ </div>
39
+ );
40
+ }
@@ -0,0 +1,35 @@
1
+ import { createSignal, onCleanup } from "solid-js";
2
+
3
+ export default function Clock() {
4
+ const [time, setTime] = createSignal(new Date());
5
+
6
+ const interval = setInterval(() => {
7
+ setTime(new Date());
8
+ }, 1000);
9
+
10
+ onCleanup(() => clearInterval(interval));
11
+
12
+ const formatTime = () => {
13
+ const t = time();
14
+ return t.toLocaleTimeString("en-US", {
15
+ hour: "2-digit",
16
+ minute: "2-digit",
17
+ });
18
+ };
19
+
20
+ const formatDate = () => {
21
+ const t = time();
22
+ return t.toLocaleDateString("en-US", {
23
+ weekday: "short",
24
+ month: "short",
25
+ day: "numeric",
26
+ });
27
+ };
28
+
29
+ return (
30
+ <div class="clock">
31
+ <div class="time">{formatTime()}</div>
32
+ <div class="date">{formatDate()}</div>
33
+ </div>
34
+ );
35
+ }