@peers-app/peers-ui 0.14.0 → 0.15.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 (438) hide show
  1. package/.github/workflows/publish.yml +8 -5
  2. package/babel.config.js +4 -4
  3. package/biome.json +191 -0
  4. package/dist/command-palette/command-palette-ui.d.ts +1 -2
  5. package/dist/command-palette/command-palette-ui.js +175 -244
  6. package/dist/command-palette/command-palette.js +65 -64
  7. package/dist/components/chat-overlay.d.ts +2 -2
  8. package/dist/components/chat-overlay.js +160 -217
  9. package/dist/components/checkbox.d.ts +5 -4
  10. package/dist/components/checkbox.js +4 -7
  11. package/dist/components/group-switcher.d.ts +1 -2
  12. package/dist/components/group-switcher.js +119 -159
  13. package/dist/components/input-date.d.ts +3 -3
  14. package/dist/components/input-date.js +6 -6
  15. package/dist/components/input-number.d.ts +7 -6
  16. package/dist/components/input-number.js +25 -20
  17. package/dist/components/input.d.ts +5 -4
  18. package/dist/components/input.js +4 -7
  19. package/dist/components/inverse-lazy-list.d.ts +3 -3
  20. package/dist/components/inverse-lazy-list.js +13 -47
  21. package/dist/components/io-schema-values.d.ts +5 -6
  22. package/dist/components/io-schema-values.js +28 -65
  23. package/dist/components/io-schema.d.ts +4 -5
  24. package/dist/components/io-schema.js +42 -79
  25. package/dist/components/lazy-list.d.ts +3 -3
  26. package/dist/components/lazy-list.js +38 -58
  27. package/dist/components/list-screen.d.ts +3 -8
  28. package/dist/components/list-screen.js +28 -23
  29. package/dist/components/loading-indicator.d.ts +1 -2
  30. package/dist/components/loading-indicator.js +2 -6
  31. package/dist/components/markdown-editor/autolink-plugin.js +5 -8
  32. package/dist/components/markdown-editor/editor-inline.d.ts +2 -3
  33. package/dist/components/markdown-editor/editor-inline.js +2 -6
  34. package/dist/components/markdown-editor/editor.d.ts +6 -6
  35. package/dist/components/markdown-editor/editor.js +9 -19
  36. package/dist/components/markdown-editor/markdown-plugin.d.ts +1 -1
  37. package/dist/components/markdown-editor/markdown-plugin.js +20 -21
  38. package/dist/components/markdown-editor/mention-node.d.ts +2 -2
  39. package/dist/components/markdown-editor/mention-node.js +24 -24
  40. package/dist/components/markdown-editor/mentions-plugin.d.ts +2 -2
  41. package/dist/components/markdown-editor/mentions-plugin.js +61 -62
  42. package/dist/components/markdown-editor/theme.js +28 -28
  43. package/dist/components/markdown-editor/toolbar.d.ts +2 -3
  44. package/dist/components/markdown-editor/toolbar.js +32 -49
  45. package/dist/components/markdown-with-mentions.d.ts +1 -1
  46. package/dist/components/markdown-with-mentions.js +43 -43
  47. package/dist/components/message-logs/message-logs.d.ts +1 -2
  48. package/dist/components/message-logs/message-logs.js +91 -116
  49. package/dist/components/messages/avatar.d.ts +3 -4
  50. package/dist/components/messages/avatar.js +37 -46
  51. package/dist/components/messages/channel-message-list.d.ts +5 -6
  52. package/dist/components/messages/channel-message-list.js +34 -34
  53. package/dist/components/messages/channel-view.d.ts +1 -2
  54. package/dist/components/messages/channel-view.js +23 -57
  55. package/dist/components/messages/message-compose.d.ts +3 -4
  56. package/dist/components/messages/message-compose.js +27 -38
  57. package/dist/components/messages/message-display.d.ts +2 -3
  58. package/dist/components/messages/message-display.js +42 -95
  59. package/dist/components/messages/thread-message-list.d.ts +4 -5
  60. package/dist/components/messages/thread-message-list.js +29 -29
  61. package/dist/components/router.d.ts +1 -2
  62. package/dist/components/router.js +58 -66
  63. package/dist/components/save-button.d.ts +3 -3
  64. package/dist/components/save-button.js +23 -33
  65. package/dist/components/sortable-list.d.ts +11 -12
  66. package/dist/components/sortable-list.js +42 -22
  67. package/dist/components/tabs.d.ts +3 -3
  68. package/dist/components/tabs.js +16 -47
  69. package/dist/components/tooltip.d.ts +4 -4
  70. package/dist/components/tooltip.js +4 -9
  71. package/dist/components/trust-level-badge.d.ts +2 -3
  72. package/dist/components/trust-level-badge.js +16 -16
  73. package/dist/components/trust-level-dropdown.d.ts +3 -4
  74. package/dist/components/trust-level-dropdown.js +32 -55
  75. package/dist/components/typeahead.d.ts +3 -3
  76. package/dist/components/typeahead.js +48 -89
  77. package/dist/components/voice-indicator.d.ts +2 -2
  78. package/dist/components/voice-indicator.js +93 -106
  79. package/dist/components/voice-subscribe-events.d.ts +32 -0
  80. package/dist/components/voice-subscribe-events.js +2 -0
  81. package/dist/globals.d.ts +3 -5
  82. package/dist/globals.js +22 -33
  83. package/dist/hooks.d.ts +5 -5
  84. package/dist/hooks.js +22 -12
  85. package/dist/hooks.test.js +129 -145
  86. package/dist/index.d.ts +9 -8
  87. package/dist/index.js +13 -12
  88. package/dist/mention-configs.d.ts +2 -2
  89. package/dist/mention-configs.js +55 -42
  90. package/dist/screens/assistants/assistant-config.d.ts +2 -3
  91. package/dist/screens/assistants/assistant-config.js +9 -22
  92. package/dist/screens/assistants/assistant-details.d.ts +1 -2
  93. package/dist/screens/assistants/assistant-details.js +13 -28
  94. package/dist/screens/assistants/assistant-info.d.ts +2 -3
  95. package/dist/screens/assistants/assistant-info.js +3 -17
  96. package/dist/screens/assistants/assistant-list.d.ts +1 -2
  97. package/dist/screens/assistants/assistant-list.js +15 -56
  98. package/dist/screens/assistants/assistant-tools.d.ts +2 -3
  99. package/dist/screens/assistants/assistant-tools.js +10 -24
  100. package/dist/screens/console-logs/console-logs-list.d.ts +1 -2
  101. package/dist/screens/console-logs/console-logs-list.js +130 -134
  102. package/dist/screens/console-logs/log-display.d.ts +2 -3
  103. package/dist/screens/console-logs/log-display.js +40 -42
  104. package/dist/screens/console-logs/log-filters.d.ts +1 -2
  105. package/dist/screens/console-logs/log-filters.js +2 -24
  106. package/dist/screens/console-logs/mobile-log-card.d.ts +2 -3
  107. package/dist/screens/console-logs/mobile-log-card.js +64 -67
  108. package/dist/screens/console-logs/resizable-table-header.d.ts +1 -2
  109. package/dist/screens/console-logs/resizable-table-header.js +31 -67
  110. package/dist/screens/contacts/contact-details.d.ts +1 -2
  111. package/dist/screens/contacts/contact-details.js +16 -46
  112. package/dist/screens/contacts/contact-list.d.ts +1 -2
  113. package/dist/screens/contacts/contact-list.js +44 -103
  114. package/dist/screens/contacts/index.d.ts +4 -4
  115. package/dist/screens/contacts/index.js +1 -1
  116. package/dist/screens/contacts/user-connect.d.ts +1 -2
  117. package/dist/screens/contacts/user-connect.js +85 -186
  118. package/dist/screens/data-explorer/data-explorer.d.ts +1 -2
  119. package/dist/screens/data-explorer/data-explorer.js +61 -181
  120. package/dist/screens/data-explorer/index.d.ts +2 -2
  121. package/dist/screens/data-explorer/query-executor.d.ts +1 -2
  122. package/dist/screens/data-explorer/query-executor.js +56 -166
  123. package/dist/screens/groups/group-details.d.ts +1 -2
  124. package/dist/screens/groups/group-details.js +27 -122
  125. package/dist/screens/groups/group-invite-listener.d.ts +2 -3
  126. package/dist/screens/groups/group-invite-listener.js +8 -104
  127. package/dist/screens/groups/group-list.d.ts +1 -2
  128. package/dist/screens/groups/group-list.js +56 -133
  129. package/dist/screens/groups/group-members.d.ts +2 -3
  130. package/dist/screens/groups/group-members.js +62 -132
  131. package/dist/screens/groups/index.d.ts +4 -4
  132. package/dist/screens/groups/index.js +1 -1
  133. package/dist/screens/join-group/index.d.ts +2 -2
  134. package/dist/screens/join-group/join-group.d.ts +1 -2
  135. package/dist/screens/join-group/join-group.js +9 -109
  136. package/dist/screens/network-viewer/connection-troubleshooter.d.ts +2 -3
  137. package/dist/screens/network-viewer/connection-troubleshooter.js +89 -193
  138. package/dist/screens/network-viewer/cpu-usage-graph.d.ts +1 -2
  139. package/dist/screens/network-viewer/cpu-usage-graph.js +60 -99
  140. package/dist/screens/network-viewer/device-details-modal.d.ts +1 -2
  141. package/dist/screens/network-viewer/device-details-modal.js +25 -177
  142. package/dist/screens/network-viewer/group-details-modal.d.ts +1 -2
  143. package/dist/screens/network-viewer/group-details-modal.js +31 -142
  144. package/dist/screens/network-viewer/index.d.ts +4 -4
  145. package/dist/screens/network-viewer/index.js +3 -3
  146. package/dist/screens/network-viewer/network-viewer-ipc.d.ts +22 -0
  147. package/dist/screens/network-viewer/network-viewer-ipc.js +6 -0
  148. package/dist/screens/network-viewer/network-viewer.d.ts +1 -2
  149. package/dist/screens/network-viewer/network-viewer.js +91 -296
  150. package/dist/screens/network-viewer/usage-graph.d.ts +1 -2
  151. package/dist/screens/network-viewer/usage-graph.js +78 -110
  152. package/dist/screens/packages/package-details.d.ts +1 -2
  153. package/dist/screens/packages/package-details.js +35 -41
  154. package/dist/screens/packages/package-info.d.ts +2 -2
  155. package/dist/screens/packages/package-info.js +33 -86
  156. package/dist/screens/packages/package-list.d.ts +1 -2
  157. package/dist/screens/packages/package-list.js +42 -106
  158. package/dist/screens/packages/package-new-local.d.ts +1 -2
  159. package/dist/screens/packages/package-new-local.js +13 -19
  160. package/dist/screens/packages/package-versions.d.ts +2 -3
  161. package/dist/screens/packages/package-versions.js +29 -96
  162. package/dist/screens/peer-types/peer-type-details.d.ts +3 -4
  163. package/dist/screens/peer-types/peer-type-details.js +26 -78
  164. package/dist/screens/peer-types/peer-type-list.d.ts +1 -2
  165. package/dist/screens/peer-types/peer-type-list.js +13 -24
  166. package/dist/screens/search/global-search.d.ts +1 -2
  167. package/dist/screens/search/global-search.js +104 -182
  168. package/dist/screens/settings/color-mode-dropdown.d.ts +3 -4
  169. package/dist/screens/settings/color-mode-dropdown.js +18 -37
  170. package/dist/screens/settings/settings-page.d.ts +1 -1
  171. package/dist/screens/settings/settings-page.js +86 -213
  172. package/dist/screens/settings/voice-settings-agent.d.ts +1 -1
  173. package/dist/screens/settings/voice-settings-agent.js +7 -44
  174. package/dist/screens/settings/voice-settings-api-keys.d.ts +2 -2
  175. package/dist/screens/settings/voice-settings-api-keys.js +2 -29
  176. package/dist/screens/settings/voice-settings-output.d.ts +2 -2
  177. package/dist/screens/settings/voice-settings-output.js +2 -40
  178. package/dist/screens/settings/voice-settings-providers.d.ts +2 -2
  179. package/dist/screens/settings/voice-settings-providers.js +2 -19
  180. package/dist/screens/settings/voice-settings-types.d.ts +4 -4
  181. package/dist/screens/settings/voice-settings-types.js +31 -31
  182. package/dist/screens/settings/voice-settings-wake-word.d.ts +2 -2
  183. package/dist/screens/settings/voice-settings-wake-word.js +2 -33
  184. package/dist/screens/settings/voice-settings.d.ts +1 -1
  185. package/dist/screens/settings/voice-settings.js +35 -112
  186. package/dist/screens/setup-user.d.ts +1 -2
  187. package/dist/screens/setup-user.js +38 -116
  188. package/dist/screens/tools/tool-code.d.ts +2 -3
  189. package/dist/screens/tools/tool-code.js +9 -13
  190. package/dist/screens/tools/tool-details.d.ts +1 -2
  191. package/dist/screens/tools/tool-details.js +26 -39
  192. package/dist/screens/tools/tool-info.d.ts +2 -3
  193. package/dist/screens/tools/tool-info.js +9 -48
  194. package/dist/screens/tools/tool-list.d.ts +1 -2
  195. package/dist/screens/tools/tool-list.js +33 -65
  196. package/dist/screens/tools/tool-schema.d.ts +2 -3
  197. package/dist/screens/tools/tool-schema.js +2 -13
  198. package/dist/screens/tools/tool-test-details.d.ts +1 -2
  199. package/dist/screens/tools/tool-test-details.js +12 -28
  200. package/dist/screens/tools/tool-test-list.d.ts +1 -2
  201. package/dist/screens/tools/tool-test-list.js +17 -56
  202. package/dist/screens/variables/variable-details.d.ts +1 -2
  203. package/dist/screens/variables/variable-details.js +19 -86
  204. package/dist/screens/variables/variable-list.d.ts +1 -2
  205. package/dist/screens/variables/variable-list.js +16 -27
  206. package/dist/screens/welcome-modal.d.ts +1 -2
  207. package/dist/screens/welcome-modal.js +44 -111
  208. package/dist/screens/workflows/workflow-details.d.ts +1 -2
  209. package/dist/screens/workflows/workflow-details.js +17 -31
  210. package/dist/screens/workflows/workflow-info.d.ts +2 -3
  211. package/dist/screens/workflows/workflow-info.js +2 -9
  212. package/dist/screens/workflows/workflow-instructions.d.ts +2 -3
  213. package/dist/screens/workflows/workflow-instructions.js +23 -55
  214. package/dist/screens/workflows/workflow-list.d.ts +1 -2
  215. package/dist/screens/workflows/workflow-list.js +23 -62
  216. package/dist/setupTests.d.ts +1 -1
  217. package/dist/setupTests.js +10 -11
  218. package/dist/system-apps/assistants.app.d.ts +1 -1
  219. package/dist/system-apps/assistants.app.js +3 -3
  220. package/dist/system-apps/console-logs.app.d.ts +1 -1
  221. package/dist/system-apps/console-logs.app.js +3 -3
  222. package/dist/system-apps/contacts.app.d.ts +1 -1
  223. package/dist/system-apps/contacts.app.js +4 -4
  224. package/dist/system-apps/data-explorer.app.d.ts +1 -1
  225. package/dist/system-apps/data-explorer.app.js +4 -4
  226. package/dist/system-apps/groups.app.d.ts +1 -1
  227. package/dist/system-apps/groups.app.js +4 -4
  228. package/dist/system-apps/index.d.ts +17 -17
  229. package/dist/system-apps/index.js +52 -52
  230. package/dist/system-apps/join-group.app.d.ts +1 -1
  231. package/dist/system-apps/join-group.app.js +4 -4
  232. package/dist/system-apps/mobile-settings.app.d.ts +1 -1
  233. package/dist/system-apps/mobile-settings.app.js +3 -3
  234. package/dist/system-apps/network-viewer.app.d.ts +1 -1
  235. package/dist/system-apps/network-viewer.app.js +4 -4
  236. package/dist/system-apps/packages.app.d.ts +1 -1
  237. package/dist/system-apps/packages.app.js +3 -3
  238. package/dist/system-apps/search.app.d.ts +1 -1
  239. package/dist/system-apps/search.app.js +4 -4
  240. package/dist/system-apps/settings.app.d.ts +1 -1
  241. package/dist/system-apps/settings.app.js +3 -3
  242. package/dist/system-apps/threads.app.d.ts +1 -1
  243. package/dist/system-apps/threads.app.js +3 -3
  244. package/dist/system-apps/tools.app.d.ts +1 -1
  245. package/dist/system-apps/tools.app.js +3 -3
  246. package/dist/system-apps/types.app.d.ts +1 -1
  247. package/dist/system-apps/types.app.js +3 -3
  248. package/dist/system-apps/variables.app.d.ts +1 -1
  249. package/dist/system-apps/variables.app.js +3 -3
  250. package/dist/system-apps/workflows.app.d.ts +1 -1
  251. package/dist/system-apps/workflows.app.js +3 -3
  252. package/dist/tabs-layout/tabs-layout.d.ts +2 -3
  253. package/dist/tabs-layout/tabs-layout.js +215 -246
  254. package/dist/tabs-layout/tabs-state.d.ts +2 -2
  255. package/dist/tabs-layout/tabs-state.js +73 -61
  256. package/dist/ui-defaults/index.d.ts +2 -2
  257. package/dist/ui-defaults/list-screen.d.ts +2 -3
  258. package/dist/ui-defaults/list-screen.js +33 -37
  259. package/dist/ui-defaults/markdown-field.js +24 -56
  260. package/dist/ui-router/routes-loader.d.ts +1 -1
  261. package/dist/ui-router/routes-loader.js +17 -13
  262. package/dist/ui-router/ui-loader.d.ts +6 -6
  263. package/dist/ui-router/ui-loader.js +172 -268
  264. package/dist/utils.js +49 -39
  265. package/jest.config.js +16 -16
  266. package/package.json +16 -14
  267. package/src/command-palette/command-palette-ui.tsx +261 -237
  268. package/src/command-palette/command-palette.ts +81 -78
  269. package/src/components/chat-overlay.tsx +366 -261
  270. package/src/components/checkbox.tsx +15 -12
  271. package/src/components/group-switcher.tsx +150 -105
  272. package/src/components/input-date.tsx +17 -16
  273. package/src/components/input-number.tsx +47 -31
  274. package/src/components/input.tsx +15 -12
  275. package/src/components/inverse-lazy-list.tsx +14 -13
  276. package/src/components/io-schema-values.tsx +51 -69
  277. package/src/components/io-schema.tsx +94 -69
  278. package/src/components/lazy-list.tsx +51 -34
  279. package/src/components/list-screen.tsx +51 -35
  280. package/src/components/loading-indicator.tsx +2 -4
  281. package/src/components/markdown-editor/autolink-plugin.tsx +4 -11
  282. package/src/components/markdown-editor/editor-inline.tsx +3 -4
  283. package/src/components/markdown-editor/editor.tsx +53 -51
  284. package/src/components/markdown-editor/markdown-plugin.tsx +48 -40
  285. package/src/components/markdown-editor/mention-node.ts +39 -38
  286. package/src/components/markdown-editor/mentions-plugin.tsx +99 -101
  287. package/src/components/markdown-editor/theme.ts +28 -29
  288. package/src/components/markdown-editor/toolbar.tsx +53 -47
  289. package/src/components/markdown-with-mentions.tsx +56 -46
  290. package/src/components/message-logs/message-logs.tsx +225 -165
  291. package/src/components/messages/avatar.tsx +70 -52
  292. package/src/components/messages/channel-message-list.tsx +80 -68
  293. package/src/components/messages/channel-view.tsx +34 -33
  294. package/src/components/messages/message-compose.tsx +84 -67
  295. package/src/components/messages/message-display.tsx +103 -89
  296. package/src/components/messages/thread-message-list.tsx +53 -44
  297. package/src/components/router.tsx +42 -43
  298. package/src/components/save-button.tsx +43 -39
  299. package/src/components/sortable-list.tsx +77 -49
  300. package/src/components/tabs.tsx +31 -31
  301. package/src/components/tooltip.tsx +21 -28
  302. package/src/components/trust-level-badge.tsx +15 -11
  303. package/src/components/trust-level-dropdown.tsx +49 -19
  304. package/src/components/typeahead.tsx +57 -59
  305. package/src/components/voice-indicator.tsx +158 -141
  306. package/src/components/voice-subscribe-events.ts +20 -0
  307. package/src/globals.tsx +42 -40
  308. package/src/hooks.test.tsx +141 -134
  309. package/src/hooks.ts +80 -48
  310. package/src/index.tsx +17 -10
  311. package/src/mention-configs.ts +122 -68
  312. package/src/screens/assistants/assistant-config.tsx +28 -18
  313. package/src/screens/assistants/assistant-details.tsx +35 -36
  314. package/src/screens/assistants/assistant-info.tsx +16 -11
  315. package/src/screens/assistants/assistant-list.tsx +37 -34
  316. package/src/screens/assistants/assistant-tools.tsx +41 -20
  317. package/src/screens/console-logs/console-logs-list.tsx +173 -140
  318. package/src/screens/console-logs/log-display.tsx +65 -38
  319. package/src/screens/console-logs/log-filters.tsx +4 -3
  320. package/src/screens/console-logs/mobile-log-card.tsx +78 -71
  321. package/src/screens/console-logs/resizable-table-header.tsx +29 -21
  322. package/src/screens/contacts/contact-details.tsx +29 -30
  323. package/src/screens/contacts/contact-list.tsx +71 -60
  324. package/src/screens/contacts/index.ts +5 -5
  325. package/src/screens/contacts/user-connect.tsx +177 -171
  326. package/src/screens/data-explorer/data-explorer.tsx +134 -98
  327. package/src/screens/data-explorer/index.ts +2 -3
  328. package/src/screens/data-explorer/query-executor.tsx +90 -80
  329. package/src/screens/groups/group-details.tsx +120 -101
  330. package/src/screens/groups/group-invite-listener.tsx +34 -37
  331. package/src/screens/groups/group-list.tsx +119 -103
  332. package/src/screens/groups/group-members.tsx +225 -164
  333. package/src/screens/groups/index.ts +5 -6
  334. package/src/screens/join-group/index.ts +2 -2
  335. package/src/screens/join-group/join-group.tsx +41 -39
  336. package/src/screens/network-viewer/connection-troubleshooter.tsx +145 -104
  337. package/src/screens/network-viewer/cpu-usage-graph.tsx +39 -43
  338. package/src/screens/network-viewer/device-details-modal.tsx +46 -59
  339. package/src/screens/network-viewer/group-details-modal.tsx +68 -49
  340. package/src/screens/network-viewer/index.ts +4 -5
  341. package/src/screens/network-viewer/network-viewer-ipc.ts +23 -0
  342. package/src/screens/network-viewer/network-viewer.tsx +261 -236
  343. package/src/screens/network-viewer/usage-graph.tsx +57 -49
  344. package/src/screens/packages/package-details.tsx +43 -35
  345. package/src/screens/packages/package-info.tsx +107 -66
  346. package/src/screens/packages/package-list.tsx +175 -98
  347. package/src/screens/packages/package-new-local.tsx +28 -26
  348. package/src/screens/packages/package-versions.tsx +102 -77
  349. package/src/screens/peer-types/peer-type-details.tsx +60 -50
  350. package/src/screens/peer-types/peer-type-list.tsx +20 -30
  351. package/src/screens/search/global-search.tsx +153 -137
  352. package/src/screens/settings/color-mode-dropdown.tsx +52 -35
  353. package/src/screens/settings/settings-page.tsx +215 -141
  354. package/src/screens/settings/voice-settings-agent.tsx +13 -12
  355. package/src/screens/settings/voice-settings-api-keys.tsx +14 -12
  356. package/src/screens/settings/voice-settings-output.tsx +12 -11
  357. package/src/screens/settings/voice-settings-providers.tsx +7 -3
  358. package/src/screens/settings/voice-settings-types.ts +52 -49
  359. package/src/screens/settings/voice-settings-wake-word.tsx +25 -9
  360. package/src/screens/settings/voice-settings.tsx +66 -43
  361. package/src/screens/setup-user.tsx +88 -41
  362. package/src/screens/tools/tool-code.tsx +12 -17
  363. package/src/screens/tools/tool-details.tsx +28 -28
  364. package/src/screens/tools/tool-info.tsx +14 -19
  365. package/src/screens/tools/tool-list.tsx +58 -40
  366. package/src/screens/tools/tool-schema.tsx +16 -9
  367. package/src/screens/tools/tool-test-details.tsx +11 -22
  368. package/src/screens/tools/tool-test-list.tsx +29 -30
  369. package/src/screens/variables/variable-details.tsx +63 -51
  370. package/src/screens/variables/variable-list.tsx +29 -30
  371. package/src/screens/welcome-modal.tsx +68 -48
  372. package/src/screens/workflows/workflow-details.tsx +40 -30
  373. package/src/screens/workflows/workflow-info.tsx +4 -11
  374. package/src/screens/workflows/workflow-instructions.tsx +35 -28
  375. package/src/screens/workflows/workflow-list.tsx +50 -40
  376. package/src/setupTests.ts +14 -13
  377. package/src/system-apps/assistants.app.ts +5 -5
  378. package/src/system-apps/console-logs.app.ts +4 -4
  379. package/src/system-apps/contacts.app.ts +6 -6
  380. package/src/system-apps/data-explorer.app.ts +5 -5
  381. package/src/system-apps/groups.app.ts +6 -6
  382. package/src/system-apps/index.ts +49 -49
  383. package/src/system-apps/join-group.app.ts +5 -5
  384. package/src/system-apps/mobile-settings.app.ts +4 -5
  385. package/src/system-apps/network-viewer.app.ts +5 -5
  386. package/src/system-apps/packages.app.ts +5 -5
  387. package/src/system-apps/search.app.ts +6 -6
  388. package/src/system-apps/settings.app.ts +5 -5
  389. package/src/system-apps/threads.app.ts +5 -5
  390. package/src/system-apps/tools.app.ts +5 -5
  391. package/src/system-apps/types.app.ts +5 -5
  392. package/src/system-apps/variables.app.ts +5 -5
  393. package/src/system-apps/workflows.app.ts +5 -5
  394. package/src/tabs-layout/tabs-layout.tsx +345 -254
  395. package/src/tabs-layout/tabs-state.ts +100 -81
  396. package/src/ui-defaults/index.ts +2 -3
  397. package/src/ui-defaults/list-screen.tsx +45 -40
  398. package/src/ui-defaults/markdown-field.tsx +22 -26
  399. package/src/ui-router/routes-loader.ts +40 -24
  400. package/src/ui-router/ui-loader.tsx +312 -214
  401. package/src/utils.ts +68 -81
  402. package/tsconfig.json +5 -10
  403. package/dist/components/input-datetime.d.ts +0 -7
  404. package/dist/components/input-datetime.js +0 -35
  405. package/dist/components/lazy-sortable-list.d.ts +0 -29
  406. package/dist/components/lazy-sortable-list.js +0 -12
  407. package/dist/components/left-bar.d.ts +0 -5
  408. package/dist/components/left-bar.js +0 -207
  409. package/dist/components/main-content-container.d.ts +0 -2
  410. package/dist/components/main-content-container.js +0 -92
  411. package/dist/components/messages/thread-view.d.ts +0 -6
  412. package/dist/components/messages/thread-view.js +0 -174
  413. package/dist/components/off-canvas.d.ts +0 -13
  414. package/dist/components/off-canvas.js +0 -89
  415. package/dist/components/text-list-editor.tsx/text-list-editor.d.ts +0 -6
  416. package/dist/components/text-list-editor.tsx/text-list-editor.js +0 -13
  417. package/dist/components/top-bar.d.ts +0 -2
  418. package/dist/components/top-bar.js +0 -51
  419. package/dist/components/typeahead/mentions-plugin.d.ts +0 -7
  420. package/dist/components/typeahead/mentions-plugin.js +0 -203
  421. package/dist/components/typeahead/typeahead-editor.d.ts +0 -15
  422. package/dist/components/typeahead/typeahead-editor.js +0 -134
  423. package/dist/components/typeahead/typeahead.d.ts +0 -12
  424. package/dist/components/typeahead/typeahead.js +0 -94
  425. package/dist/screens/profile.d.ts +0 -2
  426. package/dist/screens/profile.js +0 -76
  427. package/src/components/input-datetime.tsx +0 -41
  428. package/src/components/lazy-sortable-list.tsx +0 -51
  429. package/src/components/left-bar.tsx +0 -322
  430. package/src/components/main-content-container.tsx +0 -79
  431. package/src/components/messages/thread-view.tsx +0 -214
  432. package/src/components/off-canvas.tsx +0 -83
  433. package/src/components/text-list-editor.tsx/text-list-editor.tsx +0 -13
  434. package/src/components/top-bar.tsx +0 -119
  435. package/src/components/typeahead/mentions-plugin.tsx +0 -265
  436. package/src/components/typeahead/typeahead-editor.tsx +0 -140
  437. package/src/components/typeahead/typeahead.tsx +0 -77
  438. package/src/screens/profile.tsx +0 -75
