@seams/wallet 0.17.0 → 0.19.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 (341) hide show
  1. package/README.md +4 -5
  2. package/dist/.build-inputs.sha256 +1 -1
  3. package/dist/esm/SeamsWeb/index.js +1 -1
  4. package/dist/esm/SeamsWeb/walletIframe/client/inboundMessages.js +1 -1
  5. package/dist/esm/SeamsWeb/walletIframe/client/router.js +10 -4
  6. package/dist/esm/SeamsWeb/walletIframe/coordinator.js +23 -1
  7. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +5 -4
  8. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +121 -246
  9. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +37 -1
  10. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +4 -2
  11. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.js +117 -0
  12. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/recovery-code-input.js +60 -0
  13. package/dist/esm/SeamsWeb/walletIframe/shared/facadeBoundary.js +2 -0
  14. package/dist/esm/core/browser/walletIframe/events.js +6 -0
  15. package/dist/esm/core/config/configBuilder.js +2 -0
  16. package/dist/esm/core/signingEngine/uiConfirm/ui/appearance.js +27 -0
  17. package/dist/esm/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +155 -0
  18. package/dist/esm/core/signingEngine/uiConfirm/ui/export-viewer-host.js +209 -0
  19. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +7 -4
  20. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +10 -6
  21. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +9 -6
  22. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +9 -6
  23. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +7 -4
  24. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +4 -1
  25. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +4 -1
  26. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +5 -4
  27. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +319 -0
  28. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +10 -7
  29. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +9 -5
  30. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +28 -22
  31. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +2 -1
  32. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +51 -26
  33. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +42 -27
  34. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +25 -18
  35. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +8 -5
  36. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/WalletLocale.js +24 -0
  37. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +6 -4
  38. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +92 -0
  39. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +4 -2
  40. package/dist/esm/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +12 -0
  41. package/dist/esm/core/ui/locale.js +10 -0
  42. package/dist/esm/core/ui/messages.js +698 -0
  43. package/dist/esm/index.js +3 -2
  44. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonMock.js +7 -3
  45. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +7 -4
  46. package/dist/esm/react/components/AccountMenuButton/AccountMenuDeviceDetails.js +4 -3
  47. package/dist/esm/react/components/AccountMenuButton/AccountMenuDialog.js +5 -2
  48. package/dist/esm/react/components/AccountMenuButton/AccountMenuMockScreens.js +31 -27
  49. package/dist/esm/react/components/AccountMenuButton/AccountMenuScreen.js +6 -3
  50. package/dist/esm/react/components/AccountMenuButton/AccountsSection.js +6 -3
  51. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +5 -4
  52. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +33 -27
  53. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsView.js +5 -2
  54. package/dist/esm/react/components/AccountMenuButton/ExportKeysScreen.js +5 -3
  55. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.css +20 -0
  56. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +4 -3
  57. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +9 -3
  58. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +50 -41
  59. package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +2 -1
  60. package/dist/esm/react/components/AccountMenuButton/MenuItem.js +3 -2
  61. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +8 -4
  62. package/dist/esm/react/components/AccountMenuButton/RecoveryCodeAcknowledgement.js +3 -2
  63. package/dist/esm/react/components/AccountMenuButton/RecoveryCodeActions.js +4 -3
  64. package/dist/esm/react/components/AccountMenuButton/SegmentedControl.js +2 -1
  65. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +11 -10
  66. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +1 -0
  67. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.js +8 -4
  68. package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +22 -15
  69. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +20 -16
  70. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +15 -0
  71. package/dist/esm/react/components/AccountMenuButton/index.js +18 -15
  72. package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +30 -26
  73. package/dist/esm/react/components/QRCodeScanner.js +28 -23
  74. package/dist/esm/react/components/ShowQRCode.js +39 -31
  75. package/dist/esm/react/components/theme/ThemeProvider.js +3 -0
  76. package/dist/esm/react/context/WalletLocale.js +15 -0
  77. package/dist/esm/react/context/index.js +8 -3
  78. package/dist/esm/react/styles/styles.css +36 -0
  79. package/dist/esm/sdk/ConfirmationDrawer-DCw0m-Iv.js +1 -0
  80. package/dist/{public/sdk/NonceCoordinator-DuDKN-B8.js → esm/sdk/NonceCoordinator-Dq-FZpBz.js} +1 -1
  81. package/dist/{public/sdk/accountLifecycle-D61FIpFS.js → esm/sdk/accountLifecycle-fLNUdjct.js} +1 -1
  82. package/dist/{public/sdk/activeWalletSession-Ba6X4CUN.js → esm/sdk/activeWalletSession-BpbnpU9s.js} +1 -1
  83. package/dist/esm/sdk/adapters-BNmcyf9K.js +2 -0
  84. package/dist/esm/sdk/appearance-token-vars-DxBm_cKA.js +2 -0
  85. package/dist/esm/sdk/{canonicalPrimitives-BOzRXzfv.js → canonicalPrimitives-BMP5yILS.js} +1 -1
  86. package/dist/esm/sdk/{challengeDelivery-FD9GHK1T.js → challengeDelivery-CG2J5Qxs.js} +1 -1
  87. package/dist/{public/sdk/clientSessionPersistenceState-BHRUSWMt.js → esm/sdk/clientSessionPersistenceState-BgO4P6CZ.js} +1 -1
  88. package/dist/esm/sdk/{commitQueue-DOIaR0Hr.js → commitQueue-BW7BpYyA.js} +1 -1
  89. package/dist/esm/sdk/configBuilder-BMNShuOu.js +1 -0
  90. package/dist/esm/sdk/{configHelpers-BXdl5Mxs.js → configHelpers-D50F_Txb.js} +1 -1
  91. package/dist/esm/sdk/{digestEncoding-CbEFYvlJ.js → digestEncoding-aC4dSf_x.js} +1 -1
  92. package/dist/esm/sdk/{display-CY_aJEn6.js → display-WtILOPQR.js} +1 -1
  93. package/dist/{public/sdk/ecdsaCapabilityManifest-DzA996y9.js → esm/sdk/ecdsaCapabilityManifest-DRc423SV.js} +1 -1
  94. package/dist/{public/sdk/ecdsaDerivationClientWasm-DQlajPpE.js → esm/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js} +1 -1
  95. package/dist/{public/sdk/ecdsaDerivationExport-DyugdheE.js → esm/sdk/ecdsaDerivationExport-DX89rq_u.js} +1 -1
  96. package/dist/esm/sdk/{ecdsaWalletRecords-C_v74n5X.js → ecdsaWalletRecords-CxxUt3fS.js} +1 -1
  97. package/dist/{public/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js → esm/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js} +1 -1
  98. package/dist/esm/sdk/{export-viewer-host-DsRaS0UH.js → export-viewer-host-DsdzagKK.js} +1 -1
  99. package/dist/{public/sdk/exportKeypairOperation-SJPysnE1.js → esm/sdk/exportKeypairOperation-BwW_E4Lt.js} +1 -1
  100. package/dist/esm/sdk/{helpers-D3CUEdHI.js → helpers-DS0bksx9.js} +1 -1
  101. package/dist/esm/sdk/{host-GPb_mSAQ.js → host-DMR4KDy9.js} +1 -1
  102. package/dist/esm/sdk/{intentDigest-CGLrsMgj.js → intentDigest-Rh5Mg8X7.js} +1 -1
  103. package/dist/esm/sdk/{lanes-DJKIHJBm.js → lanes-BzU7cv2T.js} +1 -1
  104. package/dist/esm/sdk/localOnly-DO191vDh.js +1 -0
  105. package/dist/esm/sdk/mountExportPrivateKeySurface-DQzFzhNu.js +1 -0
  106. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-B1D0ovqx.js +2 -0
  107. package/dist/{public/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js → esm/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js} +1 -1
  108. package/dist/{public/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js → esm/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js} +1 -1
  109. package/dist/esm/sdk/{nonceLaneKeys-D18nlLjh.js → nonceLaneKeys-BzMBVxMU.js} +1 -1
  110. package/dist/esm/sdk/{operationFingerprint-Boa9DQ51.js → operationFingerprint-C4VX-0NI.js} +1 -1
  111. package/dist/{public/sdk/passkey-custody-CBSal3E9.js → esm/sdk/passkey-custody-Ba-NQ_4C.js} +1 -1
  112. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-CvsrXbzn.js → pendingWalletRecoveryCodeBackup-DOeIn_Qj.js} +1 -1
  113. package/dist/{public/sdk/presignaturePool-CQNt13kE.js → esm/sdk/presignaturePool-BHoxnbOA.js} +1 -1
  114. package/dist/esm/sdk/{prfCache-DJ93rtDv.js → prfCache-BAFh1skJ.js} +1 -1
  115. package/dist/esm/sdk/{primitives-cC0a9GRC.js → primitives-CTmDwMNc.js} +1 -1
  116. package/dist/esm/sdk/{recovery-entrypoint-nj7Zo3CR.js → recovery-entrypoint-DWghFZrZ.js} +1 -1
  117. package/dist/esm/sdk/{registration-49OGU_GZ.js → registration-DknFwoqn.js} +1 -1
  118. package/dist/esm/sdk/{registration-C7tywPXF.js → registration-sQndIWRF.js} +1 -1
  119. package/dist/esm/sdk/{registrationAccounts-9GFI0Ger.js → registrationAccounts-CD1u1ZqZ.js} +1 -1
  120. package/dist/esm/sdk/{registrationIds-Br-zI4_5.js → registrationIds-B1OpqRAt.js} +1 -1
  121. package/dist/{public/sdk/registrationIntent-PqmcTEE3.js → esm/sdk/registrationIntent-D4YDjf2U.js} +1 -1
  122. package/dist/esm/sdk/{requireStepUpAuth-C4PGTly-.js → requireStepUpAuth-CnSCFSOZ.js} +1 -1
  123. package/dist/{public/sdk/routerAbNormalSigning-xxATTIh5.js → esm/sdk/routerAbNormalSigning-BV1t27aB.js} +1 -1
  124. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  125. package/dist/esm/sdk/runtime-auth-BxG-J-BB.js +1 -0
  126. package/dist/esm/sdk/runtime-device-link-Dn_5hPCq.js +1 -0
  127. package/dist/esm/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js +1 -0
  128. package/dist/esm/sdk/runtime-email-otp-CPqTCH8Q.js +1 -0
  129. package/dist/esm/sdk/runtime-export-Brz53_oi.js +1 -0
  130. package/dist/esm/sdk/runtime-near-Da_xFUXx.js +1 -0
  131. package/dist/esm/sdk/runtime-preferences-riUZGaTs.js +1 -0
  132. package/dist/esm/sdk/runtime-recovery-CTj4nDAM.js +1 -0
  133. package/dist/esm/sdk/{runtime-recovery-codes-LR4mg7-k.js → runtime-recovery-codes-D8T9LQ7-.js} +1 -1
  134. package/dist/esm/sdk/{secp256k1-BldUPNQI.js → secp256k1-wOOHtPcK.js} +1 -1
  135. package/dist/esm/sdk/{secureRandomId-LwBFx84B.js → secureRandomId-8LSc91aN.js} +1 -1
  136. package/dist/esm/sdk/sessionObservationRevision-C7v-wN8_.js +1 -0
  137. package/dist/esm/sdk/shared-hx7KVyeq.js +6 -0
  138. package/dist/esm/sdk/{signEvmFamily-C_RvEnDB.js → signEvmFamily-DT34Vtpa.js} +1 -1
  139. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js → signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js} +1 -1
  140. package/dist/esm/sdk/{signEvmWithUiConfirm-CxXzcvj2.js → signEvmWithUiConfirm-D6nmJr_L.js} +1 -1
  141. package/dist/{public/sdk/signNear-Dno7NsP_.js → esm/sdk/signNear-B000QxBd.js} +1 -1
  142. package/dist/{public/sdk/signingFlow-DtugI_2z.js → esm/sdk/signingFlow-gl85GOW4.js} +1 -1
  143. package/dist/esm/sdk/{signingQueue-C1Pb07gm.js → signingQueue-gW7wmOuL.js} +1 -1
  144. package/dist/esm/sdk/{singletons-DxIyVhNb.js → singletons-CAsc9LvA.js} +1 -1
  145. package/dist/{public/sdk/thresholdEcdsa-murTq-xz.js → esm/sdk/thresholdEcdsa-Ci7yz395.js} +1 -1
  146. package/dist/{public/sdk/transactionState-XbZm9Zon.js → esm/sdk/transactionState-lB2qpkOm.js} +1 -1
  147. package/dist/esm/sdk/tx-confirm-ui.js +1799 -432
  148. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  149. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  150. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  151. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  152. package/dist/esm/sdk/{wallet-recovery-CVUalZ3p.js → wallet-recovery-DFaS3geI.js} +1 -1
  153. package/dist/esm/sdk/wallet-ui.css +1 -1
  154. package/dist/{public/sdk/walletAuthMethodRecord-Bv68Vq-g.js → esm/sdk/walletAuthMethodRecord-CWdqdY_s.js} +1 -1
  155. package/dist/{public/sdk/walletAuthority-v5wvv3IB.js → esm/sdk/walletAuthority-BY3kyKQ-.js} +1 -1
  156. package/dist/{public/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js → esm/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js} +1 -1
  157. package/dist/esm/sdk/{walletDbName-DRzPv5Ir.js → walletDbName-BxWApBQF.js} +1 -1
  158. package/dist/{public/sdk/walletOwnershipGeneration-pMmmJ6XA.js → esm/sdk/walletOwnershipGeneration-DSGfjuV2.js} +1 -1
  159. package/dist/esm/sdk/{walletRecoveryCommit-DvC6WlGz.js → walletRecoveryCommit-DQA_wveK.js} +1 -1
  160. package/dist/esm/sdk/{walletRecoveryRotate-Dd3prJpr.js → walletRecoveryRotate-zvQThn37.js} +1 -1
  161. package/dist/esm/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +1 -0
  162. package/dist/{public/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js → esm/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js} +1 -1
  163. package/dist/{public/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js → esm/sdk/walletSessionAuthorizationStore-DnUMtkev.js} +1 -1
  164. package/dist/esm/sdk/warmSessionHydration-D8Vdro9n.js +1 -0
  165. package/dist/{public/sdk/webauthnP256-XgYu-Y6E.js → esm/sdk/webauthnP256-_ajaNl90.js} +1 -1
  166. package/dist/esm/sdk/{webauthnPromptCoordinator-D5sP8Q7e.js → webauthnPromptCoordinator-9bVeHcTZ.js} +1 -1
  167. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  168. package/dist/public/headers.manifest.json +1 -1
  169. package/dist/public/sdk/ConfirmationDrawer-DCw0m-Iv.js +1 -0
  170. package/dist/{esm/sdk/NonceCoordinator-DuDKN-B8.js → public/sdk/NonceCoordinator-Dq-FZpBz.js} +1 -1
  171. package/dist/{esm/sdk/accountLifecycle-D61FIpFS.js → public/sdk/accountLifecycle-fLNUdjct.js} +1 -1
  172. package/dist/{esm/sdk/activeWalletSession-Ba6X4CUN.js → public/sdk/activeWalletSession-BpbnpU9s.js} +1 -1
  173. package/dist/public/sdk/adapters-BNmcyf9K.js +2 -0
  174. package/dist/public/sdk/appearance-token-vars-DxBm_cKA.js +2 -0
  175. package/dist/public/sdk/{canonicalPrimitives-BOzRXzfv.js → canonicalPrimitives-BMP5yILS.js} +1 -1
  176. package/dist/public/sdk/{challengeDelivery-FD9GHK1T.js → challengeDelivery-CG2J5Qxs.js} +1 -1
  177. package/dist/{esm/sdk/clientSessionPersistenceState-BHRUSWMt.js → public/sdk/clientSessionPersistenceState-BgO4P6CZ.js} +1 -1
  178. package/dist/public/sdk/{commitQueue-DOIaR0Hr.js → commitQueue-BW7BpYyA.js} +1 -1
  179. package/dist/public/sdk/configBuilder-BMNShuOu.js +1 -0
  180. package/dist/public/sdk/{configHelpers-BXdl5Mxs.js → configHelpers-D50F_Txb.js} +1 -1
  181. package/dist/public/sdk/{digestEncoding-CbEFYvlJ.js → digestEncoding-aC4dSf_x.js} +1 -1
  182. package/dist/public/sdk/{display-CY_aJEn6.js → display-WtILOPQR.js} +1 -1
  183. package/dist/{esm/sdk/ecdsaCapabilityManifest-DzA996y9.js → public/sdk/ecdsaCapabilityManifest-DRc423SV.js} +1 -1
  184. package/dist/{esm/sdk/ecdsaDerivationClientWasm-DQlajPpE.js → public/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js} +1 -1
  185. package/dist/{esm/sdk/ecdsaDerivationExport-DyugdheE.js → public/sdk/ecdsaDerivationExport-DX89rq_u.js} +1 -1
  186. package/dist/public/sdk/{ecdsaWalletRecords-C_v74n5X.js → ecdsaWalletRecords-CxxUt3fS.js} +1 -1
  187. package/dist/{esm/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js → public/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js} +1 -1
  188. package/dist/public/sdk/{export-viewer-host-DsRaS0UH.js → export-viewer-host-DsdzagKK.js} +1 -1
  189. package/dist/{esm/sdk/exportKeypairOperation-SJPysnE1.js → public/sdk/exportKeypairOperation-BwW_E4Lt.js} +1 -1
  190. package/dist/public/sdk/{helpers-D3CUEdHI.js → helpers-DS0bksx9.js} +1 -1
  191. package/dist/public/sdk/{host-GPb_mSAQ.js → host-DMR4KDy9.js} +1 -1
  192. package/dist/public/sdk/{intentDigest-CGLrsMgj.js → intentDigest-Rh5Mg8X7.js} +1 -1
  193. package/dist/public/sdk/{lanes-DJKIHJBm.js → lanes-BzU7cv2T.js} +1 -1
  194. package/dist/public/sdk/localOnly-DO191vDh.js +1 -0
  195. package/dist/public/sdk/mountExportPrivateKeySurface-DQzFzhNu.js +1 -0
  196. package/dist/public/sdk/mountRecoveryCodeBackupSurface-B1D0ovqx.js +2 -0
  197. package/dist/{esm/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js → public/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js} +1 -1
  198. package/dist/{esm/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js → public/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js} +1 -1
  199. package/dist/public/sdk/{nonceLaneKeys-D18nlLjh.js → nonceLaneKeys-BzMBVxMU.js} +1 -1
  200. package/dist/public/sdk/{operationFingerprint-Boa9DQ51.js → operationFingerprint-C4VX-0NI.js} +1 -1
  201. package/dist/{esm/sdk/passkey-custody-CBSal3E9.js → public/sdk/passkey-custody-Ba-NQ_4C.js} +1 -1
  202. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-CvsrXbzn.js → pendingWalletRecoveryCodeBackup-DOeIn_Qj.js} +1 -1
  203. package/dist/{esm/sdk/presignaturePool-CQNt13kE.js → public/sdk/presignaturePool-BHoxnbOA.js} +1 -1
  204. package/dist/public/sdk/{prfCache-DJ93rtDv.js → prfCache-BAFh1skJ.js} +1 -1
  205. package/dist/public/sdk/{primitives-cC0a9GRC.js → primitives-CTmDwMNc.js} +1 -1
  206. package/dist/public/sdk/{recovery-entrypoint-nj7Zo3CR.js → recovery-entrypoint-DWghFZrZ.js} +1 -1
  207. package/dist/public/sdk/{registration-49OGU_GZ.js → registration-DknFwoqn.js} +1 -1
  208. package/dist/public/sdk/{registration-C7tywPXF.js → registration-sQndIWRF.js} +1 -1
  209. package/dist/public/sdk/{registrationAccounts-9GFI0Ger.js → registrationAccounts-CD1u1ZqZ.js} +1 -1
  210. package/dist/public/sdk/{registrationIds-Br-zI4_5.js → registrationIds-B1OpqRAt.js} +1 -1
  211. package/dist/{esm/sdk/registrationIntent-PqmcTEE3.js → public/sdk/registrationIntent-D4YDjf2U.js} +1 -1
  212. package/dist/public/sdk/{requireStepUpAuth-C4PGTly-.js → requireStepUpAuth-CnSCFSOZ.js} +1 -1
  213. package/dist/{esm/sdk/routerAbNormalSigning-xxATTIh5.js → public/sdk/routerAbNormalSigning-BV1t27aB.js} +1 -1
  214. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  215. package/dist/public/sdk/runtime-auth-BxG-J-BB.js +1 -0
  216. package/dist/public/sdk/runtime-device-link-Dn_5hPCq.js +1 -0
  217. package/dist/public/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js +1 -0
  218. package/dist/public/sdk/runtime-email-otp-CPqTCH8Q.js +1 -0
  219. package/dist/public/sdk/runtime-export-Brz53_oi.js +1 -0
  220. package/dist/public/sdk/runtime-near-Da_xFUXx.js +1 -0
  221. package/dist/public/sdk/runtime-preferences-riUZGaTs.js +1 -0
  222. package/dist/public/sdk/runtime-recovery-CTj4nDAM.js +1 -0
  223. package/dist/public/sdk/{runtime-recovery-codes-LR4mg7-k.js → runtime-recovery-codes-D8T9LQ7-.js} +1 -1
  224. package/dist/public/sdk/{secp256k1-BldUPNQI.js → secp256k1-wOOHtPcK.js} +1 -1
  225. package/dist/public/sdk/{secureRandomId-LwBFx84B.js → secureRandomId-8LSc91aN.js} +1 -1
  226. package/dist/public/sdk/sessionObservationRevision-C7v-wN8_.js +1 -0
  227. package/dist/public/sdk/shared-hx7KVyeq.js +6 -0
  228. package/dist/public/sdk/{signEvmFamily-C_RvEnDB.js → signEvmFamily-DT34Vtpa.js} +1 -1
  229. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js → signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js} +1 -1
  230. package/dist/public/sdk/{signEvmWithUiConfirm-CxXzcvj2.js → signEvmWithUiConfirm-D6nmJr_L.js} +1 -1
  231. package/dist/{esm/sdk/signNear-Dno7NsP_.js → public/sdk/signNear-B000QxBd.js} +1 -1
  232. package/dist/{esm/sdk/signingFlow-DtugI_2z.js → public/sdk/signingFlow-gl85GOW4.js} +1 -1
  233. package/dist/public/sdk/{signingQueue-C1Pb07gm.js → signingQueue-gW7wmOuL.js} +1 -1
  234. package/dist/public/sdk/{singletons-DxIyVhNb.js → singletons-CAsc9LvA.js} +1 -1
  235. package/dist/{esm/sdk/thresholdEcdsa-murTq-xz.js → public/sdk/thresholdEcdsa-Ci7yz395.js} +1 -1
  236. package/dist/{esm/sdk/transactionState-XbZm9Zon.js → public/sdk/transactionState-lB2qpkOm.js} +1 -1
  237. package/dist/public/sdk/tx-confirm-ui.js +1799 -432
  238. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  239. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  240. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  241. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  242. package/dist/public/sdk/{wallet-recovery-CVUalZ3p.js → wallet-recovery-DFaS3geI.js} +1 -1
  243. package/dist/public/sdk/wallet-ui.css +1 -1
  244. package/dist/{esm/sdk/walletAuthMethodRecord-Bv68Vq-g.js → public/sdk/walletAuthMethodRecord-CWdqdY_s.js} +1 -1
  245. package/dist/{esm/sdk/walletAuthority-v5wvv3IB.js → public/sdk/walletAuthority-BY3kyKQ-.js} +1 -1
  246. package/dist/{esm/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js → public/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js} +1 -1
  247. package/dist/public/sdk/{walletDbName-DRzPv5Ir.js → walletDbName-BxWApBQF.js} +1 -1
  248. package/dist/{esm/sdk/walletOwnershipGeneration-pMmmJ6XA.js → public/sdk/walletOwnershipGeneration-DSGfjuV2.js} +1 -1
  249. package/dist/public/sdk/{walletRecoveryCommit-DvC6WlGz.js → walletRecoveryCommit-DQA_wveK.js} +1 -1
  250. package/dist/public/sdk/{walletRecoveryRotate-Dd3prJpr.js → walletRecoveryRotate-zvQThn37.js} +1 -1
  251. package/dist/public/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +1 -0
  252. package/dist/{esm/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js → public/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js} +1 -1
  253. package/dist/{esm/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js → public/sdk/walletSessionAuthorizationStore-DnUMtkev.js} +1 -1
  254. package/dist/public/sdk/warmSessionHydration-D8Vdro9n.js +1 -0
  255. package/dist/{esm/sdk/webauthnP256-XgYu-Y6E.js → public/sdk/webauthnP256-_ajaNl90.js} +1 -1
  256. package/dist/public/sdk/{webauthnPromptCoordinator-D5sP8Q7e.js → webauthnPromptCoordinator-9bVeHcTZ.js} +1 -1
  257. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  258. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  259. package/dist/public/wallet-assets.manifest.json +192 -192
  260. package/dist/public/wallet-service/index.html +4 -4
  261. package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +2 -1
  262. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +20 -3
  263. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +3 -0
  264. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.d.ts +0 -1
  265. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +5 -6
  266. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +2 -0
  267. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.d.ts +35 -0
  268. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/recovery-code-input.d.ts +17 -0
  269. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.d.ts +3 -1
  270. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.d.ts +0 -1
  271. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.d.ts +3 -1
  272. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.d.ts +3 -1
  273. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.d.ts +0 -1
  274. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.d.ts +0 -1
  275. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.d.ts +0 -1
  276. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.d.ts +1 -1
  277. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.d.ts +3 -1
  278. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.d.ts +0 -1
  279. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.d.ts +3 -1
  280. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.d.ts +0 -1
  281. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.d.ts +0 -1
  282. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.d.ts +3 -1
  283. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReview.d.ts +3 -1
  284. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionTree.d.ts +0 -1
  285. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/WalletLocale.d.ts +18 -0
  286. package/dist/types/wallet/src/core/types/seams.d.ts +3 -0
  287. package/dist/types/wallet/src/core/ui/locale.d.ts +5 -0
  288. package/dist/types/wallet/src/core/ui/messages.d.ts +8 -0
  289. package/dist/types/wallet/src/index.d.ts +3 -1
  290. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonMock.d.ts +1 -0
  291. package/dist/types/wallet/src/react/components/AccountMenuButton/WalletRegionSection.d.ts +3 -0
  292. package/dist/types/wallet/src/react/components/AccountMenuButton/WalletSettingsLayout.d.ts +4 -1
  293. package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.d.ts +2 -1
  294. package/dist/types/wallet/src/react/context/WalletLocale.d.ts +16 -0
  295. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  296. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  297. package/package.json +1 -1
  298. package/dist/esm/sdk/ConfirmationDrawer-CXVNmfTy.js +0 -1
  299. package/dist/esm/sdk/adapters-CTlDBRJy.js +0 -2
  300. package/dist/esm/sdk/configBuilder-BMawmNpz.js +0 -1
  301. package/dist/esm/sdk/jsxRuntime.module-DKsgiFjd.js +0 -2
  302. package/dist/esm/sdk/localOnly-CPmpw381.js +0 -1
  303. package/dist/esm/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +0 -1
  304. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +0 -2
  305. package/dist/esm/sdk/runtime-auth-CpjGW90U.js +0 -1
  306. package/dist/esm/sdk/runtime-device-link-CKgfGi7D.js +0 -1
  307. package/dist/esm/sdk/runtime-ecdsa-tempo-5VV9xSEh.js +0 -1
  308. package/dist/esm/sdk/runtime-email-otp-D1hYZNn6.js +0 -1
  309. package/dist/esm/sdk/runtime-export-B92wQD25.js +0 -1
  310. package/dist/esm/sdk/runtime-near-CUuKg38M.js +0 -1
  311. package/dist/esm/sdk/runtime-preferences-EdL3G_MO.js +0 -1
  312. package/dist/esm/sdk/runtime-recovery-uyw8sywI.js +0 -1
  313. package/dist/esm/sdk/sessionObservationRevision-DmmNV25w.js +0 -1
  314. package/dist/esm/sdk/shared-ha31XIdc.js +0 -6
  315. package/dist/esm/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +0 -1
  316. package/dist/esm/sdk/warmSessionHydration-CsQpQVuy.js +0 -1
  317. package/dist/public/sdk/ConfirmationDrawer-CXVNmfTy.js +0 -1
  318. package/dist/public/sdk/adapters-CTlDBRJy.js +0 -2
  319. package/dist/public/sdk/configBuilder-BMawmNpz.js +0 -1
  320. package/dist/public/sdk/jsxRuntime.module-DKsgiFjd.js +0 -2
  321. package/dist/public/sdk/localOnly-CPmpw381.js +0 -1
  322. package/dist/public/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +0 -1
  323. package/dist/public/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +0 -2
  324. package/dist/public/sdk/runtime-auth-CpjGW90U.js +0 -1
  325. package/dist/public/sdk/runtime-device-link-CKgfGi7D.js +0 -1
  326. package/dist/public/sdk/runtime-ecdsa-tempo-5VV9xSEh.js +0 -1
  327. package/dist/public/sdk/runtime-email-otp-D1hYZNn6.js +0 -1
  328. package/dist/public/sdk/runtime-export-B92wQD25.js +0 -1
  329. package/dist/public/sdk/runtime-near-CUuKg38M.js +0 -1
  330. package/dist/public/sdk/runtime-preferences-EdL3G_MO.js +0 -1
  331. package/dist/public/sdk/runtime-recovery-uyw8sywI.js +0 -1
  332. package/dist/public/sdk/sessionObservationRevision-DmmNV25w.js +0 -1
  333. package/dist/public/sdk/shared-ha31XIdc.js +0 -6
  334. package/dist/public/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +0 -1
  335. package/dist/public/sdk/warmSessionHydration-CsQpQVuy.js +0 -1
  336. /package/dist/esm/sdk/{base64-DW79QA0h.js → base64-BmKR3UqU.js} +0 -0
  337. /package/dist/esm/sdk/{signingSessionSeal-DX41aXUL.js → signingSessionSeal-DqbjG8c8.js} +0 -0
  338. /package/dist/esm/sdk/{theme-BKaFqCAj.js → theme-os0Salmo.js} +0 -0
  339. /package/dist/public/sdk/{base64-DW79QA0h.js → base64-BmKR3UqU.js} +0 -0
  340. /package/dist/public/sdk/{signingSessionSeal-DX41aXUL.js → signingSessionSeal-DqbjG8c8.js} +0 -0
  341. /package/dist/public/sdk/{theme-BKaFqCAj.js → theme-os0Salmo.js} +0 -0
