@peers-app/peers-ui 0.0.14

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 (404) hide show
  1. package/.github/README.md +52 -0
  2. package/.github/workflows/publish.yml +45 -0
  3. package/babel.config.js +7 -0
  4. package/dist/app.d.ts +9 -0
  5. package/dist/app.js +54 -0
  6. package/dist/command-palette/command-palette-ui.d.ts +2 -0
  7. package/dist/command-palette/command-palette-ui.js +192 -0
  8. package/dist/command-palette/command-palette.d.ts +23 -0
  9. package/dist/command-palette/command-palette.js +371 -0
  10. package/dist/components/checkbox.d.ts +7 -0
  11. package/dist/components/checkbox.js +20 -0
  12. package/dist/components/group-switcher.d.ts +6 -0
  13. package/dist/components/group-switcher.js +301 -0
  14. package/dist/components/input-date.d.ts +7 -0
  15. package/dist/components/input-date.js +19 -0
  16. package/dist/components/input-datetime.d.ts +7 -0
  17. package/dist/components/input-datetime.js +35 -0
  18. package/dist/components/input-number.d.ts +9 -0
  19. package/dist/components/input-number.js +87 -0
  20. package/dist/components/input.d.ts +7 -0
  21. package/dist/components/input.js +20 -0
  22. package/dist/components/io-schema-values.d.ts +15 -0
  23. package/dist/components/io-schema-values.js +105 -0
  24. package/dist/components/io-schema.d.ts +13 -0
  25. package/dist/components/io-schema.js +163 -0
  26. package/dist/components/lazy-list.d.ts +13 -0
  27. package/dist/components/lazy-list.js +91 -0
  28. package/dist/components/lazy-sortable-list.d.ts +29 -0
  29. package/dist/components/lazy-sortable-list.js +12 -0
  30. package/dist/components/left-bar.d.ts +3 -0
  31. package/dist/components/left-bar.js +130 -0
  32. package/dist/components/list-screen.d.ts +16 -0
  33. package/dist/components/list-screen.js +100 -0
  34. package/dist/components/loading-indicator.d.ts +2 -0
  35. package/dist/components/loading-indicator.js +12 -0
  36. package/dist/components/main-content-container.d.ts +2 -0
  37. package/dist/components/main-content-container.js +90 -0
  38. package/dist/components/markdown-editor/autolink-plugin.d.ts +2 -0
  39. package/dist/components/markdown-editor/autolink-plugin.js +29 -0
  40. package/dist/components/markdown-editor/editor-inline.d.ts +3 -0
  41. package/dist/components/markdown-editor/editor-inline.js +13 -0
  42. package/dist/components/markdown-editor/editor.d.ts +18 -0
  43. package/dist/components/markdown-editor/editor.js +143 -0
  44. package/dist/components/markdown-editor/markdown-plugin.d.ts +9 -0
  45. package/dist/components/markdown-editor/markdown-plugin.js +194 -0
  46. package/dist/components/markdown-editor/mention-node.d.ts +21 -0
  47. package/dist/components/markdown-editor/mention-node.js +160 -0
  48. package/dist/components/markdown-editor/mentions-plugin.d.ts +7 -0
  49. package/dist/components/markdown-editor/mentions-plugin.js +268 -0
  50. package/dist/components/markdown-editor/theme.d.ts +46 -0
  51. package/dist/components/markdown-editor/theme.js +48 -0
  52. package/dist/components/markdown-editor/toolbar.d.ts +10 -0
  53. package/dist/components/markdown-editor/toolbar.js +112 -0
  54. package/dist/components/markdown-with-mentions.d.ts +4 -0
  55. package/dist/components/markdown-with-mentions.js +140 -0
  56. package/dist/components/message-logs/message-logs.d.ts +6 -0
  57. package/dist/components/message-logs/message-logs.js +307 -0
  58. package/dist/components/messages/avatar.d.ts +10 -0
  59. package/dist/components/messages/avatar.js +65 -0
  60. package/dist/components/messages/channel-message-list.d.ts +14 -0
  61. package/dist/components/messages/channel-message-list.js +158 -0
  62. package/dist/components/messages/channel-view.d.ts +6 -0
  63. package/dist/components/messages/channel-view.js +82 -0
  64. package/dist/components/messages/message-compose.d.ts +11 -0
  65. package/dist/components/messages/message-compose.js +152 -0
  66. package/dist/components/messages/message-display.d.ts +10 -0
  67. package/dist/components/messages/message-display.js +152 -0
  68. package/dist/components/messages/thread-message-list.d.ts +11 -0
  69. package/dist/components/messages/thread-message-list.js +122 -0
  70. package/dist/components/messages/thread-view.d.ts +6 -0
  71. package/dist/components/messages/thread-view.js +174 -0
  72. package/dist/components/off-canvas.d.ts +13 -0
  73. package/dist/components/off-canvas.js +89 -0
  74. package/dist/components/router.d.ts +6 -0
  75. package/dist/components/router.js +240 -0
  76. package/dist/components/save-button.d.ts +13 -0
  77. package/dist/components/save-button.js +75 -0
  78. package/dist/components/sortable-list.d.ts +36 -0
  79. package/dist/components/sortable-list.js +77 -0
  80. package/dist/components/tabs.d.ts +11 -0
  81. package/dist/components/tabs.js +69 -0
  82. package/dist/components/text-list-editor.tsx/text-list-editor.d.ts +6 -0
  83. package/dist/components/text-list-editor.tsx/text-list-editor.js +13 -0
  84. package/dist/components/tooltip.d.ts +11 -0
  85. package/dist/components/tooltip.js +20 -0
  86. package/dist/components/top-bar.d.ts +2 -0
  87. package/dist/components/top-bar.js +51 -0
  88. package/dist/components/typeahead/mentions-plugin.d.ts +7 -0
  89. package/dist/components/typeahead/mentions-plugin.js +203 -0
  90. package/dist/components/typeahead/typeahead-editor.d.ts +15 -0
  91. package/dist/components/typeahead/typeahead-editor.js +134 -0
  92. package/dist/components/typeahead/typeahead.d.ts +12 -0
  93. package/dist/components/typeahead/typeahead.js +94 -0
  94. package/dist/components/typeahead.d.ts +22 -0
  95. package/dist/components/typeahead.js +270 -0
  96. package/dist/globals.d.ts +29 -0
  97. package/dist/globals.js +148 -0
  98. package/dist/hooks.d.ts +34 -0
  99. package/dist/hooks.js +137 -0
  100. package/dist/index.d.ts +4 -0
  101. package/dist/index.js +20 -0
  102. package/dist/layout-vars.d.ts +6 -0
  103. package/dist/layout-vars.js +10 -0
  104. package/dist/mention-configs.d.ts +18 -0
  105. package/dist/mention-configs.js +149 -0
  106. package/dist/screens/assistants/assistant-config.d.ts +5 -0
  107. package/dist/screens/assistants/assistant-config.js +52 -0
  108. package/dist/screens/assistants/assistant-details.d.ts +4 -0
  109. package/dist/screens/assistants/assistant-details.js +85 -0
  110. package/dist/screens/assistants/assistant-info.d.ts +6 -0
  111. package/dist/screens/assistants/assistant-info.js +28 -0
  112. package/dist/screens/assistants/assistant-list.d.ts +2 -0
  113. package/dist/screens/assistants/assistant-list.js +114 -0
  114. package/dist/screens/assistants/assistant-tools.d.ts +5 -0
  115. package/dist/screens/assistants/assistant-tools.js +38 -0
  116. package/dist/screens/contacts/contact-details.d.ts +6 -0
  117. package/dist/screens/contacts/contact-details.js +100 -0
  118. package/dist/screens/contacts/contact-list.d.ts +2 -0
  119. package/dist/screens/contacts/contact-list.js +213 -0
  120. package/dist/screens/contacts/index.d.ts +4 -0
  121. package/dist/screens/contacts/index.js +21 -0
  122. package/dist/screens/events/cron.d.ts +3 -0
  123. package/dist/screens/events/cron.js +77 -0
  124. package/dist/screens/events/event-details.d.ts +6 -0
  125. package/dist/screens/events/event-details.js +112 -0
  126. package/dist/screens/events/event-handlers.d.ts +7 -0
  127. package/dist/screens/events/event-handlers.js +84 -0
  128. package/dist/screens/events/event-info.d.ts +5 -0
  129. package/dist/screens/events/event-info.js +19 -0
  130. package/dist/screens/events/event-list.d.ts +2 -0
  131. package/dist/screens/events/event-list.js +107 -0
  132. package/dist/screens/events/event-schedule.d.ts +5 -0
  133. package/dist/screens/events/event-schedule.js +124 -0
  134. package/dist/screens/groups/group-details.d.ts +6 -0
  135. package/dist/screens/groups/group-details.js +218 -0
  136. package/dist/screens/groups/group-list.d.ts +2 -0
  137. package/dist/screens/groups/group-list.js +275 -0
  138. package/dist/screens/groups/group-members.d.ts +8 -0
  139. package/dist/screens/groups/group-members.js +315 -0
  140. package/dist/screens/groups/index.d.ts +6 -0
  141. package/dist/screens/groups/index.js +23 -0
  142. package/dist/screens/knowledge/knowledge-frame-details.bk.d.ts +6 -0
  143. package/dist/screens/knowledge/knowledge-frame-details.bk.js +84 -0
  144. package/dist/screens/knowledge/knowledge-frame-details.d.ts +8 -0
  145. package/dist/screens/knowledge/knowledge-frame-details.js +143 -0
  146. package/dist/screens/knowledge/knowledge-frame-list.d.ts +2 -0
  147. package/dist/screens/knowledge/knowledge-frame-list.js +45 -0
  148. package/dist/screens/knowledge/knowledge-value-details.d.ts +6 -0
  149. package/dist/screens/knowledge/knowledge-value-details.js +150 -0
  150. package/dist/screens/knowledge/knowledge-value-list-item.d.ts +5 -0
  151. package/dist/screens/knowledge/knowledge-value-list-item.js +39 -0
  152. package/dist/screens/knowledge/knowledge-value-list.d.ts +3 -0
  153. package/dist/screens/knowledge/knowledge-value-list.js +123 -0
  154. package/dist/screens/packages/package-details.d.ts +6 -0
  155. package/dist/screens/packages/package-details.js +82 -0
  156. package/dist/screens/packages/package-info.d.ts +5 -0
  157. package/dist/screens/packages/package-info.js +42 -0
  158. package/dist/screens/packages/package-list.d.ts +2 -0
  159. package/dist/screens/packages/package-list.js +182 -0
  160. package/dist/screens/packages/package-new-local.d.ts +2 -0
  161. package/dist/screens/packages/package-new-local.js +82 -0
  162. package/dist/screens/peer-types/peer-type-details.d.ts +10 -0
  163. package/dist/screens/peer-types/peer-type-details.js +126 -0
  164. package/dist/screens/peer-types/peer-type-list.d.ts +2 -0
  165. package/dist/screens/peer-types/peer-type-list.js +57 -0
  166. package/dist/screens/predicates/predicate-details.d.ts +6 -0
  167. package/dist/screens/predicates/predicate-details.js +103 -0
  168. package/dist/screens/predicates/predicate-list.d.ts +2 -0
  169. package/dist/screens/predicates/predicate-list.js +46 -0
  170. package/dist/screens/profile.d.ts +2 -0
  171. package/dist/screens/profile.js +66 -0
  172. package/dist/screens/search/global-search.d.ts +2 -0
  173. package/dist/screens/search/global-search.js +186 -0
  174. package/dist/screens/settings/color-mode-dropdown.d.ts +6 -0
  175. package/dist/screens/settings/color-mode-dropdown.js +63 -0
  176. package/dist/screens/settings/settings-page.d.ts +2 -0
  177. package/dist/screens/settings/settings-page.js +49 -0
  178. package/dist/screens/setup-user.d.ts +2 -0
  179. package/dist/screens/setup-user.js +270 -0
  180. package/dist/screens/tools/tool-code.d.ts +5 -0
  181. package/dist/screens/tools/tool-code.js +32 -0
  182. package/dist/screens/tools/tool-details.d.ts +6 -0
  183. package/dist/screens/tools/tool-details.js +68 -0
  184. package/dist/screens/tools/tool-info.d.ts +5 -0
  185. package/dist/screens/tools/tool-info.js +74 -0
  186. package/dist/screens/tools/tool-list.d.ts +2 -0
  187. package/dist/screens/tools/tool-list.js +123 -0
  188. package/dist/screens/tools/tool-schema.d.ts +5 -0
  189. package/dist/screens/tools/tool-schema.js +30 -0
  190. package/dist/screens/tools/tool-test-details.d.ts +4 -0
  191. package/dist/screens/tools/tool-test-details.js +54 -0
  192. package/dist/screens/tools/tool-test-list.d.ts +4 -0
  193. package/dist/screens/tools/tool-test-list.js +82 -0
  194. package/dist/screens/variables/variable-details.d.ts +6 -0
  195. package/dist/screens/variables/variable-details.js +140 -0
  196. package/dist/screens/variables/variable-list.d.ts +2 -0
  197. package/dist/screens/variables/variable-list.js +58 -0
  198. package/dist/screens/workflows/workflow-details.d.ts +6 -0
  199. package/dist/screens/workflows/workflow-details.js +122 -0
  200. package/dist/screens/workflows/workflow-info.d.ts +5 -0
  201. package/dist/screens/workflows/workflow-info.js +18 -0
  202. package/dist/screens/workflows/workflow-instructions.d.ts +5 -0
  203. package/dist/screens/workflows/workflow-instructions.js +118 -0
  204. package/dist/screens/workflows/workflow-list.d.ts +2 -0
  205. package/dist/screens/workflows/workflow-list.js +109 -0
  206. package/dist/screens/workflows/workflow-subscriptions.d.ts +6 -0
  207. package/dist/screens/workflows/workflow-subscriptions.js +81 -0
  208. package/dist/setupTests.d.ts +1 -0
  209. package/dist/setupTests.js +31 -0
  210. package/dist/system-apps/assistants.app.d.ts +2 -0
  211. package/dist/system-apps/assistants.app.js +8 -0
  212. package/dist/system-apps/contacts.app.d.ts +2 -0
  213. package/dist/system-apps/contacts.app.js +9 -0
  214. package/dist/system-apps/events.app.d.ts +2 -0
  215. package/dist/system-apps/events.app.js +8 -0
  216. package/dist/system-apps/groups.app.d.ts +2 -0
  217. package/dist/system-apps/groups.app.js +9 -0
  218. package/dist/system-apps/index.d.ts +19 -0
  219. package/dist/system-apps/index.js +90 -0
  220. package/dist/system-apps/knowledge-frames.app.d.ts +2 -0
  221. package/dist/system-apps/knowledge-frames.app.js +9 -0
  222. package/dist/system-apps/knowledge-values.app.d.ts +2 -0
  223. package/dist/system-apps/knowledge-values.app.js +9 -0
  224. package/dist/system-apps/packages.app.d.ts +2 -0
  225. package/dist/system-apps/packages.app.js +8 -0
  226. package/dist/system-apps/predicates.app.d.ts +2 -0
  227. package/dist/system-apps/predicates.app.js +8 -0
  228. package/dist/system-apps/profile.app.d.ts +2 -0
  229. package/dist/system-apps/profile.app.js +8 -0
  230. package/dist/system-apps/search.app.d.ts +2 -0
  231. package/dist/system-apps/search.app.js +9 -0
  232. package/dist/system-apps/settings.app.d.ts +2 -0
  233. package/dist/system-apps/settings.app.js +8 -0
  234. package/dist/system-apps/threads.app.d.ts +2 -0
  235. package/dist/system-apps/threads.app.js +8 -0
  236. package/dist/system-apps/tools.app.d.ts +2 -0
  237. package/dist/system-apps/tools.app.js +8 -0
  238. package/dist/system-apps/types.app.d.ts +2 -0
  239. package/dist/system-apps/types.app.js +8 -0
  240. package/dist/system-apps/variables.app.d.ts +2 -0
  241. package/dist/system-apps/variables.app.js +8 -0
  242. package/dist/system-apps/workflows.app.d.ts +2 -0
  243. package/dist/system-apps/workflows.app.js +8 -0
  244. package/dist/tabs-layout/tabs-layout.d.ts +5 -0
  245. package/dist/tabs-layout/tabs-layout.js +374 -0
  246. package/dist/tabs-layout/tabs-state.d.ts +26 -0
  247. package/dist/tabs-layout/tabs-state.js +239 -0
  248. package/dist/three-bar-layout/left-bar-content.d.ts +7 -0
  249. package/dist/three-bar-layout/left-bar-content.js +151 -0
  250. package/dist/three-bar-layout/right-bar-content.d.ts +2 -0
  251. package/dist/three-bar-layout/right-bar-content.js +64 -0
  252. package/dist/three-bar-layout/three-bar-layout.d.ts +5 -0
  253. package/dist/three-bar-layout/three-bar-layout.js +218 -0
  254. package/dist/ui-defaults/index.d.ts +2 -0
  255. package/dist/ui-defaults/index.js +4 -0
  256. package/dist/ui-defaults/list-screen.d.ts +6 -0
  257. package/dist/ui-defaults/list-screen.js +74 -0
  258. package/dist/ui-defaults/notes-editor.d.ts +7 -0
  259. package/dist/ui-defaults/notes-editor.js +41 -0
  260. package/dist/ui-router/routes-loader.d.ts +25 -0
  261. package/dist/ui-router/routes-loader.js +97 -0
  262. package/dist/ui-router/ui-loader.d.ts +18 -0
  263. package/dist/ui-router/ui-loader.js +481 -0
  264. package/dist/utils.d.ts +9 -0
  265. package/dist/utils.js +250 -0
  266. package/docs/conversation-tab.md +201 -0
  267. package/docs/getting-started.md +284 -0
  268. package/docs/knowledge.md +187 -0
  269. package/docs/tabs-ui.md +696 -0
  270. package/docs/user-contacts-ui.md +384 -0
  271. package/jest.config.js +25 -0
  272. package/package.json +109 -0
  273. package/src/app.tsx +59 -0
  274. package/src/command-palette/command-palette-ui.tsx +264 -0
  275. package/src/command-palette/command-palette.ts +364 -0
  276. package/src/components/checkbox.tsx +22 -0
  277. package/src/components/group-switcher.tsx +469 -0
  278. package/src/components/input-date.tsx +28 -0
  279. package/src/components/input-datetime.tsx +41 -0
  280. package/src/components/input-number.tsx +67 -0
  281. package/src/components/input.tsx +22 -0
  282. package/src/components/io-schema-values.tsx +122 -0
  283. package/src/components/io-schema.tsx +234 -0
  284. package/src/components/lazy-list.tsx +98 -0
  285. package/src/components/lazy-sortable-list.tsx +51 -0
  286. package/src/components/left-bar.tsx +264 -0
  287. package/src/components/list-screen.tsx +105 -0
  288. package/src/components/loading-indicator.tsx +9 -0
  289. package/src/components/main-content-container.tsx +76 -0
  290. package/src/components/markdown-editor/autolink-plugin.tsx +36 -0
  291. package/src/components/markdown-editor/editor-inline.tsx +10 -0
  292. package/src/components/markdown-editor/editor.tsx +152 -0
  293. package/src/components/markdown-editor/markdown-plugin.tsx +224 -0
  294. package/src/components/markdown-editor/mention-node.ts +199 -0
  295. package/src/components/markdown-editor/mentions-plugin.tsx +356 -0
  296. package/src/components/markdown-editor/theme.ts +47 -0
  297. package/src/components/markdown-editor/toolbar.tsx +263 -0
  298. package/src/components/markdown-with-mentions.tsx +183 -0
  299. package/src/components/message-logs/message-logs.tsx +406 -0
  300. package/src/components/messages/avatar.tsx +95 -0
  301. package/src/components/messages/channel-message-list.tsx +177 -0
  302. package/src/components/messages/channel-view.tsx +74 -0
  303. package/src/components/messages/message-compose.tsx +162 -0
  304. package/src/components/messages/message-display.tsx +217 -0
  305. package/src/components/messages/thread-message-list.tsx +126 -0
  306. package/src/components/messages/thread-view.tsx +214 -0
  307. package/src/components/off-canvas.tsx +83 -0
  308. package/src/components/router.tsx +224 -0
  309. package/src/components/save-button.tsx +109 -0
  310. package/src/components/sortable-list.tsx +102 -0
  311. package/src/components/tabs.tsx +70 -0
  312. package/src/components/text-list-editor.tsx/text-list-editor.tsx +13 -0
  313. package/src/components/tooltip.tsx +50 -0
  314. package/src/components/top-bar.tsx +119 -0
  315. package/src/components/typeahead/mentions-plugin.tsx +265 -0
  316. package/src/components/typeahead/typeahead-editor.tsx +140 -0
  317. package/src/components/typeahead/typeahead.tsx +77 -0
  318. package/src/components/typeahead.tsx +359 -0
  319. package/src/globals.tsx +162 -0
  320. package/src/hooks.ts +144 -0
  321. package/src/index.tsx +8 -0
  322. package/src/layout-vars.ts +8 -0
  323. package/src/mention-configs.ts +166 -0
  324. package/src/screens/assistants/assistant-config.tsx +80 -0
  325. package/src/screens/assistants/assistant-details.tsx +77 -0
  326. package/src/screens/assistants/assistant-info.tsx +45 -0
  327. package/src/screens/assistants/assistant-list.tsx +115 -0
  328. package/src/screens/assistants/assistant-tools.tsx +61 -0
  329. package/src/screens/contacts/contact-details.tsx +175 -0
  330. package/src/screens/contacts/contact-list.tsx +251 -0
  331. package/src/screens/contacts/index.ts +6 -0
  332. package/src/screens/events/cron.ts +74 -0
  333. package/src/screens/events/event-details.tsx +117 -0
  334. package/src/screens/events/event-handlers.tsx +61 -0
  335. package/src/screens/events/event-info.tsx +29 -0
  336. package/src/screens/events/event-list.tsx +104 -0
  337. package/src/screens/events/event-schedule.tsx +130 -0
  338. package/src/screens/groups/group-details.tsx +306 -0
  339. package/src/screens/groups/group-list.tsx +366 -0
  340. package/src/screens/groups/group-members.tsx +455 -0
  341. package/src/screens/groups/index.ts +9 -0
  342. package/src/screens/knowledge/knowledge-frame-details.bk.tsx +160 -0
  343. package/src/screens/knowledge/knowledge-frame-details.tsx +176 -0
  344. package/src/screens/knowledge/knowledge-frame-list.tsx +49 -0
  345. package/src/screens/knowledge/knowledge-value-details.tsx +181 -0
  346. package/src/screens/knowledge/knowledge-value-list-item.tsx +48 -0
  347. package/src/screens/knowledge/knowledge-value-list.tsx +131 -0
  348. package/src/screens/packages/package-details.tsx +117 -0
  349. package/src/screens/packages/package-info.tsx +83 -0
  350. package/src/screens/packages/package-list.tsx +191 -0
  351. package/src/screens/packages/package-new-local.tsx +93 -0
  352. package/src/screens/peer-types/peer-type-details.tsx +162 -0
  353. package/src/screens/peer-types/peer-type-list.tsx +74 -0
  354. package/src/screens/predicates/predicate-details.tsx +125 -0
  355. package/src/screens/predicates/predicate-list.tsx +50 -0
  356. package/src/screens/profile.tsx +68 -0
  357. package/src/screens/search/global-search.tsx +274 -0
  358. package/src/screens/settings/color-mode-dropdown.tsx +57 -0
  359. package/src/screens/settings/settings-page.tsx +76 -0
  360. package/src/screens/setup-user.tsx +367 -0
  361. package/src/screens/tools/tool-code.tsx +35 -0
  362. package/src/screens/tools/tool-details.tsx +101 -0
  363. package/src/screens/tools/tool-info.tsx +60 -0
  364. package/src/screens/tools/tool-list.tsx +121 -0
  365. package/src/screens/tools/tool-schema.tsx +42 -0
  366. package/src/screens/tools/tool-test-details.tsx +100 -0
  367. package/src/screens/tools/tool-test-list.tsx +74 -0
  368. package/src/screens/variables/variable-details.tsx +183 -0
  369. package/src/screens/variables/variable-list.tsx +74 -0
  370. package/src/screens/workflows/workflow-details.tsx +130 -0
  371. package/src/screens/workflows/workflow-info.tsx +29 -0
  372. package/src/screens/workflows/workflow-instructions.tsx +127 -0
  373. package/src/screens/workflows/workflow-list.tsx +107 -0
  374. package/src/screens/workflows/workflow-subscriptions.tsx +58 -0
  375. package/src/setupTests.ts +32 -0
  376. package/src/system-apps/assistants.app.ts +7 -0
  377. package/src/system-apps/contacts.app.ts +8 -0
  378. package/src/system-apps/events.app.ts +7 -0
  379. package/src/system-apps/groups.app.ts +8 -0
  380. package/src/system-apps/index.ts +79 -0
  381. package/src/system-apps/knowledge-frames.app.ts +8 -0
  382. package/src/system-apps/knowledge-values.app.ts +8 -0
  383. package/src/system-apps/packages.app.ts +7 -0
  384. package/src/system-apps/predicates.app.ts +7 -0
  385. package/src/system-apps/profile.app.ts +7 -0
  386. package/src/system-apps/search.app.ts +8 -0
  387. package/src/system-apps/settings.app.ts +7 -0
  388. package/src/system-apps/threads.app.ts +7 -0
  389. package/src/system-apps/tools.app.ts +7 -0
  390. package/src/system-apps/types.app.ts +7 -0
  391. package/src/system-apps/variables.app.ts +7 -0
  392. package/src/system-apps/workflows.app.ts +7 -0
  393. package/src/tabs-layout/tabs-layout.tsx +672 -0
  394. package/src/tabs-layout/tabs-state.ts +269 -0
  395. package/src/three-bar-layout/left-bar-content.tsx +202 -0
  396. package/src/three-bar-layout/right-bar-content.tsx +67 -0
  397. package/src/three-bar-layout/three-bar-layout.tsx +297 -0
  398. package/src/ui-defaults/index.ts +3 -0
  399. package/src/ui-defaults/list-screen.tsx +92 -0
  400. package/src/ui-defaults/notes-editor.tsx +51 -0
  401. package/src/ui-router/routes-loader.ts +98 -0
  402. package/src/ui-router/ui-loader.tsx +497 -0
  403. package/src/utils.ts +266 -0
  404. package/tsconfig.json +24 -0
