@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,147 @@
1
+ import { For, Show, createSignal, onMount } from "solid-js";
2
+ import AppIcon from "./AppIcon";
3
+ import Clock from "./Clock";
4
+ import { AppInfo } from "../types";
5
+ import { ContextMenuData } from "./AppContextMenu";
6
+ import appsViewIcon from "../../assets/apps-grid-icon.svg";
7
+
8
+ interface DockProps {
9
+ runningApps: AppInfo[]; // Running apps that are NOT pinned
10
+ pinnedApps: AppInfo[]; // Pinned apps (may or may not be running)
11
+ onAppClick: (appId: string) => void;
12
+ onShowAllApps: () => void;
13
+ onContextMenu: (menu: ContextMenuData) => void;
14
+ }
15
+
16
+ export default function Dock(props: DockProps) {
17
+ let containerRef: HTMLDivElement | undefined;
18
+ let dockRef: HTMLDivElement | undefined;
19
+ const [isInitial, setIsInitial] = createSignal(true);
20
+
21
+ onMount(() => {
22
+ // Remove the initial class after animation completes
23
+ setTimeout(() => {
24
+ setIsInitial(false);
25
+ }, 300); // Match animation duration
26
+ });
27
+
28
+ function handleMouseMove(e: MouseEvent) {
29
+ if (!containerRef) return;
30
+ const bounds = containerRef.getBoundingClientRect();
31
+ const mouseX = e.clientX;
32
+
33
+ const sigma = 70; // cursor influence radius (px)
34
+ const maxScale = 1.25; // maximum magnification
35
+
36
+ containerRef.classList.add("magnify-active");
37
+
38
+ const icons = containerRef.querySelectorAll<HTMLDivElement>(".app-icon");
39
+ icons.forEach((icon) => {
40
+ const iconBox = icon.querySelector<HTMLDivElement>(".icon-container");
41
+ if (!iconBox) return;
42
+ const rect = icon.getBoundingClientRect();
43
+ const centerX = rect.left + rect.width / 2;
44
+ const d = Math.abs(mouseX - centerX);
45
+ const influence = Math.exp(-(d * d) / (2 * sigma * sigma)); // gaussian falloff
46
+ const scale = 1 + (maxScale - 1) * influence;
47
+ // pass influence to CSS var; lift entire tile and scale just the icon
48
+ icon.style.setProperty("--influence", influence.toFixed(3));
49
+ const lift = -8 * influence;
50
+ icon.style.transform = `translateY(${lift.toFixed(1)}px)`;
51
+ icon.style.zIndex = `${Math.round(scale * 100)}`; // larger sits above
52
+ iconBox.style.transform = `scale(${scale.toFixed(3)})`;
53
+ });
54
+ }
55
+
56
+ function handleMouseLeave() {
57
+ if (!containerRef) return;
58
+ containerRef.classList.remove("magnify-active");
59
+ const appIcons = containerRef.querySelectorAll<HTMLDivElement>(".app-icon");
60
+ appIcons.forEach((icon) => {
61
+ const iconBox = icon.querySelector<HTMLDivElement>(".icon-container");
62
+ if (iconBox) {
63
+ iconBox.style.transform = "";
64
+ }
65
+ icon.style.transform = "";
66
+ icon.style.zIndex = "";
67
+ });
68
+ }
69
+
70
+ return (
71
+ <div class="dock" classList={{ "dock-initial": isInitial() }} ref={dockRef}>
72
+ <div class="dock-left">
73
+ <div
74
+ class="app-icons magnify"
75
+ ref={containerRef}
76
+ onMouseMove={handleMouseMove}
77
+ onMouseLeave={handleMouseLeave}
78
+ >
79
+ {/* Running apps (not pinned) */}
80
+ <For each={props.runningApps}>
81
+ {(app) => (
82
+ <AppIcon
83
+ appId={app.id}
84
+ appName={app.name}
85
+ isRunning={app.isRunning}
86
+ onClick={() => props.onAppClick(app.id)}
87
+ onContextMenu={(e) => {
88
+ e.preventDefault();
89
+ props.onContextMenu({
90
+ appId: app.id,
91
+ appName: app.name,
92
+ isRunning: app.isRunning,
93
+ left: e.clientX,
94
+ bottom: 72,
95
+ });
96
+ }}
97
+ />
98
+ )}
99
+ </For>
100
+
101
+ {/* Separator between running and pinned */}
102
+ <Show when={props.runningApps.length > 0 && props.pinnedApps.length > 0}>
103
+ <div class="separator"></div>
104
+ </Show>
105
+
106
+ {/* Pinned apps */}
107
+ <For each={props.pinnedApps}>
108
+ {(app) => (
109
+ <AppIcon
110
+ appId={app.id}
111
+ appName={app.name}
112
+ isRunning={app.isRunning}
113
+ onClick={() => props.onAppClick(app.id)}
114
+ onContextMenu={(e) => {
115
+ e.preventDefault();
116
+ console.log(e.clientX, e.clientY);
117
+ props.onContextMenu({
118
+ appId: app.id,
119
+ appName: app.name,
120
+ isRunning: app.isRunning,
121
+ left: e.clientX,
122
+ bottom: 72,
123
+ });
124
+ }}
125
+ />
126
+ )}
127
+ </For>
128
+
129
+ {/* Separator before All Apps button */}
130
+ <Show when={props.runningApps.length > 0 || props.pinnedApps.length > 0}>
131
+ <div class="separator"></div>
132
+ </Show>
133
+
134
+ <AppIcon
135
+ appId="apps-view"
136
+ appName="All Apps"
137
+ icon={appsViewIcon}
138
+ onClick={props.onShowAllApps}
139
+ />
140
+ </div>
141
+ </div>
142
+ <div class="dock-right">
143
+ <Clock />
144
+ </div>
145
+ </div>
146
+ );
147
+ }
@@ -0,0 +1,343 @@
1
+ import { createSignal, onMount, onCleanup, Show } from "solid-js";
2
+ import Dock from "./Dock";
3
+ import AllApps from "./AllApps";
4
+ import AppContextMenu, { ContextMenuData } from "./AppContextMenu";
5
+ import {
6
+ ViewBounds,
7
+ WindowSize,
8
+ AppManifest,
9
+ AppInstance,
10
+ } from "@edenapp/types";
11
+ import { AppInfo } from "../types";
12
+
13
+ // Constants
14
+ const DOCK_HEIGHT = 72; // Should match --eden-layout-dock-height in pixels
15
+
16
+ // Database key for persisting pinned dock apps
17
+ const PINNED_DOCK_APPS_KEY = "pinned-dock-apps";
18
+
19
+ export default function ShellOverlay() {
20
+ const [runningApps, setRunningApps] = createSignal<AppInstance[]>([]);
21
+ const [installedApps, setInstalledApps] = createSignal<AppManifest[]>([]);
22
+ const [pinnedDockApps, setPinnedDockApps] = createSignal<string[]>([]);
23
+ const [showAllApps, setShowAllApps] = createSignal(false);
24
+ const [dockContextMenu, setDockContextMenu] = createSignal<ContextMenuData | null>(null);
25
+
26
+ // Load pinned apps from database
27
+ const loadPinnedApps = async () => {
28
+ try {
29
+ const result = await window.edenAPI.shellCommand("db/get", {
30
+ key: PINNED_DOCK_APPS_KEY,
31
+ });
32
+ if (result.value) {
33
+ const parsed = JSON.parse(result.value);
34
+ if (Array.isArray(parsed)) {
35
+ setPinnedDockApps(parsed);
36
+ }
37
+ }
38
+ } catch (error) {
39
+ console.error("Failed to load pinned dock apps:", error);
40
+ }
41
+ };
42
+
43
+ // Save pinned apps to database
44
+ const savePinnedApps = async (appIds: string[]) => {
45
+ try {
46
+ await window.edenAPI.shellCommand("db/set", {
47
+ key: PINNED_DOCK_APPS_KEY,
48
+ value: JSON.stringify(appIds),
49
+ });
50
+ } catch (error) {
51
+ console.error("Failed to save pinned dock apps:", error);
52
+ }
53
+ };
54
+
55
+ // Add an app to the dock (pin it)
56
+ const handleAddToDock = async (appId: string) => {
57
+ const current = pinnedDockApps();
58
+ if (!current.includes(appId)) {
59
+ const updated = [...current, appId];
60
+ setPinnedDockApps(updated);
61
+ await savePinnedApps(updated);
62
+ }
63
+ };
64
+
65
+ // Remove an app from the dock (unpin it)
66
+ const handleRemoveFromDock = async (appId: string) => {
67
+ const current = pinnedDockApps();
68
+ const updated = current.filter((id) => id !== appId);
69
+ setPinnedDockApps(updated);
70
+ await savePinnedApps(updated);
71
+ };
72
+
73
+ // Check if an app is pinned to the dock
74
+ const isAppPinned = (appId: string): boolean => {
75
+ return pinnedDockApps().includes(appId);
76
+ };
77
+
78
+ // Running apps that are NOT pinned (for the left section of dock)
79
+ const dockRunningApps = (): AppInfo[] => {
80
+ return runningApps()
81
+ .filter((instance) => !pinnedDockApps().includes(instance.manifest.id))
82
+ .map((instance) => ({
83
+ id: instance.manifest.id,
84
+ name: instance.manifest.name,
85
+ isRunning: true,
86
+ }));
87
+ };
88
+
89
+ // Pinned apps with their running status (for the right section of dock)
90
+ const dockPinnedApps = (): AppInfo[] => {
91
+ const runningIds = new Set(runningApps().map((i) => i.manifest.id));
92
+ const installed = installedApps();
93
+
94
+ return pinnedDockApps()
95
+ .map((appId) => {
96
+ const manifest = installed.find((m) => m.id === appId);
97
+ if (!manifest) return null;
98
+ return {
99
+ id: appId,
100
+ name: manifest.name,
101
+ isRunning: runningIds.has(appId),
102
+ };
103
+ })
104
+ .filter((app): app is AppInfo => app !== null);
105
+ };
106
+
107
+ // All installed apps for the apps view
108
+ const allApps = (): AppInfo[] => {
109
+ const runningIds = new Set(runningApps().map((i) => i.manifest.id));
110
+ return installedApps().map((app) => ({
111
+ id: app.id,
112
+ name: app.name,
113
+ isRunning: runningIds.has(app.id),
114
+ }));
115
+ };
116
+
117
+ const loadSystemInfo = async () => {
118
+ try {
119
+ // Fetch installed apps from package manager
120
+ const installed = await window.edenAPI.shellCommand("package/list", {});
121
+ if (Array.isArray(installed)) {
122
+ setInstalledApps(installed);
123
+ }
124
+
125
+ // Fetch running apps from process manager
126
+ const running = await window.edenAPI.shellCommand("process/list", {});
127
+ if (Array.isArray(running)) {
128
+ setRunningApps(running);
129
+ }
130
+ } catch (error) {
131
+ console.error("Failed to load system info:", error);
132
+ }
133
+ };
134
+
135
+ // Helper function to calculate bounds based on mode and window size
136
+ const calculateBounds = (
137
+ mode: "dock" | "fullscreen",
138
+ windowSize: WindowSize
139
+ ) => {
140
+ return mode === "fullscreen"
141
+ ? { x: 0, y: 0, width: windowSize.width, height: windowSize.height }
142
+ : {
143
+ x: 0,
144
+ y: windowSize.height - DOCK_HEIGHT,
145
+ width: windowSize.width,
146
+ height: DOCK_HEIGHT,
147
+ };
148
+ };
149
+
150
+ // Helper function to update overlay bounds via API
151
+ const updateOverlayBounds = async (bounds: ViewBounds) => {
152
+ try {
153
+ await window.edenAPI.shellCommand("view/update-view-bounds", {
154
+ appId: "com.eden.eveshell",
155
+ bounds,
156
+ });
157
+ } catch (error) {
158
+ console.error("Failed to update overlay bounds:", error);
159
+ }
160
+ };
161
+
162
+ const requestResize = async (mode: "dock" | "fullscreen") => {
163
+ try {
164
+ // Get current window bounds
165
+ const windowSize = await window.edenAPI.shellCommand(
166
+ "view/window-size",
167
+ {}
168
+ );
169
+ const bounds = calculateBounds(mode, windowSize);
170
+ await updateOverlayBounds(bounds);
171
+ } catch (error) {
172
+ console.error("Failed to resize overlay:", error);
173
+ }
174
+ };
175
+
176
+ const handleAppClick = async (appId: string) => {
177
+ const isRunning = runningApps().some((app) => app.manifest.id === appId);
178
+
179
+ if (isRunning) {
180
+ // App is running, focus/show it
181
+ try {
182
+ await window.edenAPI.shellCommand("view/focus-app", { appId });
183
+ } catch (error) {
184
+ console.error("Failed to focus app:", error);
185
+ }
186
+ } else {
187
+ // App is not running, launch it
188
+ try {
189
+ await window.edenAPI.shellCommand("process/launch", { appId });
190
+ // Add a small delay before refreshing to let the app start
191
+ setTimeout(() => {
192
+ loadSystemInfo();
193
+ }, 500);
194
+ } catch (error) {
195
+ console.error("Failed to launch app:", error);
196
+ }
197
+ }
198
+ };
199
+
200
+ const handleShowAllApps = async () => {
201
+ const next = !showAllApps();
202
+ setShowAllApps(next);
203
+
204
+ // Resize overlay
205
+ await requestResize(next ? "fullscreen" : "dock");
206
+
207
+ // Refresh installed apps when opening the apps view
208
+ if (next) {
209
+ loadSystemInfo();
210
+ }
211
+ };
212
+
213
+ const handleStopApp = async (appId: string) => {
214
+ try {
215
+ await window.edenAPI.shellCommand("process/stop", { appId });
216
+ // Refresh app list
217
+ setTimeout(() => {
218
+ loadSystemInfo();
219
+ }, 300);
220
+ } catch (error) {
221
+ console.error("Failed to stop app:", error);
222
+ }
223
+ };
224
+
225
+ const handleUninstallApp = async (appId: string) => {
226
+ try {
227
+ // Confirm before uninstalling
228
+ if (confirm(`Are you sure you want to uninstall this app?`)) {
229
+ await window.edenAPI.shellCommand("package/uninstall", { appId });
230
+ // Refresh app list
231
+ await loadSystemInfo();
232
+ }
233
+ } catch (error) {
234
+ console.error("Failed to uninstall app:", error);
235
+ }
236
+ };
237
+
238
+ // Handle context menu from dock - resize to fullscreen so menu fits
239
+ const handleDockContextMenu = async (menu: ContextMenuData) => {
240
+ await requestResize("fullscreen");
241
+ setDockContextMenu(menu);
242
+ };
243
+
244
+ // Close dock context menu and resize back to dock
245
+ const handleCloseDockContextMenu = async () => {
246
+ setDockContextMenu(null);
247
+ if (!showAllApps()) {
248
+ await requestResize("dock");
249
+ }
250
+ };
251
+
252
+ onMount(() => {
253
+ // Event handlers
254
+ const handleAppLifecycle = () => loadSystemInfo();
255
+
256
+ const handleBoundsChange = (data: {
257
+ workspaceBounds: ViewBounds;
258
+ windowSize: WindowSize;
259
+ }) => {
260
+ const { windowSize } = data;
261
+ const mode = showAllApps() ? "fullscreen" : "dock";
262
+ const bounds = calculateBounds(mode, windowSize);
263
+ updateOverlayBounds(bounds);
264
+ };
265
+
266
+ // Register cleanup synchronously (must happen before any async work)
267
+ onCleanup(() => {
268
+ window.edenAPI.unsubscribe("process/launched", handleAppLifecycle);
269
+ window.edenAPI.unsubscribe("process/stopped", handleAppLifecycle);
270
+ window.edenAPI.unsubscribe(
271
+ "view/global-bounds-changed",
272
+ handleBoundsChange
273
+ );
274
+ });
275
+
276
+ // Async initialization
277
+ (async () => {
278
+ // Load initial system info and pinned apps
279
+ loadSystemInfo();
280
+ loadPinnedApps();
281
+
282
+ // Set initial overlay size
283
+ await requestResize("dock");
284
+
285
+ try {
286
+ // Subscribe to events
287
+ await window.edenAPI.subscribe("process/launched", handleAppLifecycle);
288
+ await window.edenAPI.subscribe("process/stopped", handleAppLifecycle);
289
+ await window.edenAPI.subscribe(
290
+ "view/global-bounds-changed",
291
+ handleBoundsChange
292
+ );
293
+ } catch (error) {
294
+ console.error("Failed to subscribe to events:", error);
295
+ }
296
+ })();
297
+ });
298
+
299
+ return (
300
+ <div
301
+ class="shell-overlay"
302
+ data-mode={showAllApps() || dockContextMenu() ? "fullscreen" : "dock"}
303
+ >
304
+ {/* AllApps appears above the dock when active */}
305
+ <Show when={showAllApps()}>
306
+ <AllApps
307
+ apps={allApps()}
308
+ onClose={handleShowAllApps}
309
+ onAppClick={handleAppClick}
310
+ onStopApp={handleStopApp}
311
+ onUninstallApp={handleUninstallApp}
312
+ isAppPinned={isAppPinned}
313
+ onAddToDock={handleAddToDock}
314
+ onRemoveFromDock={handleRemoveFromDock}
315
+ />
316
+ </Show>
317
+
318
+ {/* Dock is always visible */}
319
+ <Dock
320
+ runningApps={dockRunningApps()}
321
+ pinnedApps={dockPinnedApps()}
322
+ onAppClick={handleAppClick}
323
+ onShowAllApps={handleShowAllApps}
324
+ onContextMenu={handleDockContextMenu}
325
+ />
326
+
327
+ {/* Context menu for dock apps */}
328
+ <Show when={dockContextMenu()}>
329
+ {(menu) => (
330
+ <AppContextMenu
331
+ menu={menu()}
332
+ isAppPinned={isAppPinned}
333
+ onStopApp={handleStopApp}
334
+ onAddToDock={handleAddToDock}
335
+ onRemoveFromDock={handleRemoveFromDock}
336
+ onUninstallApp={handleUninstallApp}
337
+ onClose={handleCloseDockContextMenu}
338
+ />
339
+ )}
340
+ </Show>
341
+ </div>
342
+ );
343
+ }
@@ -0,0 +1,38 @@
1
+ // Cache for fetched icons to avoid redundant API calls
2
+ const iconCache = new Map<string, string | undefined>();
3
+
4
+ /**
5
+ * Fetch an app icon as a base64 data URL
6
+ */
7
+ export async function fetchAppIcon(appId: string): Promise<string | undefined> {
8
+ // Check cache first
9
+ if (iconCache.has(appId)) {
10
+ return iconCache.get(appId);
11
+ }
12
+
13
+ try {
14
+ const result = await window.edenAPI.shellCommand("package/get-icon", {
15
+ appId,
16
+ });
17
+ iconCache.set(appId, result.icon);
18
+ return result.icon;
19
+ } catch (error) {
20
+ console.warn(`Failed to fetch icon for ${appId}:`, error);
21
+ iconCache.set(appId, undefined);
22
+ return undefined;
23
+ }
24
+ }
25
+
26
+ /**
27
+ * Clear the icon cache (useful for refreshing after app updates)
28
+ */
29
+ export function clearIconCache(): void {
30
+ iconCache.clear();
31
+ }
32
+
33
+ /**
34
+ * Remove a specific app's icon from cache
35
+ */
36
+ export function invalidateIconCache(appId: string): void {
37
+ iconCache.delete(appId);
38
+ }
@@ -0,0 +1,11 @@
1
+ import { render } from "solid-js/web";
2
+ import ShellOverlay from "./components/ShellOverlay";
3
+ import "./styles.css";
4
+
5
+ const root = document.getElementById("root");
6
+
7
+ if (!root) {
8
+ throw new Error("Root element not found");
9
+ }
10
+
11
+ render(() => <ShellOverlay />, root);