@@ -1,41 +1,9 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  Object.defineProperty(exports, "__esModule", { value: true });
36
3
  exports.UsageGraph = UsageGraph;
37
- const react_1 = __importStar(require("react"));
38
- function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5000, minHeight = 80, color = 'rgba(13, 110, 253, 1)', overlayTextColor = 'rgba(255, 255, 255, 0.7)', minValue = 0, maxValue = 100, formatOverlayText, colorZones }) {
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("react");
6
+ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5000, minHeight = 80, color = "rgba(13, 110, 253, 1)", overlayTextColor = "rgba(255, 255, 255, 0.7)", minValue = 0, maxValue = 100, formatOverlayText, colorZones, }) {
39
7
  const [dataPoints, setDataPoints] = (0, react_1.useState)([]);
40
8
  const [currentValue, setCurrentValue] = (0, react_1.useState)(0);
41
9
  const [width, setWidth] = (0, react_1.useState)(400);
@@ -72,11 +40,11 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
72
40
  setDataPoints((prev) => {
73
41
  const newPoint = {
74
42
  timestamp: Date.now(),
75
- value: value
43
+ value: value,
76
44
  };
77
45
  const updated = [...prev, newPoint];
78
46
  const oldestAllowedTime = Date.now() - durationMinutes * 60 * 1000;
79
- const filtered = updated.filter(point => point.timestamp >= oldestAllowedTime);
47
+ const filtered = updated.filter((point) => point.timestamp >= oldestAllowedTime);
80
48
  return filtered;
81
49
  });
82
50
  }
