@dxos/plugin-space 0.10.0 → 0.11.1

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 (646) hide show
  1. package/PLUGIN.mdl +11 -0
  2. package/dist/lib/SpacePlugin.mjs +2 -0
  3. package/dist/lib/SpacePlugin.node.mjs +628 -0
  4. package/dist/lib/SpacePlugin.node.mjs.map +1 -0
  5. package/dist/lib/SpacePlugin.workerd.mjs +26 -0
  6. package/dist/lib/SpacePlugin.workerd.mjs.map +1 -0
  7. package/dist/lib/capabilities/node.mjs +10 -0
  8. package/dist/lib/capabilities/node.mjs.map +1 -0
  9. package/dist/lib/capabilities.mjs +24 -0
  10. package/dist/lib/capabilities.mjs.map +1 -0
  11. package/dist/lib/chunk-CollectionArticle.mjs +90 -0
  12. package/dist/lib/chunk-CollectionArticle.mjs.map +1 -0
  13. package/dist/lib/chunk-CollectionSection.mjs +21 -0
  14. package/dist/lib/chunk-CollectionSection.mjs.map +1 -0
  15. package/dist/lib/chunk-CreateObjectDialog.mjs +178 -0
  16. package/dist/lib/chunk-CreateObjectDialog.mjs.map +1 -0
  17. package/dist/lib/chunk-CreateSpaceDialog.mjs +68 -0
  18. package/dist/lib/chunk-CreateSpaceDialog.mjs.map +1 -0
  19. package/dist/lib/chunk-DefaultProperties.mjs +59 -0
  20. package/dist/lib/chunk-DefaultProperties.mjs.map +1 -0
  21. package/dist/lib/chunk-ImportSpaceDialog.mjs +58 -0
  22. package/dist/lib/chunk-ImportSpaceDialog.mjs.map +1 -0
  23. package/dist/lib/chunk-InlineSyncStatus.mjs +37 -0
  24. package/dist/lib/chunk-InlineSyncStatus.mjs.map +1 -0
  25. package/dist/lib/chunk-JoinDialog.mjs +65 -0
  26. package/dist/lib/chunk-JoinDialog.mjs.map +1 -0
  27. package/dist/lib/chunk-MembersContainer.mjs +263 -0
  28. package/dist/lib/chunk-MembersContainer.mjs.map +1 -0
  29. package/dist/lib/chunk-MergePreview.mjs +91 -0
  30. package/dist/lib/chunk-MergePreview.mjs.map +1 -0
  31. package/dist/lib/chunk-ObjectCardStack.mjs +68 -0
  32. package/dist/lib/chunk-ObjectCardStack.mjs.map +1 -0
  33. package/dist/lib/chunk-RecordArticle.mjs +106 -0
  34. package/dist/lib/chunk-RecordArticle.mjs.map +1 -0
  35. package/dist/lib/chunk-RelatedArticle.mjs +71 -0
  36. package/dist/lib/chunk-RelatedArticle.mjs.map +1 -0
  37. package/dist/lib/chunk-RenamePopover.mjs +94 -0
  38. package/dist/lib/chunk-RenamePopover.mjs.map +1 -0
  39. package/dist/lib/chunk-SchemaContainer.mjs +53 -0
  40. package/dist/lib/chunk-SchemaContainer.mjs.map +1 -0
  41. package/dist/lib/chunk-SmallPresenceLive.mjs +2 -0
  42. package/dist/lib/chunk-SpaceHomeArticle.mjs +82 -0
  43. package/dist/lib/chunk-SpaceHomeArticle.mjs.map +1 -0
  44. package/dist/lib/chunk-SpaceHomeDashboard.mjs +96 -0
  45. package/dist/lib/chunk-SpaceHomeDashboard.mjs.map +1 -0
  46. package/dist/lib/chunk-SpaceHomeRecent.mjs +79 -0
  47. package/dist/lib/chunk-SpaceHomeRecent.mjs.map +1 -0
  48. package/dist/lib/chunk-SpacePlugin.mjs +97 -0
  49. package/dist/lib/chunk-SpacePlugin.mjs.map +1 -0
  50. package/dist/lib/chunk-SpacePresence.mjs +155 -0
  51. package/dist/lib/chunk-SpacePresence.mjs.map +1 -0
  52. package/dist/lib/chunk-SpaceSettings.mjs +63 -0
  53. package/dist/lib/chunk-SpaceSettings.mjs.map +1 -0
  54. package/dist/lib/chunk-SpaceSettingsContainer.mjs +278 -0
  55. package/dist/lib/chunk-SpaceSettingsContainer.mjs.map +1 -0
  56. package/dist/lib/chunk-SyncStatus.mjs +166 -0
  57. package/dist/lib/chunk-SyncStatus.mjs.map +1 -0
  58. package/dist/lib/chunk-TypeArticle.mjs +469 -0
  59. package/dist/lib/chunk-TypeArticle.mjs.map +1 -0
  60. package/dist/lib/chunk-ViewEditor.mjs +78 -0
  61. package/dist/lib/chunk-ViewEditor.mjs.map +1 -0
  62. package/dist/lib/chunk-add-object.mjs +74 -0
  63. package/dist/lib/chunk-add-object.mjs.map +1 -0
  64. package/dist/lib/chunk-add-relation.mjs +16 -0
  65. package/dist/lib/chunk-add-relation.mjs.map +1 -0
  66. package/dist/lib/chunk-add-type.mjs +41 -0
  67. package/dist/lib/chunk-add-type.mjs.map +1 -0
  68. package/dist/lib/chunk-app-graph-builder.mjs +1056 -0
  69. package/dist/lib/chunk-app-graph-builder.mjs.map +1 -0
  70. package/dist/lib/chunk-close.mjs +11 -0
  71. package/dist/lib/chunk-close.mjs.map +1 -0
  72. package/dist/lib/chunk-collection-path.mjs +65 -0
  73. package/dist/lib/chunk-collection-path.mjs.map +1 -0
  74. package/dist/lib/chunk-create-object.mjs +80 -0
  75. package/dist/lib/chunk-create-object.mjs.map +1 -0
  76. package/dist/lib/chunk-create.mjs +62 -0
  77. package/dist/lib/chunk-create.mjs.map +1 -0
  78. package/dist/lib/chunk-definitions.mjs +466 -0
  79. package/dist/lib/chunk-definitions.mjs.map +1 -0
  80. package/dist/lib/chunk-delete-field.mjs +52 -0
  81. package/dist/lib/chunk-delete-field.mjs.map +1 -0
  82. package/dist/lib/chunk-delete.mjs +11 -0
  83. package/dist/lib/chunk-delete.mjs.map +1 -0
  84. package/dist/lib/chunk-duplicate-object.mjs +11 -0
  85. package/dist/lib/chunk-duplicate-object.mjs.map +1 -0
  86. package/dist/lib/chunk-errors.mjs +10 -0
  87. package/dist/lib/chunk-errors.mjs.map +1 -0
  88. package/dist/lib/chunk-export-space.mjs +24 -0
  89. package/dist/lib/chunk-export-space.mjs.map +1 -0
  90. package/dist/lib/chunk-find-duplicates.mjs +19 -0
  91. package/dist/lib/chunk-find-duplicates.mjs.map +1 -0
  92. package/dist/lib/chunk-get-share-link.mjs +29 -0
  93. package/dist/lib/chunk-get-share-link.mjs.map +1 -0
  94. package/dist/lib/chunk-helpers.mjs +14 -0
  95. package/dist/lib/chunk-helpers.mjs.map +1 -0
  96. package/dist/lib/chunk-identity-created.mjs +26 -0
  97. package/dist/lib/chunk-identity-created.mjs.map +1 -0
  98. package/dist/lib/chunk-import-space.mjs +16 -0
  99. package/dist/lib/chunk-import-space.mjs.map +1 -0
  100. package/dist/lib/chunk-join.mjs +35 -0
  101. package/dist/lib/chunk-join.mjs.map +1 -0
  102. package/dist/lib/chunk-merge-duplicates.mjs +62 -0
  103. package/dist/lib/chunk-merge-duplicates.mjs.map +1 -0
  104. package/dist/lib/{neutral/chunk-5ZZS3KMK.mjs → chunk-meta.mjs} +15 -24
  105. package/dist/lib/chunk-meta.mjs.map +1 -0
  106. package/dist/lib/chunk-migrate.mjs +45 -0
  107. package/dist/lib/chunk-migrate.mjs.map +1 -0
  108. package/dist/lib/chunk-navigation-handler.mjs +63 -0
  109. package/dist/lib/chunk-navigation-handler.mjs.map +1 -0
  110. package/dist/lib/chunk-navigation-target-resolver.mjs +79 -0
  111. package/dist/lib/chunk-navigation-target-resolver.mjs.map +1 -0
  112. package/dist/lib/chunk-open-create-object.mjs +32 -0
  113. package/dist/lib/chunk-open-create-object.mjs.map +1 -0
  114. package/dist/lib/chunk-open-create-space.mjs +16 -0
  115. package/dist/lib/chunk-open-create-space.mjs.map +1 -0
  116. package/dist/lib/chunk-open-import-space.mjs +16 -0
  117. package/dist/lib/chunk-open-import-space.mjs.map +1 -0
  118. package/dist/lib/chunk-open-members.mjs +15 -0
  119. package/dist/lib/chunk-open-members.mjs.map +1 -0
  120. package/dist/lib/chunk-open-settings.mjs +15 -0
  121. package/dist/lib/chunk-open-settings.mjs.map +1 -0
  122. package/dist/lib/chunk-open.mjs +11 -0
  123. package/dist/lib/chunk-open.mjs.map +1 -0
  124. package/dist/lib/chunk-operation-handler.mjs +13 -0
  125. package/dist/lib/chunk-operation-handler.mjs.map +1 -0
  126. package/dist/lib/chunk-react-root.mjs +20 -0
  127. package/dist/lib/chunk-react-root.mjs.map +1 -0
  128. package/dist/lib/chunk-react-surface.mjs +384 -0
  129. package/dist/lib/chunk-react-surface.mjs.map +1 -0
  130. package/dist/lib/chunk-remove-objects.mjs +83 -0
  131. package/dist/lib/chunk-remove-objects.mjs.map +1 -0
  132. package/dist/lib/chunk-rename-object.mjs +18 -0
  133. package/dist/lib/chunk-rename-object.mjs.map +1 -0
  134. package/dist/lib/chunk-rename.mjs +18 -0
  135. package/dist/lib/chunk-rename.mjs.map +1 -0
  136. package/dist/lib/chunk-repair.mjs +28 -0
  137. package/dist/lib/chunk-repair.mjs.map +1 -0
  138. package/dist/lib/chunk-restore-field.mjs +50 -0
  139. package/dist/lib/chunk-restore-field.mjs.map +1 -0
  140. package/dist/lib/chunk-restore-objects.mjs +33 -0
  141. package/dist/lib/chunk-restore-objects.mjs.map +1 -0
  142. package/dist/lib/chunk-settings.mjs +23 -0
  143. package/dist/lib/chunk-settings.mjs.map +1 -0
  144. package/dist/lib/chunk-share.mjs +23 -0
  145. package/dist/lib/chunk-share.mjs.map +1 -0
  146. package/dist/lib/chunk-snapshot.mjs +24 -0
  147. package/dist/lib/chunk-snapshot.mjs.map +1 -0
  148. package/dist/lib/chunk-spaces-ready.mjs +242 -0
  149. package/dist/lib/chunk-spaces-ready.mjs.map +1 -0
  150. package/dist/lib/chunk-state.mjs +48 -0
  151. package/dist/lib/chunk-state.mjs.map +1 -0
  152. package/dist/lib/chunk-types.mjs +56 -0
  153. package/dist/lib/chunk-types.mjs.map +1 -0
  154. package/dist/lib/chunk-undo-mappings.mjs +40 -0
  155. package/dist/lib/chunk-undo-mappings.mjs.map +1 -0
  156. package/dist/lib/chunk-util.mjs +34 -0
  157. package/dist/lib/chunk-util.mjs.map +1 -0
  158. package/dist/lib/chunk-wait-for-object.mjs +16 -0
  159. package/dist/lib/chunk-wait-for-object.mjs.map +1 -0
  160. package/dist/lib/components.mjs +329 -0
  161. package/dist/lib/components.mjs.map +1 -0
  162. package/dist/lib/{neutral/chunk-C2ULK22J.mjs → constants.mjs} +5 -10
  163. package/dist/lib/constants.mjs.map +1 -0
  164. package/dist/lib/containers.mjs +31 -0
  165. package/dist/lib/containers.mjs.map +1 -0
  166. package/dist/lib/hooks.mjs +185 -0
  167. package/dist/lib/hooks.mjs.map +1 -0
  168. package/dist/lib/index.mjs +7 -0
  169. package/dist/lib/meta.mjs +2 -0
  170. package/dist/lib/operations.mjs +8 -0
  171. package/dist/lib/operations.mjs.map +1 -0
  172. package/dist/lib/plugin.mjs +9 -0
  173. package/dist/lib/plugin.mjs.map +1 -0
  174. package/dist/lib/testing.mjs +2 -0
  175. package/dist/lib/translations.mjs +350 -0
  176. package/dist/lib/translations.mjs.map +1 -0
  177. package/dist/lib/types.mjs +60 -0
  178. package/dist/lib/types.mjs.map +1 -0
  179. package/dist/types/src/SpacePlugin.workerd.d.ts.map +1 -1
  180. package/dist/types/src/capabilities/SpaceFormFields.d.ts +10 -0
  181. package/dist/types/src/capabilities/SpaceFormFields.d.ts.map +1 -0
  182. package/dist/types/src/capabilities/SpaceSurfaces.d.ts +50 -0
  183. package/dist/types/src/capabilities/SpaceSurfaces.d.ts.map +1 -0
  184. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +1 -1
  185. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts +6 -1
  186. package/dist/types/src/capabilities/app-graph-builder/extensions/collections.d.ts.map +1 -1
  187. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts +1 -1
  188. package/dist/types/src/capabilities/app-graph-builder/extensions/companions.d.ts.map +1 -1
  189. package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts +7 -1
  190. package/dist/types/src/capabilities/app-graph-builder/extensions/database.d.ts.map +1 -1
  191. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts +2 -7
  192. package/dist/types/src/capabilities/app-graph-builder/extensions/settings.d.ts.map +1 -1
  193. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts +3 -2
  194. package/dist/types/src/capabilities/app-graph-builder/extensions/shared.d.ts.map +1 -1
  195. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts +5 -0
  196. package/dist/types/src/capabilities/app-graph-builder/extensions/spaces.d.ts.map +1 -1
  197. package/dist/types/src/capabilities/create-object.d.ts +1 -1
  198. package/dist/types/src/capabilities/identity-created.d.ts +1 -1
  199. package/dist/types/src/capabilities/index.d.ts +1 -1
  200. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  201. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts +3 -1
  202. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts.map +1 -1
  203. package/dist/types/src/capabilities/navigation-target-resolver.d.ts +5 -0
  204. package/dist/types/src/capabilities/navigation-target-resolver.d.ts.map +1 -0
  205. package/dist/types/src/capabilities/operation-handler.d.ts +1 -1
  206. package/dist/types/src/capabilities/react-root.d.ts +1 -1
  207. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  208. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  209. package/dist/types/src/capabilities/repair.d.ts +1 -1
  210. package/dist/types/src/capabilities/settings.d.ts +1 -1
  211. package/dist/types/src/capabilities/spaces-ready.d.ts +1 -1
  212. package/dist/types/src/capabilities/state.d.ts +1 -1
  213. package/dist/types/src/capabilities/try-get-view.d.ts +7 -0
  214. package/dist/types/src/capabilities/try-get-view.d.ts.map +1 -0
  215. package/dist/types/src/capabilities/undo-mappings.d.ts +1 -1
  216. package/dist/types/src/collection-path.d.ts +28 -0
  217. package/dist/types/src/collection-path.d.ts.map +1 -0
  218. package/dist/types/src/collection-path.test.d.ts +2 -0
  219. package/dist/types/src/collection-path.test.d.ts.map +1 -0
  220. package/dist/types/src/commands/space/export/export.d.ts +23 -0
  221. package/dist/types/src/commands/space/export/export.d.ts.map +1 -0
  222. package/dist/types/src/commands/space/export/export.test.d.ts +2 -0
  223. package/dist/types/src/commands/space/export/export.test.d.ts.map +1 -0
  224. package/dist/types/src/commands/space/export/index.d.ts +2 -0
  225. package/dist/types/src/commands/space/export/index.d.ts.map +1 -0
  226. package/dist/types/src/commands/space/import/import.d.ts +17 -0
  227. package/dist/types/src/commands/space/import/import.d.ts.map +1 -0
  228. package/dist/types/src/commands/space/import/import.test.d.ts +2 -0
  229. package/dist/types/src/commands/space/import/import.test.d.ts.map +1 -0
  230. package/dist/types/src/commands/space/import/index.d.ts +2 -0
  231. package/dist/types/src/commands/space/import/index.d.ts.map +1 -0
  232. package/dist/types/src/commands/space/index.d.ts +8 -1
  233. package/dist/types/src/commands/space/index.d.ts.map +1 -1
  234. package/dist/types/src/components/AwaitingObject/AwaitingObject.d.ts.map +1 -1
  235. package/dist/types/src/components/SyncStatus/status.d.ts +7 -4
  236. package/dist/types/src/components/SyncStatus/status.d.ts.map +1 -1
  237. package/dist/types/src/components/SyncStatus/status.test.d.ts +2 -0
  238. package/dist/types/src/components/SyncStatus/status.test.d.ts.map +1 -0
  239. package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts +4 -4
  240. package/dist/types/src/containers/CollectionArticle/CollectionArticle.d.ts.map +1 -1
  241. package/dist/types/src/containers/CollectionSection/CollectionSection.d.ts +4 -1
  242. package/dist/types/src/containers/CollectionSection/CollectionSection.d.ts.map +1 -1
  243. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts +4 -1
  244. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.d.ts.map +1 -1
  245. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts +420 -9
  246. package/dist/types/src/containers/CreateObjectDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  247. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts +4 -1
  248. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.d.ts.map +1 -1
  249. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts +423 -10
  250. package/dist/types/src/containers/CreateSpaceDialog/CreateSpaceDialog.stories.d.ts.map +1 -1
  251. package/dist/types/src/containers/ImportSpaceDialog/ImportSpaceDialog.d.ts +4 -1
  252. package/dist/types/src/containers/ImportSpaceDialog/ImportSpaceDialog.d.ts.map +1 -1
  253. package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts +5 -2
  254. package/dist/types/src/containers/InlineSyncStatus/InlineSyncStatus.d.ts.map +1 -1
  255. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts +4 -1
  256. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -1
  257. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +423 -10
  258. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -1
  259. package/dist/types/src/containers/MembersContainer/MembersContainer.d.ts +4 -1
  260. package/dist/types/src/containers/MembersContainer/MembersContainer.d.ts.map +1 -1
  261. package/dist/types/src/containers/MergePreview/MergePreview.d.ts +16 -0
  262. package/dist/types/src/containers/MergePreview/MergePreview.d.ts.map +1 -0
  263. package/dist/types/src/containers/MergePreview/index.d.ts +2 -0
  264. package/dist/types/src/containers/MergePreview/index.d.ts.map +1 -0
  265. package/dist/types/src/containers/ObjectCardStack/ObjectCardStack.d.ts +3 -2
  266. package/dist/types/src/containers/ObjectCardStack/ObjectCardStack.d.ts.map +1 -1
  267. package/dist/types/src/containers/RecordArticle/RecordArticle.d.ts +4 -1
  268. package/dist/types/src/containers/RecordArticle/RecordArticle.d.ts.map +1 -1
  269. package/dist/types/src/containers/RecordArticle/RecordArticle.stories.d.ts.map +1 -1
  270. package/dist/types/src/containers/RelatedArticle/RelatedArticle.d.ts +4 -1
  271. package/dist/types/src/containers/RelatedArticle/RelatedArticle.d.ts.map +1 -1
  272. package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts +4 -4
  273. package/dist/types/src/containers/RenamePopover/RenamePopover.d.ts.map +1 -1
  274. package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts +4 -7
  275. package/dist/types/src/containers/SchemaContainer/SchemaContainer.d.ts.map +1 -1
  276. package/dist/types/src/containers/SchemaContainer/use-query-space-types.d.ts +7 -0
  277. package/dist/types/src/containers/SchemaContainer/use-query-space-types.d.ts.map +1 -0
  278. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts +4 -11
  279. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.d.ts.map +1 -1
  280. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.stories.d.ts +14 -0
  281. package/dist/types/src/containers/SpaceHomeArticle/SpaceHomeArticle.stories.d.ts.map +1 -0
  282. package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.d.ts +15 -0
  283. package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.d.ts.map +1 -0
  284. package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.stories.d.ts +20 -0
  285. package/dist/types/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.stories.d.ts.map +1 -0
  286. package/dist/types/src/containers/SpaceHomeDashboard/index.d.ts +2 -0
  287. package/dist/types/src/containers/SpaceHomeDashboard/index.d.ts.map +1 -0
  288. package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts +5 -8
  289. package/dist/types/src/containers/SpaceHomeRecent/SpaceHomeRecent.d.ts.map +1 -1
  290. package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts +7 -4
  291. package/dist/types/src/containers/SpacePresence/SpacePresence.d.ts.map +1 -1
  292. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts +419 -9
  293. package/dist/types/src/containers/SpacePresence/SpacePresence.stories.d.ts.map +1 -1
  294. package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts +4 -1
  295. package/dist/types/src/containers/SpaceSettings/SpaceSettings.d.ts.map +1 -1
  296. package/dist/types/src/containers/SpaceSettings/SpaceSettings.stories.d.ts +423 -10
  297. package/dist/types/src/containers/SpaceSettings/SpaceSettings.stories.d.ts.map +1 -1
  298. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts +419 -9
  299. package/dist/types/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.stories.d.ts.map +1 -1
  300. package/dist/types/src/containers/SyncStatus/SyncStatus.d.ts +7 -2
  301. package/dist/types/src/containers/SyncStatus/SyncStatus.d.ts.map +1 -1
  302. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts +434 -11
  303. package/dist/types/src/containers/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  304. package/dist/types/src/containers/TypeArticle/TypeArticle.d.ts +14 -0
  305. package/dist/types/src/containers/TypeArticle/TypeArticle.d.ts.map +1 -0
  306. package/dist/types/src/containers/TypeArticle/TypeArticle.stories.d.ts +45 -0
  307. package/dist/types/src/containers/TypeArticle/TypeArticle.stories.d.ts.map +1 -0
  308. package/dist/types/src/containers/TypeArticle/duplicatesGroup.d.ts +19 -0
  309. package/dist/types/src/containers/TypeArticle/duplicatesGroup.d.ts.map +1 -0
  310. package/dist/types/src/containers/TypeArticle/index.d.ts +2 -0
  311. package/dist/types/src/containers/TypeArticle/index.d.ts.map +1 -0
  312. package/dist/types/src/containers/TypeArticle/useDuplicates.d.ts +34 -0
  313. package/dist/types/src/containers/TypeArticle/useDuplicates.d.ts.map +1 -0
  314. package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts +4 -1
  315. package/dist/types/src/containers/ViewEditor/ViewEditor.d.ts.map +1 -1
  316. package/dist/types/src/containers/index.d.ts +3 -2
  317. package/dist/types/src/containers/index.d.ts.map +1 -1
  318. package/dist/types/src/errors.d.ts +30 -0
  319. package/dist/types/src/errors.d.ts.map +1 -1
  320. package/dist/types/src/hooks/index.d.ts +2 -0
  321. package/dist/types/src/hooks/index.d.ts.map +1 -1
  322. package/dist/types/src/hooks/useEdgeStatus.d.ts +6 -0
  323. package/dist/types/src/hooks/useEdgeStatus.d.ts.map +1 -0
  324. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  325. package/dist/types/src/hooks/useStalled.d.ts +13 -0
  326. package/dist/types/src/hooks/useStalled.d.ts.map +1 -0
  327. package/dist/types/src/operations/create.d.ts.map +1 -1
  328. package/dist/types/src/operations/definitions.d.ts +29 -1
  329. package/dist/types/src/operations/definitions.d.ts.map +1 -1
  330. package/dist/types/src/operations/find-duplicates.d.ts +5 -0
  331. package/dist/types/src/operations/find-duplicates.d.ts.map +1 -0
  332. package/dist/types/src/operations/helpers.d.ts +3 -0
  333. package/dist/types/src/operations/helpers.d.ts.map +1 -1
  334. package/dist/types/src/operations/index.d.ts.map +1 -1
  335. package/dist/types/src/operations/join.d.ts.map +1 -1
  336. package/dist/types/src/operations/merge-duplicates.d.ts +5 -0
  337. package/dist/types/src/operations/merge-duplicates.d.ts.map +1 -0
  338. package/dist/types/src/operations/open-settings.d.ts.map +1 -1
  339. package/dist/types/src/operations/remove-objects.d.ts.map +1 -1
  340. package/dist/types/src/translations.d.ts +419 -9
  341. package/dist/types/src/translations.d.ts.map +1 -1
  342. package/dist/types/src/type-section-path.d.ts +22 -0
  343. package/dist/types/src/type-section-path.d.ts.map +1 -0
  344. package/dist/types/src/type-section-path.test.d.ts +2 -0
  345. package/dist/types/src/type-section-path.test.d.ts.map +1 -0
  346. package/dist/types/src/types/capabilities.d.ts +22 -2
  347. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  348. package/dist/types/src/types/surface.d.ts +4 -4
  349. package/dist/types/src/types/surface.d.ts.map +1 -1
  350. package/dist/types/src/types/types.d.ts +6 -0
  351. package/dist/types/src/types/types.d.ts.map +1 -1
  352. package/dist/types/tsconfig.tsbuildinfo +1 -1
  353. package/package.json +87 -72
  354. package/src/SpacePlugin.ts +6 -6
  355. package/src/SpacePlugin.workerd.ts +3 -1
  356. package/src/capabilities/SpaceFormFields.tsx +72 -0
  357. package/src/capabilities/SpaceSurfaces.tsx +219 -0
  358. package/src/capabilities/app-graph-builder/extensions/collections.ts +74 -21
  359. package/src/capabilities/app-graph-builder/extensions/companions.ts +10 -5
  360. package/src/capabilities/app-graph-builder/extensions/database.ts +64 -57
  361. package/src/capabilities/app-graph-builder/extensions/settings.ts +23 -13
  362. package/src/capabilities/app-graph-builder/extensions/shared.ts +3 -2
  363. package/src/capabilities/app-graph-builder/extensions/spaces.ts +6 -7
  364. package/src/capabilities/create-object.ts +1 -14
  365. package/src/capabilities/index.ts +4 -1
  366. package/src/capabilities/navigation-handler/navigation-handler.ts +27 -7
  367. package/src/capabilities/navigation-target-resolver.ts +77 -0
  368. package/src/capabilities/react-surface.ts +274 -0
  369. package/src/capabilities/spaces-ready.ts +31 -18
  370. package/src/capabilities/state.ts +3 -1
  371. package/src/capabilities/try-get-view.ts +24 -0
  372. package/src/collection-path.test.ts +161 -0
  373. package/src/collection-path.ts +97 -0
  374. package/src/commands/space/export/export.test.ts +68 -0
  375. package/src/commands/space/export/export.ts +118 -0
  376. package/src/commands/space/export/index.ts +5 -0
  377. package/src/commands/space/import/import.test.ts +80 -0
  378. package/src/commands/space/import/import.ts +65 -0
  379. package/src/commands/space/import/index.ts +5 -0
  380. package/src/commands/space/index.ts +16 -1
  381. package/src/components/AwaitingObject/AwaitingObject.tsx +10 -4
  382. package/src/components/CreateObjectPanel/CreateObjectPanel.tsx +16 -18
  383. package/src/components/SyncStatus/status.test.ts +49 -0
  384. package/src/components/SyncStatus/status.ts +25 -12
  385. package/src/containers/CollectionArticle/CollectionArticle.tsx +5 -3
  386. package/src/containers/CollectionSection/CollectionSection.tsx +2 -0
  387. package/src/containers/CreateObjectDialog/CreateObjectDialog.stories.tsx +18 -4
  388. package/src/containers/CreateObjectDialog/CreateObjectDialog.tsx +13 -17
  389. package/src/containers/CreateSpaceDialog/CreateSpaceDialog.tsx +28 -19
  390. package/src/containers/DefaultProperties/DefaultProperties.tsx +4 -2
  391. package/src/containers/ImportSpaceDialog/ImportSpaceDialog.tsx +4 -2
  392. package/src/containers/InlineSyncStatus/InlineSyncStatus.tsx +7 -17
  393. package/src/containers/JoinDialog/JoinDialog.tsx +5 -3
  394. package/src/containers/MembersContainer/MembersContainer.tsx +2 -0
  395. package/src/containers/MergePreview/MergePreview.tsx +90 -0
  396. package/src/containers/MergePreview/index.ts +5 -0
  397. package/src/containers/ObjectCardStack/ObjectCardStack.tsx +46 -43
  398. package/src/containers/RecordArticle/RecordArticle.stories.tsx +2 -1
  399. package/src/containers/RecordArticle/RecordArticle.tsx +8 -4
  400. package/src/containers/RelatedArticle/RelatedArticle.tsx +7 -3
  401. package/src/containers/RenamePopover/RenamePopover.tsx +2 -0
  402. package/src/containers/SchemaContainer/SchemaContainer.tsx +4 -17
  403. package/src/containers/SchemaContainer/use-query-space-types.ts +28 -0
  404. package/src/containers/SpaceHomeArticle/SpaceHomeArticle.stories.tsx +116 -0
  405. package/src/containers/SpaceHomeArticle/SpaceHomeArticle.tsx +6 -5
  406. package/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.stories.tsx +99 -0
  407. package/src/containers/SpaceHomeDashboard/SpaceHomeDashboard.tsx +109 -0
  408. package/src/containers/SpaceHomeDashboard/index.ts +5 -0
  409. package/src/containers/SpaceHomeRecent/SpaceHomeRecent.tsx +17 -15
  410. package/src/containers/SpacePresence/SpacePresence.stories.tsx +4 -4
  411. package/src/containers/SpacePresence/SpacePresence.tsx +37 -36
  412. package/src/containers/SpaceSettings/SpaceSettings.tsx +3 -1
  413. package/src/containers/SpaceSettingsContainer/SpaceSettingsContainer.tsx +7 -2
  414. package/src/containers/SyncStatus/SyncStatus.stories.tsx +80 -1
  415. package/src/containers/SyncStatus/SyncStatus.tsx +36 -46
  416. package/src/containers/TypeArticle/TypeArticle.stories.tsx +249 -0
  417. package/src/containers/TypeArticle/TypeArticle.tsx +362 -0
  418. package/src/containers/TypeArticle/duplicatesGroup.tsx +150 -0
  419. package/src/containers/TypeArticle/index.ts +5 -0
  420. package/src/containers/TypeArticle/useDuplicates.ts +119 -0
  421. package/src/containers/ViewEditor/ViewEditor.tsx +3 -1
  422. package/src/containers/index.ts +3 -2
  423. package/src/errors.ts +6 -0
  424. package/src/hooks/index.ts +2 -0
  425. package/src/hooks/useEdgeStatus.ts +40 -0
  426. package/src/hooks/useInputSurfaceLookup.tsx +5 -4
  427. package/src/hooks/useRelatedObjects.ts +1 -1
  428. package/src/hooks/useStalled.ts +39 -0
  429. package/src/operations/add-object.ts +7 -7
  430. package/src/operations/create.ts +11 -3
  431. package/src/operations/definitions.ts +54 -1
  432. package/src/operations/find-duplicates.ts +33 -0
  433. package/src/operations/get-share-link.ts +1 -1
  434. package/src/operations/helpers.ts +11 -0
  435. package/src/operations/index.ts +2 -0
  436. package/src/operations/join.ts +6 -5
  437. package/src/operations/merge-duplicates.ts +51 -0
  438. package/src/operations/open-members.ts +3 -3
  439. package/src/operations/open-settings.ts +5 -3
  440. package/src/operations/remove-objects.ts +42 -3
  441. package/src/translations.ts +52 -11
  442. package/src/type-section-path.test.ts +48 -0
  443. package/src/type-section-path.ts +39 -0
  444. package/src/types/capabilities.ts +26 -2
  445. package/src/types/surface.ts +4 -8
  446. package/src/types/types.ts +7 -0
  447. package/dist/lib/neutral/CollectionArticle-BMH7SZ7Q.mjs +0 -93
  448. package/dist/lib/neutral/CollectionArticle-BMH7SZ7Q.mjs.map +0 -7
  449. package/dist/lib/neutral/CollectionSection-BLYTGOKH.mjs +0 -19
  450. package/dist/lib/neutral/CollectionSection-BLYTGOKH.mjs.map +0 -7
  451. package/dist/lib/neutral/CreateObjectDialog-5454N3FJ.mjs +0 -221
  452. package/dist/lib/neutral/CreateObjectDialog-5454N3FJ.mjs.map +0 -7
  453. package/dist/lib/neutral/CreateSpaceDialog-WWNUTLVK.mjs +0 -61
  454. package/dist/lib/neutral/CreateSpaceDialog-WWNUTLVK.mjs.map +0 -7
  455. package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs +0 -58
  456. package/dist/lib/neutral/DefaultProperties-5SAWQC6I.mjs.map +0 -7
  457. package/dist/lib/neutral/ImportSpaceDialog-CSSRTFAO.mjs +0 -64
  458. package/dist/lib/neutral/ImportSpaceDialog-CSSRTFAO.mjs.map +0 -7
  459. package/dist/lib/neutral/InlineSyncStatus-UOUTAPCU.mjs +0 -49
  460. package/dist/lib/neutral/InlineSyncStatus-UOUTAPCU.mjs.map +0 -7
  461. package/dist/lib/neutral/JoinDialog-ATNUCNL2.mjs +0 -97
  462. package/dist/lib/neutral/JoinDialog-ATNUCNL2.mjs.map +0 -7
  463. package/dist/lib/neutral/MembersContainer-C4ZTP6ZW.mjs +0 -231
  464. package/dist/lib/neutral/MembersContainer-C4ZTP6ZW.mjs.map +0 -7
  465. package/dist/lib/neutral/MenuFooter-FWE5LFM4.mjs +0 -33
  466. package/dist/lib/neutral/MenuFooter-FWE5LFM4.mjs.map +0 -7
  467. package/dist/lib/neutral/ObjectCardStack-DHVDRNRK.mjs +0 -55
  468. package/dist/lib/neutral/ObjectCardStack-DHVDRNRK.mjs.map +0 -7
  469. package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs +0 -102
  470. package/dist/lib/neutral/RecordArticle-JSORXRAA.mjs.map +0 -7
  471. package/dist/lib/neutral/RelatedArticle-Z777WVDW.mjs +0 -69
  472. package/dist/lib/neutral/RelatedArticle-Z777WVDW.mjs.map +0 -7
  473. package/dist/lib/neutral/RenamePopover-AZT2KPOF.mjs +0 -104
  474. package/dist/lib/neutral/RenamePopover-AZT2KPOF.mjs.map +0 -7
  475. package/dist/lib/neutral/SchemaContainer-4GJKQBXM.mjs +0 -53
  476. package/dist/lib/neutral/SchemaContainer-4GJKQBXM.mjs.map +0 -7
  477. package/dist/lib/neutral/SmallPresenceLive-FW3AMEY5.mjs +0 -8
  478. package/dist/lib/neutral/SmallPresenceLive-FW3AMEY5.mjs.map +0 -7
  479. package/dist/lib/neutral/SpaceHomeArticle-Y47TLZ72.mjs +0 -78
  480. package/dist/lib/neutral/SpaceHomeArticle-Y47TLZ72.mjs.map +0 -7
  481. package/dist/lib/neutral/SpaceHomeRecent-S57AO3EV.mjs +0 -89
  482. package/dist/lib/neutral/SpaceHomeRecent-S57AO3EV.mjs.map +0 -7
  483. package/dist/lib/neutral/SpacePlugin.mjs +0 -10
  484. package/dist/lib/neutral/SpacePlugin.mjs.map +0 -7
  485. package/dist/lib/neutral/SpacePlugin.node.mjs +0 -838
  486. package/dist/lib/neutral/SpacePlugin.node.mjs.map +0 -7
  487. package/dist/lib/neutral/SpacePlugin.workerd.mjs +0 -34
  488. package/dist/lib/neutral/SpacePlugin.workerd.mjs.map +0 -7
  489. package/dist/lib/neutral/SpacePresence-T37WH43Y.mjs +0 -11
  490. package/dist/lib/neutral/SpacePresence-T37WH43Y.mjs.map +0 -7
  491. package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs +0 -60
  492. package/dist/lib/neutral/SpaceSettings-6CZF7GEO.mjs.map +0 -7
  493. package/dist/lib/neutral/SpaceSettingsContainer-72CJWELM.mjs +0 -279
  494. package/dist/lib/neutral/SpaceSettingsContainer-72CJWELM.mjs.map +0 -7
  495. package/dist/lib/neutral/SyncStatus-J7CHLO5O.mjs +0 -147
  496. package/dist/lib/neutral/SyncStatus-J7CHLO5O.mjs.map +0 -7
  497. package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs +0 -143
  498. package/dist/lib/neutral/TypeCollectionArticle-W76ADS2G.mjs.map +0 -7
  499. package/dist/lib/neutral/ViewEditor-QXRUOKXR.mjs +0 -101
  500. package/dist/lib/neutral/ViewEditor-QXRUOKXR.mjs.map +0 -7
  501. package/dist/lib/neutral/add-object-H2N4AOQJ.mjs +0 -77
  502. package/dist/lib/neutral/add-object-H2N4AOQJ.mjs.map +0 -7
  503. package/dist/lib/neutral/add-relation-BGTLART5.mjs +0 -26
  504. package/dist/lib/neutral/add-relation-BGTLART5.mjs.map +0 -7
  505. package/dist/lib/neutral/add-type-JIDLRANR.mjs +0 -57
  506. package/dist/lib/neutral/add-type-JIDLRANR.mjs.map +0 -7
  507. package/dist/lib/neutral/app-graph-builder-7H2KOD4B.mjs +0 -1332
  508. package/dist/lib/neutral/app-graph-builder-7H2KOD4B.mjs.map +0 -7
  509. package/dist/lib/neutral/capabilities/index.mjs +0 -46
  510. package/dist/lib/neutral/capabilities/index.mjs.map +0 -7
  511. package/dist/lib/neutral/capabilities/node.mjs +0 -15
  512. package/dist/lib/neutral/capabilities/node.mjs.map +0 -7
  513. package/dist/lib/neutral/chunk-52ASDNRA.mjs +0 -41
  514. package/dist/lib/neutral/chunk-52ASDNRA.mjs.map +0 -7
  515. package/dist/lib/neutral/chunk-5ZZS3KMK.mjs.map +0 -7
  516. package/dist/lib/neutral/chunk-C2ULK22J.mjs.map +0 -7
  517. package/dist/lib/neutral/chunk-F5KLUP2P.mjs +0 -115
  518. package/dist/lib/neutral/chunk-F5KLUP2P.mjs.map +0 -7
  519. package/dist/lib/neutral/chunk-G2KHP7FX.mjs +0 -8
  520. package/dist/lib/neutral/chunk-G2KHP7FX.mjs.map +0 -7
  521. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +0 -10
  522. package/dist/lib/neutral/chunk-J5LGTIGS.mjs.map +0 -7
  523. package/dist/lib/neutral/chunk-LMUG6PEJ.mjs +0 -572
  524. package/dist/lib/neutral/chunk-LMUG6PEJ.mjs.map +0 -7
  525. package/dist/lib/neutral/chunk-RAAHDTVF.mjs +0 -167
  526. package/dist/lib/neutral/chunk-RAAHDTVF.mjs.map +0 -7
  527. package/dist/lib/neutral/chunk-SPWAMXNR.mjs +0 -131
  528. package/dist/lib/neutral/chunk-SPWAMXNR.mjs.map +0 -7
  529. package/dist/lib/neutral/chunk-U5WTDOMV.mjs +0 -8
  530. package/dist/lib/neutral/chunk-U5WTDOMV.mjs.map +0 -7
  531. package/dist/lib/neutral/chunk-V7JALUM3.mjs +0 -9
  532. package/dist/lib/neutral/chunk-V7JALUM3.mjs.map +0 -7
  533. package/dist/lib/neutral/close-5WEQZRNK.mjs +0 -17
  534. package/dist/lib/neutral/close-5WEQZRNK.mjs.map +0 -7
  535. package/dist/lib/neutral/components/index.mjs +0 -401
  536. package/dist/lib/neutral/components/index.mjs.map +0 -7
  537. package/dist/lib/neutral/constants.mjs +0 -16
  538. package/dist/lib/neutral/constants.mjs.map +0 -7
  539. package/dist/lib/neutral/containers/index.mjs +0 -55
  540. package/dist/lib/neutral/containers/index.mjs.map +0 -7
  541. package/dist/lib/neutral/create-QZ47FHQU.mjs +0 -75
  542. package/dist/lib/neutral/create-QZ47FHQU.mjs.map +0 -7
  543. package/dist/lib/neutral/create-object-ZU6FZW5X.mjs +0 -96
  544. package/dist/lib/neutral/create-object-ZU6FZW5X.mjs.map +0 -7
  545. package/dist/lib/neutral/delete-SPCU2VFM.mjs +0 -17
  546. package/dist/lib/neutral/delete-SPCU2VFM.mjs.map +0 -7
  547. package/dist/lib/neutral/delete-field-TAKJVEAD.mjs +0 -42
  548. package/dist/lib/neutral/delete-field-TAKJVEAD.mjs.map +0 -7
  549. package/dist/lib/neutral/duplicate-object-BUPZOO6S.mjs +0 -17
  550. package/dist/lib/neutral/duplicate-object-BUPZOO6S.mjs.map +0 -7
  551. package/dist/lib/neutral/export-space-S5SCAL4M.mjs +0 -34
  552. package/dist/lib/neutral/export-space-S5SCAL4M.mjs.map +0 -7
  553. package/dist/lib/neutral/get-share-link-CLM5IQRL.mjs +0 -41
  554. package/dist/lib/neutral/get-share-link-CLM5IQRL.mjs.map +0 -7
  555. package/dist/lib/neutral/hooks/index.mjs +0 -133
  556. package/dist/lib/neutral/hooks/index.mjs.map +0 -7
  557. package/dist/lib/neutral/identity-created-BEYMLBK4.mjs +0 -32
  558. package/dist/lib/neutral/identity-created-BEYMLBK4.mjs.map +0 -7
  559. package/dist/lib/neutral/import-space-LJQK3KT7.mjs +0 -28
  560. package/dist/lib/neutral/import-space-LJQK3KT7.mjs.map +0 -7
  561. package/dist/lib/neutral/index.mjs +0 -62
  562. package/dist/lib/neutral/index.mjs.map +0 -7
  563. package/dist/lib/neutral/join-FSODYIOC.mjs +0 -54
  564. package/dist/lib/neutral/join-FSODYIOC.mjs.map +0 -7
  565. package/dist/lib/neutral/meta.json +0 -1
  566. package/dist/lib/neutral/meta.mjs +0 -8
  567. package/dist/lib/neutral/meta.mjs.map +0 -7
  568. package/dist/lib/neutral/migrate-WHM6LU7L.mjs +0 -52
  569. package/dist/lib/neutral/migrate-WHM6LU7L.mjs.map +0 -7
  570. package/dist/lib/neutral/navigation-handler-ZF7MV2HL.mjs +0 -44
  571. package/dist/lib/neutral/navigation-handler-ZF7MV2HL.mjs.map +0 -7
  572. package/dist/lib/neutral/navigation-resolver-KBESOSWU.mjs +0 -82
  573. package/dist/lib/neutral/navigation-resolver-KBESOSWU.mjs.map +0 -7
  574. package/dist/lib/neutral/open-JCXTL3SK.mjs +0 -17
  575. package/dist/lib/neutral/open-JCXTL3SK.mjs.map +0 -7
  576. package/dist/lib/neutral/open-create-object-WAIAU7TA.mjs +0 -42
  577. package/dist/lib/neutral/open-create-object-WAIAU7TA.mjs.map +0 -7
  578. package/dist/lib/neutral/open-create-space-VU47FWPZ.mjs +0 -24
  579. package/dist/lib/neutral/open-create-space-VU47FWPZ.mjs.map +0 -7
  580. package/dist/lib/neutral/open-import-space-GUHIEWYB.mjs +0 -24
  581. package/dist/lib/neutral/open-import-space-GUHIEWYB.mjs.map +0 -7
  582. package/dist/lib/neutral/open-members-MLLBHKUU.mjs +0 -23
  583. package/dist/lib/neutral/open-members-MLLBHKUU.mjs.map +0 -7
  584. package/dist/lib/neutral/open-settings-DTPZF4U4.mjs +0 -23
  585. package/dist/lib/neutral/open-settings-DTPZF4U4.mjs.map +0 -7
  586. package/dist/lib/neutral/operation-handler-YPIRQOH2.mjs +0 -13
  587. package/dist/lib/neutral/operation-handler-YPIRQOH2.mjs.map +0 -7
  588. package/dist/lib/neutral/operations/index.mjs +0 -13
  589. package/dist/lib/neutral/operations/index.mjs.map +0 -7
  590. package/dist/lib/neutral/plugin.mjs +0 -18
  591. package/dist/lib/neutral/plugin.mjs.map +0 -7
  592. package/dist/lib/neutral/react-root-YLYRCSAZ.mjs +0 -23
  593. package/dist/lib/neutral/react-root-YLYRCSAZ.mjs.map +0 -7
  594. package/dist/lib/neutral/react-surface-LRA7GIFN.mjs +0 -367
  595. package/dist/lib/neutral/react-surface-LRA7GIFN.mjs.map +0 -7
  596. package/dist/lib/neutral/remove-objects-WEO66EDS.mjs +0 -55
  597. package/dist/lib/neutral/remove-objects-WEO66EDS.mjs.map +0 -7
  598. package/dist/lib/neutral/rename-Q6UNCBIM.mjs +0 -26
  599. package/dist/lib/neutral/rename-Q6UNCBIM.mjs.map +0 -7
  600. package/dist/lib/neutral/rename-object-2UCEGU7U.mjs +0 -26
  601. package/dist/lib/neutral/rename-object-2UCEGU7U.mjs.map +0 -7
  602. package/dist/lib/neutral/repair-HMH476U3.mjs +0 -32
  603. package/dist/lib/neutral/repair-HMH476U3.mjs.map +0 -7
  604. package/dist/lib/neutral/restore-field-6CQAFOXY.mjs +0 -40
  605. package/dist/lib/neutral/restore-field-6CQAFOXY.mjs.map +0 -7
  606. package/dist/lib/neutral/restore-objects-3VINLP7C.mjs +0 -39
  607. package/dist/lib/neutral/restore-objects-3VINLP7C.mjs.map +0 -7
  608. package/dist/lib/neutral/settings-5IBSYBVU.mjs +0 -28
  609. package/dist/lib/neutral/settings-5IBSYBVU.mjs.map +0 -7
  610. package/dist/lib/neutral/share-A4WPILNF.mjs +0 -31
  611. package/dist/lib/neutral/share-A4WPILNF.mjs.map +0 -7
  612. package/dist/lib/neutral/snapshot-HBYMAPA7.mjs +0 -30
  613. package/dist/lib/neutral/snapshot-HBYMAPA7.mjs.map +0 -7
  614. package/dist/lib/neutral/spaces-ready-GWMSU72V.mjs +0 -281
  615. package/dist/lib/neutral/spaces-ready-GWMSU72V.mjs.map +0 -7
  616. package/dist/lib/neutral/state-KMH2NUAL.mjs +0 -55
  617. package/dist/lib/neutral/state-KMH2NUAL.mjs.map +0 -7
  618. package/dist/lib/neutral/testing.mjs +0 -8
  619. package/dist/lib/neutral/testing.mjs.map +0 -7
  620. package/dist/lib/neutral/translations.mjs +0 -315
  621. package/dist/lib/neutral/translations.mjs.map +0 -7
  622. package/dist/lib/neutral/types/index.mjs +0 -40
  623. package/dist/lib/neutral/types/index.mjs.map +0 -7
  624. package/dist/lib/neutral/undo-mappings-P43EAUGI.mjs +0 -68
  625. package/dist/lib/neutral/undo-mappings-P43EAUGI.mjs.map +0 -7
  626. package/dist/lib/neutral/wait-for-object-U6P2NNWY.mjs +0 -23
  627. package/dist/lib/neutral/wait-for-object-U6P2NNWY.mjs.map +0 -7
  628. package/dist/types/src/capabilities/navigation-resolver.d.ts +0 -5
  629. package/dist/types/src/capabilities/navigation-resolver.d.ts.map +0 -1
  630. package/dist/types/src/containers/MenuFooter/MenuFooter.d.ts +0 -6
  631. package/dist/types/src/containers/MenuFooter/MenuFooter.d.ts.map +0 -1
  632. package/dist/types/src/containers/MenuFooter/index.d.ts +0 -2
  633. package/dist/types/src/containers/MenuFooter/index.d.ts.map +0 -1
  634. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts +0 -16
  635. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.d.ts.map +0 -1
  636. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts +0 -21
  637. package/dist/types/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.d.ts.map +0 -1
  638. package/dist/types/src/containers/TypeCollectionArticle/index.d.ts +0 -2
  639. package/dist/types/src/containers/TypeCollectionArticle/index.d.ts.map +0 -1
  640. package/src/capabilities/navigation-resolver.ts +0 -94
  641. package/src/capabilities/react-surface.tsx +0 -395
  642. package/src/containers/MenuFooter/MenuFooter.tsx +0 -33
  643. package/src/containers/MenuFooter/index.ts +0 -5
  644. package/src/containers/TypeCollectionArticle/TypeCollectionArticle.stories.tsx +0 -116
  645. package/src/containers/TypeCollectionArticle/TypeCollectionArticle.tsx +0 -162
  646. package/src/containers/TypeCollectionArticle/index.ts +0 -5
