@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,122 @@
1
+ import React, { useEffect, useState } from "react";
2
+ import { IOSchema, Observable, observable, camelCaseToSpaces } from "@peers-app/peers-sdk";
3
+ import { Tooltip } from "./tooltip";
4
+ import { MarkdownEditorInline } from "./markdown-editor/editor-inline";
5
+ import { Input } from "./input";
6
+ import { InputNumber } from "./input-number";
7
+ import { Checkbox } from "./checkbox";
8
+ import { useSubscription } from "../hooks";
9
+
10
+ interface IOSchemaValuesProps {
11
+ ioSchema: IOSchema;
12
+ values: Record<string, any>;
13
+ q: Observable<number>;
14
+ excludeFields?: string[];
15
+ }
16
+
17
+ export const IOSchemaValues = (props: IOSchemaValuesProps) => {
18
+
19
+ const { ioSchema, values, q } = props;
20
+
21
+ return (
22
+ <div>
23
+ {ioSchema.fields.map((field, i) => {
24
+ if (props.excludeFields?.includes(field.name)) {
25
+ return null;
26
+ }
27
+ return (
28
+ <div key={i} className='mt-2'>
29
+ <small className="text-body-secondary">
30
+ {camelCaseToSpaces(field.name)}:
31
+ <small>
32
+ <Tooltip markdownContent={field.description ?? ''} />
33
+ </small>
34
+ </small>
35
+
36
+ <IOSchemaValue
37
+ field={field}
38
+ values={values}
39
+ q={q}
40
+ />
41
+ </div>
42
+ )
43
+ })}
44
+ </div>
45
+ )
46
+
47
+ }
48
+
49
+ export const IOSchemaValue = (props: { field: IOSchema['fields'][0], values: Record<string, any>, q: Observable<number> }) => {
50
+ const { field, values, q } = props;
51
+
52
+ const [valueObs] = useState(() => {
53
+ const obs = observable<any | undefined>(values[field.name] ?? '');
54
+ return obs;
55
+ });
56
+
57
+ useEffect(() => {
58
+ const sub = valueObs.subscribe(() => {
59
+ values[field.name] = valueObs();
60
+ q(q() + 1);
61
+ });
62
+ return () => {
63
+ sub.dispose();
64
+ }
65
+ });
66
+
67
+ useSubscription(q, () => {
68
+ valueObs(values[field.name] ?? '');
69
+ }, true);
70
+
71
+ const valueType = field.type;
72
+
73
+ // TODO isArray
74
+
75
+ // TODO UI Types - text:secret, date:time, date:date, date:datetime, enum
76
+
77
+ if (valueType === 'string') {
78
+ if (field.subType === 'markdown' || (!field.subType && field.name.toLowerCase().includes('body'))) {
79
+ return (
80
+ <MarkdownEditorInline
81
+ value={valueObs}
82
+ maxHeight={'250px'}
83
+ />
84
+ );
85
+ } else {
86
+ return (
87
+ <Input
88
+ className='form-control'
89
+ value={valueObs}
90
+ />
91
+ )
92
+ }
93
+ }
94
+ else if (valueType === 'number') {
95
+ return (
96
+ <InputNumber
97
+ className='form-control'
98
+ value={valueObs}
99
+ />
100
+ )
101
+ }
102
+ else if (valueType === 'boolean') {
103
+ return (
104
+ <Checkbox
105
+ className='form-control'
106
+ checked={valueObs}
107
+ />
108
+ )
109
+ }
110
+ else if (valueType === 'Date') {
111
+ return (
112
+ <Input
113
+ className='form-control'
114
+ value={valueObs}
115
+ type='date'
116
+ />
117
+ )
118
+ }
119
+ else {
120
+ return <div>Unknown type: {valueType}</div>
121
+ }
122
+ }
@@ -0,0 +1,234 @@
1
+ import { arrayAsTable, FieldType, IField, initDoc, IOSchema, IOSchemaType, newid, Observable, observable } from "@peers-app/peers-sdk";
2
+ import React, { useEffect, useState } from "react";
3
+ import { useObservable, useObservableState } from "../hooks";
4
+ import { MarkdownEditorInline } from "./markdown-editor/editor-inline";
5
+
6
+ export const IOSchemaEditor = (props: { ioSchema: Observable<IOSchema>, simpleValueName: string }) => {
7
+ const { ioSchema, simpleValueName } = props;
8
+
9
+ if (!ioSchema().type) {
10
+ ioSchema().type = IOSchemaType.none;
11
+ }
12
+ if (!ioSchema().fields) {
13
+ ioSchema().fields = [];
14
+ }
15
+
16
+ const q = useObservableState(0)
17
+
18
+ useEffect(() => {
19
+ let schemaType = ioSchema().type;
20
+ const sub = ioSchema.subscribe(() => {
21
+ if (schemaType !== ioSchema().type) {
22
+ q(q() + 1);
23
+ }
24
+ });
25
+ return () => sub.dispose();
26
+ }, [ioSchema, q()]);
27
+
28
+ return (
29
+ <>
30
+ <select
31
+ className="form-select form-select-sm"
32
+ style={{ width: "150px", display: "inline-block" }}
33
+ defaultValue={ioSchema().type}
34
+ onChange={evt => {
35
+ ioSchema({
36
+ ...ioSchema(),
37
+ type: evt.target.value as IOSchemaType,
38
+ })
39
+ }}
40
+ >
41
+ <option value="none">None</option>
42
+ <option value="simple">Simple Value</option>
43
+ <option value="complex">Complex Value</option>
44
+ </select>
45
+
46
+ <div
47
+ className="ms-4"
48
+ >
49
+ {ioSchema().type === IOSchemaType.simple && <SimpleInputSchema ioSchema={ioSchema} simpleValueName={simpleValueName} />}
50
+ {ioSchema().type === IOSchemaType.complex && <ComplexInputSchema ioSchema={ioSchema} />}
51
+ </div>
52
+ </>
53
+ )
54
+ }
55
+
56
+ export const SimpleInputSchema = (props: { ioSchema: Observable<IOSchema>, simpleValueName: string }) => {
57
+
58
+ const { ioSchema, simpleValueName } = props;
59
+ useObservable(ioSchema);
60
+
61
+ const [ioValueType] = useState(() => observable(ioSchema()?.fields?.[0]?.type || FieldType.string));
62
+ const [ioValueDesc] = useState(() => observable(ioSchema()?.fields?.[0]?.description || ""));
63
+
64
+ const setSimpleInputSchema = () => {
65
+ const _ioSchema = { ...ioSchema() }
66
+ _ioSchema.type = IOSchemaType.simple;
67
+ _ioSchema.fields = _ioSchema.fields || [];
68
+ _ioSchema.fields[0] = {
69
+ name: simpleValueName,
70
+ description: ioValueDesc(),
71
+ type: ioValueType(),
72
+ }
73
+ ioSchema(_ioSchema);
74
+ }
75
+
76
+ useEffect(() => {
77
+ const sub = ioValueType.subscribe(() => {
78
+ setSimpleInputSchema();
79
+ });
80
+ const sub2 = ioValueDesc.subscribe(() => {
81
+ setSimpleInputSchema();
82
+ });
83
+ return () => {
84
+ sub.dispose();
85
+ sub2.dispose();
86
+ }
87
+ }, [ioSchema]);
88
+
89
+ const simpleValueTypes = Object.values(FieldType);
90
+
91
+ return (
92
+ <div>
93
+ <small>Value Type:</small><br />
94
+ <select
95
+ className="form-select form-select-sm mt-2 mb-2"
96
+ defaultValue={ioValueType()}
97
+ onChange={evt => ioValueType(evt.target.value as FieldType)}
98
+ style={{ width: "150px", display: "inline-block" }}
99
+ >
100
+ {simpleValueTypes.map((type) =>
101
+ <option
102
+ key={type}
103
+ value={type}
104
+ >
105
+ {type}
106
+ </option>
107
+ )}
108
+ </select>
109
+ <br />
110
+ <small>Value Description:</small>
111
+ <MarkdownEditorInline
112
+ value={ioValueDesc}
113
+ hideToolbar={true}
114
+ />
115
+ </div>
116
+ )
117
+ }
118
+
119
+ export const ComplexInputSchema = (props: { ioSchema: Observable<IOSchema> }) => {
120
+ const { ioSchema } = props;
121
+ useObservable(ioSchema);
122
+
123
+ const [[fields, newRow], __setState] = useState(() => {
124
+ const _fields: IField[] = ioSchema().fields || [];
125
+ // @ts-ignore
126
+ _fields.forEach(f => f.fakeId = newid());
127
+ const inMemoryTable = arrayAsTable(_fields, {
128
+ primaryKeyName: "fakeId",
129
+ fields: [
130
+ { name: "fakeId", type: FieldType.string, description: '', defaultValue: () => newid() },
131
+ { name: "name", type: FieldType.string, description: '' },
132
+ { name: "type", type: FieldType.string, description: '' },
133
+ { name: "description", type: FieldType.string, description: '' },
134
+ { name: "default", type: FieldType.string, description: '' },
135
+ { name: "optional", type: FieldType.string, description: '' },
136
+ { name: "isArray", type: FieldType.string, description: '' },
137
+ ]
138
+ });
139
+ const _fieldsDocs = _fields.map(f => initDoc(f, inMemoryTable));
140
+ const _fieldsDocsObs = observable(_fieldsDocs);
141
+
142
+ const newRow = () => {
143
+ const newField = initDoc({
144
+ // @ts-ignore
145
+ fakeId: newid(),
146
+ name: "",
147
+ description: "",
148
+ type: FieldType.string,
149
+ optional: false,
150
+ default: "",
151
+ isArray: false,
152
+ }, inMemoryTable);
153
+ _fieldsDocsObs([..._fieldsDocsObs(), newField]);
154
+ return newField;
155
+ }
156
+ return [_fieldsDocsObs, newRow];
157
+ });
158
+
159
+ useObservable(fields);
160
+
161
+ function updateSchemaFields() {
162
+ ioSchema({
163
+ ...ioSchema(),
164
+ type: IOSchemaType.complex,
165
+ fields: fields().map(f => f.toJS()),
166
+ });
167
+ }
168
+
169
+ useEffect(() => {
170
+ const subs = fields().map(f => f.q.subscribe(() => updateSchemaFields()));
171
+ return () => subs.forEach(s => s.dispose());
172
+ }, [fields()]);
173
+
174
+ return (
175
+ <div style={{ fontSize: '9pt' }} className="mt-2">
176
+ TODO - Move Datagrid over from peers-kore
177
+ {/* <Datagrid<IField>
178
+ primaryKey={{ name: "fakeId", dataType: "string" }}
179
+ columns={[
180
+ // { name: "name2", displayName: "Field Name" },
181
+ { name: "name", displayName: "Field Name", width: "180px" },
182
+ {
183
+ name: "type",
184
+ width: "120px",
185
+ getContent(doc, ref: any) {
186
+ return (
187
+ <select
188
+ ref={ref}
189
+ className="form-select form-select-sm"
190
+ defaultValue={doc.qs.type()}
191
+ onChange={evt => doc.qs.type(evt.target.value as FieldType)}
192
+ >
193
+ {Object.values(FieldType).map((type) =>
194
+ <option
195
+ key={type}
196
+ value={type}
197
+ >
198
+ {type}
199
+ </option>
200
+ )}
201
+ </select>
202
+ )
203
+ },
204
+ },
205
+ { name: "description" },
206
+ { name: "default", displayName: "Default Value", width: "120px" },
207
+ { name: "optional", dataType: "boolean", width: "40px" },
208
+ { name: "isArray", dataType: "boolean", displayName: "Array", width: "40px" },
209
+ {
210
+ name: 'delete',
211
+ displayName: '',
212
+ width: '40px',
213
+ getContent(doc: any) {
214
+ return (
215
+ <button
216
+ className="btn btn-sm"
217
+ onClick={() => {
218
+ fields([...(_.without(fields(), doc))]);
219
+ updateSchemaFields();
220
+ }}
221
+ >
222
+ <i className="bi bi-trash"></i>
223
+ </button>)
224
+ }
225
+ },
226
+ ]}
227
+ // @ts-ignore
228
+ data={fields()}
229
+ disableSorting={true}
230
+ newRow={newRow}
231
+ /> */}
232
+ </div>
233
+ )
234
+ }
@@ -0,0 +1,98 @@
1
+ import React, { useState, useEffect, useRef } from 'react';
2
+ import InfiniteScroll from 'react-infinite-scroll-component';
3
+ import { useObservable } from '../hooks';
4
+ import { observable } from "@peers-app/peers-sdk";
5
+
6
+ interface IProps<T> {
7
+ loadMore: (existingItems: T[]) => Promise<T[]>
8
+ renderItems: (items: T[]) => React.ReactNode
9
+ filterItems?:(existingItems: T[]) => T[]
10
+ endOfList?: React.ReactNode
11
+ loadingIndicator?: React.ReactNode
12
+ scrollThreshold?: number | string
13
+ lazyListStyle?: React.CSSProperties
14
+ resetTrigger?: any
15
+ }
16
+
17
+ export function LazyList<T>(props: IProps<T>) {
18
+ const [itemsObsAry] = useState(() => observable<T[]>([]));
19
+ const [items] = useObservable(itemsObsAry);
20
+ const [allLoaded, setAllLoaded] = useState(false);
21
+ const [loading] = useState(() => observable(false));
22
+ useObservable(loading);
23
+ const isLoadingSync = useRef(false); // Synchronous loading flag
24
+
25
+ async function loadMore() {
26
+ if (loading() || isLoadingSync.current) {
27
+ return;
28
+ }
29
+ isLoadingSync.current = true;
30
+ loading(true);
31
+ const moreItems = await props.loadMore(items);
32
+ if (!moreItems.length) {
33
+ setAllLoaded(true);
34
+ } else {
35
+ itemsObsAry([...itemsObsAry(), ...moreItems]);
36
+ }
37
+ loading(false);
38
+ isLoadingSync.current = false;
39
+ }
40
+
41
+ let renderItems = items;
42
+ if (props.filterItems) {
43
+ renderItems = props.filterItems(items);
44
+ }
45
+
46
+ useEffect(() => {
47
+ if (renderItems.length < 50 && !allLoaded && !loading() && !isLoadingSync.current) {
48
+ loadMore();
49
+ }
50
+ }, [renderItems.length, allLoaded, loading()]);
51
+
52
+ useEffect(() => {
53
+ itemsObsAry([]);
54
+ setAllLoaded(false);
55
+ isLoadingSync.current = false; // Reset sync loading flag when resetting
56
+ }, [props.resetTrigger]);
57
+ // console.log('existing tasks', items.length);
58
+ // console.log('rendering tasks', renderItems.length);
59
+
60
+ return (
61
+ <div
62
+ id="scrollableDiv"
63
+ style={props.lazyListStyle}
64
+ // style={{
65
+ // // height: '600px',
66
+ // overflow: 'auto',
67
+ // marginLeft: '10px',
68
+ // display: 'flex',
69
+ // // flexDirection: 'column-reverse',
70
+ // }}
71
+ >
72
+ <InfiniteScroll
73
+ dataLength={renderItems.length}
74
+ next={loadMore}
75
+ hasMore={!allLoaded}
76
+ scrollThreshold={props.scrollThreshold}
77
+ loader={
78
+ props.loadingIndicator ??
79
+ <>
80
+ <div className="d-flex justify-content-center">
81
+ <div>loading...</div>
82
+ </div>
83
+ </>
84
+ }
85
+ endMessage={
86
+ props.endOfList ??
87
+ <>
88
+ <div className="d-flex justify-content-center">
89
+ <i>end of list</i>
90
+ </div>
91
+ </>
92
+ }
93
+ >
94
+ {props.renderItems(renderItems)}
95
+ </InfiniteScroll>
96
+ </div>
97
+ )
98
+ }
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import { LazyList } from './lazy-list';
3
+ import { ISortable, SortableList } from './sortable-list';
4
+
5
+ interface IProps<T> {
6
+ loadMore: (existingItems: T[]) => Promise<T[]>
7
+ filterItems?: (existingItems: T[]) => T[]
8
+ renderItem: (props: { item: T, listId: string, sortHandle: string }) => React.ReactNode,
9
+ listsGroup?: string
10
+ onAdd?: ((itemId: string, sortOrder: number) => any),
11
+ onUpdate?: ((args: { items: T[], ixMoved: number[] }) => any),
12
+ hidden?: boolean,
13
+ containerProps?: Record<string, any>
14
+ dragHandleClassName?: string
15
+ sortDirection?: 'asc' | 'desc'
16
+ minHeight?: string | number
17
+ paddingBottom?: string | number
18
+ endOfList?: React.ReactNode
19
+ loadingIndicator?: React.ReactNode
20
+ scrollThreshold?: string | number
21
+ lazyListStyle?: React.CSSProperties
22
+ }
23
+
24
+ export function LazySortableList<T extends ISortable>(props: IProps<T>) {
25
+
26
+ return (
27
+ <LazyList
28
+ lazyListStyle={props.lazyListStyle}
29
+ loadMore={props.loadMore}
30
+ filterItems={props.filterItems}
31
+ endOfList={props.endOfList}
32
+ loadingIndicator={props.loadingIndicator}
33
+ scrollThreshold={props.scrollThreshold}
34
+ renderItems={items => (
35
+ <SortableList
36
+ items={items}
37
+ sortDirection={props.sortDirection}
38
+ renderItem={props.renderItem}
39
+ listsGroup={props.listsGroup}
40
+ onAdd={props.onAdd}
41
+ onUpdate={props.onUpdate}
42
+ hidden={props.hidden}
43
+ containerProps={props.containerProps}
44
+ dragHandleClassName={props.dragHandleClassName}
45
+ minHeight={props.minHeight}
46
+ paddingBottom={props.paddingBottom}
47
+ />
48
+ )}
49
+ />
50
+ )
51
+ }