@dxos/plugin-client 0.8.4-main.bc674ce → 0.8.4-main.bcb3aa67d6

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 (360) hide show
  1. package/dist/lib/browser/chunk-ELAYKIQU.mjs +12 -0
  2. package/dist/lib/browser/chunk-ELAYKIQU.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  4. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-M43LJQ5U.mjs +175 -0
  6. package/dist/lib/browser/chunk-M43LJQ5U.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-WNJRYPGG.mjs +131 -0
  8. package/dist/lib/browser/chunk-WNJRYPGG.mjs.map +7 -0
  9. package/dist/lib/browser/cli/index.mjs +92 -80
  10. package/dist/lib/browser/cli/index.mjs.map +3 -3
  11. package/dist/lib/browser/create-agent-WXBNGUBQ.mjs +34 -0
  12. package/dist/lib/browser/create-agent-WXBNGUBQ.mjs.map +7 -0
  13. package/dist/lib/browser/create-identity-LIE4RCXJ.mjs +30 -0
  14. package/dist/lib/browser/create-identity-LIE4RCXJ.mjs.map +7 -0
  15. package/dist/lib/browser/create-passkey-PYZ47DJT.mjs +105 -0
  16. package/dist/lib/browser/create-passkey-PYZ47DJT.mjs.map +7 -0
  17. package/dist/lib/browser/create-recovery-code-NSRU3QDJ.mjs +44 -0
  18. package/dist/lib/browser/create-recovery-code-NSRU3QDJ.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +90 -93
  20. package/dist/lib/browser/index.mjs.map +4 -4
  21. package/dist/lib/browser/join-identity-B6DC2VW7.mjs +27 -0
  22. package/dist/lib/browser/join-identity-B6DC2VW7.mjs.map +7 -0
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/operations/index.mjs +13 -0
  25. package/dist/lib/browser/operations/index.mjs.map +7 -0
  26. package/dist/lib/browser/recover-identity-Z3H4GJ3L.mjs +26 -0
  27. package/dist/lib/browser/recover-identity-Z3H4GJ3L.mjs.map +7 -0
  28. package/dist/lib/browser/redeem-passkey-ODK47PIR.mjs +82 -0
  29. package/dist/lib/browser/redeem-passkey-ODK47PIR.mjs.map +7 -0
  30. package/dist/lib/browser/redeem-token-OYXEFDM3.mjs +37 -0
  31. package/dist/lib/browser/redeem-token-OYXEFDM3.mjs.map +7 -0
  32. package/dist/lib/browser/reset-storage-JAU4CS2U.mjs +26 -0
  33. package/dist/lib/browser/reset-storage-JAU4CS2U.mjs.map +7 -0
  34. package/dist/lib/browser/share-identity-H2JNYYCP.mjs +31 -0
  35. package/dist/lib/browser/share-identity-H2JNYYCP.mjs.map +7 -0
  36. package/dist/lib/browser/testing/index.mjs +22 -0
  37. package/dist/lib/browser/testing/index.mjs.map +7 -0
  38. package/dist/lib/browser/types/index.mjs +4 -5
  39. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  40. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  41. package/dist/lib/node-esm/chunk-IT5LAIV3.mjs +133 -0
  42. package/dist/lib/node-esm/chunk-IT5LAIV3.mjs.map +7 -0
  43. package/dist/lib/node-esm/chunk-J5RWSQT6.mjs +14 -0
  44. package/dist/lib/node-esm/chunk-J5RWSQT6.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-SJ6FDER5.mjs +176 -0
  46. package/dist/lib/node-esm/chunk-SJ6FDER5.mjs.map +7 -0
  47. package/dist/lib/node-esm/cli/index.mjs +92 -80
  48. package/dist/lib/node-esm/cli/index.mjs.map +3 -3
  49. package/dist/lib/node-esm/create-agent-I7VGTH7O.mjs +35 -0
  50. package/dist/lib/node-esm/create-agent-I7VGTH7O.mjs.map +7 -0
  51. package/dist/lib/node-esm/create-identity-NWY3YT5C.mjs +31 -0
  52. package/dist/lib/node-esm/create-identity-NWY3YT5C.mjs.map +7 -0
  53. package/dist/lib/node-esm/create-passkey-2LQEEIAN.mjs +106 -0
  54. package/dist/lib/node-esm/create-passkey-2LQEEIAN.mjs.map +7 -0
  55. package/dist/lib/node-esm/create-recovery-code-2MVK5CVE.mjs +45 -0
  56. package/dist/lib/node-esm/create-recovery-code-2MVK5CVE.mjs.map +7 -0
  57. package/dist/lib/node-esm/index.mjs +90 -93
  58. package/dist/lib/node-esm/index.mjs.map +4 -4
  59. package/dist/lib/node-esm/join-identity-6NT75FSO.mjs +28 -0
  60. package/dist/lib/node-esm/join-identity-6NT75FSO.mjs.map +7 -0
  61. package/dist/lib/node-esm/meta.json +1 -1
  62. package/dist/lib/node-esm/operations/index.mjs +14 -0
  63. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  64. package/dist/lib/node-esm/recover-identity-3UKCQ2M4.mjs +27 -0
  65. package/dist/lib/node-esm/recover-identity-3UKCQ2M4.mjs.map +7 -0
  66. package/dist/lib/node-esm/redeem-passkey-TDNEMVJJ.mjs +83 -0
  67. package/dist/lib/node-esm/redeem-passkey-TDNEMVJJ.mjs.map +7 -0
  68. package/dist/lib/node-esm/redeem-token-ZBYMFFKM.mjs +38 -0
  69. package/dist/lib/node-esm/redeem-token-ZBYMFFKM.mjs.map +7 -0
  70. package/dist/lib/node-esm/reset-storage-NY3ALG72.mjs +27 -0
  71. package/dist/lib/node-esm/reset-storage-NY3ALG72.mjs.map +7 -0
  72. package/dist/lib/node-esm/share-identity-FDIZWTDG.mjs +32 -0
  73. package/dist/lib/node-esm/share-identity-FDIZWTDG.mjs.map +7 -0
  74. package/dist/lib/node-esm/testing/index.mjs +23 -0
  75. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  76. package/dist/lib/node-esm/types/index.mjs +4 -5
  77. package/dist/types/src/ClientPlugin.d.ts +1 -1
  78. package/dist/types/src/ClientPlugin.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/app-graph-builder.d.ts +6 -0
  80. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -0
  81. package/dist/types/src/capabilities/client.d.ts +8 -0
  82. package/dist/types/src/capabilities/client.d.ts.map +1 -0
  83. package/dist/types/src/capabilities/index.d.ts +32 -7
  84. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/migrations.d.ts +5 -0
  86. package/dist/types/src/capabilities/migrations.d.ts.map +1 -0
  87. package/dist/types/src/capabilities/navigation-handler/index.d.ts +4 -0
  88. package/dist/types/src/capabilities/navigation-handler/index.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts +15 -0
  90. package/dist/types/src/capabilities/navigation-handler/navigation-handler.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/{client/index.d.ts → node.d.ts} +7 -3
  92. package/dist/types/src/capabilities/node.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  94. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/{react-context/react-context.d.ts → react-context.d.ts} +1 -1
  96. package/dist/types/src/capabilities/react-context.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/react-surface.d.ts +9 -0
  98. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/schema-defs.d.ts +5 -0
  100. package/dist/types/src/capabilities/schema-defs.d.ts.map +1 -0
  101. package/dist/types/src/cli/commands/config/view.d.ts.map +1 -1
  102. package/dist/types/src/cli/commands/device/info/info.d.ts +2 -2
  103. package/dist/types/src/cli/commands/device/info/info.d.ts.map +1 -1
  104. package/dist/types/src/cli/commands/device/list/list.d.ts +2 -2
  105. package/dist/types/src/cli/commands/device/list/list.d.ts.map +1 -1
  106. package/dist/types/src/cli/commands/device/update/update.d.ts.map +1 -1
  107. package/dist/types/src/cli/commands/edge/status.d.ts.map +1 -1
  108. package/dist/types/src/cli/commands/halo/create/create.d.ts +2 -2
  109. package/dist/types/src/cli/commands/halo/create/create.d.ts.map +1 -1
  110. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts +1 -1
  111. package/dist/types/src/cli/commands/halo/credential/list/list.d.ts.map +1 -1
  112. package/dist/types/src/cli/commands/halo/identity/identity.d.ts +2 -2
  113. package/dist/types/src/cli/commands/halo/identity/identity.d.ts.map +1 -1
  114. package/dist/types/src/cli/commands/halo/keys/keys.d.ts +2 -2
  115. package/dist/types/src/cli/commands/halo/keys/keys.d.ts.map +1 -1
  116. package/dist/types/src/cli/commands/halo/seed/seed.d.ts.map +1 -1
  117. package/dist/types/src/cli/commands/halo/update/update.d.ts.map +1 -1
  118. package/dist/types/src/cli/commands/profile/create.d.ts +2 -1
  119. package/dist/types/src/cli/commands/profile/create.d.ts.map +1 -1
  120. package/dist/types/src/cli/commands/profile/delete.d.ts +1 -1
  121. package/dist/types/src/cli/commands/profile/delete.d.ts.map +1 -1
  122. package/dist/types/src/cli/commands/profile/list.d.ts.map +1 -1
  123. package/dist/types/src/cli/plugin.d.ts +1 -1
  124. package/dist/types/src/cli/plugin.d.ts.map +1 -1
  125. package/dist/types/src/components/index.d.ts +0 -6
  126. package/dist/types/src/components/index.d.ts.map +1 -1
  127. package/dist/types/src/containers/DevicesContainer/DevicesContainer.d.ts.map +1 -0
  128. package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts +184 -0
  129. package/dist/types/src/containers/DevicesContainer/DevicesContainer.stories.d.ts.map +1 -0
  130. package/dist/types/src/containers/DevicesContainer/index.d.ts +3 -0
  131. package/dist/types/src/containers/DevicesContainer/index.d.ts.map +1 -0
  132. package/dist/types/src/containers/JoinDialog/JoinDialog.d.ts.map +1 -0
  133. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts +15 -0
  134. package/dist/types/src/containers/JoinDialog/JoinDialog.stories.d.ts.map +1 -0
  135. package/dist/types/src/containers/JoinDialog/index.d.ts +3 -0
  136. package/dist/types/src/containers/JoinDialog/index.d.ts.map +1 -0
  137. package/dist/types/src/containers/ProfileContainer/ProfileContainer.d.ts.map +1 -0
  138. package/dist/types/src/containers/ProfileContainer/ProfileContainer.stories.d.ts.map +1 -0
  139. package/dist/types/src/containers/ProfileContainer/index.d.ts +3 -0
  140. package/dist/types/src/containers/ProfileContainer/index.d.ts.map +1 -0
  141. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.d.ts.map +1 -0
  142. package/dist/types/src/containers/RecoveryCodeDialog/RecoveryCodeDialog.stories.d.ts.map +1 -0
  143. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts +4 -0
  144. package/dist/types/src/containers/RecoveryCodeDialog/index.d.ts.map +1 -0
  145. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.d.ts.map +1 -0
  146. package/dist/types/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.stories.d.ts.map +1 -0
  147. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts +3 -0
  148. package/dist/types/src/containers/RecoveryCredentialsContainer/index.d.ts.map +1 -0
  149. package/dist/types/src/{components → containers/ResetDialog}/ResetDialog.d.ts +1 -1
  150. package/dist/types/src/containers/ResetDialog/ResetDialog.d.ts.map +1 -0
  151. package/dist/types/src/{components → containers/ResetDialog}/ResetDialog.stories.d.ts +1 -1
  152. package/dist/types/src/containers/ResetDialog/ResetDialog.stories.d.ts.map +1 -0
  153. package/dist/types/src/containers/ResetDialog/index.d.ts +4 -0
  154. package/dist/types/src/containers/ResetDialog/index.d.ts.map +1 -0
  155. package/dist/types/src/containers/index.d.ts +10 -0
  156. package/dist/types/src/containers/index.d.ts.map +1 -0
  157. package/dist/types/src/index.d.ts +2 -4
  158. package/dist/types/src/index.d.ts.map +1 -1
  159. package/dist/types/src/operations/create-agent.d.ts +5 -0
  160. package/dist/types/src/operations/create-agent.d.ts.map +1 -0
  161. package/dist/types/src/operations/create-identity.d.ts +5 -0
  162. package/dist/types/src/operations/create-identity.d.ts.map +1 -0
  163. package/dist/types/src/operations/create-passkey.d.ts +5 -0
  164. package/dist/types/src/operations/create-passkey.d.ts.map +1 -0
  165. package/dist/types/src/operations/create-recovery-code.d.ts +5 -0
  166. package/dist/types/src/operations/create-recovery-code.d.ts.map +1 -0
  167. package/dist/types/src/operations/definitions.d.ts +36 -0
  168. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  169. package/dist/types/src/operations/index.d.ts +4 -0
  170. package/dist/types/src/operations/index.d.ts.map +1 -0
  171. package/dist/types/src/operations/join-identity.d.ts +5 -0
  172. package/dist/types/src/operations/join-identity.d.ts.map +1 -0
  173. package/dist/types/src/operations/recover-identity.d.ts +5 -0
  174. package/dist/types/src/operations/recover-identity.d.ts.map +1 -0
  175. package/dist/types/src/operations/redeem-passkey.d.ts +5 -0
  176. package/dist/types/src/operations/redeem-passkey.d.ts.map +1 -0
  177. package/dist/types/src/operations/redeem-token.d.ts +5 -0
  178. package/dist/types/src/operations/redeem-token.d.ts.map +1 -0
  179. package/dist/types/src/operations/reset-storage.d.ts +5 -0
  180. package/dist/types/src/operations/reset-storage.d.ts.map +1 -0
  181. package/dist/types/src/operations/share-identity.d.ts +5 -0
  182. package/dist/types/src/operations/share-identity.d.ts.map +1 -0
  183. package/dist/types/src/testing/index.d.ts +2 -0
  184. package/dist/types/src/testing/index.d.ts.map +1 -0
  185. package/dist/types/src/testing/initializeIdentity.d.ts +13 -0
  186. package/dist/types/src/testing/initializeIdentity.d.ts.map +1 -0
  187. package/dist/types/src/translations.d.ts.map +1 -1
  188. package/dist/types/src/types/capabilities.d.ts +1 -1
  189. package/dist/types/src/types/capabilities.d.ts.map +1 -1
  190. package/dist/types/src/types/schema.d.ts +26 -175
  191. package/dist/types/src/types/schema.d.ts.map +1 -1
  192. package/dist/types/tsconfig.tsbuildinfo +1 -1
  193. package/package.json +72 -36
  194. package/src/ClientPlugin.ts +38 -25
  195. package/src/capabilities/{app-graph-builder/app-graph-builder.ts → app-graph-builder.ts} +21 -19
  196. package/src/capabilities/{client/client.ts → client.ts} +16 -12
  197. package/src/capabilities/index.ts +15 -7
  198. package/src/capabilities/{migrations/migrations.ts → migrations.ts} +4 -4
  199. package/src/capabilities/navigation-handler/index.ts +9 -0
  200. package/src/capabilities/navigation-handler/navigation-handler.ts +64 -0
  201. package/src/capabilities/node.ts +13 -0
  202. package/src/capabilities/operation-handler.ts +16 -0
  203. package/src/capabilities/{react-context/react-context.tsx → react-context.tsx} +7 -7
  204. package/src/capabilities/{react-surface/react-surface.tsx → react-surface.tsx} +13 -13
  205. package/src/capabilities/{schema-defs/schema-defs.ts → schema-defs.ts} +8 -7
  206. package/src/cli/commands/config/view.ts +4 -1
  207. package/src/cli/commands/device/info/info.test.ts +0 -1
  208. package/src/cli/commands/device/info/info.ts +0 -2
  209. package/src/cli/commands/device/list/list.test.ts +0 -1
  210. package/src/cli/commands/device/list/list.ts +0 -2
  211. package/src/cli/commands/device/update/update.ts +0 -2
  212. package/src/cli/commands/edge/status.ts +3 -2
  213. package/src/cli/commands/halo/create/create.ts +13 -6
  214. package/src/cli/commands/halo/credential/list/list.test.ts +0 -1
  215. package/src/cli/commands/halo/credential/list/list.ts +4 -7
  216. package/src/cli/commands/halo/identity/identity.ts +0 -1
  217. package/src/cli/commands/halo/keys/keys.ts +0 -2
  218. package/src/cli/commands/halo/seed/seed.ts +0 -2
  219. package/src/cli/commands/halo/update/update.test.ts +0 -1
  220. package/src/cli/commands/halo/update/update.ts +0 -2
  221. package/src/cli/commands/profile/create.ts +9 -6
  222. package/src/cli/commands/profile/delete.ts +5 -2
  223. package/src/cli/commands/profile/list.ts +12 -11
  224. package/src/cli/plugin.ts +12 -13
  225. package/src/components/index.ts +0 -7
  226. package/src/constants.ts +4 -4
  227. package/src/{components → containers/DevicesContainer}/DevicesContainer.stories.tsx +10 -7
  228. package/src/{components → containers/DevicesContainer}/DevicesContainer.tsx +76 -83
  229. package/src/containers/DevicesContainer/index.ts +7 -0
  230. package/src/containers/JoinDialog/JoinDialog.stories.tsx +43 -0
  231. package/src/{components → containers/JoinDialog}/JoinDialog.tsx +20 -15
  232. package/src/containers/JoinDialog/index.ts +7 -0
  233. package/src/{components → containers/ProfileContainer}/ProfileContainer.stories.tsx +4 -4
  234. package/src/{components → containers/ProfileContainer}/ProfileContainer.tsx +21 -29
  235. package/src/containers/ProfileContainer/index.ts +7 -0
  236. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.tsx +4 -4
  237. package/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.tsx +29 -26
  238. package/src/containers/RecoveryCodeDialog/index.ts +8 -0
  239. package/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.stories.tsx +10 -7
  240. package/src/containers/RecoveryCredentialsContainer/RecoveryCredentialsContainer.tsx +66 -0
  241. package/src/containers/RecoveryCredentialsContainer/index.ts +7 -0
  242. package/src/{components → containers/ResetDialog}/ResetDialog.stories.tsx +27 -14
  243. package/src/{components → containers/ResetDialog}/ResetDialog.tsx +11 -11
  244. package/src/containers/ResetDialog/index.ts +8 -0
  245. package/src/containers/index.ts +15 -0
  246. package/src/index.ts +2 -5
  247. package/src/meta.ts +1 -1
  248. package/src/operations/create-agent.ts +27 -0
  249. package/src/operations/create-identity.ts +30 -0
  250. package/src/operations/create-passkey.ts +89 -0
  251. package/src/operations/create-recovery-code.ts +35 -0
  252. package/src/operations/definitions.ts +107 -0
  253. package/src/operations/index.ts +20 -0
  254. package/src/operations/join-identity.ts +29 -0
  255. package/src/operations/recover-identity.ts +29 -0
  256. package/src/operations/redeem-passkey.ts +86 -0
  257. package/src/operations/redeem-token.ts +32 -0
  258. package/src/operations/reset-storage.ts +28 -0
  259. package/src/operations/share-identity.ts +27 -0
  260. package/src/testing/index.ts +5 -0
  261. package/src/testing/initializeIdentity.ts +24 -0
  262. package/src/translations.ts +53 -42
  263. package/src/types/capabilities.ts +4 -4
  264. package/src/types/events.ts +6 -6
  265. package/src/types/schema.ts +18 -123
  266. package/dist/lib/browser/app-graph-builder-3FGBMLTF.mjs +0 -118
  267. package/dist/lib/browser/app-graph-builder-3FGBMLTF.mjs.map +0 -7
  268. package/dist/lib/browser/chunk-4BZGRIFS.mjs +0 -293
  269. package/dist/lib/browser/chunk-4BZGRIFS.mjs.map +0 -7
  270. package/dist/lib/browser/chunk-F7H2Y3Z2.mjs +0 -18
  271. package/dist/lib/browser/chunk-F7H2Y3Z2.mjs.map +0 -7
  272. package/dist/lib/browser/chunk-G7C3S2BE.mjs +0 -15
  273. package/dist/lib/browser/chunk-G7C3S2BE.mjs.map +0 -7
  274. package/dist/lib/browser/client-IX5LMWV4.mjs +0 -86
  275. package/dist/lib/browser/client-IX5LMWV4.mjs.map +0 -7
  276. package/dist/lib/browser/migrations-3EBTAW3N.mjs +0 -24
  277. package/dist/lib/browser/migrations-3EBTAW3N.mjs.map +0 -7
  278. package/dist/lib/browser/operation-resolver-2NT3ISVP.mjs +0 -298
  279. package/dist/lib/browser/operation-resolver-2NT3ISVP.mjs.map +0 -7
  280. package/dist/lib/browser/react-context-4UABG3GP.mjs +0 -24
  281. package/dist/lib/browser/react-context-4UABG3GP.mjs.map +0 -7
  282. package/dist/lib/browser/react-surface-RSQ74XCT.mjs +0 -675
  283. package/dist/lib/browser/react-surface-RSQ74XCT.mjs.map +0 -7
  284. package/dist/lib/browser/schema-defs-O7VLP745.mjs +0 -26
  285. package/dist/lib/browser/schema-defs-O7VLP745.mjs.map +0 -7
  286. package/dist/lib/node-esm/app-graph-builder-2PIYVUNC.mjs +0 -119
  287. package/dist/lib/node-esm/app-graph-builder-2PIYVUNC.mjs.map +0 -7
  288. package/dist/lib/node-esm/chunk-BCELGXRI.mjs +0 -20
  289. package/dist/lib/node-esm/chunk-BCELGXRI.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-JAF64TFQ.mjs +0 -295
  291. package/dist/lib/node-esm/chunk-JAF64TFQ.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-PRAFFO54.mjs +0 -16
  293. package/dist/lib/node-esm/chunk-PRAFFO54.mjs.map +0 -7
  294. package/dist/lib/node-esm/client-FFPK5UFP.mjs +0 -87
  295. package/dist/lib/node-esm/client-FFPK5UFP.mjs.map +0 -7
  296. package/dist/lib/node-esm/migrations-WSZSFGDK.mjs +0 -25
  297. package/dist/lib/node-esm/migrations-WSZSFGDK.mjs.map +0 -7
  298. package/dist/lib/node-esm/operation-resolver-VW5R2BE4.mjs +0 -299
  299. package/dist/lib/node-esm/operation-resolver-VW5R2BE4.mjs.map +0 -7
  300. package/dist/lib/node-esm/react-context-UVXMGPW4.mjs +0 -25
  301. package/dist/lib/node-esm/react-context-UVXMGPW4.mjs.map +0 -7
  302. package/dist/lib/node-esm/react-surface-KBHANGGC.mjs +0 -676
  303. package/dist/lib/node-esm/react-surface-KBHANGGC.mjs.map +0 -7
  304. package/dist/lib/node-esm/schema-defs-QLRGBIKY.mjs +0 -27
  305. package/dist/lib/node-esm/schema-defs-QLRGBIKY.mjs.map +0 -7
  306. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +0 -6
  307. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +0 -1
  308. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +0 -3
  309. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +0 -1
  310. package/dist/types/src/capabilities/client/client.d.ts +0 -8
  311. package/dist/types/src/capabilities/client/client.d.ts.map +0 -1
  312. package/dist/types/src/capabilities/client/index.d.ts.map +0 -1
  313. package/dist/types/src/capabilities/migrations/index.d.ts +0 -3
  314. package/dist/types/src/capabilities/migrations/index.d.ts.map +0 -1
  315. package/dist/types/src/capabilities/migrations/migrations.d.ts +0 -5
  316. package/dist/types/src/capabilities/migrations/migrations.d.ts.map +0 -1
  317. package/dist/types/src/capabilities/operation-resolver/index.d.ts +0 -5
  318. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +0 -1
  319. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +0 -8
  320. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +0 -1
  321. package/dist/types/src/capabilities/react-context/index.d.ts +0 -7
  322. package/dist/types/src/capabilities/react-context/index.d.ts.map +0 -1
  323. package/dist/types/src/capabilities/react-context/react-context.d.ts.map +0 -1
  324. package/dist/types/src/capabilities/react-surface/index.d.ts +0 -5
  325. package/dist/types/src/capabilities/react-surface/index.d.ts.map +0 -1
  326. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +0 -9
  327. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +0 -1
  328. package/dist/types/src/capabilities/schema-defs/index.d.ts +0 -3
  329. package/dist/types/src/capabilities/schema-defs/index.d.ts.map +0 -1
  330. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts +0 -5
  331. package/dist/types/src/capabilities/schema-defs/schema-defs.d.ts.map +0 -1
  332. package/dist/types/src/components/DevicesContainer.d.ts.map +0 -1
  333. package/dist/types/src/components/DevicesContainer.stories.d.ts +0 -181
  334. package/dist/types/src/components/DevicesContainer.stories.d.ts.map +0 -1
  335. package/dist/types/src/components/JoinDialog.d.ts.map +0 -1
  336. package/dist/types/src/components/ProfileContainer.d.ts.map +0 -1
  337. package/dist/types/src/components/ProfileContainer.stories.d.ts.map +0 -1
  338. package/dist/types/src/components/RecoveryCodeDialog.d.ts.map +0 -1
  339. package/dist/types/src/components/RecoveryCodeDialog.stories.d.ts.map +0 -1
  340. package/dist/types/src/components/RecoveryCredentialsContainer.d.ts.map +0 -1
  341. package/dist/types/src/components/RecoveryCredentialsContainer.stories.d.ts.map +0 -1
  342. package/dist/types/src/components/ResetDialog.d.ts.map +0 -1
  343. package/dist/types/src/components/ResetDialog.stories.d.ts.map +0 -1
  344. package/src/capabilities/app-graph-builder/index.ts +0 -7
  345. package/src/capabilities/client/index.ts +0 -7
  346. package/src/capabilities/migrations/index.ts +0 -7
  347. package/src/capabilities/operation-resolver/index.ts +0 -7
  348. package/src/capabilities/operation-resolver/operation-resolver.ts +0 -248
  349. package/src/capabilities/react-context/index.ts +0 -7
  350. package/src/capabilities/react-surface/index.ts +0 -7
  351. package/src/capabilities/schema-defs/index.ts +0 -7
  352. package/src/components/RecoveryCredentialsContainer.tsx +0 -68
  353. /package/dist/types/src/{components → containers/DevicesContainer}/DevicesContainer.d.ts +0 -0
  354. /package/dist/types/src/{components → containers/JoinDialog}/JoinDialog.d.ts +0 -0
  355. /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.d.ts +0 -0
  356. /package/dist/types/src/{components → containers/ProfileContainer}/ProfileContainer.stories.d.ts +0 -0
  357. /package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.d.ts +0 -0
  358. /package/dist/types/src/{components → containers/RecoveryCodeDialog}/RecoveryCodeDialog.stories.d.ts +0 -0
  359. /package/dist/types/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.d.ts +0 -0
  360. /package/dist/types/src/{components → containers/RecoveryCredentialsContainer}/RecoveryCredentialsContainer.stories.d.ts +0 -0
