@seams/wallet 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. package/README.md +4 -5
  2. package/dist/.build-inputs.sha256 +1 -1
  3. package/dist/esm/SeamsWeb/index.js +1 -1
  4. package/dist/esm/SeamsWeb/walletIframe/client/inboundMessages.js +1 -1
  5. package/dist/esm/SeamsWeb/walletIframe/client/router.js +10 -4
  6. package/dist/esm/SeamsWeb/walletIframe/coordinator.js +23 -1
  7. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.js +5 -4
  8. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +121 -246
  9. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/icons.js +37 -1
  10. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +4 -2
  11. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.js +117 -0
  12. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/recovery-code-input.js +60 -0
  13. package/dist/esm/SeamsWeb/walletIframe/shared/facadeBoundary.js +2 -0
  14. package/dist/esm/core/browser/walletIframe/events.js +6 -0
  15. package/dist/esm/core/config/configBuilder.js +2 -0
  16. package/dist/esm/core/signingEngine/uiConfirm/ui/appearance.js +27 -0
  17. package/dist/esm/core/signingEngine/uiConfirm/ui/export-private-key-reveal.js +155 -0
  18. package/dist/esm/core/signingEngine/uiConfirm/ui/export-viewer-host.js +209 -0
  19. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.js +7 -4
  20. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.js +10 -6
  21. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.js +9 -6
  22. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.js +9 -6
  23. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.js +7 -4
  24. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.js +4 -1
  25. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpContent.js +4 -1
  26. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.js +5 -4
  27. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.js +319 -0
  28. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.js +10 -7
  29. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.js +9 -5
  30. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +28 -22
  31. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.js +2 -1
  32. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.js +51 -26
  33. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +42 -27
  34. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReview.js +25 -18
  35. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionTree.js +8 -5
  36. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/WalletLocale.js +24 -0
  37. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +6 -4
  38. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountExportPrivateKeySurface.js +92 -0
  39. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountRecoveryCodeBackupSurface.js +4 -2
  40. package/dist/esm/core/signingEngine/uiConfirm/ui/surface-measurement-binding.js +12 -0
  41. package/dist/esm/core/ui/locale.js +10 -0
  42. package/dist/esm/core/ui/messages.js +698 -0
  43. package/dist/esm/index.js +3 -2
  44. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonMock.js +7 -3
  45. package/dist/esm/react/components/AccountMenuButton/AccountMenuButtonView.js +7 -4
  46. package/dist/esm/react/components/AccountMenuButton/AccountMenuDeviceDetails.js +4 -3
  47. package/dist/esm/react/components/AccountMenuButton/AccountMenuDialog.js +5 -2
  48. package/dist/esm/react/components/AccountMenuButton/AccountMenuMockScreens.js +31 -27
  49. package/dist/esm/react/components/AccountMenuButton/AccountMenuScreen.js +6 -3
  50. package/dist/esm/react/components/AccountMenuButton/AccountsSection.js +6 -3
  51. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodRow.js +5 -4
  52. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +33 -27
  53. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsView.js +5 -2
  54. package/dist/esm/react/components/AccountMenuButton/ExportKeysScreen.js +5 -3
  55. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.css +20 -0
  56. package/dist/esm/react/components/AccountMenuButton/ExportKeysSection.js +4 -3
  57. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.css +9 -3
  58. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +50 -41
  59. package/dist/esm/react/components/AccountMenuButton/LockMenuItem.js +2 -1
  60. package/dist/esm/react/components/AccountMenuButton/MenuItem.js +3 -2
  61. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +8 -4
  62. package/dist/esm/react/components/AccountMenuButton/RecoveryCodeAcknowledgement.js +3 -2
  63. package/dist/esm/react/components/AccountMenuButton/RecoveryCodeActions.js +4 -3
  64. package/dist/esm/react/components/AccountMenuButton/SegmentedControl.js +2 -1
  65. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +11 -10
  66. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.css +1 -0
  67. package/dist/esm/react/components/AccountMenuButton/UserAccountButton.js +8 -4
  68. package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +22 -15
  69. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +20 -16
  70. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +15 -0
  71. package/dist/esm/react/components/AccountMenuButton/index.js +18 -15
  72. package/dist/esm/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.js +30 -26
  73. package/dist/esm/react/components/QRCodeScanner.js +28 -23
  74. package/dist/esm/react/components/ShowQRCode.js +39 -31
  75. package/dist/esm/react/components/theme/ThemeProvider.js +3 -0
  76. package/dist/esm/react/context/WalletLocale.js +15 -0
  77. package/dist/esm/react/context/index.js +8 -3
  78. package/dist/esm/react/styles/styles.css +36 -0
  79. package/dist/esm/sdk/ConfirmationDrawer-DCw0m-Iv.js +1 -0
  80. package/dist/{public/sdk/NonceCoordinator-DuDKN-B8.js → esm/sdk/NonceCoordinator-Dq-FZpBz.js} +1 -1
  81. package/dist/{public/sdk/accountLifecycle-D61FIpFS.js → esm/sdk/accountLifecycle-fLNUdjct.js} +1 -1
  82. package/dist/{public/sdk/activeWalletSession-Ba6X4CUN.js → esm/sdk/activeWalletSession-BpbnpU9s.js} +1 -1
  83. package/dist/esm/sdk/adapters-BNmcyf9K.js +2 -0
  84. package/dist/esm/sdk/appearance-token-vars-DxBm_cKA.js +2 -0
  85. package/dist/esm/sdk/{canonicalPrimitives-BOzRXzfv.js → canonicalPrimitives-BMP5yILS.js} +1 -1
  86. package/dist/esm/sdk/{challengeDelivery-FD9GHK1T.js → challengeDelivery-CG2J5Qxs.js} +1 -1
  87. package/dist/{public/sdk/clientSessionPersistenceState-BHRUSWMt.js → esm/sdk/clientSessionPersistenceState-BgO4P6CZ.js} +1 -1
  88. package/dist/esm/sdk/{commitQueue-DOIaR0Hr.js → commitQueue-BW7BpYyA.js} +1 -1
  89. package/dist/esm/sdk/configBuilder-BMNShuOu.js +1 -0
  90. package/dist/esm/sdk/{configHelpers-BXdl5Mxs.js → configHelpers-D50F_Txb.js} +1 -1
  91. package/dist/esm/sdk/{digestEncoding-CbEFYvlJ.js → digestEncoding-aC4dSf_x.js} +1 -1
  92. package/dist/esm/sdk/{display-CY_aJEn6.js → display-WtILOPQR.js} +1 -1
  93. package/dist/{public/sdk/ecdsaCapabilityManifest-DzA996y9.js → esm/sdk/ecdsaCapabilityManifest-DRc423SV.js} +1 -1
  94. package/dist/{public/sdk/ecdsaDerivationClientWasm-DQlajPpE.js → esm/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js} +1 -1
  95. package/dist/{public/sdk/ecdsaDerivationExport-DyugdheE.js → esm/sdk/ecdsaDerivationExport-DX89rq_u.js} +1 -1
  96. package/dist/esm/sdk/{ecdsaWalletRecords-C_v74n5X.js → ecdsaWalletRecords-CxxUt3fS.js} +1 -1
  97. package/dist/{public/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js → esm/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js} +1 -1
  98. package/dist/esm/sdk/{export-viewer-host-DsRaS0UH.js → export-viewer-host-DsdzagKK.js} +1 -1
  99. package/dist/{public/sdk/exportKeypairOperation-SJPysnE1.js → esm/sdk/exportKeypairOperation-BwW_E4Lt.js} +1 -1
  100. package/dist/esm/sdk/{helpers-D3CUEdHI.js → helpers-DS0bksx9.js} +1 -1
  101. package/dist/esm/sdk/{host-GPb_mSAQ.js → host-DMR4KDy9.js} +1 -1
  102. package/dist/esm/sdk/{intentDigest-CGLrsMgj.js → intentDigest-Rh5Mg8X7.js} +1 -1
  103. package/dist/esm/sdk/{lanes-DJKIHJBm.js → lanes-BzU7cv2T.js} +1 -1
  104. package/dist/esm/sdk/localOnly-DO191vDh.js +1 -0
  105. package/dist/esm/sdk/mountExportPrivateKeySurface-DQzFzhNu.js +1 -0
  106. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-B1D0ovqx.js +2 -0
  107. package/dist/{public/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js → esm/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js} +1 -1
  108. package/dist/{public/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js → esm/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js} +1 -1
  109. package/dist/esm/sdk/{nonceLaneKeys-D18nlLjh.js → nonceLaneKeys-BzMBVxMU.js} +1 -1
  110. package/dist/esm/sdk/{operationFingerprint-Boa9DQ51.js → operationFingerprint-C4VX-0NI.js} +1 -1
  111. package/dist/{public/sdk/passkey-custody-CBSal3E9.js → esm/sdk/passkey-custody-Ba-NQ_4C.js} +1 -1
  112. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-CvsrXbzn.js → pendingWalletRecoveryCodeBackup-DOeIn_Qj.js} +1 -1
  113. package/dist/{public/sdk/presignaturePool-CQNt13kE.js → esm/sdk/presignaturePool-BHoxnbOA.js} +1 -1
  114. package/dist/esm/sdk/{prfCache-DJ93rtDv.js → prfCache-BAFh1skJ.js} +1 -1
  115. package/dist/esm/sdk/{primitives-cC0a9GRC.js → primitives-CTmDwMNc.js} +1 -1
  116. package/dist/esm/sdk/{recovery-entrypoint-nj7Zo3CR.js → recovery-entrypoint-DWghFZrZ.js} +1 -1
  117. package/dist/esm/sdk/{registration-49OGU_GZ.js → registration-DknFwoqn.js} +1 -1
  118. package/dist/esm/sdk/{registration-C7tywPXF.js → registration-sQndIWRF.js} +1 -1
  119. package/dist/esm/sdk/{registrationAccounts-9GFI0Ger.js → registrationAccounts-CD1u1ZqZ.js} +1 -1
  120. package/dist/esm/sdk/{registrationIds-Br-zI4_5.js → registrationIds-B1OpqRAt.js} +1 -1
  121. package/dist/{public/sdk/registrationIntent-PqmcTEE3.js → esm/sdk/registrationIntent-D4YDjf2U.js} +1 -1
  122. package/dist/esm/sdk/{requireStepUpAuth-C4PGTly-.js → requireStepUpAuth-CnSCFSOZ.js} +1 -1
  123. package/dist/{public/sdk/routerAbNormalSigning-xxATTIh5.js → esm/sdk/routerAbNormalSigning-BV1t27aB.js} +1 -1
  124. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  125. package/dist/esm/sdk/runtime-auth-BxG-J-BB.js +1 -0
  126. package/dist/esm/sdk/runtime-device-link-Dn_5hPCq.js +1 -0
  127. package/dist/esm/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js +1 -0
  128. package/dist/esm/sdk/runtime-email-otp-CPqTCH8Q.js +1 -0
  129. package/dist/esm/sdk/runtime-export-Brz53_oi.js +1 -0
  130. package/dist/esm/sdk/runtime-near-Da_xFUXx.js +1 -0
  131. package/dist/esm/sdk/runtime-preferences-riUZGaTs.js +1 -0
  132. package/dist/esm/sdk/runtime-recovery-CTj4nDAM.js +1 -0
  133. package/dist/esm/sdk/{runtime-recovery-codes-LR4mg7-k.js → runtime-recovery-codes-D8T9LQ7-.js} +1 -1
  134. package/dist/esm/sdk/{secp256k1-BldUPNQI.js → secp256k1-wOOHtPcK.js} +1 -1
  135. package/dist/esm/sdk/{secureRandomId-LwBFx84B.js → secureRandomId-8LSc91aN.js} +1 -1
  136. package/dist/esm/sdk/sessionObservationRevision-C7v-wN8_.js +1 -0
  137. package/dist/esm/sdk/shared-hx7KVyeq.js +6 -0
  138. package/dist/esm/sdk/{signEvmFamily-C_RvEnDB.js → signEvmFamily-DT34Vtpa.js} +1 -1
  139. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js → signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js} +1 -1
  140. package/dist/esm/sdk/{signEvmWithUiConfirm-CxXzcvj2.js → signEvmWithUiConfirm-D6nmJr_L.js} +1 -1
  141. package/dist/{public/sdk/signNear-Dno7NsP_.js → esm/sdk/signNear-B000QxBd.js} +1 -1
  142. package/dist/{public/sdk/signingFlow-DtugI_2z.js → esm/sdk/signingFlow-gl85GOW4.js} +1 -1
  143. package/dist/esm/sdk/{signingQueue-C1Pb07gm.js → signingQueue-gW7wmOuL.js} +1 -1
  144. package/dist/esm/sdk/{singletons-DxIyVhNb.js → singletons-CAsc9LvA.js} +1 -1
  145. package/dist/{public/sdk/thresholdEcdsa-murTq-xz.js → esm/sdk/thresholdEcdsa-Ci7yz395.js} +1 -1
  146. package/dist/{public/sdk/transactionState-XbZm9Zon.js → esm/sdk/transactionState-lB2qpkOm.js} +1 -1
  147. package/dist/esm/sdk/tx-confirm-ui.js +1799 -432
  148. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  149. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  150. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  151. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  152. package/dist/esm/sdk/{wallet-recovery-CVUalZ3p.js → wallet-recovery-DFaS3geI.js} +1 -1
  153. package/dist/esm/sdk/wallet-ui.css +1 -1
  154. package/dist/{public/sdk/walletAuthMethodRecord-Bv68Vq-g.js → esm/sdk/walletAuthMethodRecord-CWdqdY_s.js} +1 -1
  155. package/dist/{public/sdk/walletAuthority-v5wvv3IB.js → esm/sdk/walletAuthority-BY3kyKQ-.js} +1 -1
  156. package/dist/{public/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js → esm/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js} +1 -1
  157. package/dist/esm/sdk/{walletDbName-DRzPv5Ir.js → walletDbName-BxWApBQF.js} +1 -1
  158. package/dist/{public/sdk/walletOwnershipGeneration-pMmmJ6XA.js → esm/sdk/walletOwnershipGeneration-DSGfjuV2.js} +1 -1
  159. package/dist/esm/sdk/{walletRecoveryCommit-DvC6WlGz.js → walletRecoveryCommit-DQA_wveK.js} +1 -1
  160. package/dist/esm/sdk/{walletRecoveryRotate-Dd3prJpr.js → walletRecoveryRotate-zvQThn37.js} +1 -1
  161. package/dist/esm/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +1 -0
  162. package/dist/{public/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js → esm/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js} +1 -1
  163. package/dist/{public/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js → esm/sdk/walletSessionAuthorizationStore-DnUMtkev.js} +1 -1
  164. package/dist/esm/sdk/warmSessionHydration-D8Vdro9n.js +1 -0
  165. package/dist/{public/sdk/webauthnP256-XgYu-Y6E.js → esm/sdk/webauthnP256-_ajaNl90.js} +1 -1
  166. package/dist/esm/sdk/{webauthnPromptCoordinator-D5sP8Q7e.js → webauthnPromptCoordinator-9bVeHcTZ.js} +1 -1
  167. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  168. package/dist/public/headers.manifest.json +1 -1
  169. package/dist/public/sdk/ConfirmationDrawer-DCw0m-Iv.js +1 -0
  170. package/dist/{esm/sdk/NonceCoordinator-DuDKN-B8.js → public/sdk/NonceCoordinator-Dq-FZpBz.js} +1 -1
  171. package/dist/{esm/sdk/accountLifecycle-D61FIpFS.js → public/sdk/accountLifecycle-fLNUdjct.js} +1 -1
  172. package/dist/{esm/sdk/activeWalletSession-Ba6X4CUN.js → public/sdk/activeWalletSession-BpbnpU9s.js} +1 -1
  173. package/dist/public/sdk/adapters-BNmcyf9K.js +2 -0
  174. package/dist/public/sdk/appearance-token-vars-DxBm_cKA.js +2 -0
  175. package/dist/public/sdk/{canonicalPrimitives-BOzRXzfv.js → canonicalPrimitives-BMP5yILS.js} +1 -1
  176. package/dist/public/sdk/{challengeDelivery-FD9GHK1T.js → challengeDelivery-CG2J5Qxs.js} +1 -1
  177. package/dist/{esm/sdk/clientSessionPersistenceState-BHRUSWMt.js → public/sdk/clientSessionPersistenceState-BgO4P6CZ.js} +1 -1
  178. package/dist/public/sdk/{commitQueue-DOIaR0Hr.js → commitQueue-BW7BpYyA.js} +1 -1
  179. package/dist/public/sdk/configBuilder-BMNShuOu.js +1 -0
  180. package/dist/public/sdk/{configHelpers-BXdl5Mxs.js → configHelpers-D50F_Txb.js} +1 -1
  181. package/dist/public/sdk/{digestEncoding-CbEFYvlJ.js → digestEncoding-aC4dSf_x.js} +1 -1
  182. package/dist/public/sdk/{display-CY_aJEn6.js → display-WtILOPQR.js} +1 -1
  183. package/dist/{esm/sdk/ecdsaCapabilityManifest-DzA996y9.js → public/sdk/ecdsaCapabilityManifest-DRc423SV.js} +1 -1
  184. package/dist/{esm/sdk/ecdsaDerivationClientWasm-DQlajPpE.js → public/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js} +1 -1
  185. package/dist/{esm/sdk/ecdsaDerivationExport-DyugdheE.js → public/sdk/ecdsaDerivationExport-DX89rq_u.js} +1 -1
  186. package/dist/public/sdk/{ecdsaWalletRecords-C_v74n5X.js → ecdsaWalletRecords-CxxUt3fS.js} +1 -1
  187. package/dist/{esm/sdk/emailOtpEcdsaDerivationIdentity-BDVjvnmO.js → public/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js} +1 -1
  188. package/dist/public/sdk/{export-viewer-host-DsRaS0UH.js → export-viewer-host-DsdzagKK.js} +1 -1
  189. package/dist/{esm/sdk/exportKeypairOperation-SJPysnE1.js → public/sdk/exportKeypairOperation-BwW_E4Lt.js} +1 -1
  190. package/dist/public/sdk/{helpers-D3CUEdHI.js → helpers-DS0bksx9.js} +1 -1
  191. package/dist/public/sdk/{host-GPb_mSAQ.js → host-DMR4KDy9.js} +1 -1
  192. package/dist/public/sdk/{intentDigest-CGLrsMgj.js → intentDigest-Rh5Mg8X7.js} +1 -1
  193. package/dist/public/sdk/{lanes-DJKIHJBm.js → lanes-BzU7cv2T.js} +1 -1
  194. package/dist/public/sdk/localOnly-DO191vDh.js +1 -0
  195. package/dist/public/sdk/mountExportPrivateKeySurface-DQzFzhNu.js +1 -0
  196. package/dist/public/sdk/mountRecoveryCodeBackupSurface-B1D0ovqx.js +2 -0
  197. package/dist/{esm/sdk/nearEd25519YaoMaterialActivation-J6EHFScV.js → public/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js} +1 -1
  198. package/dist/{esm/sdk/nearEd25519YaoSigningPreparation-CqBNMG87.js → public/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js} +1 -1
  199. package/dist/public/sdk/{nonceLaneKeys-D18nlLjh.js → nonceLaneKeys-BzMBVxMU.js} +1 -1
  200. package/dist/public/sdk/{operationFingerprint-Boa9DQ51.js → operationFingerprint-C4VX-0NI.js} +1 -1
  201. package/dist/{esm/sdk/passkey-custody-CBSal3E9.js → public/sdk/passkey-custody-Ba-NQ_4C.js} +1 -1
  202. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-CvsrXbzn.js → pendingWalletRecoveryCodeBackup-DOeIn_Qj.js} +1 -1
  203. package/dist/{esm/sdk/presignaturePool-CQNt13kE.js → public/sdk/presignaturePool-BHoxnbOA.js} +1 -1
  204. package/dist/public/sdk/{prfCache-DJ93rtDv.js → prfCache-BAFh1skJ.js} +1 -1
  205. package/dist/public/sdk/{primitives-cC0a9GRC.js → primitives-CTmDwMNc.js} +1 -1
  206. package/dist/public/sdk/{recovery-entrypoint-nj7Zo3CR.js → recovery-entrypoint-DWghFZrZ.js} +1 -1
  207. package/dist/public/sdk/{registration-49OGU_GZ.js → registration-DknFwoqn.js} +1 -1
  208. package/dist/public/sdk/{registration-C7tywPXF.js → registration-sQndIWRF.js} +1 -1
  209. package/dist/public/sdk/{registrationAccounts-9GFI0Ger.js → registrationAccounts-CD1u1ZqZ.js} +1 -1
  210. package/dist/public/sdk/{registrationIds-Br-zI4_5.js → registrationIds-B1OpqRAt.js} +1 -1
  211. package/dist/{esm/sdk/registrationIntent-PqmcTEE3.js → public/sdk/registrationIntent-D4YDjf2U.js} +1 -1
  212. package/dist/public/sdk/{requireStepUpAuth-C4PGTly-.js → requireStepUpAuth-CnSCFSOZ.js} +1 -1
  213. package/dist/{esm/sdk/routerAbNormalSigning-xxATTIh5.js → public/sdk/routerAbNormalSigning-BV1t27aB.js} +1 -1
  214. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  215. package/dist/public/sdk/runtime-auth-BxG-J-BB.js +1 -0
  216. package/dist/public/sdk/runtime-device-link-Dn_5hPCq.js +1 -0
  217. package/dist/public/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js +1 -0
  218. package/dist/public/sdk/runtime-email-otp-CPqTCH8Q.js +1 -0
  219. package/dist/public/sdk/runtime-export-Brz53_oi.js +1 -0
  220. package/dist/public/sdk/runtime-near-Da_xFUXx.js +1 -0
  221. package/dist/public/sdk/runtime-preferences-riUZGaTs.js +1 -0
  222. package/dist/public/sdk/runtime-recovery-CTj4nDAM.js +1 -0
  223. package/dist/public/sdk/{runtime-recovery-codes-LR4mg7-k.js → runtime-recovery-codes-D8T9LQ7-.js} +1 -1
  224. package/dist/public/sdk/{secp256k1-BldUPNQI.js → secp256k1-wOOHtPcK.js} +1 -1
  225. package/dist/public/sdk/{secureRandomId-LwBFx84B.js → secureRandomId-8LSc91aN.js} +1 -1
  226. package/dist/public/sdk/sessionObservationRevision-C7v-wN8_.js +1 -0
  227. package/dist/public/sdk/shared-hx7KVyeq.js +6 -0
  228. package/dist/public/sdk/{signEvmFamily-C_RvEnDB.js → signEvmFamily-DT34Vtpa.js} +1 -1
  229. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-CUKdq5dE.js → signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js} +1 -1
  230. package/dist/public/sdk/{signEvmWithUiConfirm-CxXzcvj2.js → signEvmWithUiConfirm-D6nmJr_L.js} +1 -1
  231. package/dist/{esm/sdk/signNear-Dno7NsP_.js → public/sdk/signNear-B000QxBd.js} +1 -1
  232. package/dist/{esm/sdk/signingFlow-DtugI_2z.js → public/sdk/signingFlow-gl85GOW4.js} +1 -1
  233. package/dist/public/sdk/{signingQueue-C1Pb07gm.js → signingQueue-gW7wmOuL.js} +1 -1
  234. package/dist/public/sdk/{singletons-DxIyVhNb.js → singletons-CAsc9LvA.js} +1 -1
  235. package/dist/{esm/sdk/thresholdEcdsa-murTq-xz.js → public/sdk/thresholdEcdsa-Ci7yz395.js} +1 -1
  236. package/dist/{esm/sdk/transactionState-XbZm9Zon.js → public/sdk/transactionState-lB2qpkOm.js} +1 -1
  237. package/dist/public/sdk/tx-confirm-ui.js +1799 -432
  238. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  239. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  240. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  241. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  242. package/dist/public/sdk/{wallet-recovery-CVUalZ3p.js → wallet-recovery-DFaS3geI.js} +1 -1
  243. package/dist/public/sdk/wallet-ui.css +1 -1
  244. package/dist/{esm/sdk/walletAuthMethodRecord-Bv68Vq-g.js → public/sdk/walletAuthMethodRecord-CWdqdY_s.js} +1 -1
  245. package/dist/{esm/sdk/walletAuthority-v5wvv3IB.js → public/sdk/walletAuthority-BY3kyKQ-.js} +1 -1
  246. package/dist/{esm/sdk/walletCustodyEcdsaContinuity-rRHExT_R.js → public/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js} +1 -1
  247. package/dist/public/sdk/{walletDbName-DRzPv5Ir.js → walletDbName-BxWApBQF.js} +1 -1
  248. package/dist/{esm/sdk/walletOwnershipGeneration-pMmmJ6XA.js → public/sdk/walletOwnershipGeneration-DSGfjuV2.js} +1 -1
  249. package/dist/public/sdk/{walletRecoveryCommit-DvC6WlGz.js → walletRecoveryCommit-DQA_wveK.js} +1 -1
  250. package/dist/public/sdk/{walletRecoveryRotate-Dd3prJpr.js → walletRecoveryRotate-zvQThn37.js} +1 -1
  251. package/dist/public/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +1 -0
  252. package/dist/{esm/sdk/walletSessionAuthorizationStatus-DVV3xkAx.js → public/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js} +1 -1
  253. package/dist/{esm/sdk/walletSessionAuthorizationStore-D-MhJ0PC.js → public/sdk/walletSessionAuthorizationStore-DnUMtkev.js} +1 -1
  254. package/dist/public/sdk/warmSessionHydration-D8Vdro9n.js +1 -0
  255. package/dist/{esm/sdk/webauthnP256-XgYu-Y6E.js → public/sdk/webauthnP256-_ajaNl90.js} +1 -1
  256. package/dist/public/sdk/{webauthnPromptCoordinator-D5sP8Q7e.js → webauthnPromptCoordinator-9bVeHcTZ.js} +1 -1
  257. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  258. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  259. package/dist/public/wallet-assets.manifest.json +192 -192
  260. package/dist/public/wallet-service/index.html +4 -4
  261. package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +2 -1
  262. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +20 -3
  263. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +3 -0
  264. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuFooter.d.ts +0 -1
  265. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +5 -6
  266. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/icons.d.ts +2 -0
  267. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/presentation.d.ts +35 -0
  268. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/recovery-code-input.d.ts +17 -0
  269. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmContent.d.ts +3 -1
  270. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmHeader.d.ts +0 -1
  271. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationBody.d.ts +3 -1
  272. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationContent.d.ts +3 -1
  273. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationDrawer.d.ts +0 -1
  274. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ConfirmationModal.d.ts +0 -1
  275. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/EmailOtpInput.d.ts +0 -1
  276. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ExportPrivateKeySurface.d.ts +1 -1
  277. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationContent.d.ts +3 -1
  278. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/PasskeyRegistrationDetails.d.ts +0 -1
  279. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.d.ts +3 -1
  280. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/ReviewDisclosure.d.ts +0 -1
  281. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionLabel.d.ts +0 -1
  282. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.d.ts +3 -1
  283. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionReview.d.ts +3 -1
  284. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/TransactionTree.d.ts +0 -1
  285. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/WalletLocale.d.ts +18 -0
  286. package/dist/types/wallet/src/core/types/seams.d.ts +3 -0
  287. package/dist/types/wallet/src/core/ui/locale.d.ts +5 -0
  288. package/dist/types/wallet/src/core/ui/messages.d.ts +8 -0
  289. package/dist/types/wallet/src/index.d.ts +3 -1
  290. package/dist/types/wallet/src/react/components/AccountMenuButton/AccountMenuButtonMock.d.ts +1 -0
  291. package/dist/types/wallet/src/react/components/AccountMenuButton/WalletRegionSection.d.ts +3 -0
  292. package/dist/types/wallet/src/react/components/AccountMenuButton/WalletSettingsLayout.d.ts +4 -1
  293. package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/SeamsAuthMenuMock.d.ts +2 -1
  294. package/dist/types/wallet/src/react/context/WalletLocale.d.ts +16 -0
  295. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  296. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  297. package/package.json +1 -1
  298. package/dist/esm/sdk/ConfirmationDrawer-CXVNmfTy.js +0 -1
  299. package/dist/esm/sdk/adapters-CTlDBRJy.js +0 -2
  300. package/dist/esm/sdk/configBuilder-BMawmNpz.js +0 -1
  301. package/dist/esm/sdk/jsxRuntime.module-DKsgiFjd.js +0 -2
  302. package/dist/esm/sdk/localOnly-CPmpw381.js +0 -1
  303. package/dist/esm/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +0 -1
  304. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +0 -2
  305. package/dist/esm/sdk/runtime-auth-CpjGW90U.js +0 -1
  306. package/dist/esm/sdk/runtime-device-link-CKgfGi7D.js +0 -1
  307. package/dist/esm/sdk/runtime-ecdsa-tempo-5VV9xSEh.js +0 -1
  308. package/dist/esm/sdk/runtime-email-otp-D1hYZNn6.js +0 -1
  309. package/dist/esm/sdk/runtime-export-B92wQD25.js +0 -1
  310. package/dist/esm/sdk/runtime-near-CUuKg38M.js +0 -1
  311. package/dist/esm/sdk/runtime-preferences-EdL3G_MO.js +0 -1
  312. package/dist/esm/sdk/runtime-recovery-uyw8sywI.js +0 -1
  313. package/dist/esm/sdk/sessionObservationRevision-DmmNV25w.js +0 -1
  314. package/dist/esm/sdk/shared-ha31XIdc.js +0 -6
  315. package/dist/esm/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +0 -1
  316. package/dist/esm/sdk/warmSessionHydration-CsQpQVuy.js +0 -1
  317. package/dist/public/sdk/ConfirmationDrawer-CXVNmfTy.js +0 -1
  318. package/dist/public/sdk/adapters-CTlDBRJy.js +0 -2
  319. package/dist/public/sdk/configBuilder-BMawmNpz.js +0 -1
  320. package/dist/public/sdk/jsxRuntime.module-DKsgiFjd.js +0 -2
  321. package/dist/public/sdk/localOnly-CPmpw381.js +0 -1
  322. package/dist/public/sdk/mountExportPrivateKeySurface-C8_tpDHF.js +0 -1
  323. package/dist/public/sdk/mountRecoveryCodeBackupSurface-BtNFtmSj.js +0 -2
  324. package/dist/public/sdk/runtime-auth-CpjGW90U.js +0 -1
  325. package/dist/public/sdk/runtime-device-link-CKgfGi7D.js +0 -1
  326. package/dist/public/sdk/runtime-ecdsa-tempo-5VV9xSEh.js +0 -1
  327. package/dist/public/sdk/runtime-email-otp-D1hYZNn6.js +0 -1
  328. package/dist/public/sdk/runtime-export-B92wQD25.js +0 -1
  329. package/dist/public/sdk/runtime-near-CUuKg38M.js +0 -1
  330. package/dist/public/sdk/runtime-preferences-EdL3G_MO.js +0 -1
  331. package/dist/public/sdk/runtime-recovery-uyw8sywI.js +0 -1
  332. package/dist/public/sdk/sessionObservationRevision-DmmNV25w.js +0 -1
  333. package/dist/public/sdk/shared-ha31XIdc.js +0 -6
  334. package/dist/public/sdk/walletRegistrationSetupPrewarm-DcbhVNMQ.js +0 -1
  335. package/dist/public/sdk/warmSessionHydration-CsQpQVuy.js +0 -1
  336. /package/dist/esm/sdk/{base64-DW79QA0h.js → base64-BmKR3UqU.js} +0 -0
  337. /package/dist/esm/sdk/{signingSessionSeal-DX41aXUL.js → signingSessionSeal-DqbjG8c8.js} +0 -0
  338. /package/dist/esm/sdk/{theme-BKaFqCAj.js → theme-os0Salmo.js} +0 -0
  339. /package/dist/public/sdk/{base64-DW79QA0h.js → base64-BmKR3UqU.js} +0 -0
  340. /package/dist/public/sdk/{signingSessionSeal-DX41aXUL.js → signingSessionSeal-DqbjG8c8.js} +0 -0
  341. /package/dist/public/sdk/{theme-BKaFqCAj.js → theme-os0Salmo.js} +0 -0
