@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,5 +1,13 @@
1
- import React, { useState } from "react";
2
- import { computePackageVersionHash, IDoc, IPackage, IPackageVersion, Packages, PackageVersions, Users } from "@peers-app/peers-sdk";
1
+ import {
2
+ computePackageVersionHash,
3
+ type IDoc,
4
+ type IPackage,
5
+ type IPackageVersion,
6
+ Packages,
7
+ PackageVersions,
8
+ Users,
9
+ } from "@peers-app/peers-sdk";
10
+ import { useState } from "react";
3
11
  import { useObservable, useObservableState, usePromise } from "../../hooks";
4
12
 
5
13
  function formatDate(iso: string): string {
@@ -8,7 +16,7 @@ function formatDate(iso: string): string {
8
16
  const now = new Date();
9
17
  const diffMs = now.getTime() - d.getTime();
10
18
  const diffMins = Math.floor(diffMs / 60000);
11
- if (diffMins < 1) return 'just now';
19
+ if (diffMins < 1) return "just now";
12
20
  if (diffMins < 60) return `${diffMins}m ago`;
13
21
  const diffHours = Math.floor(diffMins / 60);
14
22
  if (diffHours < 24) return `${diffHours}h ago`;
@@ -21,10 +29,10 @@ function formatDate(iso: string): string {
21
29
  }
22
30
 
23
31
  function tagBadgeClass(tag?: string): string {
24
- if (!tag) return 'text-bg-secondary';
25
- if (tag.startsWith('beta')) return 'text-bg-warning';
26
- if (tag === 'stable') return 'text-bg-info';
27
- return 'text-bg-secondary';
32
+ if (!tag) return "text-bg-secondary";
33
+ if (tag.startsWith("beta")) return "text-bg-warning";
34
+ if (tag === "stable") return "text-bg-info";
35
+ return "text-bg-secondary";
28
36
  }
29
37
 
30
38
  export const PackageVersionsList = (props: { pkg: IDoc<IPackage> }) => {
@@ -35,29 +43,35 @@ export const PackageVersionsList = (props: { pkg: IDoc<IPackage> }) => {
35
43
  const [activating, setActivating] = useState<string | null>(null);
36
44
  const [deleting, setDeleting] = useState<string | null>(null);
37
45
  const [pinning, setPinning] = useState(false);
38
- const isPinned = versionFollowRange === 'pinned';
46
+ const isPinned = versionFollowRange === "pinned";
39
47
 
40
- const versions = usePromise(async () => {
41
- const all = await PackageVersions().list({ packageId: pkg.packageId });
42
- const parse = (v: string) => v.split('.').map(Number);
43
- const sorted = all.sort((a, b) => {
44
- const [aMaj, aMin, aPat] = parse(a.version || '0.0.0');
45
- const [bMaj, bMin, bPat] = parse(b.version || '0.0.0');
46
- if (bMaj !== aMaj) return bMaj - aMaj;
47
- if (bMin !== aMin) return bMin - aMin;
48
- if (bPat !== aPat) return bPat - aPat;
49
- return (b.createdAt || '').localeCompare(a.createdAt || '');
50
- });
51
- const uniqueCreatorIds = [...new Set(sorted.map(pv => pv.createdBy).filter(Boolean))];
52
- const userMap = new Map<string, string>();
53
- await Promise.all(uniqueCreatorIds.map(async (uid) => {
54
- try {
55
- const user = await Users().get(uid, { useCache: true });
56
- if (user?.name) userMap.set(uid, user.name);
57
- } catch {}
58
- }));
59
- return { sorted, userMap };
60
- }, undefined, [pkg.packageId, refreshKey()]);
48
+ const versions = usePromise(
49
+ async () => {
50
+ const all = await PackageVersions().list({ packageId: pkg.packageId });
51
+ const parse = (v: string) => v.split(".").map(Number);
52
+ const sorted = all.sort((a, b) => {
53
+ const [aMaj, aMin, aPat] = parse(a.version || "0.0.0");
54
+ const [bMaj, bMin, bPat] = parse(b.version || "0.0.0");
55
+ if (bMaj !== aMaj) return bMaj - aMaj;
56
+ if (bMin !== aMin) return bMin - aMin;
57
+ if (bPat !== aPat) return bPat - aPat;
58
+ return (b.createdAt || "").localeCompare(a.createdAt || "");
59
+ });
60
+ const uniqueCreatorIds = [...new Set(sorted.map((pv) => pv.createdBy).filter(Boolean))];
61
+ const userMap = new Map<string, string>();
62
+ await Promise.all(
63
+ uniqueCreatorIds.map(async (uid) => {
64
+ try {
65
+ const user = await Users().get(uid, { useCache: true });
66
+ if (user?.name) userMap.set(uid, user.name);
67
+ } catch {}
68
+ }),
69
+ );
70
+ return { sorted, userMap };
71
+ },
72
+ undefined,
73
+ [pkg.packageId, refreshKey()],
74
+ );
61
75
 
62
76
  async function activateVersion(pv: IPackageVersion) {
63
77
  setActivating(pv.packageVersionId);
@@ -77,7 +91,8 @@ export const PackageVersionsList = (props: { pkg: IDoc<IPackage> }) => {
77
91
  }
78
92
 
79
93
  async function deleteVersion(pv: IPackageVersion) {
80
- if (!confirm(`Delete version v${pv.version} (${pv.packageVersionHash?.substring(0, 8)})?`)) return;
94
+ if (!confirm(`Delete version v${pv.version} (${pv.packageVersionHash?.substring(0, 8)})?`))
95
+ return;
81
96
  setDeleting(pv.packageVersionId);
82
97
  try {
83
98
  await PackageVersions().delete(pv.packageVersionId);
@@ -91,7 +106,13 @@ export const PackageVersionsList = (props: { pkg: IDoc<IPackage> }) => {
91
106
 
92
107
  async function promoteVersion(pv: IPackageVersion, newTag: string) {
93
108
  try {
94
- const pvHash = computePackageVersionHash(pv.version, newTag, pv.packageBundleFileHash, pv.routesBundleFileHash, pv.uiBundleFileHash);
109
+ const pvHash = computePackageVersionHash(
110
+ pv.version,
111
+ newTag,
112
+ pv.packageBundleFileHash,
113
+ pv.routesBundleFileHash,
114
+ pv.uiBundleFileHash,
115
+ );
95
116
  const updated = { ...pv, versionTag: newTag, packageVersionHash: pvHash };
96
117
  await PackageVersions().signAndSave(updated, { saveAsSnapshot: true });
97
118
  refreshKey(refreshKey() + 1);
@@ -102,7 +123,13 @@ export const PackageVersionsList = (props: { pkg: IDoc<IPackage> }) => {
102
123
 
103
124
  async function updateVersion(pv: IPackageVersion, newSemver: string) {
104
125
  try {
105
- const pvHash = computePackageVersionHash(newSemver, pv.versionTag || 'beta', pv.packageBundleFileHash, pv.routesBundleFileHash, pv.uiBundleFileHash);
126
+ const pvHash = computePackageVersionHash(
127
+ newSemver,
128
+ pv.versionTag || "beta",
129
+ pv.packageBundleFileHash,
130
+ pv.routesBundleFileHash,
131
+ pv.uiBundleFileHash,
132
+ );
106
133
  const updated = { ...pv, version: newSemver, packageVersionHash: pvHash };
107
134
  await PackageVersions().signAndSave(updated, { saveAsSnapshot: true });
108
135
  refreshKey(refreshKey() + 1);
@@ -116,7 +143,7 @@ export const PackageVersionsList = (props: { pkg: IDoc<IPackage> }) => {
116
143
  try {
117
144
  const current = await Packages().get(pkg.packageId);
118
145
  if (current) {
119
- current.versionFollowRange = 'pinned';
146
+ current.versionFollowRange = "pinned";
120
147
  await Packages().signAndSave(current);
121
148
  await pkg.load();
122
149
  }
@@ -128,7 +155,11 @@ export const PackageVersionsList = (props: { pkg: IDoc<IPackage> }) => {
128
155
  }
129
156
 
130
157
  if (!versions) {
131
- return <div className="text-center p-3"><div className="spinner-border spinner-border-sm" /></div>;
158
+ return (
159
+ <div className="text-center p-3">
160
+ <div className="spinner-border spinner-border-sm" />
161
+ </div>
162
+ );
132
163
  }
133
164
 
134
165
  const { sorted, userMap } = versions;
@@ -144,9 +175,11 @@ export const PackageVersionsList = (props: { pkg: IDoc<IPackage> }) => {
144
175
 
145
176
  return (
146
177
  <div>
147
- <small className="text-muted">{sorted.length} version{sorted.length !== 1 ? 's' : ''}</small>
178
+ <small className="text-muted">
179
+ {sorted.length} version{sorted.length !== 1 ? "s" : ""}
180
+ </small>
148
181
  <div className="list-group mt-2">
149
- {sorted.map(pv => (
182
+ {sorted.map((pv) => (
150
183
  <VersionRow
151
184
  key={pv.packageVersionId}
152
185
  pv={pv}
@@ -168,7 +201,7 @@ export const PackageVersionsList = (props: { pkg: IDoc<IPackage> }) => {
168
201
  );
169
202
  };
170
203
 
171
- const TAG_OPTIONS = ['beta', 'stable'];
204
+ const TAG_OPTIONS = ["beta", "stable"];
172
205
 
173
206
  function VersionRow(props: {
174
207
  pv: IPackageVersion;
@@ -202,31 +235,30 @@ function VersionRow(props: {
202
235
  setEditingVersion(false);
203
236
  }
204
237
 
205
- const currentTag = pv.versionTag || 'beta';
206
- const promoteTargets = TAG_OPTIONS.filter(t => t !== currentTag);
238
+ const currentTag = pv.versionTag || "beta";
239
+ const promoteTargets = TAG_OPTIONS.filter((t) => t !== currentTag);
207
240
 
208
241
  return (
209
- <div className={`list-group-item ${isActive ? 'list-group-item-success' : ''}`}>
242
+ <div className={`list-group-item ${isActive ? "list-group-item-success" : ""}`}>
210
243
  <div className="d-flex align-items-center justify-content-between">
211
244
  <div className="d-flex align-items-center flex-wrap">
212
245
  {editingVersion ? (
213
246
  <input
214
247
  type="text"
215
248
  className="form-control form-control-sm me-2"
216
- style={{ width: '7em' }}
249
+ style={{ width: "7em" }}
217
250
  value={versionDraft}
218
- onChange={e => setVersionDraft(e.target.value)}
251
+ onChange={(e) => setVersionDraft(e.target.value)}
219
252
  onBlur={commitVersion}
220
- onKeyDown={e => {
221
- if (e.key === 'Enter') commitVersion();
222
- if (e.key === 'Escape') setEditingVersion(false);
253
+ onKeyDown={(e) => {
254
+ if (e.key === "Enter") commitVersion();
255
+ if (e.key === "Escape") setEditingVersion(false);
223
256
  }}
224
- autoFocus
225
257
  />
226
258
  ) : (
227
259
  <strong
228
260
  className="me-2"
229
- style={{ cursor: 'pointer' }}
261
+ style={{ cursor: "pointer" }}
230
262
  onClick={startEditing}
231
263
  title="Click to edit version"
232
264
  >
@@ -234,17 +266,11 @@ function VersionRow(props: {
234
266
  </strong>
235
267
  )}
236
268
  {pv.versionTag && (
237
- <span className={`badge ${tagBadgeClass(pv.versionTag)} me-2`}>
238
- {pv.versionTag}
239
- </span>
269
+ <span className={`badge ${tagBadgeClass(pv.versionTag)} me-2`}>{pv.versionTag}</span>
240
270
  )}
241
- <code className="text-muted small me-2">
242
- {pv.packageVersionHash?.substring(0, 8)}
243
- </code>
271
+ <code className="text-muted small me-2">{pv.packageVersionHash?.substring(0, 8)}</code>
244
272
  <small className="text-muted me-2">{formatDate(pv.createdAt)}</small>
245
- {creatorName && (
246
- <small className="text-muted">by {creatorName}</small>
247
- )}
273
+ {creatorName && <small className="text-muted">by {creatorName}</small>}
248
274
  </div>
249
275
  <div className="d-flex gap-1 align-items-center">
250
276
  {promoteTargets.length > 0 && (
@@ -257,12 +283,9 @@ function VersionRow(props: {
257
283
  Promote
258
284
  </button>
259
285
  <ul className="dropdown-menu dropdown-menu-end">
260
- {promoteTargets.map(tag => (
286
+ {promoteTargets.map((tag) => (
261
287
  <li key={tag}>
262
- <button
263
- className="dropdown-item"
264
- onClick={() => props.onPromote(pv, tag)}
265
- >
288
+ <button className="dropdown-item" onClick={() => props.onPromote(pv, tag)}>
266
289
  {currentTag} &rarr; {tag}
267
290
  </button>
268
291
  </li>
@@ -270,22 +293,24 @@ function VersionRow(props: {
270
293
  </ul>
271
294
  </div>
272
295
  )}
273
- {isActive ? (<>
274
- <button
275
- className="btn btn-sm btn-outline-secondary"
276
- disabled={isPinned || pinning}
277
- onClick={() => props.onPin()}
278
- title={isPinned ? 'Already pinned' : 'Pin to this version (disable auto-updates)'}
279
- >
280
- {pinning ? (
281
- <span className="spinner-border spinner-border-sm" />
282
- ) : (
283
- <i className="bi bi-pin-fill"></i>
284
- )}
285
- {isPinned ? ' Pinned' : ' Pin'}
286
- </button>
287
- <span className="badge text-bg-success align-self-center">active</span>
288
- </>) : (
296
+ {isActive ? (
297
+ <>
298
+ <button
299
+ className="btn btn-sm btn-outline-secondary"
300
+ disabled={isPinned || pinning}
301
+ onClick={() => props.onPin()}
302
+ title={isPinned ? "Already pinned" : "Pin to this version (disable auto-updates)"}
303
+ >
304
+ {pinning ? (
305
+ <span className="spinner-border spinner-border-sm" />
306
+ ) : (
307
+ <i className="bi bi-pin-fill"></i>
308
+ )}
309
+ {isPinned ? " Pinned" : " Pin"}
310
+ </button>
311
+ <span className="badge text-bg-success align-self-center">active</span>
312
+ </>
313
+ ) : (
289
314
  <button
290
315
  className="btn btn-sm btn-outline-primary"
291
316
  disabled={activating === pv.packageVersionId}
@@ -1,5 +1,11 @@
1
- import { IDoc, IOSchema, IPeerType, Observable, PeerTypes } from "@peers-app/peers-sdk";
2
- import React, { useEffect } from "react";
1
+ import {
2
+ type IDoc,
3
+ type IOSchema,
4
+ type IPeerType,
5
+ type Observable,
6
+ PeerTypes,
7
+ } from "@peers-app/peers-sdk";
8
+ import { useEffect } from "react";
3
9
  import { Input } from "../../components/input";
4
10
  import { IOSchemaEditor } from "../../components/io-schema";
5
11
  import { LoadingIndicator } from "../../components/loading-indicator";
@@ -15,26 +21,31 @@ interface IProps {
15
21
  }
16
22
 
17
23
  export const PeerTypeDetails = (props: IProps) => {
18
-
19
- const valueType = usePromise(async () => {
20
- const valueType = await PeerTypes().get(props.peerTypeId);
21
- if (!valueType) {
22
- throw new Error('Variable not found');
23
- }
24
- const doc = PeerTypes().initDoc(valueType);
25
- updateActiveTabTitle(doc.name || "Type");
26
- return doc;
27
- }, undefined, [props.peerTypeId]);
28
-
24
+ const valueType = usePromise(
25
+ async () => {
26
+ const valueType = await PeerTypes().get(props.peerTypeId);
27
+ if (!valueType) {
28
+ throw new Error("Variable not found");
29
+ }
30
+ const doc = PeerTypes().initDoc(valueType);
31
+ updateActiveTabTitle(doc.name || "Type");
32
+ return doc;
33
+ },
34
+ undefined,
35
+ [props.peerTypeId],
36
+ );
29
37
 
30
38
  useEffect(() => {
31
39
  if (!valueType) return;
32
40
  const sub = valueType.qs.name.subscribe(() => {
33
- valueType.name = valueType.qs.name().replaceAll(/\s/g, '_').replaceAll(/[^a-zA-Z0-9_-]/g, '');
41
+ valueType.name = valueType.qs
42
+ .name()
43
+ .replaceAll(/\s/g, "_")
44
+ .replaceAll(/[^a-zA-Z0-9_-]/g, "");
34
45
  });
35
46
  return () => {
36
47
  sub.dispose();
37
- }
48
+ };
38
49
  }, [valueType]);
39
50
 
40
51
  if (!valueType) {
@@ -43,7 +54,6 @@ export const PeerTypeDetails = (props: IProps) => {
43
54
 
44
55
  return (
45
56
  <div className="container-fluid p-3">
46
-
47
57
  <div className="d-flex">
48
58
  <div>
49
59
  <h4>
@@ -54,17 +64,14 @@ export const PeerTypeDetails = (props: IProps) => {
54
64
  <h4>
55
65
  <Input
56
66
  key={valueType.peerTypeId}
57
- className='border border-0'
58
- style={{ width: '100%', outline: 'none', backgroundColor: 'transparent' }}
67
+ className="border border-0"
68
+ style={{ width: "100%", outline: "none", backgroundColor: "transparent" }}
59
69
  value={valueType.qs.name}
60
70
  />
61
71
  </h4>
62
72
  </div>
63
73
  <div>
64
- <SaveButton
65
- key={valueType.peerTypeId}
66
- doc={valueType}
67
- />
74
+ <SaveButton key={valueType.peerTypeId} doc={valueType} />
68
75
  </div>
69
76
  </div>
70
77
 
@@ -72,32 +79,34 @@ export const PeerTypeDetails = (props: IProps) => {
72
79
  key={valueType.peerTypeId}
73
80
  tabs={[
74
81
  {
75
- name: 'Info', content:
82
+ name: "Info",
83
+ content: (
76
84
  <ScreenTabBody>
77
85
  <VariableInfo valueType={valueType} />
78
86
  </ScreenTabBody>
87
+ ),
79
88
  },
80
89
  {
81
- name: 'Schema', content:
90
+ name: "Schema",
91
+ content: (
82
92
  <ScreenTabBody>
83
93
  <VariableSchema valueType={valueType} />
84
94
  </ScreenTabBody>
95
+ ),
85
96
  },
86
97
  ]}
87
98
  />
88
99
  </div>
89
- )
90
- }
91
-
100
+ );
101
+ };
92
102
 
93
103
  const VariableInfo = (props: { valueType: IDoc<IPeerType> }) => {
94
- const { valueType } = props
104
+ const { valueType } = props;
95
105
 
96
- valueType.description = valueType.description || '';
106
+ valueType.description = valueType.description || "";
97
107
 
98
108
  return (
99
109
  <div>
100
-
101
110
  <small className="text-body-secondary">Name:</small>
102
111
  <Input
103
112
  value={valueType.qs.name}
@@ -109,33 +118,34 @@ const VariableInfo = (props: { valueType: IDoc<IPeerType> }) => {
109
118
  <small className="text-body-secondary">
110
119
  Icon Class:
111
120
  <small>
112
- <Tooltip markdownContent={[
113
- 'Icon classes can be found at:',
114
- '[Bootstrap Icons](https://icons.getbootstrap.com/)',
115
- ].join(' ')} />
121
+ <Tooltip
122
+ markdownContent={[
123
+ "Icon classes can be found at:",
124
+ "[Bootstrap Icons](https://icons.getbootstrap.com/)",
125
+ ].join(" ")}
126
+ />
116
127
  </small>
117
128
  </small>
118
129
  <IconPicker icon={valueType.qs.iconClass} />
119
-
120
130
 
121
131
  <small className="mt-2 text-body-secondary">Description:</small>
122
- <MarkdownEditorInline
123
- value={valueType.qs.description as Observable<string>}
124
- />
125
-
132
+ <MarkdownEditorInline value={valueType.qs.description as Observable<string>} />
126
133
  </div>
127
- )
128
- }
134
+ );
135
+ };
129
136
 
130
137
  const VariableSchema = (props: { valueType: IDoc<IPeerType> }) => {
131
- const { valueType } = props
138
+ const { valueType } = props;
132
139
 
133
140
  return (
134
141
  <div>
135
- <IOSchemaEditor ioSchema={valueType.qs.schema as Observable<IOSchema>} simpleValueName="value" />
142
+ <IOSchemaEditor
143
+ ioSchema={valueType.qs.schema as Observable<IOSchema>}
144
+ simpleValueName="value"
145
+ />
136
146
  </div>
137
- )
138
- }
147
+ );
148
+ };
139
149
 
140
150
  export const IconPicker = (props: { icon: Observable<string | undefined> }) => {
141
151
  const { icon } = props;
@@ -143,7 +153,7 @@ export const IconPicker = (props: { icon: Observable<string | undefined> }) => {
143
153
  useObservable(icon);
144
154
 
145
155
  if (icon() === undefined) {
146
- icon('');
156
+ icon("");
147
157
  }
148
158
 
149
159
  return (
@@ -153,10 +163,10 @@ export const IconPicker = (props: { icon: Observable<string | undefined> }) => {
153
163
  className="form-control mb-3 p-0 ps-2"
154
164
  placeholder="icon class"
155
165
  title="Icon"
156
- />
157
- <div className="me-2 ms-2" style={{ width: '22px'}}>
166
+ />
167
+ <div className="me-2 ms-2" style={{ width: "22px" }}>
158
168
  <i className={icon()}></i>
159
169
  </div>
160
170
  </div>
161
- )
162
- }
171
+ );
172
+ };
@@ -1,17 +1,16 @@
1
- import React from 'react';
2
- import { IOSchemaType, IPeerType, newid, PeerTypes } from "@peers-app/peers-sdk";
3
- import { MarkdownWithMentions } from '../../components/markdown-with-mentions';
4
- import { mainContentPath } from '../../globals';
5
- import { ListScreen } from '../../components/list-screen';
6
- import { registerInternalPeersUI } from '../../ui-router/ui-loader';
1
+ import { IOSchemaType, type IPeerType, newid, PeerTypes } from "@peers-app/peers-sdk";
2
+ import { ListScreen } from "../../components/list-screen";
3
+ import { MarkdownWithMentions } from "../../components/markdown-with-mentions";
4
+ import { mainContentPath } from "../../globals";
5
+ import { registerInternalPeersUI } from "../../ui-router/ui-loader";
7
6
 
8
7
  export function PeerTypeLists() {
9
8
  async function newRecord(name: string) {
10
- const peerTypeName = name.replace(/\s+/g, '_');
9
+ const peerTypeName = name.replace(/\s+/g, "_");
11
10
  let valueType = await PeerTypes().insert({
12
11
  peerTypeId: newid(),
13
12
  name: peerTypeName,
14
- description: '',
13
+ description: "",
15
14
  schema: {
16
15
  type: IOSchemaType.none,
17
16
  fields: [],
@@ -24,25 +23,17 @@ export function PeerTypeLists() {
24
23
 
25
24
  function getFilter(searchText: string) {
26
25
  return {
27
- $or: [
28
- { name: { $matchWords: searchText } },
29
- { description: { $matchWords: searchText } },
30
- ],
26
+ $or: [{ name: { $matchWords: searchText } }, { description: { $matchWords: searchText } }],
31
27
  };
32
28
  }
33
29
 
34
30
  function renderItem(item: IPeerType) {
35
31
  return (
36
- <div
37
- key={item.peerTypeId}
38
- className='container-fluid pb-4'
39
- >
32
+ <div key={item.peerTypeId} className="container-fluid pb-4">
40
33
  <i className={item.iconClass ?? "bi bi-code-square"}></i>&nbsp;
41
- <a href={`#peer-types/${item.peerTypeId}`}>
42
- {item.name || '<empty-name>'}
43
- </a>
44
- <div style={{ paddingLeft: '20px' }}>
45
- <MarkdownWithMentions content={item.description || ''} />
34
+ <a href={`#peer-types/${item.peerTypeId}`}>{item.name || "<empty-name>"}</a>
35
+ <div style={{ paddingLeft: "20px" }}>
36
+ <MarkdownWithMentions content={item.description || ""} />
46
37
  </div>
47
38
  </div>
48
39
  );
@@ -53,22 +44,21 @@ export function PeerTypeLists() {
53
44
  table={PeerTypes()}
54
45
  newRecord={newRecord}
55
46
  getFilter={getFilter}
56
- sortBy={['name']}
47
+ sortBy={["name"]}
57
48
  renderItem={renderItem}
58
49
  placeholderName="value type"
59
50
  />
60
51
  );
61
52
  }
62
53
 
63
-
64
54
  registerInternalPeersUI({
65
- peersUIId: '00m5fshz2g6ea23v8z6y0a1cj',
55
+ peersUIId: "00m5fshz2g6ea23v8z6y0a1cj",
66
56
  component: PeerTypeLists,
67
57
  routes: [
68
58
  {
69
- isMatch: (props, context) => context.path === 'peer-types',
70
- uiCategory: 'screen',
71
- priority: 2
72
- }
73
- ]
74
- });
59
+ isMatch: (_props, context) => context.path === "peer-types",
60
+ uiCategory: "screen",
61
+ priority: 2,
62
+ },
63
+ ],
64
+ });