@@ -93,7 +61,7 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
93
61
  clearInterval(intervalRef.current);
94
62
  }
95
63
  };
96
- }, [fetchUsage, updateInterval, label]);
64
+ }, [fetchUsage, updateInterval, label, durationMinutes]);
97
65
  // Get color for a value based on color zones
98
66
  const getColorForValue = (value) => {
99
67
  if (!colorZones || colorZones.length === 0) {
@@ -133,12 +101,14 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
133
101
  });
134
102
  // If no color zones, return single segment
135
103
  if (!colorZones || colorZones.length === 0) {
136
- const pathData = points.map((point, idx) => {
104
+ const pathData = points
105
+ .map((point, idx) => {
137
106
  if (idx === 0) {
138
107
  return `M ${point.x} ${point.y}`;
139
108
  }
140
109
  return `L ${point.x} ${point.y}`;
141
- }).join(' ');
110
+ })
111
+ .join(" ");
142
112
  return [{ path: pathData, color }];
143
113
  }
144
114
  // Create segments based on color zones
@@ -167,7 +137,7 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
167
137
  // Calculate SVG path (for gradient fill)
168
138
  const getLinePath = () => {
169
139
  if (dataPoints.length < 2)
170
- return '';
140
+ return "";
171
141
  const paddingLeft = 25;
172
142
  const paddingRight = 10;
173
143
  const paddingTop = 10;
@@ -188,97 +158,95 @@ function UsageGraph({ fetchUsage, label, durationMinutes = 5, updateInterval = 5
188
158
  return { x, y };
189
159
  });
190
160
  // Create SVG path
191
- const pathData = points.map((point, idx) => {
161
+ const pathData = points
162
+ .map((point, idx) => {
192
163
  if (idx === 0) {
193
164
  return `M ${point.x} ${point.y}`;
194
165
  }
195
166
  return `L ${point.x} ${point.y}`;
196
- }).join(' ');
167
+ })
168
+ .join(" ");
197
169
  return pathData;
198
170
  };