@@ -1,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-primary);
590
+ background: var(--seams-colors-textPrimary);
589
591
  border-color: transparent;
590
- color: var(--seams-colors-textButton);
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: var(--seams-colors-buttonHoverBackground);
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 `${daysAgo} days ago`;
118
- return new Date(value).toLocaleDateString(void 0, {
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 = [`Device ${deviceNumber}`];
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(`Added ${friendlyDay(viewCreatedAtMs(view), now)}`);
150
- parts.push(`Last used ${friendlyDay(viewLastActivityAtMs(view), now)}`);
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" : `your "${credential.device.label}" passkey`;
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 `You're signed in with ${viewCredential(target).kind === "email_otp" ? "your email code" : "this passkey"}. To remove it, sign in with ${siblingMethodName(siblings)} first.`;
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: ["Unable to load your devices: ", loadState.message] }), /* @__PURE__ */ jsx("button", {
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__ */ jsxs("span", { children: [
387
- "Remove ",
388
- title,
389
- "? It will lose access right away."
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
  }
@@ -15,6 +15,7 @@
15
15
  padding: 4px 12px 4px 4px;
16
16
  border-radius: 6px;
17
17
  width: fit-content;
18
+ cursor: pointer;
18
19
  }
19
20
 
20
21
  .seams-user-account-button-trigger .hide-username {
@@ -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
  })