@oxy.so/services 6.2.0 → 8.0.0

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 (909) hide show
  1. package/README.md +80 -136
  2. package/lib/commonjs/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  3. package/lib/commonjs/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  4. package/lib/commonjs/assets/assets/fonts/icons/manifest.json +5 -20
  5. package/lib/commonjs/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  6. package/lib/commonjs/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  7. package/lib/commonjs/assets/fonts/icons/manifest.json +5 -20
  8. package/lib/commonjs/index.js +21 -15
  9. package/lib/commonjs/index.js.map +1 -1
  10. package/lib/commonjs/ui/boot/runProviderColdBoot.js +2 -1
  11. package/lib/commonjs/ui/boot/runProviderColdBoot.js.map +1 -1
  12. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js +2 -3
  13. package/lib/commonjs/ui/components/OxyAccountDialogScreen.js.map +1 -1
  14. package/lib/commonjs/ui/components/OxyAuthChooser.js +15 -32
  15. package/lib/commonjs/ui/components/OxyAuthChooser.js.map +1 -1
  16. package/lib/commonjs/ui/components/OxySignInButton.js +1 -1
  17. package/lib/commonjs/ui/components/OxySignInButton.js.map +1 -1
  18. package/lib/commonjs/ui/components/OxySignInRequestSurface.js.map +1 -1
  19. package/lib/commonjs/ui/components/ProfileButton.js +1 -1
  20. package/lib/commonjs/ui/components/ProfileButton.js.map +1 -1
  21. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js +2 -2
  22. package/lib/commonjs/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  23. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js +6 -17
  24. package/lib/commonjs/ui/components/authChooser/SignInRequestView.js.map +1 -1
  25. package/lib/commonjs/ui/components/authChooser/TroubleDisclosure.js +1 -1
  26. package/lib/commonjs/ui/components/authChooser/requestSurfaces.js.map +1 -1
  27. package/lib/commonjs/ui/components/authChooser/signInProgress.js.map +1 -1
  28. package/lib/commonjs/ui/components/authChooser/types.js +0 -8
  29. package/lib/commonjs/ui/components/authChooser/types.js.map +1 -1
  30. package/lib/commonjs/ui/components/signIn/InlineCommonsQr.js +1 -1
  31. package/lib/commonjs/ui/components/signIn/OxyAccountPicker.js +2 -2
  32. package/lib/commonjs/ui/components/signIn/OxyAccountPicker.js.map +1 -1
  33. package/lib/commonjs/ui/components/signIn/OxyAuthenticatorPanel.js +325 -0
  34. package/lib/commonjs/ui/components/signIn/OxyAuthenticatorPanel.js.map +1 -0
  35. package/lib/commonjs/ui/components/signIn/OxyDeleteAccountPanel.js +52 -56
  36. package/lib/commonjs/ui/components/signIn/OxyDeleteAccountPanel.js.map +1 -1
  37. package/lib/commonjs/ui/components/signIn/OxyLinkCommonsPanel.js +48 -38
  38. package/lib/commonjs/ui/components/signIn/OxyLinkCommonsPanel.js.map +1 -1
  39. package/lib/commonjs/ui/components/signIn/OxyPasswordPanel.js +141 -0
  40. package/lib/commonjs/ui/components/signIn/OxyPasswordPanel.js.map +1 -0
  41. package/lib/commonjs/ui/components/signIn/OxySignInPanel.js +496 -201
  42. package/lib/commonjs/ui/components/signIn/OxySignInPanel.js.map +1 -1
  43. package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js +211 -42
  44. package/lib/commonjs/ui/components/signIn/OxySignUpPanel.js.map +1 -1
  45. package/lib/commonjs/ui/components/signIn/ReauthStep.js +186 -0
  46. package/lib/commonjs/ui/components/signIn/ReauthStep.js.map +1 -0
  47. package/lib/commonjs/ui/components/signIn/accountFlowParts.js +103 -26
  48. package/lib/commonjs/ui/components/signIn/accountFlowParts.js.map +1 -1
  49. package/lib/commonjs/ui/components/signIn/signInFlowStore.js +50 -0
  50. package/lib/commonjs/ui/components/signIn/signInFlowStore.js.map +1 -0
  51. package/lib/commonjs/ui/components/signIn/signInMethods.js +11 -25
  52. package/lib/commonjs/ui/components/signIn/signInMethods.js.map +1 -1
  53. package/lib/commonjs/ui/context/OxyContext.js +125 -119
  54. package/lib/commonjs/ui/context/OxyContext.js.map +1 -1
  55. package/lib/commonjs/ui/context/hooks/useAuthOperations.js +11 -10
  56. package/lib/commonjs/ui/context/hooks/useAuthOperations.js.map +1 -1
  57. package/lib/commonjs/ui/context/useOxyAccountGraph.js +4 -4
  58. package/lib/commonjs/ui/context/useOxyAccountGraph.js.map +1 -1
  59. package/lib/commonjs/ui/hooks/mutations/mutationFactory.js +1 -1
  60. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js +19 -9
  61. package/lib/commonjs/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  62. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js +4 -4
  63. package/lib/commonjs/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  64. package/lib/commonjs/ui/hooks/queries/queryKeys.js +23 -3
  65. package/lib/commonjs/ui/hooks/queries/queryKeys.js.map +1 -1
  66. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js +8 -8
  67. package/lib/commonjs/ui/hooks/queries/useAccountQueries.js.map +1 -1
  68. package/lib/commonjs/ui/hooks/queries/useAuthMethods.js +27 -15
  69. package/lib/commonjs/ui/hooks/queries/useAuthMethods.js.map +1 -1
  70. package/lib/commonjs/ui/hooks/queries/useFileQueries.js +5 -2
  71. package/lib/commonjs/ui/hooks/queries/useFileQueries.js.map +1 -1
  72. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js +8 -8
  73. package/lib/commonjs/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  74. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js +4 -3
  75. package/lib/commonjs/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  76. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js +6 -6
  77. package/lib/commonjs/ui/hooks/queries/useServicesQueries.js.map +1 -1
  78. package/lib/commonjs/ui/hooks/useAssets.js +36 -20
  79. package/lib/commonjs/ui/hooks/useAssets.js.map +1 -1
  80. package/lib/commonjs/ui/hooks/useAvatarPicker.js +6 -4
  81. package/lib/commonjs/ui/hooks/useAvatarPicker.js.map +1 -1
  82. package/lib/commonjs/ui/hooks/useDeviceManagement.js +5 -5
  83. package/lib/commonjs/ui/hooks/useDeviceManagement.js.map +1 -1
  84. package/lib/commonjs/ui/hooks/useDeviceSwitcher.js +2 -2
  85. package/lib/commonjs/ui/hooks/useDeviceSwitcher.js.map +1 -1
  86. package/lib/commonjs/ui/hooks/useFileDownloadUrl.js +1 -4
  87. package/lib/commonjs/ui/hooks/useFileDownloadUrl.js.map +1 -1
  88. package/lib/commonjs/ui/hooks/useFollow.js +2 -2
  89. package/lib/commonjs/ui/hooks/useFollow.js.map +1 -1
  90. package/lib/commonjs/ui/hooks/useFollowTarget.js +5 -5
  91. package/lib/commonjs/ui/hooks/useFollowTarget.js.map +1 -1
  92. package/lib/commonjs/ui/hooks/useI18n.js +4 -1
  93. package/lib/commonjs/ui/hooks/useI18n.js.map +1 -1
  94. package/lib/commonjs/ui/hooks/useResolvedFileUrls.js +2 -2
  95. package/lib/commonjs/ui/hooks/useResolvedFileUrls.js.map +1 -1
  96. package/lib/commonjs/ui/hooks/useSessionManagement.js +3 -3
  97. package/lib/commonjs/ui/hooks/useSessionManagement.js.map +1 -1
  98. package/lib/commonjs/ui/icons/subsetGlyphMaps.js +0 -15
  99. package/lib/commonjs/ui/icons/subsetGlyphMaps.js.map +1 -1
  100. package/lib/commonjs/ui/navigation/routes.js +6 -4
  101. package/lib/commonjs/ui/navigation/routes.js.map +1 -1
  102. package/lib/commonjs/ui/navigation/surfaceRegistry.js +1 -1
  103. package/lib/commonjs/ui/navigation/surfaceRegistry.js.map +1 -1
  104. package/lib/commonjs/ui/oauth/browserBridge.js +247 -0
  105. package/lib/commonjs/ui/oauth/browserBridge.js.map +1 -0
  106. package/lib/commonjs/ui/oauth/completeOAuthCode.js +1 -1
  107. package/lib/commonjs/ui/oauth/completeOAuthCode.js.map +1 -1
  108. package/lib/commonjs/ui/oauth/explicitOAuthConsent.js +1 -1
  109. package/lib/commonjs/ui/oauth/explicitOAuthConsent.js.map +1 -1
  110. package/lib/commonjs/ui/runtime/createOxyRuntime.js +9 -8
  111. package/lib/commonjs/ui/runtime/createOxyRuntime.js.map +1 -1
  112. package/lib/commonjs/ui/runtime/runtimeContext.js.map +1 -1
  113. package/lib/commonjs/ui/screens/AccountMembersScreen.js +7 -7
  114. package/lib/commonjs/ui/screens/AccountMembersScreen.js.map +1 -1
  115. package/lib/commonjs/ui/screens/AccountSecurityPanelScreen.js +35 -0
  116. package/lib/commonjs/ui/screens/AccountSecurityPanelScreen.js.map +1 -0
  117. package/lib/commonjs/ui/screens/AccountSettingsScreen.js +3 -3
  118. package/lib/commonjs/ui/screens/AccountSettingsScreen.js.map +1 -1
  119. package/lib/commonjs/ui/screens/AccountVerificationScreen.js +1 -1
  120. package/lib/commonjs/ui/screens/AccountVerificationScreen.js.map +1 -1
  121. package/lib/commonjs/ui/screens/AppInfoScreen.js +5 -5
  122. package/lib/commonjs/ui/screens/AppInfoScreen.js.map +1 -1
  123. package/lib/commonjs/ui/screens/AvatarCropScreen.js +3 -3
  124. package/lib/commonjs/ui/screens/AvatarCropScreen.js.map +1 -1
  125. package/lib/commonjs/ui/screens/ChangeAvatarScreen.js +1 -1
  126. package/lib/commonjs/ui/screens/ChangeAvatarScreen.js.map +1 -1
  127. package/lib/commonjs/ui/screens/CreateAccountScreen.js +1 -1
  128. package/lib/commonjs/ui/screens/CreateAccountScreen.js.map +1 -1
  129. package/lib/commonjs/ui/screens/DeleteAccountScreen.js +19 -0
  130. package/lib/commonjs/ui/screens/DeleteAccountScreen.js.map +1 -0
  131. package/lib/commonjs/ui/screens/DomainsScreen.js +217 -0
  132. package/lib/commonjs/ui/screens/DomainsScreen.js.map +1 -0
  133. package/lib/commonjs/ui/screens/EditProfileScreen.js +1 -1
  134. package/lib/commonjs/ui/screens/EditProfileScreen.js.map +1 -1
  135. package/lib/commonjs/ui/screens/FileManagementScreen.js +25 -11
  136. package/lib/commonjs/ui/screens/FileManagementScreen.js.map +1 -1
  137. package/lib/commonjs/ui/screens/HelpSupportScreen.js +1 -17
  138. package/lib/commonjs/ui/screens/HelpSupportScreen.js.map +1 -1
  139. package/lib/commonjs/ui/screens/LinkCommonsScreen.js +14 -0
  140. package/lib/commonjs/ui/screens/LinkCommonsScreen.js.map +1 -0
  141. package/lib/commonjs/ui/screens/ManageAccountScreen.js +57 -61
  142. package/lib/commonjs/ui/screens/ManageAccountScreen.js.map +1 -1
  143. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js +52 -62
  144. package/lib/commonjs/ui/screens/PrivacySettingsScreen.js.map +1 -1
  145. package/lib/commonjs/ui/screens/ProfileScreen.js +5 -13
  146. package/lib/commonjs/ui/screens/ProfileScreen.js.map +1 -1
  147. package/lib/commonjs/ui/screens/SearchSettingsScreen.js +15 -24
  148. package/lib/commonjs/ui/screens/SearchSettingsScreen.js.map +1 -1
  149. package/lib/commonjs/ui/screens/SignInAuthenticatorScreen.js +14 -0
  150. package/lib/commonjs/ui/screens/SignInAuthenticatorScreen.js.map +1 -0
  151. package/lib/commonjs/ui/screens/SignInPasswordScreen.js +20 -0
  152. package/lib/commonjs/ui/screens/SignInPasswordScreen.js.map +1 -0
  153. package/lib/commonjs/ui/screens/UserListScreen.js +3 -3
  154. package/lib/commonjs/ui/screens/UserListScreen.js.map +1 -1
  155. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js +1 -1
  156. package/lib/commonjs/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  157. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js +25 -17
  158. package/lib/commonjs/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  159. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js +2 -2
  160. package/lib/commonjs/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  161. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js +8 -14
  162. package/lib/commonjs/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  163. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js +11 -9
  164. package/lib/commonjs/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  165. package/lib/commonjs/ui/session/authStore.js +4 -4
  166. package/lib/commonjs/ui/session/authStore.js.map +1 -1
  167. package/lib/commonjs/ui/session/backgroundSession.js +5 -40
  168. package/lib/commonjs/ui/session/backgroundSession.js.map +1 -1
  169. package/lib/commonjs/ui/session/createSessionClient.js +3 -3
  170. package/lib/commonjs/ui/session/createSessionClient.js.map +1 -1
  171. package/lib/commonjs/ui/session/deviceCredentialTracker.js +42 -0
  172. package/lib/commonjs/ui/session/deviceCredentialTracker.js.map +1 -0
  173. package/lib/commonjs/ui/session/identityBinding.js +3 -3
  174. package/lib/commonjs/ui/session/identityBinding.js.map +1 -1
  175. package/lib/commonjs/ui/session/index.js +6 -6
  176. package/lib/commonjs/ui/session/index.js.map +1 -1
  177. package/lib/commonjs/ui/session/sharedDeviceCredentialStore.js +2 -2
  178. package/lib/commonjs/ui/session/sharedDeviceCredentialStore.js.map +1 -1
  179. package/lib/commonjs/ui/session/tokenTransport.js +3 -3
  180. package/lib/commonjs/ui/session/tokenTransport.js.map +1 -1
  181. package/lib/commonjs/ui/stores/assetStore.js +12 -0
  182. package/lib/commonjs/ui/stores/assetStore.js.map +1 -1
  183. package/lib/commonjs/ui/stores/followStore.js +6 -6
  184. package/lib/commonjs/ui/stores/followStore.js.map +1 -1
  185. package/lib/commonjs/ui/utils/accountDeletionHandoff.js +1 -4
  186. package/lib/commonjs/ui/utils/accountDeletionHandoff.js.map +1 -1
  187. package/lib/commonjs/ui/utils/avatarUtils.js +1 -1
  188. package/lib/commonjs/ui/utils/avatarUtils.js.map +1 -1
  189. package/lib/commonjs/ui/utils/deviceCredential.js +11 -4
  190. package/lib/commonjs/ui/utils/deviceCredential.js.map +1 -1
  191. package/lib/commonjs/ui/utils/fileManagement.js +0 -10
  192. package/lib/commonjs/ui/utils/fileManagement.js.map +1 -1
  193. package/lib/commonjs/ui/utils/sessionHelpers.js +2 -2
  194. package/lib/commonjs/ui/utils/sessionHelpers.js.map +1 -1
  195. package/lib/module/assets/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  196. package/lib/module/assets/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  197. package/lib/module/assets/assets/fonts/icons/manifest.json +5 -20
  198. package/lib/module/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  199. package/lib/module/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  200. package/lib/module/assets/fonts/icons/manifest.json +5 -20
  201. package/lib/module/index.js +6 -6
  202. package/lib/module/index.js.map +1 -1
  203. package/lib/module/ui/boot/runProviderColdBoot.js +2 -1
  204. package/lib/module/ui/boot/runProviderColdBoot.js.map +1 -1
  205. package/lib/module/ui/components/OxyAccountDialogScreen.js +2 -3
  206. package/lib/module/ui/components/OxyAccountDialogScreen.js.map +1 -1
  207. package/lib/module/ui/components/OxyAuthChooser.js +15 -32
  208. package/lib/module/ui/components/OxyAuthChooser.js.map +1 -1
  209. package/lib/module/ui/components/OxySignInButton.js +1 -1
  210. package/lib/module/ui/components/OxySignInButton.js.map +1 -1
  211. package/lib/module/ui/components/OxySignInRequestSurface.js.map +1 -1
  212. package/lib/module/ui/components/ProfileButton.js +1 -1
  213. package/lib/module/ui/components/ProfileButton.js.map +1 -1
  214. package/lib/module/ui/components/authChooser/AccountsMenuView.js +1 -1
  215. package/lib/module/ui/components/authChooser/AccountsMenuView.js.map +1 -1
  216. package/lib/module/ui/components/authChooser/SignInRequestView.js +6 -17
  217. package/lib/module/ui/components/authChooser/SignInRequestView.js.map +1 -1
  218. package/lib/module/ui/components/authChooser/TroubleDisclosure.js +1 -1
  219. package/lib/module/ui/components/authChooser/requestSurfaces.js.map +1 -1
  220. package/lib/module/ui/components/authChooser/signInProgress.js.map +1 -1
  221. package/lib/module/ui/components/authChooser/types.js +0 -8
  222. package/lib/module/ui/components/authChooser/types.js.map +1 -1
  223. package/lib/module/ui/components/signIn/InlineCommonsQr.js +1 -1
  224. package/lib/module/ui/components/signIn/OxyAccountPicker.js +1 -1
  225. package/lib/module/ui/components/signIn/OxyAccountPicker.js.map +1 -1
  226. package/lib/module/ui/components/signIn/OxyAuthenticatorPanel.js +321 -0
  227. package/lib/module/ui/components/signIn/OxyAuthenticatorPanel.js.map +1 -0
  228. package/lib/module/ui/components/signIn/OxyDeleteAccountPanel.js +54 -58
  229. package/lib/module/ui/components/signIn/OxyDeleteAccountPanel.js.map +1 -1
  230. package/lib/module/ui/components/signIn/OxyLinkCommonsPanel.js +48 -38
  231. package/lib/module/ui/components/signIn/OxyLinkCommonsPanel.js.map +1 -1
  232. package/lib/module/ui/components/signIn/OxyPasswordPanel.js +136 -0
  233. package/lib/module/ui/components/signIn/OxyPasswordPanel.js.map +1 -0
  234. package/lib/module/ui/components/signIn/OxySignInPanel.js +496 -201
  235. package/lib/module/ui/components/signIn/OxySignInPanel.js.map +1 -1
  236. package/lib/module/ui/components/signIn/OxySignUpPanel.js +212 -43
  237. package/lib/module/ui/components/signIn/OxySignUpPanel.js.map +1 -1
  238. package/lib/module/ui/components/signIn/ReauthStep.js +181 -0
  239. package/lib/module/ui/components/signIn/ReauthStep.js.map +1 -0
  240. package/lib/module/ui/components/signIn/accountFlowParts.js +97 -26
  241. package/lib/module/ui/components/signIn/accountFlowParts.js.map +1 -1
  242. package/lib/module/ui/components/signIn/signInFlowStore.js +44 -0
  243. package/lib/module/ui/components/signIn/signInFlowStore.js.map +1 -0
  244. package/lib/module/ui/components/signIn/signInMethods.js +11 -25
  245. package/lib/module/ui/components/signIn/signInMethods.js.map +1 -1
  246. package/lib/module/ui/context/OxyContext.js +121 -115
  247. package/lib/module/ui/context/OxyContext.js.map +1 -1
  248. package/lib/module/ui/context/hooks/useAuthOperations.js +7 -7
  249. package/lib/module/ui/context/hooks/useAuthOperations.js.map +1 -1
  250. package/lib/module/ui/context/useOxyAccountGraph.js +4 -4
  251. package/lib/module/ui/context/useOxyAccountGraph.js.map +1 -1
  252. package/lib/module/ui/hooks/mutations/mutationFactory.js +1 -1
  253. package/lib/module/ui/hooks/mutations/useAccountMutations.js +19 -9
  254. package/lib/module/ui/hooks/mutations/useAccountMutations.js.map +1 -1
  255. package/lib/module/ui/hooks/mutations/useServicesMutations.js +4 -4
  256. package/lib/module/ui/hooks/mutations/useServicesMutations.js.map +1 -1
  257. package/lib/module/ui/hooks/queries/queryKeys.js +23 -3
  258. package/lib/module/ui/hooks/queries/queryKeys.js.map +1 -1
  259. package/lib/module/ui/hooks/queries/useAccountQueries.js +8 -8
  260. package/lib/module/ui/hooks/queries/useAccountQueries.js.map +1 -1
  261. package/lib/module/ui/hooks/queries/useAuthMethods.js +25 -14
  262. package/lib/module/ui/hooks/queries/useAuthMethods.js.map +1 -1
  263. package/lib/module/ui/hooks/queries/useFileQueries.js +5 -2
  264. package/lib/module/ui/hooks/queries/useFileQueries.js.map +1 -1
  265. package/lib/module/ui/hooks/queries/usePaymentQueries.js +8 -8
  266. package/lib/module/ui/hooks/queries/usePaymentQueries.js.map +1 -1
  267. package/lib/module/ui/hooks/queries/useSecurityQueries.js +4 -3
  268. package/lib/module/ui/hooks/queries/useSecurityQueries.js.map +1 -1
  269. package/lib/module/ui/hooks/queries/useServicesQueries.js +6 -6
  270. package/lib/module/ui/hooks/queries/useServicesQueries.js.map +1 -1
  271. package/lib/module/ui/hooks/useAssets.js +36 -20
  272. package/lib/module/ui/hooks/useAssets.js.map +1 -1
  273. package/lib/module/ui/hooks/useAvatarPicker.js +6 -4
  274. package/lib/module/ui/hooks/useAvatarPicker.js.map +1 -1
  275. package/lib/module/ui/hooks/useDeviceManagement.js +4 -4
  276. package/lib/module/ui/hooks/useDeviceManagement.js.map +1 -1
  277. package/lib/module/ui/hooks/useDeviceSwitcher.js +2 -2
  278. package/lib/module/ui/hooks/useDeviceSwitcher.js.map +1 -1
  279. package/lib/module/ui/hooks/useFileDownloadUrl.js +1 -4
  280. package/lib/module/ui/hooks/useFileDownloadUrl.js.map +1 -1
  281. package/lib/module/ui/hooks/useFollow.js +2 -2
  282. package/lib/module/ui/hooks/useFollow.js.map +1 -1
  283. package/lib/module/ui/hooks/useFollowTarget.js +5 -5
  284. package/lib/module/ui/hooks/useFollowTarget.js.map +1 -1
  285. package/lib/module/ui/hooks/useI18n.js +6 -3
  286. package/lib/module/ui/hooks/useI18n.js.map +1 -1
  287. package/lib/module/ui/hooks/useResolvedFileUrls.js +2 -2
  288. package/lib/module/ui/hooks/useResolvedFileUrls.js.map +1 -1
  289. package/lib/module/ui/hooks/useSessionManagement.js +3 -3
  290. package/lib/module/ui/hooks/useSessionManagement.js.map +1 -1
  291. package/lib/module/ui/icons/subsetGlyphMaps.js +0 -15
  292. package/lib/module/ui/icons/subsetGlyphMaps.js.map +1 -1
  293. package/lib/module/ui/navigation/routes.js +6 -4
  294. package/lib/module/ui/navigation/routes.js.map +1 -1
  295. package/lib/module/ui/navigation/surfaceRegistry.js +1 -1
  296. package/lib/module/ui/navigation/surfaceRegistry.js.map +1 -1
  297. package/lib/module/ui/oauth/browserBridge.js +239 -0
  298. package/lib/module/ui/oauth/browserBridge.js.map +1 -0
  299. package/lib/module/ui/oauth/completeOAuthCode.js +1 -1
  300. package/lib/module/ui/oauth/completeOAuthCode.js.map +1 -1
  301. package/lib/module/ui/oauth/explicitOAuthConsent.js +1 -1
  302. package/lib/module/ui/oauth/explicitOAuthConsent.js.map +1 -1
  303. package/lib/module/ui/runtime/createOxyRuntime.js +4 -3
  304. package/lib/module/ui/runtime/createOxyRuntime.js.map +1 -1
  305. package/lib/module/ui/runtime/runtimeContext.js.map +1 -1
  306. package/lib/module/ui/screens/AccountMembersScreen.js +7 -7
  307. package/lib/module/ui/screens/AccountMembersScreen.js.map +1 -1
  308. package/lib/module/ui/screens/AccountSecurityPanelScreen.js +32 -0
  309. package/lib/module/ui/screens/AccountSecurityPanelScreen.js.map +1 -0
  310. package/lib/module/ui/screens/AccountSettingsScreen.js +3 -3
  311. package/lib/module/ui/screens/AccountSettingsScreen.js.map +1 -1
  312. package/lib/module/ui/screens/AccountVerificationScreen.js +1 -1
  313. package/lib/module/ui/screens/AccountVerificationScreen.js.map +1 -1
  314. package/lib/module/ui/screens/AppInfoScreen.js +5 -5
  315. package/lib/module/ui/screens/AppInfoScreen.js.map +1 -1
  316. package/lib/module/ui/screens/AvatarCropScreen.js +3 -3
  317. package/lib/module/ui/screens/AvatarCropScreen.js.map +1 -1
  318. package/lib/module/ui/screens/ChangeAvatarScreen.js +1 -1
  319. package/lib/module/ui/screens/ChangeAvatarScreen.js.map +1 -1
  320. package/lib/module/ui/screens/CreateAccountScreen.js +1 -1
  321. package/lib/module/ui/screens/CreateAccountScreen.js.map +1 -1
  322. package/lib/module/ui/screens/DeleteAccountScreen.js +17 -0
  323. package/lib/module/ui/screens/DeleteAccountScreen.js.map +1 -0
  324. package/lib/module/ui/screens/DomainsScreen.js +212 -0
  325. package/lib/module/ui/screens/DomainsScreen.js.map +1 -0
  326. package/lib/module/ui/screens/EditProfileScreen.js +1 -1
  327. package/lib/module/ui/screens/EditProfileScreen.js.map +1 -1
  328. package/lib/module/ui/screens/FileManagementScreen.js +25 -11
  329. package/lib/module/ui/screens/FileManagementScreen.js.map +1 -1
  330. package/lib/module/ui/screens/HelpSupportScreen.js +1 -17
  331. package/lib/module/ui/screens/HelpSupportScreen.js.map +1 -1
  332. package/lib/module/ui/screens/LinkCommonsScreen.js +12 -0
  333. package/lib/module/ui/screens/LinkCommonsScreen.js.map +1 -0
  334. package/lib/module/ui/screens/ManageAccountScreen.js +58 -62
  335. package/lib/module/ui/screens/ManageAccountScreen.js.map +1 -1
  336. package/lib/module/ui/screens/PrivacySettingsScreen.js +53 -63
  337. package/lib/module/ui/screens/PrivacySettingsScreen.js.map +1 -1
  338. package/lib/module/ui/screens/ProfileScreen.js +5 -13
  339. package/lib/module/ui/screens/ProfileScreen.js.map +1 -1
  340. package/lib/module/ui/screens/SearchSettingsScreen.js +16 -25
  341. package/lib/module/ui/screens/SearchSettingsScreen.js.map +1 -1
  342. package/lib/module/ui/screens/SignInAuthenticatorScreen.js +12 -0
  343. package/lib/module/ui/screens/SignInAuthenticatorScreen.js.map +1 -0
  344. package/lib/module/ui/screens/SignInPasswordScreen.js +18 -0
  345. package/lib/module/ui/screens/SignInPasswordScreen.js.map +1 -0
  346. package/lib/module/ui/screens/UserListScreen.js +3 -3
  347. package/lib/module/ui/screens/UserListScreen.js.map +1 -1
  348. package/lib/module/ui/screens/WelcomeNewUserScreen.js +1 -1
  349. package/lib/module/ui/screens/WelcomeNewUserScreen.js.map +1 -1
  350. package/lib/module/ui/screens/trust/TrustCenterScreen.js +26 -18
  351. package/lib/module/ui/screens/trust/TrustCenterScreen.js.map +1 -1
  352. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js +2 -2
  353. package/lib/module/ui/screens/trust/TrustLeaderboardScreen.js.map +1 -1
  354. package/lib/module/ui/screens/trust/TrustRewardsScreen.js +9 -15
  355. package/lib/module/ui/screens/trust/TrustRewardsScreen.js.map +1 -1
  356. package/lib/module/ui/screens/trust/TrustRulesScreen.js +12 -10
  357. package/lib/module/ui/screens/trust/TrustRulesScreen.js.map +1 -1
  358. package/lib/module/ui/session/authStore.js +1 -1
  359. package/lib/module/ui/session/authStore.js.map +1 -1
  360. package/lib/module/ui/session/backgroundSession.js +5 -40
  361. package/lib/module/ui/session/backgroundSession.js.map +1 -1
  362. package/lib/module/ui/session/createSessionClient.js +1 -1
  363. package/lib/module/ui/session/createSessionClient.js.map +1 -1
  364. package/lib/module/ui/session/deviceCredentialTracker.js +38 -0
  365. package/lib/module/ui/session/deviceCredentialTracker.js.map +1 -0
  366. package/lib/module/ui/session/identityBinding.js +1 -1
  367. package/lib/module/ui/session/identityBinding.js.map +1 -1
  368. package/lib/module/ui/session/index.js +1 -1
  369. package/lib/module/ui/session/index.js.map +1 -1
  370. package/lib/module/ui/session/sharedDeviceCredentialStore.js +1 -1
  371. package/lib/module/ui/session/sharedDeviceCredentialStore.js.map +1 -1
  372. package/lib/module/ui/session/tokenTransport.js +3 -3
  373. package/lib/module/ui/session/tokenTransport.js.map +1 -1
  374. package/lib/module/ui/stores/assetStore.js +12 -0
  375. package/lib/module/ui/stores/assetStore.js.map +1 -1
  376. package/lib/module/ui/stores/followStore.js +6 -6
  377. package/lib/module/ui/stores/followStore.js.map +1 -1
  378. package/lib/module/ui/utils/accountDeletionHandoff.js +2 -5
  379. package/lib/module/ui/utils/accountDeletionHandoff.js.map +1 -1
  380. package/lib/module/ui/utils/avatarUtils.js +1 -1
  381. package/lib/module/ui/utils/avatarUtils.js.map +1 -1
  382. package/lib/module/ui/utils/deviceCredential.js +10 -3
  383. package/lib/module/ui/utils/deviceCredential.js.map +1 -1
  384. package/lib/module/ui/utils/fileManagement.js +0 -9
  385. package/lib/module/ui/utils/fileManagement.js.map +1 -1
  386. package/lib/module/ui/utils/sessionHelpers.js +2 -2
  387. package/lib/module/ui/utils/sessionHelpers.js.map +1 -1
  388. package/lib/typescript/commonjs/index.d.ts +5 -5
  389. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  390. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts +3 -2
  391. package/lib/typescript/commonjs/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  392. package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts +2 -3
  393. package/lib/typescript/commonjs/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  394. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts +7 -7
  395. package/lib/typescript/commonjs/ui/components/OxyAuthChooser.d.ts.map +1 -1
  396. package/lib/typescript/commonjs/ui/components/OxySignInRequestSurface.d.ts +2 -1
  397. package/lib/typescript/commonjs/ui/components/OxySignInRequestSurface.d.ts.map +1 -1
  398. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts +1 -1
  399. package/lib/typescript/commonjs/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  400. package/lib/typescript/commonjs/ui/components/authChooser/SignInRequestView.d.ts +3 -4
  401. package/lib/typescript/commonjs/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  402. package/lib/typescript/commonjs/ui/components/authChooser/TroubleDisclosure.d.ts +1 -1
  403. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts +1 -1
  404. package/lib/typescript/commonjs/ui/components/authChooser/primitives.d.ts.map +1 -1
  405. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts +2 -1
  406. package/lib/typescript/commonjs/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  407. package/lib/typescript/commonjs/ui/components/authChooser/signInFailureMessage.d.ts +1 -1
  408. package/lib/typescript/commonjs/ui/components/authChooser/signInFailureMessage.d.ts.map +1 -1
  409. package/lib/typescript/commonjs/ui/components/authChooser/signInProgress.d.ts +2 -1
  410. package/lib/typescript/commonjs/ui/components/authChooser/signInProgress.d.ts.map +1 -1
  411. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts +1 -12
  412. package/lib/typescript/commonjs/ui/components/authChooser/types.d.ts.map +1 -1
  413. package/lib/typescript/commonjs/ui/components/signIn/InlineCommonsQr.d.ts +1 -1
  414. package/lib/typescript/commonjs/ui/components/signIn/InlineCommonsQr.d.ts.map +1 -1
  415. package/lib/typescript/commonjs/ui/components/signIn/OxyAccountPicker.d.ts +1 -1
  416. package/lib/typescript/commonjs/ui/components/signIn/OxyAccountPicker.d.ts.map +1 -1
  417. package/lib/typescript/commonjs/ui/components/signIn/OxyAuthenticatorPanel.d.ts +19 -0
  418. package/lib/typescript/commonjs/ui/components/signIn/OxyAuthenticatorPanel.d.ts.map +1 -0
  419. package/lib/typescript/commonjs/ui/components/signIn/OxyDeleteAccountPanel.d.ts +10 -6
  420. package/lib/typescript/commonjs/ui/components/signIn/OxyDeleteAccountPanel.d.ts.map +1 -1
  421. package/lib/typescript/commonjs/ui/components/signIn/OxyLinkCommonsPanel.d.ts +6 -6
  422. package/lib/typescript/commonjs/ui/components/signIn/OxyLinkCommonsPanel.d.ts.map +1 -1
  423. package/lib/typescript/commonjs/ui/components/signIn/OxyPasswordPanel.d.ts +15 -0
  424. package/lib/typescript/commonjs/ui/components/signIn/OxyPasswordPanel.d.ts.map +1 -0
  425. package/lib/typescript/commonjs/ui/components/signIn/OxySignInPanel.d.ts +21 -19
  426. package/lib/typescript/commonjs/ui/components/signIn/OxySignInPanel.d.ts.map +1 -1
  427. package/lib/typescript/commonjs/ui/components/signIn/OxySignUpPanel.d.ts +16 -7
  428. package/lib/typescript/commonjs/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
  429. package/lib/typescript/commonjs/ui/components/signIn/ReauthStep.d.ts +34 -0
  430. package/lib/typescript/commonjs/ui/components/signIn/ReauthStep.d.ts.map +1 -0
  431. package/lib/typescript/commonjs/ui/components/signIn/accountFlowParts.d.ts +38 -12
  432. package/lib/typescript/commonjs/ui/components/signIn/accountFlowParts.d.ts.map +1 -1
  433. package/lib/typescript/commonjs/ui/components/signIn/signInFlowStore.d.ts +20 -0
  434. package/lib/typescript/commonjs/ui/components/signIn/signInFlowStore.d.ts.map +1 -0
  435. package/lib/typescript/commonjs/ui/components/signIn/signInMethods.d.ts +8 -21
  436. package/lib/typescript/commonjs/ui/components/signIn/signInMethods.d.ts.map +1 -1
  437. package/lib/typescript/commonjs/ui/context/OxyContext.d.ts.map +1 -1
  438. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts +2 -1
  439. package/lib/typescript/commonjs/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  440. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts +4 -39
  441. package/lib/typescript/commonjs/ui/context/oxyContextTypes.d.ts.map +1 -1
  442. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts +2 -1
  443. package/lib/typescript/commonjs/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  444. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts +1 -1
  445. package/lib/typescript/commonjs/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  446. package/lib/typescript/commonjs/ui/hooks/mutations/mutationFactory.d.ts +1 -1
  447. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts +2 -2
  448. package/lib/typescript/commonjs/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  449. package/lib/typescript/commonjs/ui/hooks/mutations/useServicesMutations.d.ts +5 -1
  450. package/lib/typescript/commonjs/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
  451. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts +19 -1
  452. package/lib/typescript/commonjs/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  453. package/lib/typescript/commonjs/ui/hooks/queries/useAuthMethods.d.ts +13 -20
  454. package/lib/typescript/commonjs/ui/hooks/queries/useAuthMethods.d.ts.map +1 -1
  455. package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts +1 -1
  456. package/lib/typescript/commonjs/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
  457. package/lib/typescript/commonjs/ui/hooks/queries/usePaymentQueries.d.ts +4 -4
  458. package/lib/typescript/commonjs/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
  459. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts +3 -5
  460. package/lib/typescript/commonjs/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  461. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts +5 -5
  462. package/lib/typescript/commonjs/ui/hooks/useAssets.d.ts.map +1 -1
  463. package/lib/typescript/commonjs/ui/hooks/useAvatarPicker.d.ts +1 -1
  464. package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts +1 -1
  465. package/lib/typescript/commonjs/ui/hooks/useDeviceSwitcher.d.ts.map +1 -1
  466. package/lib/typescript/commonjs/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
  467. package/lib/typescript/commonjs/ui/hooks/useFollow.d.ts +1 -1
  468. package/lib/typescript/commonjs/ui/hooks/useI18n.d.ts.map +1 -1
  469. package/lib/typescript/commonjs/ui/hooks/useResolvedFileUrls.d.ts +9 -7
  470. package/lib/typescript/commonjs/ui/hooks/useResolvedFileUrls.d.ts.map +1 -1
  471. package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts +1 -1
  472. package/lib/typescript/commonjs/ui/icons/Ionicons.d.ts.map +1 -1
  473. package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts +1 -1
  474. package/lib/typescript/commonjs/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
  475. package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts +0 -15
  476. package/lib/typescript/commonjs/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
  477. package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts +1 -1
  478. package/lib/typescript/commonjs/ui/navigation/accountDialogManager.d.ts.map +1 -1
  479. package/lib/typescript/commonjs/ui/navigation/routes.d.ts +1 -1
  480. package/lib/typescript/commonjs/ui/navigation/routes.d.ts.map +1 -1
  481. package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts +7 -5
  482. package/lib/typescript/commonjs/ui/navigation/surfaceRegistry.d.ts.map +1 -1
  483. package/lib/typescript/commonjs/ui/oauth/browserBridge.d.ts +97 -0
  484. package/lib/typescript/commonjs/ui/oauth/browserBridge.d.ts.map +1 -0
  485. package/lib/typescript/commonjs/ui/runtime/createOxyRuntime.d.ts +6 -2
  486. package/lib/typescript/commonjs/ui/runtime/createOxyRuntime.d.ts.map +1 -1
  487. package/lib/typescript/commonjs/ui/runtime/runtimeContext.d.ts +2 -1
  488. package/lib/typescript/commonjs/ui/runtime/runtimeContext.d.ts.map +1 -1
  489. package/lib/typescript/commonjs/ui/runtime/types.d.ts +2 -1
  490. package/lib/typescript/commonjs/ui/runtime/types.d.ts.map +1 -1
  491. package/lib/typescript/commonjs/ui/screens/AccountSecurityPanelScreen.d.ts +11 -0
  492. package/lib/typescript/commonjs/ui/screens/AccountSecurityPanelScreen.d.ts.map +1 -0
  493. package/lib/typescript/commonjs/ui/screens/DeleteAccountScreen.d.ts +6 -0
  494. package/lib/typescript/commonjs/ui/screens/DeleteAccountScreen.d.ts.map +1 -0
  495. package/lib/typescript/commonjs/ui/screens/{SavesCollectionsScreen.d.ts → DomainsScreen.d.ts} +1 -1
  496. package/lib/typescript/commonjs/ui/screens/DomainsScreen.d.ts.map +1 -0
  497. package/lib/typescript/commonjs/ui/screens/FileManagementScreen.d.ts.map +1 -1
  498. package/lib/typescript/commonjs/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  499. package/lib/typescript/commonjs/ui/screens/LinkCommonsScreen.d.ts +6 -0
  500. package/lib/typescript/commonjs/ui/screens/LinkCommonsScreen.d.ts.map +1 -0
  501. package/lib/typescript/commonjs/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  502. package/lib/typescript/commonjs/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  503. package/lib/typescript/commonjs/ui/screens/ProfileScreen.d.ts.map +1 -1
  504. package/lib/typescript/commonjs/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  505. package/lib/typescript/commonjs/ui/screens/SignInAuthenticatorScreen.d.ts +6 -0
  506. package/lib/typescript/commonjs/ui/screens/SignInAuthenticatorScreen.d.ts.map +1 -0
  507. package/lib/typescript/commonjs/ui/screens/SignInPasswordScreen.d.ts +6 -0
  508. package/lib/typescript/commonjs/ui/screens/SignInPasswordScreen.d.ts.map +1 -0
  509. package/lib/typescript/commonjs/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  510. package/lib/typescript/commonjs/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  511. package/lib/typescript/commonjs/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  512. package/lib/typescript/commonjs/ui/session/authStore.d.ts +1 -1
  513. package/lib/typescript/commonjs/ui/session/authStore.d.ts.map +1 -1
  514. package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts +3 -4
  515. package/lib/typescript/commonjs/ui/session/backgroundSession.d.ts.map +1 -1
  516. package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts +2 -1
  517. package/lib/typescript/commonjs/ui/session/createSessionClient.d.ts.map +1 -1
  518. package/lib/typescript/commonjs/ui/session/deviceCredentialTracker.d.ts +23 -0
  519. package/lib/typescript/commonjs/ui/session/deviceCredentialTracker.d.ts.map +1 -0
  520. package/lib/typescript/commonjs/ui/session/identityBinding.d.ts +1 -1
  521. package/lib/typescript/commonjs/ui/session/identityBinding.d.ts.map +1 -1
  522. package/lib/typescript/commonjs/ui/session/index.d.ts +1 -1
  523. package/lib/typescript/commonjs/ui/session/index.d.ts.map +1 -1
  524. package/lib/typescript/commonjs/ui/session/nativeSecureStorage.d.ts +1 -1
  525. package/lib/typescript/commonjs/ui/session/nativeSecureStorage.d.ts.map +1 -1
  526. package/lib/typescript/commonjs/ui/session/sharedDeviceCredentialStore.d.ts +1 -1
  527. package/lib/typescript/commonjs/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -1
  528. package/lib/typescript/commonjs/ui/session/tokenTransport.d.ts +3 -2
  529. package/lib/typescript/commonjs/ui/session/tokenTransport.d.ts.map +1 -1
  530. package/lib/typescript/commonjs/ui/stores/assetStore.d.ts +7 -0
  531. package/lib/typescript/commonjs/ui/stores/assetStore.d.ts.map +1 -1
  532. package/lib/typescript/commonjs/ui/types/navigation.d.ts +1 -1
  533. package/lib/typescript/commonjs/ui/types/navigation.d.ts.map +1 -1
  534. package/lib/typescript/commonjs/ui/utils/accountDeletionHandoff.d.ts.map +1 -1
  535. package/lib/typescript/commonjs/ui/utils/deviceCredential.d.ts +10 -3
  536. package/lib/typescript/commonjs/ui/utils/deviceCredential.d.ts.map +1 -1
  537. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts +1 -5
  538. package/lib/typescript/commonjs/ui/utils/fileManagement.d.ts.map +1 -1
  539. package/lib/typescript/module/index.d.ts +5 -5
  540. package/lib/typescript/module/index.d.ts.map +1 -1
  541. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts +3 -2
  542. package/lib/typescript/module/ui/boot/runProviderColdBoot.d.ts.map +1 -1
  543. package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts +2 -3
  544. package/lib/typescript/module/ui/components/OxyAccountDialogScreen.d.ts.map +1 -1
  545. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts +7 -7
  546. package/lib/typescript/module/ui/components/OxyAuthChooser.d.ts.map +1 -1
  547. package/lib/typescript/module/ui/components/OxySignInRequestSurface.d.ts +2 -1
  548. package/lib/typescript/module/ui/components/OxySignInRequestSurface.d.ts.map +1 -1
  549. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts +1 -1
  550. package/lib/typescript/module/ui/components/authChooser/AccountsMenuView.d.ts.map +1 -1
  551. package/lib/typescript/module/ui/components/authChooser/SignInRequestView.d.ts +3 -4
  552. package/lib/typescript/module/ui/components/authChooser/SignInRequestView.d.ts.map +1 -1
  553. package/lib/typescript/module/ui/components/authChooser/TroubleDisclosure.d.ts +1 -1
  554. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts +1 -1
  555. package/lib/typescript/module/ui/components/authChooser/primitives.d.ts.map +1 -1
  556. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts +2 -1
  557. package/lib/typescript/module/ui/components/authChooser/requestSurfaces.d.ts.map +1 -1
  558. package/lib/typescript/module/ui/components/authChooser/signInFailureMessage.d.ts +1 -1
  559. package/lib/typescript/module/ui/components/authChooser/signInFailureMessage.d.ts.map +1 -1
  560. package/lib/typescript/module/ui/components/authChooser/signInProgress.d.ts +2 -1
  561. package/lib/typescript/module/ui/components/authChooser/signInProgress.d.ts.map +1 -1
  562. package/lib/typescript/module/ui/components/authChooser/types.d.ts +1 -12
  563. package/lib/typescript/module/ui/components/authChooser/types.d.ts.map +1 -1
  564. package/lib/typescript/module/ui/components/signIn/InlineCommonsQr.d.ts +1 -1
  565. package/lib/typescript/module/ui/components/signIn/InlineCommonsQr.d.ts.map +1 -1
  566. package/lib/typescript/module/ui/components/signIn/OxyAccountPicker.d.ts +1 -1
  567. package/lib/typescript/module/ui/components/signIn/OxyAccountPicker.d.ts.map +1 -1
  568. package/lib/typescript/module/ui/components/signIn/OxyAuthenticatorPanel.d.ts +19 -0
  569. package/lib/typescript/module/ui/components/signIn/OxyAuthenticatorPanel.d.ts.map +1 -0
  570. package/lib/typescript/module/ui/components/signIn/OxyDeleteAccountPanel.d.ts +10 -6
  571. package/lib/typescript/module/ui/components/signIn/OxyDeleteAccountPanel.d.ts.map +1 -1
  572. package/lib/typescript/module/ui/components/signIn/OxyLinkCommonsPanel.d.ts +6 -6
  573. package/lib/typescript/module/ui/components/signIn/OxyLinkCommonsPanel.d.ts.map +1 -1
  574. package/lib/typescript/module/ui/components/signIn/OxyPasswordPanel.d.ts +15 -0
  575. package/lib/typescript/module/ui/components/signIn/OxyPasswordPanel.d.ts.map +1 -0
  576. package/lib/typescript/module/ui/components/signIn/OxySignInPanel.d.ts +21 -19
  577. package/lib/typescript/module/ui/components/signIn/OxySignInPanel.d.ts.map +1 -1
  578. package/lib/typescript/module/ui/components/signIn/OxySignUpPanel.d.ts +16 -7
  579. package/lib/typescript/module/ui/components/signIn/OxySignUpPanel.d.ts.map +1 -1
  580. package/lib/typescript/module/ui/components/signIn/ReauthStep.d.ts +34 -0
  581. package/lib/typescript/module/ui/components/signIn/ReauthStep.d.ts.map +1 -0
  582. package/lib/typescript/module/ui/components/signIn/accountFlowParts.d.ts +38 -12
  583. package/lib/typescript/module/ui/components/signIn/accountFlowParts.d.ts.map +1 -1
  584. package/lib/typescript/module/ui/components/signIn/signInFlowStore.d.ts +20 -0
  585. package/lib/typescript/module/ui/components/signIn/signInFlowStore.d.ts.map +1 -0
  586. package/lib/typescript/module/ui/components/signIn/signInMethods.d.ts +8 -21
  587. package/lib/typescript/module/ui/components/signIn/signInMethods.d.ts.map +1 -1
  588. package/lib/typescript/module/ui/context/OxyContext.d.ts.map +1 -1
  589. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts +2 -1
  590. package/lib/typescript/module/ui/context/hooks/useAuthOperations.d.ts.map +1 -1
  591. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts +4 -39
  592. package/lib/typescript/module/ui/context/oxyContextTypes.d.ts.map +1 -1
  593. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts +2 -1
  594. package/lib/typescript/module/ui/context/useOxyAccountGraph.d.ts.map +1 -1
  595. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts +1 -1
  596. package/lib/typescript/module/ui/hooks/accountDialogSnapshot.d.ts.map +1 -1
  597. package/lib/typescript/module/ui/hooks/mutations/mutationFactory.d.ts +1 -1
  598. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts +2 -2
  599. package/lib/typescript/module/ui/hooks/mutations/useAccountMutations.d.ts.map +1 -1
  600. package/lib/typescript/module/ui/hooks/mutations/useServicesMutations.d.ts +5 -1
  601. package/lib/typescript/module/ui/hooks/mutations/useServicesMutations.d.ts.map +1 -1
  602. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts +19 -1
  603. package/lib/typescript/module/ui/hooks/queries/queryKeys.d.ts.map +1 -1
  604. package/lib/typescript/module/ui/hooks/queries/useAuthMethods.d.ts +13 -20
  605. package/lib/typescript/module/ui/hooks/queries/useAuthMethods.d.ts.map +1 -1
  606. package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts +1 -1
  607. package/lib/typescript/module/ui/hooks/queries/useFileQueries.d.ts.map +1 -1
  608. package/lib/typescript/module/ui/hooks/queries/usePaymentQueries.d.ts +4 -4
  609. package/lib/typescript/module/ui/hooks/queries/useSecurityQueries.d.ts.map +1 -1
  610. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts +3 -5
  611. package/lib/typescript/module/ui/hooks/queries/useServicesQueries.d.ts.map +1 -1
  612. package/lib/typescript/module/ui/hooks/useAssets.d.ts +5 -5
  613. package/lib/typescript/module/ui/hooks/useAssets.d.ts.map +1 -1
  614. package/lib/typescript/module/ui/hooks/useAvatarPicker.d.ts +1 -1
  615. package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts +1 -1
  616. package/lib/typescript/module/ui/hooks/useDeviceSwitcher.d.ts.map +1 -1
  617. package/lib/typescript/module/ui/hooks/useFileDownloadUrl.d.ts.map +1 -1
  618. package/lib/typescript/module/ui/hooks/useFollow.d.ts +1 -1
  619. package/lib/typescript/module/ui/hooks/useI18n.d.ts.map +1 -1
  620. package/lib/typescript/module/ui/hooks/useResolvedFileUrls.d.ts +9 -7
  621. package/lib/typescript/module/ui/hooks/useResolvedFileUrls.d.ts.map +1 -1
  622. package/lib/typescript/module/ui/icons/Ionicons.d.ts +1 -1
  623. package/lib/typescript/module/ui/icons/Ionicons.d.ts.map +1 -1
  624. package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts +1 -1
  625. package/lib/typescript/module/ui/icons/MaterialCommunityIcons.d.ts.map +1 -1
  626. package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts +0 -15
  627. package/lib/typescript/module/ui/icons/subsetGlyphMaps.d.ts.map +1 -1
  628. package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts +1 -1
  629. package/lib/typescript/module/ui/navigation/accountDialogManager.d.ts.map +1 -1
  630. package/lib/typescript/module/ui/navigation/routes.d.ts +1 -1
  631. package/lib/typescript/module/ui/navigation/routes.d.ts.map +1 -1
  632. package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts +7 -5
  633. package/lib/typescript/module/ui/navigation/surfaceRegistry.d.ts.map +1 -1
  634. package/lib/typescript/module/ui/oauth/browserBridge.d.ts +97 -0
  635. package/lib/typescript/module/ui/oauth/browserBridge.d.ts.map +1 -0
  636. package/lib/typescript/module/ui/runtime/createOxyRuntime.d.ts +6 -2
  637. package/lib/typescript/module/ui/runtime/createOxyRuntime.d.ts.map +1 -1
  638. package/lib/typescript/module/ui/runtime/runtimeContext.d.ts +2 -1
  639. package/lib/typescript/module/ui/runtime/runtimeContext.d.ts.map +1 -1
  640. package/lib/typescript/module/ui/runtime/types.d.ts +2 -1
  641. package/lib/typescript/module/ui/runtime/types.d.ts.map +1 -1
  642. package/lib/typescript/module/ui/screens/AccountSecurityPanelScreen.d.ts +11 -0
  643. package/lib/typescript/module/ui/screens/AccountSecurityPanelScreen.d.ts.map +1 -0
  644. package/lib/typescript/module/ui/screens/DeleteAccountScreen.d.ts +6 -0
  645. package/lib/typescript/module/ui/screens/DeleteAccountScreen.d.ts.map +1 -0
  646. package/lib/typescript/module/ui/screens/{SavesCollectionsScreen.d.ts → DomainsScreen.d.ts} +1 -1
  647. package/lib/typescript/module/ui/screens/DomainsScreen.d.ts.map +1 -0
  648. package/lib/typescript/module/ui/screens/FileManagementScreen.d.ts.map +1 -1
  649. package/lib/typescript/module/ui/screens/HelpSupportScreen.d.ts.map +1 -1
  650. package/lib/typescript/module/ui/screens/LinkCommonsScreen.d.ts +6 -0
  651. package/lib/typescript/module/ui/screens/LinkCommonsScreen.d.ts.map +1 -0
  652. package/lib/typescript/module/ui/screens/ManageAccountScreen.d.ts.map +1 -1
  653. package/lib/typescript/module/ui/screens/PrivacySettingsScreen.d.ts.map +1 -1
  654. package/lib/typescript/module/ui/screens/ProfileScreen.d.ts.map +1 -1
  655. package/lib/typescript/module/ui/screens/SearchSettingsScreen.d.ts.map +1 -1
  656. package/lib/typescript/module/ui/screens/SignInAuthenticatorScreen.d.ts +6 -0
  657. package/lib/typescript/module/ui/screens/SignInAuthenticatorScreen.d.ts.map +1 -0
  658. package/lib/typescript/module/ui/screens/SignInPasswordScreen.d.ts +6 -0
  659. package/lib/typescript/module/ui/screens/SignInPasswordScreen.d.ts.map +1 -0
  660. package/lib/typescript/module/ui/screens/trust/TrustCenterScreen.d.ts.map +1 -1
  661. package/lib/typescript/module/ui/screens/trust/TrustRewardsScreen.d.ts.map +1 -1
  662. package/lib/typescript/module/ui/screens/trust/TrustRulesScreen.d.ts.map +1 -1
  663. package/lib/typescript/module/ui/session/authStore.d.ts +1 -1
  664. package/lib/typescript/module/ui/session/authStore.d.ts.map +1 -1
  665. package/lib/typescript/module/ui/session/backgroundSession.d.ts +3 -4
  666. package/lib/typescript/module/ui/session/backgroundSession.d.ts.map +1 -1
  667. package/lib/typescript/module/ui/session/createSessionClient.d.ts +2 -1
  668. package/lib/typescript/module/ui/session/createSessionClient.d.ts.map +1 -1
  669. package/lib/typescript/module/ui/session/deviceCredentialTracker.d.ts +23 -0
  670. package/lib/typescript/module/ui/session/deviceCredentialTracker.d.ts.map +1 -0
  671. package/lib/typescript/module/ui/session/identityBinding.d.ts +1 -1
  672. package/lib/typescript/module/ui/session/identityBinding.d.ts.map +1 -1
  673. package/lib/typescript/module/ui/session/index.d.ts +1 -1
  674. package/lib/typescript/module/ui/session/index.d.ts.map +1 -1
  675. package/lib/typescript/module/ui/session/nativeSecureStorage.d.ts +1 -1
  676. package/lib/typescript/module/ui/session/nativeSecureStorage.d.ts.map +1 -1
  677. package/lib/typescript/module/ui/session/sharedDeviceCredentialStore.d.ts +1 -1
  678. package/lib/typescript/module/ui/session/sharedDeviceCredentialStore.d.ts.map +1 -1
  679. package/lib/typescript/module/ui/session/tokenTransport.d.ts +3 -2
  680. package/lib/typescript/module/ui/session/tokenTransport.d.ts.map +1 -1
  681. package/lib/typescript/module/ui/stores/assetStore.d.ts +7 -0
  682. package/lib/typescript/module/ui/stores/assetStore.d.ts.map +1 -1
  683. package/lib/typescript/module/ui/types/navigation.d.ts +1 -1
  684. package/lib/typescript/module/ui/types/navigation.d.ts.map +1 -1
  685. package/lib/typescript/module/ui/utils/accountDeletionHandoff.d.ts.map +1 -1
  686. package/lib/typescript/module/ui/utils/deviceCredential.d.ts +10 -3
  687. package/lib/typescript/module/ui/utils/deviceCredential.d.ts.map +1 -1
  688. package/lib/typescript/module/ui/utils/fileManagement.d.ts +1 -5
  689. package/lib/typescript/module/ui/utils/fileManagement.d.ts.map +1 -1
  690. package/package.json +4 -5
  691. package/src/assets/fonts/icons/OxyServicesIonicons.ttf +0 -0
  692. package/src/assets/fonts/icons/OxyServicesMaterialCommunityIcons.ttf +0 -0
  693. package/src/assets/fonts/icons/manifest.json +5 -20
  694. package/src/index.ts +8 -8
  695. package/src/ui/boot/__tests__/coldBootNoIdpRedirect.test.ts +4 -4
  696. package/src/ui/boot/runProviderColdBoot.ts +3 -9
  697. package/src/ui/components/OxyAccountDialogScreen.tsx +2 -3
  698. package/src/ui/components/OxyAuthChooser.tsx +13 -36
  699. package/src/ui/components/OxySignInButton.tsx +1 -1
  700. package/src/ui/components/OxySignInRequestSurface.tsx +2 -1
  701. package/src/ui/components/ProfileButton.tsx +1 -1
  702. package/src/ui/components/authChooser/AccountsMenuView.tsx +1 -6
  703. package/src/ui/components/authChooser/SignInRequestView.tsx +5 -23
  704. package/src/ui/components/authChooser/TroubleDisclosure.tsx +1 -1
  705. package/src/ui/components/authChooser/primitives.tsx +1 -1
  706. package/src/ui/components/authChooser/requestSurfaces.tsx +2 -1
  707. package/src/ui/components/authChooser/signInFailureMessage.ts +1 -1
  708. package/src/ui/components/authChooser/signInProgress.ts +2 -1
  709. package/src/ui/components/authChooser/types.ts +1 -13
  710. package/src/ui/components/signIn/InlineCommonsQr.tsx +2 -2
  711. package/src/ui/components/signIn/OxyAccountPicker.tsx +1 -1
  712. package/src/ui/components/signIn/OxyAuthenticatorPanel.tsx +294 -0
  713. package/src/ui/components/signIn/OxyDeleteAccountPanel.tsx +48 -61
  714. package/src/ui/components/signIn/OxyLinkCommonsPanel.tsx +43 -35
  715. package/src/ui/components/signIn/OxyPasswordPanel.tsx +117 -0
  716. package/src/ui/components/signIn/OxySignInPanel.tsx +534 -214
  717. package/src/ui/components/signIn/OxySignUpPanel.tsx +186 -56
  718. package/src/ui/components/signIn/ReauthStep.tsx +201 -0
  719. package/src/ui/components/signIn/accountFlowParts.tsx +139 -33
  720. package/src/ui/components/signIn/signInFlowStore.ts +41 -0
  721. package/src/ui/components/signIn/signInMethods.ts +10 -29
  722. package/src/ui/context/OxyContext.tsx +124 -145
  723. package/src/ui/context/hooks/useAuthOperations.ts +9 -8
  724. package/src/ui/context/oxyContextTypes.ts +4 -41
  725. package/src/ui/context/useOxyAccountGraph.ts +6 -5
  726. package/src/ui/hooks/accountDialogSnapshot.ts +1 -1
  727. package/src/ui/hooks/mutations/mutationFactory.ts +1 -1
  728. package/src/ui/hooks/mutations/useAccountMutations.ts +11 -10
  729. package/src/ui/hooks/mutations/useServicesMutations.ts +4 -4
  730. package/src/ui/hooks/queries/queryKeys.ts +26 -2
  731. package/src/ui/hooks/queries/useAccountQueries.ts +8 -8
  732. package/src/ui/hooks/queries/useAuthMethods.ts +22 -19
  733. package/src/ui/hooks/queries/useFileQueries.ts +2 -2
  734. package/src/ui/hooks/queries/usePaymentQueries.ts +8 -8
  735. package/src/ui/hooks/queries/useSecurityQueries.ts +4 -3
  736. package/src/ui/hooks/queries/useServicesQueries.ts +6 -6
  737. package/src/ui/hooks/useAssets.ts +26 -31
  738. package/src/ui/hooks/useAvatarPicker.ts +4 -4
  739. package/src/ui/hooks/useDeviceManagement.ts +4 -4
  740. package/src/ui/hooks/useDeviceSwitcher.ts +2 -7
  741. package/src/ui/hooks/useFileDownloadUrl.ts +1 -5
  742. package/src/ui/hooks/useFollow.ts +2 -2
  743. package/src/ui/hooks/useFollowTarget.ts +5 -5
  744. package/src/ui/hooks/useI18n.ts +6 -3
  745. package/src/ui/hooks/useResolvedFileUrls.ts +8 -6
  746. package/src/ui/hooks/useSessionManagement.ts +3 -3
  747. package/src/ui/icons/subsetGlyphMaps.ts +0 -15
  748. package/src/ui/navigation/__tests__/getSurfaceConfig.test.ts +1 -1
  749. package/src/ui/navigation/accountDialogManager.ts +1 -1
  750. package/src/ui/navigation/routes.ts +11 -8
  751. package/src/ui/navigation/surfaceRegistry.ts +8 -6
  752. package/src/ui/oauth/__tests__/browserAuthTransport.test.ts +8 -8
  753. package/src/ui/oauth/__tests__/browserBridge.test.ts +198 -0
  754. package/src/ui/oauth/__tests__/completeOAuthCode.test.ts +1 -1
  755. package/src/ui/oauth/__tests__/explicitOAuthConsent.test.ts +11 -11
  756. package/src/ui/oauth/__tests__/sharedCompletionPath.test.ts +7 -7
  757. package/src/ui/oauth/browserBridge.ts +234 -0
  758. package/src/ui/oauth/completeOAuthCode.ts +1 -1
  759. package/src/ui/oauth/explicitOAuthConsent.ts +1 -1
  760. package/src/ui/runtime/createOxyRuntime.ts +8 -16
  761. package/src/ui/runtime/runtimeContext.tsx +2 -1
  762. package/src/ui/runtime/types.ts +2 -1
  763. package/src/ui/screens/AccountMembersScreen.tsx +7 -7
  764. package/src/ui/screens/AccountSecurityPanelScreen.tsx +26 -0
  765. package/src/ui/screens/AccountSettingsScreen.tsx +3 -3
  766. package/src/ui/screens/AccountVerificationScreen.tsx +1 -1
  767. package/src/ui/screens/AppInfoScreen.tsx +5 -5
  768. package/src/ui/screens/AvatarCropScreen.tsx +3 -3
  769. package/src/ui/screens/ChangeAvatarScreen.tsx +1 -1
  770. package/src/ui/screens/CreateAccountScreen.tsx +1 -1
  771. package/src/ui/screens/DeleteAccountScreen.tsx +13 -0
  772. package/src/ui/screens/DomainsScreen.tsx +187 -0
  773. package/src/ui/screens/EditProfileScreen.tsx +1 -1
  774. package/src/ui/screens/FileManagementScreen.tsx +15 -21
  775. package/src/ui/screens/HelpSupportScreen.tsx +0 -15
  776. package/src/ui/screens/LinkCommonsScreen.tsx +13 -0
  777. package/src/ui/screens/ManageAccountScreen.tsx +47 -82
  778. package/src/ui/screens/PrivacySettingsScreen.tsx +48 -67
  779. package/src/ui/screens/ProfileScreen.tsx +5 -10
  780. package/src/ui/screens/SearchSettingsScreen.tsx +15 -27
  781. package/src/ui/screens/SignInAuthenticatorScreen.tsx +13 -0
  782. package/src/ui/screens/SignInPasswordScreen.tsx +13 -0
  783. package/src/ui/screens/UserListScreen.tsx +3 -3
  784. package/src/ui/screens/WelcomeNewUserScreen.tsx +1 -1
  785. package/src/ui/screens/trust/TrustCenterScreen.tsx +25 -29
  786. package/src/ui/screens/trust/TrustLeaderboardScreen.tsx +2 -2
  787. package/src/ui/screens/trust/TrustRewardsScreen.tsx +9 -19
  788. package/src/ui/screens/trust/TrustRulesScreen.tsx +14 -14
  789. package/src/ui/session/__tests__/authStore.test.ts +1 -1
  790. package/src/ui/session/__tests__/backgroundSession.test.ts +2 -61
  791. package/src/ui/session/__tests__/createSessionClient.test.ts +7 -9
  792. package/src/ui/session/__tests__/sharedDeviceCredentialStore.test.ts +1 -1
  793. package/src/ui/session/__tests__/tokenTransport.test.ts +9 -7
  794. package/src/ui/session/authStore.ts +1 -7
  795. package/src/ui/session/backgroundSession.ts +5 -41
  796. package/src/ui/session/createSessionClient.ts +2 -6
  797. package/src/ui/session/deviceCredentialTracker.ts +49 -0
  798. package/src/ui/session/identityBinding.ts +1 -6
  799. package/src/ui/session/index.ts +1 -1
  800. package/src/ui/session/nativeSecureStorage.ts +1 -1
  801. package/src/ui/session/sharedDeviceCredentialStore.ts +1 -6
  802. package/src/ui/session/tokenTransport.ts +5 -4
  803. package/src/ui/stores/__tests__/followStore.test.ts +13 -15
  804. package/src/ui/stores/assetStore.ts +15 -0
  805. package/src/ui/stores/followStore.ts +7 -7
  806. package/src/ui/types/navigation.ts +2 -1
  807. package/src/ui/utils/accountDeletionHandoff.ts +2 -4
  808. package/src/ui/utils/avatarUtils.ts +1 -1
  809. package/src/ui/utils/deviceCredential.ts +11 -4
  810. package/src/ui/utils/fileManagement.ts +0 -12
  811. package/src/ui/utils/sessionHelpers.ts +2 -2
  812. package/lib/commonjs/ui/components/signIn/OxyCreateAccountPanel.js +0 -236
  813. package/lib/commonjs/ui/components/signIn/OxyCreateAccountPanel.js.map +0 -1
  814. package/lib/commonjs/ui/components/signIn/OxyRecoverAccountPanel.js +0 -170
  815. package/lib/commonjs/ui/components/signIn/OxyRecoverAccountPanel.js.map +0 -1
  816. package/lib/commonjs/ui/components/signIn/passkeyError.js +0 -46
  817. package/lib/commonjs/ui/components/signIn/passkeyError.js.map +0 -1
  818. package/lib/commonjs/ui/context/passkeyFlow.js +0 -114
  819. package/lib/commonjs/ui/context/passkeyFlow.js.map +0 -1
  820. package/lib/commonjs/ui/screens/FAQScreen.js +0 -162
  821. package/lib/commonjs/ui/screens/FAQScreen.js.map +0 -1
  822. package/lib/commonjs/ui/screens/FeedbackScreen.js +0 -601
  823. package/lib/commonjs/ui/screens/FeedbackScreen.js.map +0 -1
  824. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js +0 -968
  825. package/lib/commonjs/ui/screens/PremiumSubscriptionScreen.js.map +0 -1
  826. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js +0 -132
  827. package/lib/commonjs/ui/screens/SavesCollectionsScreen.js.map +0 -1
  828. package/lib/commonjs/webauthn/passkeyClient.js +0 -39
  829. package/lib/commonjs/webauthn/passkeyClient.js.map +0 -1
  830. package/lib/commonjs/webauthn/passkeyClient.native.js +0 -34
  831. package/lib/commonjs/webauthn/passkeyClient.native.js.map +0 -1
  832. package/lib/commonjs/webauthn/passkeyClient.web.js +0 -57
  833. package/lib/commonjs/webauthn/passkeyClient.web.js.map +0 -1
  834. package/lib/module/ui/components/signIn/OxyCreateAccountPanel.js +0 -231
  835. package/lib/module/ui/components/signIn/OxyCreateAccountPanel.js.map +0 -1
  836. package/lib/module/ui/components/signIn/OxyRecoverAccountPanel.js +0 -165
  837. package/lib/module/ui/components/signIn/OxyRecoverAccountPanel.js.map +0 -1
  838. package/lib/module/ui/components/signIn/passkeyError.js +0 -40
  839. package/lib/module/ui/components/signIn/passkeyError.js.map +0 -1
  840. package/lib/module/ui/context/passkeyFlow.js +0 -107
  841. package/lib/module/ui/context/passkeyFlow.js.map +0 -1
  842. package/lib/module/ui/screens/FAQScreen.js +0 -157
  843. package/lib/module/ui/screens/FAQScreen.js.map +0 -1
  844. package/lib/module/ui/screens/FeedbackScreen.js +0 -599
  845. package/lib/module/ui/screens/FeedbackScreen.js.map +0 -1
  846. package/lib/module/ui/screens/PremiumSubscriptionScreen.js +0 -963
  847. package/lib/module/ui/screens/PremiumSubscriptionScreen.js.map +0 -1
  848. package/lib/module/ui/screens/SavesCollectionsScreen.js +0 -127
  849. package/lib/module/ui/screens/SavesCollectionsScreen.js.map +0 -1
  850. package/lib/module/webauthn/passkeyClient.js +0 -33
  851. package/lib/module/webauthn/passkeyClient.js.map +0 -1
  852. package/lib/module/webauthn/passkeyClient.native.js +0 -28
  853. package/lib/module/webauthn/passkeyClient.native.js.map +0 -1
  854. package/lib/module/webauthn/passkeyClient.web.js +0 -52
  855. package/lib/module/webauthn/passkeyClient.web.js.map +0 -1
  856. package/lib/typescript/commonjs/ui/components/signIn/OxyCreateAccountPanel.d.ts +0 -24
  857. package/lib/typescript/commonjs/ui/components/signIn/OxyCreateAccountPanel.d.ts.map +0 -1
  858. package/lib/typescript/commonjs/ui/components/signIn/OxyRecoverAccountPanel.d.ts +0 -20
  859. package/lib/typescript/commonjs/ui/components/signIn/OxyRecoverAccountPanel.d.ts.map +0 -1
  860. package/lib/typescript/commonjs/ui/components/signIn/passkeyError.d.ts +0 -16
  861. package/lib/typescript/commonjs/ui/components/signIn/passkeyError.d.ts.map +0 -1
  862. package/lib/typescript/commonjs/ui/context/passkeyFlow.d.ts +0 -92
  863. package/lib/typescript/commonjs/ui/context/passkeyFlow.d.ts.map +0 -1
  864. package/lib/typescript/commonjs/ui/screens/FAQScreen.d.ts +0 -5
  865. package/lib/typescript/commonjs/ui/screens/FAQScreen.d.ts.map +0 -1
  866. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts +0 -5
  867. package/lib/typescript/commonjs/ui/screens/FeedbackScreen.d.ts.map +0 -1
  868. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts +0 -5
  869. package/lib/typescript/commonjs/ui/screens/PremiumSubscriptionScreen.d.ts.map +0 -1
  870. package/lib/typescript/commonjs/ui/screens/SavesCollectionsScreen.d.ts.map +0 -1
  871. package/lib/typescript/commonjs/webauthn/passkeyClient.d.ts +0 -20
  872. package/lib/typescript/commonjs/webauthn/passkeyClient.d.ts.map +0 -1
  873. package/lib/typescript/commonjs/webauthn/passkeyClient.native.d.ts +0 -15
  874. package/lib/typescript/commonjs/webauthn/passkeyClient.native.d.ts.map +0 -1
  875. package/lib/typescript/commonjs/webauthn/passkeyClient.web.d.ts +0 -36
  876. package/lib/typescript/commonjs/webauthn/passkeyClient.web.d.ts.map +0 -1
  877. package/lib/typescript/module/ui/components/signIn/OxyCreateAccountPanel.d.ts +0 -24
  878. package/lib/typescript/module/ui/components/signIn/OxyCreateAccountPanel.d.ts.map +0 -1
  879. package/lib/typescript/module/ui/components/signIn/OxyRecoverAccountPanel.d.ts +0 -20
  880. package/lib/typescript/module/ui/components/signIn/OxyRecoverAccountPanel.d.ts.map +0 -1
  881. package/lib/typescript/module/ui/components/signIn/passkeyError.d.ts +0 -16
  882. package/lib/typescript/module/ui/components/signIn/passkeyError.d.ts.map +0 -1
  883. package/lib/typescript/module/ui/context/passkeyFlow.d.ts +0 -92
  884. package/lib/typescript/module/ui/context/passkeyFlow.d.ts.map +0 -1
  885. package/lib/typescript/module/ui/screens/FAQScreen.d.ts +0 -5
  886. package/lib/typescript/module/ui/screens/FAQScreen.d.ts.map +0 -1
  887. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts +0 -5
  888. package/lib/typescript/module/ui/screens/FeedbackScreen.d.ts.map +0 -1
  889. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts +0 -5
  890. package/lib/typescript/module/ui/screens/PremiumSubscriptionScreen.d.ts.map +0 -1
  891. package/lib/typescript/module/ui/screens/SavesCollectionsScreen.d.ts.map +0 -1
  892. package/lib/typescript/module/webauthn/passkeyClient.d.ts +0 -20
  893. package/lib/typescript/module/webauthn/passkeyClient.d.ts.map +0 -1
  894. package/lib/typescript/module/webauthn/passkeyClient.native.d.ts +0 -15
  895. package/lib/typescript/module/webauthn/passkeyClient.native.d.ts.map +0 -1
  896. package/lib/typescript/module/webauthn/passkeyClient.web.d.ts +0 -36
  897. package/lib/typescript/module/webauthn/passkeyClient.web.d.ts.map +0 -1
  898. package/src/ui/components/signIn/OxyCreateAccountPanel.tsx +0 -207
  899. package/src/ui/components/signIn/OxyRecoverAccountPanel.tsx +0 -154
  900. package/src/ui/components/signIn/passkeyError.ts +0 -44
  901. package/src/ui/context/__tests__/passkeyFlow.test.ts +0 -239
  902. package/src/ui/context/passkeyFlow.ts +0 -145
  903. package/src/ui/screens/FAQScreen.tsx +0 -200
  904. package/src/ui/screens/FeedbackScreen.tsx +0 -766
  905. package/src/ui/screens/PremiumSubscriptionScreen.tsx +0 -1103
  906. package/src/ui/screens/SavesCollectionsScreen.tsx +0 -167
  907. package/src/webauthn/passkeyClient.native.ts +0 -26
  908. package/src/webauthn/passkeyClient.ts +0 -31
  909. package/src/webauthn/passkeyClient.web.ts +0 -56