199
171
  // Get gradient path for fill
200
172
  const getGradientPath = () => {
201
173
  const linePath = getLinePath();
202
174
  if (!linePath)
203
- return '';
175
+ return "";
204
176
  const paddingLeft = 25;
205
177
  const paddingRight = 10;
206
178
  const paddingBottom = 10;
207
179
  // Close the path at the bottom
208
180
  return `${linePath} L ${width - paddingRight} ${height - paddingBottom} L ${paddingLeft} ${height - paddingBottom} Z`;
209
181
  };
210
- const linePath = getLinePath();
182
+ const _linePath = getLinePath();
211
183
  const gradientPath = getGradientPath();
212
184
  const lineSegments = getLineSegments();
213
185
  // Parse color for gradient
214
186
  const rgbaMatch = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*[\d.]+)?\)/);
215
187
  const gradientColor = rgbaMatch
216
188
  ? `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, 0.3)`
217
- : 'rgba(13, 110, 253, 0.3)';
189
+ : "rgba(13, 110, 253, 0.3)";
218
190
  const gradientColorLight = rgbaMatch
219
191
  ? `rgba(${rgbaMatch[1]}, ${rgbaMatch[2]}, ${rgbaMatch[3]}, 0.05)`
220
- : 'rgba(13, 110, 253, 0.05)';
221
- return (react_1.default.createElement("div", { ref: containerRef, className: "usage-graph", style: { margin: 0, padding: 0, position: 'relative', width: '100%', height: '100%', minHeight: `${minHeight}px` } },
222
- react_1.default.createElement("svg", { width: width, height: height, style: {
223
- border: '1px solid rgba(128, 128, 128, 0.2)',
224
- borderRadius: '4px',
225
- backgroundColor: 'rgba(0, 0, 0, 0.02)',
226
- display: 'block'
227
- } },
228
- react_1.default.createElement("defs", null,
229
- react_1.default.createElement("linearGradient", { id: `${label}Gradient`, x1: "0%", y1: "0%", x2: "0%", y2: "100%" },
230
- react_1.default.createElement("stop", { offset: "0%", stopColor: gradientColor }),
231
- react_1.default.createElement("stop", { offset: "100%", stopColor: gradientColorLight }))),
232
- [0, 0.25, 0.5, 0.75, 1].map((fraction) => {
233
- const paddingLeft = 25;
234
- const paddingRight = 10;
235
- const paddingTop = 10;
236
- const paddingBottom = 10;
237
- const chartHeight = height - paddingTop - paddingBottom;
238
- const value = minValue + fraction * (maxValue - minValue);
239
- const y = paddingTop + chartHeight - fraction * chartHeight;
240
- return (react_1.default.createElement("g", { key: fraction },
241
- react_1.default.createElement("line", { x1: paddingLeft, y1: y, x2: width - paddingRight, y2: y, stroke: "rgba(128, 128, 128, 0.1)", strokeWidth: "1" }),
242
- react_1.default.createElement("text", { x: paddingLeft - 5, y: y + 4, fontSize: "10", fill: "rgba(128, 128, 128, 0.6)", textAnchor: "end" }, Math.round(value))));
243
- }),
244
- gradientPath && (react_1.default.createElement("path", { d: gradientPath, fill: `url(#${label}Gradient)` })),
245
- lineSegments.map((segment, idx) => (react_1.default.createElement("path", { key: idx, d: segment.path, stroke: segment.color, strokeWidth: "2", fill: "none", strokeLinecap: "round", strokeLinejoin: "round" }))),
246
- dataPoints.map((point, idx) => {
247
- const paddingLeft = 25;
248
- const paddingRight = 10;
249
- const paddingTop = 10;
250
- const paddingBottom = 10;
251
- const chartWidth = width - paddingLeft - paddingRight;
252
- const chartHeight = height - paddingTop - paddingBottom;
253
- // Use full time range, but adjust minTime to start at oldest data point
254
- const now = Date.now();
255
- const timeRange = durationMinutes * 60 * 1000;
256
- const minTime = Math.min(dataPoints[0].timestamp, now - timeRange);
257
- const x = paddingLeft + ((point.timestamp - minTime) / timeRange) * chartWidth;
258
- const valueRange = maxValue - minValue;
259
- const normalizedValue = (point.value - minValue) / valueRange;
260
- const y = paddingTop + chartHeight - normalizedValue * chartHeight;
261
- // Only show the last point as a visible dot
262
- if (idx !== dataPoints.length - 1)
263
- return null;
264
- const pointColor = getColorForValue(point.value);
265
- return (react_1.default.createElement("circle", { key: idx, cx: x, cy: y, r: "3", fill: pointColor, stroke: "white", strokeWidth: "1.5" }));
266
- }),
267
- dataPoints.length === 0 && (react_1.default.createElement("text", { x: width / 2, y: height / 2, fontSize: "12", fill: "rgba(128, 128, 128, 0.6)", textAnchor: "middle" }, "Collecting data..."))),
268
- react_1.default.createElement("div", { style: {
269
- position: 'absolute',
270
- top: '50%',
271
- left: '50%',
272
- transform: 'translate(-50%, -50%)',
273
- fontSize: '2rem',
274
- fontWeight: 'bold',
275
- color: overlayTextColor,
276
- pointerEvents: 'none',
277
- userSelect: 'none',
278
- textAlign: 'center',
279
- lineHeight: '1.2',
280
- whiteSpace: 'nowrap',
281
- maxWidth: '95%',
282
- overflowWrap: 'break-word'
283
- } }, formatOverlayText ? formatOverlayText(currentValue, label) : `${label} ${Math.round(currentValue)}%`)));
192
+ : "rgba(13, 110, 253, 0.05)";
193
+ return ((0, jsx_runtime_1.jsxs)("div", { ref: containerRef, className: "usage-graph", style: {
194
+ margin: 0,
195
+ padding: 0,
196
+ position: "relative",
197
+ width: "100%",
198
+ height: "100%",
199
+ minHeight: `${minHeight}px`,
200
+ }, children: [(0, jsx_runtime_1.jsxs)("svg", { width: width, height: height, style: {
201
+ border: "1px solid rgba(128, 128, 128, 0.2)",
202
+ borderRadius: "4px",
203
+ backgroundColor: "rgba(0, 0, 0, 0.02)",
204
+ display: "block",
205
+ }, children: [(0, jsx_runtime_1.jsx)("defs", { children: (0, jsx_runtime_1.jsxs)("linearGradient", { id: `${label}Gradient`, x1: "0%", y1: "0%", x2: "0%", y2: "100%", children: [(0, jsx_runtime_1.jsx)("stop", { offset: "0%", stopColor: gradientColor }), (0, jsx_runtime_1.jsx)("stop", { offset: "100%", stopColor: gradientColorLight })] }) }), [0, 0.25, 0.5, 0.75, 1].map((fraction) => {
206
+ const paddingLeft = 25;
207
+ const paddingRight = 10;
208
+ const paddingTop = 10;
209
+ const paddingBottom = 10;
210
+ const chartHeight = height - paddingTop - paddingBottom;
211
+ const value = minValue + fraction * (maxValue - minValue);
212
+ const y = paddingTop + chartHeight - fraction * chartHeight;
213
+ return ((0, jsx_runtime_1.jsxs)("g", { children: [(0, jsx_runtime_1.jsx)("line", { x1: paddingLeft, y1: y, x2: width - paddingRight, y2: y, stroke: "rgba(128, 128, 128, 0.1)", strokeWidth: "1" }), (0, jsx_runtime_1.jsx)("text", { x: paddingLeft - 5, y: y + 4, fontSize: "10", fill: "rgba(128, 128, 128, 0.6)", textAnchor: "end", children: Math.round(value) })] }, fraction));
214
+ }), gradientPath && (0, jsx_runtime_1.jsx)("path", { d: gradientPath, fill: `url(#${label}Gradient)` }), lineSegments.map((segment, idx) => ((0, jsx_runtime_1.jsx)("path", { d: segment.path, stroke: segment.color, strokeWidth: "2", fill: "none", strokeLinecap: "round", strokeLinejoin: "round" }, idx))), dataPoints.map((point, idx) => {
215
+ const paddingLeft = 25;
216
+ const paddingRight = 10;
217
+ const paddingTop = 10;
218
+ const paddingBottom = 10;
219
+ const chartWidth = width - paddingLeft - paddingRight;
220
+ const chartHeight = height - paddingTop - paddingBottom;
221
+ // Use full time range, but adjust minTime to start at oldest data point
222
+ const now = Date.now();
223
+ const timeRange = durationMinutes * 60 * 1000;
224
+ const minTime = Math.min(dataPoints[0].timestamp, now - timeRange);
225
+ const x = paddingLeft + ((point.timestamp - minTime) / timeRange) * chartWidth;
226
+ const valueRange = maxValue - minValue;
227
+ const normalizedValue = (point.value - minValue) / valueRange;
228
+ const y = paddingTop + chartHeight - normalizedValue * chartHeight;
229
+ // Only show the last point as a visible dot
230
+ if (idx !== dataPoints.length - 1)
231
+ return null;
232
+ const pointColor = getColorForValue(point.value);
233
+ return ((0, jsx_runtime_1.jsx)("circle", { cx: x, cy: y, r: "3", fill: pointColor, stroke: "white", strokeWidth: "1.5" }, idx));
234
+ }), dataPoints.length === 0 && ((0, jsx_runtime_1.jsx)("text", { x: width / 2, y: height / 2, fontSize: "12", fill: "rgba(128, 128, 128, 0.6)", textAnchor: "middle", children: "Collecting data..." }))] }), (0, jsx_runtime_1.jsx)("div", { style: {
235
+ position: "absolute",
236
+ top: "50%",
237
+ left: "50%",
238
+ transform: "translate(-50%, -50%)",
239
+ fontSize: "2rem",
240
+ fontWeight: "bold",
241
+ color: overlayTextColor,
242
+ pointerEvents: "none",
243
+ userSelect: "none",
244
+ textAlign: "center",
245
+ lineHeight: "1.2",
246
+ whiteSpace: "nowrap",
247
+ maxWidth: "95%",
248
+ overflowWrap: "break-word",
249
+ }, children: formatOverlayText
250
+ ? formatOverlayText(currentValue, label)
251
+ : `${label} ${Math.round(currentValue)}%` })] }));
284
252
  }