@@ -1,174 +1,22 @@
1
1
  import { isLinkedDeviceTargetEmailAddressV1 } from "../../../../../core/types/linkDevice.js";
2
- import { EMAIL_OTP_RECOVERY_KEY_ALPHABET } from "../../../../../shared-ts/src/utils/emailOtpRecoveryKey.js";
3
2
  import "../../../../../shared-ts/src/wallet-recovery/recoveryCodes.js";
4
- import { demoEmailOtpCodeFromDelivery } from "../../../../../core/signingEngine/session/emailOtp/challengeDelivery.js";
5
- import { AUTH_MENU_WAITING_PROMPTS, isAuthMenuActionReady, isAuthMenuGoogleActionReady, isAuthMenuLoadingStatus, isAuthMenuReady, resolveAuthMenuLoginAccount } from "../../auth-menu/domain.js";
3
+ import { walletDisplayText, walletText } from "../../../../../core/ui/messages.js";
4
+ import { WalletLocaleContext, WalletText } from "../../../../../core/signingEngine/uiConfirm/ui/preact/WalletLocale.js";
5
+ import { recoveryInputCharacters, rejectedRecoveryCharacters, renderRecoveryCodeGroups } from "./recovery-code-input.js";
6
+ import { AUTH_MENU_WAITING_PROMPTS, isAuthMenuActionReady, isAuthMenuGoogleActionReady, isAuthMenuLoadingStatus, isAuthMenuReady } from "../../auth-menu/domain.js";
7
+ import { AUTH_MENU_ACCOUNT_LIST_ID, AUTH_MENU_TITLE_ID, accountGroups, accountSecondaryText, authViewKey, menuNotice, modeLabel, modeSwitchCopy, otpCodeDigits, passkeyButtonLabel, recoveryAnnouncement, recoveryBackLabel, recoveryCaretAtPoint, recoveryNavigationLocked, renderDemoEmailCode, renderOtpCodeDigit, savedAccountsTriggerLabel, selectedAccountPrimaryText, selectedLoginAccount } from "./presentation.js";
6
8
  import { PadlockIcon } from "../../../../../core/signingEngine/uiConfirm/ui/preact/PadlockIcon.js";