@@ -5,28 +5,20 @@
5
5
  import React, { useCallback, useEffect, useState } from 'react';
6
6
  import { QR } from 'react-qr-rounded';
7
7
 
8
- import { useOperationInvoker } from '@dxos/app-framework/react';
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
14
  import { Button, Clipboard, Icon, IconButton, List, useId, useTranslation } 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 { translationKey } from '@dxos/shell/react';
24
- import { AuthCode, Centered, DeviceListItem, Emoji, Viewport } from '@dxos/shell/react';
15
+ import { Settings } from '@dxos/react-ui-form';
16
+ import { AuthCode, Centered, DeviceListItem, Emoji, Viewport, translationKey } from '@dxos/shell/react';
25
17
  import { osTranslations } from '@dxos/ui-theme';
26
18
  import { hexToEmoji } from '@dxos/util';
27
19
 
28
- import { meta } from '../meta';
29
- import { ClientOperation } from '../types';
20
+ import { meta } from '#meta';
21
+ import { ClientOperation } from '#operations';
30
22
 
31
23
  export type DevicesContainerProps = {
32
24
  createInvitationUrl?: (invitationCode: string) => string;
@@ -52,57 +44,55 @@ export const DevicesContainer = ({ createInvitationUrl }: DevicesContainerProps)
52
44
 
53
45
  return (
54
46
  <Clipboard.Provider>
55
- <ControlPage>
56
- <ControlSection
57
- title={t('devices verbose label', { ns: meta.id })}
58
- description={t('devices description', { ns: meta.id })}
47
+ <Settings.Viewport>
48
+ <Settings.Section
49
+ title={t('devices-verbose.label', { ns: meta.id })}
50
+ description={t('devices.description', { ns: meta.id })}
59
51
  >
60
- <ControlFrame>
61
- <ControlFrameItem title={t('devices label', { ns: meta.id })}>
52
+ <Settings.Panel>
53
+ <div role='group' className='min-w-0'>
54
+ <h3 className='text-lg mb-2'>{t('devices.label', { ns: meta.id })}</h3>
62
55
  <List>
63
- {devices.map((device: Device) => {
64
- return (
65
- <DeviceListItem key={device.deviceKey.toHex()} device={device} connectionState={connectionState} />
66
- );
67
- })}
56
+ {devices.map((device: Device) => (
57
+ <DeviceListItem key={device.deviceKey.toHex()} device={device} connectionState={connectionState} />
58
+ ))}
68
59
  </List>
69
- </ControlFrameItem>
60
+ </div>
70
61
  {createInvitationUrl && (
71
- <ControlFrameItem title='Add device'>
62
+ <div role='group' className='min-w-0'>
63
+ <h3 className='text-lg mb-2'>{t('add-device.label')}</h3>
72
64
  <DeviceInvitation createInvitationUrl={createInvitationUrl} />
73
- </ControlFrameItem>
65
+ </div>
74
66
  )}
75
- </ControlFrame>
76
- </ControlSection>
77
- <ControlSection
78
- title={t('danger zone title', { ns: meta.id })}
79
- description={t('danger zone description', { ns: meta.id })}
67
+ </Settings.Panel>
68
+ </Settings.Section>
69
+ <Settings.Section
70
+ title={t('danger-zone.title', { ns: meta.id })}
71
+ description={t('danger-zone.description', { ns: meta.id })}
80
72
  >
81
- <ControlGroup>
82
- <ControlItem title={t('reset device label')} description={t('reset device description', { ns: meta.id })}>
83
- <Button variant='destructive' onClick={handleResetStorage} data-testid='devicesContainer.reset'>
84
- {t('reset device label')}
85
- </Button>
86
- </ControlItem>
87
- <ControlItem
88
- title={t('recover identity label')}
89
- description={t('recover identity description', { ns: meta.id })}
90
- >
91
- <Button variant='destructive' onClick={handleRecover} data-testid='devicesContainer.recover'>
92
- {t('recover identity label')}
93
- </Button>
94
- </ControlItem>
95
- <ControlItem
96
- title={t('join new identity label')}
97
- description={t('join new identity description', { ns: meta.id })}
98
- >
99
- <Button variant='destructive' onClick={handleJoinNewIdentity} data-testid='devicesContainer.joinExisting'>
100
- {t('join new identity label')}
101
- </Button>
102
- </ControlItem>
103
- </ControlGroup>
104
- </ControlSection>
105
- </ControlPage>
73
+ <Settings.Item title={t('reset-device.label')} description={t('reset-device.description', { ns: meta.id })}>
74
+ <Button variant='destructive' onClick={handleResetStorage} data-testid='devicesContainer.reset'>
75
+ {t('reset-device.label')}
76
+ </Button>
77
+ </Settings.Item>
78
+ <Settings.Item
79
+ title={t('recover-identity.label')}
80
+ description={t('recover-identity.description', { ns: meta.id })}
81
+ >
82
+ <Button variant='destructive' onClick={handleRecover} data-testid='devicesContainer.recover'>
83
+ {t('recover-identity.label')}
84
+ </Button>
85
+ </Settings.Item>
86
+ <Settings.Item
87
+ title={t('join-new-identity.label')}
88
+ description={t('join-new-identity.description', { ns: meta.id })}
89
+ >
90
+ <Button variant='destructive' onClick={handleJoinNewIdentity} data-testid='devicesContainer.joinExisting'>
91
+ {t('join-new-identity.label')}
92
+ </Button>
93
+ </Settings.Item>
94
+ </Settings.Section>
95
+ </Settings.Viewport>
106
96
  </Clipboard.Provider>
107
97
  );
108
98
  };