@@ -1,39 +1,44 @@
1
1
  /**
2
2
  * THE Oxy sign-in screen. The account dialog every Oxy app opens and the
3
3
  * auth.oxy.so page render this one component; only where it is mounted
4
- * differs (`host`).
4
+ * differs (`host`). Sign-in happens IN it, on every origin: no window opens.
5
5
  *
6
- * picker a returning device: "Choose an account", then "Use another account"
7
- * entry the header, the Commons way in, the passkey, and the way in for
8
- * someone with no account. On the web, from `md`, the screen is
9
- * Bloom `AuthCard`'s split card and the Commons way in is the
10
- * embedded QR over its photo carousel, in the right column (the
11
- * account dialog grows to that card); below `md` it is "Continue
12
- * with Oxy" at the top. The passkey belongs to `oxy.so`: on
13
- * auth.oxy.so (`page`) it runs here — the username with its Continue,
14
- * a username-first ceremony that takes a hardware security key with
15
- * no resident credential too, and the discoverable passkey — and in
16
- * an app's dialog it opens auth.oxy.so's window for that one step, as
17
- * does "Create account". On native it is "Continue with Oxy" ("Get
18
- * Commons" without Commons).
6
+ * picker a returning device: "Choose an account", then "Use another account"
7
+ * identifier the header, the Commons way in, and "Email or username" with its
8
+ * Continue. On the web, from `md`, the screen is Bloom `AuthCard`'s
9
+ * split card and the Commons way in is the embedded QR over its
10
+ * photo carousel, in the right column (the account dialog grows to
11
+ * that card); below `md` it is "Continue with Oxy" at the top. On
12
+ * native it is "Continue with Oxy" ("Get Commons" without Commons).
13
+ * check-email one email carries a code and a link. The code is typed here (6
14
+ * digits, or the 10-character long code); meanwhile the screen asks
15
+ * whether the link was opened in this browser, and signs in when it was.
16
+ * password the alternative for an account that has one.
17
+ * second-factor the authenticator's code, or a backup code, when the account has one.
19
18
  *
20
- * `signInMethods.ts` owns which blocks a platform gets.
19
+ * Every answer is the same whether or not the account exists: the email step
20
+ * says "if an account matches".
21
21
  */