7
9
  import { blinkMenuItem } from "../../../../../utils/menuItemBlink.js";
8
- import { accountDropdownIcon, backIcon, chevronIcon, fingerprintIcon, googleIcon, linkDeviceIcon, linkFailedIcon, mailIcon, passkeyRingIcon, recoveryIcon, rerollIcon } from "./icons.js";
10
+ import { accountDropdownIcon, backIcon, chevronIcon, fingerprintIcon, googleIcon, linkDeviceIcon, linkFailedIcon, mailIcon, passkeyRingIcon, passkeySuccessIcon, recoveryIcon, rerollIcon } from "./icons.js";
9
11
  import { AuthMenuFooter } from "./AuthMenuFooter.js";
10
12
  import { linkDeviceDotRing, linkDeviceEmailOtpPresentation } from "./linkDeviceBadge.js";
11
13
  import { Component, Fragment } from "preact";
12
14
  import { Fragment as Fragment$1, jsx, jsxs } from "preact/jsx-runtime";
13
15
  //#region src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.tsx
14
16
  /** @jsxImportSource preact */
15
- function renderDemoEmailCode(delivery) {
16
- const code = demoEmailOtpCodeFromDelivery(delivery);
17
- if (code === null) return null;
18
- return /* @__PURE__ */ jsxs("p", {
19
- class: "seams-otp-description",
20
- children: ["Demo email code: ", /* @__PURE__ */ jsx("code", { children: code })]
21
- });
22
- }
23
- const AUTH_MENU_TITLE_ID = "seams-auth-menu-title";
24
- const AUTH_MENU_ACCOUNT_LIST_ID = "seams-auth-menu-account-list";
25
- function otpCodeDigits(code, length = 6) {
26
- return code.padEnd(length, " ").slice(0, length).split("");
27
- }
28
- const RECOVERY_CODE_CHARACTERS = new Set(EMAIL_OTP_RECOVERY_KEY_ALPHABET);
29
- function recoveryInputCharacters(code) {
30
- let characters = "";
31
- for (const character of code.toUpperCase()) {
32
- const read = character === "O" ? "0" : character === "I" || character === "L" ? "1" : character;
33
- if (RECOVERY_CODE_CHARACTERS.has(read)) characters += read;
34
- }
35
- return characters;
36
- }
37
- const RECOVERY_CODE_SEPARATOR = /[\s\-\u2010-\u2015\u2212]/;
38
- /** Characters the input dropped because no recovery code contains them, such as U. */
39
- function rejectedRecoveryCharacters(input) {
40
- const rejected = /* @__PURE__ */ new Set();
41
- for (const character of input.toUpperCase()) {
42
- if (RECOVERY_CODE_SEPARATOR.test(character)) continue;
43
- if (recoveryInputCharacters(character)) continue;
44
- rejected.add(character);
45
- }
46
- return Array.from(rejected).slice(0, 3);
47
- }
48
- function renderRecoveryCodeGroups(code, selection, arrival) {
49
- const caret = selection && selection.start === selection.end ? selection.start : null;
50
- const lastIndex = 31;
51
- const focusIndex = selection === null ? null : Math.min(selection.start, lastIndex);
52
- const groups = [];
53
- for (let start = 0; start < 32; start += 4) {
54
- const end = start + 4;
55
- const slots = [];
56
- for (let index = start; index < end; index += 1) {
57
- const character = code[index] ?? "";
58
- const classes = ["seams-otp-slot"];
59
- if (character) classes.push("is-filled");
60
- if (index === caret) classes.push("is-caret");
61
- if (caret === 32 && index === lastIndex) classes.push("is-caret-after");
62
- if (selection && index >= selection.start && index < selection.end) classes.push("is-selected");
63
- if (arrival && index >= arrival.start && index < arrival.end) classes.push("is-new");
64
- slots.push(/* @__PURE__ */ jsx("span", {
65
- class: classes.join(" "),
66
- "data-recovery-slot": index,
67
- children: character
68
- }, index));
69
- }
70
- const groupClasses = ["seams-recovery-code-group"];
71
- if (focusIndex !== null && focusIndex >= start && focusIndex < end) groupClasses.push("is-active");
72
- if (code.length >= end) groupClasses.push("is-complete");
73
- groups.push(/* @__PURE__ */ jsx("div", {
74
- class: groupClasses.join(" "),
75
- children: slots
76
- }, start));
77
- }
78
- return groups;
79
- }
80
- function recoveryCaretAtPoint(root, clientX, clientY, codeLength) {
81
- let nearest = null;
82
- for (const slot of root.querySelectorAll("[data-recovery-slot]")) {
83
- const index = Number(slot.dataset.recoverySlot);
84
- const box = slot.getBoundingClientRect();
85
- const dx = clientX < box.left ? box.left - clientX : Math.max(0, clientX - box.right);
86
- const dy = clientY < box.top ? box.top - clientY : Math.max(0, clientY - box.bottom);
87
- const distance = dx * dx + dy * dy;
88
- if (nearest === null || distance < nearest.distance) nearest = {
89
- index,
90
- distance,
91
- after: clientX > box.left + box.width / 2
92
- };
93
- }
94
- if (nearest === null) return null;
95
- return Math.min(nearest.after ? nearest.index + 1 : nearest.index, codeLength);
96
- }
97
- function renderOtpCodeDigit(digit) {
98
- return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
99
- class: `seams-otp-slot ${digit.trim() ? "is-filled" : ""}`,
100
- children: digit
101
- }) });
102
- }
103
- function authViewKey(viewModel) {
104
- const stage = viewModel.kind === "recovery" ? `:${viewModel.stage}` : "";
105
- return `${viewModel.kind}:${viewModel.mode}:${viewModel.status.kind}${stage}`;
106
- }
107
- function recoveryAnnouncement(viewModel) {
108
- if (viewModel.status.kind === "busy") return viewModel.status.headline;
109
- if (viewModel.status.kind === "recoverable") return viewModel.status.message;
110
- if (viewModel.stage === "passkey_ready") return "Recovery code accepted.";
111
- if (viewModel.stage === "sign_in_ready") return "Wallet recovered. Unlock it to continue.";
112
- return "";
113
- }
114
- function recoveryBackLabel(viewModel) {
115
- if (viewModel.kind !== "recovery") return "Back";
116
- return viewModel.stage === "choose_method" ? "Back to recovery code" : "Back to unlock wallet";
117
- }
118
- function recoveryNavigationLocked(viewModel) {
119
- return viewModel.kind === "recovery" && viewModel.stage === "finalizing";
120
- }
121
- function modeSwitchCopy(mode) {
122
- return mode === "register" ? {
123
- prompt: "Already have a wallet?",
124
- action: "Unlock wallet",
125
- nextMode: "login"
126
- } : {
127
- prompt: "Don't have a wallet?",
128
- action: "Create a wallet",
129
- nextMode: "register"
130
- };
131
- }
132
- function modeLabel(mode) {
133
- return mode === "register" ? "Create a wallet" : "Unlock wallet";
134
- }
135
- function passkeyButtonLabel(mode) {
136
- return mode === "register" ? "Create wallet with passkey" : "Unlock with passkey";
137
- }
138
- /** The failure the footer strip reports. Only the menu itself reports there. */
139
- function menuNotice(viewModel) {
140
- if (viewModel.kind === "google_otp_login" || viewModel.kind === "google_registration") return viewModel.error || null;
141
- return viewModel.kind === "passkey" && viewModel.status.kind === "recoverable" && viewModel.status.reason === "error" ? viewModel.status.message : null;
142
- }
143
- function selectedLoginAccount(viewModel) {
144
- return resolveAuthMenuLoginAccount(viewModel.accountOptions, viewModel.selectedAccount).selectedAccount;
145
- }
146
- function selectedAccountPrimaryText(account) {
147
- return account.walletId;
148
- }
149
- function accountSecondaryText(account) {
150
- return account.authMethod === "email_otp" ? account.emailAddress : null;
151
- }
152
- function savedAccountsTriggerLabel(account) {
153
- if (!account) return "Saved wallets";
154
- const emailAddress = accountSecondaryText(account);
155
- return emailAddress ? `Saved wallets. Selected wallet ID ${account.walletId}, email ${emailAddress}` : `Saved wallets. Selected ${account.walletId}`;
156
- }
157
- function accountGroups(options) {
158
- const passkeyAccounts = options.filter((option) => option.authMethod === "passkey");
159
- const emailOtpAccounts = options.filter((option) => option.authMethod === "email_otp");
160
- return [{
161
- authMethod: "passkey",
162
- label: "Passkey",
163
- accounts: passkeyAccounts
164
- }, {
165
- authMethod: "email_otp",
166
- label: "Email OTP",
167
- accounts: emailOtpAccounts
168
- }].filter((group) => group.accounts.length > 0);
169
- }
170
17
  const ACCOUNT_MENU_EXIT_MS = 160;
