@seams/wallet 0.20.0 → 0.22.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 (409) hide show
  1. package/dist/.build-inputs.sha256 +1 -1
  2. package/dist/esm/SeamsWeb/SeamsWeb.js +2 -2
  3. package/dist/esm/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.js +25 -5
  4. package/dist/esm/SeamsWeb/operations/tempo/executeEvmFamilyTransaction.js +4 -2
  5. package/dist/esm/SeamsWeb/walletIframe/client/router.js +5 -2
  6. package/dist/esm/core/rpcClients/evm/EvmClient.js +11 -9
  7. package/dist/esm/core/signingEngine/flows/signEvmFamily/thresholdAdmission.js +1 -1
  8. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.js +20 -9
  9. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/TransactionReceipt.js +107 -43
  10. package/dist/esm/core/signingEngine/uiConfirm/ui/preact/mountConfirmationSurface.js +1 -1
  11. package/dist/esm/core/signingEngine/uiConfirm/ui/transaction-receipt.js +36 -6
  12. package/dist/esm/core/ui/messages.js +9 -14
  13. package/dist/esm/plugins/SeamsWeb/walletIframe/sanitization.js +18 -0
  14. package/dist/esm/plugins/plugin-utils.js +5 -2
  15. package/dist/esm/react/components/AccountMenuButton/AuthenticationMethodsModal.js +3 -9
  16. package/dist/esm/react/components/AccountMenuButton/LinkedDevicesModal.js +2 -2
  17. package/dist/esm/react/components/AccountMenuButton/ProfileDropdown.js +23 -9
  18. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.css +376 -84
  19. package/dist/esm/react/components/AccountMenuButton/TransactionSettingsSection.js +87 -167
  20. package/dist/esm/react/components/AccountMenuButton/WalletRegionSection.js +11 -9
  21. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.css +76 -74
  22. package/dist/esm/react/components/AccountMenuButton/WalletSettingsLayout.js +23 -22
  23. package/dist/esm/react/components/AccountMenuButton/Web3AuthProfileButton.css +1 -5
  24. package/dist/esm/react/components/AccountMenuButton/icons/MapPinIcon.js +12 -0
  25. package/dist/esm/react/components/AccountMenuButton/index.js +13 -2
  26. package/dist/esm/react/styles/styles.css +452 -162
  27. package/dist/esm/sdk/{ConfirmationDrawer-DCw0m-Iv.js → ConfirmationDrawer-Ck33ZmU-.js} +1 -1
  28. package/dist/esm/sdk/{NonceCoordinator-Dq-FZpBz.js → NonceCoordinator-Do23iTzQ.js} +1 -1
  29. package/dist/esm/sdk/accountLifecycle-CXTlwnAS.js +1 -0
  30. package/dist/esm/sdk/activeWalletSession-BtEHhe99.js +1 -0
  31. package/dist/esm/sdk/adapters-CgJpSAxH.js +2 -0
  32. package/dist/esm/sdk/appearance-token-vars-BA3KQyEE.js +2 -0
  33. package/dist/esm/sdk/challengeDelivery-C88JNwKf.js +1 -0
  34. package/dist/esm/sdk/clientSessionPersistenceState-DFGHXoKK.js +1 -0
  35. package/dist/esm/sdk/collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js +1 -0
  36. package/dist/esm/sdk/{commitQueue-BW7BpYyA.js → commitQueue-BQPOhyGl.js} +1 -1
  37. package/dist/esm/sdk/{display-WtILOPQR.js → display-Dtugjeya.js} +1 -1
  38. package/dist/esm/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +1 -0
  39. package/dist/{public/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js → esm/sdk/ecdsaDerivationClientWasm-D1HzwUgV.js} +1 -1
  40. package/dist/esm/sdk/ecdsaDerivationExport-DrFESeRP.js +1 -0
  41. package/dist/esm/sdk/ecdsaWalletRecords-BmhuJF1y.js +1 -0
  42. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +1 -0
  43. package/dist/esm/sdk/{enrichDisplayModelWithAbi-DSj4NAlY.js → enrichDisplayModelWithAbi-D0o0IL7_.js} +1 -1
  44. package/dist/esm/sdk/{evmCryptoWasm-DeobzyP-.js → evmCryptoWasm-S2gL5ht4.js} +1 -1
  45. package/dist/esm/sdk/{export-viewer-host-DsdzagKK.js → export-viewer-host-C9n-62Pi.js} +1 -1
  46. package/dist/esm/sdk/exportKeypairOperation-Du9HKB8f.js +1 -0
  47. package/dist/esm/sdk/host-DoftJdVQ.js +1 -0
  48. package/dist/esm/sdk/keyMaterialEnvelope-B3v6HLtz.js +1 -0
  49. package/dist/esm/sdk/{lanes-BzU7cv2T.js → lanes-l274pbT5.js} +1 -1
  50. package/dist/esm/sdk/localOnly-CvFSZFUy.js +1 -0
  51. package/dist/esm/sdk/{mountExportPrivateKeySurface-DQzFzhNu.js → mountExportPrivateKeySurface-DdJHWwqY.js} +1 -1
  52. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-D3QFgMGE.js +2 -0
  53. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +1 -0
  54. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +1 -0
  55. package/dist/esm/sdk/{nonceLaneKeys-BzMBVxMU.js → nonceLaneKeys-CR2XEvnk.js} +1 -1
  56. package/dist/esm/sdk/{normalization-Ct9-AY13.js → normalization-Ctkj80dW.js} +1 -1
  57. package/dist/esm/sdk/{operationFingerprint-C4VX-0NI.js → operationFingerprint-DRPONhBD.js} +1 -1
  58. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +1 -0
  59. package/dist/esm/sdk/presignaturePool-DNiA3sgr.js +1 -0
  60. package/dist/esm/sdk/{singletons-CAsc9LvA.js → presignatures-DGLNs29C.js} +1 -1
  61. package/dist/esm/sdk/recovery-entrypoint-CNVjXz6A.js +1 -0
  62. package/dist/esm/sdk/recoveryAuthorization-BplZWc-N.js +1 -0
  63. package/dist/esm/sdk/{registration-DknFwoqn.js → registration-CIxJvbTo.js} +1 -1
  64. package/dist/esm/sdk/registration-CeOmKyCG.js +1 -0
  65. package/dist/esm/sdk/registrationAccounts-BfO6Ztye.js +1 -0
  66. package/dist/esm/sdk/registrationIntent-DW_kKWlx.js +1 -0
  67. package/dist/esm/sdk/{registrationSignerPlan-BHkqlian.js → registrationSignerPlan-B66FjqIp.js} +1 -1
  68. package/dist/esm/sdk/{requireStepUpAuth-CnSCFSOZ.js → requireStepUpAuth-DsNLml1i.js} +1 -1
  69. package/dist/esm/sdk/routerAbNormalSigning-DSAfCcND.js +1 -0
  70. package/dist/esm/sdk/runtime-auth-C0V-5znH.js +1 -0
  71. package/dist/{public/sdk/runtime-device-link-Dn_5hPCq.js → esm/sdk/runtime-device-link-B1jpHQSF.js} +1 -1
  72. package/dist/{public/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js → esm/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js} +1 -1
  73. package/dist/esm/sdk/runtime-email-otp-DXuxFOjL.js +1 -0
  74. package/dist/esm/sdk/{runtime-export-Brz53_oi.js → runtime-export-Ba12ChDI.js} +1 -1
  75. package/dist/{public/sdk/runtime-near-Da_xFUXx.js → esm/sdk/runtime-near-DRrdWzmr.js} +1 -1
  76. package/dist/esm/sdk/runtime-preferences-BWyhRaBA.js +1 -0
  77. package/dist/esm/sdk/runtime-recovery-DlJlaZlf.js +1 -0
  78. package/dist/esm/sdk/runtime-recovery-codes-CuqYWqK7.js +1 -0
  79. package/dist/esm/sdk/secp256k1-CYu8ENjP.js +1 -0
  80. package/dist/esm/sdk/sessionObservationRevision-abErAhd6.js +1 -0
  81. package/dist/esm/sdk/shared-B95wnpoD.js +6 -0
  82. package/dist/esm/sdk/signEvmFamily-C4XMiSue.js +1 -0
  83. package/dist/{public/sdk/signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js → esm/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js} +1 -1
  84. package/dist/esm/sdk/{signEvmWithUiConfirm-D6nmJr_L.js → signEvmWithUiConfirm-lZyPfrGe.js} +1 -1
  85. package/dist/esm/sdk/signNear-B_UcqMRf.js +1 -0
  86. package/dist/esm/sdk/{signatureUses-B_nN17i7.js → signatureUses-CY4U-X6V.js} +1 -1
  87. package/dist/esm/sdk/{registrationIds-B1OpqRAt.js → signerSlot-CpyIfl3J.js} +1 -1
  88. package/dist/esm/sdk/signingFlow-Co_QtuHK.js +2 -0
  89. package/dist/esm/sdk/signingQueue-Cj9sCJLj.js +1 -0
  90. package/dist/esm/sdk/thresholdEcdsa-LvkD6z8-.js +1 -0
  91. package/dist/esm/sdk/{trace-CsRMlSh1.js → trace-CWTzEALZ.js} +1 -1
  92. package/dist/esm/sdk/transaction-activity-CpDMkSPm.js +1 -0
  93. package/dist/{public/sdk/transactionState-lB2qpkOm.js → esm/sdk/transactionState-BaFSiA9t.js} +1 -1
  94. package/dist/esm/sdk/tx-confirm-ui.js +186 -71
  95. package/dist/esm/sdk/{types-CQTWmtqu.js → types-BrEW276O.js} +1 -1
  96. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  97. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  98. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  99. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  100. package/dist/esm/sdk/wallet-recovery-BEui57xM.js +1 -0
  101. package/dist/esm/sdk/wallet-ui.css +1 -1
  102. package/dist/esm/sdk/{walletAuthMethodRecord-CWdqdY_s.js → walletAuthMethodRecord-Cv_MYpxt.js} +1 -1
  103. package/dist/esm/sdk/walletCapabilityBindings-CKOK39sP.js +1 -0
  104. package/dist/esm/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +1 -0
  105. package/dist/esm/sdk/walletCustodyOperation-BO_tSfGY.js +1 -0
  106. package/dist/esm/sdk/walletDbName-BVZhb4xF.js +1 -0
  107. package/dist/esm/sdk/walletOwnershipGeneration-CQzaodhB.js +1 -0
  108. package/dist/esm/sdk/walletRecoveryAdminProof-CtH8_lph.js +1 -0
  109. package/dist/esm/sdk/walletRecoveryCommit-B_e4k5Pa.js +1 -0
  110. package/dist/esm/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +1 -0
  111. package/dist/esm/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +1 -0
  112. package/dist/esm/sdk/walletSessionAuthorizationStore-DYRMCkiT.js +1 -0
  113. package/dist/esm/sdk/warmSessionHydration-CY9ofEGr.js +1 -0
  114. package/dist/{public/sdk/webauthnP256-_ajaNl90.js → esm/sdk/webauthnP256-unqBoZCk.js} +1 -1
  115. package/dist/esm/shared-ts/src/device-linking/deviceManagement.js +2 -3
  116. package/dist/esm/shared-ts/src/utils/evmRpcResults.js +5 -3
  117. package/dist/esm/shared-ts/src/utils/routerAbEcdsaDerivation.js +2 -1
  118. package/dist/public/headers.manifest.json +1 -1
  119. package/dist/public/sdk/{ConfirmationDrawer-DCw0m-Iv.js → ConfirmationDrawer-Ck33ZmU-.js} +1 -1
  120. package/dist/public/sdk/{NonceCoordinator-Dq-FZpBz.js → NonceCoordinator-Do23iTzQ.js} +1 -1
  121. package/dist/public/sdk/accountLifecycle-CXTlwnAS.js +1 -0
  122. package/dist/public/sdk/activeWalletSession-BtEHhe99.js +1 -0
  123. package/dist/public/sdk/adapters-CgJpSAxH.js +2 -0
  124. package/dist/public/sdk/appearance-token-vars-BA3KQyEE.js +2 -0
  125. package/dist/public/sdk/challengeDelivery-C88JNwKf.js +1 -0
  126. package/dist/public/sdk/clientSessionPersistenceState-DFGHXoKK.js +1 -0
  127. package/dist/public/sdk/collectAuthenticationCredentialForChallengeB64u-CSwy9csE.js +1 -0
  128. package/dist/public/sdk/{commitQueue-BW7BpYyA.js → commitQueue-BQPOhyGl.js} +1 -1
  129. package/dist/public/sdk/{display-WtILOPQR.js → display-Dtugjeya.js} +1 -1
  130. package/dist/public/sdk/ecdsaCapabilityManifest-B3u6J5gn.js +1 -0
  131. package/dist/{esm/sdk/ecdsaDerivationClientWasm-DmwKWUEb.js → public/sdk/ecdsaDerivationClientWasm-D1HzwUgV.js} +1 -1
  132. package/dist/public/sdk/ecdsaDerivationExport-DrFESeRP.js +1 -0
  133. package/dist/public/sdk/ecdsaWalletRecords-BmhuJF1y.js +1 -0
  134. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-DreNrM6n.js +1 -0
  135. package/dist/public/sdk/{enrichDisplayModelWithAbi-DSj4NAlY.js → enrichDisplayModelWithAbi-D0o0IL7_.js} +1 -1
  136. package/dist/public/sdk/{evmCryptoWasm-DeobzyP-.js → evmCryptoWasm-S2gL5ht4.js} +1 -1
  137. package/dist/public/sdk/{export-viewer-host-DsdzagKK.js → export-viewer-host-C9n-62Pi.js} +1 -1
  138. package/dist/public/sdk/exportKeypairOperation-Du9HKB8f.js +1 -0
  139. package/dist/public/sdk/host-DoftJdVQ.js +1 -0
  140. package/dist/public/sdk/keyMaterialEnvelope-B3v6HLtz.js +1 -0
  141. package/dist/public/sdk/{lanes-BzU7cv2T.js → lanes-l274pbT5.js} +1 -1
  142. package/dist/public/sdk/localOnly-CvFSZFUy.js +1 -0
  143. package/dist/public/sdk/{mountExportPrivateKeySurface-DQzFzhNu.js → mountExportPrivateKeySurface-DdJHWwqY.js} +1 -1
  144. package/dist/public/sdk/mountRecoveryCodeBackupSurface-D3QFgMGE.js +2 -0
  145. package/dist/public/sdk/nearEd25519YaoMaterialActivation-BK8_DxHs.js +1 -0
  146. package/dist/public/sdk/nearEd25519YaoSigningPreparation-BgCxoh9S.js +1 -0
  147. package/dist/public/sdk/{nonceLaneKeys-BzMBVxMU.js → nonceLaneKeys-CR2XEvnk.js} +1 -1
  148. package/dist/public/sdk/{normalization-Ct9-AY13.js → normalization-Ctkj80dW.js} +1 -1
  149. package/dist/public/sdk/{operationFingerprint-C4VX-0NI.js → operationFingerprint-DRPONhBD.js} +1 -1
  150. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-LbstFwcY.js +1 -0
  151. package/dist/public/sdk/presignaturePool-DNiA3sgr.js +1 -0
  152. package/dist/public/sdk/{singletons-CAsc9LvA.js → presignatures-DGLNs29C.js} +1 -1
  153. package/dist/public/sdk/recovery-entrypoint-CNVjXz6A.js +1 -0
  154. package/dist/public/sdk/recoveryAuthorization-BplZWc-N.js +1 -0
  155. package/dist/public/sdk/{registration-DknFwoqn.js → registration-CIxJvbTo.js} +1 -1
  156. package/dist/public/sdk/registration-CeOmKyCG.js +1 -0
  157. package/dist/public/sdk/registrationAccounts-BfO6Ztye.js +1 -0
  158. package/dist/public/sdk/registrationIntent-DW_kKWlx.js +1 -0
  159. package/dist/public/sdk/{registrationSignerPlan-BHkqlian.js → registrationSignerPlan-B66FjqIp.js} +1 -1
  160. package/dist/public/sdk/{requireStepUpAuth-CnSCFSOZ.js → requireStepUpAuth-DsNLml1i.js} +1 -1
  161. package/dist/public/sdk/routerAbNormalSigning-DSAfCcND.js +1 -0
  162. package/dist/public/sdk/runtime-auth-C0V-5znH.js +1 -0
  163. package/dist/{esm/sdk/runtime-device-link-Dn_5hPCq.js → public/sdk/runtime-device-link-B1jpHQSF.js} +1 -1
  164. package/dist/{esm/sdk/runtime-ecdsa-tempo-lTFTb9Rh.js → public/sdk/runtime-ecdsa-tempo-CDSZ3pxS.js} +1 -1
  165. package/dist/public/sdk/runtime-email-otp-DXuxFOjL.js +1 -0
  166. package/dist/public/sdk/{runtime-export-Brz53_oi.js → runtime-export-Ba12ChDI.js} +1 -1
  167. package/dist/{esm/sdk/runtime-near-Da_xFUXx.js → public/sdk/runtime-near-DRrdWzmr.js} +1 -1
  168. package/dist/public/sdk/runtime-preferences-BWyhRaBA.js +1 -0
  169. package/dist/public/sdk/runtime-recovery-DlJlaZlf.js +1 -0
  170. package/dist/public/sdk/runtime-recovery-codes-CuqYWqK7.js +1 -0
  171. package/dist/public/sdk/secp256k1-CYu8ENjP.js +1 -0
  172. package/dist/public/sdk/sessionObservationRevision-abErAhd6.js +1 -0
  173. package/dist/public/sdk/shared-B95wnpoD.js +6 -0
  174. package/dist/public/sdk/signEvmFamily-C4XMiSue.js +1 -0
  175. package/dist/{esm/sdk/signEvmFamilyWithUiConfirmForTempo-NYCFU6Li.js → public/sdk/signEvmFamilyWithUiConfirmForTempo-4A3D9nKv.js} +1 -1
  176. package/dist/public/sdk/{signEvmWithUiConfirm-D6nmJr_L.js → signEvmWithUiConfirm-lZyPfrGe.js} +1 -1
  177. package/dist/public/sdk/signNear-B_UcqMRf.js +1 -0
  178. package/dist/public/sdk/{signatureUses-B_nN17i7.js → signatureUses-CY4U-X6V.js} +1 -1
  179. package/dist/public/sdk/{registrationIds-B1OpqRAt.js → signerSlot-CpyIfl3J.js} +1 -1
  180. package/dist/public/sdk/signingFlow-Co_QtuHK.js +2 -0
  181. package/dist/public/sdk/signingQueue-Cj9sCJLj.js +1 -0
  182. package/dist/public/sdk/thresholdEcdsa-LvkD6z8-.js +1 -0
  183. package/dist/public/sdk/{trace-CsRMlSh1.js → trace-CWTzEALZ.js} +1 -1
  184. package/dist/public/sdk/transaction-activity-CpDMkSPm.js +1 -0
  185. package/dist/{esm/sdk/transactionState-lB2qpkOm.js → public/sdk/transactionState-BaFSiA9t.js} +1 -1
  186. package/dist/public/sdk/tx-confirm-ui.js +186 -71
  187. package/dist/public/sdk/{types-CQTWmtqu.js → types-BrEW276O.js} +1 -1
  188. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  189. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  190. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  191. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  192. package/dist/public/sdk/wallet-recovery-BEui57xM.js +1 -0
  193. package/dist/public/sdk/wallet-ui.css +1 -1
  194. package/dist/public/sdk/{walletAuthMethodRecord-CWdqdY_s.js → walletAuthMethodRecord-Cv_MYpxt.js} +1 -1
  195. package/dist/public/sdk/walletCapabilityBindings-CKOK39sP.js +1 -0
  196. package/dist/public/sdk/walletCustodyEcdsaContinuity-5XsLsT8D.js +1 -0
  197. package/dist/public/sdk/walletCustodyOperation-BO_tSfGY.js +1 -0
  198. package/dist/public/sdk/walletDbName-BVZhb4xF.js +1 -0
  199. package/dist/public/sdk/walletOwnershipGeneration-CQzaodhB.js +1 -0
  200. package/dist/public/sdk/walletRecoveryAdminProof-CtH8_lph.js +1 -0
  201. package/dist/public/sdk/walletRecoveryCommit-B_e4k5Pa.js +1 -0
  202. package/dist/public/sdk/walletRegistrationSetupPrewarm-CQow9u8m.js +1 -0
  203. package/dist/public/sdk/walletSessionAuthorizationStatus-_KtCVFYW.js +1 -0
  204. package/dist/public/sdk/walletSessionAuthorizationStore-DYRMCkiT.js +1 -0
  205. package/dist/public/sdk/warmSessionHydration-CY9ofEGr.js +1 -0
  206. package/dist/{esm/sdk/webauthnP256-_ajaNl90.js → public/sdk/webauthnP256-unqBoZCk.js} +1 -1
  207. package/dist/public/sdk/workers/email-otp.worker.js +6 -1
  208. package/dist/public/wallet-assets.manifest.json +253 -276
  209. package/dist/public/wallet-service/index.html +4 -4
  210. package/dist/types/shared-ts/src/authorization/walletCustodyOperation.d.ts +1 -1
  211. package/dist/types/shared-ts/src/device-linking/contracts.d.ts +1 -7
  212. package/dist/types/shared-ts/src/passkey-custody/ceremonyCommitPayload.d.ts +5 -0
  213. package/dist/types/shared-ts/src/utils/evmRpcResults.d.ts +3 -3
  214. package/dist/types/shared-ts/src/utils/routerAbEcdsaDerivation.d.ts +1 -1
  215. package/dist/types/wallet/src/SeamsWeb/operations/recovery/walletRecoveryAdminProof.d.ts +46 -0
  216. package/dist/types/wallet/src/SeamsWeb/operations/recovery/walletRecoveryCodeBackup.d.ts +4 -1
  217. package/dist/types/wallet/src/SeamsWeb/operations/recovery/walletRecoveryRotation.d.ts +11 -7
  218. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +9 -1
  219. package/dist/types/wallet/src/SeamsWeb/signingSurface/BrowserSigningSurface.d.ts +4 -3
  220. package/dist/types/wallet/src/SeamsWeb/signingSurface/ports.d.ts +6 -4
  221. package/dist/types/wallet/src/SeamsWeb/signingSurface/types.d.ts +2 -2
  222. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +2 -6
  223. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/WalletHostRuntime.d.ts +1 -0
  224. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/controller.d.ts +2 -0
  225. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestWalletMove.d.ts +1 -1
  226. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +5 -1
  227. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/recoveryAuthorization.d.ts +6 -0
  228. package/dist/types/wallet/src/core/indexedDB/seamsWalletDB/pendingWalletRecoveryCodeBackup.d.ts +14 -3
  229. package/dist/types/wallet/src/core/rpcClients/relayer/walletRecoveryRotate.d.ts +8 -0
  230. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/preact/RecoveryCodeBackupSurface.d.ts +1 -0
  231. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-activity.d.ts +2 -2
  232. package/dist/types/wallet/src/core/signingEngine/uiConfirm/ui/transaction-receipt.d.ts +25 -6
  233. package/dist/types/wallet/src/core/signingEngine/walletCustody/walletRecoveryRotation.d.ts +22 -3
  234. package/dist/types/wallet/src/core/signingEngine/workerManager/workerTypes.d.ts +1 -0
  235. package/dist/types/wallet/src/core/signingEngine/workerManager/workers/email-otp/unlock.d.ts +1 -0
  236. package/dist/types/wallet/src/core/types/sdkSentEvents.d.ts +8 -2
  237. package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
  238. package/dist/types/wallet/src/plugins/plugin-utils.d.ts +1 -1
  239. package/dist/types/wallet/src/react/components/AccountMenuButton/icons/MapPinIcon.d.ts +2 -0
  240. package/dist/workers/email-otp.worker.js +6 -1
  241. package/package.json +1 -1
  242. package/dist/esm/react/components/AccountMenuButton/SegmentedControl.js +0 -77
  243. package/dist/esm/sdk/accountLifecycle-fLNUdjct.js +0 -1
  244. package/dist/esm/sdk/activeWalletSession-BpbnpU9s.js +0 -1
  245. package/dist/esm/sdk/adapters-BNmcyf9K.js +0 -2
  246. package/dist/esm/sdk/appearance-token-vars-DxBm_cKA.js +0 -2
  247. package/dist/esm/sdk/challengeDelivery-CG2J5Qxs.js +0 -1
  248. package/dist/esm/sdk/clientSessionPersistenceState-BgO4P6CZ.js +0 -1
  249. package/dist/esm/sdk/digestEncoding-aC4dSf_x.js +0 -1
  250. package/dist/esm/sdk/ecdsaCapabilityManifest-DRc423SV.js +0 -1
  251. package/dist/esm/sdk/ecdsaDerivationExport-DX89rq_u.js +0 -1
  252. package/dist/esm/sdk/ecdsaWalletRecords-CxxUt3fS.js +0 -1
  253. package/dist/esm/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js +0 -1
  254. package/dist/esm/sdk/exportKeypairOperation-BwW_E4Lt.js +0 -1
  255. package/dist/esm/sdk/host-DMR4KDy9.js +0 -1
  256. package/dist/esm/sdk/localOnly-DO191vDh.js +0 -1
  257. package/dist/esm/sdk/mountRecoveryCodeBackupSurface-B1D0ovqx.js +0 -2
  258. package/dist/esm/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js +0 -1
  259. package/dist/esm/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js +0 -1
  260. package/dist/esm/sdk/passkey-custody-Ba-NQ_4C.js +0 -1
  261. package/dist/esm/sdk/pendingWalletRecoveryCodeBackup-DOeIn_Qj.js +0 -1
  262. package/dist/esm/sdk/presignaturePool-BHoxnbOA.js +0 -1
  263. package/dist/esm/sdk/presignatures-K-yuzOE0.js +0 -1
  264. package/dist/esm/sdk/primitives-CTmDwMNc.js +0 -1
  265. package/dist/esm/sdk/recovery-entrypoint-DWghFZrZ.js +0 -1
  266. package/dist/esm/sdk/registration-sQndIWRF.js +0 -1
  267. package/dist/esm/sdk/registrationAccounts-CD1u1ZqZ.js +0 -1
  268. package/dist/esm/sdk/registrationIntent-D4YDjf2U.js +0 -1
  269. package/dist/esm/sdk/routerAbNormalSigning-BV1t27aB.js +0 -1
  270. package/dist/esm/sdk/runtime-auth-BxG-J-BB.js +0 -1
  271. package/dist/esm/sdk/runtime-email-otp-CPqTCH8Q.js +0 -1
  272. package/dist/esm/sdk/runtime-preferences-riUZGaTs.js +0 -1
  273. package/dist/esm/sdk/runtime-recovery-CTj4nDAM.js +0 -1
  274. package/dist/esm/sdk/runtime-recovery-codes-D8T9LQ7-.js +0 -1
  275. package/dist/esm/sdk/secp256k1-wOOHtPcK.js +0 -1
  276. package/dist/esm/sdk/sessionObservationRevision-C7v-wN8_.js +0 -1
  277. package/dist/esm/sdk/shared-hx7KVyeq.js +0 -6
  278. package/dist/esm/sdk/signEvmFamily-DT34Vtpa.js +0 -1
  279. package/dist/esm/sdk/signNear-B000QxBd.js +0 -1
  280. package/dist/esm/sdk/signerSlot-FJAGOhmg.js +0 -1
  281. package/dist/esm/sdk/signingFlow-gl85GOW4.js +0 -2
  282. package/dist/esm/sdk/signingQueue-gW7wmOuL.js +0 -1
  283. package/dist/esm/sdk/thresholdEcdsa-Ci7yz395.js +0 -1
  284. package/dist/esm/sdk/transaction-activity-C0nCSW6c.js +0 -1
  285. package/dist/esm/sdk/wallet-recovery-DFaS3geI.js +0 -1
  286. package/dist/esm/sdk/walletAuthority-BY3kyKQ-.js +0 -1
  287. package/dist/esm/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js +0 -1
  288. package/dist/esm/sdk/walletDbName-BxWApBQF.js +0 -1
  289. package/dist/esm/sdk/walletOwnershipGeneration-DSGfjuV2.js +0 -1
  290. package/dist/esm/sdk/walletRecoveryCommit-DQA_wveK.js +0 -1
  291. package/dist/esm/sdk/walletRecoveryRotate-zvQThn37.js +0 -1
  292. package/dist/esm/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +0 -1
  293. package/dist/esm/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js +0 -1
  294. package/dist/esm/sdk/walletSessionAuthorizationStore-DnUMtkev.js +0 -1
  295. package/dist/esm/sdk/warmSessionHydration-D8Vdro9n.js +0 -1
  296. package/dist/public/sdk/accountLifecycle-fLNUdjct.js +0 -1
  297. package/dist/public/sdk/activeWalletSession-BpbnpU9s.js +0 -1
  298. package/dist/public/sdk/adapters-BNmcyf9K.js +0 -2
  299. package/dist/public/sdk/appearance-token-vars-DxBm_cKA.js +0 -2
  300. package/dist/public/sdk/challengeDelivery-CG2J5Qxs.js +0 -1
  301. package/dist/public/sdk/clientSessionPersistenceState-BgO4P6CZ.js +0 -1
  302. package/dist/public/sdk/digestEncoding-aC4dSf_x.js +0 -1
  303. package/dist/public/sdk/ecdsaCapabilityManifest-DRc423SV.js +0 -1
  304. package/dist/public/sdk/ecdsaDerivationExport-DX89rq_u.js +0 -1
  305. package/dist/public/sdk/ecdsaWalletRecords-CxxUt3fS.js +0 -1
  306. package/dist/public/sdk/emailOtpEcdsaDerivationIdentity-CupWCKNg.js +0 -1
  307. package/dist/public/sdk/exportKeypairOperation-BwW_E4Lt.js +0 -1
  308. package/dist/public/sdk/host-DMR4KDy9.js +0 -1
  309. package/dist/public/sdk/localOnly-DO191vDh.js +0 -1
  310. package/dist/public/sdk/mountRecoveryCodeBackupSurface-B1D0ovqx.js +0 -2
  311. package/dist/public/sdk/nearEd25519YaoMaterialActivation-DgWDGRI_.js +0 -1
  312. package/dist/public/sdk/nearEd25519YaoSigningPreparation-yKDLQXBS.js +0 -1
  313. package/dist/public/sdk/passkey-custody-Ba-NQ_4C.js +0 -1
  314. package/dist/public/sdk/pendingWalletRecoveryCodeBackup-DOeIn_Qj.js +0 -1
  315. package/dist/public/sdk/presignaturePool-BHoxnbOA.js +0 -1
  316. package/dist/public/sdk/presignatures-K-yuzOE0.js +0 -1
  317. package/dist/public/sdk/primitives-CTmDwMNc.js +0 -1
  318. package/dist/public/sdk/recovery-entrypoint-DWghFZrZ.js +0 -1
  319. package/dist/public/sdk/registration-sQndIWRF.js +0 -1
  320. package/dist/public/sdk/registrationAccounts-CD1u1ZqZ.js +0 -1
  321. package/dist/public/sdk/registrationIntent-D4YDjf2U.js +0 -1
  322. package/dist/public/sdk/routerAbNormalSigning-BV1t27aB.js +0 -1
  323. package/dist/public/sdk/runtime-auth-BxG-J-BB.js +0 -1
  324. package/dist/public/sdk/runtime-email-otp-CPqTCH8Q.js +0 -1
  325. package/dist/public/sdk/runtime-preferences-riUZGaTs.js +0 -1
  326. package/dist/public/sdk/runtime-recovery-CTj4nDAM.js +0 -1
  327. package/dist/public/sdk/runtime-recovery-codes-D8T9LQ7-.js +0 -1
  328. package/dist/public/sdk/secp256k1-wOOHtPcK.js +0 -1
  329. package/dist/public/sdk/sessionObservationRevision-C7v-wN8_.js +0 -1
  330. package/dist/public/sdk/shared-hx7KVyeq.js +0 -6
  331. package/dist/public/sdk/signEvmFamily-DT34Vtpa.js +0 -1
  332. package/dist/public/sdk/signNear-B000QxBd.js +0 -1
  333. package/dist/public/sdk/signerSlot-FJAGOhmg.js +0 -1
  334. package/dist/public/sdk/signingFlow-gl85GOW4.js +0 -2
  335. package/dist/public/sdk/signingQueue-gW7wmOuL.js +0 -1
  336. package/dist/public/sdk/thresholdEcdsa-Ci7yz395.js +0 -1
  337. package/dist/public/sdk/transaction-activity-C0nCSW6c.js +0 -1
  338. package/dist/public/sdk/wallet-recovery-DFaS3geI.js +0 -1
  339. package/dist/public/sdk/walletAuthority-BY3kyKQ-.js +0 -1
  340. package/dist/public/sdk/walletCustodyEcdsaContinuity-mGh1Ysko.js +0 -1
  341. package/dist/public/sdk/walletDbName-BxWApBQF.js +0 -1
  342. package/dist/public/sdk/walletOwnershipGeneration-DSGfjuV2.js +0 -1
  343. package/dist/public/sdk/walletRecoveryCommit-DQA_wveK.js +0 -1
  344. package/dist/public/sdk/walletRecoveryRotate-zvQThn37.js +0 -1
  345. package/dist/public/sdk/walletRegistrationSetupPrewarm-DdVpKccU.js +0 -1
  346. package/dist/public/sdk/walletSessionAuthorizationStatus-ONPRiEbK.js +0 -1
  347. package/dist/public/sdk/walletSessionAuthorizationStore-DnUMtkev.js +0 -1
  348. package/dist/public/sdk/warmSessionHydration-D8Vdro9n.js +0 -1
  349. package/dist/types/wallet/src/react/components/AccountMenuButton/SegmentedControl.d.ts +0 -25
  350. /package/dist/esm/sdk/{accountIds-Cpvlkvbe.js → accountIds-BzZs7YoX.js} +0 -0
  351. /package/dist/esm/sdk/{appearance-4DmzKUWf.js → appearance-ZGVLwA4N.js} +0 -0
  352. /package/dist/esm/sdk/{authenticatorOptions-2_XK8aXv.js → authenticatorOptions-BB_sU4uA.js} +0 -0
  353. /package/dist/esm/sdk/{authorizationAdmission-Dd23mTx7.js → authorizationAdmission-D7nx2n4d.js} +0 -0
  354. /package/dist/esm/sdk/{browser-n3IVr7qu.js → browser-DkCRXFkk.js} +0 -0
  355. /package/dist/esm/sdk/{bytes-DZRW2UDg.js → bytes-Cv07P0Pu.js} +0 -0
  356. /package/dist/esm/sdk/{canonicalPrimitives-BMP5yILS.js → canonicalPrimitives-D_1HyEuJ.js} +0 -0
  357. /package/dist/esm/sdk/{canonicalSignerErrorCode-Cz48v4oy.js → canonicalSignerErrorCode-CqHi6ji6.js} +0 -0
  358. /package/dist/esm/sdk/{capabilityKinds-D0Yrp9uf.js → capabilityKinds-CqHVzVsJ.js} +0 -0
  359. /package/dist/esm/sdk/{ecdsaChainTarget-DkOrgv4y.js → ecdsaChainTarget-svSlzhze.js} +0 -0
  360. /package/dist/esm/sdk/{errors-ADOZT8oV.js → errors-CI1xdN0d.js} +0 -0
  361. /package/dist/esm/sdk/{executeWorkerOperation-DKCRRq5E.js → executeWorkerOperation-S6glYwAs.js} +0 -0
  362. /package/dist/esm/sdk/{helpers-DS0bksx9.js → helpers-BXezXx19.js} +0 -0
  363. /package/dist/esm/sdk/{intentDigest-Rh5Mg8X7.js → intentDigest--FZ63NBy.js} +0 -0
  364. /package/dist/esm/sdk/{jsonRpc-BVDv1wfm.js → jsonRpc-B5zMY6lE.js} +0 -0
  365. /package/dist/esm/sdk/{keccak-mS0Mejjx.js → keccak-CaPOCznk.js} +0 -0
  366. /package/dist/esm/sdk/{normalization-C6fQN6mW.js → normalization-CpLZcL2f.js} +0 -0
  367. /package/dist/esm/sdk/{prfCache-BAFh1skJ.js → prfCache-D25ZCg5n.js} +0 -0
  368. /package/dist/esm/sdk/{profileAccountProjection-BNVJLOt2.js → profileAccountProjection-C1z9sKHa.js} +0 -0
  369. /package/dist/esm/sdk/{promptText-CnyrLxgj.js → promptText-D2f5Rg0h.js} +0 -0
  370. /package/dist/esm/sdk/{registrationAuthMethodInput-B23_HRil.js → registrationAuthMethodInput-DKz6Mgg4.js} +0 -0
  371. /package/dist/esm/sdk/{sdkSentEvents-DujYAPEM.js → sdkSentEvents-BzMVO1AR.js} +0 -0
  372. /package/dist/esm/sdk/{signer-worker-DlK58rEA.js → signer-worker-Bh_5foqX.js} +0 -0
  373. /package/dist/esm/sdk/{signerDomain-BFqRQ0Jl.js → signerDomain-YEHkugWX.js} +0 -0
  374. /package/dist/esm/sdk/{surface-measurement-reporter-BJhfiPw6.js → surface-measurement-reporter-F-fVB7d3.js} +0 -0
  375. /package/dist/esm/sdk/{types-Buoe6179.js → types-BNUuaUtl.js} +0 -0
  376. /package/dist/esm/sdk/{walletIframeIdentity-Cz82I_Uh.js → walletIframeIdentity-DJ0KOBHg.js} +0 -0
  377. /package/dist/esm/sdk/{walletSessionAuthorizationProjection-DuU6w0FP.js → walletSessionAuthorizationProjection-UdGeS6x3.js} +0 -0
  378. /package/dist/esm/sdk/{walletSessionFailure-C6TAQTZn.js → walletSessionFailure-Ct412mDZ.js} +0 -0
  379. /package/dist/esm/sdk/{webauthnPromptCoordinator-9bVeHcTZ.js → webauthnPromptCoordinator-CBkTiMP0.js} +0 -0
  380. /package/dist/public/sdk/{accountIds-Cpvlkvbe.js → accountIds-BzZs7YoX.js} +0 -0
  381. /package/dist/public/sdk/{appearance-4DmzKUWf.js → appearance-ZGVLwA4N.js} +0 -0
  382. /package/dist/public/sdk/{authenticatorOptions-2_XK8aXv.js → authenticatorOptions-BB_sU4uA.js} +0 -0
  383. /package/dist/public/sdk/{authorizationAdmission-Dd23mTx7.js → authorizationAdmission-D7nx2n4d.js} +0 -0
  384. /package/dist/public/sdk/{browser-n3IVr7qu.js → browser-DkCRXFkk.js} +0 -0
  385. /package/dist/public/sdk/{bytes-DZRW2UDg.js → bytes-Cv07P0Pu.js} +0 -0
  386. /package/dist/public/sdk/{canonicalPrimitives-BMP5yILS.js → canonicalPrimitives-D_1HyEuJ.js} +0 -0
  387. /package/dist/public/sdk/{canonicalSignerErrorCode-Cz48v4oy.js → canonicalSignerErrorCode-CqHi6ji6.js} +0 -0
  388. /package/dist/public/sdk/{capabilityKinds-D0Yrp9uf.js → capabilityKinds-CqHVzVsJ.js} +0 -0
  389. /package/dist/public/sdk/{ecdsaChainTarget-DkOrgv4y.js → ecdsaChainTarget-svSlzhze.js} +0 -0
  390. /package/dist/public/sdk/{errors-ADOZT8oV.js → errors-CI1xdN0d.js} +0 -0
  391. /package/dist/public/sdk/{executeWorkerOperation-DKCRRq5E.js → executeWorkerOperation-S6glYwAs.js} +0 -0
  392. /package/dist/public/sdk/{helpers-DS0bksx9.js → helpers-BXezXx19.js} +0 -0
  393. /package/dist/public/sdk/{intentDigest-Rh5Mg8X7.js → intentDigest--FZ63NBy.js} +0 -0
  394. /package/dist/public/sdk/{jsonRpc-BVDv1wfm.js → jsonRpc-B5zMY6lE.js} +0 -0
  395. /package/dist/public/sdk/{keccak-mS0Mejjx.js → keccak-CaPOCznk.js} +0 -0
  396. /package/dist/public/sdk/{normalization-C6fQN6mW.js → normalization-CpLZcL2f.js} +0 -0
  397. /package/dist/public/sdk/{prfCache-BAFh1skJ.js → prfCache-D25ZCg5n.js} +0 -0
  398. /package/dist/public/sdk/{profileAccountProjection-BNVJLOt2.js → profileAccountProjection-C1z9sKHa.js} +0 -0
  399. /package/dist/public/sdk/{promptText-CnyrLxgj.js → promptText-D2f5Rg0h.js} +0 -0
  400. /package/dist/public/sdk/{registrationAuthMethodInput-B23_HRil.js → registrationAuthMethodInput-DKz6Mgg4.js} +0 -0
  401. /package/dist/public/sdk/{sdkSentEvents-DujYAPEM.js → sdkSentEvents-BzMVO1AR.js} +0 -0
  402. /package/dist/public/sdk/{signer-worker-DlK58rEA.js → signer-worker-Bh_5foqX.js} +0 -0
  403. /package/dist/public/sdk/{signerDomain-BFqRQ0Jl.js → signerDomain-YEHkugWX.js} +0 -0
  404. /package/dist/public/sdk/{surface-measurement-reporter-BJhfiPw6.js → surface-measurement-reporter-F-fVB7d3.js} +0 -0
  405. /package/dist/public/sdk/{types-Buoe6179.js → types-BNUuaUtl.js} +0 -0
  406. /package/dist/public/sdk/{walletIframeIdentity-Cz82I_Uh.js → walletIframeIdentity-DJ0KOBHg.js} +0 -0
  407. /package/dist/public/sdk/{walletSessionAuthorizationProjection-DuU6w0FP.js → walletSessionAuthorizationProjection-UdGeS6x3.js} +0 -0
  408. /package/dist/public/sdk/{walletSessionFailure-C6TAQTZn.js → walletSessionFailure-Ct412mDZ.js} +0 -0
  409. /package/dist/public/sdk/{webauthnPromptCoordinator-9bVeHcTZ.js → webauthnPromptCoordinator-CBkTiMP0.js} +0 -0