22
22
 
23
23
  import type React from 'react';
24
- import { useCallback, useEffect, useState } from 'react';
24
+ import { useCallback, useEffect, useRef, useState } from 'react';
25
25
  import { Linking, Platform, Text as RNText, StyleSheet, View } from 'react-native';
26
26
  import { View as CssView } from 'react-native-css/components';
27
27
  import { AuthMediaCarousel } from '@oxy.so/bloom/auth-card';
28
28
  import { Button } from '@oxy.so/bloom/button';
29
29
  import { Divider } from '@oxy.so/bloom/divider';
30
- import { RiKey2Line } from '@oxy.so/bloom/icons/RiKey2Line';
31
- import { RiQrCodeLine } from '@oxy.so/bloom/icons/RiQrCodeLine';
32
30
  import { useTheme } from '@oxy.so/bloom/theme';
33
- import { TextField, TextFieldHint, TextFieldInput, TextFieldLabel } from '@oxy.so/bloom/text-field';
34
31
  import { toast } from '@oxy.so/bloom/toast';
35
32
  import { Text } from '@oxy.so/bloom/typography';
36
- import type { SwitcherContextRow } from '@oxy.so/core';
33
+ import type { SwitcherContextRow } from '@oxy.so/core/session';
34
+ import {
35
+ EMAIL_SIGNIN_LONG_CODE_LENGTH,
36
+ SIGN_IN_ERROR_CODES,
37
+ TOTP_DIGITS,
38
+ isSecondFactorRequired,
39
+ type LoginResult,
40
+ type SignInStepResult,
41
+ } from '@oxy.so/contracts';
37
42
  import { useQueryClient } from '@tanstack/react-query';
