@dxos/plugin-client 0.8.4-main.67995b8 → 0.8.4-main.6fa680abb7

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 (479) hide show
  1. package/dist/lib/browser/DevicesContainer-3N7ANEJ7.mjs +268 -0
  2. package/dist/lib/browser/DevicesContainer-3N7ANEJ7.mjs.map +7 -0
  3. package/dist/lib/browser/JoinDialog-VTTK7NHO.mjs +59 -0
  4. package/dist/lib/browser/JoinDialog-VTTK7NHO.mjs.map +7 -0
  5. package/dist/lib/browser/ProfileContainer-XV7OXJC2.mjs +171 -0
  6. package/dist/lib/browser/ProfileContainer-XV7OXJC2.mjs.map +7 -0
  7. package/dist/lib/browser/RecoveryCodeDialog-WO34OZEJ.mjs +60 -0
  8. package/dist/lib/browser/RecoveryCodeDialog-WO34OZEJ.mjs.map +7 -0
  9. package/dist/lib/browser/RecoveryCredentialsContainer-G22FSTIX.mjs +57 -0
  10. package/dist/lib/browser/RecoveryCredentialsContainer-G22FSTIX.mjs.map +7 -0
  11. package/dist/lib/browser/ResetDialog-W24FOWBQ.mjs +52 -0
  12. package/dist/lib/browser/ResetDialog-W24FOWBQ.mjs.map +7 -0
  13. package/dist/lib/browser/app-graph-builder-GGJKFY3X.mjs +121 -0
  14. package/dist/lib/browser/app-graph-builder-GGJKFY3X.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-FVEKZBM7.mjs +283 -0
  16. package/dist/lib/browser/chunk-FVEKZBM7.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-GSVYEYVS.mjs +18 -0
  18. package/dist/lib/browser/chunk-GSVYEYVS.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-HSFDKP5D.mjs +15 -0
  20. package/dist/lib/browser/chunk-HSFDKP5D.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-JHSBBOCI.mjs +15 -0
  22. package/dist/lib/browser/chunk-JHSBBOCI.mjs.map +7 -0
  23. package/dist/lib/browser/cli/index.mjs +1059 -0
  24. package/dist/lib/browser/cli/index.mjs.map +7 -0
  25. package/dist/lib/browser/client-BXCP3EUE.mjs +86 -0
  26. package/dist/lib/browser/client-BXCP3EUE.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +79 -82
  28. package/dist/lib/browser/index.mjs.map +4 -4
  29. package/dist/lib/browser/meta.json +1 -1
  30. package/dist/lib/browser/migrations-GKUA2ARL.mjs +25 -0
  31. package/dist/lib/browser/migrations-GKUA2ARL.mjs.map +7 -0
  32. package/dist/lib/browser/operation-resolver-VSWA74RS.mjs +299 -0
  33. package/dist/lib/browser/operation-resolver-VSWA74RS.mjs.map +7 -0
  34. package/dist/lib/browser/react-context-GZ3T5UON.mjs +26 -0
  35. package/dist/lib/browser/react-context-GZ3T5UON.mjs.map +7 -0
  36. package/dist/lib/browser/react-surface-5VZP34X3.mjs +77 -0
  37. package/dist/lib/browser/react-surface-5VZP34X3.mjs.map +7 -0
  38. package/dist/lib/browser/schema-defs-KAG6HQMI.mjs +28 -0
  39. package/dist/lib/browser/schema-defs-KAG6HQMI.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +10 -4
  41. package/dist/lib/node-esm/DevicesContainer-V7HEUPO7.mjs +269 -0
  42. package/dist/lib/node-esm/DevicesContainer-V7HEUPO7.mjs.map +7 -0
  43. package/dist/lib/node-esm/JoinDialog-XVKW4SLT.mjs +60 -0
  44. package/dist/lib/node-esm/JoinDialog-XVKW4SLT.mjs.map +7 -0
  45. package/dist/lib/node-esm/ProfileContainer-B5LJ6TMU.mjs +172 -0
  46. package/dist/lib/node-esm/ProfileContainer-B5LJ6TMU.mjs.map +7 -0
  47. package/dist/lib/node-esm/RecoveryCodeDialog-YIRGXM7N.mjs +61 -0
  48. package/dist/lib/node-esm/RecoveryCodeDialog-YIRGXM7N.mjs.map +7 -0
  49. package/dist/lib/node-esm/RecoveryCredentialsContainer-MVJEFNXX.mjs +58 -0
  50. package/dist/lib/node-esm/RecoveryCredentialsContainer-MVJEFNXX.mjs.map +7 -0
  51. package/dist/lib/node-esm/ResetDialog-GGBWSQZO.mjs +54 -0
  52. package/dist/lib/node-esm/ResetDialog-GGBWSQZO.mjs.map +7 -0
  53. package/dist/lib/node-esm/app-graph-builder-PTNZ46NN.mjs +122 -0
  54. package/dist/lib/node-esm/app-graph-builder-PTNZ46NN.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-BOTJSPCT.mjs +17 -0
  56. package/dist/lib/node-esm/chunk-BOTJSPCT.mjs.map +7 -0
  57. package/dist/lib/node-esm/chunk-DT2ZNOGU.mjs +284 -0
  58. package/dist/lib/node-esm/chunk-DT2ZNOGU.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-OFJUOKY7.mjs +20 -0
  60. package/dist/lib/node-esm/chunk-OFJUOKY7.mjs.map +7 -0
  61. package/dist/lib/node-esm/chunk-VLNCZYIC.mjs +16 -0
  62. package/dist/lib/node-esm/chunk-VLNCZYIC.mjs.map +7 -0
  63. package/dist/lib/node-esm/cli/index.mjs +1060 -0
  64. package/dist/lib/node-esm/cli/index.mjs.map +7 -0
  65. package/dist/lib/node-esm/client-EGZHGRRC.mjs +87 -0
  66. package/dist/lib/node-esm/client-EGZHGRRC.mjs.map +7 -0
  67. package/dist/lib/node-esm/index.mjs +79 -82
  68. package/dist/lib/node-esm/index.mjs.map +4 -4
  69. package/dist/lib/node-esm/meta.json +1 -1
  70. package/dist/lib/node-esm/migrations-4NEKCBGU.mjs +26 -0
  71. package/dist/lib/node-esm/migrations-4NEKCBGU.mjs.map +7 -0
  72. package/dist/lib/node-esm/operation-resolver-4GWB3YZG.mjs +300 -0
  73. package/dist/lib/node-esm/operation-resolver-4GWB3YZG.mjs.map +7 -0
  74. package/dist/lib/node-esm/react-context-T2ORT5CC.mjs +27 -0
  75. package/dist/lib/node-esm/react-context-T2ORT5CC.mjs.map +7 -0
  76. package/dist/lib/node-esm/react-surface-B65OUZYI.mjs +78 -0
  77. package/dist/lib/node-esm/react-surface-B65OUZYI.mjs.map +7 -0
  78. package/dist/lib/node-esm/schema-defs-GXQ47JZN.mjs +29 -0
  79. package/dist/lib/node-esm/schema-defs-GXQ47JZN.mjs.map +7 -0
  80. package/dist/lib/node-esm/types/index.mjs +10 -4
  81. package/dist/types/src/ClientPlugin.d.ts +2 -1
  82. package/dist/types/src/ClientPlugin.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  84. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  85. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  86. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  87. package/dist/types/src/capabilities/client/client.d.ts +8 -0
  88. package/dist/types/src/capabilities/client/client.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/client/index.d.ts +18 -0
  90. package/dist/types/src/capabilities/client/index.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/index.d.ts +7 -19
  92. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/migrations/index.d.ts +3 -0
  94. package/dist/types/src/capabilities/migrations/index.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/migrations/migrations.d.ts +5 -0
  96. package/dist/types/src/capabilities/migrations/migrations.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/operation-resolver/index.d.ts +5 -0
  98. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +8 -0
  100. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/react-context/index.d.ts +7 -0
  102. package/dist/types/src/capabilities/react-context/index.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/react-context/react-context.d.ts +10 -0
  104. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/react-surface/index.d.ts +5 -0
  106. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +9 -0
  108. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/schema-defs/index.d.ts +3 -0
  110. package/dist/types/src/capabilities/schema-defs/index.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts +5 -0
  112. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts.map +1 -0
  113. package/dist/types/src/cli/commands/config/index.d.ts +5 -0
  114. package/dist/types/src/cli/commands/config/index.d.ts.map +1 -0
  115. package/dist/types/src/cli/commands/config/view.d.ts +5 -0
  116. package/dist/types/src/cli/commands/config/view.d.ts.map +1 -0
  117. package/dist/types/src/cli/commands/device/index.d.ts +7 -0
  118. package/dist/types/src/cli/commands/device/index.d.ts.map +1 -0
  119. package/dist/types/src/cli/commands/device/info/index.d.ts +2 -0
  120. package/dist/types/src/cli/commands/device/info/index.d.ts.map +1 -0
  121. package/dist/types/src/cli/commands/device/info/info.d.ts +7 -0
  122. package/dist/types/src/cli/commands/device/info/info.d.ts.map +1 -0
  123. package/dist/types/src/cli/commands/device/info/info.test.d.ts +2 -0
  124. package/dist/types/src/cli/commands/device/info/info.test.d.ts.map +1 -0
  125. package/dist/types/src/cli/commands/device/list/index.d.ts +2 -0
  126. package/dist/types/src/cli/commands/device/list/index.d.ts.map +1 -0
  127. package/dist/types/src/cli/commands/device/list/list.d.ts +7 -0
  128. package/dist/types/src/cli/commands/device/list/list.d.ts.map +1 -0
  129. package/dist/types/src/cli/commands/device/list/list.test.d.ts +2 -0
  130. package/dist/types/src/cli/commands/device/list/list.test.d.ts.map +1 -0
  131. package/dist/types/src/cli/commands/device/update/index.d.ts +2 -0
  132. package/dist/types/src/cli/commands/device/update/index.d.ts.map +1 -0
  133. package/dist/types/src/cli/commands/device/update/update.d.ts +11 -0
  134. package/dist/types/src/cli/commands/device/update/update.d.ts.map +1 -0
  135. package/dist/types/src/cli/commands/device/util.d.ts +16 -0
  136. package/dist/types/src/cli/commands/device/util.d.ts.map +1 -0
  137. package/dist/types/src/cli/commands/edge/index.d.ts +5 -0
  138. package/dist/types/src/cli/commands/edge/index.d.ts.map +1 -0
  139. package/dist/types/src/cli/commands/edge/status.d.ts +7 -0
  140. package/dist/types/src/cli/commands/edge/status.d.ts.map +1 -0
  141. package/dist/types/src/cli/commands/halo/create/create.d.ts +15 -0
  142. package/dist/types/src/cli/commands/halo/create/create.d.ts.map +1 -0
  143. package/dist/types/src/cli/commands/halo/create/create.test.d.ts +2 -0
  144. package/dist/types/src/cli/commands/halo/create/create.test.d.ts.map +1 -0
  145. package/dist/types/src/cli/commands/halo/create/index.d.ts +2 -0
  146. package/dist/types/src/cli/commands/halo/create/index.d.ts.map +1 -0
  147. package/dist/types/src/cli/commands/halo/credential/add/add.d.ts +13 -0
  148. package/dist/types/src/cli/commands/halo/credential/add/add.d.ts.map +1 -0
  149. package/dist/types/src/cli/commands/halo/credential/add/index.d.ts +2 -0
  150. package/dist/types/src/cli/commands/halo/credential/add/index.d.ts.map +1 -0
  151. package/dist/types/src/cli/commands/halo/credential/index.d.ts +12 -0
  152. package/dist/types/src/cli/commands/halo/credential/index.d.ts.map +1 -0
  153. package/dist/types/src/cli/commands/halo/credential/list/index.d.ts +2 -0
  154. package/dist/types/src/cli/commands/halo/credential/list/index.d.ts.map +1 -0
  155. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts +19 -0
  156. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts.map +1 -0
  157. package/dist/types/src/cli/commands/halo/credential/list/list.test.d.ts +2 -0
  158. package/dist/types/src/cli/commands/halo/credential/list/list.test.d.ts.map +1 -0
  159. package/dist/types/src/cli/commands/halo/identity/identity.d.ts +7 -0
  160. package/dist/types/src/cli/commands/halo/identity/identity.d.ts.map +1 -0
  161. package/dist/types/src/cli/commands/halo/identity/identity.test.d.ts +2 -0
  162. package/dist/types/src/cli/commands/halo/identity/identity.test.d.ts.map +1 -0
  163. package/dist/types/src/cli/commands/halo/identity/index.d.ts +2 -0
  164. package/dist/types/src/cli/commands/halo/identity/index.d.ts.map +1 -0
  165. package/dist/types/src/cli/commands/halo/index.d.ts +3 -0
  166. package/dist/types/src/cli/commands/halo/index.d.ts.map +1 -0
  167. package/dist/types/src/cli/commands/halo/join/index.d.ts +2 -0
  168. package/dist/types/src/cli/commands/halo/join/index.d.ts.map +1 -0
  169. package/dist/types/src/cli/commands/halo/join/join.d.ts +8 -0
  170. package/dist/types/src/cli/commands/halo/join/join.d.ts.map +1 -0
  171. package/dist/types/src/cli/commands/halo/join/join.test.d.ts +2 -0
  172. package/dist/types/src/cli/commands/halo/join/join.test.d.ts.map +1 -0
  173. package/dist/types/src/cli/commands/halo/keys/index.d.ts +2 -0
  174. package/dist/types/src/cli/commands/halo/keys/index.d.ts.map +1 -0
  175. package/dist/types/src/cli/commands/halo/keys/keys.d.ts +7 -0
  176. package/dist/types/src/cli/commands/halo/keys/keys.d.ts.map +1 -0
  177. package/dist/types/src/cli/commands/halo/keys/keys.test.d.ts +2 -0
  178. package/dist/types/src/cli/commands/halo/keys/keys.test.d.ts.map +1 -0
  179. package/dist/types/src/cli/commands/halo/recover/index.d.ts +2 -0
  180. package/dist/types/src/cli/commands/halo/recover/index.d.ts.map +1 -0
  181. package/dist/types/src/cli/commands/halo/recover/recover.d.ts +7 -0
  182. package/dist/types/src/cli/commands/halo/recover/recover.d.ts.map +1 -0
  183. package/dist/types/src/cli/commands/halo/recover/recover.test.d.ts +2 -0
  184. package/dist/types/src/cli/commands/halo/recover/recover.test.d.ts.map +1 -0
  185. package/dist/types/src/cli/commands/halo/seed/index.d.ts +2 -0
  186. package/dist/types/src/cli/commands/halo/seed/index.d.ts.map +1 -0
  187. package/dist/types/src/cli/commands/halo/seed/seed.d.ts +7 -0
  188. package/dist/types/src/cli/commands/halo/seed/seed.d.ts.map +1 -0
  189. package/dist/types/src/cli/commands/halo/share/index.d.ts +2 -0
  190. package/dist/types/src/cli/commands/halo/share/index.d.ts.map +1 -0
  191. package/dist/types/src/cli/commands/halo/share/share.d.ts +15 -0
  192. package/dist/types/src/cli/commands/halo/share/share.d.ts.map +1 -0
  193. package/dist/types/src/cli/commands/halo/update/index.d.ts +2 -0
  194. package/dist/types/src/cli/commands/halo/update/index.d.ts.map +1 -0
  195. package/dist/types/src/cli/commands/halo/update/update.d.ts +11 -0
  196. package/dist/types/src/cli/commands/halo/update/update.d.ts.map +1 -0
  197. package/dist/types/src/cli/commands/halo/update/update.test.d.ts +2 -0
  198. package/dist/types/src/cli/commands/halo/update/update.test.d.ts.map +1 -0
  199. package/dist/types/src/cli/commands/halo/util.d.ts +13 -0
  200. package/dist/types/src/cli/commands/halo/util.d.ts.map +1 -0
  201. package/dist/types/src/cli/commands/index.d.ts +6 -0
  202. package/dist/types/src/cli/commands/index.d.ts.map +1 -0
  203. package/dist/types/src/cli/commands/profile/create.d.ts +10 -0
  204. package/dist/types/src/cli/commands/profile/create.d.ts.map +1 -0
  205. package/dist/types/src/cli/commands/profile/delete.d.ts +8 -0
  206. package/dist/types/src/cli/commands/profile/delete.d.ts.map +1 -0
  207. package/dist/types/src/cli/commands/profile/import.d.ts +17 -0
  208. package/dist/types/src/cli/commands/profile/import.d.ts.map +1 -0
  209. package/dist/types/src/cli/commands/profile/index.d.ts +19 -0
  210. package/dist/types/src/cli/commands/profile/index.d.ts.map +1 -0
  211. package/dist/types/src/cli/commands/profile/inspect.d.ts +13 -0
  212. package/dist/types/src/cli/commands/profile/inspect.d.ts.map +1 -0
  213. package/dist/types/src/cli/commands/profile/list.d.ts +6 -0
  214. package/dist/types/src/cli/commands/profile/list.d.ts.map +1 -0
  215. package/dist/types/src/cli/commands/profile/reset.d.ts +8 -0
  216. package/dist/types/src/cli/commands/profile/reset.d.ts.map +1 -0
  217. package/dist/types/src/cli/commands/profile/util.d.ts +24 -0
  218. package/dist/types/src/cli/commands/profile/util.d.ts.map +1 -0
  219. package/dist/types/src/cli/index.d.ts +2 -0
  220. package/dist/types/src/cli/index.d.ts.map +1 -0
  221. package/dist/types/src/cli/plugin.d.ts +4 -0
  222. package/dist/types/src/cli/plugin.d.ts.map +1 -0
  223. package/dist/types/src/cli/testing/test-console.d.ts +37 -0
  224. package/dist/types/src/cli/testing/test-console.d.ts.map +1 -0
  225. package/dist/types/src/components/index.d.ts +0 -6
  226. package/dist/types/src/components/index.d.ts.map +1 -1
  227. package/dist/types/src/constants.d.ts +4 -0
  228. package/dist/types/src/constants.d.ts.map +1 -0
  229. package/dist/types/src/containers/DevicesContainer/DevicesContainer.d.ts.map +1 -0
  230. package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts +183 -0
  231. package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts.map +1 -0
  232. package/dist/types/src/containers/DevicesContainer/index.d.ts +3 -0
  233. package/dist/types/src/containers/DevicesContainer/index.d.ts.map +1 -0
  234. package/dist/types/src/{components → containers/JoinDialog}/JoinDialog.d.ts +0 -1
  235. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -0
  236. package/dist/types/src/containers/JoinDialog/index.d.ts +3 -0
  237. package/dist/types/src/containers/JoinDialog/index.d.ts.map +1 -0
  238. package/dist/types/src/containers/ProfileContainer/ProfileContainer.d.ts.map +1 -0
  239. package/dist/types/src/containers/ProfileContainer/ProfileContainer.stories.d.ts +14 -0
  240. package/dist/types/src/containers/ProfileContainer/ProfileContainer.stories.d.ts.map +1 -0
  241. package/dist/types/src/containers/ProfileContainer/index.d.ts +3 -0
  242. package/dist/types/src/containers/ProfileContainer/index.d.ts.map +1 -0
  243. package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.d.ts +0 -1
  244. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.d.ts.map +1 -0
  245. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.stories.d.ts +16 -0
  246. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.stories.d.ts.map +1 -0
  247. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts +4 -0
  248. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts.map +1 -0
  249. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.d.ts +4 -0
  250. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.d.ts.map +1 -0
  251. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.d.ts +14 -0
  252. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.d.ts.map +1 -0
  253. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts +3 -0
  254. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts.map +1 -0
  255. package/dist/types/src/containers/ResetDialog/ResetDialog.d.ts +9 -0
  256. package/dist/types/src/containers/ResetDialog/ResetDialog.d.ts.map +1 -0
  257. package/dist/types/src/containers/ResetDialog/ResetDialog.stories.d.ts +19 -0
  258. package/dist/types/src/containers/ResetDialog/ResetDialog.stories.d.ts.map +1 -0
  259. package/dist/types/src/containers/ResetDialog/index.d.ts +4 -0
  260. package/dist/types/src/containers/ResetDialog/index.d.ts.map +1 -0
  261. package/dist/types/src/containers/index.d.ts +10 -0
  262. package/dist/types/src/containers/index.d.ts.map +1 -0
  263. package/dist/types/src/index.d.ts +3 -3
  264. package/dist/types/src/index.d.ts.map +1 -1
  265. package/dist/types/src/meta.d.ts +2 -3
  266. package/dist/types/src/meta.d.ts.map +1 -1
  267. package/dist/types/src/translations.d.ts +2 -48
  268. package/dist/types/src/translations.d.ts.map +1 -1
  269. package/dist/types/src/types/capabilities.d.ts +10 -0
  270. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  271. package/dist/types/src/types/events.d.ts +9 -0
  272. package/dist/types/src/types/events.d.ts.map +1 -0
  273. package/dist/types/src/types/index.d.ts +2 -0
  274. package/dist/types/src/types/index.d.ts.map +1 -1
  275. package/dist/types/src/types/schema.d.ts +194 -30
  276. package/dist/types/src/types/schema.d.ts.map +1 -1
  277. package/dist/types/tsconfig.tsbuildinfo +1 -1
  278. package/package.json +58 -43
  279. package/src/ClientPlugin.ts +49 -61
  280. package/src/capabilities/app-graph-builder/app-graph-builder.ts +96 -0
  281. package/src/capabilities/app-graph-builder/index.ts +7 -0
  282. package/src/capabilities/client/client.ts +77 -0
  283. package/src/capabilities/client/index.ts +7 -0
  284. package/src/capabilities/index.ts +7 -11
  285. package/src/capabilities/migrations/index.ts +7 -0
  286. package/src/capabilities/migrations/migrations.ts +30 -0
  287. package/src/capabilities/operation-resolver/index.ts +7 -0
  288. package/src/capabilities/operation-resolver/operation-resolver.ts +249 -0
  289. package/src/capabilities/react-context/index.ts +7 -0
  290. package/src/capabilities/react-context/react-context.tsx +25 -0
  291. package/src/capabilities/react-surface/index.ts +7 -0
  292. package/src/capabilities/react-surface/react-surface.tsx +74 -0
  293. package/src/capabilities/schema-defs/index.ts +7 -0
  294. package/src/capabilities/schema-defs/schema-defs.ts +36 -0
  295. package/src/cli/commands/config/index.ts +12 -0
  296. package/src/cli/commands/config/view.ts +26 -0
  297. package/src/cli/commands/device/index.ts +14 -0
  298. package/src/cli/commands/device/info/index.ts +5 -0
  299. package/src/cli/commands/device/info/info.test.ts +29 -0
  300. package/src/cli/commands/device/info/info.ts +50 -0
  301. package/src/cli/commands/device/list/index.ts +5 -0
  302. package/src/cli/commands/device/list/list.test.ts +31 -0
  303. package/src/cli/commands/device/list/list.ts +30 -0
  304. package/src/cli/commands/device/update/index.ts +5 -0
  305. package/src/cli/commands/device/update/update.ts +70 -0
  306. package/src/cli/commands/device/util.ts +55 -0
  307. package/src/cli/commands/edge/index.ts +12 -0
  308. package/src/cli/commands/edge/status.ts +45 -0
  309. package/src/cli/commands/halo/create/create.test.ts +52 -0
  310. package/src/cli/commands/halo/create/create.ts +75 -0
  311. package/src/cli/commands/halo/create/index.ts +5 -0
  312. package/src/cli/commands/halo/credential/add/add.ts +97 -0
  313. package/src/cli/commands/halo/credential/add/index.ts +5 -0
  314. package/src/cli/commands/halo/credential/index.ts +13 -0
  315. package/src/cli/commands/halo/credential/list/index.ts +5 -0
  316. package/src/cli/commands/halo/credential/list/list.test.ts +28 -0
  317. package/src/cli/commands/halo/credential/list/list.ts +118 -0
  318. package/src/cli/commands/halo/identity/identity.test.ts +40 -0
  319. package/src/cli/commands/halo/identity/identity.ts +46 -0
  320. package/src/cli/commands/halo/identity/index.ts +5 -0
  321. package/src/cli/commands/halo/index.ts +21 -0
  322. package/src/cli/commands/halo/join/index.ts +5 -0
  323. package/src/cli/commands/halo/join/join.test.ts +10 -0
  324. package/src/cli/commands/halo/join/join.ts +87 -0
  325. package/src/cli/commands/halo/keys/index.ts +5 -0
  326. package/src/cli/commands/halo/keys/keys.test.ts +29 -0
  327. package/src/cli/commands/halo/keys/keys.ts +42 -0
  328. package/src/cli/commands/halo/recover/index.ts +5 -0
  329. package/src/cli/commands/halo/recover/recover.test.ts +10 -0
  330. package/src/cli/commands/halo/recover/recover.ts +44 -0
  331. package/src/cli/commands/halo/seed/index.ts +5 -0
  332. package/src/cli/commands/halo/seed/seed.ts +38 -0
  333. package/src/cli/commands/halo/share/index.ts +5 -0
  334. package/src/cli/commands/halo/share/share.ts +97 -0
  335. package/src/cli/commands/halo/update/index.ts +5 -0
  336. package/src/cli/commands/halo/update/update.test.ts +29 -0
  337. package/src/cli/commands/halo/update/update.ts +69 -0
  338. package/src/cli/commands/halo/util.ts +18 -0
  339. package/src/cli/commands/index.ts +9 -0
  340. package/src/cli/commands/profile/create.ts +90 -0
  341. package/src/cli/commands/profile/delete.ts +36 -0
  342. package/src/cli/commands/profile/import.ts +101 -0
  343. package/src/cli/commands/profile/index.ts +17 -0
  344. package/src/cli/commands/profile/inspect.ts +64 -0
  345. package/src/cli/commands/profile/list.ts +56 -0
  346. package/src/cli/commands/profile/reset.ts +45 -0
  347. package/src/cli/commands/profile/util.ts +48 -0
  348. package/src/cli/index.ts +5 -0
  349. package/src/cli/plugin.ts +34 -0
  350. package/src/cli/testing/test-console.ts +88 -0
  351. package/src/components/index.ts +0 -7
  352. package/src/constants.ts +9 -0
  353. package/src/containers/DevicesContainer/DevicesContainer.stories.tsx +51 -0
  354. package/src/{components → containers/DevicesContainer}/DevicesContainer.tsx +88 -108
  355. package/src/containers/DevicesContainer/index.ts +7 -0
  356. package/src/containers/JoinDialog/JoinDialog.tsx +53 -0
  357. package/src/containers/JoinDialog/index.ts +7 -0
  358. package/src/containers/ProfileContainer/ProfileContainer.stories.tsx +28 -0
  359. package/src/{components → containers/ProfileContainer}/ProfileContainer.tsx +68 -65
  360. package/src/containers/ProfileContainer/index.ts +7 -0
  361. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.tsx +11 -12
  362. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.tsx +28 -27
  363. package/src/containers/RecoveryCodeDialog/index.ts +8 -0
  364. package/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.tsx +46 -0
  365. package/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.tsx +68 -0
  366. package/src/containers/RecoveryCredentialsContainer/index.ts +7 -0
  367. package/src/containers/ResetDialog/ResetDialog.stories.tsx +73 -0
  368. package/src/containers/ResetDialog/ResetDialog.tsx +50 -0
  369. package/src/containers/ResetDialog/index.ts +8 -0
  370. package/src/containers/index.ts +15 -0
  371. package/src/index.ts +3 -3
  372. package/src/meta.ts +8 -5
  373. package/src/translations.ts +6 -3
  374. package/src/types/capabilities.ts +16 -0
  375. package/src/types/events.ts +15 -0
  376. package/src/types/index.ts +2 -0
  377. package/src/types/schema.ts +138 -20
  378. package/dist/lib/browser/app-graph-builder-JNIES5L4.mjs +0 -123
  379. package/dist/lib/browser/app-graph-builder-JNIES5L4.mjs.map +0 -7
  380. package/dist/lib/browser/chunk-3F2Q2RKC.mjs +0 -18
  381. package/dist/lib/browser/chunk-3F2Q2RKC.mjs.map +0 -7
  382. package/dist/lib/browser/chunk-CAF2COXW.mjs +0 -19
  383. package/dist/lib/browser/chunk-CAF2COXW.mjs.map +0 -7
  384. package/dist/lib/browser/chunk-GS3LDHYD.mjs +0 -12
  385. package/dist/lib/browser/chunk-GS3LDHYD.mjs.map +0 -7
  386. package/dist/lib/browser/chunk-RMHBOY3Y.mjs +0 -110
  387. package/dist/lib/browser/chunk-RMHBOY3Y.mjs.map +0 -7
  388. package/dist/lib/browser/chunk-SV3MHIKI.mjs +0 -695
  389. package/dist/lib/browser/chunk-SV3MHIKI.mjs.map +0 -7
  390. package/dist/lib/browser/client-SKVKXPLY.mjs +0 -37
  391. package/dist/lib/browser/client-SKVKXPLY.mjs.map +0 -7
  392. package/dist/lib/browser/intent-resolver-LNPLD5CA.mjs +0 -305
  393. package/dist/lib/browser/intent-resolver-LNPLD5CA.mjs.map +0 -7
  394. package/dist/lib/browser/migrations-D76RCG72.mjs +0 -23
  395. package/dist/lib/browser/migrations-D76RCG72.mjs.map +0 -7
  396. package/dist/lib/browser/react-context-YWVPZUMU.mjs +0 -24
  397. package/dist/lib/browser/react-context-YWVPZUMU.mjs.map +0 -7
  398. package/dist/lib/browser/react-surface-QFZTDNLS.mjs +0 -66
  399. package/dist/lib/browser/react-surface-QFZTDNLS.mjs.map +0 -7
  400. package/dist/lib/browser/schema-defs-HKW6VNZB.mjs +0 -25
  401. package/dist/lib/browser/schema-defs-HKW6VNZB.mjs.map +0 -7
  402. package/dist/lib/node-esm/app-graph-builder-SWFB4FID.mjs +0 -124
  403. package/dist/lib/node-esm/app-graph-builder-SWFB4FID.mjs.map +0 -7
  404. package/dist/lib/node-esm/chunk-5V3RCXZV.mjs +0 -111
  405. package/dist/lib/node-esm/chunk-5V3RCXZV.mjs.map +0 -7
  406. package/dist/lib/node-esm/chunk-FBYODKEL.mjs +0 -696
  407. package/dist/lib/node-esm/chunk-FBYODKEL.mjs.map +0 -7
  408. package/dist/lib/node-esm/chunk-IOGTQFLM.mjs +0 -19
  409. package/dist/lib/node-esm/chunk-IOGTQFLM.mjs.map +0 -7
  410. package/dist/lib/node-esm/chunk-SZLX4BVJ.mjs +0 -14
  411. package/dist/lib/node-esm/chunk-SZLX4BVJ.mjs.map +0 -7
  412. package/dist/lib/node-esm/chunk-UMO3ETDV.mjs +0 -20
  413. package/dist/lib/node-esm/chunk-UMO3ETDV.mjs.map +0 -7
  414. package/dist/lib/node-esm/client-SLL6GDC2.mjs +0 -38
  415. package/dist/lib/node-esm/client-SLL6GDC2.mjs.map +0 -7
  416. package/dist/lib/node-esm/intent-resolver-L7C6YRWV.mjs +0 -306
  417. package/dist/lib/node-esm/intent-resolver-L7C6YRWV.mjs.map +0 -7
  418. package/dist/lib/node-esm/migrations-YISDI7LF.mjs +0 -24
  419. package/dist/lib/node-esm/migrations-YISDI7LF.mjs.map +0 -7
  420. package/dist/lib/node-esm/react-context-EEHS4S3L.mjs +0 -25
  421. package/dist/lib/node-esm/react-context-EEHS4S3L.mjs.map +0 -7
  422. package/dist/lib/node-esm/react-surface-2K6W37R4.mjs +0 -67
  423. package/dist/lib/node-esm/react-surface-2K6W37R4.mjs.map +0 -7
  424. package/dist/lib/node-esm/schema-defs-5ZNI63RW.mjs +0 -26
  425. package/dist/lib/node-esm/schema-defs-5ZNI63RW.mjs.map +0 -7
  426. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  427. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  428. package/dist/types/src/capabilities/capabilities.d.ts +0 -9
  429. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  430. package/dist/types/src/capabilities/client.d.ts +0 -9
  431. package/dist/types/src/capabilities/client.d.ts.map +0 -1
  432. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -8
  433. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  434. package/dist/types/src/capabilities/migrations.d.ts +0 -4
  435. package/dist/types/src/capabilities/migrations.d.ts.map +0 -1
  436. package/dist/types/src/capabilities/react-context.d.ts +0 -8
  437. package/dist/types/src/capabilities/react-context.d.ts.map +0 -1
  438. package/dist/types/src/capabilities/react-surface.d.ts +0 -8
  439. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  440. package/dist/types/src/capabilities/schema-defs.d.ts +0 -4
  441. package/dist/types/src/capabilities/schema-defs.d.ts.map +0 -1
  442. package/dist/types/src/components/DevicesContainer.d.ts.map +0 -1
  443. package/dist/types/src/components/DevicesContainer.stories.d.ts +0 -8
  444. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +0 -1
  445. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  446. package/dist/types/src/components/ProfileContainer.d.ts.map +0 -1
  447. package/dist/types/src/components/ProfileContainer.stories.d.ts +0 -8
  448. package/dist/types/src/components/ProfileContainer.stories.d.ts.map +0 -1
  449. package/dist/types/src/components/RecoveryCodeDialog.d.ts.map +0 -1
  450. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts +0 -8
  451. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +0 -1
  452. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts +0 -4
  453. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts.map +0 -1
  454. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts +0 -8
  455. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +0 -1
  456. package/dist/types/src/components/ResetDialog.d.ts +0 -7
  457. package/dist/types/src/components/ResetDialog.d.ts.map +0 -1
  458. package/dist/types/src/components/ResetDialog.stories.d.ts +0 -10
  459. package/dist/types/src/components/ResetDialog.stories.d.ts.map +0 -1
  460. package/dist/types/src/events.d.ts +0 -8
  461. package/dist/types/src/events.d.ts.map +0 -1
  462. package/src/capabilities/app-graph-builder.ts +0 -113
  463. package/src/capabilities/capabilities.ts +0 -18
  464. package/src/capabilities/client.ts +0 -41
  465. package/src/capabilities/intent-resolver.ts +0 -250
  466. package/src/capabilities/migrations.ts +0 -25
  467. package/src/capabilities/react-context.tsx +0 -20
  468. package/src/capabilities/react-surface.tsx +0 -67
  469. package/src/capabilities/schema-defs.ts +0 -29
  470. package/src/components/DevicesContainer.stories.tsx +0 -49
  471. package/src/components/JoinDialog.tsx +0 -53
  472. package/src/components/ProfileContainer.stories.tsx +0 -29
  473. package/src/components/RecoveryCredentialsContainer.stories.tsx +0 -44
  474. package/src/components/RecoveryCredentialsContainer.tsx +0 -73
  475. package/src/components/ResetDialog.stories.tsx +0 -53
  476. package/src/components/ResetDialog.tsx +0 -49
  477. package/src/events.ts +0 -15
  478. /package/dist/types/src/{components → containers/DevicesContainer}/DevicesContainer.d.ts +0 -0
  479. /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.d.ts +0 -0