@@ -8,7 +8,7 @@ import { type Collection, type Database, Obj } from '@dxos/echo';
8
8
  import { type AnyProperties } from '@dxos/echo/internal';
9
9
  import { type SpaceId } from '@dxos/keys';
10
10
  import { type Space } from '@dxos/react-client/echo';
11
- import { Column, Icon, toLocalizedString, useDefaultValue, useTranslation } from '@dxos/react-ui';
11
+ import { Icon, toLocalizedString, useDefaultValue, useTranslation } from '@dxos/react-ui';
12
12
  import { Form, omitId } from '@dxos/react-ui-form';
13
13
  import { Picker } from '@dxos/react-ui-list';
14
14
  import { SearchList, useSearchListResults } from '@dxos/react-ui-search';
@@ -115,27 +115,23 @@ export const CreateObjectPanel = ({
115
115
  }
116
116
 
117
117
  if (metadata.inputSchema) {
118
- // The host (Dialog.Body) already owns the gutter Column. Use Column.Center to place the form in
119
- // the same center column as the dialog title — NOT a subgrid wrapper or Form.Viewport's own
120
- // Column.Root. Subgrid can't propagate through Form.Root's `display: contents` wrapper (the form
121
- // would fall back to a stray track and inset), and a nested Column.Root would double-gutter it.
122
118
  return (
123
- <Column.Center>
124
- <Form.Root
125
- autoFocus
126
- schema={inputSchema}
127
- defaultValues={initialFormValues}
128
- fieldProvider={inputSurfaceLookup}
129
- db={Obj.isObject(target) ? Obj.getDatabase(target) : target}
130
- onSave={handleCreateObject}
131
- testId='create-object-form'
132
- >
119
+ <Form.Root
120
+ autoFocus
121
+ schema={inputSchema}
122
+ defaultValues={initialFormValues}
123
+ fieldProvider={inputSurfaceLookup}
124
+ db={Obj.isObject(target) ? Obj.getDatabase(target) : target}
125
+ onSave={handleCreateObject}
126
+ testId='create-object-form'
127
+ >
128
+ <Form.Viewport>
133
129
  <Form.Content>
134
130
  <Form.FieldSet />
135
131
  <Form.Submit />
136
132
  </Form.Content>
137
- </Form.Root>
138
- </Column.Center>
133
+ </Form.Viewport>
134
+ </Form.Root>
139
135
  );
140
136
  }
141
137
 
@@ -153,7 +149,9 @@ const SelectType = ({ options, onChange }: SelectTypeProps) => {
153
149
 
154
150
  const { results, handleSearch } = useSearchListResults({
155
151
  items: options,
156
- extract: (option) => option.label,
152
+ // Match the type label as well as the contributing plugin name / description so a plugin
153
+ // name (e.g. "Blogger") surfaces the types it contributes.
154
+ extract: (option) => [option.label, option.plugin, option.description].filter(Boolean).join(' '),
157
155
  });
158
156
 
159
157
  return (
@@ -0,0 +1,49 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import { describe, expect, test } from 'vitest';
6
+
7
+ import { type StatusInput, getStatus } from './status';
8
+
9
+ describe('getStatus', () => {
10
+ test('unsaved work takes precedence', () => {
11
+ expect(getStatus(createInput({ saved: false, offline: true, stalled: true }))).toBe('saving-locally');
12
+ });
13
+
14
+ test('offline with nothing outstanding is persisted', () => {
15
+ expect(getStatus(createInput({ offline: true }))).toBe('offline-persisted');
16
+ });
17
+
18
+ test('offline with outstanding work is disconnected', () => {
19
+ expect(getStatus(createInput({ offline: true, needsToUpload: true }))).toBe('disconnected');
20
+ expect(getStatus(createInput({ offline: true, needsToDownload: true }))).toBe('disconnected');
21
+ });
22
+
23
+ test('stalled outranks the transfer direction', () => {
24
+ expect(getStatus(createInput({ stalled: true, needsToDownload: true }))).toBe('stalled');
25
+ });
26
+
27
+ test('stalled is never reported while offline', () => {
28
+ expect(getStatus(createInput({ offline: true, stalled: true, needsToDownload: true }))).toBe('disconnected');
29
+ });
30
+
31
+ test('transfer direction', () => {
32
+ expect(getStatus(createInput({ needsToDownload: true }))).toBe('downloading');
33
+ expect(getStatus(createInput({ needsToUpload: true }))).toBe('uploading');
34
+ expect(getStatus(createInput({ needsToUpload: true, needsToDownload: true }))).toBe('downloading');
35
+ });
36
+
37
+ test('nothing outstanding while online', () => {
38
+ expect(getStatus(createInput())).toBe('remote-synced');
39
+ });
40
+ });
41
+
42
+ const createInput = (props: Partial<StatusInput> = {}): StatusInput => ({
43
+ offline: false,
44
+ saved: true,
45
+ stalled: false,
46
+ needsToUpload: false,
47
+ needsToDownload: false,
48
+ ...props,
49
+ });
@@ -2,27 +2,36 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- export type Status = 'saving-locally' | 'downloading' | 'uploading' | 'offline-persisted' | 'remote-synced';
5
+ export type Status =
6
+ | 'saving-locally'
7
+ | 'downloading'
8
+ | 'uploading'
9
+ | 'stalled'
10
+ | 'disconnected'
11
+ | 'offline-persisted'
12
+ | 'remote-synced';
6
13
 
7
- export const getStatus = ({
8
- offline,
9
- saved,
10
- needsToUpload,
11
- needsToDownload,
12
- }: {
14
+ export type StatusInput = {
13
15
  offline: boolean;
14
16
  saved: boolean;
17
+ /** Replication is outstanding but making no progress. */
18
+ stalled: boolean;
15
19
  needsToUpload: boolean;
16
20
  needsToDownload: boolean;
17
- }): Status => {
21
+ };
22
+
23
+ export const getStatus = ({ offline, saved, stalled, needsToUpload, needsToDownload }: StatusInput): Status => {
18
24
  if (!saved) {
19
25
  return 'saving-locally';
20
- } else if (!offline && needsToDownload) {
26
+ } else if (offline) {
27
+ // Offline with nothing outstanding is durable; offline with pending work is not.
28
+ return needsToUpload || needsToDownload ? 'disconnected' : 'offline-persisted';
29
+ } else if (stalled) {
30
+ return 'stalled';
31
+ } else if (needsToDownload) {
21
32
  return 'downloading';
22
- } else if (!offline && needsToUpload) {
33
+ } else if (needsToUpload) {
23
34
  return 'uploading';
24
- } else if (offline && !needsToUpload && !needsToDownload) {
25
- return 'offline-persisted';
26
35
  } else {
27
36
  return 'remote-synced';
28
37
  }
@@ -36,6 +45,10 @@ export const getIcon = (status: Status) => {
36
45
  return 'ph--cloud-arrow-down--regular';
37
46
  case 'uploading':
38
47
  return 'ph--cloud-arrow-up--regular';
48
+ case 'stalled':
49
+ return 'ph--cloud-warning--regular';
50
+ case 'disconnected':
51
+ return 'ph--cloud-slash--regular';
39
52
  case 'offline-persisted':
40
53
  return 'ph--check-circle--regular';
41
54
  case 'remote-synced':
@@ -5,7 +5,7 @@
5
5
  import React, { useCallback, useMemo } from 'react';
6
6
 
7
7
  import { useOperationInvoker } from '@dxos/app-framework/ui';
8
- import { LayoutOperation, Paths } from '@dxos/app-toolkit';
8
+ import { GraphPath, LayoutOperation } from '@dxos/app-toolkit';
9
9
  import { type AppSurface } from '@dxos/app-toolkit/ui';
10
10
  import { type Collection, Obj } from '@dxos/echo';
11
11
  import { ScrollArea, toLocalizedString, useTranslation } from '@dxos/react-ui';
@@ -92,8 +92,8 @@ const useCollectionItems = (collection: Collection.Collection, attendableId?: st
92
92
  objects.map((obj) => {
93
93
  const iconAnnotation = Obj.getIcon(obj);
94
94
  const targetPath = attendableId
95
- ? Paths.getCollectionObjectPath(attendableId, obj.id)
96
- : Paths.getObjectPathFromObject(obj);
95
+ ? GraphPath.getCollectionObjectPath(attendableId, obj.id)
96
+ : GraphPath.getObjectPathFromObject(obj);
97
97
 
98
98
  return {
99
99
  id: Obj.getURI(obj),
@@ -113,3 +113,5 @@ const useCollectionItems = (collection: Collection.Collection, attendableId?: st
113
113
 
114
114
  return { items: results, handleSearch };
115
115
  };
116
+
117
+ CollectionArticle.displayName = 'CollectionArticle';
@@ -22,3 +22,5 @@ export const CollectionSection = ({ role, subject }: CollectionSectionProps) =>
22
22
  </div>
23
23
  );
24
24
  };
25
+
26
+ CollectionSection.displayName = 'CollectionSection';
@@ -6,6 +6,7 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
  import * as Effect from 'effect/Effect';
7
7
  import * as Schema from 'effect/Schema';
8
8
  import React, { useState } from 'react';
9
+ import { expect, userEvent, within } from 'storybook/test';
9
10
 
10
11
  import { withPluginManager } from '@dxos/app-framework/testing';
11
12
  import { type Database } from '@dxos/echo';
@@ -17,10 +18,10 @@ import { type CreateObjectOption, CreateObjectPanel, type Metadata } from '#comp
17
18
  import { translations } from '#translations';
18
19
 
19
20
  const mockOptions: CreateObjectOption[] = [
20
- { id: 'org.dxos.type.document', label: 'Document', icon: 'ph--file-text--regular' },
21
- { id: 'org.dxos.type.table', label: 'Table', icon: 'ph--table--regular' },
22
- { id: 'org.dxos.type.canvas', label: 'Canvas', icon: 'ph--paint-brush--regular' },
23
- { id: 'org.dxos.type.thread', label: 'Thread', icon: 'ph--chat-circle-text--regular' },
21
+ { id: 'org.dxos.type.document', label: 'Document', plugin: 'Markdown', icon: 'ph--file-text--regular' },
22
+ { id: 'org.dxos.type.table', label: 'Table', plugin: 'Kanban', icon: 'ph--table--regular' },
23
+ { id: 'org.dxos.type.canvas', label: 'Canvas', plugin: 'Sketch', icon: 'ph--paint-brush--regular' },
24
+ { id: 'org.dxos.type.thread', label: 'Thread', plugin: 'Threads', icon: 'ph--chat-circle-text--regular' },
24
25
  ];
25
26
 
26
27
  const mockSpaces = [
@@ -79,3 +80,16 @@ type Story = StoryObj<typeof meta>;
79
80
  export const Default: Story = {
80
81
  render: DefaultStory,
81
82
  };
83
+
84
+ // Verifies the type filter matches the contributing plugin name, not just the type label:
85
+ // typing "Kanban" surfaces "Table" (contributed by the Kanban plugin) even though the label
86
+ // "Table" contains no match for the query — impossible before plugin/description were searchable.
87
+ export const FilterByPlugin: Story = {
88
+ render: DefaultStory,
89
+ play: async ({ canvasElement }) => {
90
+ const canvas = within(canvasElement);
91
+ const input = await canvas.findByTestId('create-object-form.schema-input', undefined, { timeout: 10_000 });
92
+ await userEvent.type(input, 'Kanban');
93
+ void expect(await canvas.findByText('Table', undefined, { timeout: 10_000 })).toBeVisible();
94
+ },
95
+ };
@@ -10,13 +10,14 @@ import React, { useCallback, useMemo, useRef, useState } from 'react';
10
10
  import { Capability } from '@dxos/app-framework';
11
11
  import { useOperationInvoker, usePluginManager } from '@dxos/app-framework/ui';
12
12
  import { AppSpace, LayoutOperation, TypeOptions } from '@dxos/app-toolkit';
13
- import { PluginRegistryButton, useLayout } from '@dxos/app-toolkit/ui';
13
+ import { PluginRegistryButton } from '@dxos/app-toolkit/ui';
14
14
  import { Operation } from '@dxos/compute';
15
15
  import { Annotation, Collection, Database, Obj, Type } from '@dxos/echo';
16
+ import { useQuery } from '@dxos/echo-react';
16
17
  import { EffectEx } from '@dxos/effect';
17
18
  import { invariant } from '@dxos/invariant';
18
19
  import { useClient } from '@dxos/react-client';
19
- import { useQuery, useSpaces } from '@dxos/react-client/echo';
20
+ import { useSpaces } from '@dxos/react-client/echo';
20
21
  import { Dialog, toLocalizedString, useTranslation } from '@dxos/react-ui';
21
22
  import { CollectionItemAnnotation, ViewAnnotation } from '@dxos/schema';
22
23
 
@@ -53,7 +54,6 @@ export const CreateObjectDialog = ({
53
54
  const [typename, setTypename] = useState<string | undefined>(initialTypename);
54
55
  const client = useClient();
55
56
  const spaces = useSpaces();
56
- const layout = useLayout();
57
57
  const closeRef = useRef<HTMLButtonElement | null>(null);
58
58
 
59
59
  const db = Database.isDatabase(target) ? target : target && Obj.getDatabase(target);
@@ -200,19 +200,13 @@ export const CreateObjectDialog = ({
200
200
  const result = yield* metadata.createObject(data, { db, target, targetNodeId });
201
201
  const shouldNavigate = _shouldNavigate ?? (() => true);
202
202
  if (result.subject.length > 0 && shouldNavigate(result.object)) {
203
- if (layout.mode === 'multi') {
204
- yield* invoke(LayoutOperation.Set, {
205
- subject: [...result.subject],
206
- });
207
- yield* invoke(LayoutOperation.Expose, {
208
- subject: result.subject[0],
209
- });
210
- } else {
211
- yield* invoke(LayoutOperation.Open, {
212
- subject: [...result.subject],
213
- navigation: 'immediate',
214
- });
215
- }
203
+ yield* invoke(LayoutOperation.Open, {
204
+ subject: [...result.subject],
205
+ navigation: 'immediate',
206
+ });
207
+ yield* invoke(LayoutOperation.Expose, {
208
+ subject: result.subject[0],
209
+ });
216
210
  }
217
211
 
218
212
  onCreateObject?.(result.object);
@@ -221,7 +215,7 @@ export const CreateObjectDialog = ({
221
215
  Effect.provideService(Operation.Service, operationInvoker),
222
216
  EffectEx.runAndForwardErrors,
223
217
  ),
224
- [target, _shouldNavigate, onCreateObject, manager.capabilities, invoke, layout.mode],
218
+ [target, _shouldNavigate, onCreateObject, manager.capabilities, invoke],
225
219
  );
226
220
 
227
221
  return (
@@ -260,3 +254,5 @@ export const CreateObjectDialog = ({
260
254
  </Dialog.Content>
261
255
  );
262
256
  };
257
+
258
+ CreateObjectDialog.displayName = 'CreateObjectDialog';
@@ -4,11 +4,12 @@
4
4
 
5
5
  import * as Effect from 'effect/Effect';
6
6
  import type * as Schema from 'effect/Schema';
7
- import React, { useCallback, useRef } from 'react';
7
+ import React, { useCallback, useRef, useState } from 'react';
8
8
 
9
9
  import { useOperationInvoker } from '@dxos/app-framework/ui';
10
- import { LayoutOperation, Paths } from '@dxos/app-toolkit';
10
+ import { GraphPath, LayoutOperation } from '@dxos/app-toolkit';
11
11
  import { EffectEx } from '@dxos/effect';
12
+ import { log } from '@dxos/log';
12
13
  import { Column, Dialog, useTranslation } from '@dxos/react-ui';
13
14
  import { Form } from '@dxos/react-ui-form';
14
15
 
@@ -25,28 +26,33 @@ const initialValues: FormValues = { edgeReplication: true };
25
26
  export const CreateSpaceDialog = () => {
26
27
  const closeRef = useRef<HTMLButtonElement | null>(null);
27
28
  const { t } = useTranslation(meta.profile.key);
28
- const { invokePromise } = useOperationInvoker();
29
+ const { invoke } = useOperationInvoker();
29
30
 
30
31
  const inputSurfaceLookup = useInputSurfaceLookup();
32
+ const [error, setError] = useState<string | undefined>(undefined);
31
33
 
32
34
  const handleCreateSpace = useCallback(
33
- async (data: FormValues) => {
34
- const program = Effect.gen(function* () {
35
- const { data: result } = yield* Effect.promise(() => invokePromise(SpaceOperation.Create, data));
36
- if (result?.space) {
37
- yield* Effect.promise(() =>
38
- invokePromise(LayoutOperation.Open, {
39
- subject: [Paths.getSpaceHomePath(result.space.id)],
40
- workspace: Paths.getSpacePath(result.space.id),
41
- navigation: 'immediate',
42
- }),
43
- );
44
- yield* Effect.promise(() => invokePromise(LayoutOperation.UpdateDialog, { state: false }));
45
- }
46
- });
47
- await EffectEx.runAndForwardErrors(program);
35
+ (data: FormValues) => {
36
+ setError(undefined);
37
+ return Effect.gen(function* () {
38
+ const { space } = yield* invoke(SpaceOperation.Create, data);
39
+ yield* invoke(LayoutOperation.Open, {
40
+ subject: [GraphPath.getSpaceHomePath(space.id)],
41
+ workspace: GraphPath.getSpacePath(space.id),
42
+ navigation: 'immediate',
43
+ });
44
+ yield* invoke(LayoutOperation.UpdateDialog, { state: false });
45
+ }).pipe(
46
+ Effect.catchAll((failure) =>
47
+ Effect.sync(() => {
48
+ log.catch(failure);
49
+ setError(t('create-space-dialog.error.message'));
50
+ }),
51
+ ),
52
+ EffectEx.runAndForwardErrors,
53
+ );
48
54
  },
49
- [invokePromise],
55
+ [invoke, t],
50
56
  );
51
57
 
52
58
  return (
@@ -71,6 +77,7 @@ export const CreateSpaceDialog = () => {
71
77
  <Column.Center>
72
78
  <Form.Content>
73
79
  <Form.FieldSet />
80
+ <Form.Error>{error}</Form.Error>
74
81
  <Form.Submit />
75
82
  </Form.Content>
76
83
  </Column.Center>
@@ -79,3 +86,5 @@ export const CreateSpaceDialog = () => {
79
86
  </Dialog.Content>
80
87
  );
81
88
  };
89
+
90
+ CreateSpaceDialog.displayName = 'CreateSpaceDialog';
@@ -55,9 +55,9 @@ export const DefaultProperties = forwardRef<HTMLDivElement, DefaultPropertiesPro
55
55
  return (
56
56
  <Panel.Root role={role} ref={forwardedRef}>
57
57
  <Panel.Toolbar>
58
- <Toolbar.Root className='dx-document' />
58
+ <Toolbar.Root classNames='dx-document' />
59
59
  </Panel.Toolbar>
60
- <Panel.Content>
60
+ <Panel.Content asChild>
61
61
  <ObjectProperties object={object} resolveCreateEntry={resolveCreateEntry}>
62
62
  {/* TODO(burdon): Ambiguous naming since providers only replace parts; can't update Toolbar, etc. Consider DefaultSettings pattern. */}
63
63
  <Surface.Surface type={AppSurface.ObjectProperties} data={data} />
@@ -67,3 +67,5 @@ export const DefaultProperties = forwardRef<HTMLDivElement, DefaultPropertiesPro
67
67
  );
68
68
  },
69
69
  );
70
+
71
+ DefaultProperties.displayName = 'DefaultProperties';
@@ -6,7 +6,7 @@ import React, { useCallback } from 'react';
6
6
  import { FileUploader } from 'react-drag-drop-files';
7
7
 
8
8
  import { useOperationInvoker } from '@dxos/app-framework/ui';
9
- import { LayoutOperation, Paths } from '@dxos/app-toolkit';
9
+ import { GraphPath, LayoutOperation } from '@dxos/app-toolkit';
10
10
  import { Button, Dialog, Icon, useTranslation } from '@dxos/react-ui';
11
11
 
12
12
  import { meta } from '#meta';
@@ -24,7 +24,7 @@ export const ImportSpaceDialog = () => {
24
24
  });
25
25
  await invokePromise(LayoutOperation.UpdateDialog, { state: false });
26
26
  if (result?.space) {
27
- await invokePromise(LayoutOperation.SwitchWorkspace, { subject: Paths.getSpacePath(result.space.id) });
27
+ await invokePromise(LayoutOperation.SwitchWorkspace, { subject: GraphPath.getSpacePath(result.space.id) });
28
28
  }
29
29
  },
30
30
  [invokePromise],
@@ -60,3 +60,5 @@ export const ImportSpaceDialog = () => {
60
60
  </Dialog.Content>
61
61
  );
62
62
  };
63
+
64
+ ImportSpaceDialog.displayName = 'ImportSpaceDialog';
@@ -2,37 +2,25 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import React, { useEffect, useState } from 'react';
5
+ import React from 'react';
6
6
 
7
- import { Paths } from '@dxos/app-toolkit';
7
+ import { GraphPath } from '@dxos/app-toolkit';
8
8
  import { EdgeStatus } from '@dxos/protocols/proto/dxos/client/services';
9
9
  import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata';
10
- import { useClient } from '@dxos/react-client';
11
10
  import { type Space, useSpaceSyncState } from '@dxos/react-client/echo';
12
11
  import { Tooltip, useTranslation } from '@dxos/react-ui';
13
12
  import { AttentionGlyph, useAttention } from '@dxos/react-ui-attention';
14
13
 
14
+ import { useEdgeStatus } from '#hooks';
15
15
  import { meta } from '#meta';
16
16
 
17
- const useEdgeStatus = (): EdgeStatus.ConnectionState => {
18
- const [status, setStatus] = useState(EdgeStatus.ConnectionState.NOT_CONNECTED);
19
- const client = useClient();
20
- useEffect(() => {
21
- client.services.services.EdgeAgentService?.queryEdgeStatus().subscribe(({ status }) => {
22
- setStatus(status.state);
23
- });
24
- }, [client]);
25
-
26
- return status;
27
- };
28
-
29
17
  export const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean }) => {
30
18
  const { t } = useTranslation(meta.profile.key);
31
- const qualifiedId = Paths.getSpacePath(space.id);
19
+ const qualifiedId = GraphPath.getSpacePath(space.id);
32
20
  const { hasAttention, isAncestor, isRelated } = useAttention(qualifiedId);
33
21
  const attended = hasAttention || isRelated;
34
22
  const containsAttended = isAncestor && !open;
35
- const connectedToEdge = useEdgeStatus() === EdgeStatus.ConnectionState.CONNECTED;
23
+ const connectedToEdge = useEdgeStatus().state === EdgeStatus.ConnectionState.CONNECTED;
36
24
  // TODO(wittjosiah): This is not reactive.
37
25
  const edgeSyncEnabled = space.internal.data.edgeReplication === EdgeReplicationSetting.ENABLED;
38
26
  const syncState = useSpaceSyncState(space);
@@ -49,3 +37,5 @@ export const InlineSyncStatus = ({ space, open }: { space: Space; open?: boolean
49
37
  </Tooltip.Trigger>
50
38
  );
51
39
  };
40
+
41
+ InlineSyncStatus.displayName = 'InlineSyncStatus';
@@ -5,7 +5,7 @@
5
5
  import React, { useCallback } from 'react';
6
6
 
7
7
  import { useOperationInvoker } from '@dxos/app-framework/ui';
8
- import { LayoutOperation, Paths } from '@dxos/app-toolkit';
8
+ import { GraphPath, LayoutOperation } from '@dxos/app-toolkit';
9
9
  import { Trigger } from '@dxos/async';
10
10
  import { ObservabilityOperation } from '@dxos/plugin-observability';
11
11
  import { useClient } from '@dxos/react-client';
@@ -61,8 +61,8 @@ export const JoinDialog = ({ navigableCollections, onDone, ...props }: JoinDialo
61
61
  // TODO(wittjosiah): `result.target` is ignored so acceptance navigates to the space home
62
62
  // immediately; revisit how to incorporate the target once immediate navigation is settled.
63
63
  await invokePromise(LayoutOperation.Open, {
64
- subject: [Paths.getSpaceHomePath(space.id)],
65
- workspace: Paths.getSpacePath(space.id),
64
+ subject: [GraphPath.getSpaceHomePath(space.id)],
65
+ workspace: GraphPath.getSpacePath(space.id),
66
66
  navigation: 'immediate',
67
67
  });
68
68
 
@@ -95,3 +95,5 @@ export const JoinDialog = ({ navigableCollections, onDone, ...props }: JoinDialo
95
95
  </Dialog.Content>
96
96
  );
97
97
  };
98
+
99
+ JoinDialog.displayName = 'JoinDialog';
@@ -267,3 +267,5 @@ const InvitationComplete = ({ statusValue }: { statusValue: number }) => {
267
267
  <Icon icon='ph--x--regular' size={6} classNames='m-1.5' />
268
268
  );
269
269
  };
270
+
271
+ MembersContainer.displayName = 'MembersContainer';
@@ -0,0 +1,90 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ import React, { forwardRef, useCallback, useState } from 'react';
6
+
7
+ import { useAtomCapabilityState, useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { type Type } from '@dxos/echo';
9
+ import { type SpaceId } from '@dxos/keys';
10
+ import { log } from '@dxos/log';
11
+ import { Card, Panel, ScrollArea, Toolbar, useTranslation } from '@dxos/react-ui';
12
+ import { ObjectForm } from '@dxos/react-ui-form';
13
+
14
+ import { meta } from '#meta';
15
+
16
+ import { SpaceOperation } from '../../operations';
17
+ import { SpaceCapabilities } from '../../types';
18
+
19
+ export type MergePreviewProps = {
20
+ type: Type.AnyEntity;
21
+ spaceId: SpaceId;
22
+ preview: SpaceCapabilities.MergePreview;
23
+ };
24
+
25
+ /**
26
+ * Confirmation panel for a proposed merge: a form over the *detached* merged object. Nothing is
27
+ * written until Confirm, which invokes `MergeDuplicates` with the edited preview as overrides —
28
+ * so the user's corrections survive the merge rather than being recomputed away.
29
+ */
30
+ export const MergePreview = forwardRef<HTMLDivElement, MergePreviewProps>(
31
+ ({ type, spaceId, preview }, forwardedRef) => {
32
+ const { t } = useTranslation(meta.profile.key);
33
+ const { invokePromise } = useOperationInvoker();
34
+ const [, updateEphemeral] = useAtomCapabilityState(SpaceCapabilities.EphemeralState);
35
+
36
+ const clear = useCallback(
37
+ () => updateEphemeral((state) => ({ ...state, mergePreview: undefined })),
38
+ [updateEphemeral],
39
+ );
40
+
41
+ // The merge removes objects, so a second click would re-run it against ids the first call has
42
+ // already deleted. Confirm is disabled for the duration.
43
+ const [merging, setMerging] = useState(false);
44
+ const handleConfirm = useCallback(() => {
45
+ setMerging(true);
46
+ void invokePromise(
47
+ SpaceOperation.MergeDuplicates,
48
+ { typename: preview.typename, objectIds: preview.objectIds, overrides: preview.preview },
49
+ { spaceId },
50
+ )
51
+ .then(({ error }) => {
52
+ if (error) {
53
+ // Leave the preview up: the merge did not happen, and clearing it would look like it did.
54
+ log.warn('merge failed', { error });
55
+ return;
56
+ }
57
+ // Bumping the timestamp is what tells the open review to rescan; without it the group the
58
+ // user just merged stays on screen as a one-member "duplicate".
59
+ updateEphemeral((state) => ({ ...state, mergePreview: undefined, lastMergeAt: Date.now() }));
60
+ })
61
+ .finally(() => setMerging(false));
62
+ }, [invokePromise, preview, spaceId, updateEphemeral]);
63
+
64
+ return (
65
+ <Panel.Root ref={forwardedRef}>
66
+ <Panel.Toolbar asChild>
67
+ <Toolbar.Root>
68
+ <Toolbar.Button variant='primary' disabled={merging} onClick={handleConfirm}>
69
+ {t('confirm-merge.label')}
70
+ </Toolbar.Button>
71
+ <Toolbar.Button variant='ghost' disabled={merging} onClick={clear}>
72
+ {t('cancel-merge.label')}
73
+ </Toolbar.Button>
74
+ </Toolbar.Root>
75
+ </Panel.Toolbar>
76
+ <Panel.Content asChild>
77
+ <ScrollArea.Root orientation='vertical' centered>
78
+ <ScrollArea.Viewport>
79
+ <Card.Root fullWidth classNames='pb-form-gap'>
80
+ <ObjectForm object={preview.preview} type={type} />
81
+ </Card.Root>
82
+ </ScrollArea.Viewport>
83
+ </ScrollArea.Root>
84
+ </Panel.Content>
85
+ </Panel.Root>
86
+ );
87
+ },
88
+ );
89
+
90
+ MergePreview.displayName = 'MergePreview';
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2026 DXOS.org
3
+ //
4
+
5
+ export { MergePreview as default } from './MergePreview';