@seams/wallet 0.15.6 → 0.18.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.
- package/README.md +15 -8
- package/THIRD_PARTY_NOTICES.md +102 -1
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/SeamsWeb.js +20 -1
- package/dist/esm/SeamsWeb/operations/registration/registrationSignerSet.js +73 -0
- package/dist/esm/SeamsWeb/operations/session/thresholdEcdsaProvisioning.js +22 -0
- package/dist/esm/SeamsWeb/publicApi/capabilitySelection.js +2 -1
- package/dist/esm/SeamsWeb/publicApi/createPublicApi.js +26 -1
- package/dist/esm/SeamsWeb/walletIframe/client/overlay/overlay-controller.js +71 -69
- package/dist/esm/SeamsWeb/walletIframe/client/preferenceState.js +6 -8
- package/dist/esm/SeamsWeb/walletIframe/client/preferences.js +7 -5
- package/dist/esm/SeamsWeb/walletIframe/client/progress/on-events-progress-bus.js +2 -1
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +116 -108
- package/dist/esm/SeamsWeb/walletIframe/client/surface/transactionSurfaceQueue.js +11 -7
- package/dist/esm/SeamsWeb/walletIframe/client/transactionReviewReservation.js +3 -2
- package/dist/esm/SeamsWeb/walletIframe/client/transport/IframeTransport.js +53 -49
- package/dist/esm/SeamsWeb/walletIframe/client/transport/iframe-transport-handshake.js +6 -2
- package/dist/esm/SeamsWeb/walletIframe/coordinator.js +18 -13
- package/dist/esm/SeamsWeb/walletIframe/host/surface-measurement-reporter.js +14 -13
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +6 -8
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +387 -535
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +13 -8
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.js +116 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/recovery-code-input.js +60 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/exactSessionState.js +1 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/facadeBoundary.js +2 -0
- package/dist/esm/core/config/configBuilder.js +3 -1
- package/dist/esm/core/config/defaultConfigs.js +1 -0
- package/dist/esm/core/indexedDB/accountSignerLifecycle.js +2 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestStore.js +1 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/manager.js +6 -5
- package/dist/esm/core/indexedDB/seamsWalletDB/repositories.js +2 -0
- package/dist/esm/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.js +2 -2
- package/dist/esm/core/indexedDB/unifiedIndexedDBManager.js +6 -3
- package/dist/esm/core/rpcClients/near/NearRpcError.js +7 -0
- package/dist/esm/core/rpcClients/relayer/routerAbNormalSigning.js +3 -0
- package/dist/esm/core/rpcClients/relayer/walletRegistration.js +6 -2
- package/dist/esm/core/rpcClients/relayer/walletSessionAuthorizationStatus.js +5 -4
- package/dist/esm/core/signingEngine/chains/evm/evmAdapter.js +2 -1
- package/dist/esm/core/signingEngine/chains/tempo/tempoAdapter.js +2 -1
- package/dist/esm/core/signingEngine/flows/registration/accountLifecycle.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/secp256k1.js +5 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.js +1 -1
- package/dist/esm/core/signingEngine/flows/signEvmFamily/signingFlow.js +3 -2
- package/dist/esm/core/signingEngine/routerAb/ecdsaDerivation/presignatureRefillProgress.js +5 -7
- package/dist/esm/core/signingEngine/session/lifecycle/walletSessionFailure.js +2 -0
- package/dist/esm/core/signingEngine/session/material/ecdsaCapabilityManifest.js +68 -10
- package/dist/esm/core/signingEngine/session/material/walletSigningStateFailure.js +2 -2
- package/dist/esm/core/signingEngine/session/operationState/authorizationAdmission.js +2 -0
- package/dist/esm/core/signingEngine/stepUpConfirmation/methodSelection.js +2 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +36 -32
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +10 -6
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +12 -12
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +29 -29
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +141 -141
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +21 -21
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +45 -40
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +19 -21
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/HaloBorder.js +21 -24
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +16 -16
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +9 -5
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +128 -125
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +72 -74
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +51 -26
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +65 -53
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +44 -40
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +122 -122
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/WalletLocale.js +24 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/email-otp-session.js +81 -80
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +47 -41
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +17 -11
- package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-display/tree.js +4 -21
- package/dist/esm/core/types/actionBuilders.js +16 -2
- package/dist/esm/core/types/amounts.js +83 -0
- package/dist/esm/core/types/linkDevice.js +1 -1
- package/dist/esm/core/ui/locale.js +10 -0
- package/dist/esm/core/ui/messages.js +694 -0
- package/dist/esm/externalEvm/controller.js +49 -48
- package/dist/esm/index.js +3 -1
- package/dist/esm/react/boundWallet.js +56 -0
- package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonMock.js +7 -3
- package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +6 -3
- package/dist/esm/react/components/AccountMenuButton/AccountMenuDeviceDetails.js +4 -3
- package/dist/esm/react/components/AccountMenuButton/AccountMenuDialog.js +5 -2
- package/dist/esm/react/components/AccountMenuButton/AccountMenuMockScreens.js +31 -27
- package/dist/esm/react/components/AccountMenuButton/AccountMenuScreen.js +6 -3
- package/dist/esm/react/components/AccountMenuButton/AccountsSection.js +6 -3
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +5 -4
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +33 -27
- package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsView.js +5 -2
- package/dist/esm/react/components/AccountMenuButton/ExportKeysScreen.js +5 -3
- package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +4 -3
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +13 -2
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +50 -41
- package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +2 -1
- package/dist/esm/react/components/AccountMenuButton/MenuItem.js +3 -2
- package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +8 -4
- package/dist/esm/react/components/AccountMenuButton/RecoveryCodeAcknowledgement.js +3 -2
- package/dist/esm/react/components/AccountMenuButton/RecoveryCodeActions.js +4 -3
- package/dist/esm/react/components/AccountMenuButton/SegmentedControl.js +2 -1
- package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +11 -10
- package/dist/esm/react/components/AccountMenuButton/UserAccountButton.js +8 -4
- package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +112 -108
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +74 -73
- package/dist/esm/react/components/AccountMenuButton/index.js +18 -15
- package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +30 -26
- package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +17 -6
- package/dist/esm/react/components/QRCodeScanner.js +28 -23
- package/dist/esm/react/components/ShowQRCode.css +13 -2
- package/dist/esm/react/components/ShowQRCode.js +39 -31
- package/dist/esm/react/components/theme/ThemeProvider.js +3 -0
- package/dist/esm/react/context/WalletLocale.js +15 -0
- package/dist/esm/react/context/index.js +38 -6
- package/dist/esm/react/context/useSeamsWithSdkFlow.js +1 -1
- package/dist/esm/react/externalEvm.js +22 -25
- package/dist/esm/react/index.js +4 -4
- package/dist/esm/react/styles/styles.css +13 -2
- package/dist/esm/react/transactionReview/TransactionReviewHost.js +3 -6
- package/dist/esm/react/transactionReview/boundCalls.js +1 -1
- package/dist/esm/react/transactionReview/controller.js +121 -119
- package/dist/esm/sdk/ConfirmationDrawer-mu3iThxX.js +1 -0
- package/dist/esm/sdk/NonceCoordinator-Dq-FZpBz.js +1 -0
- package/dist/{public/sdk/accountLifecycle-CBOkr0vU.js → esm/sdk/accountLifecycle-fLNUdjct.js} +1 -1
- package/dist/esm/sdk/{activeWalletSession-WdZkhtBB.js → activeWalletSession-BpbnpU9s.js} +1 -1
- package/dist/esm/sdk/adapters-u7LVXthY.js +2 -0
- package/dist/esm/sdk/appearance-token-vars-CzBVbO39.js +2 -0
- package/dist/esm/sdk/authorizationAdmission-Dd23mTx7.js +1 -0
- package/dist/esm/sdk/{canonicalPrimitives-Dsbsxgxc.js → canonicalPrimitives-BMP5yILS.js} +1 -1
- package/dist/esm/sdk/{capabilityKinds-N8xo_IEh.js → capabilityKinds-D0Yrp9uf.js} +1 -1
- package/dist/esm/sdk/{chains-C_X_fNuS.js → chains-CPmd4s9f.js} +1 -1
- package/dist/esm/sdk/challengeDelivery-CG2J5Qxs.js +1 -0
- package/dist/esm/sdk/{clientSessionPersistenceState-CBylL1Ul.js → clientSessionPersistenceState-BgO4P6CZ.js} +1 -1
- package/dist/esm/sdk/{commitQueue-DYEgzoLA.js → commitQueue-BW7BpYyA.js} +1 -1
- package/dist/esm/sdk/configBuilder-BMNShuOu.js +1 -0
- package/dist/esm/sdk/{configHelpers-B-hs0mTO.js → configHelpers-D50F_Txb.js} +1 -1
- package/dist/esm/sdk/{digestEncoding-BX3VW9eF.js → digestEncoding-aC4dSf_x.js} +1 -1
- package/dist/esm/sdk/{display-DsfJkAra.js → display-WtILOPQR.js} +1 -1
- package/dist/esm/sdk/domainIds-C3fUa33Q.js +1 -0
- package/dist/esm/sdk/ecdsaCapabilityManifest-DRc423SV.js +1 -0
- package/dist/esm/sdk/{ecdsaChainTarget-Bfatk3oP.js → ecdsaChainTarget-DkOrgv4y.js} +1 -1
- package/dist/esm/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js +1 -0
- package/dist/{public/sdk/ecdsaDerivationExport-DOGzq0qC.js → esm/sdk/ecdsaDerivationExport-DX89rq_u.js} +1 -1
- package/dist/esm/sdk/{ecdsaWalletRecords-CHfrYvKr.js → ecdsaWalletRecords-CxxUt3fS.js} +1 -1
- package/dist/{public/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js → esm/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js} +1 -1
- package/dist/esm/sdk/{errors-DIWY1KR9.js → errors-ADOZT8oV.js} +1 -1
- package/dist/esm/sdk/export-viewer-host-ivf9LlBo.js +1 -0
- package/dist/{public/sdk/exportKeypairOperation-DzbjKbnk.js → esm/sdk/exportKeypairOperation-Gw7L5Htj.js} +1 -1
- package/dist/esm/sdk/{helpers-B9fpZNAP.js → helpers-DS0bksx9.js} +1 -1
- package/dist/esm/sdk/{host-DfWylEiw.js → host-B-2QXolt.js} +1 -1
- package/dist/esm/sdk/{intentDigest-P_-CM7lS.js → intentDigest-Rh5Mg8X7.js} +1 -1
- package/dist/esm/sdk/{lanes-5kcTFbPx.js → lanes-BzU7cv2T.js} +1 -1
- package/dist/esm/sdk/localOnly-BKpUHtHa.js +1 -0
- package/dist/esm/sdk/mountExportPrivateKeySurface-C8pUK6PQ.js +1 -0
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DUudF89t.js +2 -0
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js +1 -0
- package/dist/{public/sdk/nearEd25519YaoSigningPreparation-RIfkYN0d.js → esm/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js} +1 -1
- package/dist/esm/sdk/{nonceLaneKeys-BCYfl1wv.js → nonceLaneKeys-BzMBVxMU.js} +1 -1
- package/dist/esm/sdk/{normalization-n503J-BI.js → normalization-Ct9-AY13.js} +1 -1
- package/dist/esm/sdk/{operationFingerprint-BHNYryLY.js → operationFingerprint-C4VX-0NI.js} +1 -1
- package/dist/esm/sdk/{passkey-custody-DpTM-eNJ.js → passkey-custody-Ba-NQ_4C.js} +1 -1
- package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-C60sZMj5.js → pendingWalletRecoveryCodeBackup-7tBjuSe7.js} +1 -1
- package/dist/esm/sdk/presignaturePool-BHoxnbOA.js +1 -0
- package/dist/esm/sdk/{prfCache-DJ93rtDv.js → prfCache-BAFh1skJ.js} +1 -1
- package/dist/esm/sdk/{primitives-CqrjmIAH.js → primitives-CTmDwMNc.js} +1 -1
- package/dist/{public/sdk/recovery-entrypoint-BULjaFBM.js → esm/sdk/recovery-entrypoint-DWghFZrZ.js} +1 -1
- package/dist/esm/sdk/{registration-CyF7nOXs.js → registration-CWpOVwhj.js} +1 -1
- package/dist/esm/sdk/registration-D2OEgY7O.js +1 -0
- package/dist/esm/sdk/{registrationAccounts-BQMUusdD.js → registrationAccounts-CD1u1ZqZ.js} +1 -1
- package/dist/esm/sdk/{registrationAuthMethodInput-RbSR7R1G.js → registrationAuthMethodInput-B23_HRil.js} +1 -1
- package/dist/esm/sdk/{registrationIds-BaK3jUS6.js → registrationIds-B1OpqRAt.js} +1 -1
- package/dist/esm/sdk/{registrationIntent-090Zj7Iu.js → registrationIntent-D4YDjf2U.js} +1 -1
- package/dist/{public/sdk/registrationSignerPlan-CPzHavPM.js → esm/sdk/registrationSignerPlan-BHkqlian.js} +1 -1
- package/dist/{public/sdk/requireStepUpAuth-BCY5ZStI.js → esm/sdk/requireStepUpAuth-CnSCFSOZ.js} +1 -1
- package/dist/esm/sdk/routerAbNormalSigning-BV1t27aB.js +1 -0
- package/dist/esm/sdk/runtime-auth-jtyQAuxZ.js +1 -0
- package/dist/esm/sdk/runtime-device-link-vhRhB-wS.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-BXWgFVBa.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-BlAaSKtk.js +1 -0
- package/dist/esm/sdk/runtime-export-B4FuHhcH.js +1 -0
- package/dist/esm/sdk/runtime-near-BnWOpEpA.js +1 -0
- package/dist/esm/sdk/runtime-preferences-COm-LTiu.js +1 -0
- package/dist/esm/sdk/runtime-recovery-BJTo5Idi.js +1 -0
- package/dist/esm/sdk/{runtime-recovery-codes-GOytzExh.js → runtime-recovery-codes-CEOjdUHV.js} +1 -1
- package/dist/esm/sdk/{sdkSentEvents-D4KtK7_I.js → sdkSentEvents-DujYAPEM.js} +1 -1
- package/dist/esm/sdk/secp256k1-wOOHtPcK.js +1 -0
- package/dist/esm/sdk/{secureRandomId-LwBFx84B.js → secureRandomId-8LSc91aN.js} +1 -1
- package/dist/esm/sdk/sessionObservationRevision-C7v-wN8_.js +1 -0
- package/dist/esm/sdk/shared-BKPGtAps.js +6 -0
- package/dist/{public/sdk/signEvmFamily-Cpm3e6Zs.js → esm/sdk/signEvmFamily-DT34Vtpa.js} +1 -1
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js +1 -0
- package/dist/esm/sdk/{signEvmWithUiConfirm-BRmdLgmm.js → signEvmWithUiConfirm-D6nmJr_L.js} +1 -1
- package/dist/esm/sdk/signNear-B000QxBd.js +1 -0
- package/dist/esm/sdk/signatureUses-B_nN17i7.js +1 -0
- package/dist/esm/sdk/{signerDomain-Dp7BhfmZ.js → signerDomain-BFqRQ0Jl.js} +1 -1
- package/dist/esm/sdk/{signingFlow-VAnM8L5C.js → signingFlow-gl85GOW4.js} +2 -2
- package/dist/esm/sdk/{signingQueue-D_Ebmzcn.js → signingQueue-gW7wmOuL.js} +1 -1
- package/dist/{public/sdk/singletons-BXhnsqeY.js → esm/sdk/singletons-CAsc9LvA.js} +1 -1
- package/dist/esm/sdk/surface-measurement-reporter-BJhfiPw6.js +1 -0
- package/dist/{public/sdk/thresholdEcdsa-CneSKcRt.js → esm/sdk/thresholdEcdsa-Ci7yz395.js} +1 -1
- package/dist/esm/sdk/{trace-BBux0jtr.js → trace-CsRMlSh1.js} +1 -1
- package/dist/{public/sdk/transaction-activity-Cccvec2J.js → esm/sdk/transaction-activity-C0nCSW6c.js} +1 -1
- package/dist/esm/sdk/transactionReviewAdmission-CNNho8IG.js +1 -0
- package/dist/{public/sdk/transactionState-Day-1x7Y.js → esm/sdk/transactionState-lB2qpkOm.js} +1 -1
- package/dist/esm/sdk/tx-confirm-ui.js +2502 -1174
- package/dist/esm/sdk/{types-hKLqDUhR.js → types-CQTWmtqu.js} +1 -1
- package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/{public/sdk/wallet-recovery-Bfhfk52N.js → esm/sdk/wallet-recovery-DFaS3geI.js} +1 -1
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/{public/sdk/walletAuthMethodRecord-LniOQQmj.js → esm/sdk/walletAuthMethodRecord-CWdqdY_s.js} +1 -1
- package/dist/{public/sdk/walletAuthority-CAiGuWW2.js → esm/sdk/walletAuthority-BY3kyKQ-.js} +1 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js +1 -0
- package/dist/esm/sdk/{walletDbName-DtRewci9.js → walletDbName-BxWApBQF.js} +1 -1
- package/dist/esm/sdk/{walletOwnershipGeneration-B6HyR2rE.js → walletOwnershipGeneration-DSGfjuV2.js} +1 -1
- package/dist/esm/sdk/{walletRecoveryCommit-C6HF84_U.js → walletRecoveryCommit-DQA_wveK.js} +1 -1
- package/dist/esm/sdk/{walletRecoveryRotate-BN3H8byw.js → walletRecoveryRotate-zvQThn37.js} +1 -1
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js +1 -0
- package/dist/esm/sdk/walletSessionAuthorizationStore-DnUMtkev.js +1 -0
- package/dist/esm/sdk/walletSessionFailure-C6TAQTZn.js +1 -0
- package/dist/esm/sdk/warmSessionHydration-D8Vdro9n.js +1 -0
- package/dist/esm/sdk/webauthnP256-_ajaNl90.js +1 -0
- package/dist/esm/sdk/webauthnPromptCoordinator-9bVeHcTZ.js +1 -0
- package/dist/esm/shared-ts/src/authorization/delegatedAuthority.js +1 -1
- package/dist/esm/shared-ts/src/authorization/operationFingerprint.js +6 -0
- package/dist/esm/shared-ts/src/near/nearClient.js +6 -0
- package/dist/esm/shared-ts/src/threshold/participants.js +2 -1
- package/dist/esm/shared-ts/src/threshold/secp256k1.js +6 -0
- package/dist/esm/shared-ts/src/utils/domainIds.js +7 -0
- package/dist/esm/shared-ts/src/utils/index.js +1 -1
- package/dist/esm/shared-ts/src/utils/registrationSignerPlan.js +14 -1
- package/dist/esm/shared-ts/src/utils/routerAbEd25519Yao.js +5 -4
- package/dist/esm/utils/qrScanner.js +10 -8
- package/dist/public/headers.manifest.json +1 -1
- package/dist/public/sdk/ConfirmationDrawer-mu3iThxX.js +1 -0
- package/dist/public/sdk/NonceCoordinator-Dq-FZpBz.js +1 -0
- package/dist/{esm/sdk/accountLifecycle-CBOkr0vU.js → public/sdk/accountLifecycle-fLNUdjct.js} +1 -1
- package/dist/public/sdk/{activeWalletSession-WdZkhtBB.js → activeWalletSession-BpbnpU9s.js} +1 -1
- package/dist/public/sdk/adapters-u7LVXthY.js +2 -0
- package/dist/public/sdk/appearance-token-vars-CzBVbO39.js +2 -0
- package/dist/public/sdk/authorizationAdmission-Dd23mTx7.js +1 -0
- package/dist/public/sdk/{canonicalPrimitives-Dsbsxgxc.js → canonicalPrimitives-BMP5yILS.js} +1 -1
- package/dist/public/sdk/{capabilityKinds-N8xo_IEh.js → capabilityKinds-D0Yrp9uf.js} +1 -1
- package/dist/public/sdk/{chains-C_X_fNuS.js → chains-CPmd4s9f.js} +1 -1
- package/dist/public/sdk/challengeDelivery-CG2J5Qxs.js +1 -0
- package/dist/public/sdk/{clientSessionPersistenceState-CBylL1Ul.js → clientSessionPersistenceState-BgO4P6CZ.js} +1 -1
- package/dist/public/sdk/{commitQueue-DYEgzoLA.js → commitQueue-BW7BpYyA.js} +1 -1
- package/dist/public/sdk/configBuilder-BMNShuOu.js +1 -0
- package/dist/public/sdk/{configHelpers-B-hs0mTO.js → configHelpers-D50F_Txb.js} +1 -1
- package/dist/public/sdk/{digestEncoding-BX3VW9eF.js → digestEncoding-aC4dSf_x.js} +1 -1
- package/dist/public/sdk/{display-DsfJkAra.js → display-WtILOPQR.js} +1 -1
- package/dist/public/sdk/domainIds-C3fUa33Q.js +1 -0
- package/dist/public/sdk/ecdsaCapabilityManifest-DRc423SV.js +1 -0
- package/dist/public/sdk/{ecdsaChainTarget-Bfatk3oP.js → ecdsaChainTarget-DkOrgv4y.js} +1 -1
- package/dist/public/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js +1 -0
- package/dist/{esm/sdk/ecdsaDerivationExport-DOGzq0qC.js → public/sdk/ecdsaDerivationExport-DX89rq_u.js} +1 -1
- package/dist/public/sdk/{ecdsaWalletRecords-CHfrYvKr.js → ecdsaWalletRecords-CxxUt3fS.js} +1 -1
- package/dist/{esm/sdk/emailOtpEcdsaDerivationIdentity-Bik0N8v9.js → public/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js} +1 -1
- package/dist/public/sdk/{errors-DIWY1KR9.js → errors-ADOZT8oV.js} +1 -1
- package/dist/public/sdk/export-viewer-host-ivf9LlBo.js +1 -0
- package/dist/{esm/sdk/exportKeypairOperation-DzbjKbnk.js → public/sdk/exportKeypairOperation-Gw7L5Htj.js} +1 -1
- package/dist/public/sdk/{helpers-B9fpZNAP.js → helpers-DS0bksx9.js} +1 -1
- package/dist/public/sdk/{host-DfWylEiw.js → host-B-2QXolt.js} +1 -1
- package/dist/public/sdk/{intentDigest-P_-CM7lS.js → intentDigest-Rh5Mg8X7.js} +1 -1
- package/dist/public/sdk/{lanes-5kcTFbPx.js → lanes-BzU7cv2T.js} +1 -1
- package/dist/public/sdk/localOnly-BKpUHtHa.js +1 -0
- package/dist/public/sdk/mountExportPrivateKeySurface-C8pUK6PQ.js +1 -0
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-DUudF89t.js +2 -0
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js +1 -0
- package/dist/{esm/sdk/nearEd25519YaoSigningPreparation-RIfkYN0d.js → public/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js} +1 -1
- package/dist/public/sdk/{nonceLaneKeys-BCYfl1wv.js → nonceLaneKeys-BzMBVxMU.js} +1 -1
- package/dist/public/sdk/{normalization-n503J-BI.js → normalization-Ct9-AY13.js} +1 -1
- package/dist/public/sdk/{operationFingerprint-BHNYryLY.js → operationFingerprint-C4VX-0NI.js} +1 -1
- package/dist/public/sdk/{passkey-custody-DpTM-eNJ.js → passkey-custody-Ba-NQ_4C.js} +1 -1
- package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-C60sZMj5.js → pendingWalletRecoveryCodeBackup-7tBjuSe7.js} +1 -1
- package/dist/public/sdk/presignaturePool-BHoxnbOA.js +1 -0
- package/dist/public/sdk/{prfCache-DJ93rtDv.js → prfCache-BAFh1skJ.js} +1 -1
- package/dist/public/sdk/{primitives-CqrjmIAH.js → primitives-CTmDwMNc.js} +1 -1
- package/dist/{esm/sdk/recovery-entrypoint-BULjaFBM.js → public/sdk/recovery-entrypoint-DWghFZrZ.js} +1 -1
- package/dist/public/sdk/{registration-CyF7nOXs.js → registration-CWpOVwhj.js} +1 -1
- package/dist/public/sdk/registration-D2OEgY7O.js +1 -0
- package/dist/public/sdk/{registrationAccounts-BQMUusdD.js → registrationAccounts-CD1u1ZqZ.js} +1 -1
- package/dist/public/sdk/{registrationAuthMethodInput-RbSR7R1G.js → registrationAuthMethodInput-B23_HRil.js} +1 -1
- package/dist/public/sdk/{registrationIds-BaK3jUS6.js → registrationIds-B1OpqRAt.js} +1 -1
- package/dist/public/sdk/{registrationIntent-090Zj7Iu.js → registrationIntent-D4YDjf2U.js} +1 -1
- package/dist/{esm/sdk/registrationSignerPlan-CPzHavPM.js → public/sdk/registrationSignerPlan-BHkqlian.js} +1 -1
- package/dist/{esm/sdk/requireStepUpAuth-BCY5ZStI.js → public/sdk/requireStepUpAuth-CnSCFSOZ.js} +1 -1
- package/dist/public/sdk/routerAbNormalSigning-BV1t27aB.js +1 -0
- package/dist/public/sdk/runtime-auth-jtyQAuxZ.js +1 -0
- package/dist/public/sdk/runtime-device-link-vhRhB-wS.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-BXWgFVBa.js +1 -0
- package/dist/public/sdk/runtime-email-otp-BlAaSKtk.js +1 -0
- package/dist/public/sdk/runtime-export-B4FuHhcH.js +1 -0
- package/dist/public/sdk/runtime-near-BnWOpEpA.js +1 -0
- package/dist/public/sdk/runtime-preferences-COm-LTiu.js +1 -0
- package/dist/public/sdk/runtime-recovery-BJTo5Idi.js +1 -0
- package/dist/public/sdk/{runtime-recovery-codes-GOytzExh.js → runtime-recovery-codes-CEOjdUHV.js} +1 -1
- package/dist/public/sdk/{sdkSentEvents-D4KtK7_I.js → sdkSentEvents-DujYAPEM.js} +1 -1
- package/dist/public/sdk/secp256k1-wOOHtPcK.js +1 -0
- package/dist/public/sdk/{secureRandomId-LwBFx84B.js → secureRandomId-8LSc91aN.js} +1 -1
- package/dist/public/sdk/sessionObservationRevision-C7v-wN8_.js +1 -0
- package/dist/public/sdk/shared-BKPGtAps.js +6 -0
- package/dist/{esm/sdk/signEvmFamily-Cpm3e6Zs.js → public/sdk/signEvmFamily-DT34Vtpa.js} +1 -1
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js +1 -0
- package/dist/public/sdk/{signEvmWithUiConfirm-BRmdLgmm.js → signEvmWithUiConfirm-D6nmJr_L.js} +1 -1
- package/dist/public/sdk/signNear-B000QxBd.js +1 -0
- package/dist/public/sdk/signatureUses-B_nN17i7.js +1 -0
- package/dist/public/sdk/{signerDomain-Dp7BhfmZ.js → signerDomain-BFqRQ0Jl.js} +1 -1
- package/dist/public/sdk/{signingFlow-VAnM8L5C.js → signingFlow-gl85GOW4.js} +2 -2
- package/dist/public/sdk/{signingQueue-D_Ebmzcn.js → signingQueue-gW7wmOuL.js} +1 -1
- package/dist/{esm/sdk/singletons-BXhnsqeY.js → public/sdk/singletons-CAsc9LvA.js} +1 -1
- package/dist/public/sdk/surface-measurement-reporter-BJhfiPw6.js +1 -0
- package/dist/{esm/sdk/thresholdEcdsa-CneSKcRt.js → public/sdk/thresholdEcdsa-Ci7yz395.js} +1 -1
- package/dist/public/sdk/{trace-BBux0jtr.js → trace-CsRMlSh1.js} +1 -1
- package/dist/{esm/sdk/transaction-activity-Cccvec2J.js → public/sdk/transaction-activity-C0nCSW6c.js} +1 -1
- package/dist/public/sdk/transactionReviewAdmission-CNNho8IG.js +1 -0
- package/dist/{esm/sdk/transactionState-Day-1x7Y.js → public/sdk/transactionState-lB2qpkOm.js} +1 -1
- package/dist/public/sdk/tx-confirm-ui.js +2502 -1174
- package/dist/public/sdk/{types-hKLqDUhR.js → types-CQTWmtqu.js} +1 -1
- package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
- package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
- package/dist/{esm/sdk/wallet-recovery-Bfhfk52N.js → public/sdk/wallet-recovery-DFaS3geI.js} +1 -1
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/{esm/sdk/walletAuthMethodRecord-LniOQQmj.js → public/sdk/walletAuthMethodRecord-CWdqdY_s.js} +1 -1
- package/dist/{esm/sdk/walletAuthority-CAiGuWW2.js → public/sdk/walletAuthority-BY3kyKQ-.js} +1 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js +1 -0
- package/dist/public/sdk/{walletDbName-DtRewci9.js → walletDbName-BxWApBQF.js} +1 -1
- package/dist/public/sdk/{walletOwnershipGeneration-B6HyR2rE.js → walletOwnershipGeneration-DSGfjuV2.js} +1 -1
- package/dist/public/sdk/{walletRecoveryCommit-C6HF84_U.js → walletRecoveryCommit-DQA_wveK.js} +1 -1
- package/dist/public/sdk/{walletRecoveryRotate-BN3H8byw.js → walletRecoveryRotate-zvQThn37.js} +1 -1
- package/dist/public/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js +1 -0
- package/dist/public/sdk/walletSessionAuthorizationStore-DnUMtkev.js +1 -0
- package/dist/public/sdk/walletSessionFailure-C6TAQTZn.js +1 -0
- package/dist/public/sdk/warmSessionHydration-D8Vdro9n.js +1 -0
- package/dist/public/sdk/webauthnP256-_ajaNl90.js +1 -0
- package/dist/public/sdk/webauthnPromptCoordinator-9bVeHcTZ.js +1 -0
- package/dist/public/sdk/workers/device-linking-key.worker.js +12 -11
- package/dist/public/sdk/workers/ecdsa-derivation-client.worker.js +146 -48
- package/dist/public/sdk/workers/ecdsa-online-client.worker.js +7 -6
- package/dist/public/sdk/workers/ecdsa-presign-client.worker.js +7 -6
- package/dist/public/sdk/workers/email-otp.worker.js +17 -3
- package/dist/public/sdk/workers/passkey-mpc-export.worker.js +10 -0
- package/dist/public/sdk/workers/passkey-mpc-session.worker.js +2 -1
- package/dist/public/wallet-assets.manifest.json +228 -228
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/shared-ts/src/authorization/capabilityKinds.d.ts +14 -14
- package/dist/types/shared-ts/src/authorization/delegatedAuthority.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/ed25519ExportRoot.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/requestProof.d.ts +1 -1
- package/dist/types/shared-ts/src/device-linking/sourceContribution.d.ts +5 -5
- package/dist/types/shared-ts/src/passkey-custody/custodyEnvelope.d.ts +3 -3
- package/dist/types/shared-ts/src/passkey-custody/custodySecretBinding.d.ts +1 -1
- package/dist/types/shared-ts/src/tenant-root/tenantRootIdentity.d.ts +1 -1
- package/dist/types/shared-ts/src/tenant-root/tenantRootOperationRecord.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/base64.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/digestEncoding.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/digests.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/emailOtpDomain.d.ts +16 -16
- package/dist/types/shared-ts/src/utils/emailOtpRecoveryKey.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +10 -10
- package/dist/types/shared-ts/src/utils/routerAbEd25519Yao.d.ts +12 -11
- package/dist/types/shared-ts/src/utils/routerAbPublicKeyset.d.ts +3 -3
- package/dist/types/shared-ts/src/utils/routerAbTraceContext.d.ts +1 -1
- package/dist/types/shared-ts/src/utils/signerDomain.d.ts +15 -15
- package/dist/types/shared-ts/src/utils/signingSessionSeal.d.ts +11 -11
- package/dist/types/shared-ts/src/utils/walletSessionFailure.d.ts +8 -8
- package/dist/types/shared-ts/src/utils/webauthnDeviceInfo.d.ts +2 -2
- package/dist/types/shared-ts/src/utils/wireSchema.d.ts +1 -1
- package/dist/types/shared-ts/src/wallet-recovery/recoveryKeyId.d.ts +1 -1
- package/dist/types/wallet/build-paths.d.ts +73 -73
- package/dist/types/wallet/src/SeamsWeb/operations/authMethods/emailOtp/googleEmailOtpWalletAuthFlow.d.ts +3 -2
- package/dist/types/wallet/src/SeamsWeb/operations/devices/deviceLinkingResume.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/operations/devices/linkDeviceTargetActivation.d.ts +1 -1
- package/dist/types/wallet/src/SeamsWeb/operations/registration/pendingRegistrationRecovery.d.ts +3 -3
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationEd25519Yao.d.ts +4 -3
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationSignerSet.d.ts +5 -0
- package/dist/types/wallet/src/SeamsWeb/operations/registration/registrationTiming.d.ts +2 -2
- package/dist/types/wallet/src/SeamsWeb/publicApi/createPublicApi.d.ts +10 -1
- package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +4 -2
- package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +1 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +4 -4
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/createEmailOtpCommands.d.ts +3 -2
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.d.ts +0 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +4 -6
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.d.ts +35 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/recovery-code-input.d.ts +17 -0
- package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +3 -3
- package/dist/types/wallet/src/config.d.ts +8 -8
- package/dist/types/wallet/src/core/browser/walletIframe/events.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/linkedAuthoritySignerMaterial.d.ts +3 -3
- package/dist/types/wallet/src/core/indexedDB/pendingWalletRecoveryCommit.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/schemaNames.d.ts +181 -181
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaCapabilityManifestRecords.d.ts +8 -8
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/ecdsaClientPresignatures.d.ts +4 -4
- package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/walletSessionAuthorizationStore.d.ts +1 -1
- package/dist/types/wallet/src/core/indexedDB/walletCustodyEd25519MaterialRecord.d.ts +2 -2
- package/dist/types/wallet/src/core/indexedDB/walletDbName.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/chains/evm/evmAdapter.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/chains/evm/evmSigning.types.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/chains/tempo/tempoAdapter.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/shared/signingStateMachine.d.ts +27 -27
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/secp256k1.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signers/webauthnP256.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/flows/signEvmFamily/signingFlowRuntime.d.ts +17 -17
- package/dist/types/wallet/src/core/signingEngine/nonce/nonceTypes.d.ts +40 -40
- package/dist/types/wallet/src/core/signingEngine/session/material/walletSigningStateFailure.d.ts +4 -4
- package/dist/types/wallet/src/core/signingEngine/session/operationState/types.d.ts +8 -8
- package/dist/types/wallet/src/core/signingEngine/session/passkey/ed25519YaoLocalMaterial.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/session/persistence/sealedSessionRecords.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/channel/confirmCommon.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/stepUpConfirmation/types.d.ts +4 -4
- package/dist/types/wallet/src/core/signingEngine/threshold/ed25519/yaoClient.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/threshold/sessionPolicy.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/handlers/flows/adapters/adapters.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.d.ts +2 -3
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/CopyStatusIcon.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PadlockIcon.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyHaloLoading.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.d.ts +1 -2
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/SeamsWordmark.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReview.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionTree.d.ts +0 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/WalletLocale.d.ts +18 -0
- package/dist/types/wallet/src/core/signingEngine/webauthnAuth/credentials/helpers.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/SignerWorkerManager.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/deviceLinkingPorts.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaClientWorkerChannels.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/workerManager/ecdsaPresignPoolIdentity.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/validation.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTransport.d.ts +1 -0
- package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/ecdsaTargetShareHpke.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/device-linking-key/ordinaryMaterialState.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/crypto.d.ts +3 -3
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/materialParsing.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/payloadParsing.d.ts +2 -2
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +1 -1
- package/dist/types/wallet/src/core/signingEngine/workerManager/workers/workerErrorPayload.d.ts +2 -2
- package/dist/types/wallet/src/core/types/actionBuilders.d.ts +16 -2
- package/dist/types/wallet/src/core/types/amounts.d.ts +75 -0
- package/dist/types/wallet/src/core/types/amounts.typecheck.d.ts +2 -0
- package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +5 -5
- package/dist/types/wallet/src/core/types/seams.d.ts +3 -0
- package/dist/types/wallet/src/core/types/secure-confirm-worker.d.ts +1 -1
- package/dist/types/wallet/src/core/types/signer-worker.d.ts +7 -7
- package/dist/types/wallet/src/core/ui/locale.d.ts +5 -0
- package/dist/types/wallet/src/core/ui/messages.d.ts +8 -0
- package/dist/types/wallet/src/externalEvm/types.d.ts +1 -0
- package/dist/types/wallet/src/index.d.ts +5 -1
- package/dist/types/wallet/src/react/{hooks/useWallet.d.ts → boundWallet.d.ts} +8 -48
- package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonMock.d.ts +1 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonView.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/AccountsSection.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/AuthenticationMethodsModal.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/ExportKeysSection.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/LinkedDevicesModal.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/ProfileDropdown.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/WalletRegionSection.d.ts +3 -0
- package/dist/types/wallet/src/react/components/AccountMenuButton/WalletSettingsLayout.d.ts +4 -2
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/GlobeIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/HoverArrowIcon.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/KeyIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LaptopIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LinkIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/LockKeyholeIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MailIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/PlusIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/RecoveryCodesIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/ScanIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SlidersIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/SmartphoneIcon.d.ts +1 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/icons/TouchIcon.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/index.d.ts +0 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/types.d.ts +8 -8
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.d.ts +2 -1
- package/dist/types/wallet/src/react/components/ShowQRCode.d.ts +0 -1
- package/dist/types/wallet/src/react/components/VoiceAssistantCard.d.ts +0 -1
- package/dist/types/wallet/src/react/components/theme/design-tokens.d.ts +1 -0
- package/dist/types/wallet/src/react/context/WalletLocale.d.ts +16 -0
- package/dist/types/wallet/src/react/context/index.d.ts +2 -1
- package/dist/types/wallet/src/react/context/useSeamsContextValue.d.ts +2 -2
- package/dist/types/wallet/src/react/index.d.ts +3 -2
- package/dist/types/wallet/src/react/styles.d.ts +2 -0
- package/dist/types/wallet/src/react/transactionReview/boundCalls.d.ts +57 -57
- package/dist/types/wallet/src/react/types.d.ts +14 -1
- package/dist/types/wallet/src/theme/base-styles.d.ts +4 -4
- package/dist/workers/device-linking-key.worker.js +12 -11
- package/dist/workers/ecdsa-derivation-client.worker.js +146 -48
- package/dist/workers/ecdsa-online-client.worker.js +7 -6
- package/dist/workers/ecdsa-presign-client.worker.js +7 -6
- package/dist/workers/email-otp.worker.js +17 -3
- package/dist/workers/passkey-mpc-export.worker.js +10 -0
- package/dist/workers/passkey-mpc-session.worker.js +2 -1
- package/package.json +8 -6
- package/dist/esm/react/hooks/useWallet.js +0 -108
- package/dist/esm/sdk/ConfirmationDrawer-BFzQjd1P.js +0 -1
- package/dist/esm/sdk/NonceCoordinator-CDGnEgfI.js +0 -1
- package/dist/esm/sdk/adapters-DsAaBNNY.js +0 -2
- package/dist/esm/sdk/authorizationAdmission-CGinGhXH.js +0 -1
- package/dist/esm/sdk/challengeDelivery-CATQ4u6P.js +0 -1
- package/dist/esm/sdk/configBuilder-BMawmNpz.js +0 -1
- package/dist/esm/sdk/domainIds-BzkGsRqO.js +0 -1
- package/dist/esm/sdk/ecdsaCapabilityManifest-DX6TflEz.js +0 -1
- package/dist/esm/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js +0 -1
- package/dist/esm/sdk/export-viewer-host-CV-lSsQF.js +0 -1
- package/dist/esm/sdk/jsxRuntime.module-DKsgiFjd.js +0 -2
- package/dist/esm/sdk/localOnly-C5mSXb_D.js +0 -1
- package/dist/esm/sdk/mountExportPrivateKeySurface-CatAhYoG.js +0 -1
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js +0 -2
- package/dist/esm/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +0 -1
- package/dist/esm/sdk/presignaturePool-V10fZpG3.js +0 -1
- package/dist/esm/sdk/registration-yoF0o52H.js +0 -1
- package/dist/esm/sdk/routerAbNormalSigning-C4P2tDU-.js +0 -1
- package/dist/esm/sdk/runtime-auth--i_j8PP7.js +0 -1
- package/dist/esm/sdk/runtime-device-link-fpvaxYyR.js +0 -1
- package/dist/esm/sdk/runtime-ecdsa-tempo-AE5QTaXu.js +0 -1
- package/dist/esm/sdk/runtime-email-otp-Dl03QI-O.js +0 -1
- package/dist/esm/sdk/runtime-export-F9s12UcT.js +0 -1
- package/dist/esm/sdk/runtime-near-Bjrz1KYf.js +0 -1
- package/dist/esm/sdk/runtime-preferences-oLRSEqmz.js +0 -1
- package/dist/esm/sdk/runtime-recovery-DBBKvIIg.js +0 -1
- package/dist/esm/sdk/secp256k1-CKq7_HD-.js +0 -1
- package/dist/esm/sdk/sessionObservationRevision-CnEOLDbl.js +0 -1
- package/dist/esm/sdk/shared-D893jckQ.js +0 -6
- package/dist/esm/sdk/signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js +0 -1
- package/dist/esm/sdk/signNear-XGZBxc_g.js +0 -1
- package/dist/esm/sdk/signatureUses-BKAoDbQd.js +0 -1
- package/dist/esm/sdk/surface-measurement-reporter-DvVHPu_O.js +0 -1
- package/dist/esm/sdk/transactionReviewAdmission-CIvR4W5_.js +0 -1
- package/dist/esm/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +0 -1
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +0 -1
- package/dist/esm/sdk/walletSessionAuthorizationStatus-BL7j2TeM.js +0 -1
- package/dist/esm/sdk/walletSessionAuthorizationStore-DmYe-cDR.js +0 -1
- package/dist/esm/sdk/walletSessionFailure-YuhraC3P.js +0 -1
- package/dist/esm/sdk/warmSessionHydration-CsQpQVuy.js +0 -1
- package/dist/esm/sdk/webauthnP256-BwgxtG5N.js +0 -1
- package/dist/esm/sdk/webauthnPromptCoordinator-CwJeKiYq.js +0 -1
- package/dist/public/sdk/ConfirmationDrawer-BFzQjd1P.js +0 -1
- package/dist/public/sdk/NonceCoordinator-CDGnEgfI.js +0 -1
- package/dist/public/sdk/adapters-DsAaBNNY.js +0 -2
- package/dist/public/sdk/authorizationAdmission-CGinGhXH.js +0 -1
- package/dist/public/sdk/challengeDelivery-CATQ4u6P.js +0 -1
- package/dist/public/sdk/configBuilder-BMawmNpz.js +0 -1
- package/dist/public/sdk/domainIds-BzkGsRqO.js +0 -1
- package/dist/public/sdk/ecdsaCapabilityManifest-DX6TflEz.js +0 -1
- package/dist/public/sdk/ecdsaDerivationClientWasm-CpjnN4aK.js +0 -1
- package/dist/public/sdk/export-viewer-host-CV-lSsQF.js +0 -1
- package/dist/public/sdk/jsxRuntime.module-DKsgiFjd.js +0 -2
- package/dist/public/sdk/localOnly-C5mSXb_D.js +0 -1
- package/dist/public/sdk/mountExportPrivateKeySurface-CatAhYoG.js +0 -1
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-DlEb3uD7.js +0 -2
- package/dist/public/sdk/nearEd25519YaoMaterialActivation-Bo3IOTS-.js +0 -1
- package/dist/public/sdk/presignaturePool-V10fZpG3.js +0 -1
- package/dist/public/sdk/registration-yoF0o52H.js +0 -1
- package/dist/public/sdk/routerAbNormalSigning-C4P2tDU-.js +0 -1
- package/dist/public/sdk/runtime-auth--i_j8PP7.js +0 -1
- package/dist/public/sdk/runtime-device-link-fpvaxYyR.js +0 -1
- package/dist/public/sdk/runtime-ecdsa-tempo-AE5QTaXu.js +0 -1
- package/dist/public/sdk/runtime-email-otp-Dl03QI-O.js +0 -1
- package/dist/public/sdk/runtime-export-F9s12UcT.js +0 -1
- package/dist/public/sdk/runtime-near-Bjrz1KYf.js +0 -1
- package/dist/public/sdk/runtime-preferences-oLRSEqmz.js +0 -1
- package/dist/public/sdk/runtime-recovery-DBBKvIIg.js +0 -1
- package/dist/public/sdk/secp256k1-CKq7_HD-.js +0 -1
- package/dist/public/sdk/sessionObservationRevision-CnEOLDbl.js +0 -1
- package/dist/public/sdk/shared-D893jckQ.js +0 -6
- package/dist/public/sdk/signEvmFamilyWithUiConfirmForTempo-DGWmm9n7.js +0 -1
- package/dist/public/sdk/signNear-XGZBxc_g.js +0 -1
- package/dist/public/sdk/signatureUses-BKAoDbQd.js +0 -1
- package/dist/public/sdk/surface-measurement-reporter-DvVHPu_O.js +0 -1
- package/dist/public/sdk/transactionReviewAdmission-CIvR4W5_.js +0 -1
- package/dist/public/sdk/walletCustodyEcdsaContinuity-B4fTDL10.js +0 -1
- package/dist/public/sdk/walletRegistrationSetupPrewarm-B9kpnrbK.js +0 -1
- package/dist/public/sdk/walletSessionAuthorizationStatus-BL7j2TeM.js +0 -1
- package/dist/public/sdk/walletSessionAuthorizationStore-DmYe-cDR.js +0 -1
- package/dist/public/sdk/walletSessionFailure-YuhraC3P.js +0 -1
- package/dist/public/sdk/warmSessionHydration-CsQpQVuy.js +0 -1
- package/dist/public/sdk/webauthnP256-BwgxtG5N.js +0 -1
- package/dist/public/sdk/webauthnPromptCoordinator-CwJeKiYq.js +0 -1
- /package/dist/esm/sdk/{base64-DW79QA0h.js → base64-BmKR3UqU.js} +0 -0
- /package/dist/esm/sdk/{signingSessionSeal-DX41aXUL.js → signingSessionSeal-DqbjG8c8.js} +0 -0
- /package/dist/esm/sdk/{theme-BKaFqCAj.js → theme-os0Salmo.js} +0 -0
- /package/dist/public/sdk/{base64-DW79QA0h.js → base64-BmKR3UqU.js} +0 -0
- /package/dist/public/sdk/{signingSessionSeal-DX41aXUL.js → signingSessionSeal-DqbjG8c8.js} +0 -0
- /package/dist/public/sdk/{theme-BKaFqCAj.js → theme-os0Salmo.js} +0 -0
|
@@ -1,8 +1,10 @@
|
|
|
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 {
|
|
5
|
-
import {
|
|
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
10
|
import { accountDropdownIcon, backIcon, chevronIcon, fingerprintIcon, googleIcon, linkDeviceIcon, linkFailedIcon, mailIcon, passkeyRingIcon, recoveryIcon, rerollIcon } from "./icons.js";
|
|
@@ -12,457 +14,27 @@ 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 {
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
this.lastMethod = "passkey";
|
|
192
|
-
this.queueContentHeightSync = () => {
|
|
193
|
-
if (this.contentHeightFrame !== null) cancelAnimationFrame(this.contentHeightFrame);
|
|
194
|
-
this.contentHeightFrame = requestAnimationFrame(this.syncContentHeight);
|
|
195
|
-
};
|
|
196
|
-
this.syncContentHeight = () => {
|
|
197
|
-
this.contentHeightFrame = null;
|
|
198
|
-
const switcher = this.props.element.querySelector(".seams-content-switcher");
|
|
199
|
-
const sizer = this.props.element.querySelector(".seams-content-sizer");
|
|
200
|
-
if (!switcher || !sizer) return;
|
|
201
|
-
this.props.styles.setDynamicDeclarations(this.props.element.id + "-height", "#" + this.props.element.id + " .seams-content-switcher", { height: sizer.scrollHeight + "px" });
|
|
202
|
-
};
|
|
203
|
-
this.onKeydown = (event) => {
|
|
204
|
-
if (event.key === "Escape") {
|
|
205
|
-
event.preventDefault();
|
|
206
|
-
if (this.viewModel && recoveryNavigationLocked(this.viewModel)) return;
|
|
207
|
-
if (this.accountMenuOpen) {
|
|
208
|
-
this.closeAccountMenu();
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
this.emitIntent({
|
|
212
|
-
kind: "close",
|
|
213
|
-
reason: "escape"
|
|
214
|
-
});
|
|
215
|
-
return;
|
|
216
|
-
}
|
|
217
|
-
if (event.key !== "Tab") return;
|
|
218
|
-
const focusable = this.focusableElements();
|
|
219
|
-
if (focusable.length === 0) return;
|
|
220
|
-
const active = document.activeElement;
|
|
221
|
-
const activeIndex = focusable.indexOf(active instanceof HTMLElement ? active : focusable[0]);
|
|
222
|
-
if (event.shiftKey && activeIndex <= 0) {
|
|
223
|
-
event.preventDefault();
|
|
224
|
-
focusable[focusable.length - 1]?.focus();
|
|
225
|
-
} else if (!event.shiftKey && activeIndex === focusable.length - 1) {
|
|
226
|
-
event.preventDefault();
|
|
227
|
-
focusable[0]?.focus();
|
|
228
|
-
}
|
|
229
|
-
};
|
|
230
|
-
this.onBackClick = () => {
|
|
231
|
-
this.emitIntent({ kind: "back" });
|
|
232
|
-
};
|
|
233
|
-
this.onKeyDown = (event) => {
|
|
234
|
-
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
235
|
-
const viewModel = this.viewModel;
|
|
236
|
-
if (!viewModel || viewModel.kind !== "recovery" && !isAuthMenuLoadingStatus(viewModel.status)) return;
|
|
237
|
-
event.preventDefault();
|
|
238
|
-
event.stopPropagation();
|
|
239
|
-
if (recoveryNavigationLocked(viewModel)) return;
|
|
240
|
-
this.emitIntent({ kind: "back" });
|
|
241
|
-
};
|
|
242
|
-
this.onIntentSwitchClick = () => {
|
|
243
|
-
const viewModel = this.viewModel;
|
|
244
|
-
if (!viewModel) return;
|
|
245
|
-
this.emitIntent({
|
|
246
|
-
kind: "mode_selected",
|
|
247
|
-
mode: modeSwitchCopy(viewModel.mode).nextMode
|
|
248
|
-
});
|
|
249
|
-
};
|
|
250
|
-
this.onRegistrationReroll = () => {
|
|
251
|
-
this.emitIntent({ kind: "registration_reroll" });
|
|
252
|
-
};
|
|
253
|
-
this.onPasskeyNameInput = (event) => {
|
|
254
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
255
|
-
this.emitIntent({
|
|
256
|
-
kind: "passkey_name_changed",
|
|
257
|
-
passkeyName: event.currentTarget.value
|
|
258
|
-
});
|
|
259
|
-
};
|
|
260
|
-
this.onLoginAccountSelect = (event) => {
|
|
261
|
-
const option = event.currentTarget;
|
|
262
|
-
if (!(option instanceof HTMLButtonElement)) return;
|
|
263
|
-
const walletId = option.dataset.walletId;
|
|
264
|
-
const authMethod = option.dataset.authMethod;
|
|
265
|
-
const viewModel = this.viewModel;
|
|
266
|
-
if (!walletId || viewModel.kind !== "passkey" || viewModel.mode !== "login") return;
|
|
267
|
-
const selected = viewModel.accountOptions.find((account) => account.walletId === walletId && account.authMethod === authMethod);
|
|
268
|
-
const previous = selectedLoginAccount(viewModel);
|
|
269
|
-
if (!selected || !previous || this.accountMenuChoice) return;
|
|
270
|
-
const blink = blinkMenuItem(option);
|
|
271
|
-
if (!blink) return;
|
|
272
|
-
const choice = {
|
|
273
|
-
chosen: selected,
|
|
274
|
-
previous
|
|
275
|
-
};
|
|
276
|
-
this.accountMenuChoice = choice;
|
|
277
|
-
this.emitIntent({
|
|
278
|
-
kind: "login_account_selected",
|
|
279
|
-
walletId: selected.walletId,
|
|
280
|
-
authMethod: selected.authMethod
|
|
281
|
-
});
|
|
282
|
-
blink.then(() => {
|
|
283
|
-
if (this.accountMenuChoice === choice) this.closeAccountMenu();
|
|
284
|
-
});
|
|
285
|
-
};
|
|
286
|
-
this.onAccountMenuToggle = () => {
|
|
287
|
-
if (this.accountMenuOpen) this.closeAccountMenu();
|
|
288
|
-
else this.openAccountMenu();
|
|
289
|
-
};
|
|
290
|
-
this.onDocumentPointerDown = (event) => {
|
|
291
|
-
if (!this.accountMenuOpen || !(event.target instanceof Node)) return;
|
|
292
|
-
if (this.props.element.querySelector(".seams-account-menu")?.contains(event.target)) return;
|
|
293
|
-
this.closeAccountMenu();
|
|
294
|
-
};
|
|
295
|
-
this.onPrimaryClick = () => {
|
|
296
|
-
const viewModel = this.viewModel;
|
|
297
|
-
if (!viewModel || !isAuthMenuActionReady(viewModel)) return;
|
|
298
|
-
if (viewModel.kind === "link_device") return;
|
|
299
|
-
if (viewModel.kind === "google_otp_login") {
|
|
300
|
-
this.emitIntent({ kind: "google_otp_submit" });
|
|
301
|
-
return;
|
|
302
|
-
}
|
|
303
|
-
if (viewModel.kind === "google_registration") {
|
|
304
|
-
this.emitIntent({ kind: "google_registration_complete" });
|
|
305
|
-
return;
|
|
306
|
-
}
|
|
307
|
-
const intent = viewModel.mode === "register" ? {
|
|
308
|
-
kind: "submit",
|
|
309
|
-
mode: "register",
|
|
310
|
-
passkeyName: viewModel.passkeyName
|
|
311
|
-
} : {
|
|
312
|
-
kind: "submit",
|
|
313
|
-
mode: "login"
|
|
314
|
-
};
|
|
315
|
-
this.lastMethod = "passkey";
|
|
316
|
-
this.emitIntent(intent);
|
|
317
|
-
};
|
|
318
|
-
this.onGoogleOtpCodeInput = (event) => {
|
|
319
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
320
|
-
this.emitIntent({
|
|
321
|
-
kind: "google_otp_code_changed",
|
|
322
|
-
code: event.currentTarget.value
|
|
323
|
-
});
|
|
324
|
-
};
|
|
325
|
-
this.onGoogleOtpKeydown = (event) => {
|
|
326
|
-
if (event.key !== "Enter") return;
|
|
327
|
-
event.preventDefault();
|
|
328
|
-
this.emitIntent({ kind: "google_otp_submit" });
|
|
329
|
-
};
|
|
330
|
-
this.onGoogleOtpResend = () => {
|
|
331
|
-
this.emitIntent({ kind: "google_otp_resend" });
|
|
332
|
-
};
|
|
333
|
-
this.onGoogleRegistrationReroll = () => {
|
|
334
|
-
this.emitIntent({ kind: "google_registration_reroll" });
|
|
335
|
-
};
|
|
336
|
-
this.onGoogleClick = () => {
|
|
337
|
-
this.lastMethod = "google";
|
|
338
|
-
this.emitIntent({
|
|
339
|
-
kind: "external_auth",
|
|
340
|
-
provider: "google"
|
|
341
|
-
});
|
|
342
|
-
};
|
|
343
|
-
this.onNoticeRetry = () => {
|
|
344
|
-
if (this.lastMethod === "google" && isAuthMenuGoogleActionReady(this.viewModel)) this.onGoogleClick();
|
|
345
|
-
else this.onPrimaryClick();
|
|
346
|
-
};
|
|
347
|
-
this.onLinkDeviceOpen = () => {
|
|
348
|
-
this.emitIntent({ kind: "link_device_open" });
|
|
349
|
-
};
|
|
350
|
-
this.onRecoveryOpen = () => {
|
|
351
|
-
this.emitIntent({ kind: "recovery_open" });
|
|
352
|
-
};
|
|
353
|
-
this.onRecoveryCodeInput = (event) => {
|
|
354
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
355
|
-
if (this.viewModel.kind !== "recovery") return;
|
|
356
|
-
const input = event.currentTarget;
|
|
357
|
-
const raw = input.value;
|
|
358
|
-
const rejected = rejectedRecoveryCharacters(raw);
|
|
359
|
-
if (rejected.length > 0) this.showRecoveryRejection(rejected);
|
|
360
|
-
const caret = recoveryInputCharacters(raw.slice(0, input.selectionStart ?? raw.length)).length;
|
|
361
|
-
const code = recoveryInputCharacters(raw).slice(0, 32);
|
|
362
|
-
if (input.value !== code) {
|
|
363
|
-
input.value = code;
|
|
364
|
-
input.setSelectionRange(Math.min(caret, code.length), Math.min(caret, code.length));
|
|
365
|
-
}
|
|
366
|
-
this.syncRecoverySelection(input);
|
|
367
|
-
this.emitIntent({
|
|
368
|
-
kind: "recovery_code_changed",
|
|
369
|
-
recoveryCode: code
|
|
370
|
-
});
|
|
371
|
-
};
|
|
372
|
-
this.onRecoverySelectionMove = (event) => {
|
|
373
|
-
if (event.currentTarget instanceof HTMLInputElement) this.syncRecoverySelection(event.currentTarget);
|
|
374
|
-
};
|
|
375
|
-
this.onRecoveryCodeClick = (event) => {
|
|
376
|
-
const input = event.currentTarget;
|
|
377
|
-
if (!(input instanceof HTMLInputElement)) return;
|
|
378
|
-
if (input.selectionStart === input.selectionEnd) {
|
|
379
|
-
const caret = recoveryCaretAtPoint(this.props.element, event.clientX, event.clientY, input.value.length);
|
|
380
|
-
if (caret !== null) input.setSelectionRange(caret, caret);
|
|
381
|
-
}
|
|
382
|
-
this.syncRecoverySelection(input);
|
|
383
|
-
};
|
|
384
|
-
this.clearRecoveryRejection = () => {
|
|
385
|
-
this.recoveryRejectionTimer = null;
|
|
386
|
-
this.setState({ recoveryRejection: null });
|
|
387
|
-
};
|
|
388
|
-
this.endRecoveryArrival = () => {
|
|
389
|
-
this.recoveryArrivalTimer = null;
|
|
390
|
-
this.recoveryArrival = null;
|
|
391
|
-
};
|
|
392
|
-
this.onRecoveryCodeBlur = () => {
|
|
393
|
-
this.setState({ recoverySelection: null });
|
|
394
|
-
};
|
|
395
|
-
this.onRecoverySubmit = (event) => {
|
|
396
|
-
event.preventDefault();
|
|
397
|
-
this.emitIntent({ kind: "recovery_code_submit" });
|
|
398
|
-
};
|
|
399
|
-
this.onRecoveryPasskeySelected = () => {
|
|
400
|
-
this.emitIntent({ kind: "recovery_passkey_selected" });
|
|
401
|
-
};
|
|
402
|
-
this.onRecoveryGoogleSelected = () => {
|
|
403
|
-
this.emitIntent({ kind: "recovery_google_selected" });
|
|
404
|
-
};
|
|
405
|
-
this.onRecoveryGoogleOtpCodeInput = (event) => {
|
|
406
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
407
|
-
this.emitIntent({
|
|
408
|
-
kind: "recovery_google_otp_code_changed",
|
|
409
|
-
code: event.currentTarget.value
|
|
410
|
-
});
|
|
411
|
-
};
|
|
412
|
-
this.onRecoveryGoogleOtpKeydown = (event) => {
|
|
413
|
-
if (event.key !== "Enter") return;
|
|
414
|
-
event.preventDefault();
|
|
415
|
-
this.emitIntent({ kind: "recovery_google_otp_submit" });
|
|
416
|
-
};
|
|
417
|
-
this.onRecoveryGoogleOtpSubmit = () => {
|
|
418
|
-
this.emitIntent({ kind: "recovery_google_otp_submit" });
|
|
419
|
-
};
|
|
420
|
-
this.onRecoveryCreatePasskey = () => {
|
|
421
|
-
this.emitIntent({ kind: "recovery_create_passkey" });
|
|
422
|
-
};
|
|
423
|
-
this.onRecoverySignIn = () => {
|
|
424
|
-
this.emitIntent({ kind: "recovery_sign_in" });
|
|
425
|
-
};
|
|
426
|
-
this.onLinkDeviceCreatePasskey = () => {
|
|
427
|
-
this.emitIntent({ kind: "link_device_create_passkey" });
|
|
428
|
-
};
|
|
429
|
-
this.onLinkDeviceFactorChange = (event) => {
|
|
430
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
431
|
-
const targetFactor = event.currentTarget.value === "email_otp" ? { kind: "email_otp" } : { kind: "passkey_prf" };
|
|
432
|
-
this.emitIntent({
|
|
433
|
-
kind: "link_device_factor_selected",
|
|
434
|
-
targetFactor
|
|
435
|
-
});
|
|
436
|
-
};
|
|
437
|
-
this.onLinkDeviceTargetEmailInput = (event) => {
|
|
438
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
439
|
-
this.emitIntent({
|
|
440
|
-
kind: "link_device_target_email_changed",
|
|
441
|
-
emailAddress: event.currentTarget.value
|
|
442
|
-
});
|
|
443
|
-
};
|
|
444
|
-
this.onLinkDeviceStart = () => {
|
|
445
|
-
this.emitIntent({ kind: "link_device_start" });
|
|
446
|
-
};
|
|
447
|
-
this.onLinkDeviceEmailOtpCodeInput = (event) => {
|
|
448
|
-
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
449
|
-
this.emitIntent({
|
|
450
|
-
kind: "link_device_email_otp_code_changed",
|
|
451
|
-
code: event.currentTarget.value
|
|
452
|
-
});
|
|
453
|
-
};
|
|
454
|
-
this.onLinkDeviceEmailOtpKeydown = (event) => {
|
|
455
|
-
if (event.key !== "Enter") return;
|
|
456
|
-
event.preventDefault();
|
|
457
|
-
this.emitIntent({ kind: "link_device_email_otp_submit" });
|
|
458
|
-
};
|
|
459
|
-
this.onLinkDeviceEmailOtpResend = () => {
|
|
460
|
-
this.emitIntent({ kind: "link_device_email_otp_resend" });
|
|
461
|
-
};
|
|
462
|
-
this.onLinkDeviceEmailOtpSubmit = () => {
|
|
463
|
-
this.emitIntent({ kind: "link_device_email_otp_submit" });
|
|
464
|
-
};
|
|
465
|
-
}
|
|
19
|
+
static contextType = WalletLocaleContext;
|
|
20
|
+
state = {
|
|
21
|
+
accountMenu: "closed",
|
|
22
|
+
recoverySelection: null,
|
|
23
|
+
recoveryRejection: null
|
|
24
|
+
};
|
|
25
|
+
recoveryDrawnCode = "";
|
|
26
|
+
recoveryArrival = null;
|
|
27
|
+
recoveryArrivalTimer = null;
|
|
28
|
+
recoveryRejectionTimer = null;
|
|
29
|
+
accountMenuExitTimer = null;
|
|
30
|
+
accountMenuChoice = null;
|
|
31
|
+
previouslyFocusedElement = null;
|
|
32
|
+
shouldFocusInitialControl = true;
|
|
33
|
+
contentResizeObserver = null;
|
|
34
|
+
contentHeightFrame = null;
|
|
35
|
+
previousLinkDeviceStateKind = null;
|
|
36
|
+
previousRecoveryStage = null;
|
|
37
|
+
lastMethod = "passkey";
|
|
466
38
|
get viewModel() {
|
|
467
39
|
return this.props.viewModel;
|
|
468
40
|
}
|
|
@@ -557,6 +129,17 @@ var AuthMenuSurface = class extends Component {
|
|
|
557
129
|
this.contentResizeObserver.observe(sizer);
|
|
558
130
|
window.addEventListener("resize", this.queueContentHeightSync);
|
|
559
131
|
}
|
|
132
|
+
queueContentHeightSync = () => {
|
|
133
|
+
if (this.contentHeightFrame !== null) cancelAnimationFrame(this.contentHeightFrame);
|
|
134
|
+
this.contentHeightFrame = requestAnimationFrame(this.syncContentHeight);
|
|
135
|
+
};
|
|
136
|
+
syncContentHeight = () => {
|
|
137
|
+
this.contentHeightFrame = null;
|
|
138
|
+
const switcher = this.props.element.querySelector(".seams-content-switcher");
|
|
139
|
+
const sizer = this.props.element.querySelector(".seams-content-sizer");
|
|
140
|
+
if (!switcher || !sizer) return;
|
|
141
|
+
this.props.styles.setDynamicDeclarations(this.props.element.id + "-height", "#" + this.props.element.id + " .seams-content-switcher", { height: sizer.scrollHeight + "px" });
|
|
142
|
+
};
|
|
560
143
|
focusInitialControl() {
|
|
561
144
|
if (!this.props.element.isConnected || !this.shouldFocusInitialControl) return;
|
|
562
145
|
this.shouldFocusInitialControl = false;
|
|
@@ -570,9 +153,197 @@ var AuthMenuSurface = class extends Component {
|
|
|
570
153
|
if (!target?.isConnected) return;
|
|
571
154
|
target.focus();
|
|
572
155
|
}
|
|
156
|
+
onKeydown = (event) => {
|
|
157
|
+
if (event.key === "Escape") {
|
|
158
|
+
event.preventDefault();
|
|
159
|
+
if (this.viewModel && recoveryNavigationLocked(this.viewModel)) return;
|
|
160
|
+
if (this.accountMenuOpen) {
|
|
161
|
+
this.closeAccountMenu();
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
this.emitIntent({
|
|
165
|
+
kind: "close",
|
|
166
|
+
reason: "escape"
|
|
167
|
+
});
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (event.key !== "Tab") return;
|
|
171
|
+
const focusable = this.focusableElements();
|
|
172
|
+
if (focusable.length === 0) return;
|
|
173
|
+
const active = document.activeElement;
|
|
174
|
+
const activeIndex = focusable.indexOf(active instanceof HTMLElement ? active : focusable[0]);
|
|
175
|
+
if (event.shiftKey && activeIndex <= 0) {
|
|
176
|
+
event.preventDefault();
|
|
177
|
+
focusable[focusable.length - 1]?.focus();
|
|
178
|
+
} else if (!event.shiftKey && activeIndex === focusable.length - 1) {
|
|
179
|
+
event.preventDefault();
|
|
180
|
+
focusable[0]?.focus();
|
|
181
|
+
}
|
|
182
|
+
};
|
|
573
183
|
focusableElements() {
|
|
574
184
|
return Array.from(this.props.element.querySelectorAll("button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), a[href], [tabindex]:not([tabindex=\"-1\"])"));
|
|
575
185
|
}
|
|
186
|
+
onBackClick = () => {
|
|
187
|
+
this.emitIntent({ kind: "back" });
|
|
188
|
+
};
|
|
189
|
+
/**
|
|
190
|
+
* Escape backs out of the in-progress views the back arrow already serves.
|
|
191
|
+
* The host dialog is opened non-modally, so it never receives the UA's
|
|
192
|
+
* `cancel` event — without this the key does nothing while a ceremony is
|
|
193
|
+
* pending. Deliberately scoped to those views: from the menu itself Escape
|
|
194
|
+
* belongs to the embedding page, not to us.
|
|
195
|
+
*/
|
|
196
|
+
onKeyDown = (event) => {
|
|
197
|
+
if (event.key !== "Escape" || event.defaultPrevented) return;
|
|
198
|
+
const viewModel = this.viewModel;
|
|
199
|
+
if (!viewModel || viewModel.kind !== "recovery" && !isAuthMenuLoadingStatus(viewModel.status)) return;
|
|
200
|
+
event.preventDefault();
|
|
201
|
+
event.stopPropagation();
|
|
202
|
+
if (recoveryNavigationLocked(viewModel)) return;
|
|
203
|
+
this.emitIntent({ kind: "back" });
|
|
204
|
+
};
|
|
205
|
+
onIntentSwitchClick = () => {
|
|
206
|
+
const viewModel = this.viewModel;
|
|
207
|
+
if (!viewModel) return;
|
|
208
|
+
this.emitIntent({
|
|
209
|
+
kind: "mode_selected",
|
|
210
|
+
mode: modeSwitchCopy(viewModel.mode).nextMode
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
onRegistrationReroll = () => {
|
|
214
|
+
this.emitIntent({ kind: "registration_reroll" });
|
|
215
|
+
};
|
|
216
|
+
onPasskeyNameInput = (event) => {
|
|
217
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
218
|
+
this.emitIntent({
|
|
219
|
+
kind: "passkey_name_changed",
|
|
220
|
+
passkeyName: event.currentTarget.value
|
|
221
|
+
});
|
|
222
|
+
};
|
|
223
|
+
onLoginAccountSelect = (event) => {
|
|
224
|
+
const option = event.currentTarget;
|
|
225
|
+
if (!(option instanceof HTMLButtonElement)) return;
|
|
226
|
+
const walletId = option.dataset.walletId;
|
|
227
|
+
const authMethod = option.dataset.authMethod;
|
|
228
|
+
const viewModel = this.viewModel;
|
|
229
|
+
if (!walletId || viewModel.kind !== "passkey" || viewModel.mode !== "login") return;
|
|
230
|
+
const selected = viewModel.accountOptions.find((account) => account.walletId === walletId && account.authMethod === authMethod);
|
|
231
|
+
const previous = selectedLoginAccount(viewModel);
|
|
232
|
+
if (!selected || !previous || this.accountMenuChoice) return;
|
|
233
|
+
const blink = blinkMenuItem(option);
|
|
234
|
+
if (!blink) return;
|
|
235
|
+
const choice = {
|
|
236
|
+
chosen: selected,
|
|
237
|
+
previous
|
|
238
|
+
};
|
|
239
|
+
this.accountMenuChoice = choice;
|
|
240
|
+
this.emitIntent({
|
|
241
|
+
kind: "login_account_selected",
|
|
242
|
+
walletId: selected.walletId,
|
|
243
|
+
authMethod: selected.authMethod
|
|
244
|
+
});
|
|
245
|
+
blink.then(() => {
|
|
246
|
+
if (this.accountMenuChoice === choice) this.closeAccountMenu();
|
|
247
|
+
});
|
|
248
|
+
};
|
|
249
|
+
onAccountMenuToggle = () => {
|
|
250
|
+
if (this.accountMenuOpen) this.closeAccountMenu();
|
|
251
|
+
else this.openAccountMenu();
|
|
252
|
+
};
|
|
253
|
+
onDocumentPointerDown = (event) => {
|
|
254
|
+
if (!this.accountMenuOpen || !(event.target instanceof Node)) return;
|
|
255
|
+
if (this.props.element.querySelector(".seams-account-menu")?.contains(event.target)) return;
|
|
256
|
+
this.closeAccountMenu();
|
|
257
|
+
};
|
|
258
|
+
onPrimaryClick = () => {
|
|
259
|
+
const viewModel = this.viewModel;
|
|
260
|
+
if (!viewModel || !isAuthMenuActionReady(viewModel)) return;
|
|
261
|
+
if (viewModel.kind === "link_device") return;
|
|
262
|
+
if (viewModel.kind === "google_otp_login") {
|
|
263
|
+
this.emitIntent({ kind: "google_otp_submit" });
|
|
264
|
+
return;
|
|
265
|
+
}
|
|
266
|
+
if (viewModel.kind === "google_registration") {
|
|
267
|
+
this.emitIntent({ kind: "google_registration_complete" });
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
270
|
+
const intent = viewModel.mode === "register" ? {
|
|
271
|
+
kind: "submit",
|
|
272
|
+
mode: "register",
|
|
273
|
+
passkeyName: viewModel.passkeyName
|
|
274
|
+
} : {
|
|
275
|
+
kind: "submit",
|
|
276
|
+
mode: "login"
|
|
277
|
+
};
|
|
278
|
+
this.lastMethod = "passkey";
|
|
279
|
+
this.emitIntent(intent);
|
|
280
|
+
};
|
|
281
|
+
onGoogleOtpCodeInput = (event) => {
|
|
282
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
283
|
+
this.emitIntent({
|
|
284
|
+
kind: "google_otp_code_changed",
|
|
285
|
+
code: event.currentTarget.value
|
|
286
|
+
});
|
|
287
|
+
};
|
|
288
|
+
onGoogleOtpKeydown = (event) => {
|
|
289
|
+
if (event.key !== "Enter") return;
|
|
290
|
+
event.preventDefault();
|
|
291
|
+
this.emitIntent({ kind: "google_otp_submit" });
|
|
292
|
+
};
|
|
293
|
+
onGoogleOtpResend = () => {
|
|
294
|
+
this.emitIntent({ kind: "google_otp_resend" });
|
|
295
|
+
};
|
|
296
|
+
onGoogleRegistrationReroll = () => {
|
|
297
|
+
this.emitIntent({ kind: "google_registration_reroll" });
|
|
298
|
+
};
|
|
299
|
+
onGoogleClick = () => {
|
|
300
|
+
this.lastMethod = "google";
|
|
301
|
+
this.emitIntent({
|
|
302
|
+
kind: "external_auth",
|
|
303
|
+
provider: "google"
|
|
304
|
+
});
|
|
305
|
+
};
|
|
306
|
+
onNoticeRetry = () => {
|
|
307
|
+
if (this.lastMethod === "google" && isAuthMenuGoogleActionReady(this.viewModel)) this.onGoogleClick();
|
|
308
|
+
else this.onPrimaryClick();
|
|
309
|
+
};
|
|
310
|
+
onLinkDeviceOpen = () => {
|
|
311
|
+
this.emitIntent({ kind: "link_device_open" });
|
|
312
|
+
};
|
|
313
|
+
onRecoveryOpen = () => {
|
|
314
|
+
this.emitIntent({ kind: "recovery_open" });
|
|
315
|
+
};
|
|
316
|
+
onRecoveryCodeInput = (event) => {
|
|
317
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
318
|
+
if (this.viewModel.kind !== "recovery") return;
|
|
319
|
+
const input = event.currentTarget;
|
|
320
|
+
const raw = input.value;
|
|
321
|
+
const rejected = rejectedRecoveryCharacters(raw);
|
|
322
|
+
if (rejected.length > 0) this.showRecoveryRejection(rejected);
|
|
323
|
+
const caret = recoveryInputCharacters(raw.slice(0, input.selectionStart ?? raw.length)).length;
|
|
324
|
+
const code = recoveryInputCharacters(raw).slice(0, 32);
|
|
325
|
+
if (input.value !== code) {
|
|
326
|
+
input.value = code;
|
|
327
|
+
input.setSelectionRange(Math.min(caret, code.length), Math.min(caret, code.length));
|
|
328
|
+
}
|
|
329
|
+
this.syncRecoverySelection(input);
|
|
330
|
+
this.emitIntent({
|
|
331
|
+
kind: "recovery_code_changed",
|
|
332
|
+
recoveryCode: code
|
|
333
|
+
});
|
|
334
|
+
};
|
|
335
|
+
onRecoverySelectionMove = (event) => {
|
|
336
|
+
if (event.currentTarget instanceof HTMLInputElement) this.syncRecoverySelection(event.currentTarget);
|
|
337
|
+
};
|
|
338
|
+
onRecoveryCodeClick = (event) => {
|
|
339
|
+
const input = event.currentTarget;
|
|
340
|
+
if (!(input instanceof HTMLInputElement)) return;
|
|
341
|
+
if (input.selectionStart === input.selectionEnd) {
|
|
342
|
+
const caret = recoveryCaretAtPoint(this.props.element, event.clientX, event.clientY, input.value.length);
|
|
343
|
+
if (caret !== null) input.setSelectionRange(caret, caret);
|
|
344
|
+
}
|
|
345
|
+
this.syncRecoverySelection(input);
|
|
346
|
+
};
|
|
576
347
|
showRecoveryRejection(characters) {
|
|
577
348
|
const parity = this.state.recoveryRejection?.parity === 0 ? 1 : 0;
|
|
578
349
|
this.setState({ recoveryRejection: {
|
|
@@ -582,6 +353,10 @@ var AuthMenuSurface = class extends Component {
|
|
|
582
353
|
if (this.recoveryRejectionTimer !== null) clearTimeout(this.recoveryRejectionTimer);
|
|
583
354
|
this.recoveryRejectionTimer = setTimeout(this.clearRecoveryRejection, 2e3);
|
|
584
355
|
}
|
|
356
|
+
clearRecoveryRejection = () => {
|
|
357
|
+
this.recoveryRejectionTimer = null;
|
|
358
|
+
this.setState({ recoveryRejection: null });
|
|
359
|
+
};
|
|
585
360
|
recoveryCodeArrival(code) {
|
|
586
361
|
const drawn = this.recoveryDrawnCode;
|
|
587
362
|
if (code === drawn) return this.recoveryArrival;
|
|
@@ -597,6 +372,13 @@ var AuthMenuSurface = class extends Component {
|
|
|
597
372
|
this.recoveryArrivalTimer = setTimeout(this.endRecoveryArrival, 600);
|
|
598
373
|
return this.recoveryArrival;
|
|
599
374
|
}
|
|
375
|
+
endRecoveryArrival = () => {
|
|
376
|
+
this.recoveryArrivalTimer = null;
|
|
377
|
+
this.recoveryArrival = null;
|
|
378
|
+
};
|
|
379
|
+
onRecoveryCodeBlur = () => {
|
|
380
|
+
this.setState({ recoverySelection: null });
|
|
381
|
+
};
|
|
600
382
|
syncRecoverySelection(input) {
|
|
601
383
|
const length = input.value.length;
|
|
602
384
|
const start = Math.min(input.selectionStart ?? length, length);
|
|
@@ -608,6 +390,76 @@ var AuthMenuSurface = class extends Component {
|
|
|
608
390
|
end
|
|
609
391
|
} });
|
|
610
392
|
}
|
|
393
|
+
onRecoverySubmit = (event) => {
|
|
394
|
+
event.preventDefault();
|
|
395
|
+
this.emitIntent({ kind: "recovery_code_submit" });
|
|
396
|
+
};
|
|
397
|
+
onRecoveryPasskeySelected = () => {
|
|
398
|
+
this.emitIntent({ kind: "recovery_passkey_selected" });
|
|
399
|
+
};
|
|
400
|
+
onRecoveryGoogleSelected = () => {
|
|
401
|
+
this.emitIntent({ kind: "recovery_google_selected" });
|
|
402
|
+
};
|
|
403
|
+
onRecoveryGoogleOtpCodeInput = (event) => {
|
|
404
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
405
|
+
this.emitIntent({
|
|
406
|
+
kind: "recovery_google_otp_code_changed",
|
|
407
|
+
code: event.currentTarget.value
|
|
408
|
+
});
|
|
409
|
+
};
|
|
410
|
+
onRecoveryGoogleOtpKeydown = (event) => {
|
|
411
|
+
if (event.key !== "Enter") return;
|
|
412
|
+
event.preventDefault();
|
|
413
|
+
this.emitIntent({ kind: "recovery_google_otp_submit" });
|
|
414
|
+
};
|
|
415
|
+
onRecoveryGoogleOtpSubmit = () => {
|
|
416
|
+
this.emitIntent({ kind: "recovery_google_otp_submit" });
|
|
417
|
+
};
|
|
418
|
+
onRecoveryCreatePasskey = () => {
|
|
419
|
+
this.emitIntent({ kind: "recovery_create_passkey" });
|
|
420
|
+
};
|
|
421
|
+
onRecoverySignIn = () => {
|
|
422
|
+
this.emitIntent({ kind: "recovery_sign_in" });
|
|
423
|
+
};
|
|
424
|
+
onLinkDeviceCreatePasskey = () => {
|
|
425
|
+
this.emitIntent({ kind: "link_device_create_passkey" });
|
|
426
|
+
};
|
|
427
|
+
onLinkDeviceFactorChange = (event) => {
|
|
428
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
429
|
+
const targetFactor = event.currentTarget.value === "email_otp" ? { kind: "email_otp" } : { kind: "passkey_prf" };
|
|
430
|
+
this.emitIntent({
|
|
431
|
+
kind: "link_device_factor_selected",
|
|
432
|
+
targetFactor
|
|
433
|
+
});
|
|
434
|
+
};
|
|
435
|
+
onLinkDeviceTargetEmailInput = (event) => {
|
|
436
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
437
|
+
this.emitIntent({
|
|
438
|
+
kind: "link_device_target_email_changed",
|
|
439
|
+
emailAddress: event.currentTarget.value
|
|
440
|
+
});
|
|
441
|
+
};
|
|
442
|
+
onLinkDeviceStart = () => {
|
|
443
|
+
this.emitIntent({ kind: "link_device_start" });
|
|
444
|
+
};
|
|
445
|
+
onLinkDeviceEmailOtpCodeInput = (event) => {
|
|
446
|
+
if (!(event.currentTarget instanceof HTMLInputElement)) return;
|
|
447
|
+
this.emitIntent({
|
|
448
|
+
kind: "link_device_email_otp_code_changed",
|
|
449
|
+
code: event.currentTarget.value
|
|
450
|
+
});
|
|
451
|
+
};
|
|
452
|
+
onLinkDeviceEmailOtpKeydown = (event) => {
|
|
453
|
+
if (event.key !== "Enter") return;
|
|
454
|
+
event.preventDefault();
|
|
455
|
+
this.emitIntent({ kind: "link_device_email_otp_submit" });
|
|
456
|
+
};
|
|
457
|
+
onLinkDeviceEmailOtpResend = () => {
|
|
458
|
+
this.emitIntent({ kind: "link_device_email_otp_resend" });
|
|
459
|
+
};
|
|
460
|
+
onLinkDeviceEmailOtpSubmit = () => {
|
|
461
|
+
this.emitIntent({ kind: "link_device_email_otp_submit" });
|
|
462
|
+
};
|
|
611
463
|
emitIntent(intent) {
|
|
612
464
|
this.props.onIntent(intent);
|
|
613
465
|
}
|
|
@@ -646,7 +498,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
646
498
|
/* @__PURE__ */ jsx("button", {
|
|
647
499
|
class: `seams-back-button ${loading || linkDevice || otpPrompt || registrationPrompt || recovery ? "is-visible" : ""}`,
|
|
648
500
|
type: "button",
|
|
649
|
-
"aria-label": recoveryBackLabel(viewModel),
|
|
501
|
+
"aria-label": walletDisplayText(this.context, recoveryBackLabel(viewModel)),
|
|
650
502
|
"data-auth-menu-close": true,
|
|
651
503
|
disabled: recoveryNavigationLocked(viewModel),
|
|
652
504
|
onClick: this.onBackClick,
|
|
@@ -657,7 +509,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
657
509
|
role: "status",
|
|
658
510
|
"aria-live": "polite",
|
|
659
511
|
"aria-atomic": "true",
|
|
660
|
-
children: recoveryAnnouncement(viewModel)
|
|
512
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: recoveryAnnouncement(viewModel) })
|
|
661
513
|
}) : null,
|
|
662
514
|
/* @__PURE__ */ jsx("div", {
|
|
663
515
|
class: "seams-content-area",
|
|
@@ -700,16 +552,16 @@ var AuthMenuSurface = class extends Component {
|
|
|
700
552
|
children: [
|
|
701
553
|
eyebrow === viewModel.heading ? null : /* @__PURE__ */ jsx("div", {
|
|
702
554
|
class: "seams-menu-eyebrow",
|
|
703
|
-
children: eyebrow
|
|
555
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: eyebrow })
|
|
704
556
|
}),
|
|
705
557
|
/* @__PURE__ */ jsx("div", {
|
|
706
558
|
class: "seams-title",
|
|
707
559
|
id: AUTH_MENU_TITLE_ID,
|
|
708
|
-
children: viewModel.heading
|
|
560
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
|
|
709
561
|
}),
|
|
710
562
|
viewModel.subtitle ? /* @__PURE__ */ jsx("div", {
|
|
711
563
|
class: "seams-subhead",
|
|
712
|
-
children: viewModel.subtitle
|
|
564
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.subtitle })
|
|
713
565
|
}) : null
|
|
714
566
|
]
|
|
715
567
|
});
|
|
@@ -720,10 +572,10 @@ var AuthMenuSurface = class extends Component {
|
|
|
720
572
|
children: /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
721
573
|
class: "seams-title",
|
|
722
574
|
id: AUTH_MENU_TITLE_ID,
|
|
723
|
-
children: viewModel.heading
|
|
575
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
|
|
724
576
|
}), /* @__PURE__ */ jsx("div", {
|
|
725
577
|
class: "seams-subhead",
|
|
726
|
-
children: viewModel.subtitle
|
|
578
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.subtitle })
|
|
727
579
|
})] })
|
|
728
580
|
}) });
|
|
729
581
|
}
|
|
@@ -758,7 +610,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
758
610
|
class: "seams-account-menu-trigger",
|
|
759
611
|
type: "button",
|
|
760
612
|
"data-auth-menu-input": true,
|
|
761
|
-
"aria-label": savedAccountsTriggerLabel(selected),
|
|
613
|
+
"aria-label": walletDisplayText(this.context, savedAccountsTriggerLabel(selected)),
|
|
762
614
|
"aria-haspopup": "listbox",
|
|
763
615
|
"aria-expanded": this.accountMenuOpen ? "true" : "false",
|
|
764
616
|
"aria-controls": AUTH_MENU_ACCOUNT_LIST_ID,
|
|
@@ -777,7 +629,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
777
629
|
children: [/* @__PURE__ */ jsx("div", {
|
|
778
630
|
id: groupLabelId,
|
|
779
631
|
class: "seams-account-menu-group-label",
|
|
780
|
-
children: group.label
|
|
632
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: group.label })
|
|
781
633
|
}), group.accounts.map((account) => {
|
|
782
634
|
const isSelected = account.walletId === listSelected.walletId && account.authMethod === listSelected.authMethod;
|
|
783
635
|
const isChosen = !isSelected && account.walletId === choice?.chosen.walletId && account.authMethod === choice.chosen.authMethod;
|
|
@@ -787,7 +639,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
787
639
|
type: "button",
|
|
788
640
|
role: "option",
|
|
789
641
|
"aria-selected": isSelected ? "true" : "false",
|
|
790
|
-
title: secondaryText ? `${account.walletId} ${secondaryText}` : account.walletId,
|
|
642
|
+
title: walletDisplayText(this.context, secondaryText ? `${account.walletId} ${secondaryText}` : account.walletId),
|
|
791
643
|
"data-wallet-id": account.walletId,
|
|
792
644
|
"data-auth-method": account.authMethod,
|
|
793
645
|
onClick: this.onLoginAccountSelect,
|
|
@@ -801,7 +653,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
801
653
|
children: account.walletId
|
|
802
654
|
}), secondaryText ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
|
|
803
655
|
class: "seams-account-menu-account-secondary",
|
|
804
|
-
children: secondaryText
|
|
656
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: secondaryText })
|
|
805
657
|
}) }) : null]
|
|
806
658
|
})]
|
|
807
659
|
}) });
|
|
@@ -826,7 +678,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
826
678
|
"data-auth-menu-input": true,
|
|
827
679
|
type: "text",
|
|
828
680
|
autocomplete: "nickname",
|
|
829
|
-
placeholder: viewModel.passkeyNameLabel,
|
|
681
|
+
placeholder: walletDisplayText(this.context, viewModel.passkeyNameLabel),
|
|
830
682
|
value: viewModel.passkeyName,
|
|
831
683
|
readonly: viewModel.passkeyNameReadOnly,
|
|
832
684
|
disabled: isAuthMenuLoadingStatus(viewModel.status),
|
|
@@ -835,8 +687,8 @@ var AuthMenuSurface = class extends Component {
|
|
|
835
687
|
}), viewModel.passkeyNameReadOnly ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("button", {
|
|
836
688
|
class: "seams-input-action-trigger auth-menu-registration-reroll",
|
|
837
689
|
type: "button",
|
|
838
|
-
title: "Generate another name",
|
|
839
|
-
"aria-label": "Generate another name",
|
|
690
|
+
title: walletText(this.context, "Generate another name"),
|
|
691
|
+
"aria-label": walletText(this.context, "Generate another name"),
|
|
840
692
|
onClick: this.onRegistrationReroll,
|
|
841
693
|
disabled: !isAuthMenuReady(viewModel),
|
|
842
694
|
children: rerollIcon()
|
|
@@ -854,21 +706,21 @@ var AuthMenuSurface = class extends Component {
|
|
|
854
706
|
"data-auth-menu-primary": true,
|
|
855
707
|
disabled: !isAuthMenuActionReady(viewModel),
|
|
856
708
|
onClick: this.onPrimaryClick,
|
|
857
|
-
children: [fingerprintIcon(), /* @__PURE__ */ jsx("span", { children: passkeyButtonLabel(viewModel.mode) })]
|
|
709
|
+
children: [fingerprintIcon(), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { copy: passkeyButtonLabel(viewModel.mode) }) })]
|
|
858
710
|
}), googleEnabled ? /* @__PURE__ */ jsxs("button", {
|
|
859
711
|
class: "seams-auth-method-btn",
|
|
860
712
|
type: "button",
|
|
861
713
|
"data-auth-menu-provider": "google",
|
|
862
714
|
disabled: !isAuthMenuGoogleActionReady(viewModel),
|
|
863
715
|
onClick: this.onGoogleClick,
|
|
864
|
-
children: [googleIcon(), /* @__PURE__ */ jsx("span", { children: "Continue with Google" })]
|
|
716
|
+
children: [googleIcon(), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { message: "Continue with Google" }) })]
|
|
865
717
|
}) : null]
|
|
866
718
|
}) });
|
|
867
719
|
}
|
|
868
720
|
renderOtherOptions() {
|
|
869
721
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("div", {
|
|
870
722
|
class: "seams-menu-options-label",
|
|
871
|
-
children: "Other options"
|
|
723
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Other options" })
|
|
872
724
|
}), /* @__PURE__ */ jsxs("div", {
|
|
873
725
|
class: "seams-menu-options",
|
|
874
726
|
children: [/* @__PURE__ */ jsxs("button", {
|
|
@@ -882,7 +734,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
882
734
|
}),
|
|
883
735
|
/* @__PURE__ */ jsxs("span", {
|
|
884
736
|
class: "seams-menu-option-text",
|
|
885
|
-
children: ["Link this device
|
|
737
|
+
children: [/* @__PURE__ */ jsx(WalletText, { message: "Link this device" }), /* @__PURE__ */ jsx("small", { children: /* @__PURE__ */ jsx(WalletText, { message: "Scan a code with your other device" }) })]
|
|
886
738
|
}),
|
|
887
739
|
chevronIcon()
|
|
888
740
|
]
|
|
@@ -898,7 +750,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
898
750
|
}),
|
|
899
751
|
/* @__PURE__ */ jsxs("span", {
|
|
900
752
|
class: "seams-menu-option-text",
|
|
901
|
-
children: ["Recover wallet
|
|
753
|
+
children: [/* @__PURE__ */ jsx(WalletText, { message: "Recover wallet" }), /* @__PURE__ */ jsx("small", { children: /* @__PURE__ */ jsx(WalletText, { message: "Use your recovery code" }) })]
|
|
902
754
|
}),
|
|
903
755
|
chevronIcon()
|
|
904
756
|
]
|
|
@@ -920,7 +772,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
920
772
|
class: `seams-recovery-status ${feedbackIsError ? "seams-recovery-error" : ""}`,
|
|
921
773
|
"aria-hidden": feedbackIsError ? "false" : "true",
|
|
922
774
|
role: feedbackIsError ? "alert" : "status",
|
|
923
|
-
children: feedbackMessage
|
|
775
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: feedbackMessage })
|
|
924
776
|
}),
|
|
925
777
|
/* @__PURE__ */ jsxs("form", {
|
|
926
778
|
class: "seams-recovery-form",
|
|
@@ -934,7 +786,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
934
786
|
children: [/* @__PURE__ */ jsx("label", {
|
|
935
787
|
class: "seams-field-label",
|
|
936
788
|
for: "seams-recovery-code",
|
|
937
|
-
children: "Recovery code"
|
|
789
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Recovery code" })
|
|
938
790
|
}), /* @__PURE__ */ jsxs("span", {
|
|
939
791
|
id: "seams-recovery-code-count",
|
|
940
792
|
class: "seams-recovery-code-count",
|
|
@@ -977,7 +829,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
977
829
|
id: "seams-recovery-code-hint",
|
|
978
830
|
class: `seams-recovery-code-hint ${rejection ? "is-error" : ""}`,
|
|
979
831
|
"aria-live": "polite",
|
|
980
|
-
children: rejection ? `Recovery codes don’t use ${rejection.characters.join(", ")}.` : "You can paste the whole code."
|
|
832
|
+
children: rejection ? `Recovery codes don’t use ${rejection.characters.join(", ")}.` : /* @__PURE__ */ jsx(WalletText, { message: "You can paste the whole code." })
|
|
981
833
|
})
|
|
982
834
|
]
|
|
983
835
|
}), /* @__PURE__ */ jsx("button", {
|
|
@@ -985,7 +837,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
985
837
|
type: "submit",
|
|
986
838
|
"data-auth-menu-primary": true,
|
|
987
839
|
"data-recovery-continue": true,
|
|
988
|
-
children: "Continue"
|
|
840
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Continue" })
|
|
989
841
|
})]
|
|
990
842
|
})
|
|
991
843
|
] });
|
|
@@ -999,7 +851,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
999
851
|
/* @__PURE__ */ jsx("p", {
|
|
1000
852
|
class: `seams-recovery-status ${viewModel.status.kind === "recoverable" ? "seams-recovery-error" : ""}`,
|
|
1001
853
|
"aria-hidden": "true",
|
|
1002
|
-
children: statusMessage
|
|
854
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: statusMessage })
|
|
1003
855
|
}),
|
|
1004
856
|
/* @__PURE__ */ jsxs("div", {
|
|
1005
857
|
class: "seams-auth-methods seams-recovery-methods",
|
|
@@ -1013,7 +865,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1013
865
|
children: [busyTarget === "passkey" ? /* @__PURE__ */ jsx("span", {
|
|
1014
866
|
class: "seams-spinner",
|
|
1015
867
|
"aria-hidden": "true"
|
|
1016
|
-
}) : fingerprintIcon(), /* @__PURE__ */ jsx("span", { children: "Create a passkey" })]
|
|
868
|
+
}) : fingerprintIcon(), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { message: "Create a passkey" }) })]
|
|
1017
869
|
}), googleEnabled ? /* @__PURE__ */ jsxs("button", {
|
|
1018
870
|
class: "seams-auth-method-btn",
|
|
1019
871
|
type: "button",
|
|
@@ -1023,12 +875,12 @@ var AuthMenuSurface = class extends Component {
|
|
|
1023
875
|
children: [busyTarget === "google_email_otp" ? /* @__PURE__ */ jsx("span", {
|
|
1024
876
|
class: "seams-spinner",
|
|
1025
877
|
"aria-hidden": "true"
|
|
1026
|
-
}) : googleIcon(), /* @__PURE__ */ jsx("span", { children: "Continue with Google" })]
|
|
878
|
+
}) : googleIcon(), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { message: "Continue with Google" }) })]
|
|
1027
879
|
}) : null]
|
|
1028
880
|
}),
|
|
1029
881
|
/* @__PURE__ */ jsx("p", {
|
|
1030
882
|
class: "seams-recovery-method-note",
|
|
1031
|
-
children: "This adds a new sign-in method to your wallet."
|
|
883
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "This adds a new sign-in method to your wallet." })
|
|
1032
884
|
})
|
|
1033
885
|
] });
|
|
1034
886
|
}
|
|
@@ -1042,13 +894,13 @@ var AuthMenuSurface = class extends Component {
|
|
|
1042
894
|
children: [
|
|
1043
895
|
/* @__PURE__ */ jsx("p", {
|
|
1044
896
|
class: "seams-otp-description",
|
|
1045
|
-
children: deliveryMessage
|
|
897
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: deliveryMessage })
|
|
1046
898
|
}),
|
|
1047
899
|
renderDemoEmailCode(viewModel.delivery),
|
|
1048
900
|
/* @__PURE__ */ jsx("label", {
|
|
1049
901
|
class: "seams-field-label",
|
|
1050
902
|
for: "seams-recovery-google-otp",
|
|
1051
|
-
children: "Email code"
|
|
903
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Email code" })
|
|
1052
904
|
}),
|
|
1053
905
|
/* @__PURE__ */ jsxs("div", {
|
|
1054
906
|
class: "seams-otp-code-field",
|
|
@@ -1082,7 +934,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1082
934
|
id: "seams-recovery-google-otp-error",
|
|
1083
935
|
class: "seams-recovery-status seams-recovery-error",
|
|
1084
936
|
role: "alert",
|
|
1085
|
-
children: viewModel.status.message
|
|
937
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.status.message })
|
|
1086
938
|
}) }) : null,
|
|
1087
939
|
/* @__PURE__ */ jsx("button", {
|
|
1088
940
|
class: "seams-link-device-btn seams-link-device-btn-primary",
|
|
@@ -1090,7 +942,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1090
942
|
"data-auth-menu-primary": true,
|
|
1091
943
|
disabled: !canSubmit,
|
|
1092
944
|
onClick: this.onRecoveryGoogleOtpSubmit,
|
|
1093
|
-
children: "Verify email code"
|
|
945
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Verify email code" })
|
|
1094
946
|
})
|
|
1095
947
|
]
|
|
1096
948
|
})] });
|
|
@@ -1104,13 +956,13 @@ var AuthMenuSurface = class extends Component {
|
|
|
1104
956
|
class: "seams-recovery-confirmation",
|
|
1105
957
|
children: [message === null ? null : /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("p", {
|
|
1106
958
|
class: "seams-recovery-status",
|
|
1107
|
-
children: message
|
|
959
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: message })
|
|
1108
960
|
}) }), /* @__PURE__ */ jsxs("button", {
|
|
1109
961
|
class: "seams-link-device-btn seams-link-device-btn-primary",
|
|
1110
962
|
type: "button",
|
|
1111
963
|
"data-auth-menu-primary": true,
|
|
1112
964
|
onClick: action,
|
|
1113
|
-
children: [googleTarget && !finalizationRetry ? googleIcon() : null, signIn ? googleTarget ? "Unlock with Google" : "Unlock with new passkey" : finalizationRetry ? "Retry finalization" : googleTarget ? "Continue with Google" : "Create new passkey"]
|
|
965
|
+
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" })]
|
|
1114
966
|
})]
|
|
1115
967
|
})] });
|
|
1116
968
|
}
|
|
@@ -1118,11 +970,11 @@ var AuthMenuSurface = class extends Component {
|
|
|
1118
970
|
const copy = modeSwitchCopy(viewModel.mode);
|
|
1119
971
|
return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsxs("div", {
|
|
1120
972
|
class: "seams-auth-intent-switch",
|
|
1121
|
-
children: [/* @__PURE__ */ jsx("span", { children: copy.prompt }), /* @__PURE__ */ jsx("button", {
|
|
973
|
+
children: [/* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { copy: copy.prompt }) }), /* @__PURE__ */ jsx("button", {
|
|
1122
974
|
type: "button",
|
|
1123
975
|
"data-auth-menu-mode": copy.nextMode,
|
|
1124
976
|
onClick: this.onIntentSwitchClick,
|
|
1125
|
-
children: copy.action
|
|
977
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: copy.action })
|
|
1126
978
|
})]
|
|
1127
979
|
}) });
|
|
1128
980
|
}
|
|
@@ -1139,7 +991,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1139
991
|
prompt ? /* @__PURE__ */ jsx("span", {
|
|
1140
992
|
class: "seams-passkey-prompt",
|
|
1141
993
|
role: "img",
|
|
1142
|
-
"aria-label": prompt.label,
|
|
994
|
+
"aria-label": walletDisplayText(this.context, prompt.label),
|
|
1143
995
|
children: passkeyRingIcon()
|
|
1144
996
|
}) : null,
|
|
1145
997
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -1147,20 +999,20 @@ var AuthMenuSurface = class extends Component {
|
|
|
1147
999
|
children: [
|
|
1148
1000
|
/* @__PURE__ */ jsx("span", {
|
|
1149
1001
|
class: "seams-waiting-text",
|
|
1150
|
-
children: waitingText
|
|
1002
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: waitingText })
|
|
1151
1003
|
}),
|
|
1152
1004
|
prompt ? /* @__PURE__ */ jsx("span", {
|
|
1153
1005
|
class: "seams-passkey-instruction",
|
|
1154
|
-
children: prompt.instruction
|
|
1006
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: prompt.instruction })
|
|
1155
1007
|
}) : null,
|
|
1156
1008
|
viewModel.showProgress && status.detail && status.detail !== waitingText ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
|
|
1157
1009
|
class: "seams-waiting-sdk-events",
|
|
1158
|
-
children: status.detail
|
|
1010
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: status.detail })
|
|
1159
1011
|
}) }) : null
|
|
1160
1012
|
]
|
|
1161
1013
|
}),
|
|
1162
1014
|
prompt ? null : /* @__PURE__ */ jsx("div", {
|
|
1163
|
-
"aria-label": "Loading",
|
|
1015
|
+
"aria-label": walletText(this.context, "Loading"),
|
|
1164
1016
|
class: "seams-spinner"
|
|
1165
1017
|
})
|
|
1166
1018
|
]
|
|
@@ -1214,18 +1066,18 @@ var AuthMenuSurface = class extends Component {
|
|
|
1214
1066
|
children: /* @__PURE__ */ jsx("h2", {
|
|
1215
1067
|
class: "qr-title",
|
|
1216
1068
|
id: AUTH_MENU_TITLE_ID,
|
|
1217
|
-
children: viewModel.heading
|
|
1069
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
|
|
1218
1070
|
})
|
|
1219
1071
|
}),
|
|
1220
1072
|
/* @__PURE__ */ jsx("div", {
|
|
1221
1073
|
class: "qr-instruction",
|
|
1222
|
-
children: ready ? viewModel.subtitle : "Preparing a one-time code for your other device."
|
|
1074
|
+
children: ready ? /* @__PURE__ */ jsx(WalletText, { copy: viewModel.subtitle }) : /* @__PURE__ */ jsx(WalletText, { message: "Preparing a one-time code for your other device." })
|
|
1223
1075
|
}),
|
|
1224
1076
|
/* @__PURE__ */ jsxs("div", {
|
|
1225
1077
|
class: "qr-status",
|
|
1226
1078
|
role: "status",
|
|
1227
1079
|
"aria-live": "polite",
|
|
1228
|
-
children: [ready ? linkDevice.message : "Generating QR code", /* @__PURE__ */ jsx("span", { class: "animated-ellipsis" })]
|
|
1080
|
+
children: [ready ? /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.message }) : /* @__PURE__ */ jsx(WalletText, { message: "Generating QR code" }), /* @__PURE__ */ jsx("span", { class: "animated-ellipsis" })]
|
|
1229
1081
|
})
|
|
1230
1082
|
]
|
|
1231
1083
|
})
|
|
@@ -1243,18 +1095,18 @@ var AuthMenuSurface = class extends Component {
|
|
|
1243
1095
|
/* @__PURE__ */ jsx("h2", {
|
|
1244
1096
|
class: "qr-title",
|
|
1245
1097
|
id: AUTH_MENU_TITLE_ID,
|
|
1246
|
-
children: "Match your other device"
|
|
1098
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Match your other device" })
|
|
1247
1099
|
}),
|
|
1248
1100
|
/* @__PURE__ */ jsx("p", {
|
|
1249
1101
|
class: "seams-link-device-confirmation-copy",
|
|
1250
|
-
children: "Choose the unlock method for Device 2. Email code sends a one-time code to the address you enter."
|
|
1102
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Choose the unlock method for Device 2. Email code sends a one-time code to the address you enter." })
|
|
1251
1103
|
}),
|
|
1252
1104
|
/* @__PURE__ */ jsxs("fieldset", {
|
|
1253
1105
|
class: "seams-link-device-factor-options",
|
|
1254
1106
|
children: [
|
|
1255
1107
|
/* @__PURE__ */ jsx("legend", {
|
|
1256
1108
|
class: "sr-only",
|
|
1257
|
-
children: "Wallet unlock method"
|
|
1109
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Wallet unlock method" })
|
|
1258
1110
|
}),
|
|
1259
1111
|
/* @__PURE__ */ jsxs("label", { children: [
|
|
1260
1112
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -1263,7 +1115,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1263
1115
|
}),
|
|
1264
1116
|
/* @__PURE__ */ jsx("span", {
|
|
1265
1117
|
class: "seams-auth-method-choice-label",
|
|
1266
|
-
children: "Passkey"
|
|
1118
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Passkey" })
|
|
1267
1119
|
}),
|
|
1268
1120
|
/* @__PURE__ */ jsx("input", {
|
|
1269
1121
|
type: "radio",
|
|
@@ -1280,7 +1132,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1280
1132
|
}),
|
|
1281
1133
|
/* @__PURE__ */ jsx("span", {
|
|
1282
1134
|
class: "seams-auth-method-choice-label",
|
|
1283
|
-
children: "Email code"
|
|
1135
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Email code" })
|
|
1284
1136
|
}),
|
|
1285
1137
|
/* @__PURE__ */ jsx("input", {
|
|
1286
1138
|
type: "radio",
|
|
@@ -1296,13 +1148,13 @@ var AuthMenuSurface = class extends Component {
|
|
|
1296
1148
|
class: "seams-link-device-target-email",
|
|
1297
1149
|
children: [/* @__PURE__ */ jsx("span", {
|
|
1298
1150
|
class: "seams-field-label",
|
|
1299
|
-
children: "Email address"
|
|
1151
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Email address" })
|
|
1300
1152
|
}), /* @__PURE__ */ jsx("input", {
|
|
1301
1153
|
type: "email",
|
|
1302
1154
|
name: "linked-device-target-email",
|
|
1303
1155
|
autocomplete: "email",
|
|
1304
1156
|
value: emailAddress,
|
|
1305
|
-
"aria-label": "Email address",
|
|
1157
|
+
"aria-label": walletText(this.context, "Email address"),
|
|
1306
1158
|
"aria-invalid": emailAddress.length > 0 && !canStart ? "true" : "false",
|
|
1307
1159
|
onInput: this.onLinkDeviceTargetEmailInput
|
|
1308
1160
|
})]
|
|
@@ -1310,7 +1162,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1310
1162
|
linkDevice.error ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("p", {
|
|
1311
1163
|
class: "seams-link-device-inline-error",
|
|
1312
1164
|
role: "alert",
|
|
1313
|
-
children: linkDevice.error
|
|
1165
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.error })
|
|
1314
1166
|
}) }) : null,
|
|
1315
1167
|
/* @__PURE__ */ jsx("button", {
|
|
1316
1168
|
class: "seams-link-device-btn seams-link-device-btn-primary",
|
|
@@ -1318,7 +1170,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1318
1170
|
"data-auth-menu-primary": true,
|
|
1319
1171
|
disabled: !canStart,
|
|
1320
1172
|
onClick: this.onLinkDeviceStart,
|
|
1321
|
-
children: "Continue"
|
|
1173
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Continue" })
|
|
1322
1174
|
})
|
|
1323
1175
|
]
|
|
1324
1176
|
}) });
|
|
@@ -1340,11 +1192,11 @@ var AuthMenuSurface = class extends Component {
|
|
|
1340
1192
|
/* @__PURE__ */ jsx("h2", {
|
|
1341
1193
|
class: "qr-title",
|
|
1342
1194
|
id: AUTH_MENU_TITLE_ID,
|
|
1343
|
-
children: view.heading
|
|
1195
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: view.heading })
|
|
1344
1196
|
}),
|
|
1345
1197
|
hint ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("div", {
|
|
1346
1198
|
class: "seams-link-device-email-chip",
|
|
1347
|
-
title: hint,
|
|
1199
|
+
title: walletDisplayText(this.context, hint),
|
|
1348
1200
|
children: /* @__PURE__ */ jsx("span", { children: hint })
|
|
1349
1201
|
}) }) : null,
|
|
1350
1202
|
/* @__PURE__ */ jsxs("p", {
|
|
@@ -1352,7 +1204,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1352
1204
|
id: "seams-linked-device-otp-status",
|
|
1353
1205
|
role: "status",
|
|
1354
1206
|
"aria-live": "polite",
|
|
1355
|
-
children: [view.status, view.pending ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
|
|
1207
|
+
children: [/* @__PURE__ */ jsx(WalletText, { copy: view.status }), view.pending ? /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("span", {
|
|
1356
1208
|
class: "animated-ellipsis",
|
|
1357
1209
|
"aria-hidden": "true"
|
|
1358
1210
|
}) }) : null]
|
|
@@ -1360,7 +1212,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1360
1212
|
showCodeField ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("label", {
|
|
1361
1213
|
class: "sr-only",
|
|
1362
1214
|
for: "seams-linked-device-email-otp",
|
|
1363
|
-
children: "Email code"
|
|
1215
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Email code" })
|
|
1364
1216
|
}), /* @__PURE__ */ jsxs("div", {
|
|
1365
1217
|
class: "seams-otp-code-field",
|
|
1366
1218
|
"data-disabled": busy ? "true" : "false",
|
|
@@ -1373,7 +1225,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1373
1225
|
autocomplete: "one-time-code",
|
|
1374
1226
|
pattern: "[0-9]*",
|
|
1375
1227
|
maxLength: 6,
|
|
1376
|
-
"aria-label": "Email verification code",
|
|
1228
|
+
"aria-label": walletText(this.context, "Email verification code"),
|
|
1377
1229
|
"aria-describedby": "seams-linked-device-otp-status",
|
|
1378
1230
|
"aria-invalid": activation.kind === "incorrect" ? "true" : "false",
|
|
1379
1231
|
value: linkDevice.otpCode,
|
|
@@ -1400,26 +1252,26 @@ var AuthMenuSurface = class extends Component {
|
|
|
1400
1252
|
type: "button",
|
|
1401
1253
|
"data-link-device-error-dismiss": true,
|
|
1402
1254
|
onClick: this.onBackClick,
|
|
1403
|
-
children: "Return to unlock wallet"
|
|
1255
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Return to unlock wallet" })
|
|
1404
1256
|
}) });
|
|
1405
1257
|
if (activation.kind === "expired") return /* @__PURE__ */ jsx(Fragment$1, { children: /* @__PURE__ */ jsx("button", {
|
|
1406
1258
|
class: "seams-link-device-btn seams-link-device-btn-primary",
|
|
1407
1259
|
type: "button",
|
|
1408
1260
|
onClick: this.onLinkDeviceEmailOtpResend,
|
|
1409
|
-
children: "Send a new code"
|
|
1261
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Send a new code" })
|
|
1410
1262
|
}) });
|
|
1411
1263
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx("button", {
|
|
1412
1264
|
class: "seams-link-device-btn seams-link-device-btn-primary",
|
|
1413
1265
|
type: "button",
|
|
1414
1266
|
disabled: !input.canSubmit,
|
|
1415
1267
|
onClick: this.onLinkDeviceEmailOtpSubmit,
|
|
1416
|
-
children: activation.kind === "submitting" ? "Verifying" : "Verify code"
|
|
1268
|
+
children: activation.kind === "submitting" ? /* @__PURE__ */ jsx(WalletText, { message: "Verifying" }) : /* @__PURE__ */ jsx(WalletText, { message: "Verify code" })
|
|
1417
1269
|
}), /* @__PURE__ */ jsx("button", {
|
|
1418
1270
|
class: "seams-otp-resend",
|
|
1419
1271
|
type: "button",
|
|
1420
1272
|
disabled: input.busy,
|
|
1421
1273
|
onClick: this.onLinkDeviceEmailOtpResend,
|
|
1422
|
-
children: "Send another code"
|
|
1274
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Send another code" })
|
|
1423
1275
|
})] });
|
|
1424
1276
|
}
|
|
1425
1277
|
renderLinkDeviceFailure(linkDevice) {
|
|
@@ -1427,7 +1279,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1427
1279
|
return this.renderLinkDeviceFailurePanel({
|
|
1428
1280
|
dismiss: "error",
|
|
1429
1281
|
title: activationFailed ? "Device linked" : "Couldn't link device",
|
|
1430
|
-
detail: activationFailed ? /* @__PURE__ */ jsxs(Fragment$1, { children: ["Unable to open the wallet. Go back and try again.
|
|
1282
|
+
detail: activationFailed ? /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(WalletText, { message: "Unable to open the wallet. Go back and try again." }), /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.message })] }) : linkDevice.message,
|
|
1431
1283
|
action: "Return to unlock wallet"
|
|
1432
1284
|
});
|
|
1433
1285
|
}
|
|
@@ -1442,12 +1294,12 @@ var AuthMenuSurface = class extends Component {
|
|
|
1442
1294
|
/* @__PURE__ */ jsx("h2", {
|
|
1443
1295
|
class: "qr-title",
|
|
1444
1296
|
id: AUTH_MENU_TITLE_ID,
|
|
1445
|
-
children: panel.title
|
|
1297
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: panel.title })
|
|
1446
1298
|
}),
|
|
1447
1299
|
/* @__PURE__ */ jsx("p", {
|
|
1448
1300
|
class: "seams-link-device-failure-detail",
|
|
1449
1301
|
role: "alert",
|
|
1450
|
-
children: panel.detail
|
|
1302
|
+
children: typeof panel.detail === "string" ? /* @__PURE__ */ jsx(WalletText, { copy: panel.detail }) : panel.detail
|
|
1451
1303
|
}),
|
|
1452
1304
|
/* @__PURE__ */ jsx("button", {
|
|
1453
1305
|
class: "seams-link-device-btn",
|
|
@@ -1455,7 +1307,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1455
1307
|
"data-auth-menu-primary": true,
|
|
1456
1308
|
[`data-link-device-${panel.dismiss}-dismiss`]: true,
|
|
1457
1309
|
onClick: this.onBackClick,
|
|
1458
|
-
children: panel.action
|
|
1310
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: panel.action })
|
|
1459
1311
|
})
|
|
1460
1312
|
]
|
|
1461
1313
|
}) });
|
|
@@ -1471,13 +1323,13 @@ var AuthMenuSurface = class extends Component {
|
|
|
1471
1323
|
/* @__PURE__ */ jsx("h2", {
|
|
1472
1324
|
class: "qr-title",
|
|
1473
1325
|
id: AUTH_MENU_TITLE_ID,
|
|
1474
|
-
children: "Opening linked wallet"
|
|
1326
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Opening linked wallet" })
|
|
1475
1327
|
}),
|
|
1476
1328
|
/* @__PURE__ */ jsx("p", {
|
|
1477
1329
|
class: "seams-link-device-confirmation-copy",
|
|
1478
1330
|
role: "status",
|
|
1479
1331
|
"aria-live": "polite",
|
|
1480
|
-
children: linkDevice.message
|
|
1332
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.message })
|
|
1481
1333
|
})
|
|
1482
1334
|
]
|
|
1483
1335
|
}) });
|
|
@@ -1492,7 +1344,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1492
1344
|
class: "qr-title",
|
|
1493
1345
|
id: AUTH_MENU_TITLE_ID,
|
|
1494
1346
|
"aria-live": "polite",
|
|
1495
|
-
children: linkDevice.message
|
|
1347
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: linkDevice.message })
|
|
1496
1348
|
}),
|
|
1497
1349
|
/* @__PURE__ */ jsx("button", {
|
|
1498
1350
|
class: "seams-link-device-btn seams-link-device-btn-primary",
|
|
@@ -1501,7 +1353,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1501
1353
|
"data-link-device-passkey-action": true,
|
|
1502
1354
|
disabled: creating,
|
|
1503
1355
|
onClick: this.onLinkDeviceCreatePasskey,
|
|
1504
|
-
children: creating ? "Waiting for passkey" : "Create passkey"
|
|
1356
|
+
children: creating ? /* @__PURE__ */ jsx(WalletText, { message: "Waiting for passkey" }) : /* @__PURE__ */ jsx(WalletText, { message: "Create passkey" })
|
|
1505
1357
|
})
|
|
1506
1358
|
]
|
|
1507
1359
|
}) });
|
|
@@ -1519,19 +1371,19 @@ var AuthMenuSurface = class extends Component {
|
|
|
1519
1371
|
/* @__PURE__ */ jsx("div", {
|
|
1520
1372
|
class: "seams-otp-title",
|
|
1521
1373
|
id: AUTH_MENU_TITLE_ID,
|
|
1522
|
-
children: viewModel.heading
|
|
1374
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
|
|
1523
1375
|
}),
|
|
1524
1376
|
/* @__PURE__ */ jsx("p", {
|
|
1525
1377
|
class: "seams-otp-description",
|
|
1526
|
-
children: deliveryMessage
|
|
1378
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: deliveryMessage })
|
|
1527
1379
|
}),
|
|
1528
1380
|
renderDemoEmailCode(viewModel.delivery),
|
|
1529
1381
|
/* @__PURE__ */ jsxs("div", {
|
|
1530
1382
|
class: "seams-otp-account",
|
|
1531
|
-
title: viewModel.walletId,
|
|
1383
|
+
title: walletDisplayText(this.context, viewModel.walletId),
|
|
1532
1384
|
children: [/* @__PURE__ */ jsx("span", {
|
|
1533
1385
|
class: "seams-otp-account-label",
|
|
1534
|
-
children: "Wallet"
|
|
1386
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Wallet" })
|
|
1535
1387
|
}), /* @__PURE__ */ jsx("span", {
|
|
1536
1388
|
class: "seams-otp-account-value",
|
|
1537
1389
|
children: viewModel.walletId
|
|
@@ -1542,7 +1394,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1542
1394
|
/* @__PURE__ */ jsx("label", {
|
|
1543
1395
|
class: "seams-field-label",
|
|
1544
1396
|
for: "seams-auth-menu-google-otp",
|
|
1545
|
-
children: "Email code"
|
|
1397
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Email code" })
|
|
1546
1398
|
}),
|
|
1547
1399
|
/* @__PURE__ */ jsxs("div", {
|
|
1548
1400
|
class: "seams-otp-code-field",
|
|
@@ -1570,7 +1422,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1570
1422
|
}),
|
|
1571
1423
|
/* @__PURE__ */ jsx("p", {
|
|
1572
1424
|
class: "seams-otp-helper",
|
|
1573
|
-
children: viewModel.prompt.helperText ?? ""
|
|
1425
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.prompt.helperText ?? "" })
|
|
1574
1426
|
}),
|
|
1575
1427
|
/* @__PURE__ */ jsx("button", {
|
|
1576
1428
|
class: "seams-auth-method-btn seams-auth-method-btn-primary",
|
|
@@ -1578,14 +1430,14 @@ var AuthMenuSurface = class extends Component {
|
|
|
1578
1430
|
"data-auth-menu-primary": true,
|
|
1579
1431
|
disabled: !isAuthMenuActionReady(viewModel),
|
|
1580
1432
|
onClick: this.onPrimaryClick,
|
|
1581
|
-
children: viewModel.submitBusy ? "Unlocking…" : viewModel.ctaLabel
|
|
1433
|
+
children: viewModel.submitBusy ? /* @__PURE__ */ jsx(WalletText, { message: "Unlocking…" }) : /* @__PURE__ */ jsx(WalletText, { copy: viewModel.ctaLabel })
|
|
1582
1434
|
}),
|
|
1583
1435
|
/* @__PURE__ */ jsx("button", {
|
|
1584
1436
|
class: "seams-otp-resend auth-menu-google-resend",
|
|
1585
1437
|
type: "button",
|
|
1586
1438
|
disabled: viewModel.resendBusy || viewModel.submitBusy,
|
|
1587
1439
|
onClick: this.onGoogleOtpResend,
|
|
1588
|
-
children: viewModel.resendBusy ? "Sending…" : "Resend Code"
|
|
1440
|
+
children: viewModel.resendBusy ? /* @__PURE__ */ jsx(WalletText, { message: "Sending…" }) : /* @__PURE__ */ jsx(WalletText, { message: "Resend Code" })
|
|
1589
1441
|
})
|
|
1590
1442
|
]
|
|
1591
1443
|
}) });
|
|
@@ -1600,18 +1452,18 @@ var AuthMenuSurface = class extends Component {
|
|
|
1600
1452
|
/* @__PURE__ */ jsx("div", {
|
|
1601
1453
|
class: "seams-otp-title",
|
|
1602
1454
|
id: AUTH_MENU_TITLE_ID,
|
|
1603
|
-
children: viewModel.heading
|
|
1455
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.heading })
|
|
1604
1456
|
}),
|
|
1605
1457
|
/* @__PURE__ */ jsx("p", {
|
|
1606
1458
|
class: "seams-otp-description",
|
|
1607
|
-
children: viewModel.subtitle
|
|
1459
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: viewModel.subtitle })
|
|
1608
1460
|
}),
|
|
1609
1461
|
/* @__PURE__ */ jsxs("div", {
|
|
1610
1462
|
class: "seams-otp-account",
|
|
1611
|
-
title: viewModel.walletId,
|
|
1463
|
+
title: walletDisplayText(this.context, viewModel.walletId),
|
|
1612
1464
|
children: [/* @__PURE__ */ jsx("span", {
|
|
1613
1465
|
class: "seams-otp-account-label",
|
|
1614
|
-
children: "Wallet"
|
|
1466
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Wallet" })
|
|
1615
1467
|
}), /* @__PURE__ */ jsx("span", {
|
|
1616
1468
|
class: "seams-otp-account-value",
|
|
1617
1469
|
children: viewModel.walletId
|
|
@@ -1622,7 +1474,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1622
1474
|
type: "button",
|
|
1623
1475
|
disabled: viewModel.rerollBusy || viewModel.submitBusy,
|
|
1624
1476
|
onClick: this.onGoogleRegistrationReroll,
|
|
1625
|
-
children: viewModel.rerollBusy ? "Generating…" : "Generate another name"
|
|
1477
|
+
children: viewModel.rerollBusy ? /* @__PURE__ */ jsx(WalletText, { message: "Generating…" }) : /* @__PURE__ */ jsx(WalletText, { message: "Generate another name" })
|
|
1626
1478
|
})
|
|
1627
1479
|
]
|
|
1628
1480
|
}), /* @__PURE__ */ jsx("button", {
|
|
@@ -1631,7 +1483,7 @@ var AuthMenuSurface = class extends Component {
|
|
|
1631
1483
|
"data-auth-menu-primary": true,
|
|
1632
1484
|
disabled: !isAuthMenuActionReady(viewModel),
|
|
1633
1485
|
onClick: this.onPrimaryClick,
|
|
1634
|
-
children: viewModel.submitBusy ? "Creating..." : viewModel.ctaLabel
|
|
1486
|
+
children: viewModel.submitBusy ? /* @__PURE__ */ jsx(WalletText, { message: "Creating..." }) : /* @__PURE__ */ jsx(WalletText, { copy: viewModel.ctaLabel })
|
|
1635
1487
|
})]
|
|
1636
1488
|
}) });
|
|
1637
1489
|
}
|