@dxos/app-framework 0.8.4-main.bc674ce → 0.8.4-main.c351d160a8

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 (368) hide show
  1. package/.storybook/main.mts +1 -3
  2. package/dist/lib/browser/capability-5OFLR7J4.mjs +34 -0
  3. package/dist/lib/browser/capability-5OFLR7J4.mjs.map +7 -0
  4. package/dist/lib/browser/{capability-7PCNSWBT.mjs → capability-ZHQDZRP5.mjs} +15 -11
  5. package/dist/lib/browser/capability-ZHQDZRP5.mjs.map +7 -0
  6. package/dist/lib/browser/{chunk-PKQT6C53.mjs → chunk-272IPLHQ.mjs} +1 -1
  7. package/dist/lib/browser/{chunk-PKQT6C53.mjs.map → chunk-272IPLHQ.mjs.map} +1 -1
  8. package/dist/lib/browser/{chunk-FMZN33N4.mjs → chunk-3VXJONTI.mjs} +304 -178
  9. package/dist/lib/browser/chunk-3VXJONTI.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-XYNO72GQ.mjs → chunk-7AL6SKIV.mjs} +459 -477
  11. package/dist/lib/browser/chunk-7AL6SKIV.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-TCLLRCS3.mjs → chunk-GH3M2LIW.mjs} +10 -7
  13. package/dist/lib/browser/chunk-GH3M2LIW.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-7IQHKD4U.mjs → chunk-JGWCBVKJ.mjs} +2 -2
  15. package/dist/lib/browser/chunk-JGWCBVKJ.mjs.map +7 -0
  16. package/dist/lib/browser/chunk-M5IC326L.mjs +34 -0
  17. package/dist/lib/browser/chunk-M5IC326L.mjs.map +7 -0
  18. package/dist/lib/browser/chunk-TGX63LTL.mjs +8 -0
  19. package/dist/lib/browser/{chunk-FHQTHCX7.mjs.map → chunk-TGX63LTL.mjs.map} +1 -1
  20. package/dist/lib/browser/chunk-TIEBZMTF.mjs +44 -0
  21. package/dist/lib/browser/chunk-TIEBZMTF.mjs.map +7 -0
  22. package/dist/lib/browser/chunk-WEBSGU5L.mjs +80 -0
  23. package/dist/lib/browser/chunk-WEBSGU5L.mjs.map +7 -0
  24. package/dist/lib/browser/chunk-YAFEA4GV.mjs +1 -0
  25. package/dist/lib/browser/{chunk-6Y7PZV72.mjs → chunk-YNFPIQGB.mjs} +2 -3
  26. package/dist/lib/browser/{chunk-6Y7PZV72.mjs.map → chunk-YNFPIQGB.mjs.map} +3 -3
  27. package/dist/lib/browser/cli/index.mjs +89 -0
  28. package/dist/lib/browser/cli/index.mjs.map +7 -0
  29. package/dist/lib/browser/common/activation-events.mjs +23 -0
  30. package/dist/lib/browser/common/capabilities.mjs +45 -0
  31. package/dist/lib/browser/core/activation-event.mjs +1 -1
  32. package/dist/lib/browser/core/capability.mjs +1 -1
  33. package/dist/lib/browser/core/plugin-manager.mjs +4 -4
  34. package/dist/lib/browser/core/plugin.mjs +6 -4
  35. package/dist/lib/browser/index.mjs +37 -132
  36. package/dist/lib/browser/index.mjs.map +4 -4
  37. package/dist/lib/browser/{invoker-capability-SZRSTHEH.mjs → invoker-capability-YTTQ2OBB.mjs} +16 -12
  38. package/dist/lib/browser/invoker-capability-YTTQ2OBB.mjs.map +7 -0
  39. package/dist/lib/browser/meta.json +1 -1
  40. package/dist/lib/browser/testing/index.mjs +55 -34
  41. package/dist/lib/browser/testing/index.mjs.map +3 -3
  42. package/dist/lib/browser/{react → ui}/index.mjs +18 -19
  43. package/dist/lib/node-esm/capability-CRHZKL6T.mjs +35 -0
  44. package/dist/lib/node-esm/capability-CRHZKL6T.mjs.map +7 -0
  45. package/dist/lib/node-esm/{capability-CFLQ2QQU.mjs → capability-W5C5464H.mjs} +15 -11
  46. package/dist/lib/node-esm/capability-W5C5464H.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-663A54LQ.mjs → chunk-3D66SZHP.mjs} +2 -2
  48. package/dist/lib/node-esm/chunk-3D66SZHP.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-7OWSHPYK.mjs → chunk-6REV5DE7.mjs} +1 -1
  50. package/dist/lib/node-esm/{chunk-7OWSHPYK.mjs.map → chunk-6REV5DE7.mjs.map} +1 -1
  51. package/dist/lib/node-esm/{chunk-XYQTBFPA.mjs → chunk-CMDON4NG.mjs} +304 -178
  52. package/dist/lib/node-esm/chunk-CMDON4NG.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs → chunk-FKE4Z3D6.mjs} +2 -2
  54. package/dist/lib/node-esm/{chunk-UEWJDI2L.mjs.map → chunk-FKE4Z3D6.mjs.map} +1 -1
  55. package/dist/lib/node-esm/{chunk-6WXBT3EC.mjs → chunk-I7FZT4A7.mjs} +459 -477
  56. package/dist/lib/node-esm/chunk-I7FZT4A7.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-GT6OKM5I.mjs → chunk-LHCJGNXK.mjs} +10 -7
  58. package/dist/lib/node-esm/chunk-LHCJGNXK.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-NHXBSAQR.mjs +35 -0
  60. package/dist/lib/node-esm/chunk-NHXBSAQR.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-STMXUEPO.mjs → chunk-SB5ODNPX.mjs} +2 -3
  62. package/dist/lib/node-esm/{chunk-STMXUEPO.mjs.map → chunk-SB5ODNPX.mjs.map} +3 -3
  63. package/dist/lib/node-esm/chunk-SCDGIGGU.mjs +45 -0
  64. package/dist/lib/node-esm/chunk-SCDGIGGU.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-SQICGJBW.mjs +81 -0
  66. package/dist/lib/node-esm/chunk-SQICGJBW.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-Z4TJPSMP.mjs +2 -0
  68. package/dist/lib/node-esm/chunk-Z4TJPSMP.mjs.map +7 -0
  69. package/dist/lib/node-esm/cli/index.mjs +90 -0
  70. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  71. package/dist/lib/node-esm/common/activation-events.mjs +24 -0
  72. package/dist/lib/node-esm/common/activation-events.mjs.map +7 -0
  73. package/dist/lib/node-esm/common/capabilities.mjs +46 -0
  74. package/dist/lib/node-esm/common/capabilities.mjs.map +7 -0
  75. package/dist/lib/node-esm/core/activation-event.mjs +1 -1
  76. package/dist/lib/node-esm/core/capability.mjs +1 -1
  77. package/dist/lib/node-esm/core/plugin-manager.mjs +4 -4
  78. package/dist/lib/node-esm/core/plugin.mjs +6 -4
  79. package/dist/lib/node-esm/index.mjs +37 -132
  80. package/dist/lib/node-esm/index.mjs.map +4 -4
  81. package/dist/lib/node-esm/{invoker-capability-PNMA5JOS.mjs → invoker-capability-BU26474T.mjs} +16 -12
  82. package/dist/lib/node-esm/invoker-capability-BU26474T.mjs.map +7 -0
  83. package/dist/lib/node-esm/meta.json +1 -1
  84. package/dist/lib/node-esm/testing/index.mjs +55 -34
  85. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  86. package/dist/lib/node-esm/{react → ui}/index.mjs +18 -19
  87. package/dist/lib/node-esm/ui/index.mjs.map +7 -0
  88. package/dist/types/src/{cli.d.ts → cli/cli.d.ts} +2 -2
  89. package/dist/types/src/cli/cli.d.ts.map +1 -0
  90. package/dist/types/src/cli/index.d.ts +2 -0
  91. package/dist/types/src/cli/index.d.ts.map +1 -0
  92. package/dist/types/src/common/activation-events.d.ts +27 -0
  93. package/dist/types/src/common/activation-events.d.ts.map +1 -0
  94. package/dist/types/src/common/capabilities.d.ts +115 -0
  95. package/dist/types/src/common/capabilities.d.ts.map +1 -0
  96. package/dist/types/src/common/index.d.ts +4 -9
  97. package/dist/types/src/common/index.d.ts.map +1 -1
  98. package/dist/types/src/common/operations.d.ts +1 -348
  99. package/dist/types/src/common/operations.d.ts.map +1 -1
  100. package/dist/types/src/common/translations.d.ts +0 -9
  101. package/dist/types/src/common/translations.d.ts.map +1 -1
  102. package/dist/types/src/core/activation-event.d.ts +1 -1
  103. package/dist/types/src/core/capability.d.ts +7 -7
  104. package/dist/types/src/core/capability.d.ts.map +1 -1
  105. package/dist/types/src/core/plugin-manager.d.ts +6 -0
  106. package/dist/types/src/core/plugin-manager.d.ts.map +1 -1
  107. package/dist/types/src/core/plugin.d.ts +6 -1
  108. package/dist/types/src/core/plugin.d.ts.map +1 -1
  109. package/dist/types/src/index.d.ts +1 -3
  110. package/dist/types/src/index.d.ts.map +1 -1
  111. package/dist/types/src/plugin-operation/history/capability.d.ts +1 -1
  112. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts +11 -3
  113. package/dist/types/src/plugin-operation/history/undo-mapping.d.ts.map +1 -1
  114. package/dist/types/src/plugin-operation/invoker-capability.d.ts +1 -1
  115. package/dist/types/src/plugin-runtime/capability.d.ts +2 -2
  116. package/dist/types/src/plugin-runtime/capability.d.ts.map +1 -1
  117. package/dist/types/src/testing/withPluginManager.d.ts +1 -1
  118. package/dist/types/src/testing/withPluginManager.d.ts.map +1 -1
  119. package/dist/types/src/{react → ui/components/App}/App.d.ts +1 -1
  120. package/dist/types/src/ui/components/App/App.d.ts.map +1 -0
  121. package/dist/types/src/{react/Surface.stories.d.ts → ui/components/App/App.stories.d.ts} +7 -2
  122. package/dist/types/src/ui/components/App/App.stories.d.ts.map +1 -0
  123. package/dist/types/src/ui/components/App/index.d.ts +2 -0
  124. package/dist/types/src/ui/components/App/index.d.ts.map +1 -0
  125. package/dist/types/src/ui/components/PluginManager/PluginManagerContext.stories.d.ts.map +1 -0
  126. package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerProvider.d.ts +1 -1
  127. package/dist/types/src/ui/components/PluginManager/PluginManagerProvider.d.ts.map +1 -0
  128. package/dist/types/src/ui/components/PluginManager/index.d.ts +2 -0
  129. package/dist/types/src/ui/components/PluginManager/index.d.ts.map +1 -0
  130. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts +12 -0
  131. package/dist/types/src/ui/components/Surface/SurfaceComponent.d.ts.map +1 -0
  132. package/dist/types/src/{react/App.stories.d.ts → ui/components/Surface/SurfaceComponent.stories.d.ts} +1 -1
  133. package/dist/types/src/ui/components/Surface/SurfaceComponent.stories.d.ts.map +1 -0
  134. package/dist/types/src/ui/components/Surface/SurfaceInfo.d.ts.map +1 -0
  135. package/dist/types/src/ui/components/Surface/context.d.ts +5 -0
  136. package/dist/types/src/ui/components/Surface/context.d.ts.map +1 -0
  137. package/dist/types/src/ui/components/Surface/index.d.ts +20 -0
  138. package/dist/types/src/ui/components/Surface/index.d.ts.map +1 -0
  139. package/dist/types/src/{common/surface.d.ts → ui/components/Surface/types.d.ts} +20 -18
  140. package/dist/types/src/ui/components/Surface/types.d.ts.map +1 -0
  141. package/dist/types/src/ui/components/index.d.ts +4 -0
  142. package/dist/types/src/ui/components/index.d.ts.map +1 -0
  143. package/dist/types/src/ui/hooks/index.d.ts +7 -0
  144. package/dist/types/src/ui/hooks/index.d.ts.map +1 -0
  145. package/dist/types/src/{react → ui/hooks}/useApp.d.ts +14 -9
  146. package/dist/types/src/ui/hooks/useApp.d.ts.map +1 -0
  147. package/dist/types/src/ui/hooks/useApp.test.d.ts +2 -0
  148. package/dist/types/src/ui/hooks/useApp.test.d.ts.map +1 -0
  149. package/dist/types/src/{react → ui/hooks}/useCapabilities.d.ts +6 -1
  150. package/dist/types/src/ui/hooks/useCapabilities.d.ts.map +1 -0
  151. package/dist/types/src/ui/hooks/useLoading.d.ts.map +1 -0
  152. package/dist/types/src/{react → ui/hooks}/useOperationResolver.d.ts +2 -2
  153. package/dist/types/src/ui/hooks/useOperationResolver.d.ts.map +1 -0
  154. package/dist/types/src/{react/common.d.ts → ui/hooks/useSettingsState.d.ts} +1 -5
  155. package/dist/types/src/ui/hooks/useSettingsState.d.ts.map +1 -0
  156. package/dist/types/src/ui/hooks/useSurface.d.ts +3 -0
  157. package/dist/types/src/ui/hooks/useSurface.d.ts.map +1 -0
  158. package/dist/types/src/ui/index.d.ts +3 -0
  159. package/dist/types/src/ui/index.d.ts.map +1 -0
  160. package/dist/types/tsconfig.tsbuildinfo +1 -1
  161. package/moon.yml +6 -6
  162. package/package.json +72 -64
  163. package/src/{cli.ts → cli/cli.ts} +10 -10
  164. package/src/{playground/debug → cli}/index.ts +1 -1
  165. package/src/common/activation-events.ts +44 -0
  166. package/src/common/capabilities.ts +178 -0
  167. package/src/common/index.ts +4 -9
  168. package/src/common/operations.ts +2 -376
  169. package/src/common/translations.ts +0 -12
  170. package/src/context.ts +1 -1
  171. package/src/core/activation-event.ts +1 -1
  172. package/src/core/capability.ts +9 -9
  173. package/src/core/plugin-manager.test.ts +292 -44
  174. package/src/core/plugin-manager.ts +326 -154
  175. package/src/core/plugin.ts +10 -2
  176. package/src/index.ts +1 -3
  177. package/src/plugin-operation/OperationPlugin.ts +5 -5
  178. package/src/plugin-operation/history/capability.ts +5 -5
  179. package/src/plugin-operation/history/undo-mapping.ts +6 -3
  180. package/src/plugin-operation/invoker-capability.ts +5 -5
  181. package/src/plugin-operation/meta.ts +1 -1
  182. package/src/plugin-runtime/RuntimePlugin.ts +4 -4
  183. package/src/plugin-runtime/capability.ts +5 -5
  184. package/src/plugin-runtime/meta.ts +1 -1
  185. package/src/testing/service.ts +6 -6
  186. package/src/testing/withPluginManager.stories.tsx +6 -6
  187. package/src/testing/withPluginManager.tsx +46 -19
  188. package/src/ui/components/App/App.stories.tsx +92 -0
  189. package/src/{react → ui/components/App}/App.tsx +6 -9
  190. package/src/{playground/layout → ui/components/App}/index.ts +1 -1
  191. package/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.tsx +13 -14
  192. package/src/{react → ui/components/PluginManager}/PluginManagerProvider.ts +1 -1
  193. package/src/ui/components/PluginManager/index.ts +5 -0
  194. package/src/{react/Surface.stories.tsx → ui/components/Surface/SurfaceComponent.stories.tsx} +18 -16
  195. package/src/{react/Surface.tsx → ui/components/Surface/SurfaceComponent.tsx} +36 -56
  196. package/src/{react → ui/components/Surface}/SurfaceInfo.tsx +2 -2
  197. package/src/ui/components/Surface/context.ts +12 -0
  198. package/src/ui/components/Surface/index.ts +20 -0
  199. package/src/{common/surface.ts → ui/components/Surface/types.ts} +22 -25
  200. package/src/ui/components/index.ts +7 -0
  201. package/src/ui/hooks/index.ts +10 -0
  202. package/src/ui/hooks/useApp.test.tsx +159 -0
  203. package/src/{react → ui/hooks}/useApp.tsx +39 -29
  204. package/src/{react → ui/hooks}/useCapabilities.ts +9 -5
  205. package/src/{react → ui/hooks}/useOperationResolver.ts +5 -5
  206. package/src/{react/common.ts → ui/hooks/useSettingsState.ts} +0 -11
  207. package/src/ui/hooks/useSurface.ts +13 -0
  208. package/src/ui/index.ts +6 -0
  209. package/tsconfig.json +2 -29
  210. package/tsconfig.node.json +1 -3
  211. package/typedoc.json +2 -4
  212. package/vitest.config.ts +1 -1
  213. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs +0 -149
  214. package/dist/lib/browser/app-graph-builder-M2VPYQC6.mjs.map +0 -7
  215. package/dist/lib/browser/capability-7PCNSWBT.mjs.map +0 -7
  216. package/dist/lib/browser/capability-KP3PFEXD.mjs +0 -31
  217. package/dist/lib/browser/capability-KP3PFEXD.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-7IQHKD4U.mjs.map +0 -7
  219. package/dist/lib/browser/chunk-BLQJSGL3.mjs +0 -732
  220. package/dist/lib/browser/chunk-BLQJSGL3.mjs.map +0 -7
  221. package/dist/lib/browser/chunk-FHQTHCX7.mjs +0 -8
  222. package/dist/lib/browser/chunk-FMZN33N4.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-H4WPA7U7.mjs +0 -77
  224. package/dist/lib/browser/chunk-H4WPA7U7.mjs.map +0 -7
  225. package/dist/lib/browser/chunk-TCLLRCS3.mjs.map +0 -7
  226. package/dist/lib/browser/chunk-XYNO72GQ.mjs.map +0 -7
  227. package/dist/lib/browser/common/index.mjs +0 -38
  228. package/dist/lib/browser/invoker-capability-SZRSTHEH.mjs.map +0 -7
  229. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs +0 -64
  230. package/dist/lib/browser/operation-resolver-6MP2MYOY.mjs.map +0 -7
  231. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs +0 -150
  232. package/dist/lib/node-esm/app-graph-builder-LROHGJEM.mjs.map +0 -7
  233. package/dist/lib/node-esm/capability-CFLQ2QQU.mjs.map +0 -7
  234. package/dist/lib/node-esm/capability-RCUNM2M7.mjs +0 -32
  235. package/dist/lib/node-esm/capability-RCUNM2M7.mjs.map +0 -7
  236. package/dist/lib/node-esm/chunk-663A54LQ.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-6WXBT3EC.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs +0 -733
  239. package/dist/lib/node-esm/chunk-GQEBIGKD.mjs.map +0 -7
  240. package/dist/lib/node-esm/chunk-GT6OKM5I.mjs.map +0 -7
  241. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs +0 -78
  242. package/dist/lib/node-esm/chunk-XR6NMKEP.mjs.map +0 -7
  243. package/dist/lib/node-esm/chunk-XYQTBFPA.mjs.map +0 -7
  244. package/dist/lib/node-esm/common/index.mjs +0 -39
  245. package/dist/lib/node-esm/invoker-capability-PNMA5JOS.mjs.map +0 -7
  246. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs +0 -65
  247. package/dist/lib/node-esm/operation-resolver-7YWDMTNU.mjs.map +0 -7
  248. package/dist/types/src/cli.d.ts.map +0 -1
  249. package/dist/types/src/common/activation-event.d.ts +0 -66
  250. package/dist/types/src/common/activation-event.d.ts.map +0 -1
  251. package/dist/types/src/common/capability.d.ts +0 -265
  252. package/dist/types/src/common/capability.d.ts.map +0 -1
  253. package/dist/types/src/common/collaboration.d.ts +0 -26
  254. package/dist/types/src/common/collaboration.d.ts.map +0 -1
  255. package/dist/types/src/common/file.d.ts +0 -14
  256. package/dist/types/src/common/file.d.ts.map +0 -1
  257. package/dist/types/src/common/graph.d.ts +0 -21
  258. package/dist/types/src/common/graph.d.ts.map +0 -1
  259. package/dist/types/src/common/plugin.d.ts +0 -201
  260. package/dist/types/src/common/plugin.d.ts.map +0 -1
  261. package/dist/types/src/common/surface.d.ts.map +0 -1
  262. package/dist/types/src/playground/debug/Debug.d.ts +0 -8
  263. package/dist/types/src/playground/debug/Debug.d.ts.map +0 -1
  264. package/dist/types/src/playground/debug/index.d.ts +0 -2
  265. package/dist/types/src/playground/debug/index.d.ts.map +0 -1
  266. package/dist/types/src/playground/debug/plugin.d.ts +0 -3
  267. package/dist/types/src/playground/debug/plugin.d.ts.map +0 -1
  268. package/dist/types/src/playground/generator/Main.d.ts +0 -8
  269. package/dist/types/src/playground/generator/Main.d.ts.map +0 -1
  270. package/dist/types/src/playground/generator/Toolbar.d.ts +0 -8
  271. package/dist/types/src/playground/generator/Toolbar.d.ts.map +0 -1
  272. package/dist/types/src/playground/generator/generator.d.ts +0 -19
  273. package/dist/types/src/playground/generator/generator.d.ts.map +0 -1
  274. package/dist/types/src/playground/generator/index.d.ts +0 -3
  275. package/dist/types/src/playground/generator/index.d.ts.map +0 -1
  276. package/dist/types/src/playground/generator/plugin.d.ts +0 -3
  277. package/dist/types/src/playground/generator/plugin.d.ts.map +0 -1
  278. package/dist/types/src/playground/layout/Layout.d.ts +0 -10
  279. package/dist/types/src/playground/layout/Layout.d.ts.map +0 -1
  280. package/dist/types/src/playground/layout/index.d.ts +0 -2
  281. package/dist/types/src/playground/layout/index.d.ts.map +0 -1
  282. package/dist/types/src/playground/layout/plugin.d.ts +0 -3
  283. package/dist/types/src/playground/layout/plugin.d.ts.map +0 -1
  284. package/dist/types/src/playground/logger/Toolbar.d.ts +0 -8
  285. package/dist/types/src/playground/logger/Toolbar.d.ts.map +0 -1
  286. package/dist/types/src/playground/logger/index.d.ts +0 -2
  287. package/dist/types/src/playground/logger/index.d.ts.map +0 -1
  288. package/dist/types/src/playground/logger/plugin.d.ts +0 -3
  289. package/dist/types/src/playground/logger/plugin.d.ts.map +0 -1
  290. package/dist/types/src/playground/logger/schema.d.ts +0 -27
  291. package/dist/types/src/playground/logger/schema.d.ts.map +0 -1
  292. package/dist/types/src/playground/playground.stories.d.ts +0 -11
  293. package/dist/types/src/playground/playground.stories.d.ts.map +0 -1
  294. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts +0 -3
  295. package/dist/types/src/plugin-settings/SettingsPlugin.d.ts.map +0 -1
  296. package/dist/types/src/plugin-settings/actions.d.ts +0 -61
  297. package/dist/types/src/plugin-settings/actions.d.ts.map +0 -1
  298. package/dist/types/src/plugin-settings/app-graph-builder.d.ts +0 -6
  299. package/dist/types/src/plugin-settings/app-graph-builder.d.ts.map +0 -1
  300. package/dist/types/src/plugin-settings/index.d.ts +0 -3
  301. package/dist/types/src/plugin-settings/index.d.ts.map +0 -1
  302. package/dist/types/src/plugin-settings/meta.d.ts +0 -3
  303. package/dist/types/src/plugin-settings/meta.d.ts.map +0 -1
  304. package/dist/types/src/plugin-settings/operation-resolver.d.ts +0 -6
  305. package/dist/types/src/plugin-settings/operation-resolver.d.ts.map +0 -1
  306. package/dist/types/src/plugin-settings/translations.d.ts +0 -11
  307. package/dist/types/src/plugin-settings/translations.d.ts.map +0 -1
  308. package/dist/types/src/react/App.d.ts.map +0 -1
  309. package/dist/types/src/react/App.stories.d.ts.map +0 -1
  310. package/dist/types/src/react/DefaultFallback.d.ts +0 -8
  311. package/dist/types/src/react/DefaultFallback.d.ts.map +0 -1
  312. package/dist/types/src/react/ErrorBoundary.d.ts +0 -30
  313. package/dist/types/src/react/ErrorBoundary.d.ts.map +0 -1
  314. package/dist/types/src/react/PluginManagerContext.stories.d.ts.map +0 -1
  315. package/dist/types/src/react/PluginManagerProvider.d.ts.map +0 -1
  316. package/dist/types/src/react/Surface.d.ts +0 -14
  317. package/dist/types/src/react/Surface.d.ts.map +0 -1
  318. package/dist/types/src/react/Surface.stories.d.ts.map +0 -1
  319. package/dist/types/src/react/SurfaceInfo.d.ts.map +0 -1
  320. package/dist/types/src/react/common.d.ts.map +0 -1
  321. package/dist/types/src/react/index.d.ts +0 -9
  322. package/dist/types/src/react/index.d.ts.map +0 -1
  323. package/dist/types/src/react/types.d.ts +0 -12
  324. package/dist/types/src/react/types.d.ts.map +0 -1
  325. package/dist/types/src/react/useApp.d.ts.map +0 -1
  326. package/dist/types/src/react/useCapabilities.d.ts.map +0 -1
  327. package/dist/types/src/react/useLoading.d.ts.map +0 -1
  328. package/dist/types/src/react/useOperationResolver.d.ts.map +0 -1
  329. package/src/common/activation-event.ts +0 -99
  330. package/src/common/capability.ts +0 -343
  331. package/src/common/collaboration.ts +0 -31
  332. package/src/common/file.ts +0 -22
  333. package/src/common/graph.ts +0 -30
  334. package/src/common/plugin.ts +0 -364
  335. package/src/playground/debug/Debug.tsx +0 -49
  336. package/src/playground/debug/plugin.ts +0 -16
  337. package/src/playground/generator/Main.tsx +0 -80
  338. package/src/playground/generator/Toolbar.tsx +0 -57
  339. package/src/playground/generator/generator.ts +0 -48
  340. package/src/playground/generator/index.ts +0 -6
  341. package/src/playground/generator/plugin.ts +0 -21
  342. package/src/playground/layout/Layout.tsx +0 -37
  343. package/src/playground/layout/plugin.ts +0 -18
  344. package/src/playground/logger/Toolbar.tsx +0 -33
  345. package/src/playground/logger/index.ts +0 -5
  346. package/src/playground/logger/plugin.ts +0 -42
  347. package/src/playground/logger/schema.ts +0 -22
  348. package/src/playground/playground.stories.tsx +0 -54
  349. package/src/plugin-settings/SettingsPlugin.ts +0 -19
  350. package/src/plugin-settings/actions.ts +0 -64
  351. package/src/plugin-settings/app-graph-builder.ts +0 -140
  352. package/src/plugin-settings/index.ts +0 -6
  353. package/src/plugin-settings/meta.ts +0 -10
  354. package/src/plugin-settings/operation-resolver.ts +0 -55
  355. package/src/plugin-settings/translations.ts +0 -19
  356. package/src/react/App.stories.tsx +0 -63
  357. package/src/react/DefaultFallback.tsx +0 -26
  358. package/src/react/ErrorBoundary.tsx +0 -56
  359. package/src/react/index.ts +0 -14
  360. package/src/react/types.ts +0 -27
  361. /package/dist/lib/{node-esm/react/index.mjs.map → browser/chunk-YAFEA4GV.mjs.map} +0 -0
  362. /package/dist/lib/{node-esm/common/index.mjs.map → browser/common/activation-events.mjs.map} +0 -0
  363. /package/dist/lib/browser/{react/index.mjs.map → common/capabilities.mjs.map} +0 -0
  364. /package/dist/lib/browser/{common → ui}/index.mjs.map +0 -0
  365. /package/dist/types/src/{react → ui/components/PluginManager}/PluginManagerContext.stories.d.ts +0 -0
  366. /package/dist/types/src/{react → ui/components/Surface}/SurfaceInfo.d.ts +0 -0
  367. /package/dist/types/src/{react → ui/hooks}/useLoading.d.ts +0 -0
  368. /package/src/{react → ui/hooks}/useLoading.tsx +0 -0