38
43
  import { useOxy } from '../../context/OxyContext';
39
44
  import { useAccountDialogSnapshot } from '../../hooks/accountDialogSnapshot';
@@ -47,20 +52,50 @@ import { SIGN_IN_SLIDES } from './artwork';
47
52
  import { InlineCommonsQr } from './InlineCommonsQr';
48
53
  import { OxyAccountPicker } from './OxyAccountPicker';
49
54
  import { OxyAuthScreen, OxyAuthScreenHeader, OxyAuthSplit, OxyAuthTerms } from './OxyAuthScreen';
50
- import { RATE_LIMIT_SECONDS, describePasskeyError, isRateLimited } from './passkeyError';
55
+ import {
56
+ AccountFlowAction,
57
+ AccountFlowField,
58
+ AccountFlowNote,
59
+ describeSignInError,
60
+ errorCode,
61
+ formatSignInCodeInput,
62
+ isCompleteSignInCode,
63
+ isRateLimited,
64
+ retryAfterSeconds,
65
+ } from './accountFlowParts';
66
+ import { readSignInFlow, writeSignInFlow } from './signInFlowStore';
51
67
  import { resolveSignInMethods } from './signInMethods';
52
68
 
53
69
  /** Bloom `AuthCard`'s split card width, which the account dialog grows to for it. */