@@ -1,6 +1,5 @@
1
- import React from "react";
2
1
  interface IProps {
3
2
  packageId: string;
4
3
  }
5
- export declare const PackageDetails: (props: IProps) => React.JSX.Element;
4
+ export declare const PackageDetails: (props: IProps) => import("react/jsx-runtime").JSX.Element;
6
5
  export {};
@@ -4,87 +4,81 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.PackageDetails = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
7
8
  const peers_sdk_1 = require("@peers-app/peers-sdk");
8
9
  const react_1 = __importDefault(require("react"));
10
+ const input_1 = require("../../components/input");
9
11
  const loading_indicator_1 = require("../../components/loading-indicator");
10
12
  const save_button_1 = require("../../components/save-button");
11
13
  const tabs_1 = require("../../components/tabs");
12
- const package_info_1 = require("./package-info");
13
- const package_versions_1 = require("./package-versions");
14
14
  const hooks_1 = require("../../hooks");
15
- const input_1 = require("../../components/input");
16
15
  const tabs_state_1 = require("../../tabs-layout/tabs-state");
16
+ const package_info_1 = require("./package-info");
17
+ const package_versions_1 = require("./package-versions");
17
18
  const PackageDetails = (props) => {
18
19
  const refresh = (0, hooks_1.useObservableState)(Date.now());
19
20
  const saveDeviceTagRef = react_1.default.useRef(null);
20
21
  const pkg = (0, hooks_1.usePromise)(async () => {
21
22
  const pkg = await (0, peers_sdk_1.Packages)().get(props.packageId);
22
23
  if (!pkg) {
23
- throw new Error('Workflow not found');
24
+ throw new Error("Workflow not found");
24
25
  }
25
26
  (0, tabs_state_1.updateActiveTabTitle)(pkg.name || "Package");
26
27
  return (0, peers_sdk_1.Packages)().initDoc(pkg);
27
28
  }, undefined, [props.packageId, refresh()]);
28
29
  if (!pkg) {
29
- return react_1.default.createElement(loading_indicator_1.LoadingIndicator, null);
30
+ return (0, jsx_runtime_1.jsx)(loading_indicator_1.LoadingIndicator, {});
30
31
  }
31
32
  const addActions = [
32
33
  {
33
- label: 'Reload Package',
34
+ label: "Reload Package",
34
35
  onClick: async () => {
35
36
  await peers_sdk_1.rpcServerCalls.addOrUpdatePackage(pkg.packageId, { update: true });
36
37
  await pkg.load();
37
38
  window.location.reload();
38
- }
39
+ },
39
40
  },
40
41
  ];