@@ -6,7 +6,7 @@ import * as Effect from 'effect/Effect';
6
6
 
7
7
  import { OperationInvoker } from '@dxos/operation';
8
8
 
9
- import * as Common from '../common';
9
+ import { ActivationEvents, Capabilities } from '../common';
10
10
  import { Capability, Plugin } from '../core';
11
11
 
12
12
  //
@@ -20,14 +20,14 @@ export default Capability.makeModule(
20
20
  const pluginManager = yield* Plugin.Service;
21
21
 
22
22
  // Get the ManagedRuntime capability (should be available since we activate after ManagedRuntimeReady).
23
- const managedRuntimes = yield* Capability.getAll(Common.Capability.ManagedRuntime);
23
+ const managedRuntimes = yield* Capability.getAll(Capabilities.ManagedRuntime);
24
24
  const managedRuntime = managedRuntimes.length > 0 ? managedRuntimes[0] : undefined;
25
25
 
26
26
  const invoker = OperationInvoker.make(
27
27
  () =>
28
28
  Effect.gen(function* () {
29
- yield* Plugin.activate(Common.ActivationEvent.SetupOperationResolver);
30
- return (yield* Capability.getAll(Common.Capability.OperationResolver)).flat();
29
+ yield* Plugin.activate(ActivationEvents.SetupOperationResolver);
30
+ return (yield* Capability.getAll(Capabilities.OperationResolver)).flat();
31
31
  }).pipe(
32
32
  Effect.provideService(Capability.Service, capabilityManager),
33
33
  Effect.provideService(Plugin.Service, pluginManager),
@@ -35,6 +35,6 @@ export default Capability.makeModule(
35
35
  managedRuntime,
36
36
  );
37
37
 
38
- return Capability.contributes(Common.Capability.OperationInvoker, invoker);
38
+ return Capability.contributes(Capabilities.OperationInvoker, invoker);
39
39
  }),
40
40
  );