@@ -186,14 +176,15 @@ const InvitationSection = ({
186
176
  : state >= Invitation.State.READY_FOR_AUTHENTICATION && authCode
187
177
  ? 'auth-code'
188
178
  : 'qr-code';
179
+
189
180
  return activeView === 'init' ? (
190
181
  <>
191
- <p className='text-description mbe-2'>{t('add device description')}</p>
182
+ <p className='text-description mb-2'>{t('add-device.description')}</p>
192
183
  <IconButton
193
184
  icon='ph--plus--regular'
194
- label={t('create device invitation label')}
185
+ label={t('create-device-invitation.label')}
195
186
  disabled={state >= 0}
196
- classNames='is-full'
187
+ classNames='w-full'
197
188
  data-testid='devicesContainer.createInvitation'
198
189
  onClick={onInvitationCreate}
199
190
  />
@@ -224,25 +215,27 @@ const InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel
224
215
  const emoji = hexToEmoji(id);
225
216
  return (
226
217
  <>
227
- <p className='text-description'>{t('qr code description', { ns: meta.id })}</p>
228
- <div role='group' className='grid grid-cols-[1fr_min-content] mlb-2 gap-2'>
229
- <div role='none' className='is-full aspect-square relative text-description'>
230
- <QR
231
- rounding={100}
232
- backgroundColor='transparent'
233
- color='currentColor'
234
- aria-labelledby={qrLabel}
235
- errorCorrectionLevel='Q'
236
- cutout={true}
237
- >
238
- {url ?? 'never'}
239
- </QR>
240
- <Centered>
241
- <Emoji text={emoji} />
242
- </Centered>
218
+ <p className='text-description'>{t('qr-code.description', { ns: meta.id })}</p>
219
+ <div role='group' className='grid grid-cols-[1fr_min-content]'>
220
+ <div className='flex justify-center py-4'>
221
+ <div role='none' className='w-full md:max-w-80 aspect-square relative text-description'>
222
+ <QR
223
+ rounding={100}
224
+ backgroundColor='transparent'
225
+ color='currentColor'
226
+ aria-labelledby={qrLabel}
227
+ errorCorrectionLevel='Q'
228
+ cutout={true}
229
+ >
230
+ {url ?? 'never'}
231
+ </QR>
232
+ <Centered>
233
+ <Emoji text={emoji} />
234
+ </Centered>
235
+ </div>
243
236
  </div>
244
237
  <span id={qrLabel} className='sr-only'>
245
- {t('qr label')}
238
+ {t('qr.label')}
246
239
  </span>
247
240
  </div>
248
241
  {/* TODO(burdon): Factor out button bar */}
@@ -250,7 +243,7 @@ const InvitationQR = ({ id, url, onCancel }: { id: string; url: string; onCancel
250
243
  <div className='flex gap-2'>
251
244
  <Clipboard.Button value={url ?? 'never'} />
252
245
  <Button variant='ghost' onClick={onCancel}>
253
- {t('cancel label')}
246
+ {t('cancel.label')}
254
247
  </Button>
255
248
  </div>
256
249
  </div>
@@ -264,12 +257,12 @@ const InvitationAuthCode = ({ id, code, onCancel }: { id: string; code: string;
264
257
 
265
258
  return (
266
259
  <>
267
- <p className='text-description'>{t('auth other device emoji message')}</p>
268
- {emoji && <Emoji text={emoji} className='mli-auto mlb-2 text-center' />}
269
- <p className='text-description'>{t('auth code message')}</p>
270
- <AuthCode code={code} large classNames='mli-auto mlb-2 text-center grow' />
260
+ <p className='text-description'>{t('auth-other-device-emoji.message')}</p>
261
+ {emoji && <Emoji text={emoji} className='mx-auto my-2 text-center' />}
262
+ <p className='text-description'>{t('auth-code.message')}</p>
263
+ <AuthCode code={code} large classNames='mx-auto my-2 text-center grow' />
271
264
  <Button variant='ghost' onClick={onCancel}>
272
- {t('cancel label')}
265
+ {t('cancel.label')}
273
266
  </Button>
274
267
  </>
275
268
  );
@@ -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,43 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
6
+ import React from 'react';
7
+
8
+ import { withPluginManager } from '@dxos/app-framework/testing';
9
+ import { Dialog } from '@dxos/react-ui';
10
+ import { corePlugins } from '@dxos/plugin-testing';
11
+
12
+ import { ClientPlugin } from '../../ClientPlugin';
13
+ import { translations } from '../../translations';
14
+
15
+ import { JoinDialog } from './JoinDialog';
16
+
17
+ const DefaultStory = () => (
18
+ <Dialog.Root defaultOpen>
19
+ <Dialog.Overlay>
20
+ <JoinDialog />
21
+ </Dialog.Overlay>
22
+ </Dialog.Root>
23
+ );
24
+
25
+ const meta = {
26
+ title: 'plugins/plugin-client/containers/JoinDialog',
27
+ component: JoinDialog,
28
+ render: DefaultStory,
29
+ decorators: [
30
+ withPluginManager({
31
+ plugins: [...corePlugins(), ClientPlugin({})],
32
+ }),
33
+ ],
34
+ parameters: {
35
+ translations,
36
+ },
37
+ } satisfies Meta<typeof JoinDialog>;
38
+
39
+ export default meta;
40
+
41
+ type Story = StoryObj<typeof meta>;
42
+
43
+ export const Default: Story = {};
@@ -4,16 +4,16 @@
4
4
 
5
5
  import React, { useCallback } from 'react';
6
6
 
7
- import { Common } from '@dxos/app-framework';
8
- import { useOperationInvoker } from '@dxos/app-framework/react';
9
- import { ObservabilityOperation } from '@dxos/plugin-observability/types';
7
+ import { useOperationInvoker } from '@dxos/app-framework/ui';
8
+ import { LayoutOperation } from '@dxos/app-toolkit';
9
+ import { ObservabilityOperation } from '@dxos/plugin-observability/operations';
10
10
  import { type InvitationResult } from '@dxos/react-client/invitations';
11
11
  import { Dialog, useTranslation } from '@dxos/react-ui';
12
12
  import { JoinPanel, type JoinPanelProps } from '@dxos/shell/react';
13
13
  import { osTranslations } from '@dxos/ui-theme';
14
14
 
15
- import { meta } from '../meta';
16
- import { ClientOperation } from '../types';
15
+ import { meta } from '#meta';
16
+ import { ClientOperation } from '#operations';
17
17
 
18
18
  export const JoinDialog = (props: JoinPanelProps) => {
19
19
  const { invokePromise } = useOperationInvoker();
@@ -25,7 +25,7 @@ export const JoinDialog = (props: JoinPanelProps) => {
25
25
  async (result: InvitationResult | null) => {
26
26
  if (result?.identityKey) {
27
27
  await Promise.all([
28
- invokePromise(Common.LayoutOperation.UpdateDialog, { state: false }),
28
+ invokePromise(LayoutOperation.UpdateDialog, { state: false }),
29
29
  invokePromise(ObservabilityOperation.SendEvent, {
30
30
  name: props.initialDisposition === 'recover-identity' ? 'identity.recover' : 'identity.join',
31
31
  }),
@@ -35,17 +35,22 @@ export const JoinDialog = (props: JoinPanelProps) => {
35
35
  [invokePromise],
36
36
  );
37
37
 
38
+ // TODO(burdon): Move JoinHeading into Dialog.Heading.
38
39
  return (
39
40
  <Dialog.Content>
40
- <Dialog.Title classNames='sr-only'>{t('join space label', { ns: osTranslations })}</Dialog.Title>
41
- <JoinPanel
42
- mode='halo-only'
43
- {...props}
44
- exitActionParent={<Dialog.Close asChild />}
45
- doneActionParent={<Dialog.Close asChild />}
46
- onCancelResetStorage={handleCancelResetStorage}
47
- onDone={handleDone}
48
- />
41
+ <Dialog.Header>
42
+ <Dialog.Title classNames='sr-only'>{t('join-space.label', { ns: osTranslations })}</Dialog.Title>
43
+ </Dialog.Header>
44
+ <Dialog.Body>
45
+ <JoinPanel
46
+ {...props}
47
+ mode='halo-only'
48
+ exitActionParent={<Dialog.Close asChild />}
49
+ doneActionParent={<Dialog.Close asChild />}
50
+ onCancelResetStorage={handleCancelResetStorage}
51
+ onDone={handleDone}
52
+ />
53
+ </Dialog.Body>
49
54
  </Dialog.Content>
50
55
  );
51
56
  };
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { JoinDialog } from './JoinDialog';
6
+
7
+ export default JoinDialog;
@@ -5,16 +5,16 @@
5
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
6
6
 
7
7
  import { withClientProvider } from '@dxos/react-client/testing';
8
- import { withTheme } from '@dxos/react-ui/testing';
8
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
9
9
 
10
- import { translations } from '../translations';
10
+ import { translations } from '../../translations';
11
11
 
12
12
  import { ProfileContainer } from './ProfileContainer';
13
13
 
14
14
  const meta = {
15
- title: 'plugins/plugin-client/ProfileContainer',
15
+ title: 'plugins/plugin-client/containers/ProfileContainer',
16
16
  component: ProfileContainer,
17
- decorators: [withTheme, withClientProvider({ createIdentity: true })],
17
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withClientProvider({ createIdentity: true })],
18
18
  parameters: {
19
19
  layout: 'fullscreen',
20
20
  translations,
@@ -9,19 +9,11 @@ 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
- ControlItem,
14
- ControlItemInput,
15
- ControlPage,
16
- ControlSection,
17
- Form,
18
- type FormFieldMap,
19
- type FormUpdateMeta,
20
- } from '@dxos/react-ui-form';
12
+ import { Form, type FormFieldMap, type FormUpdateMeta, Settings } from '@dxos/react-ui-form';
21
13
  import { EmojiPickerBlock, HuePicker } from '@dxos/react-ui-pickers';
22
14
  import { hexToEmoji, hexToHue } from '@dxos/util';
23
15
 
24
- import { meta } from '../meta';
16
+ import { meta } from '#meta';
25
17
 
26
18
  // TOOD(burdon): Factor out?
27
19
  // TODO(wittjosiah): Integrate annotations with translations.
@@ -109,14 +101,14 @@ export const ProfileContainer = () => {
109
101
  );
110
102
 
111
103
  return (
112
- <ControlItemInput title={label} description={t('display name description')}>
104
+ <Settings.Item title={label} description={t('display-name.description')}>
113
105
  <Input.TextInput
114
106
  value={getValue()}
115
107
  onChange={handleChange}
116
- placeholder={t('display name input placeholder')}
117
- classNames='min-is-64'
108
+ placeholder={t('display-name-input.placeholder')}
109
+ classNames='min-w-64'
118
110
  />
119
- </ControlItemInput>
111
+ </Settings.Item>
120
112
  );
121
113
  },
122
114
  emoji: ({ type, label, getValue, onValueChange }) => {
@@ -127,7 +119,7 @@ export const ProfileContainer = () => {
127
119
  );
128
120
 
129
121
  return (
130
- <ControlItem title={label} description={t('icon description')}>
122
+ <Settings.Item title={label} description={t('icon.description')}>
131
123
  <EmojiPickerBlock
132
124
  triggerVariant='default'
133
125
  emoji={getValue()}
@@ -135,7 +127,7 @@ export const ProfileContainer = () => {
135
127
  onClickClear={handleEmojiReset}
136
128
  classNames='justify-self-end'
137
129
  />
138
- </ControlItem>
130
+ </Settings.Item>
139
131
  );
140
132
  },
141
133
  hue: ({ type, label, getValue, onValueChange }) => {
@@ -146,22 +138,22 @@ export const ProfileContainer = () => {
146
138
  );
147
139
 
148
140
  return (
149
- <ControlItem title={label} description={t('hue description')}>
141
+ <Settings.Item title={label} description={t('hue.description')}>
150
142
  <div role='none' className='flex justify-self-end'>
151
143
  <HuePicker value={getValue()} onChange={handleChange} onReset={handleHueReset} />
152
144
  </div>
153
- </ControlItem>
145
+ </Settings.Item>
154
146
  );
155
147
  },
156
148
  // TODO(wittjosiah): We need text input annotations for disabled and copyable.
157
149
  did: ({ label, getValue }) => {
158
150
  return (
159
- <ControlItemInput title={label} description={t('did description')}>
160
- <ButtonGroup>
161
- <Input.TextInput value={getValue()} disabled classNames='min-is-64' />
151
+ <Settings.Item title={label} description={t('did.description')}>
152
+ <ButtonGroup classNames='w-full'>
153
+ <Input.TextInput value={getValue()} disabled classNames='min-w-64' />
162
154
  <Clipboard.IconButton value={getValue() ?? ''} />
163
155
  </ButtonGroup>
164
- </ControlItemInput>
156
+ </Settings.Item>
165
157
  );
166
158
  },
167
159
  }),
@@ -169,16 +161,16 @@ export const ProfileContainer = () => {
169
161
  );
170
162
 
171
163
  return (
172
- <ControlPage>
173
- <Clipboard.Provider>
174
- <ControlSection title={t('profile label')} description={t('profile description')}>
164
+ <Clipboard.Provider>
165
+ <Settings.Viewport>
166
+ <Settings.Section title={t('profile.label')} description={t('profile.description')}>
175
167
  <Form.Root schema={UserProfile} values={values} fieldMap={fieldMap} onValuesChanged={handleChange}>
176
168
  <Form.Content>
177
- <Form.FieldSet classNames='container-max-width grid grid-cols-1 md:grid-cols-[1fr_min-content]' />
169
+ <Form.FieldSet />
178
170
  </Form.Content>
179
171
  </Form.Root>
180
- </ControlSection>
181
- </Clipboard.Provider>
182
- </ControlPage>
172
+ </Settings.Section>
173
+ </Settings.Viewport>
174
+ </Clipboard.Provider>
183
175
  );
184
176
  };
@@ -0,0 +1,7 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { ProfileContainer } from './ProfileContainer';
6
+
7
+ export default ProfileContainer;
@@ -8,9 +8,9 @@ import React, { useState } from 'react';
8
8
  import { useClient } from '@dxos/react-client';
9
9
  import { withClientProvider } from '@dxos/react-client/testing';
10
10
  import { AlertDialog, useAsyncEffect } from '@dxos/react-ui';
11
- import { withTheme } from '@dxos/react-ui/testing';
11
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
12
12
 
13
- import { translations } from '../translations';
13
+ import { translations } from '../../translations';
14
14
 
15
15
  import { RecoveryCodeDialog } from './RecoveryCodeDialog';
16
16
 
@@ -32,10 +32,10 @@ const DefaultStory = () => {
32
32
  };
33
33
 
34
34
  const meta = {
35
- title: 'plugins/plugin-client/RecoveryCodeDialog',
35
+ title: 'plugins/plugin-client/containers/RecoveryCodeDialog',
36
36
  component: RecoveryCodeDialog as any,
37
37
  render: DefaultStory,
38
- decorators: [withTheme, withClientProvider({ createIdentity: true })],
38
+ decorators: [withTheme(), withLayout({ layout: 'fullscreen' }), withClientProvider({ createIdentity: true })],
39
39
  parameters: {
40
40
  layout: 'fullscreen',
41
41
  translations,
@@ -6,12 +6,13 @@ import React, { useCallback, useState } from 'react';
6
6
 
7
7
  import { AlertDialog, Button, Clipboard, Input, useTranslation } from '@dxos/react-ui';
8
8
 
9
- import { meta } from '../meta';
9
+ import { meta } from '#meta';
10
10
 
11
11
  export type RecoveryCodeDialogProps = {
12
12
  code: string;
13
13
  };
14
14
 
15
+ // TODO(burdon): Should have cancel button.
15
16
  export const RecoveryCodeDialog = ({ code }: RecoveryCodeDialogProps) => {
16
17
  const { t } = useTranslation(meta.id);
17
18
  const [confirmation, setConfirmation] = useState(false);
@@ -19,33 +20,35 @@ export const RecoveryCodeDialog = ({ code }: RecoveryCodeDialogProps) => {
19
20
  const handleConfirmation = useCallback((checked: boolean) => setConfirmation(checked), []);
20
21
 
21
22
  return (
22
- <AlertDialog.Content classNames='bs-content min-bs-[15rem] max-bs-full md:max-is-[40rem] overflow-hidden'>
23
- <AlertDialog.Title>{t('recovery code dialog title')}</AlertDialog.Title>
24
- <p className='plb-4'>{t('recovery code dialog description')}</p>
25
- <Clipboard.Provider>
26
- <Code code={code} />
27
- </Clipboard.Provider>
28
- <div className='flex flex-col plb-4 gap-2'>
29
- <p>{t('recovery code dialog warning 1')}</p>
30
- <p>{t('recovery code dialog warning 2')}</p>
31
- </div>
32
- <div className='flex items-center gap-2 pbe-4'>
33
- <Input.Root>
34
- <Input.Checkbox
35
- data-testid='recoveryCode.confirm'
36
- checked={confirmation}
37
- onCheckedChange={handleConfirmation}
38
- />
39
- <Input.Label>{t('recovery code confirmation label')}</Input.Label>
40
- </Input.Root>
41
- </div>
42
- <div className='flex justify-end'>
23
+ <AlertDialog.Content size='md' classNames='min-h-[15rem]'>
24
+ <AlertDialog.Body>
25
+ <AlertDialog.Title>{t('recovery-code-dialog.title')}</AlertDialog.Title>
26
+ <p className='py-4'>{t('recovery-code-dialog.description')}</p>
27
+ <Clipboard.Provider>
28
+ <Code code={code} />
29
+ </Clipboard.Provider>
30
+ <div className='flex flex-col py-4 gap-2'>
31
+ <p>{t('recovery-code-dialog-warning-1.message')}</p>
32
+ <p>{t('recovery-code-dialog-warning-2.message')}</p>
33
+ </div>
34
+ <div className='flex items-center gap-2 pb-4'>
35
+ <Input.Root>
36
+ <Input.Checkbox
37
+ data-testid='recoveryCode.confirm'
38
+ checked={confirmation}
39
+ onCheckedChange={handleConfirmation}
40
+ />
41
+ <Input.Label>{t('recovery-code-confirmation.label')}</Input.Label>
42
+ </Input.Root>
43
+ </div>
44
+ </AlertDialog.Body>
45
+ <AlertDialog.ActionBar>
43
46
  <AlertDialog.Action asChild>
44
47
  <Button data-testid='recoveryCode.continue' variant='primary' disabled={!confirmation}>
45
- {t('continue label')}
48
+ {t('continue.label')}
46
49
  </Button>
47
50
  </AlertDialog.Action>
48
- </div>
51
+ </AlertDialog.ActionBar>
49
52
  </AlertDialog.Content>
50
53
  );
51
54
  };
@@ -53,12 +56,12 @@ export const RecoveryCodeDialog = ({ code }: RecoveryCodeDialogProps) => {
53
56
  const Code = ({ code }: { code: string }) => {
54
57
  const words = code.split(' ');
55
58
  return (
56
- <div className='relative p-2 border border-separator rounded group'>
59
+ <div className='relative p-2 border border-separator rounded-sm group'>
57
60
  <Clipboard.IconButton value={code} classNames='absolute top-2 right-2 invisible group-hover:visible' />
58
61
  <div className='grid grid-cols-4'>
59
62
  {words.map((word, i) => (
60
63
  <div key={i} className='flex items-center p-2 gap-2'>
61
- <div className='is-4 text-xs text-center text-subdued'>{i + 1}</div>
64
+ <div className='w-4 text-xs text-center text-subdued'>{i + 1}</div>
62
65
  <div className='text-sm'>{word}</div>
63
66
  </div>
64
67
  ))}
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { RecoveryCodeDialog } from './RecoveryCodeDialog';
6
+
7
+ export * from './RecoveryCodeDialog';
8
+ export default RecoveryCodeDialog;