@dxos/plugin-space 0.8.4-main.a4bbb77 → 0.8.4-main.ae835ea

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 (224) hide show
  1. package/dist/lib/browser/{CollectionMain-AX7KKXWP.mjs → CollectionMain-HTKSZCRR.mjs} +2 -2
  2. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs +145 -0
  3. package/dist/lib/browser/ObjectDetailsPanel-5B45G744.mjs.map +7 -0
  4. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs +146 -0
  5. package/dist/lib/browser/ObjectSettings-UFTKBP7B.mjs.map +7 -0
  6. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs +99 -0
  7. package/dist/lib/browser/RecordMain-BCSXTSEB.mjs.map +7 -0
  8. package/dist/lib/browser/{app-graph-builder-W7RVDAUA.mjs → app-graph-builder-QJFO4ANM.mjs} +37 -34
  9. package/dist/lib/browser/app-graph-builder-QJFO4ANM.mjs.map +7 -0
  10. package/dist/lib/browser/{app-graph-serializer-VLHVTDX4.mjs → app-graph-serializer-3R5NVV7U.mjs} +5 -5
  11. package/dist/lib/browser/{chunk-E2I747A7.mjs → chunk-2NS3VPSY.mjs} +2 -2
  12. package/dist/lib/browser/chunk-2NS3VPSY.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-ZIZ2JLW6.mjs → chunk-4V4JNJ33.mjs} +12 -4
  14. package/dist/lib/browser/chunk-4V4JNJ33.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-2BFVC5K6.mjs → chunk-ENBBJSNE.mjs} +230 -254
  16. package/dist/lib/browser/chunk-ENBBJSNE.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-HS2VD6DN.mjs +166 -0
  18. package/dist/lib/browser/chunk-HS2VD6DN.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-PN27K4I7.mjs → chunk-OWNBEI5J.mjs} +23 -14
  20. package/dist/lib/browser/chunk-OWNBEI5J.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-JCHSUOPF.mjs → chunk-SLDQWMQ2.mjs} +12 -7
  22. package/dist/lib/browser/chunk-SLDQWMQ2.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-VZBIIYFM.mjs +16 -0
  24. package/dist/lib/browser/chunk-VZBIIYFM.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-EIXZABXD.mjs → chunk-WJXU4GKV.mjs} +2 -2
  26. package/dist/lib/browser/index.mjs +31 -31
  27. package/dist/lib/browser/index.mjs.map +3 -3
  28. package/dist/lib/browser/{intent-resolver-HA7DPAUE.mjs → intent-resolver-MBVOLXFQ.mjs} +30 -23
  29. package/dist/lib/browser/intent-resolver-MBVOLXFQ.mjs.map +7 -0
  30. package/dist/lib/browser/meta.json +1 -1
  31. package/dist/lib/browser/{react-root-YQUJU64P.mjs → react-root-NKEKCEYM.mjs} +7 -7
  32. package/dist/lib/browser/{react-surface-HTXYMRSW.mjs → react-surface-PYSN2MBY.mjs} +15 -46
  33. package/dist/lib/browser/react-surface-PYSN2MBY.mjs.map +7 -0
  34. package/dist/lib/browser/{schema-defs-R56ZDBZ7.mjs → schema-defs-DWYK7TYW.mjs} +3 -3
  35. package/dist/lib/browser/{settings-5XPQMSPO.mjs → settings-ZUCC3ZLB.mjs} +3 -3
  36. package/dist/lib/browser/{spaces-ready-YY77ANIF.mjs → spaces-ready-HTWWJHLR.mjs} +6 -6
  37. package/dist/lib/browser/spaces-ready-HTWWJHLR.mjs.map +7 -0
  38. package/dist/lib/browser/{state-Y4RVCG4A.mjs → state-ISVAKMO7.mjs} +3 -3
  39. package/dist/lib/browser/types/index.mjs +2 -2
  40. package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs → CollectionMain-OUHGG6OC.mjs} +2 -2
  41. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs +146 -0
  42. package/dist/lib/node-esm/ObjectDetailsPanel-4SDHQVQU.mjs.map +7 -0
  43. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs +147 -0
  44. package/dist/lib/node-esm/ObjectSettings-EU6F43RP.mjs.map +7 -0
  45. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs +100 -0
  46. package/dist/lib/node-esm/RecordMain-SD76DGOR.mjs.map +7 -0
  47. package/dist/lib/node-esm/{app-graph-builder-5ZJJUMQI.mjs → app-graph-builder-B23W62HY.mjs} +37 -34
  48. package/dist/lib/node-esm/app-graph-builder-B23W62HY.mjs.map +7 -0
  49. package/dist/lib/node-esm/{app-graph-serializer-EZJSGJUT.mjs → app-graph-serializer-3Z3EXEEF.mjs} +5 -5
  50. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs +18 -0
  51. package/dist/lib/node-esm/chunk-BDEFTL6K.mjs.map +7 -0
  52. package/dist/lib/node-esm/{chunk-5XRYHWL7.mjs → chunk-G4PDWB7G.mjs} +12 -4
  53. package/dist/lib/node-esm/chunk-G4PDWB7G.mjs.map +7 -0
  54. package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs → chunk-H4JILUJK.mjs} +2 -2
  55. package/dist/lib/node-esm/{chunk-BLPXWPLB.mjs → chunk-KKPCCA5O.mjs} +230 -254
  56. package/dist/lib/node-esm/chunk-KKPCCA5O.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs +167 -0
  58. package/dist/lib/node-esm/chunk-PM4ZIGKC.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-XDQXUZMK.mjs → chunk-XEVIWD3O.mjs} +23 -14
  60. package/dist/lib/node-esm/chunk-XEVIWD3O.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-6WNZW6KT.mjs → chunk-YFQXFQGT.mjs} +12 -7
  62. package/dist/lib/node-esm/chunk-YFQXFQGT.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-IJVBBVCL.mjs → chunk-ZLMFLI7G.mjs} +2 -2
  64. package/dist/lib/node-esm/chunk-ZLMFLI7G.mjs.map +7 -0
  65. package/dist/lib/node-esm/index.mjs +31 -31
  66. package/dist/lib/node-esm/index.mjs.map +3 -3
  67. package/dist/lib/node-esm/{intent-resolver-LQNHMPIX.mjs → intent-resolver-IWI47NTW.mjs} +30 -23
  68. package/dist/lib/node-esm/intent-resolver-IWI47NTW.mjs.map +7 -0
  69. package/dist/lib/node-esm/meta.json +1 -1
  70. package/dist/lib/node-esm/{react-root-UTLJEIKE.mjs → react-root-LX7SIG6M.mjs} +7 -7
  71. package/dist/lib/node-esm/{react-surface-LYDYON3U.mjs → react-surface-6SVGOZNJ.mjs} +15 -46
  72. package/dist/lib/node-esm/react-surface-6SVGOZNJ.mjs.map +7 -0
  73. package/dist/lib/node-esm/{schema-defs-7IMJPIWS.mjs → schema-defs-EOG2UPJU.mjs} +3 -3
  74. package/dist/lib/node-esm/{settings-XBSK5KHH.mjs → settings-ZDJNLFGW.mjs} +3 -3
  75. package/dist/lib/node-esm/{spaces-ready-YX4IHT4P.mjs → spaces-ready-VUGYPF4L.mjs} +6 -6
  76. package/dist/lib/node-esm/spaces-ready-VUGYPF4L.mjs.map +7 -0
  77. package/dist/lib/node-esm/{state-HOHAVPUO.mjs → state-QZ4Q6ZRL.mjs} +3 -3
  78. package/dist/lib/node-esm/types/index.mjs +2 -2
  79. package/dist/types/src/SpacePlugin.d.ts.map +1 -1
  80. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/capabilities.d.ts +2 -1
  82. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  84. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  85. package/dist/types/src/components/CreateDialog/CreateObjectDialog.d.ts.map +1 -1
  86. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts +80 -0
  87. package/dist/types/src/components/CreateDialog/CreateObjectDialog.stories.d.ts.map +1 -1
  88. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts +1 -1
  89. package/dist/types/src/components/CreateDialog/CreateObjectPanel.d.ts.map +1 -1
  90. package/dist/types/src/components/CreateDialog/CreateSpaceDialog.d.ts.map +1 -1
  91. package/dist/types/src/components/MembersContainer.stories.d.ts +80 -0
  92. package/dist/types/src/components/MembersContainer.stories.d.ts.map +1 -1
  93. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts +9 -0
  94. package/dist/types/src/components/ObjectDetailsPanel/ObjectDetailsPanel.d.ts.map +1 -0
  95. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts +10 -0
  96. package/dist/types/src/components/ObjectDetailsPanel/ObjectForm.d.ts.map +1 -0
  97. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts +3 -0
  98. package/dist/types/src/components/ObjectDetailsPanel/index.d.ts.map +1 -0
  99. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts +2 -2
  100. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.d.ts.map +1 -1
  101. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts +1500 -0
  102. package/dist/types/src/components/ObjectSettings/BaseObjectSettings.stories.d.ts.map +1 -0
  103. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts +1 -1
  104. package/dist/types/src/components/ObjectSettings/ForeignKeys.d.ts.map +1 -1
  105. package/dist/types/src/components/ObjectSettings/index.d.ts +2 -1
  106. package/dist/types/src/components/ObjectSettings/index.d.ts.map +1 -1
  107. package/dist/types/src/components/RecordMain.d.ts +4 -3
  108. package/dist/types/src/components/RecordMain.d.ts.map +1 -1
  109. package/dist/types/src/components/RecordMain.stories.d.ts +1667 -0
  110. package/dist/types/src/components/RecordMain.stories.d.ts.map +1 -0
  111. package/dist/types/src/components/SpacePresence.stories.d.ts +80 -0
  112. package/dist/types/src/components/SpacePresence.stories.d.ts.map +1 -1
  113. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.d.ts.map +1 -1
  114. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts +80 -0
  115. package/dist/types/src/components/SpaceSettings/SpaceSettingsContainer.stories.d.ts.map +1 -1
  116. package/dist/types/src/components/SyncStatus/SyncStatus.d.ts.map +1 -1
  117. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts +81 -1
  118. package/dist/types/src/components/SyncStatus/SyncStatus.stories.d.ts.map +1 -1
  119. package/dist/types/src/components/ViewEditor.d.ts.map +1 -1
  120. package/dist/types/src/components/index.d.ts +4 -6
  121. package/dist/types/src/components/index.d.ts.map +1 -1
  122. package/dist/types/src/hooks/index.d.ts +1 -0
  123. package/dist/types/src/hooks/index.d.ts.map +1 -1
  124. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts +1 -1
  125. package/dist/types/src/hooks/useInputSurfaceLookup.d.ts.map +1 -1
  126. package/dist/types/src/hooks/usePath.d.ts +1 -1
  127. package/dist/types/src/hooks/usePath.d.ts.map +1 -1
  128. package/dist/types/src/hooks/useTypeOptions.d.ts +10 -0
  129. package/dist/types/src/hooks/useTypeOptions.d.ts.map +1 -0
  130. package/dist/types/src/meta.d.ts.map +1 -1
  131. package/dist/types/src/translations.d.ts +80 -0
  132. package/dist/types/src/translations.d.ts.map +1 -1
  133. package/dist/types/src/types/types.d.ts +6 -4
  134. package/dist/types/src/types/types.d.ts.map +1 -1
  135. package/dist/types/src/util.d.ts +4 -1
  136. package/dist/types/src/util.d.ts.map +1 -1
  137. package/dist/types/tsconfig.tsbuildinfo +1 -1
  138. package/package.json +50 -48
  139. package/src/SpacePlugin.ts +7 -13
  140. package/src/capabilities/app-graph-builder.ts +29 -24
  141. package/src/capabilities/capabilities.ts +7 -2
  142. package/src/capabilities/intent-resolver.ts +13 -8
  143. package/src/capabilities/react-surface.tsx +6 -77
  144. package/src/capabilities/spaces-ready.ts +1 -1
  145. package/src/components/CreateDialog/CreateObjectDialog.tsx +5 -4
  146. package/src/components/CreateDialog/CreateObjectPanel.tsx +2 -2
  147. package/src/components/CreateDialog/CreateSpaceDialog.tsx +2 -1
  148. package/src/components/MembersContainer.tsx +1 -1
  149. package/src/components/{ObjectDetailsPanel.tsx → ObjectDetailsPanel/ObjectDetailsPanel.tsx} +8 -35
  150. package/src/components/ObjectDetailsPanel/ObjectForm.tsx +75 -0
  151. package/src/components/ObjectDetailsPanel/index.ts +7 -0
  152. package/src/components/ObjectSettings/AdvancedObjectSettings.tsx +1 -1
  153. package/src/components/ObjectSettings/BaseObjectSettings.stories.tsx +63 -0
  154. package/src/components/ObjectSettings/BaseObjectSettings.tsx +86 -26
  155. package/src/components/ObjectSettings/ForeignKeys.tsx +1 -1
  156. package/src/components/ObjectSettings/index.ts +3 -1
  157. package/src/components/RecordMain.stories.tsx +116 -0
  158. package/src/components/RecordMain.tsx +69 -29
  159. package/src/components/SchemaContainer.tsx +1 -1
  160. package/src/components/SpacePresence.tsx +1 -1
  161. package/src/components/SpaceSettings/SpaceSettingsContainer.tsx +4 -3
  162. package/src/components/SyncStatus/InlineSyncStatus.tsx +5 -5
  163. package/src/components/SyncStatus/SyncStatus.stories.tsx +3 -2
  164. package/src/components/SyncStatus/SyncStatus.tsx +93 -3
  165. package/src/components/ViewEditor.tsx +6 -7
  166. package/src/components/index.ts +1 -1
  167. package/src/hooks/index.ts +1 -0
  168. package/src/hooks/useInputSurfaceLookup.tsx +1 -1
  169. package/src/hooks/usePath.ts +1 -1
  170. package/src/hooks/useTypeOptions.ts +59 -0
  171. package/src/meta.ts +5 -0
  172. package/src/translations.ts +10 -1
  173. package/src/types/types.ts +9 -5
  174. package/src/util.tsx +22 -8
  175. package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs +0 -90
  176. package/dist/lib/browser/ObjectDetailsPanel-ETI5YBTH.mjs.map +0 -7
  177. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs +0 -68
  178. package/dist/lib/browser/RecordMain-TEBGAVSL.mjs.map +0 -7
  179. package/dist/lib/browser/app-graph-builder-W7RVDAUA.mjs.map +0 -7
  180. package/dist/lib/browser/chunk-2BFVC5K6.mjs.map +0 -7
  181. package/dist/lib/browser/chunk-E2I747A7.mjs.map +0 -7
  182. package/dist/lib/browser/chunk-ELJDGQTO.mjs +0 -94
  183. package/dist/lib/browser/chunk-ELJDGQTO.mjs.map +0 -7
  184. package/dist/lib/browser/chunk-IRKDREHY.mjs +0 -11
  185. package/dist/lib/browser/chunk-IRKDREHY.mjs.map +0 -7
  186. package/dist/lib/browser/chunk-JCHSUOPF.mjs.map +0 -7
  187. package/dist/lib/browser/chunk-PN27K4I7.mjs.map +0 -7
  188. package/dist/lib/browser/chunk-ZIZ2JLW6.mjs.map +0 -7
  189. package/dist/lib/browser/intent-resolver-HA7DPAUE.mjs.map +0 -7
  190. package/dist/lib/browser/react-surface-HTXYMRSW.mjs.map +0 -7
  191. package/dist/lib/browser/spaces-ready-YY77ANIF.mjs.map +0 -7
  192. package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs +0 -91
  193. package/dist/lib/node-esm/ObjectDetailsPanel-TQ5GN4QJ.mjs.map +0 -7
  194. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs +0 -70
  195. package/dist/lib/node-esm/RecordMain-WLYJMYER.mjs.map +0 -7
  196. package/dist/lib/node-esm/app-graph-builder-5ZJJUMQI.mjs.map +0 -7
  197. package/dist/lib/node-esm/chunk-5XRYHWL7.mjs.map +0 -7
  198. package/dist/lib/node-esm/chunk-6WNZW6KT.mjs.map +0 -7
  199. package/dist/lib/node-esm/chunk-BLPXWPLB.mjs.map +0 -7
  200. package/dist/lib/node-esm/chunk-IJVBBVCL.mjs.map +0 -7
  201. package/dist/lib/node-esm/chunk-MWNATOXL.mjs +0 -13
  202. package/dist/lib/node-esm/chunk-MWNATOXL.mjs.map +0 -7
  203. package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs +0 -96
  204. package/dist/lib/node-esm/chunk-Q6AAQLQG.mjs.map +0 -7
  205. package/dist/lib/node-esm/chunk-XDQXUZMK.mjs.map +0 -7
  206. package/dist/lib/node-esm/intent-resolver-LQNHMPIX.mjs.map +0 -7
  207. package/dist/lib/node-esm/react-surface-LYDYON3U.mjs.map +0 -7
  208. package/dist/lib/node-esm/spaces-ready-YX4IHT4P.mjs.map +0 -7
  209. package/dist/types/src/components/ObjectDetailsPanel.d.ts +0 -9
  210. package/dist/types/src/components/ObjectDetailsPanel.d.ts.map +0 -1
  211. /package/dist/lib/browser/{CollectionMain-AX7KKXWP.mjs.map → CollectionMain-HTKSZCRR.mjs.map} +0 -0
  212. /package/dist/lib/browser/{app-graph-serializer-VLHVTDX4.mjs.map → app-graph-serializer-3R5NVV7U.mjs.map} +0 -0
  213. /package/dist/lib/browser/{chunk-EIXZABXD.mjs.map → chunk-WJXU4GKV.mjs.map} +0 -0
  214. /package/dist/lib/browser/{react-root-YQUJU64P.mjs.map → react-root-NKEKCEYM.mjs.map} +0 -0
  215. /package/dist/lib/browser/{schema-defs-R56ZDBZ7.mjs.map → schema-defs-DWYK7TYW.mjs.map} +0 -0
  216. /package/dist/lib/browser/{settings-5XPQMSPO.mjs.map → settings-ZUCC3ZLB.mjs.map} +0 -0
  217. /package/dist/lib/browser/{state-Y4RVCG4A.mjs.map → state-ISVAKMO7.mjs.map} +0 -0
  218. /package/dist/lib/node-esm/{CollectionMain-EU57SRYK.mjs.map → CollectionMain-OUHGG6OC.mjs.map} +0 -0
  219. /package/dist/lib/node-esm/{app-graph-serializer-EZJSGJUT.mjs.map → app-graph-serializer-3Z3EXEEF.mjs.map} +0 -0
  220. /package/dist/lib/node-esm/{chunk-SVFKU7EW.mjs.map → chunk-H4JILUJK.mjs.map} +0 -0
  221. /package/dist/lib/node-esm/{react-root-UTLJEIKE.mjs.map → react-root-LX7SIG6M.mjs.map} +0 -0
  222. /package/dist/lib/node-esm/{schema-defs-7IMJPIWS.mjs.map → schema-defs-EOG2UPJU.mjs.map} +0 -0
  223. /package/dist/lib/node-esm/{settings-XBSK5KHH.mjs.map → settings-ZDJNLFGW.mjs.map} +0 -0
  224. /package/dist/lib/node-esm/{state-HOHAVPUO.mjs.map → state-QZ4Q6ZRL.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-space",
3
- "version": "0.8.4-main.a4bbb77",
3
+ "version": "0.8.4-main.ae835ea",
4
4
  "description": "DXOS Surface plugin for DXOS ECHO Spaces",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -43,60 +43,62 @@
43
43
  "react-drag-drop-files": "^2.3.8",
44
44
  "react-is": "~19.2.0",
45
45
  "react-qr-rounded": "^1.0.0",
46
- "@dxos/ai": "0.8.4-main.a4bbb77",
47
- "@dxos/app-framework": "0.8.4-main.a4bbb77",
48
- "@dxos/async": "0.8.4-main.a4bbb77",
49
- "@dxos/context": "0.8.4-main.a4bbb77",
50
- "@dxos/display-name": "0.8.4-main.a4bbb77",
51
- "@dxos/client": "0.8.4-main.a4bbb77",
52
- "@dxos/echo": "0.8.4-main.a4bbb77",
53
- "@dxos/echo-schema": "0.8.4-main.a4bbb77",
54
- "@dxos/echo-signals": "0.8.4-main.a4bbb77",
55
- "@dxos/blueprints": "0.8.4-main.a4bbb77",
56
- "@dxos/effect": "0.8.4-main.a4bbb77",
57
- "@dxos/invariant": "0.8.4-main.a4bbb77",
58
- "@dxos/keys": "0.8.4-main.a4bbb77",
59
- "@dxos/log": "0.8.4-main.a4bbb77",
60
- "@dxos/local-storage": "0.8.4-main.a4bbb77",
61
- "@dxos/migrations": "0.8.4-main.a4bbb77",
62
- "@dxos/live-object": "0.8.4-main.a4bbb77",
63
- "@dxos/plugin-client": "0.8.4-main.a4bbb77",
64
- "@dxos/plugin-attention": "0.8.4-main.a4bbb77",
65
- "@dxos/plugin-graph": "0.8.4-main.a4bbb77",
66
- "@dxos/plugin-observability": "0.8.4-main.a4bbb77",
67
- "@dxos/plugin-deck": "0.8.4-main.a4bbb77",
68
- "@dxos/plugin-status-bar": "0.8.4-main.a4bbb77",
69
- "@dxos/protocols": "0.8.4-main.a4bbb77",
70
- "@dxos/react-client": "0.8.4-main.a4bbb77",
71
- "@dxos/react-ui-attention": "0.8.4-main.a4bbb77",
72
- "@dxos/react-ui-components": "0.8.4-main.a4bbb77",
73
- "@dxos/react-ui-editor": "0.8.4-main.a4bbb77",
74
- "@dxos/react-ui-list": "0.8.4-main.a4bbb77",
75
- "@dxos/react-ui-form": "0.8.4-main.a4bbb77",
76
- "@dxos/react-ui-pickers": "0.8.4-main.a4bbb77",
77
- "@dxos/react-ui-searchlist": "0.8.4-main.a4bbb77",
78
- "@dxos/react-ui-stack": "0.8.4-main.a4bbb77",
79
- "@dxos/react-ui-theme": "0.8.4-main.a4bbb77",
80
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.a4bbb77",
81
- "@dxos/react-ui-tabs": "0.8.4-main.a4bbb77",
82
- "@dxos/schema": "0.8.4-main.a4bbb77",
83
- "@dxos/util": "0.8.4-main.a4bbb77",
84
- "@dxos/shell": "0.8.4-main.a4bbb77"
46
+ "@dxos/ai": "0.8.4-main.ae835ea",
47
+ "@dxos/app-framework": "0.8.4-main.ae835ea",
48
+ "@dxos/async": "0.8.4-main.ae835ea",
49
+ "@dxos/blueprints": "0.8.4-main.ae835ea",
50
+ "@dxos/context": "0.8.4-main.ae835ea",
51
+ "@dxos/display-name": "0.8.4-main.ae835ea",
52
+ "@dxos/echo": "0.8.4-main.ae835ea",
53
+ "@dxos/echo-signals": "0.8.4-main.ae835ea",
54
+ "@dxos/invariant": "0.8.4-main.ae835ea",
55
+ "@dxos/keys": "0.8.4-main.ae835ea",
56
+ "@dxos/effect": "0.8.4-main.ae835ea",
57
+ "@dxos/local-storage": "0.8.4-main.ae835ea",
58
+ "@dxos/log": "0.8.4-main.ae835ea",
59
+ "@dxos/live-object": "0.8.4-main.ae835ea",
60
+ "@dxos/migrations": "0.8.4-main.ae835ea",
61
+ "@dxos/plugin-attention": "0.8.4-main.ae835ea",
62
+ "@dxos/plugin-client": "0.8.4-main.ae835ea",
63
+ "@dxos/plugin-deck": "0.8.4-main.ae835ea",
64
+ "@dxos/client": "0.8.4-main.ae835ea",
65
+ "@dxos/plugin-graph": "0.8.4-main.ae835ea",
66
+ "@dxos/plugin-observability": "0.8.4-main.ae835ea",
67
+ "@dxos/protocols": "0.8.4-main.ae835ea",
68
+ "@dxos/react-client": "0.8.4-main.ae835ea",
69
+ "@dxos/plugin-status-bar": "0.8.4-main.ae835ea",
70
+ "@dxos/react-ui": "0.8.4-main.ae835ea",
71
+ "@dxos/react-ui-attention": "0.8.4-main.ae835ea",
72
+ "@dxos/react-ui-components": "0.8.4-main.ae835ea",
73
+ "@dxos/react-ui-form": "0.8.4-main.ae835ea",
74
+ "@dxos/react-ui-editor": "0.8.4-main.ae835ea",
75
+ "@dxos/react-ui-masonry": "0.8.4-main.ae835ea",
76
+ "@dxos/react-ui-pickers": "0.8.4-main.ae835ea",
77
+ "@dxos/react-ui-list": "0.8.4-main.ae835ea",
78
+ "@dxos/react-ui-searchlist": "0.8.4-main.ae835ea",
79
+ "@dxos/react-ui-stack": "0.8.4-main.ae835ea",
80
+ "@dxos/react-ui-theme": "0.8.4-main.ae835ea",
81
+ "@dxos/react-ui-tabs": "0.8.4-main.ae835ea",
82
+ "@dxos/shell": "0.8.4-main.ae835ea",
83
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.ae835ea",
84
+ "@dxos/util": "0.8.4-main.ae835ea",
85
+ "@dxos/schema": "0.8.4-main.ae835ea"
85
86
  },