41
42
  if (!pkg.remoteRepo) {
42
43
  addActions.push({
43
- label: 'Make Remote ',
44
+ label: "Make Remote ",
44
45
  // className: 'text-bg-warning',
45
46
  onClick: async () => {
46
47
  if (confirm(`Create a remote repository from this local one: ${pkg.name}`)) {
47
48
  try {
48
- await peers_sdk_1.rpcServerCalls.addOrUpdatePackage(pkg.packageId, { linkRemote: true, update: true });
49
+ await peers_sdk_1.rpcServerCalls.addOrUpdatePackage(pkg.packageId, {
50
+ linkRemote: true,
51
+ update: true,
52
+ });
49
53
  refresh(Date.now());
50
54
  }
51
55
  catch (err) {
52
56
  alert(`Error linking remote repo: ${err}`);
53
57
  }
54
58
  }
55
- }
59
+ },
56
60
  });
57
61
  }
58
- return (react_1.default.createElement("div", { className: "container-fluid p-3" },
59
- react_1.default.createElement("div", { className: "d-flex" },
60
- react_1.default.createElement("div", null,
61
- react_1.default.createElement("h4", null,
62
- react_1.default.createElement("i", { className: "bi bi-box-fill me-2" }))),
63
- react_1.default.createElement("div", { className: "flex-grow-1" },
64
- react_1.default.createElement("h4", null,
65
- react_1.default.createElement(input_1.Input, { key: pkg.packageId, className: 'border border-0', style: { width: '100%', outline: 'none', backgroundColor: 'transparent' }, value: pkg.qs.name }))),
66
- react_1.default.createElement("div", null,
67
- react_1.default.createElement(save_button_1.SaveButton, { key: pkg.packageId, doc: pkg, onClick: async () => {
68
- await pkg.save();
69
- await saveDeviceTagRef.current?.();
70
- }, addActions: [
71
- ...addActions
72
- ] }))),
73
- react_1.default.createElement(tabs_1.Tabs, { key: pkg.packageId, tabs: [
74
- {
75
- name: 'Info', content: react_1.default.createElement(tabs_1.ScreenTabBody, null,
76
- react_1.default.createElement(package_info_1.PackageInfo, { pkg: pkg, saveDeviceTagRef: saveDeviceTagRef }))
77
- },
78
- {
79
- name: 'Versions', content: react_1.default.createElement(tabs_1.ScreenTabBody, null,
80
- react_1.default.createElement(package_versions_1.PackageVersionsList, { pkg: pkg }))
81
- },
82
- {
83
- name: 'Components', content: react_1.default.createElement(tabs_1.ScreenTabBody, null, "TODO - show all of the different components in the package")
84
- },
85
- {
86
- name: 'Dependencies', content: react_1.default.createElement(tabs_1.ScreenTabBody, null, "TODO - show all of the dependencies of the package")
87
- },
88
- ] })));
62
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "container-fluid p-3", children: [(0, jsx_runtime_1.jsxs)("div", { className: "d-flex", children: [(0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("h4", { children: (0, jsx_runtime_1.jsx)("i", { className: "bi bi-box-fill me-2" }) }) }), (0, jsx_runtime_1.jsx)("div", { className: "flex-grow-1", children: (0, jsx_runtime_1.jsx)("h4", { children: (0, jsx_runtime_1.jsx)(input_1.Input, { className: "border border-0", style: { width: "100%", outline: "none", backgroundColor: "transparent" }, value: pkg.qs.name }, pkg.packageId) }) }), (0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)(save_button_1.SaveButton, { doc: pkg, onClick: async () => {
63
+ await pkg.save();
64
+ await saveDeviceTagRef.current?.();
65
+ }, addActions: [...addActions] }, pkg.packageId) })] }), (0, jsx_runtime_1.jsx)(tabs_1.Tabs, { tabs: [
66
+ {
67
+ name: "Info",
68
+ content: ((0, jsx_runtime_1.jsx)(tabs_1.ScreenTabBody, { children: (0, jsx_runtime_1.jsx)(package_info_1.PackageInfo, { pkg: pkg, saveDeviceTagRef: saveDeviceTagRef }) })),
69
+ },
70
+ {
71
+ name: "Versions",
72
+ content: ((0, jsx_runtime_1.jsx)(tabs_1.ScreenTabBody, { children: (0, jsx_runtime_1.jsx)(package_versions_1.PackageVersionsList, { pkg: pkg }) })),
73
+ },
74
+ {
75
+ name: "Components",
76
+ content: ((0, jsx_runtime_1.jsx)(tabs_1.ScreenTabBody, { children: "TODO - show all of the different components in the package" })),
77
+ },
78
+ {
79
+ name: "Dependencies",
80
+ content: ((0, jsx_runtime_1.jsx)(tabs_1.ScreenTabBody, { children: "TODO - show all of the dependencies of the package" })),
81
+ },
82
+ ] }, pkg.packageId)] }));
89
83
  };
90
84
  exports.PackageDetails = PackageDetails;
@@ -1,6 +1,6 @@
1
+ import { type IDoc, type IPackage } from "@peers-app/peers-sdk";
1
2
  import React from "react";
2
- import { IDoc, IPackage } from "@peers-app/peers-sdk";
3
3
  export declare const PackageInfo: (props: {
4
4
  pkg: IDoc<IPackage>;
5
5
  saveDeviceTagRef?: React.MutableRefObject<(() => Promise<void>) | null>;
6
- }) => React.JSX.Element;
6
+ }) => import("react/jsx-runtime").JSX.Element;
@@ -4,13 +4,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.PackageInfo = void 0;
7
- const react_1 = __importDefault(require("react"));
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const peers_sdk_1 = require("@peers-app/peers-sdk");
9
+ const react_1 = __importDefault(require("react"));
10
+ const input_1 = require("../../components/input");
9
11
  const markdown_with_mentions_1 = require("../../components/markdown-with-mentions");