@@ -0,0 +1,127 @@
1
+ import { IDoc, IWorkflow, IWorkflowInstruction, Observable, observable } from "@peers-app/peers-sdk";
2
+ import React, { useEffect, useState } from "react";
3
+ import { IEditorEffects } from "../../components/markdown-editor/editor";
4
+ import { MarkdownEditorInline } from "../../components/markdown-editor/editor-inline";
5
+ import { useObservable } from "../../hooks";
6
+
7
+ export const WorkflowInstructions = (props: { workflow: IDoc<IWorkflow> }) => {
8
+ const { workflow } = props;
9
+
10
+ const instructions = workflow.qs.instructions;
11
+ useObservable(instructions);
12
+ const [focusedInstructionIndex] = useState(() => observable(0));
13
+
14
+ return (
15
+ <div>
16
+ {workflow.qs.instructions().map((instruction, i) => {
17
+ return (
18
+ <div
19
+ key={i}
20
+ className="mb-2"
21
+ style={{
22
+ // border: '1px solid #ccc',
23
+ // borderRadius: '5px',
24
+ }}
25
+ >
26
+ <WorkflowInstruction
27
+ workflow={workflow}
28
+ instructions={instructions}
29
+ thisInstructionIndex={i}
30
+ focusedInstructionIndex={focusedInstructionIndex}
31
+ />
32
+ </div>
33
+ )
34
+ })}
35
+ </div>
36
+ )
37
+ }
38
+
39
+
40
+ interface IWorkflowInstructionProps {
41
+ workflow: IDoc<IWorkflow>;
42
+ instructions: Observable<IWorkflowInstruction[]>;
43
+ thisInstructionIndex: number;
44
+ focusedInstructionIndex: Observable<number>;
45
+ insertInstructionBelow?: () => void;
46
+ deleteInstruction?: () => void;
47
+ }
48
+
49
+ const WorkflowInstruction = (props: IWorkflowInstructionProps) => {
50
+ const { instructions, thisInstructionIndex, focusedInstructionIndex } = props;
51
+
52
+ const [mdEffects] = useState<IEditorEffects>(() => ({}));
53
+
54
+ const thisInstruction = instructions()[thisInstructionIndex];
55
+
56
+ const [markdownObs] = useState(() => observable(thisInstruction.markdown ?? ''));
57
+
58
+ useEffect(() => {
59
+ const sub = focusedInstructionIndex.subscribe(focusedIndex => {
60
+ if (focusedIndex === thisInstructionIndex) {
61
+ mdEffects.focus?.();
62
+ }
63
+ });
64
+ return () => sub.dispose();
65
+ }, [thisInstructionIndex]);
66
+
67
+ useEffect(() => {
68
+ markdownObs(thisInstruction.markdown ?? '');
69
+ const sub = markdownObs.subscribe(value => {
70
+ thisInstruction.markdown = value;
71
+ props.workflow.q(props.workflow.q() + 1);
72
+ });
73
+ return () => sub.dispose();
74
+ }, [thisInstruction, instructions(), thisInstructionIndex]);
75
+
76
+
77
+ let backspacedOnEmpty = false;
78
+ mdEffects.onKeyDown = (evt) => {
79
+ if (evt.key === 'Enter') {
80
+ if (markdownObs().match(/\n\s*\n$/)) {
81
+ // if the markdown ends with a new line, zero or more whitespace and then another newline, insert a new instruction below
82
+ evt.preventDefault();
83
+ const _instructions = instructions();
84
+ _instructions.splice(thisInstructionIndex + 1, 0, { markdown: '' });
85
+ instructions([..._instructions]);
86
+ markdownObs(markdownObs().trim());
87
+ focusedInstructionIndex(thisInstructionIndex + 1);
88
+ }
89
+ }
90
+ if (evt.key === 'Backspace') {
91
+ if (markdownObs().trim() === '') {
92
+ if (backspacedOnEmpty) {
93
+ evt.preventDefault();
94
+ const _instructions = instructions();
95
+ if (_instructions.length > 1) {
96
+ _instructions.splice(thisInstructionIndex, 1);
97
+ instructions([..._instructions]);
98
+ focusedInstructionIndex(thisInstructionIndex - 1);
99
+ }
100
+ backspacedOnEmpty = false;
101
+ } else {
102
+ backspacedOnEmpty = true;
103
+ }
104
+ }
105
+ }
106
+ };
107
+
108
+ function runThisInstruction() {
109
+ // runInstructions([thisInstruction]);
110
+ confirm('TODO: run this instruction not implemented yet');
111
+ }
112
+
113
+ return (
114
+ <MarkdownEditorInline
115
+ value={markdownObs}
116
+ effects={mdEffects}
117
+ autoFocus={props.thisInstructionIndex === focusedInstructionIndex()}
118
+ topRightControls={[
119
+ {
120
+ iconClass: 'bi bi-play',
121
+ title: `Run this instruction.`,
122
+ onClick: runThisInstruction,
123
+ }
124
+ ]}
125
+ />
126
+ )
127
+ }
@@ -0,0 +1,107 @@
1
+ import { ICursorIterable, IWorkflow, newid, observable, Workflows } from "@peers-app/peers-sdk";
2
+ import React, { useEffect, useState } from 'react';
3
+ import { Input } from '../../components/input';
4
+ import { LazyList } from '../../components/lazy-list';
5
+ import { LoadingIndicator } from '../../components/loading-indicator';
6
+ import { MarkdownWithMentions } from '../../components/markdown-with-mentions';
7
+ import { isDesktop, mainContentPath, me } from '../../globals';
8
+ import { useObservable } from '../../hooks';
9
+
10
+ export function WorkflowList() {
11
+
12
+ const [searchTextObs] = useState(() => observable(''));
13
+ const [searchText] = useObservable(searchTextObs);
14
+
15
+ const [cursorObs] = useState(() => observable<ICursorIterable<IWorkflow>>());
16
+ const [cursorId] = useState(() => observable(newid()));
17
+
18
+ async function newCursor() {
19
+ const cursor = await Workflows().cursor({ name: { $matchWords: searchText } }, { sortBy: ['-updatedAt'] });
20
+ cursorObs(cursor);
21
+ cursorId(newid());
22
+ return cursor;
23
+ }
24
+
25
+ useEffect(() => {
26
+ newCursor();
27
+ }, [searchText]);
28
+
29
+ async function searchSubmit(evt: React.KeyboardEvent<HTMLInputElement>) {
30
+ if (evt.key !== "Enter") return;
31
+ if (!searchText.trim()) return;
32
+ const workflowName = searchText.trim();
33
+ const workflow = await Workflows().initRecord({
34
+ name: workflowName,
35
+ description: '',
36
+ instructions: [{
37
+ markdown: '// TODO add a link to workflow documentation and examples',
38
+ }],
39
+ createdBy: me.userId,
40
+ // defaultAssistantId: '',
41
+ });
42
+ await Workflows().insert(workflow);
43
+ mainContentPath(`workflows/${workflow.workflowId}`);
44
+ }
45
+
46
+
47
+ async function loadMore(existingWorkflows: IWorkflow[]): Promise<IWorkflow[]> {
48
+ let moreMatches: IWorkflow[] = [];
49
+ let cursor = cursorObs() || await newCursor();
50
+ for await (const workflow of cursor) {
51
+ if (existingWorkflows.find(w => w.workflowId === workflow.workflowId)) continue;
52
+ moreMatches.push(workflow);
53
+ if (searchText.length && moreMatches.length > 5) break;
54
+ if (moreMatches.length >= 50) break;
55
+ }
56
+ if (moreMatches.length === 0) {
57
+ cursorObs(undefined);
58
+ }
59
+ return moreMatches;
60
+ }
61
+
62
+ return (
63
+ <div className='container-fluid'>
64
+ <Input value={searchTextObs} className="form-control mt-3" style={{ marginBottom: "10px" }} placeholder="Search or create new workflow"
65
+ autoFocus={isDesktop() ? true : false}
66
+ onKeyUp={evt => searchSubmit(evt)}
67
+ />
68
+
69
+ <div className="peers-list-container">
70
+ <LazyList
71
+ key={cursorId()}
72
+ loadMore={loadMore}
73
+ scrollThreshold={0.6}
74
+ renderItems={(workflows) => {
75
+ return workflows.map(workflow => {
76
+ const markdownContent = workflow.description || workflow.instructions[0].markdown || '';
77
+ return (
78
+ <div
79
+ key={workflow.workflowId}
80
+ className='container-fluid pb-4'
81
+ >
82
+ <i className="bi bi-database-fill-gear"></i>&nbsp;
83
+ <a href={`#workflows/${workflow.workflowId}`}>
84
+ {workflow.name}
85
+ </a>
86
+ <div style={{ paddingLeft: '20px' }}>
87
+ <MarkdownWithMentions content={markdownContent} />
88
+ </div>
89
+ </div>
90
+ )
91
+ })
92
+ }}
93
+ loadingIndicator={
94
+ <div className="d-flex justify-content-center" style={{ height: 200 }}>
95
+ <LoadingIndicator />
96
+ </div>
97
+ }
98
+ endOfList={
99
+ <div className="d-flex justify-content-center" style={{ height: 200 }}>
100
+ {/* <span className="h3">End of List</span> */}
101
+ </div>
102
+ }
103
+ />
104
+ </div>
105
+ </div>
106
+ );
107
+ }
@@ -0,0 +1,58 @@
1
+ import { formatMention, getAllMentions, IDoc, IPeerEventHandler, IWorkflow, newid, observable, Observable, PeerEventTypes } from "@peers-app/peers-sdk";
2
+ import { isEqual } from "lodash";
3
+ import React, { useState } from "react";
4
+ import { LoadingIndicator } from "../../components/loading-indicator";
5
+ import { MarkdownEditorInline } from "../../components/markdown-editor/editor-inline";
6
+ import { Tooltip } from "../../components/tooltip";
7
+ import { usePromise, useSubscription } from "../../hooks";
8
+
9
+ export const WorkflowEventSubscriptions = (props: { workflow: IDoc<IWorkflow>, eventSubscriptions: Observable<IPeerEventHandler[]> }) => {
10
+ const { workflow, eventSubscriptions } = props;
11
+
12
+ const [subscriptionsMarkdown] = useState(() => observable(''));
13
+
14
+ const markdownInitialized = usePromise(async () => {
15
+ const eventTypeIds = eventSubscriptions().map(h => h.peerEventTypeId);
16
+ const subscribedEvents = await PeerEventTypes().list({ peerEventTypeId: { $in: eventTypeIds } });
17
+ const peerEventTypeNames = subscribedEvents.reduce((acc, evt) => ({ ...acc, [evt.peerEventTypeId]: evt.name }), {} as Record<string, string>);
18
+ const mentions = eventTypeIds.map(eventTypeId => '- ' + formatMention({ kind: 'event', id: eventTypeId, name: peerEventTypeNames[eventTypeId] ?? eventTypeId }));
19
+ const markdown = `${mentions.join('\n') || '- '}`;
20
+ subscriptionsMarkdown(markdown);
21
+ return true;
22
+ });
23
+
24
+ useSubscription(subscriptionsMarkdown, () => {
25
+ if (!markdownInitialized) return;
26
+ const startEventTypeIds = eventSubscriptions().map(h => h.peerEventTypeId);
27
+ const eventTypeIds = getAllMentions(subscriptionsMarkdown()).filter(m => m.kind === 'event').map(m => m.id);
28
+ if (isEqual(startEventTypeIds, eventTypeIds)) return;
29
+ const newHandler: IPeerEventHandler[] = eventTypeIds.map(eventTypeId => ({
30
+ peerEventHandlerId: newid(),
31
+ peerEventTypeId: eventTypeId,
32
+ handlerWorkflowId: workflow.workflowId,
33
+ }));
34
+ eventSubscriptions(newHandler);
35
+ workflow.q(workflow.q() + 1);
36
+ });
37
+
38
+ if (!markdownInitialized) {
39
+ return <LoadingIndicator />;
40
+ }
41
+
42
+ return (
43
+ <div>
44
+
45
+ <div className='mt-2'>
46
+ <small>Mention events that should trigger this workflow:</small>
47
+ <small>
48
+ <Tooltip markdownContent={`The mentions will be reformatted as a bulleted list regardless of how they are entered. All other content except for event mentions will be discarded.`} />
49
+ </small>
50
+
51
+ <MarkdownEditorInline
52
+ value={subscriptionsMarkdown}
53
+ />
54
+ </div>
55
+
56
+ </div>
57
+ );
58
+ };
@@ -0,0 +1,32 @@
1
+ import '@testing-library/jest-dom';
2
+
3
+ // Mock IntersectionObserver
4
+ (global as any).IntersectionObserver = class {
5
+ constructor() {}
6
+ disconnect() {}
7
+ observe() {}
8
+ unobserve() {}
9
+ };
10
+
11
+ // Mock window.matchMedia
12
+ Object.defineProperty(window, 'matchMedia', {
13
+ writable: true,
14
+ value: jest.fn().mockImplementation(query => ({
15
+ matches: false,
16
+ media: query,
17
+ onchange: null,
18
+ addListener: jest.fn(), // deprecated
19
+ removeListener: jest.fn(), // deprecated
20
+ addEventListener: jest.fn(),
21
+ removeEventListener: jest.fn(),
22
+ dispatchEvent: jest.fn(),
23
+ })),
24
+ });
25
+
26
+ // Mock ResizeObserver
27
+ (global as any).ResizeObserver = class {
28
+ constructor() {}
29
+ disconnect() {}
30
+ observe() {}
31
+ unobserve() {}
32
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const assistantsApp: IAppNav = {
4
+ name: 'Assistants',
5
+ iconClassName: 'bi-person-fill-gear',
6
+ navigationPath: 'assistants'
7
+ };
@@ -0,0 +1,8 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const contactsApp: IAppNav = {
4
+ name: 'Contacts',
5
+ displayName: 'Contacts',
6
+ iconClassName: 'bi-person-fill-check',
7
+ navigationPath: 'contacts'
8
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const eventsApp: IAppNav = {
4
+ name: 'Events',
5
+ iconClassName: 'bi-lightning-charge-fill',
6
+ navigationPath: 'events'
7
+ };
@@ -0,0 +1,8 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const groupsApp: IAppNav = {
4
+ name: 'Groups',
5
+ displayName: 'Groups',
6
+ iconClassName: 'bi-people-fill',
7
+ navigationPath: 'groups'
8
+ };
@@ -0,0 +1,79 @@
1
+ import { IAppNav, IPackage } from "@peers-app/peers-sdk";
2
+
3
+ // Import all system apps
4
+ export { searchApp } from './search.app';
5
+ export { assistantsApp } from './assistants.app';
6
+ export { toolsApp } from './tools.app';
7
+ export { workflowsApp } from './workflows.app';
8
+ export { eventsApp } from './events.app';
9
+ export { variablesApp } from './variables.app';
10
+ export { typesApp } from './types.app';
11
+ export { packagesApp } from './packages.app';
12
+ export { threadsApp } from './threads.app';
13
+ export { knowledgeValuesApp } from './knowledge-values.app';
14
+ export { knowledgeFramesApp } from './knowledge-frames.app';
15
+ export { predicatesApp } from './predicates.app';
16
+ export { profileApp } from './profile.app';
17
+ export { settingsApp } from './settings.app';
18
+ export { groupsApp } from './groups.app';
19
+ export { contactsApp } from './contacts.app';
20
+
21
+ // Import individual apps
22
+ import { searchApp } from './search.app';
23
+ import { assistantsApp } from './assistants.app';
24
+ import { toolsApp } from './tools.app';
25
+ import { workflowsApp } from './workflows.app';
26
+ import { eventsApp } from './events.app';
27
+ import { variablesApp } from './variables.app';
28
+ import { typesApp } from './types.app';
29
+ import { packagesApp } from './packages.app';
30
+ import { threadsApp } from './threads.app';
31
+ import { knowledgeValuesApp } from './knowledge-values.app';
32
+ import { knowledgeFramesApp } from './knowledge-frames.app';
33
+ import { predicatesApp } from './predicates.app';
34
+ import { profileApp } from './profile.app';
35
+ import { settingsApp } from './settings.app';
36
+ import { groupsApp } from './groups.app';
37
+ import { contactsApp } from './contacts.app';
38
+
39
+ // Collection of all system apps
40
+ export const systemApps: IAppNav[] = [
41
+ // Core Navigation & Search
42
+ searchApp,
43
+ threadsApp,
44
+
45
+ // Knowledge & Data
46
+ knowledgeValuesApp,
47
+ knowledgeFramesApp,
48
+ predicatesApp,
49
+
50
+ // Core Management Apps
51
+ variablesApp,
52
+ typesApp,
53
+ assistantsApp,
54
+ toolsApp,
55
+ workflowsApp,
56
+ eventsApp,
57
+ packagesApp,
58
+ groupsApp,
59
+ contactsApp,
60
+
61
+ // User & Settings Apps
62
+ profileApp,
63
+ settingsApp,
64
+ ];
65
+
66
+ // Virtual system package for tabs integration
67
+ export const systemPackage: IPackage = {
68
+ packageId: 'system-apps',
69
+ name: 'System Apps',
70
+ description: 'Core system functionality and management tools',
71
+ appNavs: systemApps,
72
+ createdBy: 'system',
73
+ localPath: '',
74
+ disabled: false,
75
+ signature: '',
76
+ packageBundleFileId: '',
77
+ packageBundleFileHash: '',
78
+ // System apps use existing router instead of separate bundle files
79
+ };
@@ -0,0 +1,8 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const knowledgeFramesApp: IAppNav = {
4
+ name: 'Knowledge Frames',
5
+ displayName: 'K-Frames',
6
+ iconClassName: 'bi-window-dock',
7
+ navigationPath: 'knowledge-frames'
8
+ };
@@ -0,0 +1,8 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const knowledgeValuesApp: IAppNav = {
4
+ name: 'Knowledge Values',
5
+ displayName: 'K-Values',
6
+ iconClassName: 'bi-journal-bookmark-fill',
7
+ navigationPath: 'knowledge-values'
8
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const packagesApp: IAppNav = {
4
+ name: 'Packages',
5
+ iconClassName: 'bi-box-fill',
6
+ navigationPath: 'packages'
7
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const predicatesApp: IAppNav = {
4
+ name: 'Predicates',
5
+ iconClassName: 'bi-node-plus-fill',
6
+ navigationPath: 'predicates'
7
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const profileApp: IAppNav = {
4
+ name: 'Profile',
5
+ iconClassName: 'bi-person-circle',
6
+ navigationPath: 'profile'
7
+ };
@@ -0,0 +1,8 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const searchApp: IAppNav = {
4
+ name: 'Search',
5
+ displayName: 'Search',
6
+ iconClassName: 'bi-search',
7
+ navigationPath: 'search',
8
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const settingsApp: IAppNav = {
4
+ name: 'Settings',
5
+ iconClassName: 'bi-gear-fill',
6
+ navigationPath: 'settings'
7
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const threadsApp: IAppNav = {
4
+ name: 'Threads',
5
+ iconClassName: 'bi-cpu',
6
+ navigationPath: 'threads'
7
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const toolsApp: IAppNav = {
4
+ name: 'Tools',
5
+ iconClassName: 'bi-tools',
6
+ navigationPath: 'tools'
7
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const typesApp: IAppNav = {
4
+ name: 'Types',
5
+ iconClassName: 'bi-code-square',
6
+ navigationPath: 'peer-types'
7
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const variablesApp: IAppNav = {
4
+ name: 'Variables',
5
+ iconClassName: 'bi-braces',
6
+ navigationPath: 'variables'
7
+ };
@@ -0,0 +1,7 @@
1
+ import { IAppNav } from "@peers-app/peers-sdk";
2
+
3
+ export const workflowsApp: IAppNav = {
4
+ name: 'Workflows',
5
+ iconClassName: 'bi-database-fill-gear',
6
+ navigationPath: 'workflows'
7
+ };