@@ -5,7 +5,7 @@
5
5
  import { type Plugin } from '../core';
6
6
 
7
7
  export const meta: Plugin.Meta = {
8
- id: 'dxos.org/plugin/operation',
8
+ id: 'org.dxos.plugin.operation',
9
9
  name: 'Operation Plugin',
10
10
  description: 'Provides operation invocation, undo registry, and history tracking.',
11
11
  };
@@ -2,7 +2,7 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import * as Common from '../common';
5
+ import { ActivationEvents } from '../common';
6
6
  import { Capability, Plugin } from '../core';
7
7
 
8
8
  import { meta } from './meta';
@@ -11,9 +11,9 @@ const ManagedRuntimeCapability = Capability.lazy('ManagedRuntime', () => import(
11
11
 
12
12
  export const RuntimePlugin = Plugin.define(meta).pipe(
13
13
  Plugin.addModule({
14
- activatesOn: Common.ActivationEvent.Startup,
15
- activatesBefore: [Common.ActivationEvent.SetupLayer],
16
- activatesAfter: [Common.ActivationEvent.ManagedRuntimeReady],
14
+ activatesOn: ActivationEvents.Startup,
15
+ activatesBefore: [ActivationEvents.SetupLayer],
16
+ activatesAfter: [ActivationEvents.ManagedRuntimeReady],
17
17
  activate: ManagedRuntimeCapability,
18
18
  }),
19
19
  Plugin.make,
@@ -6,7 +6,7 @@ import * as Effect from 'effect/Effect';
6
6
  import * as Layer from 'effect/Layer';
7
7
  import * as ManagedRuntime from 'effect/ManagedRuntime';
8
8
 
9
- import * as Common from '../common';
9
+ import { ActivationEvents, Capabilities } from '../common';
10
10
  import { Capability, Plugin } from '../core';
11
11
 
12
12
  //
@@ -22,10 +22,10 @@ export default Capability.makeModule(
22
22
  const pluginManager = yield* Plugin.Service;
23
23
 
24
24
  // Trigger setup event so plugins can contribute their layers.
25
- yield* Plugin.activate(Common.ActivationEvent.SetupLayer);
25
+ yield* Plugin.activate(ActivationEvents.SetupLayer);
26
26
 
27
27
  // Gather all contributed layers.
28
- const layers = yield* Capability.getAll(Common.Capability.Layer);
28
+ const layers = yield* Capability.getAll(Capabilities.Layer);
29
29
 
30
30
  // Create layers that provide Capability.Service and Plugin.Service.
31
31
  const capabilityServiceLayer = Layer.succeed(Capability.Service, capabilityManager);
@@ -46,8 +46,8 @@ export default Capability.makeModule(
46
46
  );
47
47
 
48
48
  // Create the managed runtime from the composed layer.
49
- const runtime = ManagedRuntime.make(composedLayer) as Common.Capability.ManagedRuntime;
49
+ const runtime = ManagedRuntime.make(composedLayer) as Capabilities.ManagedRuntime;
50
50
 
51
- return Capability.contributes(Common.Capability.ManagedRuntime, runtime);
51
+ return Capability.contributes(Capabilities.ManagedRuntime, runtime);
52
52
  }),
53
53
  );
@@ -5,7 +5,7 @@
5
5
  import { type Plugin } from '../core';
6
6
 
7
7
  export const meta: Plugin.Meta = {
8
- id: 'dxos.org/plugin/runtime',
8
+ id: 'org.dxos.plugin.runtime',
9
9
  name: 'Runtime Plugin',
10
10
  description: 'Provides a managed Effect runtime by composing contributed layers.',
11
11
  };
@@ -7,7 +7,7 @@ import * as Layer from 'effect/Layer';
7
7
 
8
8
  import { invariant } from '@dxos/invariant';
9
9
 
10
- import * as Common from '../common';
10
+ import { ActivationEvents, Capabilities } from '../common';
11
11
  import { Plugin, PluginManager } from '../core';
12
12
 
13
13
  /**
@@ -34,18 +34,18 @@ export const fromPlugins = (plugins: Plugin.Plugin[]) =>
34
34
  });
35
35
 
36
36
  manager.capabilities.contribute({
37
- interface: Common.Capability.PluginManager,
37
+ interface: Capabilities.PluginManager,
38
38
  implementation: manager,
39
- module: 'dxos.org/app-framework/plugin-manager',
39
+ module: 'org.dxos.app-framework.plugin-manager',
40
40
  });
41
41
 
42
42
  manager.capabilities.contribute({
43
- interface: Common.Capability.AtomRegistry,
43
+ interface: Capabilities.AtomRegistry,
44
44
  implementation: manager.registry,
45
- module: 'dxos.org/app-framework/atom-registry',
45
+ module: 'org.dxos.app-framework.atom-registry',
46
46
  });
47
47
 
48
- yield* manager.activate(Common.ActivationEvent.Startup);
48
+ yield* manager.activate(ActivationEvents.Startup);
49
49
 
50
50
  return manager;
51
51
  }),
@@ -7,9 +7,9 @@ import React from 'react';
7
7
 
8
8
  import { withTheme } from '@dxos/react-ui/testing';
9
9
 
10
- import * as Common from '../common';
10
+ import { Capabilities } from '../common';
11
11
  import { Capability } from '../core';
12
- import { Surface } from '../react';
12
+ import { Surface } from '../ui';
13
13
 
14
14
  import { withPluginManager } from './withPluginManager';
15
15
 
@@ -18,7 +18,7 @@ const DefaultStory = () => {
18
18
  return (
19
19
  <div>
20
20
  <div>Hello</div>
21
- <Surface role='main' />
21
+ <Surface.Surface role='main' />
22
22
  </div>
23
23
  );
24
24
  };
@@ -27,12 +27,12 @@ const meta = {
27
27
  title: 'sdk/app-framework/withPluginManager',
28
28
  render: DefaultStory,
29
29
  decorators: [
30
- withTheme,
30
+ withTheme(),
31
31
  withPluginManager({
32
32
  capabilities: [
33
33
  Capability.contributes(
34
- Common.Capability.ReactSurface,
35
- Common.createSurface({
34
+ Capabilities.ReactSurface,
35
+ Surface.create({
36
36
  id: 'test',
37
37
  role: 'main',
38
38
  component: ({ role }) => <span>{JSON.stringify({ role })}</span>,
@@ -4,15 +4,16 @@
4
4
 
5
5
  import { type Decorator, type StoryContext } from '@storybook/react';
6
6
  import * as Effect from 'effect/Effect';
7
- import React, { useEffect, useMemo } from 'react';
7
+ import React, { useEffect, useState } from 'react';
8
8
 
9
9
  import { raise } from '@dxos/debug';
10
+ import { runAndForwardErrors } from '@dxos/effect';
10
11
  import { useAsyncEffect } from '@dxos/react-hooks';
11
12
  import { type MaybeProvider, getProviderValue } from '@dxos/util';
12
13
 
13
- import * as Common from '../common';
14
+ import { ActivationEvents, Capabilities } from '../common';
14
15
  import { type ActivationEvent, Capability, type CapabilityManager, Plugin, PluginManager } from '../core';
15
- import { type UseAppOptions, useApp } from '../react';
16
+ import { type UseAppOptions, useApp } from '../ui';
16
17
 
17
18
  /**
18
19
  * @internal
@@ -43,6 +44,13 @@ export const setupPluginManager = ({
43
44
  return pluginManager;
44
45
  };
45
46
 
47
+ type ManagedPluginManagerState = {
48
+ fireEvents?: (ActivationEvent.ActivationEvent | string)[];
49
+ pluginManager: PluginManager.PluginManager;
50
+ setupEvents?: ActivationEvent.ActivationEvent[];
51
+ storyId: string;
52
+ };
53
+
46
54
  export type WithPluginManagerOptions = UseAppOptions & {
47
55
  /** @deprecated */
48
56
  capabilities?: MaybeProvider<Capability.Any[], CapabilityManager.CapabilityManager>;
@@ -60,40 +68,59 @@ export type WithPluginManagerInitializer<Args = void> =
60
68
  */
61
69
  export const withPluginManager = <Args,>(init: WithPluginManagerInitializer<Args> = {}): Decorator => {
62
70
  return (Story, context) => {
71
+ const storyId = context.id;
63
72
  const options = typeof init === 'function' ? init(context as any) : init;
64
- const pluginManager = useMemo(() => setupPluginManager(options), [init]);
73
+ const [managerState, setManagerState] = useState<ManagedPluginManagerState>();
65
74
 
66
- // Set-up root capability.
75
+ // Storybook replaces the full context object often, so key manager ownership by story id.
67
76
  useEffect(() => {
68
- const capability = Capability.contributes(Common.Capability.ReactRoot, {
69
- id: context.id,
77
+ const pluginManager = setupPluginManager(options);
78
+
79
+ const capability = Capability.contributes(Capabilities.ReactRoot, {
80
+ id: storyId,
70
81
  root: () => <Story />,
71
82
  });
72
83
 
73
84
  pluginManager.capabilities.contribute({
74
85
  ...capability,
75
- module: 'dxos.org/app-framework/withPluginManager',
86
+ module: 'org.dxos.app-framework.with-plugin-manager',
87
+ });
88
+
89
+ setManagerState({
90
+ pluginManager,
91
+ setupEvents: options.setupEvents,
92
+ fireEvents: options.fireEvents,
93
+ storyId,
76
94
  });
77
95
 
78
96
  return () => {
79
97
  pluginManager.capabilities.remove(capability.interface, capability.implementation);
98
+ void runAndForwardErrors(pluginManager.shutdown());
80
99
  };
81
- }, [pluginManager, context]);
100
+ }, [storyId, init]);
82
101
 
83
- // Fire events.
84
- useAsyncEffect(async () => {
85
- await Promise.all(options.fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
86
- }, [pluginManager]);
102
+ // Avoid mounting useApp with a stale manager from the previous story.
103
+ if (!managerState || managerState.storyId !== storyId) {
104
+ return <></>;
105
+ }
87
106
 
88
- // Create app.
89
- const App = useApp({ pluginManager });
90
-
91
- return <App />;
107
+ return <WithPluginManagerApp {...managerState} />;
92
108
  };
93
109
  };
94
110
 
111
+ const WithPluginManagerApp = ({ fireEvents, pluginManager, setupEvents, storyId }: ManagedPluginManagerState) => {
112
+ // Fire deprecated events only after the effect-owned manager for this story exists.
113
+ useAsyncEffect(async () => {
114
+ await Promise.all(fireEvents?.map((event) => pluginManager.activate(event)) ?? []);
115
+ }, [fireEvents, pluginManager, storyId]);
116
+
117
+ const App = useApp({ pluginManager, setupEvents });
118
+
119
+ return <App />;
120
+ };
121
+
95
122
  const storyMeta = {
96
- id: 'dxos.org/app-framework/story',
123
+ id: 'org.dxos.app-framework.story',
97
124
  name: 'Story',
98
125
  };
99
126
 
@@ -102,7 +129,7 @@ const storyMeta = {
102
129
  const StoryPlugin = Plugin.define(storyMeta).pipe(
103
130
  Plugin.addModule({
104
131
  id: 'Story',
105
- activatesOn: Common.ActivationEvent.Startup,
132
+ activatesOn: ActivationEvents.Startup,
106
133
  activate: () => Effect.succeed([]),
107
134
  }),
108
135
  Plugin.make,
@@ -0,0 +1,92 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import * as Effect from 'effect/Effect';
7
+ import React, { useEffect } from 'react';
8
+
9
+ import { withTheme } from '@dxos/react-ui/testing';
10
+
11
+ import { ActivationEvents, Capabilities } from '../../../common';
12
+ import { Capability, Plugin } from '../../../core';
13
+ import { useApp } from '../../hooks';
14
+
15
+ // Minimal plugin that contributes a ReactRoot.
16
+ const TestPlugin = Plugin.define<{ error?: boolean }>({
17
+ id: 'org.dxos.plugin.test',
18
+ name: 'Test Plugin',
19
+ }).pipe(
20
+ Plugin.addModule(({ error }) => ({
21
+ id: 'TestMain',
22
+ activatesOn: ActivationEvents.Startup,
23
+ activate: () =>
24
+ Effect.succeed([
25
+ Capability.contributes(Capabilities.ReactRoot, {
26
+ id: 'org.dxos.plugin.test.root',
27
+ root: () => {
28
+ useEffect(() => {
29
+ let t: NodeJS.Timeout;
30
+ if (error) {
31
+ console.log('Ticking...');
32
+ t = setTimeout(() => {
33
+ console.log('Bang!');
34
+ throw new Error('Runtime error');
35
+ }, 3_000);
36
+ }
37
+
38
+ return () => clearTimeout(t);
39
+ }, [error]);
40
+
41
+ return <h1 className='text-lg'>App Started</h1>;
42
+ },
43
+ }),
44
+ ]),
45
+ })),
46
+ Plugin.make,
47
+ );
48
+
49
+ const core = [TestPlugin.meta.id];
50
+
51
+ type StoryProps = { plugins?: Plugin.Plugin[] };
52
+
53
+ const DefaultStory = ({ plugins }: StoryProps) => {
54
+ const App = useApp({
55
+ plugins,
56
+ core,
57
+ placeholder: () => {
58
+ return (
59
+ <div role='none' className='text-description'>
60
+ Loading...
61
+ </div>
62
+ );
63
+ },
64
+ });
65
+
66
+ return <App />;
67
+ };
68
+
69
+ const meta = {
70
+ title: 'sdk/app-framework/App',
71
+ render: DefaultStory,
72
+ decorators: [withTheme()],
73
+ parameters: {
74
+ layout: 'centered',
75
+ },
76
+ } satisfies Meta;
77
+
78
+ export default meta;
79
+
80
+ type Story = StoryObj<typeof meta>;
81
+
82
+ export const Default: Story = {
83
+ args: {
84
+ plugins: [TestPlugin({})],
85
+ },
86
+ };
87
+
88
+ export const WithError: Story = {
89
+ args: {
90
+ plugins: [TestPlugin({ error: true })],
91
+ },
92
+ };
@@ -4,12 +4,9 @@
4
4
 
5
5
  import React, { type PropsWithChildren } from 'react';
6
6
 
7
- import * as Common from '../common';
8
- import { topologicalSort } from '../helpers';
9
-
10
- import { type UseAppOptions } from './useApp';
11
- import { useCapabilities } from './useCapabilities';
12
- import { LoadingState, useLoading } from './useLoading';
7
+ import { Capabilities } from '../../../common';
8
+ import { topologicalSort } from '../../../helpers';
9
+ import { LoadingState, type UseAppOptions, useCapabilities, useLoading } from '../../hooks';
13
10
 
14
11
  export type AppProps = Pick<UseAppOptions, 'placeholder' | 'debounce'> & {
15
12
  ready: boolean;
@@ -17,8 +14,8 @@ export type AppProps = Pick<UseAppOptions, 'placeholder' | 'debounce'> & {
17
14
  };
18
15
 
19
16
  export const App = ({ placeholder: Placeholder, ready, error, debounce }: AppProps) => {
20
- const reactContexts = useCapabilities(Common.Capability.ReactContext);
21
- const reactRoots = useCapabilities(Common.Capability.ReactRoot);
17
+ const reactContexts = useCapabilities(Capabilities.ReactContext);
18
+ const reactRoots = useCapabilities(Capabilities.ReactRoot);
22
19
  const stage = useLoading(ready, debounce);
23
20
 
24
21
  if (error) {
@@ -45,7 +42,7 @@ export const App = ({ placeholder: Placeholder, ready, error, debounce }: AppPro
45
42
  );
46
43
  };
47
44
 
48
- const composeContexts = (contexts: Common.Capability.ReactContext[]) => {
45
+ const composeContexts = (contexts: Capabilities.ReactContext[]) => {
49
46
  if (contexts.length === 0) {
50
47
  return ({ children }: PropsWithChildren) => <>{children}</>;
51
48
  }
@@ -2,4 +2,4 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './plugin';
5
+ export * from './App';
@@ -7,14 +7,13 @@ import { type Meta, type StoryObj } from '@storybook/react-vite';
7
7
  import * as Effect from 'effect/Effect';
8
8
  import React, { useEffect, useMemo, useState } from 'react';
9
9
 
10
- import { withTheme } from '@dxos/react-ui/testing';
10
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
11
11
  import { useWebComponentContext } from '@dxos/web-context-react';
12
12
 
13
- import * as Common from '../common';
14
- import { PluginManagerContext } from '../context';
15
- import { Capability, Plugin } from '../core';
16
-
17
- import { useApp } from './useApp';
13
+ import { ActivationEvents, Capabilities } from '../../../common';
14
+ import { PluginManagerContext } from '../../../context';
15
+ import { Capability, Plugin } from '../../../core';
16
+ import { useApp } from '../../hooks';
18
17
 
19
18
  // Define the Counter capability
20
19
  const Counter = Capability.make<{ count: number; increment: () => void }>('example/counter');
@@ -79,7 +78,7 @@ const CounterComponent = () => {
79
78
  }, [counter]);
80
79
 
81
80
  if (!manager) {
82
- return <div className='p-4 text-red-500'>Error: Context not found</div>;
81
+ return <div className='p-4 text-error-text'>Error: Context not found</div>;
83
82
  }
84
83
 
85
84
  return (
@@ -105,7 +104,7 @@ const CounterComponent = () => {
105
104
  <CountStatus />
106
105
  </div>
107
106
 
108
- <div className='mt-8 pt-4 border-bs border-neutral-200 dark:border-neutral-700 text-center'>
107
+ <div className='mt-8 pt-4 border-t border-neutral-200 dark:border-neutral-700 text-center'>
109
108
  <p className='text-sm text-neutral-500 dark:text-neutral-400'>
110
109
  This component accesses the <code>PluginManager</code> via <code>useWebComponentContext</code>.
111
110
  </p>
@@ -117,12 +116,12 @@ const CounterComponent = () => {
117
116
 
118
117
  // Plugin that provides the Counter capability and renders the UI
119
118
  const CounterPlugin = Plugin.define({
120
- id: 'dxos.org/plugin/counter',
119
+ id: 'org.dxos.plugin.counter',
121
120
  name: 'Counter Plugin',
122
121
  }).pipe(
123
122
  Plugin.addModule({
124
123
  id: 'CounterMain',
125
- activatesOn: Common.ActivationEvent.Startup,
124
+ activatesOn: ActivationEvents.Startup,
126
125
  activate: () => {
127
126
  const listeners = new Set<() => void>();
128
127
  const counter = {
@@ -142,8 +141,8 @@ const CounterPlugin = Plugin.define({
142
141
  Capability.contributes(Counter, counter),
143
142
 
144
143
  // Contribute the UI
145
- Capability.contributes(Common.Capability.ReactRoot, {
146
- id: 'dxos.org/plugin/counter/root',
144
+ Capability.contributes(Capabilities.ReactRoot, {
145
+ id: 'org.dxos.plugin.counter.root',
147
146
  root: CounterComponent,
148
147
  }),
149
148
  ]);
@@ -153,7 +152,7 @@ const CounterPlugin = Plugin.define({
153
152
  )();
154
153
 
155
154
  const plugins = [CounterPlugin];
156
- const core = ['dxos.org/plugin/counter'];
155
+ const core = ['org.dxos.plugin.counter'];
157
156
  const placeholder = () => (
158
157
  <div className='flex h-screen items-center justify-center p-4 text-lg text-neutral-500'>
159
158
  Initializing Application...
@@ -173,7 +172,7 @@ const DefaultStory = () => {
173
172
  const meta = {
174
173
  title: 'sdk/app-framework/PluginManagerContext',
175
174
  render: DefaultStory,
176
- decorators: [withTheme],
175
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' })],
177
176
  parameters: {
178
177
  layout: 'fullscreen',
179
178
  },
@@ -6,7 +6,7 @@ import { createContext, useContext } from 'react';
6
6
 
7
7
  import { raise } from '@dxos/debug';
8
8
 
9
- import { type PluginManager } from '../core';
9
+ import { type PluginManager } from '../../../core';
10
10
 
11
11
  const PluginManagerContext = createContext<PluginManager.PluginManager | undefined>(undefined);
12
12
 
@@ -0,0 +1,5 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ export * from './PluginManagerProvider';
@@ -7,14 +7,15 @@ import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'rea
7
7
 
8
8
  import { faker } from '@dxos/random';
9
9
  import { List, ListItem, Toolbar } from '@dxos/react-ui';
10
- import { withTheme } from '@dxos/react-ui/testing';
10
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
11
11
  import { type ColorStyles, getHashStyles, mx } from '@dxos/ui-theme';
12
12
 
13
- import * as Common from '../common';
14
- import { withPluginManager } from '../testing';
13
+ import { Capabilities } from '../../../common';
14
+ import { withPluginManager } from '../../../testing';
15
+ import { usePluginManager } from '../PluginManager';
15
16
 
16
- import { usePluginManager } from './PluginManagerProvider';
17
- import { Surface, useSurfaces } from './Surface';
17
+ import { SurfaceComponent, useSurfaces } from './SurfaceComponent';
18
+ import { create } from './types';
18
19
 
19
20
  type TestComponentProps = {
20
21
  id: string;
@@ -24,7 +25,7 @@ type TestComponentProps = {
24
25
  const TestComponent = forwardRef<HTMLDivElement, TestComponentProps>(({ styles, id }, forwardedRef) => {
25
26
  return (
26
27
  <div
27
- className={mx('flex justify-center items-center border rounded', styles.surface, styles.border)}
28
+ className={mx('flex justify-center items-center border rounded-sm', styles.surface, styles.border)}
28
29
  ref={forwardedRef}
29
30
  >
30
31
  <span className={mx('dx-tag font-mono text-lg', styles.text)}>{id}</span>
@@ -40,10 +41,11 @@ const DefaultStory = () => {
40
41
  const handleAdd = useCallback(() => {
41
42
  const id = `test-${faker.number.int({ min: 0, max: 1_000 })}`;
42
43
  const styles = getHashStyles(id);
44
+
43
45
  manager.capabilities.contribute({
44
46
  module: 'test',
45
- interface: Common.Capability.ReactSurface,
46
- implementation: Common.createSurface({
47
+ interface: Capabilities.ReactSurface,
48
+ implementation: create({
47
49
  id,
48
50
  role: 'item',
49
51
  filter: (data): data is any => (data as any)?.id === id,
@@ -61,8 +63,8 @@ const DefaultStory = () => {
61
63
  const handleError = useCallback(() => {
62
64
  manager.capabilities.contribute({
63
65
  module: 'error',
64
- interface: Common.Capability.ReactSurface,
65
- implementation: Common.createSurface({
66
+ interface: Capabilities.ReactSurface,
67
+ implementation: create({
66
68
  id: 'error',
67
69
  role: 'item',
68
70
  filter: (data): data is any => (data as any)?.id === 'error',
@@ -86,7 +88,7 @@ const DefaultStory = () => {
86
88
  }
87
89
 
88
90
  return (
89
- <div className='flex justify-center items-center border border-roseFill rounded'>
91
+ <div className='flex justify-center items-center border border-rose-fill rounded-sm'>
90
92
  <span className='font-mono'>Ticking... {count}</span>
91
93
  </div>
92
94
  );
@@ -103,15 +105,15 @@ const DefaultStory = () => {
103
105
  }, [ref]);
104
106
 
105
107
  return (
106
- <div className='flex flex-col bs-full overflow-hidden'>
108
+ <div className='flex flex-col h-full overflow-hidden'>
107
109
  <Toolbar.Root>
108
110
  <Toolbar.Button onClick={handleAdd}>Add</Toolbar.Button>
109
111
  <Toolbar.Button onClick={handleSelect}>Pick</Toolbar.Button>
110
112
  <Toolbar.Button onClick={handleError}>Error</Toolbar.Button>
111
113
  </Toolbar.Root>
112
- <div className='grid grid-cols-2 bs-full gap-4 overflow-hidden'>
113
- <Surface role='item' data={selected ? { id: selected } : undefined} limit={1} ref={ref} />
114
- <div className='overflow-y-auto bs-full'>
114
+ <div className='grid grid-cols-2 h-full gap-4 overflow-hidden'>
115
+ <SurfaceComponent role='item' data={selected ? { id: selected } : undefined} limit={1} ref={ref} />
116
+ <div className='overflow-y-auto h-full'>
115
117
  <List>
116
118
  {surfaces.map((surface) => (
117
119
  <ListItem.Root key={surface.id} id={surface.id}>
@@ -128,7 +130,7 @@ const DefaultStory = () => {
128
130
  const meta = {
129
131
  title: 'sdk/app-framework/Surface',
130
132
  render: DefaultStory,
131
- decorators: [withTheme, withPluginManager({ capabilities: [] })],
133
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withPluginManager({ capabilities: [] })],
132
134
  parameters: {
133
135
  layout: 'fullscreen',
134
136
  },