54
70
  const SPLIT_WIDTH = 880;
71
+ /** How often the check-email step asks whether the link was opened in this browser. */
72
+ export const EMAIL_SIGNIN_POLL_MS = 2000;
73
+ /** How long after an email "Send a new email" waits. */
74
+ export const EMAIL_RESEND_COOLDOWN_SECONDS = 30;
75
+
76
+ /** What the dialog keeps of this screen across a remount (`signInFlowStore`). */
77
+ interface SavedSignInFlow {
78
+ step: Step;
79
+ identifier: string;
80
+ showForm: boolean;
81
+ useBackupCode: boolean;
82
+ /** When "Send a new email" may be pressed again (ms). */
83
+ resendUntil: number;
84
+ }
85
+ const SIGN_IN_FLOW_KEY = 'signin';
86
+
87
+ type Step =
88
+ | { name: 'start' }
89
+ | { name: 'check-email'; identifier: string; requestId: string; requestSecret: string }
90
+ | { name: 'password'; identifier: string }
91
+ | { name: 'second-factor'; challengeId: string; identifier: string };
55
92
 
56
93
  export interface OxySignInPanelProps {
57
94
  /** This screen signed the origin in. */
58
95
  onSignedIn: () => void;
59
- /** "New to Oxy? Create one". */
96
+ /** "Don't have an account? Create account". */
60
97
  onCreateAccount: () => void;
61
- /** "Lost your passkey? Recover your account" — auth.oxy.so's page only. */
62
- onRecover?: () => void;
63
- /** A handle to pre-fill, skipping the picker (a re-authentication). */
98
+ /** An email or username to pre-fill, skipping the picker (a re-authentication). */
64
99
  loginHint?: string;
65
100
  /** The app being continued to, when there is one. */
66
101
  appName?: string | null;
@@ -76,7 +111,6 @@ export interface OxySignInPanelProps {
76
111
  export const OxySignInPanel: React.FC<OxySignInPanelProps> = ({
77
112
  onSignedIn,
78
113
  onCreateAccount,
79
- onRecover,
80
114
  loginHint,
81
115
  appName = null,
82
116
  host = 'page',
@@ -84,21 +118,44 @@ export const OxySignInPanel: React.FC<OxySignInPanelProps> = ({
84
118
  const theme = useTheme();
85
119
  const { t } = useI18n();
86
120
  const queryClient = useQueryClient();
87
- const { accountDialogController: controller, openAccountDialog, signInWithPasskey, continueOnAuth } = useOxy();
121
+ const { accountDialogController: controller, openAccountDialog, oxyServices, handleWebSession } = useOxy();
88
122
  const snapshot = useAccountDialogSnapshot(controller);
89
123
  const { principals, activeContext } = useDeviceSwitcher();
90
124
 
91
125
  const methods = resolveSignInMethods({
92
126
  web: isWebBrowser(),
93
- host,
94
127
  commonsAvailability: snapshot.commonsAvailability,
95
128
  });
96
129
 
97
- const [showForm, setShowForm] = useState(Boolean(loginHint));
98
- const [identifier, setIdentifier] = useState(loginHint ?? '');
130
+ // In the dialog the step outlives a remount of this screen (the responsive
131
+ // surface swaps its tree at `md`): it is restored from, and saved to, the
132
+ // flow store the dialog's controller owns.
133
+ const flowOwner = host === 'dialog' ? controller : null;
134
+ const [saved] = useState(() => readSignInFlow<SavedSignInFlow>(flowOwner, SIGN_IN_FLOW_KEY));
135
+ const [showForm, setShowForm] = useState(saved?.showForm ?? Boolean(loginHint));
136
+ const [step, setStep] = useState<Step>(saved?.step ?? { name: 'start' });
137
+ const [identifier, setIdentifier] = useState(saved?.identifier ?? loginHint ?? '');
138
+ const [code, setCode] = useState('');
139
+ const [password, setPassword] = useState('');
140
+ const [secondFactorCode, setSecondFactorCode] = useState('');
141
+ const [useBackupCode, setUseBackupCode] = useState(saved?.useBackupCode ?? false);
99
142
  const [pending, setPending] = useState(false);
100
143
  const [error, setError] = useState<string | null>(null);
144
+ const [notice, setNotice] = useState<string | null>(null);
101
145
  const [rateLimitSeconds, setRateLimitSeconds] = useState(0);
146
+ const [resendSeconds, setResendSeconds] = useState(() =>
147
+ saved ? Math.max(0, Math.ceil((saved.resendUntil - Date.now()) / 1000)) : 0,
148
+ );
149
+
150
+ useEffect(() => {
151
+ writeSignInFlow(flowOwner, SIGN_IN_FLOW_KEY, {
152
+ step,
153
+ identifier,
154
+ showForm,
155
+ useBackupCode,
156
+ resendUntil: Date.now() + resendSeconds * 1000,
157
+ } satisfies SavedSignInFlow);
158
+ }, [flowOwner, step, identifier, showForm, useBackupCode, resendSeconds]);
102
159
  const blocked = pending || rateLimitSeconds > 0;
103
160
 
104
161
  // The countdown after a 429: one tick a second until the person may retry.
@@ -108,6 +165,13 @@ export const OxySignInPanel: React.FC<OxySignInPanelProps> = ({
108
165
  return () => clearTimeout(timer);
109
166
  }, [rateLimitSeconds]);
110
167
 
168
+ // The wait before another email may be asked for.
169
+ useEffect(() => {
170
+ if (resendSeconds <= 0) return;
171
+ const timer = setTimeout(() => setResendSeconds((seconds) => Math.max(0, seconds - 1)), 1000);
172
+ return () => clearTimeout(timer);
173
+ }, [resendSeconds]);
174
+
111
175
  // On a page, a request the controller runs (the embedded QR, or one shown in
112
176
  // the dialog opened over it) finishes the page's sign-in too. Only one that
113
177
  // STARTED here: a completion already on the controller is somebody else's.
@@ -122,61 +186,195 @@ export const OxySignInPanel: React.FC<OxySignInPanelProps> = ({
122
186
  if (host === 'page') openAccountDialog('qr');
123
187
  }, [host, openAccountDialog]);
124
188
 
125
- // These open a window or leave the page, so they run straight from the
126
- // press, before any await.
127
189
  const continueWithOxy = () => {
128
190
  void controller?.signInWithOxy();
129
191
  showRequest();
130
192
  };
131
- // The passkey is `oxy.so`'s: in an app it runs in auth.oxy.so's window.
132
- const passkeyOnOxy = () => {
133
- void continueOnAuth('signin').then((result) => {
134
- if (result.status === 'signed-in') onSignedIn();
135
- else if (result.status === 'failed') toast.error(t('signin.errors.failed'));
136
- });
137
- };
138
- const useAnotherDevice = () => {
139
- void controller?.showQr();
140
- showRequest();
141
- };
142
193
  const getCommons = () => {
143
194
  Promise.resolve()
144
195
  .then(() => Linking.openURL(getCommonsAcquisitionUrl(Platform.OS)))
145
196
  .catch(() => toast.error(t('accountSwitcher.linkOpenFailed')));
146
197
  };
147
198
 
148
- const runPasskey = async (username: string | undefined, failToast: string) => {
199
+ const fail = useCallback(
200
+ (reason: unknown) => {
201
+ if (isRateLimited(reason)) setRateLimitSeconds(retryAfterSeconds(reason));
202
+ else setError(describeSignInError(reason, t));
203
+ },
204
+ [t],
205
+ );
206
+
207
+ // One sign-in ends once: the typed code and the opened link can race.
208
+ const finishingRef = useRef(false);
209
+ const finish = useCallback(
210
+ async (result: SignInStepResult, from: string): Promise<void> => {
211
+ if (finishingRef.current) return;
212
+ if (isSecondFactorRequired(result)) {
213
+ setError(null);
214
+ setSecondFactorCode('');
215
+ setUseBackupCode(false);
216
+ setStep({ name: 'second-factor', challengeId: result.challengeId, identifier: from });
217
+ return;
218
+ }
219
+ finishingRef.current = true;
220
+ writeSignInFlow(flowOwner, SIGN_IN_FLOW_KEY, undefined);
221
+ try {
222
+ await handleWebSession(result as LoginResult);
223
+ } catch (reason) {
224
+ finishingRef.current = false;
225
+ throw reason;
226
+ }
227
+ onSignedIn();
228
+ },
229
+ [handleWebSession, onSignedIn, flowOwner],
230
+ );
231
+
232
+ /** Send the sign-in email and show "Check your email". */
233
+ const startEmail = (name: string) => {
149
234
  if (blocked) return;
150
235
  setError(null);
236
+ setNotice(null);
151
237
  setPending(true);
152
- try {
153
- await signInWithPasskey({ username });
154
- onSignedIn();
155
- } catch (err) {
156
- if (isRateLimited(err)) {
157
- setRateLimitSeconds(RATE_LIMIT_SECONDS);
158
- } else {
159
- const message = describePasskeyError(err, t);
160
- setError(message);
161
- toast.error(failToast, { description: message });
162
- }
163
- } finally {
164
- setPending(false);
238
+ oxyServices
239
+ .auth.email.start(name)
240
+ .then((started) => {
241
+ if (started.retryLater) {
242
+ setError(t('signin.checkEmail.retryLater'));
243
+ return;
244
+ }
245
+ setCode('');
246
+ setResendSeconds(EMAIL_RESEND_COOLDOWN_SECONDS);
247
+ if (step.name === 'check-email') setNotice(t('signin.checkEmail.resent'));
248
+ setStep({ name: 'check-email', identifier: name, requestId: started.requestId, requestSecret: started.requestSecret });
249
+ })
250
+ .catch(fail)
251
+ .finally(() => setPending(false));
252
+ };
253
+
254
+ const submitIdentifier = () => {
255
+ const name = identifier.trim();
256
+ if (!name) {
257
+ setError(t('signin.identifier.required'));
258
+ return;
165
259
  }
260
+ startEmail(name);
261
+ };
262
+
263
+ const submitCode = (typed: string) => {
264
+ if (step.name !== 'check-email' || blocked) return;
265
+ if (!isCompleteSignInCode(typed)) {
266
+ setError(t('signin.errors.codeInvalid'));
267
+ return;
268
+ }
269
+ const request = step;
270
+ setError(null);
271
+ setNotice(null);
272
+ setPending(true);
273
+ oxyServices
274
+ .auth.email.confirm({ requestId: request.requestId, requestSecret: request.requestSecret, code: typed.trim() })
275
+ .then((result) => finish(result, request.identifier))
276
+ .catch((reason: unknown) => {
277
+ setCode('');
278
+ fail(reason);
279
+ })
280
+ .finally(() => setPending(false));
166
281
  };
167
- const submitUsername = () => {
168
- const username = identifier.trim();
169
- if (username) void runPasskey(username, t('signin.errors.failed'));
170
- else setError(t('signin.username.required'));
282
+
283
+ const submitPassword = () => {
284
+ if (step.name !== 'password' || blocked) return;
285
+ if (!password) {
286
+ setError(t('signin.password.required'));
287
+ return;
288
+ }
289
+ const name = step.identifier;
290
+ setError(null);
291
+ setPending(true);
292
+ oxyServices
293
+ .auth.password.signIn({ identifier: name, password })
294
+ .then((result) => finish(result, name))
295
+ .catch(fail)
296
+ .finally(() => setPending(false));
297
+ };
298
+
299
+ const submitSecondFactor = (typed: string) => {
300
+ if (step.name !== 'second-factor' || blocked) return;
301
+ const value = typed.trim();
302
+ if (!value) {
303
+ setError(t('signin.errors.secondFactorInvalid'));
304
+ return;
305
+ }
306
+ const challenge = step;
307
+ setError(null);
308
+ setPending(true);
309
+ oxyServices
310
+ .auth.completeSecondFactor({ challengeId: challenge.challengeId, code: value })
311
+ .then((session) => finish(session, challenge.identifier))
312
+ .catch((reason: unknown) => {
313
+ setSecondFactorCode('');
314
+ fail(reason);
315
+ })
316
+ .finally(() => setPending(false));
317
+ };
318
+
319
+ // The poll below finishes through the latest `finish` without restarting
320
+ // when a parent re-renders with a new `onSignedIn`.
321
+ const finishRef = useRef(finish);
322
+ useEffect(() => {
323
+ finishRef.current = finish;
324
+ }, [finish]);
325
+
326
+ // While "Check your email" shows, ask whether the link was opened in this
327
+ // browser; stop when the step goes, and on a request that is gone. A session
328
+ // the server handed over is always committed, even if the step went away
329
+ // meanwhile: the request is spent, so it would otherwise be lost.
330
+ const emailRequest = step.name === 'check-email' ? step : null;
331
+ const requestId = emailRequest?.requestId ?? null;
332
+ const requestSecret = emailRequest?.requestSecret ?? null;
333
+ const requestIdentifier = emailRequest?.identifier ?? '';
334
+ useEffect(() => {
335
+ if (!requestId || !requestSecret) return;
336
+ let stopped = false;
337
+ let timer: ReturnType<typeof setTimeout> | undefined;
338
+ const poll = async () => {
339
+ if (stopped) return;
340
+ try {
341
+ const result = await oxyServices.auth.email.collect({ requestId, requestSecret });
342
+ if (!('status' in result)) {
343
+ await finishRef.current(result, requestIdentifier);
344
+ return;
345
+ }
346
+ if (stopped) return;
347
+ } catch (reason) {
348
+ if (stopped) return;
349
+ // A spent, expired or unknown request never approves: stop asking.
350
+ if (errorCode(reason) === SIGN_IN_ERROR_CODES.requestInvalid) return;
351
+ }
352
+ if (!stopped) timer = setTimeout(() => void poll(), EMAIL_SIGNIN_POLL_MS);
353
+ };
354
+ timer = setTimeout(() => void poll(), EMAIL_SIGNIN_POLL_MS);
355
+ return () => {
356
+ stopped = true;
357
+ if (timer) clearTimeout(timer);
358
+ };
359
+ }, [requestId, requestSecret, requestIdentifier, oxyServices]);
360
+
361
+ const backToIdentifier = () => {
362
+ setError(null);
363
+ setNotice(null);
364
+ setCode('');
365
+ setPassword('');
366
+ setStep({ name: 'start' });
367
+ };
368
+ const toPassword = (name: string) => {
369
+ setError(null);
370
+ setNotice(null);
371
+ setPassword('');
372
+ setStep({ name: 'password', identifier: name });
171
373
  };
172
374
 
173
375
  // A returning device starts at WHO. Not while adding an account from inside
174
376
  // a signed-in app: the rows are the accounts it would add.
175
377
  const pickerAllowed = host === 'dialog' ? !snapshot.hasSession : activeContext !== null;
176
- const reauthenticate = (context: SwitcherContextRow) => {
177
- setIdentifier(context.handle ?? '');
178
- setShowForm(true);
179
- };
180
378
  const selectContext = async (context: SwitcherContextRow) => {
181
379
  const outcome = await controller?.chooseContext(context.contextId).catch(() => 'failed' as const);
182
380
  switch (outcome) {
@@ -194,8 +392,12 @@ export const OxySignInPanel: React.FC<OxySignInPanelProps> = ({
194
392
  return;
195
393
  case 'failed':
196
394
  // The pair could not be activated as it stands: sign in as it explicitly.
197
- if (methods.passkey === 'here' && context.handle) reauthenticate(context);
198
- else toast.error(t('accountSwitcher.toasts.activateFailed'));
395
+ if (context.handle) {
396
+ setIdentifier(context.handle);
397
+ setShowForm(true);
398
+ } else {
399
+ toast.error(t('accountSwitcher.toasts.activateFailed'));
400
+ }
199
401
  return;
200
402
  default:
201
403
  return;
@@ -203,7 +405,7 @@ export const OxySignInPanel: React.FC<OxySignInPanelProps> = ({
203
405
  };
204
406
 
205
407
  const showsPicker = pickerAllowed && !showForm && principals.length > 0;
206
- // The web entry is the split card from `md`. In the account dialog it grows
408
+ // The web screen is the split card from `md`. In the account dialog it grows
207
409
  // the dialog to that card; below `md` the dialog is a bottom sheet, which a
208
410
  // width does not touch.
209
411
  const splits = methods.commons === 'qr';
@@ -227,158 +429,279 @@ export const OxySignInPanel: React.FC<OxySignInPanelProps> = ({
227
429
  }
228
430
 
229
431
  const shownError = rateLimitSeconds > 0 ? t('signin.errors.rateLimited', { seconds: rateLimitSeconds }) : error;
432
+ const clearError = () => {
433
+ if (error) setError(null);
434
+ };
230
435
 
231
- const adding = host === 'dialog' && snapshot.hasSession;
232
- const title = adding ? t('signin.addAccountTitle') : t('signin.title');
233
- const description = adding
234
- ? t('signin.addAccountSubtitle')
235
- : appName
236
- ? t('signin.subtitleToApp', { app: appName })
237
- : t('signin.subtitle');
238
- const noAccount = (
239
- <Text style={[styles.note, styles.noAccount, { color: theme.colors.textSecondary }]}>
240
- {t('signin.noAccount')}{' '}
241
- <RNText
242
- accessibilityRole="link"
243
- onPress={onCreateAccount}
244
- style={[styles.noAccountLink, { color: theme.colors.text }]}
245
- testID="create-account-link"
246
- >
247
- {t('signin.createAccount')}
248
- </RNText>
249
- </Text>
250
- );
251
- // One solid action per screen: the username's Continue when there is one.
252
- const commonsAppearance = methods.passkey === 'here' ? 'outline' : 'solid';
253
-
254
- const continueWithOxyButton = (
255
- <Button
256
- appearance={commonsAppearance}
257
- tone={commonsAppearance === 'solid' ? 'action' : 'neutral'}
258
- size="lg"
259
- fullWidth
260
- onPress={continueWithOxy}
261
- testID="continue-with-oxy"
262
- >
263
- {t('accountSwitcher.continueWithOxy')}
264
- </Button>
265
- );
266
-
267
- const passkeyButton = (
268
- <Button
269
- appearance="outline"
270
- tone="neutral"
271
- size="lg"
272
- fullWidth
273
- leadingIcon={RiKey2Line}
274
- disabled={methods.passkey === 'here' && blocked}
275
- onPress={methods.passkey === 'here' ? () => void runPasskey(undefined, t('signin.errors.failed')) : passkeyOnOxy}
276
- testID="passkey-sign-in"
277
- >
278
- {t('signin.methods.passkey')}
279
- </Button>
280
- );
281
-
282
- const form = (
283
- <OxyAuthScreen className={splits ? 'md:max-w-none' : undefined}>
284
- <OxyAuthScreenHeader title={title} description={description} />
285
-
286
- {/* Below `md` this screen is the phone a QR would be scanned with. */}
287
- {splits ? <CssView className="md:hidden">{continueWithOxyButton}</CssView> : null}
288
-
289
- {methods.commons === 'continue' ? continueWithOxyButton : null}
290
- {methods.commons === 'get-commons' ? (
291
- <View style={styles.stack}>
292
- <Text style={[styles.note, { color: theme.colors.textSecondary }]}>{t('accountSwitcher.commonsNotInstalled')}</Text>
293
- <Button appearance="solid" tone="action" size="lg" fullWidth onPress={getCommons} testID="get-commons-button">
294
- {t('accountSwitcher.getCommons')}
295
- </Button>
296
- </View>
297
- ) : null}
298
-
299
- {methods.passkey === 'here' ? (
300
- <View style={styles.stack}>
301
- <View style={styles.field}>
302
- <TextFieldLabel nativeID="username-label">{t('signin.username.label')}</TextFieldLabel>
303
- <TextField invalid={shownError !== null} disabled={blocked} radius={999} style={styles.input}>
304
- <TextFieldInput
305
- testID="username"
306
- label={t('signin.username.label')}
307
- value={identifier}
308
- onValueChange={(value) => {
309
- setIdentifier(value);
310
- if (error) setError(null);
311
- }}
312
- placeholder={t('signin.username.placeholder')}
313
- autoComplete="username"
314
- autoCapitalize="none"
315
- autoCorrect={false}
316
- autoFocus={Platform.OS === 'web'}
317
- returnKeyType="go"
318
- onSubmitEditing={submitUsername}
319
- aria-required
320
- />
321
- </TextField>
322
- {shownError ? <TextFieldHint invalid>{shownError}</TextFieldHint> : null}
436
+ let form: React.ReactNode;
437
+ switch (step.name) {
438
+ case 'check-email': {
439
+ const request = step;
440
+ form = (
441
+ <OxyAuthScreen className={splits ? 'md:max-w-none' : undefined}>
442
+ <OxyAuthScreenHeader
443
+ title={t('signin.checkEmail.title')}
444
+ description={t('signin.checkEmail.description', { identifier: request.identifier })}
445
+ />
446
+ <AccountFlowField
447
+ label={t('signin.checkEmail.codeLabel')}
448
+ value={code}
449
+ onChange={(value) => {
450
+ const typed = formatSignInCodeInput(value);
451
+ setCode(typed);
452
+ clearError();
453
+ if (isCompleteSignInCode(typed)) submitCode(typed);
454
+ }}
455
+ onSubmit={() => submitCode(code)}
456
+ error={shownError}
457
+ disabled={blocked}
458
+ placeholder="000000"
459
+ autoComplete="one-time-code"
460
+ maxLength={EMAIL_SIGNIN_LONG_CODE_LENGTH + 1}
461
+ hint={t('signin.checkEmail.codeHint')}
462
+ testID="signin-code"
463
+ />
464
+ {notice ? <AccountFlowNote testID="signin-notice">{notice}</AccountFlowNote> : null}
465
+ <AccountFlowAction
466
+ label={t('signin.actions.continue')}
467
+ onPress={() => submitCode(code)}
468
+ pending={pending}
469
+ disabled={rateLimitSeconds > 0}
470
+ testID="signin-code-continue"
471
+ />
472
+ <View style={styles.links}>
473
+ <SubtleLink
474
+ label={
475
+ resendSeconds > 0
476
+ ? t('signin.checkEmail.resendIn', { seconds: resendSeconds })
477
+ : t('signin.checkEmail.resend')
478
+ }
479
+ theme={theme}
480
+ onPress={() => startEmail(request.identifier)}
481
+ disabled={blocked || resendSeconds > 0}
482
+ testID="signin-resend"
483
+ />
484
+ <SubtleLink
485
+ label={t('signin.checkEmail.usePassword')}
486
+ theme={theme}
487
+ onPress={() => toPassword(request.identifier)}
488
+ disabled={pending}
489
+ testID="signin-use-password"
490
+ />
491
+ <SubtleLink
492
+ label={t('signin.checkEmail.differentAccount')}
493
+ theme={theme}
494
+ onPress={backToIdentifier}
495
+ disabled={pending}
496
+ testID="signin-different-account"
497
+ />
323
498
  </View>
324
- {noAccount}
325
- <Button
326
- appearance="solid"
327
- tone="action"
328
- size="lg"
329
- fullWidth
330
- loading={pending}
499
+ </OxyAuthScreen>
500
+ );
501
+ break;
502
+ }
503
+ case 'password': {
504
+ const request = step;
505
+ form = (
506
+ <OxyAuthScreen className={splits ? 'md:max-w-none' : undefined}>
507
+ <OxyAuthScreenHeader title={t('signin.password.title')} description={request.identifier} />
508
+ <AccountFlowField
509
+ label={t('signin.password.label')}
510
+ value={password}
511
+ onChange={(value) => {
512
+ setPassword(value);
513
+ clearError();
514
+ }}
515
+ onSubmit={submitPassword}
516
+ error={shownError}
331
517
  disabled={blocked}
332
- onPress={submitUsername}
333
- testID="username-continue"
334
- >
335
- {t('signin.actions.continue')}
336
- </Button>
337
- </View>
338
- ) : null}
339
-
340
- {/* The alternatives to the screen's primary way in, always under it. In an
341
- app's dialog, from `md`, the QR beside it IS the primary way in. */}
342
- {methods.passkey === 'window' ? (
343
- <CssView className="md:hidden">
344
- <Divider>{t('signin.orContinueWith')}</Divider>
345
- </CssView>
346
- ) : (
347
- <Divider>{t('signin.orContinueWith')}</Divider>
348
- )}
349
-
350
- {methods.passkey === 'none' ? (
351
- <Button
352
- appearance="outline"
353
- tone="neutral"
354
- size="lg"
355
- fullWidth
356
- leadingIcon={RiQrCodeLine}
357
- onPress={useAnotherDevice}
358
- testID="scan-qr"
359
- >
360
- {t('accountSwitcher.scanQr')}
518
+ autoComplete="current-password"
519
+ secureTextEntry
520
+ testID="signin-password"
521
+ />
522
+ <AccountFlowAction
523
+ label={t('signin.actions.continue')}
524
+ onPress={submitPassword}
525
+ pending={pending}
526
+ disabled={rateLimitSeconds > 0}
527
+ testID="signin-password-continue"
528
+ />
529
+ <View style={styles.links}>
530
+ <SubtleLink
531
+ label={t('signin.password.forgot')}
532
+ theme={theme}
533
+ onPress={() => startEmail(request.identifier)}
534
+ disabled={blocked}
535
+ testID="signin-password-forgot"
536
+ />
537
+ <SubtleLink
538
+ label={t('signin.checkEmail.differentAccount')}
539
+ theme={theme}
540
+ onPress={backToIdentifier}
541
+ disabled={pending}
542
+ testID="signin-different-account"
543
+ />
544
+ </View>
545
+ </OxyAuthScreen>
546
+ );
547
+ break;
548
+ }
549
+ case 'second-factor':
550
+ form = (
551
+ <OxyAuthScreen className={splits ? 'md:max-w-none' : undefined}>
552
+ <OxyAuthScreenHeader
553
+ title={t('signin.secondFactor.title')}
554
+ description={useBackupCode ? t('signin.secondFactor.backupDescription') : t('signin.secondFactor.description')}
555
+ />
556
+ <AccountFlowField
557
+ key={useBackupCode ? 'backup' : 'totp'}
558
+ label={useBackupCode ? t('signin.secondFactor.backupLabel') : t('signin.secondFactor.label')}
559
+ value={secondFactorCode}
560
+ onChange={(value) => {
561
+ if (useBackupCode) {
562
+ setSecondFactorCode(value);
563
+ clearError();
564
+ return;
565
+ }
566
+ const digits = value.replace(/\D/g, '').slice(0, TOTP_DIGITS);
567
+ setSecondFactorCode(digits);
568
+ clearError();
569
+ if (digits.length === TOTP_DIGITS) submitSecondFactor(digits);
570
+ }}
571
+ onSubmit={() => submitSecondFactor(secondFactorCode)}
572
+ error={shownError}
573
+ disabled={blocked}
574
+ placeholder={useBackupCode ? 'xxxxx-xxxxx' : '000000'}
575
+ autoComplete="one-time-code"
576
+ keyboardType={useBackupCode ? 'default' : 'number-pad'}
577
+ maxLength={useBackupCode ? 11 : TOTP_DIGITS}
578
+ testID="signin-second-factor"
579
+ />
580
+ <AccountFlowAction
581
+ label={t('signin.actions.continue')}
582
+ onPress={() => submitSecondFactor(secondFactorCode)}
583
+ pending={pending}
584
+ disabled={rateLimitSeconds > 0}
585
+ testID="signin-second-factor-continue"
586
+ />
587
+ <View style={styles.links}>
588
+ <SubtleLink
589
+ label={useBackupCode ? t('signin.secondFactor.useAuthenticator') : t('signin.secondFactor.useBackup')}
590
+ theme={theme}
591
+ onPress={() => {
592
+ setUseBackupCode(!useBackupCode);
593
+ setSecondFactorCode('');
594
+ setError(null);
595
+ }}
596
+ disabled={pending}
597
+ testID="signin-toggle-backup"
598
+ />
599
+ <SubtleLink
600
+ label={t('signin.checkEmail.differentAccount')}
601
+ theme={theme}
602
+ onPress={backToIdentifier}
603
+ disabled={pending}
604
+ testID="signin-different-account"
605
+ />
606
+ </View>
607
+ </OxyAuthScreen>
608
+ );
609
+ break;
610
+ default: {
611
+ const adding = host === 'dialog' && snapshot.hasSession;
612
+ const title = adding ? t('signin.addAccountTitle') : t('signin.title');
613
+ const description = adding
614
+ ? t('signin.addAccountSubtitle')
615
+ : appName
616
+ ? t('signin.subtitleToApp', { app: appName })
617
+ : t('signin.subtitle');
618
+
619
+ const continueWithOxyButton = (
620
+ <Button appearance="outline" tone="neutral" size="lg" fullWidth onPress={continueWithOxy} testID="continue-with-oxy">
621
+ {t('accountSwitcher.continueWithOxy')}
361
622
  </Button>
362
- ) : (
363
- passkeyButton
364
- )}
365
-
366
- {methods.passkey === 'here' ? null : noAccount}
367
- {onRecover ? (
368
- <SubtleLink label={t('signin.recoverLink')} theme={theme} onPress={onRecover} testID="recover-link" />
369
- ) : null}
370
- <OxyAuthTerms />
371
- </OxyAuthScreen>
372
- );
623
+ );
624
+ const divider = <Divider>{t('signin.orContinueWith')}</Divider>;
625
+
626
+ form = (
627
+ <OxyAuthScreen className={splits ? 'md:max-w-none' : undefined}>
628
+ <OxyAuthScreenHeader title={title} description={description} />
373
629
 
374
- if (!splits) return form;
630
+ {/* The Commons way in, then the email. On the web from `md` the QR
631
+ beside the form IS the Commons way in; below `md` this screen is
632
+ the phone a QR would be scanned with. */}
633
+ {splits ? (
634
+ <CssView className="gap-6 md:hidden">
635
+ {continueWithOxyButton}
636
+ {divider}
637
+ </CssView>
638
+ ) : null}
639
+ {methods.commons === 'continue' ? (
640
+ <View style={styles.stack}>
641
+ {continueWithOxyButton}
642
+ {divider}
643
+ </View>
644
+ ) : null}
645
+ {methods.commons === 'get-commons' ? (
646
+ <View style={styles.stack}>
647
+ <Text style={[styles.note, { color: theme.colors.textSecondary }]}>{t('accountSwitcher.commonsNotInstalled')}</Text>
648
+ <Button appearance="outline" tone="neutral" size="lg" fullWidth onPress={getCommons} testID="get-commons-button">
649
+ {t('accountSwitcher.getCommons')}
650
+ </Button>
651
+ {divider}
652
+ </View>
653
+ ) : null}
654
+
655
+ <View style={styles.stack}>
656
+ <AccountFlowField
657
+ label={t('signin.identifier.label')}
658
+ value={identifier}
659
+ onChange={(value) => {
660
+ setIdentifier(value);
661
+ clearError();
662
+ }}
663
+ onSubmit={submitIdentifier}
664
+ error={shownError}
665
+ disabled={blocked}
666
+ placeholder={t('signin.identifier.placeholder')}
667
+ autoComplete="username"
668
+ keyboardType="email-address"
669
+ autoFocus={Platform.OS === 'web'}
670
+ testID="signin-identifier"
671
+ />
672
+ <Text style={[styles.note, styles.noAccount, { color: theme.colors.textSecondary }]}>
673
+ {t('signin.noAccount')}{' '}
674
+ <RNText
675
+ accessibilityRole="link"
676
+ onPress={onCreateAccount}
677
+ style={[styles.noAccountLink, { color: theme.colors.text }]}
678
+ testID="create-account-link"
679
+ >
680
+ {t('signin.createAccount')}
681
+ </RNText>
682
+ </Text>
683
+ <AccountFlowAction
684
+ label={t('signin.actions.continue')}
685
+ onPress={submitIdentifier}
686
+ pending={pending}
687
+ disabled={rateLimitSeconds > 0}
688
+ testID="signin-identifier-continue"
689
+ />
690
+ </View>
691
+ <OxyAuthTerms />
692
+ </OxyAuthScreen>
693
+ );
694
+ }
695
+ }
696
+
697
+ if (!splits) return <>{form}</>;
375
698
  return (
376
699
  <OxyAuthSplit
377
700
  bare={host === 'dialog'}
378
701
  aside={
379
702
  <>
380
703
  <AuthMediaCarousel slides={SIGN_IN_SLIDES} style={StyleSheet.absoluteFill} />
381
- <InlineCommonsQr controller={controller} />
704
+ {step.name === 'start' ? <InlineCommonsQr controller={controller} /> : null}
382
705
  </>
383
706
  }
384
707
  >
@@ -391,8 +714,8 @@ const styles = StyleSheet.create({
391
714
  stack: {
392
715
  gap: 12,
393
716
  },
394
- field: {
395
- gap: 6,
717
+ links: {
718
+ gap: 4,
396
719
  },
397
720
  note: {
398
721
  fontSize: 14,
@@ -405,7 +728,4 @@ const styles = StyleSheet.create({
405
728
  noAccountLink: {
406
729
  textDecorationLine: 'underline',
407
730
  },
408
- input: {
409
- height: 40,
410
- },
411
731
  });