86
87
  "devDependencies": {
87
88
  "@babel/core": "^7.18.13",
88
89
  "@effect-rx/rx-react": "0.42.4",
89
90
  "@effect/platform": "0.92.1",
90
- "@types/react": "~19.2.0",
91
- "@types/react-dom": "~19.2.0",
91
+ "@types/react": "~19.2.2",
92
+ "@types/react-dom": "~19.2.2",
92
93
  "effect": "3.18.3",
93
94
  "react": "~19.2.0",
94
95
  "react-dom": "~19.2.0",
95
96
  "vite": "7.1.9",
96
- "@dxos/random": "0.8.4-main.a4bbb77",
97
- "@dxos/react-ui-theme": "0.8.4-main.a4bbb77",
98
- "@dxos/react-ui": "0.8.4-main.a4bbb77",
99
- "@dxos/storybook-utils": "0.8.4-main.a4bbb77"
97
+ "@dxos/lit-ui": "0.8.4-main.ae835ea",
98
+ "@dxos/random": "0.8.4-main.ae835ea",
99
+ "@dxos/react-ui": "0.8.4-main.ae835ea",
100
+ "@dxos/react-ui-theme": "0.8.4-main.ae835ea",
101
+ "@dxos/storybook-utils": "0.8.4-main.ae835ea"
100
102
  },