10
12
  const tooltip_1 = require("../../components/tooltip");
11
- const input_1 = require("../../components/input");
12
13
  const hooks_1 = require("../../hooks");
13
- const deviceVersionTagVar = (0, peers_sdk_1.groupDeviceVar)('deviceVersionTag');
14
+ const deviceVersionTagVar = (0, peers_sdk_1.groupDeviceVar)("deviceVersionTag");
14
15
  const PackageInfo = (props) => {
15
16
  const { pkg } = props;
16
17
  const [activeVersionId] = (0, hooks_1.useObservable)(pkg.qs.activePackageVersionId);
@@ -21,14 +22,14 @@ const PackageInfo = (props) => {
21
22
  defaultValue: `${peers_sdk_1.packagesRootDir}/${pkg.name}`,
22
23
  });
23
24
  const [localPath, setLocalPath] = (0, hooks_1.useObservable)(localPathVar);
24
- const [deviceTagDraft, setDeviceTagDraft] = react_1.default.useState(deviceTag || '');
25
+ const [deviceTagDraft, setDeviceTagDraft] = react_1.default.useState(deviceTag || "");
25
26
  const savingRef = react_1.default.useRef(false);
26
27
  react_1.default.useEffect(() => {
27
28
  if (!savingRef.current) {
28
- setDeviceTagDraft(deviceTag || '');
29
+ setDeviceTagDraft(deviceTag || "");
29
30
  }
30
31
  }, [deviceTag]);
31
- const deviceTagDirty = deviceTagDraft.trim() !== (deviceTag || '');
32
+ const deviceTagDirty = deviceTagDraft.trim() !== (deviceTag || "");
32
33
  const prevDirtyRef = react_1.default.useRef(false);