171
18
  var AuthMenuSurface = class extends Component {
19
+ static contextType = WalletLocaleContext;
172
20
  state = {
173
21
  accountMenu: "closed",
174
22
  recoverySelection: null,
@@ -619,6 +467,7 @@ var AuthMenuSurface = class extends Component {
619
467
  const viewModel = this.viewModel;
620
468
  if (!viewModel) return /* @__PURE__ */ jsx(Fragment$1, {});
621
469
  const loading = isAuthMenuLoadingStatus(viewModel.status);
470
+ const success = viewModel.status.kind === "succeeded" ? viewModel.status.phase : null;
622
471
  const linkDevice = viewModel.kind === "link_device";
623
472
  const otpPrompt = viewModel.kind === "google_otp_login";
624
473
  const registrationPrompt = viewModel.kind === "google_registration";
@@ -626,7 +475,8 @@ var AuthMenuSurface = class extends Component {
626
475
  return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs("div", {
627
476
  class: "seams-signup-menu-root auth-menu-root",
628
477
  "data-mode": viewModel.mode,
629
- "data-waiting": loading ? "true" : "false",
478
+ "data-waiting": loading || success ? "true" : "false",
479
+ "data-success": success ?? void 0,
630
480
  "data-scan-device": linkDevice ? "true" : "false",
631
481
  "data-otp-prompt": otpPrompt ? "true" : "false",
632
482
  "data-registration-prompt": registrationPrompt ? "true" : "false",
@@ -648,11 +498,11 @@ var AuthMenuSurface = class extends Component {
648
498
  class: "seams-content-switcher",
649
499
  children: [
650
500
  /* @__PURE__ */ jsx("button", {
651
- class: `seams-back-button ${loading || linkDevice || otpPrompt || registrationPrompt || recovery ? "is-visible" : ""}`,
501
+ class: `seams-back-button ${!success && (loading || linkDevice || otpPrompt || registrationPrompt || recovery) ? "is-visible" : ""}`,
652
502
  type: "button",
653
- "aria-label": recoveryBackLabel(viewModel),
503
+ "aria-label": walletDisplayText(this.context, recoveryBackLabel(viewModel)),
654
504
  "data-auth-menu-close": true,
655
- disabled: recoveryNavigationLocked(viewModel),
505
+ disabled: success !== null || recoveryNavigationLocked(viewModel),
656
506
  onClick: this.onBackClick,
657
507
  children: backIcon()
658
508
  }),
@@ -661,13 +511,13 @@ var AuthMenuSurface = class extends Component {
661
511
  role: "status",
662
512
  "aria-live": "polite",
663
513
  "aria-atomic": "true",
664
- children: recoveryAnnouncement(viewModel)
514
+ children: /* @__PURE__ */ jsx(WalletText, { copy: recoveryAnnouncement(viewModel) })
665
515
  }) : null,
666
516
  /* @__PURE__ */ jsx("div", {
667
517
  class: "seams-content-area",
668
518
  children: /* @__PURE__ */ jsx("div", {
669
519
  class: "seams-content-sizer",
670
- children: loading ? this.renderWaiting(viewModel) : /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("div", {
520
+ children: loading || success ? this.renderWaiting(viewModel) : /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("div", {
671
521
  class: "seams-signin-menu",
672
522
  children: /* @__PURE__ */ jsx(Fragment, { children: this.renderActiveView(viewModel) }, authViewKey(viewModel))
673
523
  }) })
@@ -704,16 +554,16 @@ var AuthMenuSurface = class extends Component {
704
554
  children: [
705
555
  eyebrow === viewModel.heading ? null : /* @__PURE__ */ jsx("div", {
706
556
  class: "seams-menu-eyebrow",
707
- children: eyebrow
557
+ children: /* @__PURE__ */ jsx(WalletText, { copy: eyebrow })
708
558
  }),
709
559
  /* @__PURE__ */ jsx("div", {
710
560
  class: "seams-title",
711
561
  id: AUTH_MENU_TITLE_ID,
712
- children: viewModel.heading
562
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
713
563
  }),
714
564
  viewModel.subtitle ? /* @__PURE__ */ jsx("div", {
715
565
  class: "seams-subhead",
716
- children: viewModel.subtitle
566
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.subtitle })
717
567
  }) : null
718
568
  ]
719
569
  });
@@ -724,10 +574,10 @@ var AuthMenuSurface = class extends Component {
724
574
  children: /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
725
575
  class: "seams-title",
726
576
  id: AUTH_MENU_TITLE_ID,
727
- children: viewModel.heading
577
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
728
578
  }), /* @__PURE__ */ jsx("div", {
729
579
  class: "seams-subhead",
730
- children: viewModel.subtitle
580
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.subtitle })
731
581
  })] })
732
582
  }) });