@@ -38,10 +38,7 @@ function methodView(credential) {
38
38
  case "email_otp": return {
39
39
  kind: "email_otp",
40
40
  walletAuthMethodId: String(credential.walletAuthMethodId),
41
- presentation: {
42
- kind: "email_otp",
43
- emailAddress: String(credential.email)
44
- }
41
+ presentation: { kind: "email_otp" }
45
42
  };
46
43
  }
47
44
  }
@@ -58,10 +55,7 @@ function selectedMethodView(binding) {
58
55
  case "email_otp": return {
59
56
  kind: "email_otp",
60
57
  walletAuthMethodId: String(binding.walletAuthMethodId),
61
- presentation: {
62
- kind: "email_otp",
63
- emailAddress: null
64
- }
58
+ presentation: { kind: "email_otp" }
65
59
  };
66
60
  }
67
61
  }
@@ -103,7 +97,7 @@ function methodTitle(method) {
103
97
  function methodDescription(method) {
104
98
  switch (method.presentation.kind) {
105
99
  case "passkey": return method.presentation.description;
106
- case "email_otp": return method.presentation.emailAddress ?? "Email OTP on this device";
100
+ case "email_otp": return "Email OTP";
107
101
  }
108
102
  }
109
103
  function inventoryStatus(state) {
@@ -130,7 +130,7 @@ function shortDisplayId(value) {
130
130
  function credentialDescription(credential) {
131
131
  switch (credential.kind) {
132
132
  case "passkey": return credential.device.label;
133
- case "email_otp": return "Email code";
133
+ case "email_otp": return "Email OTP";
134
134
  }
135
135
  }
136
136
  /**
@@ -147,7 +147,7 @@ function deviceMetaLine(view, deviceNumber, titleCollides, now, locale) {
147
147
  parts.push(walletText(locale, credential.device.synced ? "Synced passkey" : "Passkey"));
148
148
  const provider = credential.device.providerLabel ?? credential.device.provider;
149
149
  if (provider) parts.push(provider);
150
- } else parts.push(String(credential.email));
150
+ } else parts.push(walletText(locale, "Email OTP"));
151
151
  if (titleCollides) parts.push(walletText(locale, "Added {value0}", { value0: friendlyDay(viewCreatedAtMs(view), now, locale) }));
152
152
  parts.push(walletText(locale, "Last used {value0}", { value0: friendlyDay(viewLastActivityAtMs(view), now, locale) }));
153
153
  return parts.join(" · ");
@@ -6,21 +6,35 @@ import "react";
6
6
  import { jsx, jsxs } from "react/jsx-runtime";
7
7
  import "./ProfileDropdown.css";
8
8
  //#region src/react/components/AccountMenuButton/ProfileDropdown.tsx
9
- const SECURITY_ITEMS = [
9
+ const MENU_ORDER = [
10
+ "accounts",
11
+ "transaction-settings",
10
12
  "authentication-methods",
13
+ "recovery-codes",
14
+ "linked-devices",
11
15
  "scan-link-device",
16
+ "export-keys"
17
+ ];
18
+ const SECURITY_ITEMS = [
19
+ "authentication-methods",
20
+ "recovery-codes",
12
21
  "linked-devices",
13
- "recovery-codes"
22
+ "scan-link-device",
23
+ "export-keys"
14
24
  ];
15
25
  function isSecurityItem(item) {
16
26
  return SECURITY_ITEMS.includes(item.id ?? "");
17
27
  }
18
- function compareSecurityItems(a, b) {
19
- return SECURITY_ITEMS.indexOf(a.id ?? "") - SECURITY_ITEMS.indexOf(b.id ?? "");
20
- }
21
- function isAccountItem(item) {
28
+ function isWalletItem(item) {
22
29
  return !isSecurityItem(item);
23
30
  }
31
+ function menuRank(item) {
32
+ const rank = MENU_ORDER.indexOf(item.id ?? "");
33
+ return rank === -1 ? MENU_ORDER.length : rank;
34
+ }
35
+ function compareMenuItems(a, b) {
36
+ return menuRank(a) - menuRank(b);
37
+ }
24
38
  function storeMenuRef(refs, index, element) {
25
39
  refs.current[index] = element;
26
40
  }
@@ -48,13 +62,13 @@ function ProfileDropdown(props) {
48
62
  className: "seams-profile-dropdown-menu",
49
63
  children: [
50
64
  /* @__PURE__ */ jsx(MenuGroup, {
51
- label: walletText(locale, "Addresses"),
52
- items: props.menuItems.filter(isAccountItem),
65
+ label: walletText(locale, "Wallet"),
66
+ items: props.menuItems.filter(isWalletItem).sort(compareMenuItems),
53
67
  props
54
68
  }),
55
69
  /* @__PURE__ */ jsx(MenuGroup, {
56
70
  label: walletText(locale, "Security & devices"),
57
- items: props.menuItems.filter(isSecurityItem).sort(compareSecurityItems),
71
+ items: props.menuItems.filter(isSecurityItem).sort(compareMenuItems),
58
72
  props
59
73
  }),
60
74
  /* @__PURE__ */ jsx(LockMenuItem, {
@@ -1,109 +1,401 @@
1
- /* Expander (TransactionSettingsSection) */
2
- .seams-dropdown-tx-settings-root {
3
- background-color: var(--seams-expander-surface, var(--seams-colors-surface));
4
- transform-origin: top;
1
+ /* Transaction settings: a review switch, then the review layout as cards
2
+ with a small drawing. The settings page and the account menu share these
3
+ rules; the menu adds a compact variant. */
4
+ .seams-transaction-page {
5
5
  display: grid;
6
- grid-template-rows: 0fr;
7
- transition: grid-template-rows 200ms cubic-bezier(0.22, 1, 0.36, 1);
6
+ gap: 40px;
8
7
  }
9
-
10
- .seams-dropdown-tx-settings-root.is-expanded {
8
+ .seams-transaction-group {
9
+ min-width: 0;
10
+ margin: 0;
11
+ padding: 0;
12
+ border: 0;
13
+ }
14
+ .seams-transaction-review + .seams-transaction-group {
15
+ padding-top: 40px;
11
16
  border-top: 1px solid var(--seams-colors-borderPrimary);
12
- /* border-bottom: 1px solid var(--seams-colors-borderPrimary); */
13
- background-color: var(--seams-expander-surface, var(--seams-colors-surface));
14
- grid-template-rows: 1fr;
15
17
  }
16
-
17
- .seams-dropdown-toggle-tx-settings {
18
- overflow: hidden;
19
- min-height: 0;
20
- min-width: 0;
18
+ .seams-transaction-group legend {
19
+ /* A floated legend leaves the fieldset border, so the divider above a
20
+ group runs above its title, not through it. */
21
+ float: inline-start;
22
+ width: 100%;
23
+ padding: 0;
24
+ font-size: 18px;
25
+ font-weight: 600;
21
26
  }
22
-
23
- .seams-dropdown-toggle-tx-settings-content {
27
+ .seams-transaction-group legend + * {
28
+ clear: both;
29
+ }
30
+ .seams-transaction-group > p {
31
+ margin: 6px 0 20px;
32
+ color: var(--seams-colors-textSecondary);
33
+ font-size: 14px;
34
+ line-height: 1.5;
35
+ }
36
+ .seams-transaction-choices {
37
+ display: grid;
38
+ grid-template-columns: repeat(3, minmax(0, 1fr));
39
+ gap: 16px;
40
+ }
41
+ .seams-transaction-choice {
24
42
  display: flex;
25
43
  flex-direction: column;
26
- align-items: flex-start;
27
- justify-content: space-between;
28
- padding: 16px;
44
+ gap: 14px;
45
+ padding: 12px 12px 16px;
46
+ border: 1px solid var(--seams-colors-borderPrimary);
47
+ border-radius: 16px;
48
+ background: var(--seams-colors-colorBackground);
49
+ color: var(--seams-colors-textPrimary);
50
+ font: inherit;
51
+ text-align: start;
52
+ cursor: pointer;
29
53
  transition:
30
- opacity 100ms ease,
31
- transform 200ms cubic-bezier(0.22, 1, 0.36, 1);
32
- opacity: 0;
33
- transform: translateY(4px);
54
+ border-color 120ms ease,
55
+ background-color 120ms ease;
34
56
  }
35
-
36
- .seams-dropdown-tx-settings-root.is-expanded .seams-dropdown-toggle-tx-settings-content {
37
- opacity: 1;
38
- transform: translateY(0);
57
+ .seams-transaction-choice-text {
58
+ display: grid;
59
+ gap: 6px;
60
+ padding-inline: 4px;
39
61
  }
40
-
41
- .seams-confirmation-options {
42
- font-size: 12px;
43
- margin-bottom: 6px;
62
+ .seams-transaction-choice-head {
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: space-between;
66
+ gap: 12px;
44
67
  }
45
-
46
- .seams-account-seg {
68
+ .seams-transaction-choice strong {
69
+ font-size: 15px;
70
+ font-weight: 600;
71
+ }
72
+ .seams-transaction-choice-description {
73
+ color: var(--seams-colors-textSecondary);
74
+ font-size: 13px;
75
+ line-height: 1.5;
76
+ }
77
+ .seams-transaction-choice-indicator {
78
+ flex-shrink: 0;
79
+ width: 18px;
80
+ height: 18px;
47
81
  box-sizing: border-box;
48
- min-width: 0;
49
- position: relative;
50
- min-height: 54px;
51
- overflow: hidden;
52
- padding: 5px;
53
- border: none;
54
- background: color-mix(in srgb, var(--seams-colors-textPrimary) 6%, var(--seams-colors-surface2));
55
- border-radius: var(--seams-border-radius-xl);
82
+ border: 1.5px solid var(--seams-colors-borderPrimary);
83
+ border-radius: 50%;
56
84
  }
57
-
58
- .seams-account-seg-active {
59
- position: absolute;
60
- top: 5px;
61
- bottom: 5px;
62
- left: 5px;
63
- width: calc((100% - 10px) / var(--seams-account-seg-count));
64
- border-radius: inherit;
65
- background: var(--seams-account-seg-active-bg);
66
- transform: translateX(calc(var(--seams-account-seg-active-index) * 100%));
67
- transition:
68
- transform 220ms ease,
69
- opacity 150ms ease;
70
- pointer-events: none;
85
+ .seams-transaction-choice[aria-pressed='true'] {
86
+ border-color: var(--seams-colors-primary);
87
+ box-shadow: inset 0 0 0 1px var(--seams-colors-primary);
88
+ }
89
+ .seams-transaction-choice[aria-pressed='true'] .seams-transaction-choice-indicator {
90
+ border: 5px solid var(--seams-colors-primary);
91
+ }
92
+ .seams-transaction-choice:hover:not(:disabled):not([aria-pressed='true']) {
93
+ background: var(--seams-colors-surface);
94
+ }
95
+ .seams-transaction-choice:focus-visible {
96
+ outline: 2px solid var(--seams-colors-primary);
97
+ outline-offset: 4px;
98
+ }
99
+ .seams-transaction-choice:disabled {
100
+ opacity: 0.5;
101
+ cursor: not-allowed;
71
102
  }
72
103
 
73
- .seams-account-seg-grid {
74
- position: relative;
75
- z-index: 1;
104
+ /* The switch row uses the card grid, so its edge lines up with the cards. */
105
+ .seams-transaction-review {
76
106
  display: grid;
77
- grid-template-columns: repeat(var(--seams-account-seg-count), minmax(0, 1fr));
78
- gap: 4px;
79
- height: 100%;
107
+ grid-template-columns: repeat(3, minmax(0, 1fr));
108
+ gap: 10px 16px;
80
109
  }
81
-
82
- .seams-account-seg-btn {
83
- min-width: 0;
84
- min-height: 44px;
85
- padding: 0 14px;
86
- border: 0;
87
- border-radius: 1rem;
88
- background: transparent;
89
- color: color-mix(in srgb, var(--seams-colors-textSecondary), var(--seams-colors-textPrimary) 45%);
90
- cursor: pointer;
110
+ .seams-transaction-review > * {
111
+ grid-column: span 2;
112
+ }
113
+ .seams-transaction-review > p {
114
+ margin: 0;
115
+ padding-inline: 4px;
116
+ color: var(--seams-colors-textSecondary);
117
+ font-size: 13px;
118
+ line-height: 1.5;
119
+ }
120
+ .seams-transaction-review-row {
121
+ display: flex;
122
+ align-items: center;
123
+ justify-content: space-between;
124
+ gap: 20px;
125
+ padding: 20px;
126
+ border: 1px solid var(--seams-colors-borderPrimary);
127
+ border-radius: 16px;
128
+ background: var(--seams-colors-colorBackground);
129
+ }
130
+ .seams-transaction-review-text {
91
131
  display: grid;
92
- place-items: center;
93
- font-size: clamp(13px, 3.6vw, 15px);
132
+ gap: 6px;
133
+ }
134
+ .seams-transaction-review-text strong {
135
+ font-size: 16px;
94
136
  font-weight: 600;
95
- text-align: center;
96
- touch-action: manipulation;
97
- transition: color 160ms ease;
98
- white-space: normal;
99
- -webkit-tap-highlight-color: transparent;
137
+ }
138
+ .seams-transaction-review-text > span {
139
+ color: var(--seams-colors-textSecondary);
140
+ font-size: 14px;
141
+ line-height: 1.5;
142
+ }
143
+ .seams-transaction-switch {
144
+ position: relative;
145
+ flex-shrink: 0;
146
+ width: 44px;
147
+ height: 26px;
148
+ padding: 0;
149
+ border: 0;
150
+ border-radius: 13px;
151
+ background: var(--seams-colors-borderPrimary);
152
+ cursor: pointer;
153
+ transition: background-color 150ms ease;
154
+ }
155
+ .seams-transaction-switch > span {
156
+ position: absolute;
157
+ inset-block-start: 3px;
158
+ inset-inline-start: 3px;
159
+ width: 20px;
160
+ height: 20px;
161
+ border-radius: 50%;
162
+ background: var(--seams-colors-colorBackground);
163
+ box-shadow: 0 1px 3px rgb(0 0 0 / 0.25);
164
+ transition: transform 150ms ease;
165
+ }
166
+ .seams-transaction-switch[aria-checked='true'] {
167
+ background: var(--seams-colors-primary);
168
+ }
169
+ .seams-transaction-switch[aria-checked='true'] > span {
170
+ transform: translateX(18px);
171
+ }
172
+ [dir='rtl'] .seams-transaction-switch[aria-checked='true'] > span {
173
+ transform: translateX(-18px);
174
+ }
175
+ .seams-transaction-switch:focus-visible {
176
+ outline: 2px solid var(--seams-colors-primary);
177
+ outline-offset: 3px;
178
+ }
179
+ .seams-transaction-switch:disabled {
180
+ opacity: 0.5;
181
+ cursor: not-allowed;
182
+ }
183
+ @media (prefers-reduced-motion: reduce) {
184
+ .seams-transaction-switch,
185
+ .seams-transaction-switch > span {
186
+ transition: none;
187
+ }
100
188
  }
101
189
 
102
- .seams-account-seg-btn.is-active {
190
+ /* The preview draws a page with the review surface on top of it. */
191
+ .seams-transaction-preview {
192
+ position: relative;
193
+ display: block;
194
+ aspect-ratio: 16 / 9;
195
+ overflow: hidden;
196
+ border-radius: 10px;
197
+ background: var(--seams-colors-surface);
198
+ color: var(--seams-colors-textSecondary);
199
+ }
200
+ .seams-transaction-choice[aria-pressed='true'] .seams-transaction-preview {
103
201
  color: var(--seams-colors-textPrimary);
104
202
  }
203
+ .seams-tp-page {
204
+ position: absolute;
205
+ inset: 14% 12%;
206
+ display: grid;
207
+ align-content: start;
208
+ gap: 8%;
209
+ }
210
+ .seams-tp-page i,
211
+ .seams-tp-panel i {
212
+ display: block;
213
+ height: 6px;
214
+ border-radius: 3px;
215
+ background: currentColor;
216
+ opacity: 0.18;
217
+ }
218
+ .seams-tp-page i:nth-child(1) {
219
+ width: 38%;
220
+ height: 8px;
221
+ opacity: 0.28;
222
+ }
223
+ .seams-tp-page i:nth-child(3) {
224
+ width: 72%;
225
+ }
226
+ .seams-tp-scrim {
227
+ position: absolute;
228
+ inset: 0;
229
+ background: rgb(0 0 0 / 0.1);
230
+ }
231
+ .seams-tp-panel {
232
+ position: absolute;
233
+ display: flex;
234
+ flex-direction: column;
235
+ gap: 6px;
236
+ padding: 10px;
237
+ border: 1px solid var(--seams-colors-borderPrimary);
238
+ border-radius: 8px;
239
+ background: var(--seams-colors-colorBackground);
240
+ box-shadow: 0 6px 16px rgb(0 0 0 / 0.08);
241
+ }
242
+ .seams-tp-panel i:nth-child(1) {
243
+ width: 60%;
244
+ opacity: 0.32;
245
+ }
246
+ .seams-tp-panel b {
247
+ display: block;
248
+ align-self: flex-end;
249
+ width: 48%;
250
+ height: 10px;
251
+ margin-top: auto;
252
+ border-radius: 4px;
253
+ background: var(--seams-colors-primary);
254
+ }
255
+ [data-preview='modal'] .seams-tp-panel {
256
+ inset: 18% 26%;
257
+ }
258
+ [data-preview='drawer'] .seams-tp-panel {
259
+ inset-block: 0;
260
+ inset-inline: auto 0;
261
+ width: 40%;
262
+ padding-top: 14px;
263
+ border-block: 0;
264
+ border-inline-end: 0;
265
+ border-radius: 0;
266
+ }
267
+
268
+ @media (max-width: 600px) {
269
+ [data-presentation='page'] .seams-transaction-review > * {
270
+ grid-column: 1 / -1;
271
+ }
272
+ [data-presentation='page'] .seams-transaction-review-row {
273
+ padding: 16px;
274
+ }
275
+ [data-presentation='page'] .seams-transaction-choices {
276
+ grid-template-columns: minmax(0, 1fr);
277
+ gap: 12px;
278
+ }
279
+ [data-presentation='page'] .seams-transaction-choice {
280
+ flex-direction: row;
281
+ align-items: center;
282
+ gap: 14px;
283
+ padding: 10px 14px 10px 10px;
284
+ }
285
+ [data-presentation='page'] .seams-transaction-preview {
286
+ flex-shrink: 0;
287
+ width: 104px;
288
+ }
289
+ [data-presentation='page'] .seams-transaction-choice-text {
290
+ flex: 1;
291
+ min-width: 0;
292
+ padding-inline: 0;
293
+ }
294
+ [data-presentation='page'] .seams-tp-panel {
295
+ gap: 4px;
296
+ padding: 6px;
297
+ border-radius: 5px;
298
+ }
299
+ [data-presentation='page'] .seams-tp-page i,
300
+ [data-presentation='page'] .seams-tp-panel i {
301
+ height: 4px;
302
+ }
303
+ [data-presentation='page'] .seams-tp-page i:nth-child(1) {
304
+ height: 5px;
305
+ }
306
+ [data-presentation='page'] .seams-tp-panel b {
307
+ height: 6px;
308
+ border-radius: 2px;
309
+ }
310
+ }
105
311
 
106
- .seams-account-seg-btn:focus-visible {
107
- box-shadow: 0 0 0 2px color-mix(in srgb, var(--seams-colors-focus), transparent 60%);
108
- outline: none;
312
+ /* The account menu is about 300px wide: three small cards per row, labels
313
+ only, and smaller drawings. */
314
+ .seams-transaction-page[data-presentation='menu'] {
315
+ gap: 16px;
316
+ padding-bottom: 4px;
317
+ }
318
+ [data-presentation='menu'] .seams-transaction-review + .seams-transaction-group {
319
+ padding-top: 16px;
320
+ }
321
+ [data-presentation='menu'] .seams-transaction-group legend {
322
+ font-size: 14px;
323
+ }
324
+ [data-presentation='menu'] .seams-transaction-group > p {
325
+ margin: 2px 0 10px;
326
+ font-size: 12px;
327
+ line-height: 1.4;
328
+ }
329
+ [data-presentation='menu'] .seams-transaction-choices {
330
+ gap: 8px;
331
+ }
332
+ [data-presentation='menu'] .seams-transaction-choice {
333
+ gap: 8px;
334
+ padding: 5px 5px 8px;
335
+ border-radius: 12px;
336
+ }
337
+ [data-presentation='menu'] .seams-transaction-choice-text {
338
+ padding-inline: 3px;
339
+ }
340
+ [data-presentation='menu'] .seams-transaction-choice {
341
+ position: relative;
342
+ }
343
+ [data-presentation='menu'] .seams-transaction-choice strong {
344
+ font-size: 12px;
345
+ font-weight: 500;
346
+ line-height: 1.3;
347
+ }
348
+ /* The dot sits on the drawing's corner, so a long label gets the full width. */
349
+ [data-presentation='menu'] .seams-transaction-choice-indicator {
350
+ position: absolute;
351
+ inset-block-start: 10px;
352
+ inset-inline-end: 10px;
353
+ width: 14px;
354
+ height: 14px;
355
+ background: var(--seams-colors-colorBackground);
356
+ }
357
+ [data-presentation='menu'] .seams-transaction-choice[aria-pressed='true'] .seams-transaction-choice-indicator {
358
+ border-width: 4px;
359
+ }
360
+ [data-presentation='menu'] .seams-transaction-preview {
361
+ border-radius: 8px;
362
+ }
363
+ [data-presentation='menu'] .seams-tp-panel {
364
+ gap: 3px;
365
+ padding: 5px;
366
+ border-radius: 4px;
367
+ }
368
+ [data-presentation='menu'] .seams-tp-page i,
369
+ [data-presentation='menu'] .seams-tp-panel i {
370
+ height: 3px;
371
+ border-radius: 2px;
372
+ }
373
+ [data-presentation='menu'] .seams-tp-page i:nth-child(1) {
374
+ height: 4px;
375
+ }
376
+ [data-presentation='menu'] .seams-tp-panel b {
377
+ height: 5px;
378
+ border-radius: 2px;
379
+ }
380
+ [data-presentation='menu'] [data-preview='drawer'] .seams-tp-panel {
381
+ padding-top: 7px;
382
+ }
383
+ [data-presentation='menu'] .seams-transaction-review > * {
384
+ grid-column: 1 / -1;
385
+ }
386
+ [data-presentation='menu'] .seams-transaction-review {
387
+ gap: 8px;
388
+ }
389
+ [data-presentation='menu'] .seams-transaction-review-row {
390
+ gap: 14px;
391
+ padding: 14px;
392
+ border-radius: 12px;
393
+ }
394
+ [data-presentation='menu'] .seams-transaction-review-text strong {
395
+ font-size: 14px;
396
+ }
397
+ [data-presentation='menu'] .seams-transaction-review-text > span,
398
+ [data-presentation='menu'] .seams-transaction-review > p {
399
+ font-size: 12px;
400
+ line-height: 1.4;
109
401
  }