@@ -5,116 +5,94 @@
5
5
  import React, { useCallback, useEffect, useState } from 'react';
6
6
  import { QR } from 'react-qr-rounded';
7
7
 
8
- import { createIntent, useIntentDispatcher } from '@dxos/app-framework';
8
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
9
9
  import { log } from '@dxos/log';
10
10
  import { useClient, useMulticastObservable } from '@dxos/react-client';
11
11
  import { type Device, useDevices } from '@dxos/react-client/halo';
12
12
  import { type CancellableInvitationObservable, Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
13
13
  import { useNetworkStatus } from '@dxos/react-client/mesh';
14
- import { Button, Clipboard, IconButton, List, useId, useTranslation, Icon } from '@dxos/react-ui';
15
- import {
16
- ControlFrame,
17
- ControlFrameItem,
18
- ControlGroup,
19
- ControlItem,
20
- ControlPage,
21
- ControlSection,
22
- } from '@dxos/react-ui-form';
23
- import { StackItem } from '@dxos/react-ui-stack';
24
- import { AuthCode, Centered, DeviceListItem, Emoji, Viewport } from '@dxos/shell/react';
14
+ import { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } from '@dxos/react-ui';
15
+ import { Settings } from '@dxos/react-ui-form';
16
+ import { AuthCode, Centered, DeviceListItem, Emoji, Viewport, translationKey } from '@dxos/shell/react';
17
+ import { osTranslations } from '@dxos/ui-theme';
25
18
  import { hexToEmoji } from '@dxos/util';
26
19
 
27
- import { CLIENT_PLUGIN } from '../meta';
28
- import { ClientAction } from '../types';
20
+ import { meta } from '../../meta';
21
+ import { ClientOperation } from '../../types';
29
22
 
30
23
  export type DevicesContainerProps = {
31
24
  createInvitationUrl?: (invitationCode: string) => string;
32
25
  };
33
26
 
34
27
  export const DevicesContainer = ({ createInvitationUrl }: DevicesContainerProps) => {
35
- const { t } = useTranslation('os');
36
- const { dispatchPromise: dispatch } = useIntentDispatcher();
28
+ const { t } = useTranslation(translationKey);
29
+ const { invokePromise } = useOperationInvoker();
37
30
  const devices = useDevices();
38
31
  const { swarm: connectionState } = useNetworkStatus();
39
32
 
40
- const handleResetStorage = useCallback(() => dispatch(createIntent(ClientAction.ResetStorage)), [dispatch]);
33
+ const handleResetStorage = useCallback(() => invokePromise(ClientOperation.ResetStorage, {}), [invokePromise]);
41
34
 
42
35
  const handleRecover = useCallback(
43
- () => dispatch(createIntent(ClientAction.ResetStorage, { mode: 'recover' })),
44
- [dispatch],
36
+ () => invokePromise(ClientOperation.ResetStorage, { mode: 'recover' }),
37
+ [invokePromise],
45
38
  );
46
39
 
47
40
  const handleJoinNewIdentity = useCallback(
48
- () => dispatch(createIntent(ClientAction.ResetStorage, { mode: 'join new identity' })),
49
- [dispatch],
41
+ () => invokePromise(ClientOperation.ResetStorage, { mode: 'join new identity' }),
42
+ [invokePromise],
50
43
  );
51
44
 
52
45
  return (
53
46
  <Clipboard.Provider>
54
- <StackItem.Content classNames='block overflow-y-auto'>
55
- <ControlPage>
56
- <ControlSection
57
- title={t('devices verbose label', { ns: CLIENT_PLUGIN })}
58
- description={t('devices description', { ns: CLIENT_PLUGIN })}
59
- >
60
- <ControlFrame>
61
- <ControlFrameItem title={t('devices label', { ns: CLIENT_PLUGIN })}>
62
- <List>
63
- {devices.map((device: Device) => {
64
- return (
65
- <DeviceListItem
66
- key={device.deviceKey.toHex()}
67
- device={device}
68
- connectionState={connectionState}
69
- />
70
- );
71
- })}
72
- </List>
73
- </ControlFrameItem>
74
- {createInvitationUrl && (
75
- <ControlFrameItem title='Add device'>
76
- <DeviceInvitation createInvitationUrl={createInvitationUrl} />
77
- </ControlFrameItem>
78
- )}
79
- </ControlFrame>
80
- </ControlSection>
81
- <ControlSection
82
- title={t('danger zone title', { ns: CLIENT_PLUGIN })}
83
- description={t('danger zone description', { ns: CLIENT_PLUGIN })}
84
- >
85
- <ControlGroup>
86
- <ControlItem
87
- title={t('reset device label')}
88
- description={t('reset device description', { ns: CLIENT_PLUGIN })}
89
- >
90
- <Button variant='destructive' onClick={handleResetStorage} data-testid='devicesContainer.reset'>
91
- {t('reset device label')}
92
- </Button>
93
- </ControlItem>
94
- <ControlItem
95
- title={t('recover identity label')}
96
- description={t('recover identity description', { ns: CLIENT_PLUGIN })}
97
- >
98
- <Button variant='destructive' onClick={handleRecover} data-testid='devicesContainer.recover'>
99
- {t('recover identity label')}
100
- </Button>
101
- </ControlItem>
102
- <ControlItem
103
- title={t('join new identity label')}
104
- description={t('join new identity description', { ns: CLIENT_PLUGIN })}
105
- >
106
- <Button
107
- variant='destructive'
108
- onClick={handleJoinNewIdentity}
109
- data-testid='devicesContainer.joinExisting'
110
- >
111
- {t('join new identity label')}
112
- </Button>
113
- </ControlItem>
114
- </ControlGroup>
115
- </ControlSection>
116
- </ControlPage>
117
- </StackItem.Content>
47
+ <Settings.Root>
48
+ <Settings.Section
49
+ title={t('devices verbose label', { ns: meta.id })}
50
+ description={t('devices description', { ns: meta.id })}
51
+ >
52
+ <Settings.Frame>
53
+ <Settings.FrameItem title={t('devices label', { ns: meta.id })}>
54
+ <List>
55
+ {devices.map((device: Device) => (
56
+ <DeviceListItem key={device.deviceKey.toHex()} device={device} connectionState={connectionState} />
57
+ ))}
58
+ </List>
59
+ </Settings.FrameItem>
60
+ {createInvitationUrl && (
61
+ <Settings.FrameItem title='Add device'>
62
+ <DeviceInvitation createInvitationUrl={createInvitationUrl} />
63
+ </Settings.FrameItem>
64
+ )}
65
+ </Settings.Frame>
66
+ </Settings.Section>
67
+ <Settings.Section
68
+ title={t('danger zone title', { ns: meta.id })}
69
+ description={t('danger zone description', { ns: meta.id })}
70
+ >
71
+ <Settings.Group>
72
+ <Settings.Item title={t('reset device label')} description={t('reset device description', { ns: meta.id })}>
73
+ <Button variant='destructive' onClick={handleResetStorage} data-testid='devicesContainer.reset'>
74
+ {t('reset device label')}
75
+ </Button>
76
+ </Settings.Item>
77
+ <Settings.Item
78
+ title={t('recover identity label')}
79
+ description={t('recover identity description', { ns: meta.id })}
80
+ >
81
+ <Button variant='destructive' onClick={handleRecover} data-testid='devicesContainer.recover'>
82
+ {t('recover identity label')}
83
+ </Button>
84
+ </Settings.Item>
85
+ <Settings.Item
86
+ title={t('join new identity label')}
87
+ description={t('join new identity description', { ns: meta.id })}
88
+ >
89
+ <Button variant='destructive' onClick={handleJoinNewIdentity} data-testid='devicesContainer.joinExisting'>
90
+ {t('join new identity label')}
91
+ </Button>
92
+ </Settings.Item>
93
+ </Settings.Group>
94
+ </Settings.Section>
95
+ </Settings.Root>
118
96
  </Clipboard.Provider>
119
97
  );
120
98
  };
@@ -189,7 +167,7 @@ const InvitationSection = ({
189
167
  onInvitationDone = () => {},
190
168
  onInvitationCreate = () => {},
191
169
  }: InvitationComponentProps) => {
192
- const { t } = useTranslation(CLIENT_PLUGIN);
170
+ const { t } = useTranslation(meta.id);
193
171
  const activeView =
194
172
  state < 0
195
173
  ? 'init'
@@ -200,12 +178,12 @@ const InvitationSection = ({
200
178
  : 'qr-code';
201
179
  return activeView === 'init' ? (
202
180
  <>
203
- <p className='text-description mbe-2'>{t('add device description')}</p>
181
+ <p className='text-description mb-2'>{t('add device description')}</p>
204
182
  <IconButton
205
183
  icon='ph--plus--regular'
206
184
  label={t('create device invitation label')}
207
185
  disabled={state >= 0}
208
- classNames='is-full'
186
+ classNames='w-full'
209
187
  data-testid='devicesContainer.createInvitation'
210
188
  onClick={onInvitationCreate}
211
189
  />
@@ -231,27 +209,29 @@ const InvitationSection = ({
231
209
  };
232
210
 
233
211
  const InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel: () => void }) => {
234
- const { t } = useTranslation('os');
212
+ const { t } = useTranslation(osTranslations);
235
213
  const qrLabel = useId('devices-container__qr-code');
236
214
  const emoji = hexToEmoji(id);
237
215
  return (
238
216
  <>
239
- <p className='text-description'>{t('qr code description', { ns: CLIENT_PLUGIN })}</p>
240
- <div role='group' className='grid grid-cols-[1fr_min-content] mlb-2 gap-2'>
241
- <div role='none' className='is-full aspect-square relative text-description'>
242
- <QR
243
- rounding={100}
244
- backgroundColor='transparent'
245
- color='currentColor'
246
- aria-labelledby={qrLabel}
247
- errorCorrectionLevel='Q'
248
- cutout={true}
249
- >
250
- {url ?? 'never'}
251
- </QR>
252
- <Centered>
253
- <Emoji text={emoji} />
254
- </Centered>
217
+ <p className='text-description'>{t('qr code description', { ns: meta.id })}</p>
218
+ <div role='group' className='grid grid-cols-[1fr_min-content]'>
219
+ <div className='flex justify-center py-4'>
220
+ <div role='none' className='w-full md:max-w-80 aspect-square relative text-description'>
221
+ <QR
222
+ rounding={100}
223
+ backgroundColor='transparent'
224
+ color='currentColor'
225
+ aria-labelledby={qrLabel}
226
+ errorCorrectionLevel='Q'
227
+ cutout={true}
228
+ >
229
+ {url ?? 'never'}
230
+ </QR>
231
+ <Centered>
232
+ <Emoji text={emoji} />
233
+ </Centered>
234
+ </div>
255
235
  </div>
256
236
  <span id={qrLabel} className='sr-only'>
257
237
  {t('qr label')}
@@ -271,15 +251,15 @@ const InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel
271
251
  };
272
252
 
273
253
  const InvitationAuthCode = ({ id, code, onCancel }: { id: string; code: string; onCancel: () => void }) => {
274
- const { t } = useTranslation('os');
254
+ const { t } = useTranslation(osTranslations);
275
255
  const emoji = hexToEmoji(id);
276
256
 
277
257
  return (
278
258
  <>
279
259
  <p className='text-description'>{t('auth other device emoji message')}</p>
280
- {emoji && <Emoji text={emoji} className='mli-auto mlb-2 text-center' />}
260
+ {emoji && <Emoji text={emoji} className='mx-auto my-2 text-center' />}
281
261
  <p className='text-description'>{t('auth code message')}</p>
282
- <AuthCode code={code} large classNames='mli-auto mlb-2 text-center grow' />
262
+ <AuthCode code={code} large classNames='mx-auto my-2 text-center grow' />
283
263
  <Button variant='ghost' onClick={onCancel}>
284
264
  {t('cancel label')}
285
265
  </Button>
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { DevicesContainer } from './DevicesContainer';
6
+
7
+ export default DevicesContainer;
@@ -0,0 +1,53 @@
1
+ //
2
+ // Copyright 2024 DXOS.org
3
+ //
4
+
5
+ import React, { useCallback } from 'react';
6
+
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { LayoutOperation } from '@dxos/app-toolkit';
9
+ import { ObservabilityOperation } from '@dxos/plugin-observability/types';
10
+ import { type InvitationResult } from '@dxos/react-client/invitations';
11
+ import { Dialog, useTranslation } from '@dxos/react-ui';
12
+ import { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';
13
+ import { osTranslations } from '@dxos/ui-theme';
14
+
15
+ import { meta } from '../../meta';
16
+ import { ClientOperation } from '../../types';
17
+
18
+ export const JoinDialog = (props: JoinPanelProps) => {
19
+ const { invokePromise } = useOperationInvoker();
20
+ const { t } = useTranslation(meta.id);
21
+
22
+ const handleCancelResetStorage = useCallback(() => invokePromise(ClientOperation.ShareIdentity), [invokePromise]);
23
+
24
+ const handleDone = useCallback(
25
+ async (result: InvitationResult | null) => {
26
+ if (result?.identityKey) {
27
+ await Promise.all([
28
+ invokePromise(LayoutOperation.UpdateDialog, { state: false }),
29
+ invokePromise(ObservabilityOperation.SendEvent, {
30
+ name: props.initialDisposition === 'recover-identity' ? 'identity.recover' : 'identity.join',
31
+ }),
32
+ ]);
33
+ }
34
+ },
35
+ [invokePromise],
36
+ );
37
+
38
+ return (
39
+ <Dialog.Content>
40
+ <Dialog.Header>
41
+ <Dialog.Title classNames='sr-only'>{t('join space label', { ns: osTranslations })}</Dialog.Title>
42
+ </Dialog.Header>
43
+ <JoinPanel
44
+ mode='halo-only'
45
+ {...props}
46
+ exitActionParent={<Dialog.Close asChild />}
47
+ doneActionParent={<Dialog.Close asChild />}
48
+ onCancelResetStorage={handleCancelResetStorage}
49
+ onDone={handleDone}
50
+ />
51
+ </Dialog.Content>
52
+ );
53
+ };
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { JoinDialog } from './JoinDialog';
6
+
7
+ export default JoinDialog;
@@ -0,0 +1,28 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+
7
+ import { withClientProvider } from '@dxos/react-client/testing';
8
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
9
+
10
+ import { translations } from '../../translations';
11
+
12
+ import { ProfileContainer } from './ProfileContainer';
13
+
14
+ const meta = {
15
+ title: 'plugins/plugin-client/containers/ProfileContainer',
16
+ component: ProfileContainer,
17
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withClientProvider({ createIdentity: true })],
18
+ parameters: {
19
+ layout: 'fullscreen',
20
+ translations,
21
+ },
22
+ } satisfies Meta<typeof ProfileContainer>;
23
+
24
+ export default meta;
25
+
26
+ type Story = StoryObj<typeof meta>;
27
+
28
+ export const Default: Story = {};
@@ -2,35 +2,38 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
5
+ import * as Schema from 'effect/Schema';
6
6
  import React, { type ChangeEvent, useCallback, useMemo, useState } from 'react';
7
7
 
8
8
  import { debounce } from '@dxos/async';
9
9
  import { useClient } from '@dxos/react-client';
10
10
  import { type Identity, useIdentity } from '@dxos/react-client/halo';
11
11
  import { ButtonGroup, Clipboard, Input, useTranslation } from '@dxos/react-ui';
12
- import {
13
- Form,
14
- type InputComponent,
15
- ControlItem,
16
- ControlItemInput,
17
- ControlSection,
18
- ControlPage,
19
- } from '@dxos/react-ui-form';
12
+ import { Form, type FormFieldMap, type FormUpdateMeta, Settings } from '@dxos/react-ui-form';
20
13
  import { EmojiPickerBlock, HuePicker } from '@dxos/react-ui-pickers';
21
- import { StackItem } from '@dxos/react-ui-stack';
22
- import { hexToHue, hexToEmoji } from '@dxos/util';
14
+ import { hexToEmoji, hexToHue } from '@dxos/util';
23
15
 
24
- import { CLIENT_PLUGIN } from '../meta';
16
+ import { meta } from '../../meta';
17
+
18
+ // TOOD(burdon): Factor out?
19
+ // TODO(wittjosiah): Integrate annotations with translations.
20
+ const UserProfile = Schema.Struct({
21
+ did: Schema.String.annotations({ title: 'DID' }),
22
+ displayName: Schema.String.annotations({ title: 'Display name' }),
23
+ emoji: Schema.String.annotations({ title: 'Avatar' }),
24
+ hue: Schema.String.annotations({ title: 'Color' }),
25
+ });
26
+
27
+ type UserProfile = Schema.Schema.Type<typeof UserProfile>;
25
28
 
26
29
  // TODO(thure): Factor out?
27
30
  const getDefaultHueValue = (identity: Identity | null) => hexToHue(identity?.identityKey.toHex() ?? '0');
28
- const getDefaultEmojiValue = (identity: Identity | null) => hexToEmoji(identity?.identityKey.toHex() ?? '0');
29
31
  const getHueValue = (identity: Identity | null) => identity?.profile?.data?.hue || getDefaultHueValue(identity);
32
+ const getDefaultEmojiValue = (identity: Identity | null) => hexToEmoji(identity?.identityKey.toHex() ?? '0');
30
33
  const getEmojiValue = (identity: Identity | null) => identity?.profile?.data?.emoji || getDefaultEmojiValue(identity);
31
34
 
32
35
  export const ProfileContainer = () => {
33
- const { t } = useTranslation(CLIENT_PLUGIN);
36
+ const { t } = useTranslation(meta.id);
34
37
  const client = useClient();
35
38
  const identity = useIdentity();
36
39
  const [displayName, setDisplayNameDirectly] = useState(identity?.profile?.displayName ?? '');
@@ -40,7 +43,7 @@ export const ProfileContainer = () => {
40
43
  const updateProfile = useMemo(
41
44
  () =>
42
45
  debounce(
43
- (profile: Partial<Profile>) =>
46
+ (profile: Partial<UserProfile>) =>
44
47
  client.halo.updateProfile({
45
48
  displayName: profile.displayName,
46
49
  data: {
@@ -53,11 +56,26 @@ export const ProfileContainer = () => {
53
56
  [],
54
57
  );
55
58
 
56
- const handleSave = useCallback(
57
- (profile: Profile) => {
58
- setDisplayNameDirectly(profile.displayName);
59
- setEmojiDirectly(profile.emoji);
60
- setHueDirectly(profile.hue);
59
+ const handleChange = useCallback(
60
+ (profile: Partial<UserProfile>, meta: FormUpdateMeta<UserProfile>) => {
61
+ for (const [path, changed] of Object.entries(meta.changed)) {
62
+ if (changed) {
63
+ switch (path) {
64
+ case 'displayName':
65
+ setDisplayNameDirectly(profile.displayName ?? '');
66
+ break;
67
+ case 'emoji':
68
+ setEmojiDirectly(profile.emoji ?? getDefaultEmojiValue(identity));
69
+ break;
70
+ case 'hue':
71
+ setHueDirectly(profile.hue ?? getDefaultHueValue(identity));
72
+ break;
73
+ default:
74
+ break;
75
+ }
76
+ }
77
+ }
78
+
61
79
  void updateProfile(profile);
62
80
  },
63
81
  [identity],
@@ -65,31 +83,32 @@ export const ProfileContainer = () => {
65
83
 
66
84
  const values = useMemo(
67
85
  () => ({
86
+ did: identity?.did,
68
87
  displayName,
69
88
  emoji,
70
89
  hue,
71
- did: identity?.did,
72
90
  }),
73
91
  [identity, displayName, emoji, hue],
74
92
  );
75
93
 
76
94
  // TODO(wittjosiah): Integrate descriptions with the form schema.
77
- const customElements: Partial<Record<string, InputComponent>> = useMemo(
95
+ const fieldMap = useMemo<FormFieldMap>(
78
96
  () => ({
79
97
  displayName: ({ type, label, getValue, onValueChange }) => {
80
98
  const handleChange = useCallback(
81
99
  ({ target: { value } }: ChangeEvent<HTMLInputElement>) => onValueChange(type, value),
82
100
  [onValueChange, type],
83
101
  );
102
+
84
103
  return (
85
- <ControlItemInput title={label} description={t('display name description')}>
104
+ <Settings.ItemInput title={label} description={t('display name description')}>
86
105
  <Input.TextInput
87
106
  value={getValue()}
88
107
  onChange={handleChange}
89
108
  placeholder={t('display name input placeholder')}
90
- classNames='min-is-64'
109
+ classNames='min-w-64'
91
110
  />
92
- </ControlItemInput>
111
+ </Settings.ItemInput>
93
112
  );
94
113
  },
95
114
  emoji: ({ type, label, getValue, onValueChange }) => {
@@ -98,8 +117,9 @@ export const ProfileContainer = () => {
98
117
  () => onValueChange(type, getDefaultEmojiValue(identity)),
99
118
  [onValueChange, type],
100
119
  );
120
+
101
121
  return (
102
- <ControlItem title={label} description={t('icon description')}>
122
+ <Settings.Item title={label} description={t('icon description')}>
103
123
  <EmojiPickerBlock
104
124
  triggerVariant='default'
105
125
  emoji={getValue()}
@@ -107,7 +127,7 @@ export const ProfileContainer = () => {
107
127
  onClickClear={handleEmojiReset}
108
128
  classNames='justify-self-end'
109
129
  />
110
- </ControlItem>
130
+ </Settings.Item>
111
131
  );
112
132
  },
113
133
  hue: ({ type, label, getValue, onValueChange }) => {
@@ -116,26 +136,24 @@ export const ProfileContainer = () => {
116
136
  () => onValueChange(type, getDefaultHueValue(identity)),
117
137
  [onValueChange, type],
118
138
  );
139
+
119
140
  return (
120
- <ControlItem title={label} description={t('hue description')}>
121
- <HuePicker
122
- value={getValue()}
123
- onChange={handleChange}
124
- onReset={handleHueReset}
125
- classNames='[--hue-preview-size:1.5rem] justify-self-end'
126
- />
127
- </ControlItem>
141
+ <Settings.Item title={label} description={t('hue description')}>
142
+ <div role='none' className='flex justify-self-end'>
143
+ <HuePicker value={getValue()} onChange={handleChange} onReset={handleHueReset} />
144
+ </div>
145
+ </Settings.Item>
128
146
  );
129
147
  },
130
148
  // TODO(wittjosiah): We need text input annotations for disabled and copyable.
131
149
  did: ({ label, getValue }) => {
132
150
  return (
133
- <ControlItemInput title={label} description={t('did description')}>
134
- <ButtonGroup>
135
- <Input.TextInput value={getValue()} disabled classNames='min-is-64' />
151
+ <Settings.ItemInput title={label} description={t('did description')}>
152
+ <ButtonGroup classNames='w-full'>
153
+ <Input.TextInput value={getValue()} disabled classNames='min-w-64' />
136
154
  <Clipboard.IconButton value={getValue() ?? ''} />
137
155
  </ButtonGroup>
138
- </ControlItemInput>
156
+ </Settings.ItemInput>
139
157
  );
140
158
  },
141
159
  }),
@@ -143,31 +161,16 @@ export const ProfileContainer = () => {
143
161
  );
144
162
 
145
163
  return (
146
- <StackItem.Content classNames='block overflow-y-auto'>
147
- <ControlPage>
148
- <Clipboard.Provider>
149
- <ControlSection title={t('profile label')} description={t('profile description')}>
150
- <Form
151
- schema={ProfileSchema}
152
- values={values}
153
- autoSave
154
- onSave={handleSave}
155
- Custom={customElements}
156
- classNames='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content] gap-4'
157
- outerSpacing={false}
158
- />
159
- </ControlSection>
160
- </Clipboard.Provider>
161
- </ControlPage>
162
- </StackItem.Content>
164
+ <Clipboard.Provider>
165
+ <Settings.Root>
166
+ <Settings.Section title={t('profile label')} description={t('profile description')}>
167
+ <Form.Root schema={UserProfile} values={values} fieldMap={fieldMap} onValuesChanged={handleChange}>
168
+ <Form.Content>
169
+ <Form.FieldSet />
170
+ </Form.Content>
171
+ </Form.Root>
172
+ </Settings.Section>
173
+ </Settings.Root>
174
+ </Clipboard.Provider>
163
175
  );
164
176
  };
165
-
166
- // TODO(wittjosiah): Integrate annotations with translations.
167
- const ProfileSchema = Schema.Struct({
168
- displayName: Schema.String.annotations({ title: 'Display name' }),
169
- emoji: Schema.String.annotations({ title: 'Avatar' }),
170
- hue: Schema.String.annotations({ title: 'Color' }),
171
- did: Schema.String.annotations({ title: 'DID' }),
172
- });
173
- type Profile = Schema.Schema.Type<typeof ProfileSchema>;
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { ProfileContainer } from './ProfileContainer';
6
+
7
+ export default ProfileContainer;
@@ -2,18 +2,17 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
- import { type StoryObj, type Meta } from '@storybook/react-vite';
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React, { useState } from 'react';
9
7
 
10
8
  import { useClient } from '@dxos/react-client';
11
9
  import { withClientProvider } from '@dxos/react-client/testing';
12
10
  import { AlertDialog, useAsyncEffect } from '@dxos/react-ui';
13
- import { withTheme, withLayout } from '@dxos/storybook-utils';
11
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
12
+
13
+ import { translations } from '../../translations';
14
14
 
15
- import { RecoveryCodeDialog, type RecoveryCodeDialogProps } from './RecoveryCodeDialog';
16
- import { translations } from '../translations';
15
+ import { RecoveryCodeDialog } from './RecoveryCodeDialog';
17
16
 
18
17
  const DefaultStory = () => {
19
18
  const client = useClient();
@@ -32,19 +31,19 @@ const DefaultStory = () => {
32
31
  );
33
32
  };
34
33
 
35
- const meta: Meta<RecoveryCodeDialogProps> = {
36
- title: 'plugins/plugin-client/RecoveryCodeDialog',
37
- component: RecoveryCodeDialog,
34
+ const meta = {
35
+ title: 'plugins/plugin-client/containers/RecoveryCodeDialog',
36
+ component: RecoveryCodeDialog as any,
38
37
  render: DefaultStory,
39
- decorators: [withClientProvider({ createIdentity: true }), withTheme, withLayout()],
38
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withClientProvider({ createIdentity: true })],
40
39
  parameters: {
41
40
  layout: 'fullscreen',
42
41
  translations,
43
42
  },
44
- };
43
+ } satisfies Meta<typeof DefaultStory>;
45
44
 
46
45
  export default meta;
47
46
 
48
- type Story = StoryObj<RecoveryCodeDialogProps>;
47
+ type Story = StoryObj<typeof meta>;
49
48
 
50
49
  export const Default: Story = {};