733
583
  }
@@ -762,7 +612,7 @@ var AuthMenuSurface = class extends Component {
762
612
  class: "seams-account-menu-trigger",
763
613
  type: "button",
764
614
  "data-auth-menu-input": true,
765
- "aria-label": savedAccountsTriggerLabel(selected),
615
+ "aria-label": walletDisplayText(this.context, savedAccountsTriggerLabel(selected)),
766
616
  "aria-haspopup": "listbox",
767
617
  "aria-expanded": this.accountMenuOpen ? "true" : "false",
768
618
  "aria-controls": AUTH_MENU_ACCOUNT_LIST_ID,
@@ -781,7 +631,7 @@ var AuthMenuSurface = class extends Component {
781
631
  children: [/* @__PURE__ */ jsx("div", {
782
632
  id: groupLabelId,
783
633
  class: "seams-account-menu-group-label",
784
- children: group.label
634
+ children: /* @__PURE__ */ jsx(WalletText, { copy: group.label })
785
635
  }), group.accounts.map((account) => {
786
636
  const isSelected = account.walletId === listSelected.walletId && account.authMethod === listSelected.authMethod;
787
637
  const isChosen = !isSelected && account.walletId === choice?.chosen.walletId && account.authMethod === choice.chosen.authMethod;
@@ -791,7 +641,7 @@ var AuthMenuSurface = class extends Component {
791
641
  type: "button",
792
642
  role: "option",
793
643
  "aria-selected": isSelected ? "true" : "false",
794
- title: secondaryText ? `${account.walletId} ${secondaryText}` : account.walletId,
644
+ title: walletDisplayText(this.context, secondaryText ? `${account.walletId} ${secondaryText}` : account.walletId),
795
645
  "data-wallet-id": account.walletId,
796
646
  "data-auth-method": account.authMethod,
797
647
  onClick: this.onLoginAccountSelect,
@@ -805,7 +655,7 @@ var AuthMenuSurface = class extends Component {
805
655
  children: account.walletId
806
656
  }), secondaryText ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
807
657
  class: "seams-account-menu-account-secondary",
808
- children: secondaryText
658
+ children: /* @__PURE__ */ jsx(WalletText, { copy: secondaryText })
809
659
  }) }) : null]
810
660
  })]
811
661
  }) });
@@ -830,7 +680,7 @@ var AuthMenuSurface = class extends Component {
830
680
  "data-auth-menu-input": true,
831
681
  type: "text",
832
682
  autocomplete: "nickname",
833
- placeholder: viewModel.passkeyNameLabel,
683
+ placeholder: walletDisplayText(this.context, viewModel.passkeyNameLabel),
834
684
  value: viewModel.passkeyName,
835
685
  readonly: viewModel.passkeyNameReadOnly,
836
686
  disabled: isAuthMenuLoadingStatus(viewModel.status),
@@ -839,8 +689,8 @@ var AuthMenuSurface = class extends Component {
839
689
  }), viewModel.passkeyNameReadOnly ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("button", {
840
690
  class: "seams-input-action-trigger auth-menu-registration-reroll",
841
691
  type: "button",
842
- title: "Generate another name",
843
- "aria-label": "Generate another name",
692
+ title: walletText(this.context, "Generate another name"),
693
+ "aria-label": walletText(this.context, "Generate another name"),
844
694
  onClick: this.onRegistrationReroll,
845
695
  disabled: !isAuthMenuReady(viewModel),
846
696
  children: rerollIcon()
@@ -858,21 +708,21 @@ var AuthMenuSurface = class extends Component {
858
708
  "data-auth-menu-primary": true,
859
709
  disabled: !isAuthMenuActionReady(viewModel),
860
710
  onClick: this.onPrimaryClick,
861
- children: [fingerprintIcon(), /* @__PURE__ */ jsx("span", { children: passkeyButtonLabel(viewModel.mode) })]
711
+ children: [fingerprintIcon(), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { copy: passkeyButtonLabel(viewModel.mode) }) })]
862
712
  }), googleEnabled ? /* @__PURE__ */ jsxs("button", {
863
713
  class: "seams-auth-method-btn",
864
714
  type: "button",
865
715
  "data-auth-menu-provider": "google",
866
716
  disabled: !isAuthMenuGoogleActionReady(viewModel),
867
717
  onClick: this.onGoogleClick,
868
- children: [googleIcon(), /* @__PURE__ */ jsx("span", { children: "Continue with Google" })]
718
+ children: [googleIcon(), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { message: "Continue with Google" }) })]
869
719
  }) : null]
870
720
  }) });
871
721
  }
872
722
  renderOtherOptions() {
873
723
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
874
724
  class: "seams-menu-options-label",
875
- children: "Other options"
725
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Other options" })
876
726
  }), /* @__PURE__ */ jsxs("div", {
877
727
  class: "seams-menu-options",
878
728
  children: [/* @__PURE__ */ jsxs("button", {
@@ -886,7 +736,7 @@ var AuthMenuSurface = class extends Component {
886
736
  }),
887
737
  /* @__PURE__ */ jsxs("span", {
888
738
  class: "seams-menu-option-text",
889
- children: ["Link this device ", /* @__PURE__ */ jsx("small", { children: "Scan a code with your other device" })]
739
+ children: [/* @__PURE__ */ jsx(WalletText, { message: "Link this device" }), /* @__PURE__ */ jsx("small", { children: /* @__PURE__ */ jsx(WalletText, { message: "Scan a code with your other device" }) })]
890
740
  }),
891
741
  chevronIcon()
892
742
  ]
@@ -902,7 +752,7 @@ var AuthMenuSurface = class extends Component {
902
752
  }),
903
753
  /* @__PURE__ */ jsxs("span", {
904
754
  class: "seams-menu-option-text",
905
- children: ["Recover wallet ", /* @__PURE__ */ jsx("small", { children: "Use your recovery code" })]
755
+ children: [/* @__PURE__ */ jsx(WalletText, { message: "Recover wallet" }), /* @__PURE__ */ jsx("small", { children: /* @__PURE__ */ jsx(WalletText, { message: "Use your recovery code" }) })]
906
756
  }),
907
757
  chevronIcon()
908
758
  ]
@@ -924,7 +774,7 @@ var AuthMenuSurface = class extends Component {
924
774
  class: `seams-recovery-status ${feedbackIsError ? "seams-recovery-error" : ""}`,
925
775
  "aria-hidden": feedbackIsError ? "false" : "true",
926
776
  role: feedbackIsError ? "alert" : "status",
927
- children: feedbackMessage
777
+ children: /* @__PURE__ */ jsx(WalletText, { copy: feedbackMessage })
928
778
  }),