33
34
  react_1.default.useEffect(() => {
34
35
  if (deviceTagDirty && !prevDirtyRef.current) {
@@ -38,11 +39,11 @@ const PackageInfo = (props) => {
38
39
  pkg.q(Math.max(0, (pkg.q() || 0) - 1));
39
40
  }
40
41
  prevDirtyRef.current = deviceTagDirty;
41
- }, [deviceTagDirty]);
42
+ }, [deviceTagDirty, pkg.q]);
42
43
  if (props.saveDeviceTagRef) {
43
44
  props.saveDeviceTagRef.current = async () => {
44
45
  const val = deviceTagDraft.trim();
45
- if (val !== (deviceTag || '')) {
46
+ if (val !== (deviceTag || "")) {
46
47
  savingRef.current = true;
47
48
  try {
48
49
  if (val) {
@@ -65,12 +66,12 @@ const PackageInfo = (props) => {
65
66
  }, undefined, [activeVersionId]);
66
67
  const newerLevel = (0, hooks_1.usePromise)(async () => {
67
68
  if (!activeVersionId)
68
- return 'uptodate';
69
+ return "uptodate";
69
70
  const all = await (0, peers_sdk_1.PackageVersions)().list({ packageId: pkg.packageId });
70
- const active = all.find(v => v.packageVersionId === activeVersionId);
71
+ const active = all.find((v) => v.packageVersionId === activeVersionId);
71
72
  if (!active?.version)
72
- return 'uptodate';
73
- const parse = (v) => v.split('.').map(Number);
73
+ return "uptodate";
74
+ const parse = (v) => v.split(".").map(Number);
74
75
  const [aMaj, aMin, aPat] = parse(active.version);
75
76
  let highest = null;
76
77
  for (const v of all) {
@@ -80,88 +81,34 @@ const PackageInfo = (props) => {
80
81
  continue;
81
82
  const [maj, min, pat] = parse(v.version);
82
83
  if (maj > aMaj)
83
- return 'major';
84
+ return "major";
84
85
  if (maj === aMaj && min > aMin) {
85
- highest = 'minor';
86
+ highest = "minor";
86
87
  continue;
87
88
  }
88
89
  if (maj === aMaj && min === aMin && pat > aPat && !highest) {
89
- highest = 'patch';
90
+ highest = "patch";
90
91
  continue;
91
92
  }
92
- if (maj === aMaj && min === aMin && pat === aPat && (v.createdAt || '') > (active.createdAt || '') && !highest) {
93
- highest = 'patch';
93
+ if (maj === aMaj &&
94
+ min === aMin &&
95
+ pat === aPat &&
96
+ (v.createdAt || "") > (active.createdAt || "") &&
97
+ !highest) {
98
+ highest = "patch";
94
99
  }
95
100
  }
96
- return highest || 'uptodate';
101
+ return highest || "uptodate";
97
102
  }, undefined, [activeVersionId, pkg.packageId, followVersionTags, deviceTag]);
98
- const isPinned = versionFollowRange === 'pinned';
99
- return (react_1.default.createElement("div", null,
100
- react_1.default.createElement("small", null, "Name:"),
101
- react_1.default.createElement(input_1.Input, { value: pkg.qs.name, className: "form-control mb-3 p-0 ps-2", placeholder: "Package name", title: "Package name", disabled: true }),
102
- react_1.default.createElement("div", { className: "mt-2" },
103
- react_1.default.createElement("small", null,
104
- "Local Path:",
105
- react_1.default.createElement("small", null,
106
- react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: `The local path to the directory containing the package. This will open in VS Code if it's installed otherwise this will open in your native file system` }),
107
- react_1.default.createElement("button", { className: "btn btn-sm btn-link", onClick: () => {
108
- peers_sdk_1.rpcServerCalls.openPackage(localPath || peers_sdk_1.packagesRootDir);
109
- } }, "Open Local"))),
110
- react_1.default.createElement("input", { type: "text", className: "form-control mb-3 p-0 ps-2", placeholder: "~/peers/packages/my-package", value: localPath || '', onChange: e => setLocalPath(e.target.value) })),
111
- pkg.remoteRepo && (react_1.default.createElement("div", { className: "mt-2" },
112
- react_1.default.createElement("small", null,
113
- "Source URL:",
114
- react_1.default.createElement("small", null,
115
- react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: `The remote source of this package. Often a github repository URL or a link to the Peers page for the package.` }),
116
- react_1.default.createElement("button", { className: "btn btn-sm btn-link", onClick: () => {
117
- peers_sdk_1.rpcServerCalls.openLinkInBrowser(pkg.remoteRepo);
118
- } }, "Open Remote"))),
119
- react_1.default.createElement(input_1.Input, { value: pkg.qs.remoteRepo, className: "form-control mb-3 p-0 ps-2", disabled: true }))),
120
- react_1.default.createElement("div", { className: "mt-2" },
121
- react_1.default.createElement("hr", null),
122
- react_1.default.createElement("small", null,
123
- "Version:",
124
- react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "The currently active version of this package. Manage versions in the Versions tab." })),
125
- activeVersion ? (react_1.default.createElement("div", { className: "d-flex align-items-center mt-1 mb-3" },
126
- react_1.default.createElement("strong", { className: "me-2" },
127
- "v",
128
- activeVersion.version),
129
- activeVersion.versionTag && (react_1.default.createElement("span", { className: `badge ${activeVersion.versionTag.startsWith('beta') ? 'text-bg-warning' : 'text-bg-info'} me-2` }, activeVersion.versionTag)),
130
- react_1.default.createElement("code", { className: "text-muted small me-2" }, activeVersion.packageVersionHash?.substring(0, 8)),
131
- newerLevel === 'uptodate' ? (react_1.default.createElement("span", { className: "badge text-bg-success" }, "Up to date")) : newerLevel ? (react_1.default.createElement("span", { className: `badge text-bg-${newerLevel === 'major' ? 'danger' : newerLevel === 'minor' ? 'warning' : 'info'}` },
132
- "Newer ",
133
- newerLevel,
134
- " version available")) : null)) : (react_1.default.createElement("div", { className: "text-muted small mt-1 mb-3" }, "No active version")),
135
- react_1.default.createElement("div", { className: "mb-3" },
136
- react_1.default.createElement("small", null,
137
- "Auto-Update Range:",
138
- react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "Controls which new versions are auto-activated. **Pinned** = never auto-update. **Patch** = same major.minor (e.g. 1.2.x). **Minor** = same major (e.g. 1.x.x). **Latest** = always auto-update to newest." })),
139
- react_1.default.createElement("select", { className: "form-select form-select-sm", value: versionFollowRange || 'latest', onChange: (e) => {
140
- const val = e.target.value;
141
- pkg.versionFollowRange = val === 'latest' ? undefined : val;
142
- } },
143
- react_1.default.createElement("option", { value: "latest" }, "Latest (auto-update to newest)"),
144
- react_1.default.createElement("option", { value: "minor" }, "Minor (same major version)"),
145
- react_1.default.createElement("option", { value: "patch" }, "Patch (same major.minor version)"),
146
- react_1.default.createElement("option", { value: "pinned" }, "Pinned (no auto-updates)"))),
147
- react_1.default.createElement("div", { className: `mb-3 ${isPinned ? 'opacity-50' : ''}` },
148
- react_1.default.createElement("small", null,
149
- "Follow Version Tags:",
150
- react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "Which version tags to auto-activate. Leave empty for **current** (follows the active version's tag). Use `*` for any tag, or a comma-separated list like `stable,prod`." })),
151
- react_1.default.createElement(input_1.Input, { value: pkg.qs.followVersionTags, className: "form-control form-control-sm p-0 ps-2", placeholder: `Following "${activeVersion?.versionTag || 'stable'}"`, disabled: isPinned })),
152
- react_1.default.createElement("div", { className: "mb-2" },
153
- react_1.default.createElement("small", null,
154
- "Device-Specific Version Tag:",
155
- react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: "Override the tag policy for this device only. For example, set to `beta` to test pre-release versions on this device without affecting other devices or group members. This is not synced." })),
156
- react_1.default.createElement("div", { className: "d-flex align-items-center gap-2" },
157
- react_1.default.createElement("input", { type: "text", className: "form-control form-control-sm p-0 ps-2", placeholder: "e.g. beta", value: deviceTagDraft, onChange: (e) => setDeviceTagDraft(e.target.value) }),
158
- deviceTagDraft && (react_1.default.createElement("button", { className: "btn btn-sm btn-outline-secondary", title: "Clear device tag override", onClick: () => setDeviceTagDraft('') },
159
- react_1.default.createElement("i", { className: "bi bi-x-lg" })))))),
160
- react_1.default.createElement("div", { className: "mt-2" },
161
- react_1.default.createElement("hr", null),
162
- react_1.default.createElement("small", null,
163
- "Description:",
164
- react_1.default.createElement(tooltip_1.Tooltip, { markdownContent: `This should be edited in the package's README.md. It will automatically update when you restart Peers or reload the package.` })),
165
- react_1.default.createElement(markdown_with_mentions_1.MarkdownWithMentions, { content: pkg.description || '' }))));
103
+ const isPinned = versionFollowRange === "pinned";
104
+ const remoteRepoUrl = pkg.remoteRepo;
105
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("small", { children: "Name:" }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: pkg.qs.name, className: "form-control mb-3 p-0 ps-2", placeholder: "Package name", title: "Package name", disabled: true }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Local Path:", (0, jsx_runtime_1.jsxs)("small", { children: [(0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: `The local path to the directory containing the package. This will open in VS Code if it's installed otherwise this will open in your native file system` }), (0, jsx_runtime_1.jsx)("button", { className: "btn btn-sm btn-link", onClick: () => {
106
+ peers_sdk_1.rpcServerCalls.openPackage(localPath || peers_sdk_1.packagesRootDir);
107
+ }, children: "Open Local" })] })] }), (0, jsx_runtime_1.jsx)("input", { type: "text", className: "form-control mb-3 p-0 ps-2", placeholder: "~/peers/packages/my-package", value: localPath || "", onChange: (e) => setLocalPath(e.target.value) })] }), remoteRepoUrl ? ((0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Source URL:", (0, jsx_runtime_1.jsxs)("small", { children: [(0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: `The remote source of this package. Often a github repository URL or a link to the Peers page for the package.` }), (0, jsx_runtime_1.jsx)("button", { className: "btn btn-sm btn-link", onClick: () => {
108
+ peers_sdk_1.rpcServerCalls.openLinkInBrowser(remoteRepoUrl);
109
+ }, children: "Open Remote" })] })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: pkg.qs.remoteRepo, className: "form-control mb-3 p-0 ps-2", disabled: true })] })) : null, (0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [(0, jsx_runtime_1.jsx)("hr", {}), (0, jsx_runtime_1.jsxs)("small", { children: ["Version:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "The currently active version of this package. Manage versions in the Versions tab." })] }), activeVersion ? ((0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center mt-1 mb-3", children: [(0, jsx_runtime_1.jsxs)("strong", { className: "me-2", children: ["v", activeVersion.version] }), activeVersion.versionTag && ((0, jsx_runtime_1.jsx)("span", { className: `badge ${activeVersion.versionTag.startsWith("beta") ? "text-bg-warning" : "text-bg-info"} me-2`, children: activeVersion.versionTag })), (0, jsx_runtime_1.jsx)("code", { className: "text-muted small me-2", children: activeVersion.packageVersionHash?.substring(0, 8) }), newerLevel === "uptodate" ? ((0, jsx_runtime_1.jsx)("span", { className: "badge text-bg-success", children: "Up to date" })) : newerLevel ? ((0, jsx_runtime_1.jsxs)("span", { className: `badge text-bg-${newerLevel === "major" ? "danger" : newerLevel === "minor" ? "warning" : "info"}`, children: ["Newer ", newerLevel, " version available"] })) : null] })) : ((0, jsx_runtime_1.jsx)("div", { className: "text-muted small mt-1 mb-3", children: "No active version" })), (0, jsx_runtime_1.jsxs)("div", { className: "mb-3", children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Auto-Update Range:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "Controls which new versions are auto-activated. **Pinned** = never auto-update. **Patch** = same major.minor (e.g. 1.2.x). **Minor** = same major (e.g. 1.x.x). **Latest** = always auto-update to newest." })] }), (0, jsx_runtime_1.jsxs)("select", { className: "form-select form-select-sm", value: versionFollowRange || "latest", onChange: (e) => {
110
+ const val = e.target.value;
111
+ pkg.versionFollowRange = val === "latest" ? undefined : val;
112
+ }, children: [(0, jsx_runtime_1.jsx)("option", { value: "latest", children: "Latest (auto-update to newest)" }), (0, jsx_runtime_1.jsx)("option", { value: "minor", children: "Minor (same major version)" }), (0, jsx_runtime_1.jsx)("option", { value: "patch", children: "Patch (same major.minor version)" }), (0, jsx_runtime_1.jsx)("option", { value: "pinned", children: "Pinned (no auto-updates)" })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: `mb-3 ${isPinned ? "opacity-50" : ""}`, children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Follow Version Tags:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "Which version tags to auto-activate. Leave empty for **current** (follows the active version's tag). Use `*` for any tag, or a comma-separated list like `stable,prod`." })] }), (0, jsx_runtime_1.jsx)(input_1.Input, { value: pkg.qs.followVersionTags, className: "form-control form-control-sm p-0 ps-2", placeholder: `Following "${activeVersion?.versionTag || "stable"}"`, disabled: isPinned })] }), (0, jsx_runtime_1.jsxs)("div", { className: "mb-2", children: [(0, jsx_runtime_1.jsxs)("small", { children: ["Device-Specific Version Tag:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: "Override the tag policy for this device only. For example, set to `beta` to test pre-release versions on this device without affecting other devices or group members. This is not synced." })] }), (0, jsx_runtime_1.jsxs)("div", { className: "d-flex align-items-center gap-2", children: [(0, jsx_runtime_1.jsx)("input", { type: "text", className: "form-control form-control-sm p-0 ps-2", placeholder: "e.g. beta", value: deviceTagDraft, onChange: (e) => setDeviceTagDraft(e.target.value) }), deviceTagDraft && ((0, jsx_runtime_1.jsx)("button", { className: "btn btn-sm btn-outline-secondary", title: "Clear device tag override", onClick: () => setDeviceTagDraft(""), children: (0, jsx_runtime_1.jsx)("i", { className: "bi bi-x-lg" }) }))] })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "mt-2", children: [(0, jsx_runtime_1.jsx)("hr", {}), (0, jsx_runtime_1.jsxs)("small", { children: ["Description:", (0, jsx_runtime_1.jsx)(tooltip_1.Tooltip, { markdownContent: `This should be edited in the package's README.md. It will automatically update when you restart Peers or reload the package.` })] }), (0, jsx_runtime_1.jsx)(markdown_with_mentions_1.MarkdownWithMentions, { content: pkg.description || "" })] })] }));
166
113
  };
167
114
  exports.PackageInfo = PackageInfo;
@@ -1,2 +1 @@
1
- import React from 'react';
2
- export declare const PackageList: () => React.JSX.Element;
1
+ export declare const PackageList: () => import("react/jsx-runtime").JSX.Element;