@seams/wallet 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -5
- package/dist/.build-inputs.sha256 +1 -1
- package/dist/esm/SeamsWeb/index.js +1 -1
- package/dist/esm/SeamsWeb/walletIframe/client/inboundMessages.js +1 -1
- package/dist/esm/SeamsWeb/walletIframe/client/router.js +10 -4
- package/dist/esm/SeamsWeb/walletIframe/coordinator.js +23 -1
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +5 -4
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +121 -246
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +37 -1
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +4 -2
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.js +117 -0
- package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/recovery-code-input.js +60 -0
- package/dist/esm/SeamsWeb/walletIframe/shared/facadeBoundary.js +2 -0
- package/dist/esm/core/browser/walletIframe/events.js +6 -0
- package/dist/esm/core/config/configBuilder.js +2 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/appearance.js +27 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +155 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/export-viewer-host.js +209 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +7 -4
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +10 -6
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +9 -6
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +9 -6
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +7 -4
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +4 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +4 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +5 -4
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +319 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +10 -7
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +9 -5
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +28 -22
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +2 -1
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +51 -26
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +42 -27
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +25 -18
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +8 -5
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/WalletLocale.js +24 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +6 -4
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +92 -0
- package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +4 -2
- package/dist/esm/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +12 -0
- package/dist/esm/core/ui/locale.js +10 -0
- package/dist/esm/core/ui/messages.js +698 -0
- package/dist/esm/index.js +3 -2
- package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonMock.js +7 -3
- package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +7 -4
- 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.css +20 -0
- package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +4 -3
- package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +9 -3
- 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.css +1 -0
- package/dist/esm/react/components/AccountMenuButton/UserAccountButton.js +8 -4
- package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +22 -15
- package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +20 -16
- package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +15 -0
- 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/QRCodeScanner.js +28 -23
- 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 +8 -3
- package/dist/esm/react/styles/styles.css +36 -0
- package/dist/esm/sdk/ConfirmationDrawer-DCw0m-Iv.js +1 -0
- package/dist/{public/sdk/NonceCoordinator-DuDKN-B8.js → esm/sdk/NonceCoordinator-Dq-FZpBz.js} +1 -1
- package/dist/{public/sdk/accountLifecycle-D61FIpFS.js → esm/sdk/accountLifecycle-fLNUdjct.js} +1 -1
- package/dist/{public/sdk/activeWalletSession-Ba6X4CUN.js → esm/sdk/activeWalletSession-BpbnpU9s.js} +1 -1
- package/dist/esm/sdk/adapters-BNmcyf9K.js +2 -0
- package/dist/esm/sdk/appearance-token-vars-DxBm_cKA.js +2 -0
- package/dist/esm/sdk/{canonicalPrimitives-BOzRXzfv.js → canonicalPrimitives-BMP5yILS.js} +1 -1
- package/dist/esm/sdk/{challengeDelivery-FD9GHK1T.js → challengeDelivery-CG2J5Qxs.js} +1 -1
- package/dist/{public/sdk/clientSessionPersistenceState-BHRUSWMt.js → esm/sdk/clientSessionPersistenceState-BgO4P6CZ.js} +1 -1
- package/dist/esm/sdk/{commitQueue-DOIaR0Hr.js → commitQueue-BW7BpYyA.js} +1 -1
- package/dist/esm/sdk/configBuilder-BMNShuOu.js +1 -0
- package/dist/esm/sdk/{configHelpers-BXdl5Mxs.js → configHelpers-D50F_Txb.js} +1 -1
- package/dist/esm/sdk/{digestEncoding-CbEFYvlJ.js → digestEncoding-aC4dSf_x.js} +1 -1
- package/dist/esm/sdk/{display-CY_aJEn6.js → display-WtILOPQR.js} +1 -1
- package/dist/{public/sdk/ecdsaCapabilityManifest-DzA996y9.js → esm/sdk/ecdsaCapabilityManifest-DRc423SV.js} +1 -1
- package/dist/{public/sdk/ecdsaDerivationClientWasm-DQlajPpE.js → esm/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js} +1 -1
- package/dist/{public/sdk/ecdsaDerivationExport-DyugdheE.js → esm/sdk/ecdsaDerivationExport-DX89rq_u.js} +1 -1
- package/dist/esm/sdk/{ecdsaWalletRecords-C_v74n5X.js → ecdsaWalletRecords-CxxUt3fS.js} +1 -1
- package/dist/{public/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js → esm/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js} +1 -1
- package/dist/esm/sdk/{export-viewer-host-DsRaS0UH.js → export-viewer-host-DsdzagKK.js} +1 -1
- package/dist/{public/sdk/exportKeypairOperation-SJPysnE1.js → esm/sdk/exportKeypairOperation-BwW_E4Lt.js} +1 -1
- package/dist/esm/sdk/{helpers-D3CUEdHI.js → helpers-DS0bksx9.js} +1 -1
- package/dist/esm/sdk/{host-GPb_mSAQ.js → host-DMR4KDy9.js} +1 -1
- package/dist/esm/sdk/{intentDigest-CGLrsMgj.js → intentDigest-Rh5Mg8X7.js} +1 -1
- package/dist/esm/sdk/{lanes-DJKIHJBm.js → lanes-BzU7cv2T.js} +1 -1
- package/dist/esm/sdk/localOnly-DO191vDh.js +1 -0
- package/dist/esm/sdk/mountExportPrivateKeySurface-DQzFzhNu.js +1 -0
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-B1D0ovqx.js +2 -0
- package/dist/{public/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js → esm/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js} +1 -1
- package/dist/{public/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js → esm/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js} +1 -1
- package/dist/esm/sdk/{nonceLaneKeys-D18nlLjh.js → nonceLaneKeys-BzMBVxMU.js} +1 -1
- package/dist/esm/sdk/{operationFingerprint-Boa9DQ51.js → operationFingerprint-C4VX-0NI.js} +1 -1
- package/dist/{public/sdk/passkey-custody-CBSal3E9.js → esm/sdk/passkey-custody-Ba-NQ_4C.js} +1 -1
- package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-CvsrXbzn.js → pendingWalletRecoveryCodeBackup-DOeIn_Qj.js} +1 -1
- package/dist/{public/sdk/presignaturePool-CQNt13kE.js → esm/sdk/presignaturePool-BHoxnbOA.js} +1 -1
- package/dist/esm/sdk/{prfCache-DJ93rtDv.js → prfCache-BAFh1skJ.js} +1 -1
- package/dist/esm/sdk/{primitives-cC0a9GRC.js → primitives-CTmDwMNc.js} +1 -1
- package/dist/esm/sdk/{recovery-entrypoint-nj7Zo3CR.js → recovery-entrypoint-DWghFZrZ.js} +1 -1
- package/dist/esm/sdk/{registration-49OGU_GZ.js → registration-DknFwoqn.js} +1 -1
- package/dist/esm/sdk/{registration-C7tywPXF.js → registration-sQndIWRF.js} +1 -1
- package/dist/esm/sdk/{registrationAccounts-9GFI0Ger.js → registrationAccounts-CD1u1ZqZ.js} +1 -1
- package/dist/esm/sdk/{registrationIds-Br-zI4_5.js → registrationIds-B1OpqRAt.js} +1 -1
- package/dist/{public/sdk/registrationIntent-PqmcTEE3.js → esm/sdk/registrationIntent-D4YDjf2U.js} +1 -1
- package/dist/esm/sdk/{requireStepUpAuth-C4PGTly-.js → requireStepUpAuth-CnSCFSOZ.js} +1 -1
- package/dist/{public/sdk/routerAbNormalSigning-xxATTIh5.js → esm/sdk/routerAbNormalSigning-BV1t27aB.js} +1 -1
- package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/esm/sdk/runtime-auth-BxG-J-BB.js +1 -0
- package/dist/esm/sdk/runtime-device-link-Dn_5hPCq.js +1 -0
- package/dist/esm/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js +1 -0
- package/dist/esm/sdk/runtime-email-otp-CPqTCH8Q.js +1 -0
- package/dist/esm/sdk/runtime-export-Brz53_oi.js +1 -0
- package/dist/esm/sdk/runtime-near-Da_xFUXx.js +1 -0
- package/dist/esm/sdk/runtime-preferences-riUZGaTs.js +1 -0
- package/dist/esm/sdk/runtime-recovery-CTj4nDAM.js +1 -0
- package/dist/esm/sdk/{runtime-recovery-codes-LR4mg7-k.js → runtime-recovery-codes-D8T9LQ7-.js} +1 -1
- package/dist/esm/sdk/{secp256k1-BldUPNQI.js → secp256k1-wOOHtPcK.js} +1 -1
- 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-hx7KVyeq.js +6 -0
- package/dist/esm/sdk/{signEvmFamily-C_RvEnDB.js → signEvmFamily-DT34Vtpa.js} +1 -1
- package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js → signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js} +1 -1
- package/dist/esm/sdk/{signEvmWithUiConfirm-CxXzcvj2.js → signEvmWithUiConfirm-D6nmJr_L.js} +1 -1
- package/dist/{public/sdk/signNear-Dno7NsP_.js → esm/sdk/signNear-B000QxBd.js} +1 -1
- package/dist/{public/sdk/signingFlow-DtugI_2z.js → esm/sdk/signingFlow-gl85GOW4.js} +1 -1
- package/dist/esm/sdk/{signingQueue-C1Pb07gm.js → signingQueue-gW7wmOuL.js} +1 -1
- package/dist/esm/sdk/{singletons-DxIyVhNb.js → singletons-CAsc9LvA.js} +1 -1
- package/dist/{public/sdk/thresholdEcdsa-murTq-xz.js → esm/sdk/thresholdEcdsa-Ci7yz395.js} +1 -1
- package/dist/{public/sdk/transactionState-XbZm9Zon.js → esm/sdk/transactionState-lB2qpkOm.js} +1 -1
- package/dist/esm/sdk/tx-confirm-ui.js +1799 -432
- 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/esm/sdk/{wallet-recovery-CVUalZ3p.js → wallet-recovery-DFaS3geI.js} +1 -1
- package/dist/esm/sdk/wallet-ui.css +1 -1
- package/dist/{public/sdk/walletAuthMethodRecord-Bv68Vq-g.js → esm/sdk/walletAuthMethodRecord-CWdqdY_s.js} +1 -1
- package/dist/{public/sdk/walletAuthority-v5wvv3IB.js → esm/sdk/walletAuthority-BY3kyKQ-.js} +1 -1
- package/dist/{public/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js → esm/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js} +1 -1
- package/dist/esm/sdk/{walletDbName-DRzPv5Ir.js → walletDbName-BxWApBQF.js} +1 -1
- package/dist/{public/sdk/walletOwnershipGeneration-pMmmJ6XA.js → esm/sdk/walletOwnershipGeneration-DSGfjuV2.js} +1 -1
- package/dist/esm/sdk/{walletRecoveryCommit-DvC6WlGz.js → walletRecoveryCommit-DQA_wveK.js} +1 -1
- package/dist/esm/sdk/{walletRecoveryRotate-Dd3prJpr.js → walletRecoveryRotate-zvQThn37.js} +1 -1
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +1 -0
- package/dist/{public/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js → esm/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js} +1 -1
- package/dist/{public/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js → esm/sdk/walletSessionAuthorizationStore-DnUMtkev.js} +1 -1
- package/dist/esm/sdk/warmSessionHydration-D8Vdro9n.js +1 -0
- package/dist/{public/sdk/webauthnP256-XgYu-Y6E.js → esm/sdk/webauthnP256-_ajaNl90.js} +1 -1
- package/dist/esm/sdk/{webauthnPromptCoordinator-D5sP8Q7e.js → webauthnPromptCoordinator-9bVeHcTZ.js} +1 -1
- package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/headers.manifest.json +1 -1
- package/dist/public/sdk/ConfirmationDrawer-DCw0m-Iv.js +1 -0
- package/dist/{esm/sdk/NonceCoordinator-DuDKN-B8.js → public/sdk/NonceCoordinator-Dq-FZpBz.js} +1 -1
- package/dist/{esm/sdk/accountLifecycle-D61FIpFS.js → public/sdk/accountLifecycle-fLNUdjct.js} +1 -1
- package/dist/{esm/sdk/activeWalletSession-Ba6X4CUN.js → public/sdk/activeWalletSession-BpbnpU9s.js} +1 -1
- package/dist/public/sdk/adapters-BNmcyf9K.js +2 -0
- package/dist/public/sdk/appearance-token-vars-DxBm_cKA.js +2 -0
- package/dist/public/sdk/{canonicalPrimitives-BOzRXzfv.js → canonicalPrimitives-BMP5yILS.js} +1 -1
- package/dist/public/sdk/{challengeDelivery-FD9GHK1T.js → challengeDelivery-CG2J5Qxs.js} +1 -1
- package/dist/{esm/sdk/clientSessionPersistenceState-BHRUSWMt.js → public/sdk/clientSessionPersistenceState-BgO4P6CZ.js} +1 -1
- package/dist/public/sdk/{commitQueue-DOIaR0Hr.js → commitQueue-BW7BpYyA.js} +1 -1
- package/dist/public/sdk/configBuilder-BMNShuOu.js +1 -0
- package/dist/public/sdk/{configHelpers-BXdl5Mxs.js → configHelpers-D50F_Txb.js} +1 -1
- package/dist/public/sdk/{digestEncoding-CbEFYvlJ.js → digestEncoding-aC4dSf_x.js} +1 -1
- package/dist/public/sdk/{display-CY_aJEn6.js → display-WtILOPQR.js} +1 -1
- package/dist/{esm/sdk/ecdsaCapabilityManifest-DzA996y9.js → public/sdk/ecdsaCapabilityManifest-DRc423SV.js} +1 -1
- package/dist/{esm/sdk/ecdsaDerivationClientWasm-DQlajPpE.js → public/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js} +1 -1
- package/dist/{esm/sdk/ecdsaDerivationExport-DyugdheE.js → public/sdk/ecdsaDerivationExport-DX89rq_u.js} +1 -1
- package/dist/public/sdk/{ecdsaWalletRecords-C_v74n5X.js → ecdsaWalletRecords-CxxUt3fS.js} +1 -1
- package/dist/{esm/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js → public/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js} +1 -1
- package/dist/public/sdk/{export-viewer-host-DsRaS0UH.js → export-viewer-host-DsdzagKK.js} +1 -1
- package/dist/{esm/sdk/exportKeypairOperation-SJPysnE1.js → public/sdk/exportKeypairOperation-BwW_E4Lt.js} +1 -1
- package/dist/public/sdk/{helpers-D3CUEdHI.js → helpers-DS0bksx9.js} +1 -1
- package/dist/public/sdk/{host-GPb_mSAQ.js → host-DMR4KDy9.js} +1 -1
- package/dist/public/sdk/{intentDigest-CGLrsMgj.js → intentDigest-Rh5Mg8X7.js} +1 -1
- package/dist/public/sdk/{lanes-DJKIHJBm.js → lanes-BzU7cv2T.js} +1 -1
- package/dist/public/sdk/localOnly-DO191vDh.js +1 -0
- package/dist/public/sdk/mountExportPrivateKeySurface-DQzFzhNu.js +1 -0
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-B1D0ovqx.js +2 -0
- package/dist/{esm/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js → public/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js} +1 -1
- package/dist/{esm/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js → public/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js} +1 -1
- package/dist/public/sdk/{nonceLaneKeys-D18nlLjh.js → nonceLaneKeys-BzMBVxMU.js} +1 -1
- package/dist/public/sdk/{operationFingerprint-Boa9DQ51.js → operationFingerprint-C4VX-0NI.js} +1 -1
- package/dist/{esm/sdk/passkey-custody-CBSal3E9.js → public/sdk/passkey-custody-Ba-NQ_4C.js} +1 -1
- package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-CvsrXbzn.js → pendingWalletRecoveryCodeBackup-DOeIn_Qj.js} +1 -1
- package/dist/{esm/sdk/presignaturePool-CQNt13kE.js → public/sdk/presignaturePool-BHoxnbOA.js} +1 -1
- package/dist/public/sdk/{prfCache-DJ93rtDv.js → prfCache-BAFh1skJ.js} +1 -1
- package/dist/public/sdk/{primitives-cC0a9GRC.js → primitives-CTmDwMNc.js} +1 -1
- package/dist/public/sdk/{recovery-entrypoint-nj7Zo3CR.js → recovery-entrypoint-DWghFZrZ.js} +1 -1
- package/dist/public/sdk/{registration-49OGU_GZ.js → registration-DknFwoqn.js} +1 -1
- package/dist/public/sdk/{registration-C7tywPXF.js → registration-sQndIWRF.js} +1 -1
- package/dist/public/sdk/{registrationAccounts-9GFI0Ger.js → registrationAccounts-CD1u1ZqZ.js} +1 -1
- package/dist/public/sdk/{registrationIds-Br-zI4_5.js → registrationIds-B1OpqRAt.js} +1 -1
- package/dist/{esm/sdk/registrationIntent-PqmcTEE3.js → public/sdk/registrationIntent-D4YDjf2U.js} +1 -1
- package/dist/public/sdk/{requireStepUpAuth-C4PGTly-.js → requireStepUpAuth-CnSCFSOZ.js} +1 -1
- package/dist/{esm/sdk/routerAbNormalSigning-xxATTIh5.js → public/sdk/routerAbNormalSigning-BV1t27aB.js} +1 -1
- package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/runtime-auth-BxG-J-BB.js +1 -0
- package/dist/public/sdk/runtime-device-link-Dn_5hPCq.js +1 -0
- package/dist/public/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js +1 -0
- package/dist/public/sdk/runtime-email-otp-CPqTCH8Q.js +1 -0
- package/dist/public/sdk/runtime-export-Brz53_oi.js +1 -0
- package/dist/public/sdk/runtime-near-Da_xFUXx.js +1 -0
- package/dist/public/sdk/runtime-preferences-riUZGaTs.js +1 -0
- package/dist/public/sdk/runtime-recovery-CTj4nDAM.js +1 -0
- package/dist/public/sdk/{runtime-recovery-codes-LR4mg7-k.js → runtime-recovery-codes-D8T9LQ7-.js} +1 -1
- package/dist/public/sdk/{secp256k1-BldUPNQI.js → secp256k1-wOOHtPcK.js} +1 -1
- 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-hx7KVyeq.js +6 -0
- package/dist/public/sdk/{signEvmFamily-C_RvEnDB.js → signEvmFamily-DT34Vtpa.js} +1 -1
- package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js → signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js} +1 -1
- package/dist/public/sdk/{signEvmWithUiConfirm-CxXzcvj2.js → signEvmWithUiConfirm-D6nmJr_L.js} +1 -1
- package/dist/{esm/sdk/signNear-Dno7NsP_.js → public/sdk/signNear-B000QxBd.js} +1 -1
- package/dist/{esm/sdk/signingFlow-DtugI_2z.js → public/sdk/signingFlow-gl85GOW4.js} +1 -1
- package/dist/public/sdk/{signingQueue-C1Pb07gm.js → signingQueue-gW7wmOuL.js} +1 -1
- package/dist/public/sdk/{singletons-DxIyVhNb.js → singletons-CAsc9LvA.js} +1 -1
- package/dist/{esm/sdk/thresholdEcdsa-murTq-xz.js → public/sdk/thresholdEcdsa-Ci7yz395.js} +1 -1
- package/dist/{esm/sdk/transactionState-XbZm9Zon.js → public/sdk/transactionState-lB2qpkOm.js} +1 -1
- package/dist/public/sdk/tx-confirm-ui.js +1799 -432
- 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/public/sdk/{wallet-recovery-CVUalZ3p.js → wallet-recovery-DFaS3geI.js} +1 -1
- package/dist/public/sdk/wallet-ui.css +1 -1
- package/dist/{esm/sdk/walletAuthMethodRecord-Bv68Vq-g.js → public/sdk/walletAuthMethodRecord-CWdqdY_s.js} +1 -1
- package/dist/{esm/sdk/walletAuthority-v5wvv3IB.js → public/sdk/walletAuthority-BY3kyKQ-.js} +1 -1
- package/dist/{esm/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js → public/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js} +1 -1
- package/dist/public/sdk/{walletDbName-DRzPv5Ir.js → walletDbName-BxWApBQF.js} +1 -1
- package/dist/{esm/sdk/walletOwnershipGeneration-pMmmJ6XA.js → public/sdk/walletOwnershipGeneration-DSGfjuV2.js} +1 -1
- package/dist/public/sdk/{walletRecoveryCommit-DvC6WlGz.js → walletRecoveryCommit-DQA_wveK.js} +1 -1
- package/dist/public/sdk/{walletRecoveryRotate-Dd3prJpr.js → walletRecoveryRotate-zvQThn37.js} +1 -1
- package/dist/public/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +1 -0
- package/dist/{esm/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js → public/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js} +1 -1
- package/dist/{esm/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js → public/sdk/walletSessionAuthorizationStore-DnUMtkev.js} +1 -1
- package/dist/public/sdk/warmSessionHydration-D8Vdro9n.js +1 -0
- package/dist/{esm/sdk/webauthnP256-XgYu-Y6E.js → public/sdk/webauthnP256-_ajaNl90.js} +1 -1
- package/dist/public/sdk/{webauthnPromptCoordinator-D5sP8Q7e.js → webauthnPromptCoordinator-9bVeHcTZ.js} +1 -1
- package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/dist/public/wallet-assets.manifest.json +192 -192
- package/dist/public/wallet-service/index.html +4 -4
- package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +2 -1
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +20 -3
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +3 -0
- 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 +5 -6
- package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +2 -0
- 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/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.d.ts +0 -1
- 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/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/PasskeyRegistrationContent.d.ts +3 -1
- package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.d.ts +0 -1
- 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/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/types/seams.d.ts +3 -0
- 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/index.d.ts +3 -1
- package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonMock.d.ts +1 -0
- 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 -1
- package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.d.ts +2 -1
- package/dist/types/wallet/src/react/context/WalletLocale.d.ts +16 -0
- package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
- package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
- package/package.json +1 -1
- package/dist/esm/sdk/ConfirmationDrawer-CXVNmfTy.js +0 -1
- package/dist/esm/sdk/adapters-CTlDBRJy.js +0 -2
- package/dist/esm/sdk/configBuilder-BMawmNpz.js +0 -1
- package/dist/esm/sdk/jsxRuntime.module-DKsgiFjd.js +0 -2
- package/dist/esm/sdk/localOnly-CPmpw381.js +0 -1
- package/dist/esm/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +0 -1
- package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +0 -2
- package/dist/esm/sdk/runtime-auth-CpjGW90U.js +0 -1
- package/dist/esm/sdk/runtime-device-link-CKgfGi7D.js +0 -1
- package/dist/esm/sdk/runtime-ecdsa-tempo-5VV9xSEh.js +0 -1
- package/dist/esm/sdk/runtime-email-otp-D1hYZNn6.js +0 -1
- package/dist/esm/sdk/runtime-export-B92wQD25.js +0 -1
- package/dist/esm/sdk/runtime-near-CUuKg38M.js +0 -1
- package/dist/esm/sdk/runtime-preferences-EdL3G_MO.js +0 -1
- package/dist/esm/sdk/runtime-recovery-uyw8sywI.js +0 -1
- package/dist/esm/sdk/sessionObservationRevision-DmmNV25w.js +0 -1
- package/dist/esm/sdk/shared-ha31XIdc.js +0 -6
- package/dist/esm/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +0 -1
- package/dist/esm/sdk/warmSessionHydration-CsQpQVuy.js +0 -1
- package/dist/public/sdk/ConfirmationDrawer-CXVNmfTy.js +0 -1
- package/dist/public/sdk/adapters-CTlDBRJy.js +0 -2
- package/dist/public/sdk/configBuilder-BMawmNpz.js +0 -1
- package/dist/public/sdk/jsxRuntime.module-DKsgiFjd.js +0 -2
- package/dist/public/sdk/localOnly-CPmpw381.js +0 -1
- package/dist/public/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +0 -1
- package/dist/public/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +0 -2
- package/dist/public/sdk/runtime-auth-CpjGW90U.js +0 -1
- package/dist/public/sdk/runtime-device-link-CKgfGi7D.js +0 -1
- package/dist/public/sdk/runtime-ecdsa-tempo-5VV9xSEh.js +0 -1
- package/dist/public/sdk/runtime-email-otp-D1hYZNn6.js +0 -1
- package/dist/public/sdk/runtime-export-B92wQD25.js +0 -1
- package/dist/public/sdk/runtime-near-CUuKg38M.js +0 -1
- package/dist/public/sdk/runtime-preferences-EdL3G_MO.js +0 -1
- package/dist/public/sdk/runtime-recovery-uyw8sywI.js +0 -1
- package/dist/public/sdk/sessionObservationRevision-DmmNV25w.js +0 -1
- package/dist/public/sdk/shared-ha31XIdc.js +0 -6
- package/dist/public/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +0 -1
- package/dist/public/sdk/warmSessionHydration-CsQpQVuy.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,12 +1,15 @@
|
|
|
1
|
+
import { walletDisplayText, walletText } from "../../../core/ui/messages.js";
|
|
2
|
+
import { useWalletLocale } from "../../context/WalletLocale.js";
|
|
1
3
|
import { AccountMenuDeviceDetails } from "./AccountMenuDeviceDetails.js";
|
|
2
4
|
import "react";
|
|
3
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
4
6
|
//#region src/react/components/AccountMenuButton/AuthenticationMethodsView.tsx
|
|
5
7
|
/** Shared presentation; callers own enrollment data and authenticated actions. */
|
|
6
8
|
function AuthenticationMethodsView({ walletLabel, status, children }) {
|
|
9
|
+
const locale = useWalletLocale();
|
|
7
10
|
return /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx(AccountMenuDeviceDetails, {
|
|
8
|
-
title: walletLabel,
|
|
9
|
-
description: "This wallet",
|
|
11
|
+
title: walletDisplayText(locale, walletLabel),
|
|
12
|
+
description: walletText(locale, "This wallet"),
|
|
10
13
|
details: [{
|
|
11
14
|
label: "Status",
|
|
12
15
|
value: status
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { walletText } from "../../../core/ui/messages.js";
|
|
2
|
+
import { WalletText, useWalletLocale } from "../../context/WalletLocale.js";
|
|
1
3
|
import { AccountMenuScreen } from "./AccountMenuScreen.js";
|
|
2
4
|
import { ExportKeysSection } from "./ExportKeysSection.js";
|
|
3
5
|
import "react";
|
|
@@ -6,12 +8,12 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
6
8
|
/** Shared key selection; the connected caller owns the authenticated export. */
|
|
7
9
|
function ExportKeysScreen({ onBack, ...selection }) {
|
|
8
10
|
return /* @__PURE__ */ jsxs(AccountMenuScreen, {
|
|
9
|
-
title: "Export keys",
|
|
11
|
+
title: walletText(useWalletLocale(), "Export keys"),
|
|
10
12
|
onBack,
|
|
11
13
|
children: [
|
|
12
14
|
/* @__PURE__ */ jsx("p", {
|
|
13
15
|
className: "seams-account-description",
|
|
14
|
-
children: "Choose the signing key to export. Your wallet will ask you to authenticate."
|
|
16
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Choose the signing key to export. Your wallet will ask you to authenticate." })
|
|
15
17
|
}),
|
|
16
18
|
/* @__PURE__ */ jsx(ExportKeysSection, {
|
|
17
19
|
...selection,
|
|
@@ -19,7 +21,7 @@ function ExportKeysScreen({ onBack, ...selection }) {
|
|
|
19
21
|
}),
|
|
20
22
|
/* @__PURE__ */ jsx("p", {
|
|
21
23
|
className: "seams-account-note",
|
|
22
|
-
children: "Keep exported keys private. Anyone with a signing key can control its accounts."
|
|
24
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Keep exported keys private. Anyone with a signing key can control its accounts." })
|
|
23
25
|
})
|
|
24
26
|
]
|
|
25
27
|
});
|
|
@@ -100,3 +100,23 @@
|
|
|
100
100
|
width: 100%;
|
|
101
101
|
height: 100%;
|
|
102
102
|
}
|
|
103
|
+
|
|
104
|
+
/* A phone-width menu left the description beside the label only a few
|
|
105
|
+
characters, so it moves to a line of its own under the label. */
|
|
106
|
+
@media (max-width: 480px) {
|
|
107
|
+
.seams-account-screen .seams-export-keys-row {
|
|
108
|
+
flex-wrap: wrap;
|
|
109
|
+
row-gap: 2px;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.seams-account-screen .seams-export-keys-row-spinner {
|
|
113
|
+
margin-left: auto;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
.seams-account-screen .seams-export-keys-row-description {
|
|
117
|
+
flex-basis: 100%;
|
|
118
|
+
order: 1;
|
|
119
|
+
white-space: normal;
|
|
120
|
+
text-align: left;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WalletText } from "../../context/WalletLocale.js";
|
|
1
2
|
import { KeyIcon } from "./icons/KeyIcon.js";
|
|
2
3
|
import SpinnerIcon from "./icons/SpinnerIcon.js";
|
|
3
4
|
import "react";
|
|
@@ -48,15 +49,15 @@ const ExportKeysSection = ({ isOpen = false, presentation = "menu", loadingChain
|
|
|
48
49
|
}) : null,
|
|
49
50
|
/* @__PURE__ */ jsx("span", {
|
|
50
51
|
className: "seams-export-keys-row-label",
|
|
51
|
-
children: row.label
|
|
52
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: row.label })
|
|
52
53
|
}),
|
|
53
54
|
/* @__PURE__ */ jsx("span", {
|
|
54
55
|
className: "seams-export-keys-row-description",
|
|
55
|
-
children: row.description
|
|
56
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: row.description })
|
|
56
57
|
}),
|
|
57
58
|
presentation === "page" ? /* @__PURE__ */ jsxs("span", {
|
|
58
59
|
className: "seams-export-keys-action",
|
|
59
|
-
children: [loadingChain === row.chain ? "Preparing export…" : "Export key", /* @__PURE__ */ jsx("span", {
|
|
60
|
+
children: [loadingChain === row.chain ? /* @__PURE__ */ jsx(WalletText, { message: "Preparing export…" }) : /* @__PURE__ */ jsx(WalletText, { message: "Export key" }), /* @__PURE__ */ jsx("span", {
|
|
60
61
|
"aria-hidden": "true",
|
|
61
62
|
children: "→"
|
|
62
63
|
})]
|
|
@@ -548,8 +548,10 @@
|
|
|
548
548
|
margin-bottom: 1.5rem;
|
|
549
549
|
font-size: 0.875rem;
|
|
550
550
|
}
|
|
551
|
+
/* The body scrolls, so the last action needs its own room above the card edge. */
|
|
551
552
|
.seams-auth-methods-modal-content .seams-linked-devices-modal-body {
|
|
552
553
|
gap: 1.5rem;
|
|
554
|
+
padding-bottom: 1.5rem;
|
|
553
555
|
}
|
|
554
556
|
/* A method's icon sits on a tile, like the recovery-code row. */
|
|
555
557
|
.seams-auth-methods-modal-content .seams-linked-devices-modal-item--row {
|
|
@@ -585,12 +587,16 @@
|
|
|
585
587
|
font-size: 0.8125rem;
|
|
586
588
|
}
|
|
587
589
|
.seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form button {
|
|
588
|
-
background: var(--seams-colors-
|
|
590
|
+
background: var(--seams-colors-textPrimary);
|
|
589
591
|
border-color: transparent;
|
|
590
|
-
color: var(--seams-colors-
|
|
592
|
+
color: var(--seams-colors-colorBackground);
|
|
591
593
|
}
|
|
592
594
|
.seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form button:hover:not(:disabled) {
|
|
593
|
-
background:
|
|
595
|
+
background: color-mix(
|
|
596
|
+
in srgb,
|
|
597
|
+
var(--seams-colors-textPrimary) 84%,
|
|
598
|
+
var(--seams-colors-colorBackground)
|
|
599
|
+
);
|
|
594
600
|
}
|
|
595
601
|
@media (max-width: 480px) {
|
|
596
602
|
.seams-auth-methods-modal-content .seams-linked-devices-modal-otp-form {
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { walletDisplayText, walletText } from "../../../core/ui/messages.js";
|
|
2
|
+
import { WalletText, useWalletLocale } from "../../context/WalletLocale.js";
|
|
1
3
|
import { useSeams } from "../../context/index.js";
|
|
2
4
|
import { AccountMenuDeviceDetails } from "./AccountMenuDeviceDetails.js";
|
|
3
5
|
import { AccountMenuDialogFrame } from "./AccountMenuDialog.js";
|
|
@@ -107,15 +109,15 @@ function deviceStateAttr(view) {
|
|
|
107
109
|
return view.kind === "owner" ? "active" : view.device.state;
|
|
108
110
|
}
|
|
109
111
|
/** "today" / "yesterday" / a plain date — never a timestamp with seconds. */
|
|
110
|
-
function friendlyDay(value, now) {
|
|
112
|
+
function friendlyDay(value, now, locale) {
|
|
111
113
|
const then = new Date(value);
|
|
112
114
|
const startOfToday = new Date(now);
|
|
113
115
|
startOfToday.setHours(0, 0, 0, 0);
|
|
114
116
|
const daysAgo = Math.floor((startOfToday.getTime() - then.setHours(0, 0, 0, 0)) / (1440 * 60 * 1e3));
|
|
115
|
-
if (daysAgo <= 0) return "today";
|
|
116
|
-
if (daysAgo === 1) return "yesterday";
|
|
117
|
-
if (daysAgo < 7) return
|
|
118
|
-
return new Date(value).toLocaleDateString(
|
|
117
|
+
if (daysAgo <= 0) return walletText(locale, "today");
|
|
118
|
+
if (daysAgo === 1) return walletText(locale, "yesterday");
|
|
119
|
+
if (daysAgo < 7) return walletText(locale, "{value0} days ago", { value0: daysAgo });
|
|
120
|
+
return new Date(value).toLocaleDateString(locale, {
|
|
119
121
|
month: "short",
|
|
120
122
|
day: "numeric",
|
|
121
123
|
year: "numeric"
|
|
@@ -138,16 +140,16 @@ function credentialDescription(credential) {
|
|
|
138
140
|
* row's title collides with another visible row, the created-at day is
|
|
139
141
|
* appended as a second human disambiguator.
|
|
140
142
|
*/
|
|
141
|
-
function deviceMetaLine(view, deviceNumber, titleCollides, now) {
|
|
143
|
+
function deviceMetaLine(view, deviceNumber, titleCollides, now, locale) {
|
|
142
144
|
const credential = viewCredential(view);
|
|
143
|
-
const parts = [
|
|
145
|
+
const parts = [walletText(locale, "Device {value0}", { value0: deviceNumber })];
|
|
144
146
|
if (credential.kind === "passkey") {
|
|
145
|
-
parts.push(credential.device.synced ? "Synced passkey" : "Passkey");
|
|
147
|
+
parts.push(walletText(locale, credential.device.synced ? "Synced passkey" : "Passkey"));
|
|
146
148
|
const provider = credential.device.providerLabel ?? credential.device.provider;
|
|
147
149
|
if (provider) parts.push(provider);
|
|
148
150
|
} else parts.push(String(credential.email));
|
|
149
|
-
if (titleCollides) parts.push(
|
|
150
|
-
parts.push(
|
|
151
|
+
if (titleCollides) parts.push(walletText(locale, "Added {value0}", { value0: friendlyDay(viewCreatedAtMs(view), now, locale) }));
|
|
152
|
+
parts.push(walletText(locale, "Last used {value0}", { value0: friendlyDay(viewLastActivityAtMs(view), now, locale) }));
|
|
151
153
|
return parts.join(" · ");
|
|
152
154
|
}
|
|
153
155
|
/** Icon for the row: what kind of thing holds this credential. */
|
|
@@ -165,18 +167,21 @@ function credentialIcon(credential) {
|
|
|
165
167
|
});
|
|
166
168
|
}
|
|
167
169
|
/** "sign in with ___ first" — names the actual sibling instead of "the sibling method". */
|
|
168
|
-
function siblingMethodName(siblings) {
|
|
170
|
+
function siblingMethodName(siblings, locale) {
|
|
169
171
|
if (siblings.length === 1) {
|
|
170
172
|
const credential = viewCredential(siblings[0]);
|
|
171
|
-
return credential.kind === "email_otp" ? "your email code" :
|
|
173
|
+
return credential.kind === "email_otp" ? walletText(locale, "your email code") : walletText(locale, "your \"{value0}\" passkey", { value0: credential.device.label });
|
|
172
174
|
}
|
|
173
|
-
if (siblings.every((view) => viewCredential(view).kind === "email_otp")) return "your email code";
|
|
174
|
-
return "another sign-in method";
|
|
175
|
+
if (siblings.every((view) => viewCredential(view).kind === "email_otp")) return walletText(locale, "your email code");
|
|
176
|
+
return walletText(locale, "another sign-in method");
|
|
175
177
|
}
|
|
176
|
-
function selectedMethodRemovalHint(target, devices) {
|
|
178
|
+
function selectedMethodRemovalHint(target, devices, locale) {
|
|
177
179
|
const targetMethodId = String(viewCredential(target).walletAuthMethodId);
|
|
178
180
|
const siblings = devices.map(({ view }) => view).filter((view) => isActiveWalletMethod(view) && String(viewCredential(view).walletAuthMethodId) !== targetMethodId);
|
|
179
|
-
return
|
|
181
|
+
return walletText(locale, "You're signed in with {value0}. To remove it, sign in with {value1} first.", {
|
|
182
|
+
value0: walletText(locale, viewCredential(target).kind === "email_otp" ? "your email code" : "this passkey"),
|
|
183
|
+
value1: siblingMethodName(siblings, locale)
|
|
184
|
+
});
|
|
180
185
|
}
|
|
181
186
|
function deviceDescription(view, deviceNumber) {
|
|
182
187
|
return `Device ${deviceNumber}, ${credentialDescription(viewCredential(view))} (ID ${shortDisplayId(viewDisplayId(view))})`;
|
|
@@ -201,6 +206,7 @@ function withLinkedDevicesLoadTimeout(promise) {
|
|
|
201
206
|
});
|
|
202
207
|
}
|
|
203
208
|
const LinkedDevicesModal = ({ walletId, isOpen, onClose, presentation }) => {
|
|
209
|
+
const locale = useWalletLocale();
|
|
204
210
|
const { seams, loginState } = useSeams();
|
|
205
211
|
const [loadState, setLoadState] = React.useState({ kind: "idle" });
|
|
206
212
|
const [revokeState, setRevokeState] = React.useState({ kind: "idle" });
|
|
@@ -292,38 +298,42 @@ const LinkedDevicesModal = ({ walletId, isOpen, onClose, presentation }) => {
|
|
|
292
298
|
dialogRef,
|
|
293
299
|
contentClassName: "seams-linked-devices-inventory-content",
|
|
294
300
|
titleId: "seams-linked-devices-modal-title",
|
|
295
|
-
title: selectedDevice ? "Device details" : "Linked devices",
|
|
301
|
+
title: walletDisplayText(locale, selectedDevice ? "Device details" : "Linked devices"),
|
|
296
302
|
children: [selectedDevice ? /* @__PURE__ */ jsx(AccountMenuDeviceDetails, {
|
|
297
|
-
title: credentialDescription(viewCredential(selectedDevice.view)),
|
|
298
|
-
description: deviceMetaLine(selectedDevice.view, selectedDevice.deviceNumber, false, Date.now()),
|
|
303
|
+
title: walletDisplayText(locale, credentialDescription(viewCredential(selectedDevice.view))),
|
|
304
|
+
description: walletDisplayText(locale, deviceMetaLine(selectedDevice.view, selectedDevice.deviceNumber, false, Date.now(), locale)),
|
|
299
305
|
details: [{
|
|
300
306
|
label: "Status",
|
|
301
307
|
value: deviceStateAttr(selectedDevice.view)
|
|
302
308
|
}]
|
|
303
309
|
}) : /* @__PURE__ */ jsx("p", {
|
|
304
310
|
className: "seams-linked-devices-modal-subtitle",
|
|
305
|
-
children: "Anything listed here can unlock this wallet."
|
|
311
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Anything listed here can unlock this wallet." })
|
|
306
312
|
}), /* @__PURE__ */ jsxs("div", {
|
|
307
313
|
className: "seams-linked-devices-modal-body",
|
|
308
314
|
children: [
|
|
309
315
|
loadState.kind === "loading" || loadState.kind === "idle" ? /* @__PURE__ */ jsx("div", {
|
|
310
316
|
className: "seams-linked-devices-modal-placeholder",
|
|
311
317
|
role: "status",
|
|
312
|
-
children: "Checking your devices…"
|
|
318
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Checking your devices…" })
|
|
313
319
|
}) : null,
|
|
314
320
|
loadState.kind === "error" ? /* @__PURE__ */ jsxs("div", {
|
|
315
321
|
className: "seams-linked-devices-modal-placeholder",
|
|
316
322
|
role: "alert",
|
|
317
|
-
children: [/* @__PURE__ */ jsxs("span", { children: [
|
|
323
|
+
children: [/* @__PURE__ */ jsxs("span", { children: [
|
|
324
|
+
/* @__PURE__ */ jsx(WalletText, { message: "Unable to load your devices:" }),
|
|
325
|
+
" ",
|
|
326
|
+
/* @__PURE__ */ jsx(WalletText, { copy: loadState.message })
|
|
327
|
+
] }), /* @__PURE__ */ jsx("button", {
|
|
318
328
|
type: "button",
|
|
319
329
|
className: "seams-linked-devices-modal-secondary",
|
|
320
330
|
onClick: () => void loadDevices(),
|
|
321
|
-
children: "Try again"
|
|
331
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Try again" })
|
|
322
332
|
})]
|
|
323
333
|
}) : null,
|
|
324
334
|
showEmpty ? /* @__PURE__ */ jsx("div", {
|
|
325
335
|
className: "seams-linked-devices-modal-placeholder",
|
|
326
|
-
children: "No other devices are using this wallet."
|
|
336
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "No other devices are using this wallet." })
|
|
327
337
|
}) : null,
|
|
328
338
|
devices.length > 0 ? /* @__PURE__ */ jsx("ul", {
|
|
329
339
|
className: "seams-linked-devices-modal-list seams-linked-devices-modal-list--grouped",
|
|
@@ -342,8 +352,8 @@ const LinkedDevicesModal = ({ walletId, isOpen, onClose, presentation }) => {
|
|
|
342
352
|
if (presentation === "embedded" && !selectedDevice) return /* @__PURE__ */ jsx(AuthenticationMethodRow, {
|
|
343
353
|
kind: viewCredential(view).kind,
|
|
344
354
|
icon: credentialIcon(viewCredential(view)),
|
|
345
|
-
title,
|
|
346
|
-
description: deviceMetaLine(view, deviceNumber, titleCollides, Date.now()),
|
|
355
|
+
title: walletDisplayText(locale, title),
|
|
356
|
+
description: walletDisplayText(locale, deviceMetaLine(view, deviceNumber, titleCollides, Date.now(), locale)),
|
|
347
357
|
onSelect: setSelectedDeviceId.bind(null, cardId)
|
|
348
358
|
}, cardId);
|
|
349
359
|
return /* @__PURE__ */ jsxs("li", {
|
|
@@ -364,41 +374,40 @@ const LinkedDevicesModal = ({ walletId, isOpen, onClose, presentation }) => {
|
|
|
364
374
|
className: "seams-linked-devices-modal-item-main",
|
|
365
375
|
children: [/* @__PURE__ */ jsx("span", {
|
|
366
376
|
className: "seams-linked-devices-modal-item-name",
|
|
367
|
-
children: title
|
|
377
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: title })
|
|
368
378
|
}), chip ? /* @__PURE__ */ jsx("span", {
|
|
369
379
|
className: `seams-linked-devices-modal-standing tone-${chip.tone}`,
|
|
370
|
-
children: chip.label
|
|
380
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: chip.label })
|
|
371
381
|
}) : null]
|
|
372
382
|
}),
|
|
373
383
|
/* @__PURE__ */ jsx("div", {
|
|
374
384
|
className: "seams-linked-devices-modal-item-detail",
|
|
375
|
-
children: deviceMetaLine(view, deviceNumber, titleCollides, Date.now())
|
|
385
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: deviceMetaLine(view, deviceNumber, titleCollides, Date.now(), locale) })
|
|
376
386
|
}),
|
|
377
387
|
isSelectedMethod && hasRemovableSibling ? /* @__PURE__ */ jsxs("div", {
|
|
378
388
|
className: "seams-linked-devices-modal-hint",
|
|
379
389
|
children: [/* @__PURE__ */ jsx(LockIcon, {
|
|
380
390
|
size: 15,
|
|
381
391
|
strokeWidth: 1.75
|
|
382
|
-
}), /* @__PURE__ */ jsx("span", { children: selectedMethodRemovalHint(view, devices) })]
|
|
392
|
+
}), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { copy: selectedMethodRemovalHint(view, devices, locale) }) })]
|
|
383
393
|
}) : null,
|
|
384
394
|
confirming ? /* @__PURE__ */ jsxs("div", {
|
|
385
395
|
className: "seams-linked-devices-modal-confirm",
|
|
386
|
-
children: [/* @__PURE__ */
|
|
387
|
-
"Remove ",
|
|
388
|
-
title
|
|
389
|
-
|
|
390
|
-
] }), /* @__PURE__ */ jsxs("div", {
|
|
396
|
+
children: [/* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, {
|
|
397
|
+
message: "Remove {value0}? It will lose access right away.",
|
|
398
|
+
values: { value0: title }
|
|
399
|
+
}) }), /* @__PURE__ */ jsxs("div", {
|
|
391
400
|
className: "seams-linked-devices-modal-confirm-actions",
|
|
392
401
|
children: [/* @__PURE__ */ jsx("button", {
|
|
393
402
|
type: "button",
|
|
394
403
|
className: "seams-linked-devices-modal-secondary",
|
|
395
404
|
onClick: () => setRevokeState({ kind: "idle" }),
|
|
396
|
-
children: "Keep it"
|
|
405
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Keep it" })
|
|
397
406
|
}), /* @__PURE__ */ jsx("button", {
|
|
398
407
|
type: "button",
|
|
399
408
|
className: "seams-linked-devices-modal-danger",
|
|
400
409
|
onClick: () => void revokeMethod(view, deviceNumber),
|
|
401
|
-
children: "Yes, remove"
|
|
410
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Yes, remove" })
|
|
402
411
|
})]
|
|
403
412
|
})]
|
|
404
413
|
}) : null
|
|
@@ -408,12 +417,12 @@ const LinkedDevicesModal = ({ walletId, isOpen, onClose, presentation }) => {
|
|
|
408
417
|
type: "button",
|
|
409
418
|
className: "seams-linked-devices-modal-secondary seams-linked-devices-modal-remove",
|
|
410
419
|
disabled: revocationInProgress,
|
|
411
|
-
"aria-label": `Remove ${deviceDescription(view, deviceNumber)}
|
|
420
|
+
"aria-label": walletDisplayText(locale, `Remove ${deviceDescription(view, deviceNumber)}`),
|
|
412
421
|
onClick: () => setRevokeState({
|
|
413
422
|
kind: "confirming",
|
|
414
423
|
walletAuthMethodId
|
|
415
424
|
}),
|
|
416
|
-
children: working ? "Removing…" : "Remove"
|
|
425
|
+
children: working ? /* @__PURE__ */ jsx(WalletText, { message: "Removing…" }) : /* @__PURE__ */ jsx(WalletText, { message: "Remove" })
|
|
417
426
|
}) : null
|
|
418
427
|
]
|
|
419
428
|
}, cardId);
|
|
@@ -422,13 +431,13 @@ const LinkedDevicesModal = ({ walletId, isOpen, onClose, presentation }) => {
|
|
|
422
431
|
revokeState.kind === "error" ? /* @__PURE__ */ jsx("div", {
|
|
423
432
|
className: "seams-linked-devices-modal-error",
|
|
424
433
|
role: "alert",
|
|
425
|
-
children: revokeState.message
|
|
434
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: revokeState.message })
|
|
426
435
|
}) : null,
|
|
427
436
|
/* @__PURE__ */ jsx("div", {
|
|
428
437
|
className: "seams-linked-devices-modal-live",
|
|
429
438
|
role: "status",
|
|
430
439
|
"aria-live": "polite",
|
|
431
|
-
children: announcement
|
|
440
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: announcement })
|
|
432
441
|
})
|
|
433
442
|
]
|
|
434
443
|
})]
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { blinkMenuItem } from "../../../utils/menuItemBlink.js";
|
|
2
|
+
import { WalletText } from "../../context/WalletLocale.js";
|
|
2
3
|
import LogOutIcon from "./icons/LogOutIcon2.js";
|
|
3
4
|
import { memo } from "react";
|
|
4
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -18,7 +19,7 @@ const LockMenuItem = memo(({ onLock, className, style }) => {
|
|
|
18
19
|
className: "seams-dropdown-menu-item-content",
|
|
19
20
|
children: /* @__PURE__ */ jsx("div", {
|
|
20
21
|
className: "seams-dropdown-menu-item-label",
|
|
21
|
-
children: "Lock Wallet"
|
|
22
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Lock Wallet" })
|
|
22
23
|
})
|
|
23
24
|
})]
|
|
24
25
|
});
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WalletText } from "../../context/WalletLocale.js";
|
|
1
2
|
import { HoverArrowIcon } from "./icons/HoverArrowIcon.js";
|
|
2
3
|
import { forwardRef, memo } from "react";
|
|
3
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -30,10 +31,10 @@ const MenuItem = memo(forwardRef(({ item, onClose, className, style, isHighlight
|
|
|
30
31
|
className: "seams-dropdown-menu-item-content",
|
|
31
32
|
children: [/* @__PURE__ */ jsx("div", {
|
|
32
33
|
className: "seams-dropdown-menu-item-label",
|
|
33
|
-
children: item.label
|
|
34
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: item.label })
|
|
34
35
|
}), /* @__PURE__ */ jsx("div", {
|
|
35
36
|
className: "seams-dropdown-menu-item-description",
|
|
36
|
-
children: item.description
|
|
37
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: item.description })
|
|
37
38
|
})]
|
|
38
39
|
}),
|
|
39
40
|
!item.disabled ? /* @__PURE__ */ jsx(HoverArrowIcon, {}) : null
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { walletDisplayText, walletText } from "../../../core/ui/messages.js";
|
|
2
|
+
import { WalletText, useWalletLocale } from "../../context/WalletLocale.js";
|
|
1
3
|
import { MenuItem } from "./MenuItem.js";
|
|
2
4
|
import { LockMenuItem } from "./LockMenuItem.js";
|
|
3
5
|
import "react";
|
|
@@ -23,10 +25,11 @@ function storeMenuRef(refs, index, element) {
|
|
|
23
25
|
refs.current[index] = element;
|
|
24
26
|
}
|
|
25
27
|
function MenuGroup({ label, items, props }) {
|
|
28
|
+
const locale = useWalletLocale();
|
|
26
29
|
return /* @__PURE__ */ jsxs("section", {
|
|
27
30
|
className: "seams-account-menu-group",
|
|
28
|
-
"aria-label": label,
|
|
29
|
-
children: [/* @__PURE__ */ jsx("h3", { children: label }), items.map(renderItem.bind(null, props))]
|
|
31
|
+
"aria-label": walletDisplayText(locale, label),
|
|
32
|
+
children: [/* @__PURE__ */ jsx("h3", { children: /* @__PURE__ */ jsx(WalletText, { copy: label }) }), items.map(renderItem.bind(null, props))]
|
|
30
33
|
});
|
|
31
34
|
}
|
|
32
35
|
function renderItem(props, item) {
|
|
@@ -39,17 +42,18 @@ function renderItem(props, item) {
|
|
|
39
42
|
}, item.id);
|
|
40
43
|
}
|
|
41
44
|
function ProfileDropdown(props) {
|
|
45
|
+
const locale = useWalletLocale();
|
|
42
46
|
props.menuItemsRef.current.length = props.menuItems.length;
|
|
43
47
|
return /* @__PURE__ */ jsxs("div", {
|
|
44
48
|
className: "seams-profile-dropdown-menu",
|
|
45
49
|
children: [
|
|
46
50
|
/* @__PURE__ */ jsx(MenuGroup, {
|
|
47
|
-
label: "Addresses",
|
|
51
|
+
label: walletText(locale, "Addresses"),
|
|
48
52
|
items: props.menuItems.filter(isAccountItem),
|
|
49
53
|
props
|
|
50
54
|
}),
|
|
51
55
|
/* @__PURE__ */ jsx(MenuGroup, {
|
|
52
|
-
label: "Security & devices",
|
|
56
|
+
label: walletText(locale, "Security & devices"),
|
|
53
57
|
items: props.menuItems.filter(isSecurityItem).sort(compareSecurityItems),
|
|
54
58
|
props
|
|
55
59
|
}),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WalletText } from "../../context/WalletLocale.js";
|
|
1
2
|
import { useState } from "react";
|
|
2
3
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
4
|
//#region src/react/components/AccountMenuButton/RecoveryCodeAcknowledgement.tsx
|
|
@@ -12,13 +13,13 @@ function RecoveryCodeAcknowledgement({ onDone }) {
|
|
|
12
13
|
type: "checkbox",
|
|
13
14
|
checked: acknowledged,
|
|
14
15
|
onChange: updateAcknowledgement.bind(null, setAcknowledged)
|
|
15
|
-
}), /* @__PURE__ */ jsx("span", { children: "I’ve saved these codes. They won’t be shown again." })]
|
|
16
|
+
}), /* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { message: "I’ve saved these codes. They won’t be shown again." }) })]
|
|
16
17
|
}), /* @__PURE__ */ jsx("button", {
|
|
17
18
|
type: "button",
|
|
18
19
|
className: "seams-account-action primary",
|
|
19
20
|
disabled: !acknowledged,
|
|
20
21
|
onClick: onDone,
|
|
21
|
-
children: "Done"
|
|
22
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Done" })
|
|
22
23
|
})] });
|
|
23
24
|
}
|
|
24
25
|
//#endregion
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WalletText } from "../../context/WalletLocale.js";
|
|
1
2
|
import { useState } from "react";
|
|
2
3
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
3
4
|
//#region src/react/components/AccountMenuButton/RecoveryCodeActions.tsx
|
|
@@ -33,18 +34,18 @@ function RecoveryCodeActions({ codes }) {
|
|
|
33
34
|
type: "button",
|
|
34
35
|
className: "seams-account-action",
|
|
35
36
|
onClick: copyCodes.bind(null, codes, setFeedback),
|
|
36
|
-
children: "Copy all"
|
|
37
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Copy all" })
|
|
37
38
|
}), /* @__PURE__ */ jsx("button", {
|
|
38
39
|
type: "button",
|
|
39
40
|
className: "seams-account-action",
|
|
40
41
|
onClick: downloadCodes.bind(null, codes, setFeedback),
|
|
41
|
-
children: "Download all"
|
|
42
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Download all" })
|
|
42
43
|
})]
|
|
43
44
|
}), /* @__PURE__ */ jsx("p", {
|
|
44
45
|
className: "seams-recovery-code-action-status",
|
|
45
46
|
role: "status",
|
|
46
47
|
"aria-live": "polite",
|
|
47
|
-
children: feedback
|
|
48
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: feedback })
|
|
48
49
|
})] });
|
|
49
50
|
}
|
|
50
51
|
//#endregion
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WalletText } from "../../context/WalletLocale.js";
|
|
1
2
|
import "react";
|
|
2
3
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
4
|
//#region src/react/components/AccountMenuButton/SegmentedControl.tsx
|
|
@@ -64,7 +65,7 @@ const SegmentedControl = ({ items, value, onValueChange, activeBg, height, radiu
|
|
|
64
65
|
disabled: !!item.disabled,
|
|
65
66
|
onClick: () => onValueChange(item.value),
|
|
66
67
|
style: itemStyle,
|
|
67
|
-
children: item.label ?? String(item.value)
|
|
68
|
+
children: typeof item.label === "string" ? /* @__PURE__ */ jsx(WalletText, { copy: item.label }) : item.label ?? String(item.value)
|
|
68
69
|
}, String(item.value));
|
|
69
70
|
})
|
|
70
71
|
})]
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WalletText } from "../../context/WalletLocale.js";
|
|
1
2
|
import SegmentedControl from "./SegmentedControl.js";
|
|
2
3
|
import React from "react";
|
|
3
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -26,8 +27,8 @@ const TransactionSettingsSection = ({ currentConfirmConfig, onSetUiMode, onToggl
|
|
|
26
27
|
className: "seams-transaction-group",
|
|
27
28
|
disabled: disableAll,
|
|
28
29
|
children: [
|
|
29
|
-
/* @__PURE__ */ jsx("legend", { children: "Review appearance" }),
|
|
30
|
-
/* @__PURE__ */ jsx("p", { children: "Choose where transaction details appear before signing." }),
|
|
30
|
+
/* @__PURE__ */ jsx("legend", { children: /* @__PURE__ */ jsx(WalletText, { message: "Review appearance" }) }),
|
|
31
|
+
/* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx(WalletText, { message: "Choose where transaction details appear before signing." }) }),
|
|
31
32
|
/* @__PURE__ */ jsx("div", {
|
|
32
33
|
className: "seams-transaction-choices",
|
|
33
34
|
children: UI_CHOICES.map(renderUiChoice.bind(null, currentConfirmConfig.uiMode ?? "modal", onSetUiMode))
|
|
@@ -37,8 +38,8 @@ const TransactionSettingsSection = ({ currentConfirmConfig, onSetUiMode, onToggl
|
|
|
37
38
|
className: "seams-transaction-group",
|
|
38
39
|
disabled: disableAll || disableRequireClick,
|
|
39
40
|
children: [
|
|
40
|
-
/* @__PURE__ */ jsx("legend", { children: "Confirmation step" }),
|
|
41
|
-
/* @__PURE__ */ jsx("p", { children: disableRequireClick ? "Choose Modal or Drawer to configure the confirmation step." : "Choose whether to click Continue before authentication starts." }),
|
|
41
|
+
/* @__PURE__ */ jsx("legend", { children: /* @__PURE__ */ jsx(WalletText, { message: "Confirmation step" }) }),
|
|
42
|
+
/* @__PURE__ */ jsx("p", { children: disableRequireClick ? /* @__PURE__ */ jsx(WalletText, { message: "Choose Modal or Drawer to configure the confirmation step." }) : /* @__PURE__ */ jsx(WalletText, { message: "Choose whether to click Continue before authentication starts." }) }),
|
|
42
43
|
/* @__PURE__ */ jsx("div", {
|
|
43
44
|
className: "seams-transaction-choices seams-transaction-choices--two",
|
|
44
45
|
children: BEHAVIOR_CHOICES.map(renderBehaviorChoice.bind(null, currentConfirmConfig, onSetDelay, onToggleSkipClick))
|
|
@@ -65,7 +66,7 @@ const TransactionSettingsSection = ({ currentConfirmConfig, onSetUiMode, onToggl
|
|
|
65
66
|
},
|
|
66
67
|
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("div", {
|
|
67
68
|
className: "seams-confirmation-options",
|
|
68
|
-
children: "Confirmer UI"
|
|
69
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Confirmer UI" })
|
|
69
70
|
}), /* @__PURE__ */ jsx("div", {
|
|
70
71
|
style: { width: "100%" },
|
|
71
72
|
children: /* @__PURE__ */ jsx(SegmentedControl, {
|
|
@@ -107,7 +108,7 @@ const TransactionSettingsSection = ({ currentConfirmConfig, onSetUiMode, onToggl
|
|
|
107
108
|
},
|
|
108
109
|
children: [/* @__PURE__ */ jsx("div", {
|
|
109
110
|
className: "seams-confirmation-options",
|
|
110
|
-
children: "Confirmation Options"
|
|
111
|
+
children: /* @__PURE__ */ jsx(WalletText, { message: "Confirmation Options" })
|
|
111
112
|
}), /* @__PURE__ */ jsx("div", {
|
|
112
113
|
style: { width: "100%" },
|
|
113
114
|
children: /* @__PURE__ */ jsx(SegmentedControl, {
|
|
@@ -183,8 +184,8 @@ function renderUiChoice(selected, onSelect, choice) {
|
|
|
183
184
|
className: "seams-transaction-choice-indicator",
|
|
184
185
|
"aria-hidden": "true"
|
|
185
186
|
}),
|
|
186
|
-
/* @__PURE__ */ jsx("strong", { children: choice.label }),
|
|
187
|
-
/* @__PURE__ */ jsx("span", { children: choice.description })
|
|
187
|
+
/* @__PURE__ */ jsx("strong", { children: /* @__PURE__ */ jsx(WalletText, { copy: choice.label }) }),
|
|
188
|
+
/* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { copy: choice.description }) })
|
|
188
189
|
]
|
|
189
190
|
}, choice.value);
|
|
190
191
|
}
|
|
@@ -204,8 +205,8 @@ function renderBehaviorChoice(config, setDelay, toggle, choice) {
|
|
|
204
205
|
className: "seams-transaction-choice-indicator",
|
|
205
206
|
"aria-hidden": "true"
|
|
206
207
|
}),
|
|
207
|
-
/* @__PURE__ */ jsx("strong", { children: choice.label }),
|
|
208
|
-
/* @__PURE__ */ jsx("span", { children: choice.description })
|
|
208
|
+
/* @__PURE__ */ jsx("strong", { children: /* @__PURE__ */ jsx(WalletText, { copy: choice.label }) }),
|
|
209
|
+
/* @__PURE__ */ jsx("span", { children: /* @__PURE__ */ jsx(WalletText, { copy: choice.description }) })
|
|
209
210
|
]
|
|
210
211
|
}, choice.value);
|
|
211
212
|
}
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { walletDisplayText } from "../../../core/ui/messages.js";
|
|
2
|
+
import { WalletText, useWalletLocale } from "../../context/WalletLocale.js";
|
|
1
3
|
import TouchIcon from "./icons/TouchIcon.js";
|
|
2
4
|
import "react";
|
|
3
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
6
|
//#region src/react/components/AccountMenuButton/UserAccountButton.tsx
|
|
5
7
|
const UserAccountButton = ({ label = "Settings", username, hideUsername, fullAccountId, emailAddress, isOpen, onClick, onMouseEnter, onMouseLeave, theme = "dark", menuId, triggerId }) => {
|
|
8
|
+
const locale = useWalletLocale();
|
|
6
9
|
const onKeyDown = (e) => {
|
|
7
10
|
if (e.key === "Enter" || e.key === " ") {
|
|
8
11
|
e.preventDefault();
|
|
@@ -33,7 +36,7 @@ const UserAccountButton = ({ label = "Settings", username, hideUsername, fullAcc
|
|
|
33
36
|
strokeWidth: 1.4
|
|
34
37
|
})
|
|
35
38
|
}), !hideWhenClosed && /* @__PURE__ */ jsx(UserAccountId, {
|
|
36
|
-
label,
|
|
39
|
+
label: walletDisplayText(locale, label),
|
|
37
40
|
username,
|
|
38
41
|
fullAccountId,
|
|
39
42
|
emailAddress,
|
|
@@ -45,23 +48,24 @@ const UserAccountButton = ({ label = "Settings", username, hideUsername, fullAcc
|
|
|
45
48
|
});
|
|
46
49
|
};
|
|
47
50
|
const UserAccountId = ({ label, username, fullAccountId, emailAddress, isOpen }) => {
|
|
51
|
+
const locale = useWalletLocale();
|
|
48
52
|
const displayAccountId = (fullAccountId || username || "").trim();
|
|
49
53
|
return /* @__PURE__ */ jsxs("div", {
|
|
50
54
|
className: "seams-user-account--user-details",
|
|
51
55
|
children: [
|
|
52
56
|
/* @__PURE__ */ jsx("p", {
|
|
53
57
|
className: "seams-user-account--username",
|
|
54
|
-
children: label
|
|
58
|
+
children: /* @__PURE__ */ jsx(WalletText, { copy: label })
|
|
55
59
|
}),
|
|
56
60
|
/* @__PURE__ */ jsx("span", {
|
|
57
61
|
"aria-hidden": !isOpen,
|
|
58
|
-
title: displayAccountId || void 0,
|
|
62
|
+
title: walletDisplayText(locale, displayAccountId || void 0),
|
|
59
63
|
className: `seams-user-account--account-id ${isOpen ? "visible" : "hidden"}`,
|
|
60
64
|
children: displayAccountId
|
|
61
65
|
}),
|
|
62
66
|
emailAddress && /* @__PURE__ */ jsx("span", {
|
|
63
67
|
"aria-hidden": !isOpen,
|
|
64
|
-
title: emailAddress,
|
|
68
|
+
title: walletDisplayText(locale, emailAddress),
|
|
65
69
|
className: `seams-user-account--email ${isOpen ? "visible" : "hidden"}`,
|
|
66
70
|
children: emailAddress
|
|
67
71
|
})
|