929
779
  /* @__PURE__ */ jsxs("form", {
930
780
  class: "seams-recovery-form",
@@ -938,7 +788,7 @@ var AuthMenuSurface = class extends Component {
938
788
  children: [/* @__PURE__ */ jsx("label", {
939
789
  class: "seams-field-label",
940
790
  for: "seams-recovery-code",
941
- children: "Recovery code"
791
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Recovery code" })
942
792
  }), /* @__PURE__ */ jsxs("span", {
943
793
  id: "seams-recovery-code-count",
944
794
  class: "seams-recovery-code-count",
@@ -981,7 +831,7 @@ var AuthMenuSurface = class extends Component {
981
831
  id: "seams-recovery-code-hint",
982
832
  class: `seams-recovery-code-hint ${rejection ? "is-error" : ""}`,
983
833
  "aria-live": "polite",
984
- children: rejection ? `Recovery codes don’t use ${rejection.characters.join(", ")}.` : "You can paste the whole code."
834
+ children: rejection ? `Recovery codes don’t use ${rejection.characters.join(", ")}.` : /* @__PURE__ */ jsx(WalletText, { message: "You can paste the whole code." })
985
835
  })
986
836
  ]
987
837
  }), /* @__PURE__ */ jsx("button", {
@@ -989,7 +839,7 @@ var AuthMenuSurface = class extends Component {
989
839
  type: "submit",
990
840
  "data-auth-menu-primary": true,
991
841
  "data-recovery-continue": true,
992
- children: "Continue"
842
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Continue" })
993
843
  })]
994
844
  })
995
845
  ] });
@@ -1003,7 +853,7 @@ var AuthMenuSurface = class extends Component {
1003
853
  /* @__PURE__ */ jsx("p", {
1004
854
  class: `seams-recovery-status ${viewModel.status.kind === "recoverable" ? "seams-recovery-error" : ""}`,
1005
855
  "aria-hidden": "true",
1006
- children: statusMessage
856
+ children: /* @__PURE__ */ jsx(WalletText, { copy: statusMessage })
1007
857
  }),
1008
858
  /* @__PURE__ */ jsxs("div", {
1009
859
  class: "seams-auth-methods seams-recovery-methods",
@@ -1017,7 +867,7 @@ var AuthMenuSurface = class extends Component {
1017
867
  children: [busyTarget === "passkey" ? /* @__PURE__ */ jsx("span", {
1018
868
  class: "seams-spinner",
1019
869
  "aria-hidden": "true"
1020
- }) : fingerprintIcon(), /* @__PURE__ */ jsx("span", { children: "Create a passkey" })]
870
+ }) : fingerprintIcon(), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { message: "Create a passkey" }) })]
1021
871
  }), googleEnabled ? /* @__PURE__ */ jsxs("button", {
1022
872
  class: "seams-auth-method-btn",
1023
873
  type: "button",
@@ -1027,12 +877,12 @@ var AuthMenuSurface = class extends Component {
1027
877
  children: [busyTarget === "google_email_otp" ? /* @__PURE__ */ jsx("span", {
1028
878
  class: "seams-spinner",
1029
879
  "aria-hidden": "true"
1030
- }) : googleIcon(), /* @__PURE__ */ jsx("span", { children: "Continue with Google" })]
880
+ }) : googleIcon(), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { message: "Continue with Google" }) })]
1031
881
  }) : null]
1032
882
  }),
1033
883
  /* @__PURE__ */ jsx("p", {
1034
884
  class: "seams-recovery-method-note",
1035
- children: "This adds a new sign-in method to your wallet."
885
+ children: /* @__PURE__ */ jsx(WalletText, { message: "This adds a new sign-in method to your wallet." })
1036
886
  })
1037
887
  ] });
1038
888
  }
@@ -1046,13 +896,13 @@ var AuthMenuSurface = class extends Component {
1046
896
  children: [
1047
897
  /* @__PURE__ */ jsx("p", {
1048
898
  class: "seams-otp-description",
1049
- children: deliveryMessage
899
+ children: /* @__PURE__ */ jsx(WalletText, { copy: deliveryMessage })
1050
900
  }),
1051
901
  renderDemoEmailCode(viewModel.delivery),
1052
902
  /* @__PURE__ */ jsx("label", {
1053
903
  class: "seams-field-label",
1054
904
  for: "seams-recovery-google-otp",
1055
- children: "Email code"
905
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Email code" })
1056
906
  }),
1057
907
  /* @__PURE__ */ jsxs("div", {
1058
908
  class: "seams-otp-code-field",
@@ -1086,7 +936,7 @@ var AuthMenuSurface = class extends Component {
1086
936
  id: "seams-recovery-google-otp-error",
1087
937
  class: "seams-recovery-status seams-recovery-error",
1088
938
  role: "alert",
1089
- children: viewModel.status.message
939
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.status.message })
1090
940
  }) }) : null,
1091
941
  /* @__PURE__ */ jsx("button", {
1092
942
  class: "seams-link-device-btn seams-link-device-btn-primary",
@@ -1094,7 +944,7 @@ var AuthMenuSurface = class extends Component {
1094
944
  "data-auth-menu-primary": true,
1095
945
  disabled: !canSubmit,
1096
946
  onClick: this.onRecoveryGoogleOtpSubmit,
1097
- children: "Verify email code"
947
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Verify email code" })
1098
948
  })
1099
949
  ]
1100
950
  })] });
@@ -1108,13 +958,13 @@ var AuthMenuSurface = class extends Component {
1108
958
  class: "seams-recovery-confirmation",
1109
959
  children: [message === null ? null : /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("p", {
1110
960
  class: "seams-recovery-status",
1111
- children: message
961
+ children: /* @__PURE__ */ jsx(WalletText, { copy: message })
1112
962
  }) }), /* @__PURE__ */ jsxs("button", {
1113
963
  class: "seams-link-device-btn seams-link-device-btn-primary",
1114
964
  type: "button",
1115
965
  "data-auth-menu-primary": true,
1116
966
  onClick: action,
1117
- children: [googleTarget && !finalizationRetry ? googleIcon() : null, signIn ? googleTarget ? "Unlock with Google" : "Unlock with new passkey" : finalizationRetry ? "Retry finalization" : googleTarget ? "Continue with Google" : "Create new passkey"]
967
+ children: [googleTarget && !finalizationRetry ? googleIcon() : null, signIn ? googleTarget ? /* @__PURE__ */ jsx(WalletText, { message: "Unlock with Google" }) : /* @__PURE__ */ jsx(WalletText, { message: "Unlock with new passkey" }) : finalizationRetry ? /* @__PURE__ */ jsx(WalletText, { message: "Retry finalization" }) : googleTarget ? /* @__PURE__ */ jsx(WalletText, { message: "Continue with Google" }) : /* @__PURE__ */ jsx(WalletText, { message: "Create new passkey" })]
1118
968
  })]
1119
969
  })] });
1120
970
  }
@@ -1122,16 +972,17 @@ var AuthMenuSurface = class extends Component {
1122
972
  const copy = modeSwitchCopy(viewModel.mode);
1123
973
  return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs("div", {
1124
974
  class: "seams-auth-intent-switch",
1125
- children: [/* @__PURE__ */ jsx("span", { children: copy.prompt }), /* @__PURE__ */ jsx("button", {
975
+ children: [/* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { copy: copy.prompt }) }), /* @__PURE__ */ jsx("button", {
1126
976
  type: "button",
1127
977
  "data-auth-menu-mode": copy.nextMode,
1128
978
  onClick: this.onIntentSwitchClick,
1129
- children: copy.action
979
+ children: /* @__PURE__ */ jsx(WalletText, { copy: copy.action })
1130
980
  })]
1131
981
  }) });
1132
982
  }
1133
983
  renderWaiting(viewModel) {
1134
984
  const status = viewModel.status;
985
+ if (status.kind === "succeeded") return this.renderSuccess(status);
1135
986
  if (status.kind !== "busy") return /* @__PURE__ */ jsx(Fragment$1, {});
1136
987
  const waitingText = status.headline;
1137
988
  const prompt = status.illustration ? AUTH_MENU_WAITING_PROMPTS[status.illustration] : null;
@@ -1143,7 +994,7 @@ var AuthMenuSurface = class extends Component {
1143
994
  prompt ? /* @__PURE__ */ jsx("span", {
1144
995
  class: "seams-passkey-prompt",
1145
996
  role: "img",
1146
- "aria-label": prompt.label,
997
+ "aria-label": walletDisplayText(this.context, prompt.label),
1147
998
  children: passkeyRingIcon()
1148
999
  }) : null,
1149
1000
  /* @__PURE__ */ jsxs("div", {
@@ -1151,25 +1002,45 @@ var AuthMenuSurface = class extends Component {
1151
1002
  children: [
1152
1003
  /* @__PURE__ */ jsx("span", {
1153
1004
  class: "seams-waiting-text",
1154
- children: waitingText
1005
+ children: /* @__PURE__ */ jsx(WalletText, { copy: waitingText })
1155
1006
  }),
1156
1007
  prompt ? /* @__PURE__ */ jsx("span", {
1157
1008
  class: "seams-passkey-instruction",
1158
- children: prompt.instruction
1009
+ children: /* @__PURE__ */ jsx(WalletText, { copy: prompt.instruction })
1159
1010
  }) : null,
1160
1011
  viewModel.showProgress && status.detail && status.detail !== waitingText ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
1161
1012
  class: "seams-waiting-sdk-events",
1162
- children: status.detail
1013
+ children: /* @__PURE__ */ jsx(WalletText, { copy: status.detail })
1163
1014
  }) }) : null
1164
1015
  ]
1165
1016
  }),