101
103
  "peerDependencies": {
102
104
  "@effect-rx/rx-react": "^0.34.1",
@@ -104,8 +106,8 @@
104
106
  "effect": "^3.13.3",
105
107
  "react": "^19.0.0",
106
108
  "react-dom": "^19.0.0",
107
- "@dxos/react-ui": "0.8.4-main.a4bbb77",
108
- "@dxos/react-ui-theme": "0.8.4-main.a4bbb77"
109
+ "@dxos/react-ui": "0.8.4-main.ae835ea",
110
+ "@dxos/react-ui-theme": "0.8.4-main.ae835ea"
109
111
  },
110
112
  "publishConfig": {
111
113
  "access": "public"
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
 
7
7
  import {
8
8
  Capabilities,
@@ -14,10 +14,10 @@ import {
14
14
  definePlugin,
15
15
  oneOf,
16
16
  } from '@dxos/app-framework';
17
- import { Ref, Type } from '@dxos/echo';
17
+ import { Ref, Tag, Type } from '@dxos/echo';
18
18
  import { AttentionEvents } from '@dxos/plugin-attention';
19
19
  import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
20
- import { DataType, createDefaultSchema, typenameFromQuery } from '@dxos/schema';
20
+ import { DataType, DataTypes, createDefaultSchema, getTypenameFromQuery } from '@dxos/schema';
21
21
  import { translations as shellTranslations } from '@dxos/shell/react';
22
22
 
23
23
  import {
@@ -92,6 +92,7 @@ export const SpacePlugin = definePlugin<SpacePluginOptions>(
92
92
  id: Type.getTypename(DataType.Collection),
93
93
  metadata: {
94
94
  icon: 'ph--cards-three--regular',
95
+ iconHue: 'neutral',
95
96
  // TODO(wittjosiah): Move out of metadata.
96
97
  loadReferences: async (collection: DataType.Collection) => await Ref.Array.loadAll(collection.objects),
97
98
  },
@@ -102,7 +103,7 @@ export const SpacePlugin = definePlugin<SpacePluginOptions>(
102
103
  label: (object: DataType.QueryCollection) => [
103
104
  'typename label',
104
105
  {
105
- ns: typenameFromQuery(object.query),
106
+ ns: getTypenameFromQuery(object.query),
106
107
  count: 2,
107
108
  defaultValue: 'New smart collection',
108
109
  },
@@ -114,6 +115,7 @@ export const SpacePlugin = definePlugin<SpacePluginOptions>(
114
115
  id: Type.getTypename(DataType.StoredSchema),
115
116
  metadata: {
116
117
  icon: 'ph--database--regular',
118
+ iconHue: 'green',
117
119
  },
118
120
  }),
119
121
  contributes(Capabilities.Metadata, {
@@ -189,15 +191,7 @@ export const SpacePlugin = definePlugin<SpacePluginOptions>(
189
191
  defineModule({
190
192
  id: `${meta.id}/module/schema`,
191
193
  activatesOn: ClientEvents.SetupSchema,
192
- activate: () =>
193
- contributes(ClientCapabilities.Schema, [
194
- DataType.View,
195
- DataType.Event,
196
- DataType.Organization,
197
- DataType.Person,
198
- DataType.Project,
199
- DataType.Task,
200
- ]),
194
+ activate: () => contributes(ClientCapabilities.Schema, [Tag.Tag, ...DataTypes]),
201
195
  }),
202
196
  defineModule({
203
197
  id: `${meta.id}/module/whitelist-schema`,
@@ -3,7 +3,10 @@
3
3
  //
4
4
 
5
5
  import { Rx } from '@effect-rx/rx-react';
6
- import { Array, Option, Schema, pipe } from 'effect';
6
+ import * as Array from 'effect/Array';
7
+ import * as Function from 'effect/Function';
8
+ import * as Option from 'effect/Option';
9
+ import * as Schema from 'effect/Schema';
7
10
 
8
11
  import { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
9
12
  import { type QueryResult, type Space, SpaceState, getSpace, isSpace, parseId } from '@dxos/client/echo';
@@ -12,7 +15,7 @@ import { log } from '@dxos/log';
12
15
  import { ClientCapabilities } from '@dxos/plugin-client';
13
16
  import { ATTENDABLE_PATH_SEPARATOR, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';
14
17
  import { ROOT_ID, createExtension, rxFromObservable, rxFromSignal } from '@dxos/plugin-graph';
15
- import { DataType, typenameFromQuery } from '@dxos/schema';
18
+ import { DataType, getTypenameFromQuery } from '@dxos/schema';
16
19
  import { isNonNullable } from '@dxos/util';
17
20
 
18
21
  import { getActiveSpace } from '../hooks';
@@ -81,7 +84,7 @@ export default (context: PluginContext) => {
81
84
  position: 'hoist',
82
85
  actions: (node) =>
83
86
  Rx.make((get) =>
84
- pipe(
87
+ Function.pipe(
85
88
  get(node),
86
89
  Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
87
90
  Option.map(() => [
@@ -158,7 +161,7 @@ export default (context: PluginContext) => {
158
161
  position: 'hoist',
159
162
  connector: (node) =>
160
163
  Rx.make((get) =>
161
- pipe(
164
+ Function.pipe(
162
165
  get(node),
163
166
  Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),
164
167
  Option.map(() => [spacesNode]),
@@ -174,7 +177,7 @@ export default (context: PluginContext) => {
174
177
  connector: (node) => {
175
178
  let query: QueryResult<Type.Expando> | undefined;
176
179
  return Rx.make((get) =>
177
- pipe(
180
+ Function.pipe(
178
181
  get(node),
179
182
  Option.flatMap((node) => (node.id === SPACES ? Option.some(node) : Option.none())),
180
183
  Option.map(() => {
@@ -279,7 +282,7 @@ export default (context: PluginContext) => {
279
282
  id: `${meta.id}/actions`,
280
283
  actions: (node) =>
281
284
  Rx.make((get) =>
282
- pipe(
285
+ Function.pipe(
283
286
  get(node),
284
287
  Option.flatMap((node) =>
285
288
  node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
@@ -311,7 +314,7 @@ export default (context: PluginContext) => {
311
314
  id: `${meta.id}/root-collection`,
312
315
  connector: (node) =>
313
316
  Rx.make((get) =>
314
- pipe(
317
+ Function.pipe(
315
318
  get(node),
316
319
  Option.flatMap((node) =>
317
320
  node.type === SPACE_TYPE && isSpace(node.data) ? Option.some(node.data) : Option.none(),
@@ -334,7 +337,7 @@ export default (context: PluginContext) => {
334
337
 
335
338
  return get(
336
339
  rxFromSignal(() =>
337
- pipe(
340
+ Function.pipe(
338
341
  collection.objects,
339
342
  Array.map((object) => object.target),
340
343
  Array.filter(isNonNullable),
@@ -361,7 +364,7 @@ export default (context: PluginContext) => {
361
364
  id: `${meta.id}/objects`,
362
365
  connector: (node) =>
363
366
  Rx.make((get) =>
364
- pipe(
367
+ Function.pipe(
365
368
  get(node),
366
369
  Option.flatMap((node) =>
367
370
  Obj.instanceOf(DataType.Collection, node.data) ? Option.some(node.data) : Option.none(),
@@ -372,7 +375,7 @@ export default (context: PluginContext) => {
372
375
 
373
376
  return get(
374
377
  rxFromSignal(() =>
375
- pipe(
378
+ Function.pipe(
376
379
  collection.objects,
377
380
  Array.map((object) => object.target),
378
381
  Array.filter(isNonNullable),
@@ -433,14 +436,14 @@ export default (context: PluginContext) => {
433
436
  connector: (node) => {
434
437
  let query: QueryResult<Type.Expando> | undefined;
435
438
  return Rx.make((get) =>
436
- pipe(
439
+ Function.pipe(
437
440
  get(node),
438
441
  Option.flatMap((node) =>
439
442
  Obj.instanceOf(DataType.QueryCollection, node.data) ? Option.some(node.data) : Option.none(),
440
443
  ),
441
444
  Option.flatMap((collection) => {
442
445
  const space = getSpace(collection);
443
- const typename = typenameFromQuery(collection.query);
446
+ const typename = getTypenameFromQuery(collection.query);
444
447
  return typename && space ? Option.some({ typename, space }) : Option.none();
445
448
  }),
446
449
  Option.map(({ typename, space }) => {
@@ -490,11 +493,11 @@ export default (context: PluginContext) => {
490
493
  connector: (node) => {
491
494
  const client = context.getCapability(ClientCapabilities.Client);
492
495
  return Rx.make((get) =>
493
- pipe(
496
+ Function.pipe(
494
497
  get(node),
495
498
  Option.flatMap((node) =>
496
499
  Obj.instanceOf(DataType.QueryCollection, node.data) &&
497
- typenameFromQuery(node.data.query) === DataType.StoredSchema.typename
500
+ getTypenameFromQuery(node.data.query) === DataType.StoredSchema.typename
498
501
  ? Option.some(node.data)
499
502
  : Option.none(),
500
503
  ),
@@ -522,7 +525,7 @@ export default (context: PluginContext) => {
522
525
  actions: (node) => {
523
526
  let query: QueryResult<DataType.View> | undefined;
524
527
  return Rx.make((get) =>
525
- pipe(
528
+ Function.pipe(
526
529
  get(node),
527
530
  Option.flatMap((node) => {
528
531
  const space = isSpace(node.properties.space) ? node.properties.space : undefined;
@@ -539,7 +542,7 @@ export default (context: PluginContext) => {
539
542
  rxFromSignal(() =>
540
543
  // TODO(wittjosiah): Remove cast.
541
544
  views.filter(
542
- (view) => typenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
545
+ (view) => getTypenameFromQuery(view.query.ast) === Type.getTypename(schema as Type.Obj.Any),
543
546
  ),
544
547
  ),
545
548
  );
@@ -570,7 +573,7 @@ export default (context: PluginContext) => {
570
573
  connector: (node) => {
571
574
  let query: QueryResult<DataType.View> | undefined;
572
575
  return Rx.make((get) =>
573
- pipe(
576
+ Function.pipe(
574
577
  get(node),
575
578
  Option.flatMap((node) => {
576
579
  const space = getSpace(node.data) ?? (isSpace(node.properties.space) ? node.properties.space : undefined);
@@ -587,7 +590,7 @@ export default (context: PluginContext) => {
587
590
  // TODO(wittjosiah): Remove cast.
588
591
  const typename = Schema.isSchema(schema) ? Type.getTypename(schema as Type.Obj.Any) : schema.typename;
589
592
  return get(rxFromQuery(query))
590
- .filter((view) => typenameFromQuery(view.query.ast) === typename)
593
+ .filter((view) => getTypenameFromQuery(view.query.ast) === typename)
591
594
  .map((view) =>
592
595
  get(
593
596
  rxFromSignal(() =>
@@ -645,11 +648,13 @@ export default (context: PluginContext) => {
645
648
  actions: (node) => {
646
649
  let query: QueryResult<DataType.View> | undefined;
647
650
  return Rx.make((get) =>
648
- pipe(
651
+ Function.pipe(
649
652
  get(node),
650
653
  Option.flatMap((node) => {
651
654
  const space = getSpace(node.data);
652
- return space && Obj.isObject(node.data) ? Option.some({ space, object: node.data }) : Option.none();
655
+ return space && Obj.isObject(node.data) && Obj.getTypename(node.data) === node.type
656
+ ? Option.some({ space, object: node.data })
657
+ : Option.none();
653
658
  }),
654
659
  Option.flatMap(({ space, object }) => {
655
660
  const isSchema = Obj.instanceOf(DataType.StoredSchema, object);
@@ -663,12 +668,12 @@ export default (context: PluginContext) => {
663
668
  // Don't allow the Records smart collection to be deleted.
664
669
  !(
665
670
  Obj.instanceOf(DataType.QueryCollection, object) &&
666
- typenameFromQuery(object.query) === DataType.StoredSchema.typename
671
+ getTypenameFromQuery(object.query) === DataType.StoredSchema.typename
667
672
  );
668
673
  if (isSchema && query) {
669
674
  const views = get(rxFromQuery(query));
670
675
  const filteredViews = get(
671
- rxFromSignal(() => views.filter((view) => typenameFromQuery(view.query.ast) === object.typename)),
676
+ rxFromSignal(() => views.filter((view) => getTypenameFromQuery(view.query.ast) === object.typename)),
672
677
  );
673
678
  deletable = filteredViews.length === 0;
674
679
  }
@@ -703,7 +708,7 @@ export default (context: PluginContext) => {
703
708
  id: `${meta.id}/selected-objects`,
704
709
  connector: (node) =>
705
710
  Rx.make((get) =>
706
- pipe(
711
+ Function.pipe(
707
712
  get(node),
708
713
  Option.flatMap((node) => (Obj.instanceOf(DataType.View, node.data) ? Option.some(node) : Option.none())),
709
714
  Option.map((node) => [
@@ -728,7 +733,7 @@ export default (context: PluginContext) => {
728
733
  id: `${meta.id}/settings`,
729
734
  connector: (node) =>
730
735
  Rx.make((get) =>
731
- pipe(
736
+ Function.pipe(
732
737
  get(node),
733
738
  Option.flatMap((node) => (Obj.isObject(node.data) ? Option.some(node) : Option.none())),
734
739
  Option.map((node) => [
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Schema } from 'effect';
5
+ import type * as Schema from 'effect/Schema';
6
6
 
7
7
  import { type AnyIntentChain, type Label, defineCapability } from '@dxos/app-framework';
8
8
  import { type Space } from '@dxos/react-client/echo';
@@ -22,7 +22,12 @@ export namespace SpaceCapabilities {
22
22
  export type onCreateSpace = (params: { space: Space; rootCollection: DataType.Collection }) => AnyIntentChain;
23
23
  export const onCreateSpace = defineCapability<onCreateSpace>(`${meta.id}/capability/on-space-created`);
24
24
 
25
- export type OnSchemaAdded = (params: { space: Space; schema: Schema.Schema.AnyNoContext }) => AnyIntentChain;
25
+ export type OnSchemaAdded = (params: {
26
+ space: Space;
27
+ schema: Schema.Schema.AnyNoContext;
28
+ // TODO(wittjosiah): This is leaky.
29
+ show?: boolean;
30
+ }) => AnyIntentChain;
26
31
  export const OnSchemaAdded = defineCapability<OnSchemaAdded>(`${meta.id}/capability/on-schema-added`);
27
32
 
28
33
  // TODO(burdon): Should this be view? Forms are UI concepts? (associated with a View/schema).
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Effect } from 'effect';
5
+ import * as Effect from 'effect/Effect';
6
6
 
7
7
  import {
8
8
  Capabilities,
@@ -21,7 +21,9 @@ import { EdgeReplicationSetting } from '@dxos/protocols/proto/dxos/echo/metadata
21
21
  import { SpaceState, fullyQualifiedId, getSpace, isSpace } from '@dxos/react-client/echo';
22
22
  import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
23
23
  import { ATTENDABLE_PATH_SEPARATOR } from '@dxos/react-ui-attention';
24
- import { DataType, ProjectionModel, typenameFromQuery } from '@dxos/schema';
24
+ import { iconValues } from '@dxos/react-ui-pickers';
25
+ import { hues } from '@dxos/react-ui-theme';
26
+ import { DataType, ProjectionModel, getTypenameFromQuery } from '@dxos/schema';
25
27
 
26
28
  import {
27
29
  CREATE_OBJECT_DIALOG,
@@ -69,8 +71,10 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
69
71
  }),
70
72
  createResolver({
71
73
  intent: SpaceAction.Create,
72
- resolve: async ({ name, hue, icon, edgeReplication }) => {
74
+ resolve: async ({ name, hue: hue_, icon: icon_, edgeReplication }) => {
73
75
  const client = context.getCapability(ClientCapabilities.Client);
76
+ const hue = hue_ ?? hues[Math.floor(Math.random() * hues.length)];
77
+ const icon = icon_ ?? iconValues[Math.floor(Math.random() * iconValues.length)];
74
78
  const space = await client.spaces.create({ name, hue, icon });
75
79
  if (edgeReplication) {
76
80
  await space.internal.setEdgeReplicationPreference(EdgeReplicationSetting.ENABLED);
@@ -88,6 +92,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
88
92
 
89
93
  // Create records smart collection.
90
94
  const records = Obj.make(DataType.QueryCollection, {
95
+ // NOTE: This is specifically Filter.typename due to current limitations in query collection parsing.
91
96
  query: Query.select(Filter.typename(DataType.StoredSchema.typename)).ast,
92
97
  });
93
98
  collection.objects.push(Ref.make(records));
@@ -323,7 +328,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
323
328
  }),
324
329
  createResolver({
325
330
  intent: SpaceAction.UseStaticSchema,
326
- resolve: async ({ space, typename }) => {
331
+ resolve: async ({ space, typename, show }) => {
327
332
  const client = context.getCapability(ClientCapabilities.Client);
328
333
  const schema = client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename);
329
334
  invariant(schema, `Schema not found: ${typename}`);
@@ -338,7 +343,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
338
343
 
339
344
  await context.activatePromise(SpaceEvents.SchemaAdded);
340
345
  const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
341
- const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
346
+ const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
342
347
 
343
348
  return {
344
349
  data: {},
@@ -361,7 +366,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
361
366
  }),
362
367
  createResolver({
363
368
  intent: SpaceAction.AddSchema,
364
- resolve: async ({ space, name, typename, version, schema: schemaInput }) => {
369
+ resolve: async ({ space, name, typename, version, schema: schemaInput, show }) => {
365
370
  const [schema] = await space.db.schemaRegistry.register([schemaInput]);
366
371
  if (name) {
367
372
  schema.storedSchema.name = name;
@@ -375,7 +380,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
375
380
 
376
381
  await context.activatePromise(SpaceEvents.SchemaAdded);
377
382
  const onSchemaAdded = context.getCapabilities(SpaceCapabilities.OnSchemaAdded);
378
- const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema }));
383
+ const schemaAddedIntents = onSchemaAdded.map((onSchemaAdded) => onSchemaAdded({ space, schema, show }));
379
384
 
380
385
  return {
381
386
  data: {
@@ -406,7 +411,7 @@ export default ({ context, observability, createInvitationUrl }: IntentResolverO
406
411
  resolve: async ({ view, fieldId, deletionData }, undo) => {
407
412
  const space = getSpace(view);
408
413
  invariant(space);
409
- const typename = typenameFromQuery(view.query.ast);
414
+ const typename = getTypenameFromQuery(view.query.ast);
410
415
  invariant(typename);
411
416
  const schema = await space.db.schemaRegistry.query({ typename }).firstOrUndefined();
412
417
  invariant(schema);
@@ -2,23 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { type Schema } from 'effect';
6
- import React, { useCallback, useMemo } from 'react';
5
+ import type * as Schema from 'effect/Schema';
6
+ import React, { useCallback } from 'react';
7
7
 
8
- import {
9
- Capabilities,
10
- Surface,
11
- contributes,
12
- createSurface,
13
- useCapabilities,
14
- useCapability,
15
- useLayout,
16
- } from '@dxos/app-framework';
8
+ import { Capabilities, Surface, contributes, createSurface, useCapability, useLayout } from '@dxos/app-framework';
17
9
  import { Obj, Type } from '@dxos/echo';
18
10
  import { findAnnotation } from '@dxos/effect';
19
11
  import { SettingsStore } from '@dxos/local-storage';
20
- import { ClientCapabilities } from '@dxos/plugin-client';
21
- import { useClient } from '@dxos/react-client';
22
12
  import {
23
13
  type Space,
24
14
  SpaceState,
@@ -29,7 +19,7 @@ import {
29
19
  parseId,
30
20
  useSpace,
31
21
  } from '@dxos/react-client/echo';
32
- import { Input, useTranslation } from '@dxos/react-ui';
22
+ import { Input } from '@dxos/react-ui';
33
23
  import { type InputProps, SelectInput } from '@dxos/react-ui-form';
34
24
  import { HuePicker, IconPicker } from '@dxos/react-ui-pickers';
35
25
  import { DataType, type TypenameAnnotation, TypenameAnnotationId } from '@dxos/schema';
@@ -63,6 +53,7 @@ import {
63
53
  SyncStatus,
64
54
  ViewEditor,
65
55
  } from '../components';
56
+ import { useTypeOptions } from '../hooks';
66
57
  import { meta } from '../meta';
67
58
  import { HueAnnotationId, IconAnnotationId, type SpaceSettingsProps } from '../types';
68
59
 
@@ -249,72 +240,10 @@ export default ({ createInvitationUrl }: ReactSurfaceOptions) =>
249
240
  return !!annotation;
250
241
  },
251
242
  component: ({ data: { schema, target }, ...inputProps }) => {
252
- const { t } = useTranslation();
253
- const client = useClient();
254
243
  const props = inputProps as any as InputProps;
255
244
  const space = isSpace(target) ? target : getSpace(target);
256
- if (!space) {
257
- return null;
258
- }
259
-
260
245
  const annotation = findAnnotation<TypenameAnnotation[]>(schema.ast, TypenameAnnotationId)!;
261
-
262
- const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);
263
- const whitelistedTypenames = useMemo(
264
- () => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => Type.getTypename(type)))),
265
- [schemaWhitelists],
266
- );
267
-
268
- const objectForms = useCapabilities(SpaceCapabilities.ObjectForm);
269
- const objectFormTypenames = useMemo(
270
- () =>
271
- new Set(
272
- objectForms
273
- .map((form) => Type.getTypename(form.objectSchema))
274
- // TODO(wittjosiah): Remove.
275
- .filter((typename) => !OMIT.includes(typename) && !typename.endsWith('View')),
276
- ),
277
- [objectForms],
278
- );
279
-
280
- const fixed = client.graph.schemaRegistry.schemas.filter((schema) => {
281
- const limitedStatic =
282
- annotation.includes('limited-static') && whitelistedTypenames.has(Type.getTypename(schema));
283
- const unusedStatic =
284
- annotation.includes('unused-static') &&
285
- whitelistedTypenames.has(Type.getTypename(schema)) &&
286
- !space.properties.staticRecords?.includes(Type.getTypename(schema));
287
- const usedStatic =
288
- annotation.includes('used-static') &&
289
- whitelistedTypenames.has(Type.getTypename(schema)) &&
290
- space.properties.staticRecords?.includes(Type.getTypename(schema));
291
- const objectForm = annotation.includes('object-form') && objectFormTypenames.has(Type.getTypename(schema));
292
- return annotation.includes('static') || limitedStatic || unusedStatic || usedStatic || objectForm;
293
- });
294
- const dynamic = space?.db.schemaRegistry.query().runSync();
295
- const typenames = Array.from(
296
- new Set<string>([
297
- ...(annotation.includes('limited-static') ||
298
- annotation.includes('unused-static') ||
299
- annotation.includes('used-static') ||
300
- annotation.includes('static') ||
301
- annotation.includes('object-form')
302
- ? fixed.map((schema) => Type.getTypename(schema))
303
- : []),
304
- ...(annotation.includes('dynamic') ? dynamic.map((schema) => schema.typename) : []),
305
- ]),
306
- ).sort();
307
-
308
- const options = useMemo(
309
- () =>
310
- typenames
311
- .map((typename) => ({
312
- value: typename,
313
- label: t('typename label', { ns: typename, defaultValue: typename }),
314
- }))
315
- .toSorted((a, b) => a.label.localeCompare(b.label)),
316
- [t, typenames],
317
- );
246
+ const options = useTypeOptions({ space, annotation });
318
247
 
319
248
  return <SelectInput {...props} options={options} />;
320
249
  },
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Option } from 'effect';
5
+ import * as Option from 'effect/Option';
6
6
 
7
7
  import { Capabilities, LayoutAction, type PluginContext, contributes, createIntent } from '@dxos/app-framework';
8
8
  import { SubscriptionList } from '@dxos/async';