1166
1017
  prompt ? null : /* @__PURE__ */ jsx("div", {
1167
- "aria-label": "Loading",
1018
+ "aria-label": walletText(this.context, "Loading"),
1168
1019
  class: "seams-spinner"
1169
1020
  })
1170
1021
  ]
1171
1022
  }) });
1172
1023
  }
1024
+ renderSuccess(status) {
1025
+ return /* @__PURE__ */ jsxs("div", {
1026
+ class: "seams-waiting seams-success",
1027
+ role: "status",
1028
+ "aria-live": "polite",
1029
+ children: [/* @__PURE__ */ jsx("span", {
1030
+ class: "seams-passkey-prompt seams-success-prompt",
1031
+ children: passkeySuccessIcon()
1032
+ }, "success-prompt"), /* @__PURE__ */ jsxs("div", {
1033
+ class: "seams-waiting-message seams-success-message",
1034
+ children: [/* @__PURE__ */ jsx("span", {
1035
+ class: "seams-waiting-text",
1036
+ children: /* @__PURE__ */ jsx(WalletText, { copy: status.headline })
1037
+ }), /* @__PURE__ */ jsx("span", {
1038
+ class: "seams-passkey-instruction",
1039
+ children: /* @__PURE__ */ jsx(WalletText, { copy: status.message })
1040
+ })]
1041
+ }, "success-message")]
1042
+ });
1043
+ }
1173
1044
  renderLinkDevice(viewModel) {
1174
1045
  const linkDevice = viewModel.linkDevice;
1175
1046
  if (linkDevice.kind === "select_factor") return this.renderLinkDeviceFactorSelection(linkDevice);
@@ -1218,18 +1089,18 @@ var AuthMenuSurface = class extends Component {
1218
1089
  children: /* @__PURE__ */ jsx("h2", {
1219
1090
  class: "qr-title",
1220
1091
  id: AUTH_MENU_TITLE_ID,
1221
- children: viewModel.heading
1092
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
1222
1093
  })
1223
1094
  }),
1224
1095
  /* @__PURE__ */ jsx("div", {
1225
1096
  class: "qr-instruction",
1226
- children: ready ? viewModel.subtitle : "Preparing a one-time code for your other device."
1097
+ children: ready ? /* @__PURE__ */ jsx(WalletText, { copy: viewModel.subtitle }) : /* @__PURE__ */ jsx(WalletText, { message: "Preparing a one-time code for your other device." })
1227
1098
  }),
1228
1099
  /* @__PURE__ */ jsxs("div", {
1229
1100
  class: "qr-status",
1230
1101
  role: "status",
1231
1102
  "aria-live": "polite",
1232
- children: [ready ? linkDevice.message : "Generating QR code", /* @__PURE__ */ jsx("span", { class: "animated-ellipsis" })]
1103
+ children: [ready ? /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.message }) : /* @__PURE__ */ jsx(WalletText, { message: "Generating QR code" }), /* @__PURE__ */ jsx("span", { class: "animated-ellipsis" })]
1233
1104
  })
1234
1105
  ]
1235
1106
  })
@@ -1247,18 +1118,18 @@ var AuthMenuSurface = class extends Component {
1247
1118
  /* @__PURE__ */ jsx("h2", {
1248
1119
  class: "qr-title",
1249
1120
  id: AUTH_MENU_TITLE_ID,
1250
- children: "Match your other device"
1121
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Match your other device" })
1251
1122
  }),
1252
1123
  /* @__PURE__ */ jsx("p", {
1253
1124
  class: "seams-link-device-confirmation-copy",
1254
- children: "Choose the unlock method for Device 2. Email code sends a one-time code to the address you enter."
1125
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Choose the unlock method for Device 2. Email code sends a one-time code to the address you enter." })
1255
1126
  }),
1256
1127
  /* @__PURE__ */ jsxs("fieldset", {
1257
1128
  class: "seams-link-device-factor-options",
1258
1129
  children: [
1259
1130
  /* @__PURE__ */ jsx("legend", {
1260
1131
  class: "sr-only",
1261
- children: "Wallet unlock method"
1132
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Wallet unlock method" })
1262
1133
  }),
1263
1134
  /* @__PURE__ */ jsxs("label", { children: [
1264
1135
  /* @__PURE__ */ jsx("span", {
@@ -1267,7 +1138,7 @@ var AuthMenuSurface = class extends Component {
1267
1138
  }),
1268
1139
  /* @__PURE__ */ jsx("span", {
1269
1140
  class: "seams-auth-method-choice-label",
1270
- children: "Passkey"
1141
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Passkey" })
1271
1142
  }),
1272
1143
  /* @__PURE__ */ jsx("input", {
1273
1144
  type: "radio",
@@ -1284,7 +1155,7 @@ var AuthMenuSurface = class extends Component {
1284
1155
  }),
1285
1156
  /* @__PURE__ */ jsx("span", {
1286
1157
  class: "seams-auth-method-choice-label",
1287
- children: "Email code"
1158
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Email code" })
1288
1159
  }),
1289
1160
  /* @__PURE__ */ jsx("input", {
1290
1161
  type: "radio",
@@ -1300,13 +1171,13 @@ var AuthMenuSurface = class extends Component {
1300
1171
  class: "seams-link-device-target-email",
1301
1172
  children: [/* @__PURE__ */ jsx("span", {
1302
1173
  class: "seams-field-label",
1303
- children: "Email address"
1174
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Email address" })
1304
1175
  }), /* @__PURE__ */ jsx("input", {
1305
1176
  type: "email",
1306
1177
  name: "linked-device-target-email",
1307
1178
  autocomplete: "email",
1308
1179
  value: emailAddress,
1309
- "aria-label": "Email address",
1180
+ "aria-label": walletText(this.context, "Email address"),
1310
1181
  "aria-invalid": emailAddress.length > 0 && !canStart ? "true" : "false",
1311
1182
  onInput: this.onLinkDeviceTargetEmailInput
1312
1183
  })]
@@ -1314,7 +1185,7 @@ var AuthMenuSurface = class extends Component {
1314
1185
  linkDevice.error ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("p", {
1315
1186
  class: "seams-link-device-inline-error",
1316
1187
  role: "alert",
1317
- children: linkDevice.error
1188
+ children: /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.error })
1318
1189
  }) }) : null,
1319
1190
  /* @__PURE__ */ jsx("button", {
1320
1191
  class: "seams-link-device-btn seams-link-device-btn-primary",
@@ -1322,7 +1193,7 @@ var AuthMenuSurface = class extends Component {
1322
1193
  "data-auth-menu-primary": true,
1323
1194
  disabled: !canStart,
1324
1195
  onClick: this.onLinkDeviceStart,
1325
- children: "Continue"
1196
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Continue" })
1326
1197
  })
1327
1198
  ]
1328
1199
  }) });
@@ -1344,11 +1215,11 @@ var AuthMenuSurface = class extends Component {
1344
1215
  /* @__PURE__ */ jsx("h2", {
1345
1216
  class: "qr-title",
1346
1217
  id: AUTH_MENU_TITLE_ID,
1347
- children: view.heading
1218
+ children: /* @__PURE__ */ jsx(WalletText, { copy: view.heading })
1348
1219
  }),
1349
1220
  hint ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("div", {
1350
1221
  class: "seams-link-device-email-chip",
1351
- title: hint,
1222
+ title: walletDisplayText(this.context, hint),
1352
1223
  children: /* @__PURE__ */ jsx("span", { children: hint })
1353
1224
  }) }) : null,
1354
1225
  /* @__PURE__ */ jsxs("p", {
@@ -1356,7 +1227,7 @@ var AuthMenuSurface = class extends Component {
1356
1227
  id: "seams-linked-device-otp-status",
1357
1228
  role: "status",
1358
1229
  "aria-live": "polite",
1359
- children: [view.status, view.pending ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
1230
+ children: [/* @__PURE__ */ jsx(WalletText, { copy: view.status }), view.pending ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
1360
1231
  class: "animated-ellipsis",
1361
1232
  "aria-hidden": "true"
1362
1233
  }) }) : null]
@@ -1364,7 +1235,7 @@ var AuthMenuSurface = class extends Component {
1364
1235
  showCodeField ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("label", {
1365
1236
  class: "sr-only",
1366
1237
  for: "seams-linked-device-email-otp",
1367
- children: "Email code"
1238
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Email code" })
1368
1239
  }), /* @__PURE__ */ jsxs("div", {
1369
1240
  class: "seams-otp-code-field",
1370
1241
  "data-disabled": busy ? "true" : "false",
@@ -1377,7 +1248,7 @@ var AuthMenuSurface = class extends Component {
1377
1248
  autocomplete: "one-time-code",
1378
1249
  pattern: "[0-9]*",
1379
1250
  maxLength: 6,
1380
- "aria-label": "Email verification code",
1251
+ "aria-label": walletText(this.context, "Email verification code"),
1381
1252
  "aria-describedby": "seams-linked-device-otp-status",
1382
1253
  "aria-invalid": activation.kind === "incorrect" ? "true" : "false",
1383
1254
  value: linkDevice.otpCode,
@@ -1404,26 +1275,26 @@ var AuthMenuSurface = class extends Component {
1404
1275
  type: "button",
1405
1276
  "data-link-device-error-dismiss": true,
1406
1277
  onClick: this.onBackClick,
1407
- children: "Return to unlock wallet"
1278
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Return to unlock wallet" })
1408
1279
  }) });
1409
1280
  if (activation.kind === "expired") return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("button", {
1410
1281
  class: "seams-link-device-btn seams-link-device-btn-primary",
1411
1282
  type: "button",
1412
1283
  onClick: this.onLinkDeviceEmailOtpResend,
1413
- children: "Send a new code"
1284
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Send a new code" })
1414
1285
  }) });
1415
1286
  return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("button", {
1416
1287
  class: "seams-link-device-btn seams-link-device-btn-primary",
1417
1288
  type: "button",
1418
1289
  disabled: !input.canSubmit,
1419
1290
  onClick: this.onLinkDeviceEmailOtpSubmit,
1420
- children: activation.kind === "submitting" ? "Verifying" : "Verify code"
1291
+ children: activation.kind === "submitting" ? /* @__PURE__ */ jsx(WalletText, { message: "Verifying" }) : /* @__PURE__ */ jsx(WalletText, { message: "Verify code" })
1421
1292
  }), /* @__PURE__ */ jsx("button", {
1422
1293
  class: "seams-otp-resend",
1423
1294
  type: "button",
1424
1295
  disabled: input.busy,
1425
1296
  onClick: this.onLinkDeviceEmailOtpResend,
1426
- children: "Send another code"
1297
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Send another code" })
1427
1298
  })] });
1428
1299
  }
1429
1300
  renderLinkDeviceFailure(linkDevice) {
@@ -1431,7 +1302,11 @@ var AuthMenuSurface = class extends Component {
1431
1302
  return this.renderLinkDeviceFailurePanel({
1432
1303
  dismiss: "error",
1433
1304
  title: activationFailed ? "Device linked" : "Couldn't link device",
1434
- detail: activationFailed ? /* @__PURE__ */ jsxs(Fragment$1, { children: ["Unable to open the wallet. Go back and try again. ", linkDevice.message] }) : linkDevice.message,
1305
+ detail: activationFailed ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
1306
+ /* @__PURE__ */ jsx(WalletText, { message: "Unable to open the wallet. Go back and try again." }),
1307
+ " ",
1308
+ /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.message })
1309
+ ] }) : linkDevice.message,
1435
1310
  action: "Return to unlock wallet"
1436
1311
  });
1437
1312
  }
@@ -1446,12 +1321,12 @@ var AuthMenuSurface = class extends Component {
1446
1321
  /* @__PURE__ */ jsx("h2", {
1447
1322
  class: "qr-title",
1448
1323
  id: AUTH_MENU_TITLE_ID,
1449
- children: panel.title
1324
+ children: /* @__PURE__ */ jsx(WalletText, { copy: panel.title })
1450
1325
  }),
1451
1326
  /* @__PURE__ */ jsx("p", {
1452
1327
  class: "seams-link-device-failure-detail",
1453
1328
  role: "alert",
1454
- children: panel.detail
1329
+ children: typeof panel.detail === "string" ? /* @__PURE__ */ jsx(WalletText, { copy: panel.detail }) : panel.detail
1455
1330
  }),
1456
1331
  /* @__PURE__ */ jsx("button", {
1457
1332
  class: "seams-link-device-btn",
@@ -1459,7 +1334,7 @@ var AuthMenuSurface = class extends Component {
1459
1334
  "data-auth-menu-primary": true,
1460
1335
  [`data-link-device-${panel.dismiss}-dismiss`]: true,
1461
1336
  onClick: this.onBackClick,
1462
- children: panel.action
1337
+ children: /* @__PURE__ */ jsx(WalletText, { copy: panel.action })
1463
1338
  })
1464
1339
  ]
1465
1340
  }) });
@@ -1475,13 +1350,13 @@ var AuthMenuSurface = class extends Component {
1475
1350
  /* @__PURE__ */ jsx("h2", {
1476
1351
  class: "qr-title",
1477
1352
  id: AUTH_MENU_TITLE_ID,
1478
- children: "Opening linked wallet"
1353
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Opening linked wallet" })
1479
1354
  }),
1480
1355
  /* @__PURE__ */ jsx("p", {
1481
1356
  class: "seams-link-device-confirmation-copy",
1482
1357
  role: "status",
1483
1358
  "aria-live": "polite",
1484
- children: linkDevice.message
1359
+ children: /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.message })
1485
1360
  })
1486
1361
  ]
1487
1362
  }) });
@@ -1496,7 +1371,7 @@ var AuthMenuSurface = class extends Component {
1496
1371
  class: "qr-title",
1497
1372
  id: AUTH_MENU_TITLE_ID,
1498
1373
  "aria-live": "polite",
1499
- children: linkDevice.message
1374
+ children: /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.message })
1500
1375
  }),
1501
1376
  /* @__PURE__ */ jsx("button", {
1502
1377
  class: "seams-link-device-btn seams-link-device-btn-primary",
@@ -1505,7 +1380,7 @@ var AuthMenuSurface = class extends Component {
1505
1380
  "data-link-device-passkey-action": true,
1506
1381
  disabled: creating,
1507
1382
  onClick: this.onLinkDeviceCreatePasskey,
1508
- children: creating ? "Waiting for passkey" : "Create passkey"
1383
+ children: creating ? /* @__PURE__ */ jsx(WalletText, { message: "Waiting for passkey" }) : /* @__PURE__ */ jsx(WalletText, { message: "Create passkey" })
1509
1384
  })
1510
1385
  ]
1511
1386
  }) });
@@ -1523,19 +1398,19 @@ var AuthMenuSurface = class extends Component {
1523
1398
  /* @__PURE__ */ jsx("div", {
1524
1399
  class: "seams-otp-title",
1525
1400
  id: AUTH_MENU_TITLE_ID,
1526
- children: viewModel.heading
1401
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
1527
1402
  }),
1528
1403
  /* @__PURE__ */ jsx("p", {
1529
1404
  class: "seams-otp-description",
1530
- children: deliveryMessage
1405
+ children: /* @__PURE__ */ jsx(WalletText, { copy: deliveryMessage })
1531
1406
  }),
1532
1407
  renderDemoEmailCode(viewModel.delivery),
1533
1408
  /* @__PURE__ */ jsxs("div", {
1534
1409
  class: "seams-otp-account",
1535
- title: viewModel.walletId,
1410
+ title: walletDisplayText(this.context, viewModel.walletId),
1536
1411
  children: [/* @__PURE__ */ jsx("span", {
1537
1412
  class: "seams-otp-account-label",
1538
- children: "Wallet"
1413
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Wallet" })
1539
1414
  }), /* @__PURE__ */ jsx("span", {
1540
1415
  class: "seams-otp-account-value",
1541
1416
  children: viewModel.walletId
@@ -1546,7 +1421,7 @@ var AuthMenuSurface = class extends Component {
1546
1421
  /* @__PURE__ */ jsx("label", {
1547
1422
  class: "seams-field-label",
1548
1423
  for: "seams-auth-menu-google-otp",
1549
- children: "Email code"
1424
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Email code" })
1550
1425
  }),
1551
1426
  /* @__PURE__ */ jsxs("div", {
1552
1427
  class: "seams-otp-code-field",
@@ -1574,7 +1449,7 @@ var AuthMenuSurface = class extends Component {
1574
1449
  }),
1575
1450
  /* @__PURE__ */ jsx("p", {
1576
1451
  class: "seams-otp-helper",
1577
- children: viewModel.prompt.helperText ?? ""
1452
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.prompt.helperText ?? "" })
1578
1453
  }),
1579
1454
  /* @__PURE__ */ jsx("button", {
1580
1455
  class: "seams-auth-method-btn seams-auth-method-btn-primary",
@@ -1582,14 +1457,14 @@ var AuthMenuSurface = class extends Component {
1582
1457
  "data-auth-menu-primary": true,
1583
1458
  disabled: !isAuthMenuActionReady(viewModel),
1584
1459
  onClick: this.onPrimaryClick,
1585
- children: viewModel.submitBusy ? "Unlocking…" : viewModel.ctaLabel
1460
+ children: viewModel.submitBusy ? /* @__PURE__ */ jsx(WalletText, { message: "Unlocking…" }) : /* @__PURE__ */ jsx(WalletText, { copy: viewModel.ctaLabel })
1586
1461
  }),
1587
1462
  /* @__PURE__ */ jsx("button", {
1588
1463
  class: "seams-otp-resend auth-menu-google-resend",
1589
1464
  type: "button",
1590
1465
  disabled: viewModel.resendBusy || viewModel.submitBusy,
1591
1466
  onClick: this.onGoogleOtpResend,
1592
- children: viewModel.resendBusy ? "Sending…" : "Resend Code"
1467
+ children: viewModel.resendBusy ? /* @__PURE__ */ jsx(WalletText, { message: "Sending…" }) : /* @__PURE__ */ jsx(WalletText, { message: "Resend Code" })
1593
1468
  })
1594
1469
  ]
1595
1470
  }) });
@@ -1604,18 +1479,18 @@ var AuthMenuSurface = class extends Component {
1604
1479
  /* @__PURE__ */ jsx("div", {
1605
1480
  class: "seams-otp-title",
1606
1481
  id: AUTH_MENU_TITLE_ID,
1607
- children: viewModel.heading
1482
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
1608
1483
  }),
1609
1484
  /* @__PURE__ */ jsx("p", {
1610
1485
  class: "seams-otp-description",
1611
- children: viewModel.subtitle
1486
+ children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.subtitle })
1612
1487
  }),
1613
1488
  /* @__PURE__ */ jsxs("div", {
1614
1489
  class: "seams-otp-account",
1615
- title: viewModel.walletId,
1490
+ title: walletDisplayText(this.context, viewModel.walletId),
1616
1491
  children: [/* @__PURE__ */ jsx("span", {
1617
1492
  class: "seams-otp-account-label",
1618
- children: "Wallet"
1493
+ children: /* @__PURE__ */ jsx(WalletText, { message: "Wallet" })
1619
1494
  }), /* @__PURE__ */ jsx("span", {
1620
1495
  class: "seams-otp-account-value",
1621
1496
  children: viewModel.walletId
@@ -1626,7 +1501,7 @@ var AuthMenuSurface = class extends Component {
1626
1501
  type: "button",
1627
1502
  disabled: viewModel.rerollBusy || viewModel.submitBusy,
1628
1503
  onClick: this.onGoogleRegistrationReroll,
1629
- children: viewModel.rerollBusy ? "Generating…" : "Generate another name"
1504
+ children: viewModel.rerollBusy ? /* @__PURE__ */ jsx(WalletText, { message: "Generating…" }) : /* @__PURE__ */ jsx(WalletText, { message: "Generate another name" })
1630
1505
  })
1631
1506
  ]
1632
1507
  }), /* @__PURE__ */ jsx("button", {
@@ -1635,7 +1510,7 @@ var AuthMenuSurface = class extends Component {
1635
1510
  "data-auth-menu-primary": true,
1636
1511
  disabled: !isAuthMenuActionReady(viewModel),
1637
1512
  onClick: this.onPrimaryClick,
1638
- children: viewModel.submitBusy ? "Creating..." : viewModel.ctaLabel
1513
+ children: viewModel.submitBusy ? /* @__PURE__ */ jsx(WalletText, { message: "Creating..." }) : /* @__PURE__ */ jsx(WalletText, { copy: viewModel.ctaLabel })
1639
1514
  })]
1640
1515
  }) });
1641
1516
  }