@seams/wallet 0.29.0 → 0.31.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 (264) hide show
  1. package/README.md +7 -7
  2. package/THIRD_PARTY_NOTICES.md +1 -127
  3. package/dist/.build-inputs.sha256 +1 -1
  4. package/dist/esm/SeamsWeb/SeamsWeb.js +2 -0
  5. package/dist/esm/SeamsWeb/walletIframe/client/inboundMessages.js +9 -0
  6. package/dist/esm/SeamsWeb/walletIframe/client/router.js +30 -0
  7. package/dist/esm/SeamsWeb/walletIframe/coordinator.js +18 -0
  8. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.js +88 -47
  9. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/WalletAlternativesSection.js +67 -0
  10. package/dist/esm/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.js +13 -0
  11. package/dist/esm/SeamsWeb/walletIframe/host/walletMutationGuard.js +1 -0
  12. package/dist/esm/SeamsWeb/walletIframe/shared/messages.js +20 -6
  13. package/dist/esm/SeamsWeb/walletIframe/shared/walletAlternatives.js +109 -0
  14. package/dist/esm/core/config/configBuilder.js +1 -1
  15. package/dist/esm/core/config/defaultConfigs.js +9 -2
  16. package/dist/esm/core/ui/messages.js +3 -1
  17. package/dist/esm/core/ui/walletIcon.js +10 -0
  18. package/dist/esm/externalEvm/boundary.js +4 -2
  19. package/dist/esm/react/components/HostedSeamsAuthMenu/shell.js +26 -6
  20. package/dist/esm/react/components/HostedSeamsAuthMenu/walletAlternatives.js +178 -0
  21. package/dist/esm/react/index.js +1 -2
  22. package/dist/esm/react/styles/styles.css +0 -183
  23. package/dist/esm/react/styles.css +0 -1
  24. package/dist/esm/sdk/{ConfirmationDrawer-BRnd5SEf.js → ConfirmationDrawer-fyl4IDRl.js} +1 -1
  25. package/dist/{public/sdk/NonceCoordinator-CNXYrOoy.js → esm/sdk/NonceCoordinator-C1lw03Ce.js} +1 -1
  26. package/dist/esm/sdk/{activeWalletSession-BJ4B-nJo.js → activeWalletSession-HAOgRKzn.js} +1 -1
  27. package/dist/esm/sdk/{adapters-B2k8y0MB.js → adapters-BY1wGpm5.js} +1 -1
  28. package/dist/esm/sdk/appearance-token-vars-CzlRDVQ7.js +1 -0
  29. package/dist/esm/sdk/{authorization-gVWwKwav.js → authorization-D_NueqAv.js} +1 -1
  30. package/dist/esm/sdk/{clientSessionPersistenceState-BxpITYM_.js → clientSessionPersistenceState-B3gU3515.js} +1 -1
  31. package/dist/esm/sdk/{commitQueue-C1wkey4q.js → commitQueue-CbyuhEW9.js} +1 -1
  32. package/dist/{public/sdk/confirm-ui-Dx6c4-Rk.js → esm/sdk/confirm-ui-DWFcGTsT.js} +1 -1
  33. package/dist/{public/sdk/device-linking-_o3_fgiG.js → esm/sdk/device-linking-BL2aDEUF.js} +1 -1
  34. package/dist/esm/sdk/{deviceLinkApproval-CObsEWBa.js → deviceLinkApproval-C4T8XAmi.js} +1 -1
  35. package/dist/esm/sdk/{digestEncoding-34kXJoJr.js → digestEncoding-Rx8Vjy4J.js} +1 -1
  36. package/dist/esm/sdk/{display-CUWg48tD.js → display-8NGPOhQT.js} +1 -1
  37. package/dist/{public/sdk/ecdsaCapabilityManifest--1Ztngfx.js → esm/sdk/ecdsaCapabilityManifest-BbPXL-qh.js} +1 -1
  38. package/dist/{public/sdk/ecdsaDerivationClientWasm-DJh2uN-q.js → esm/sdk/ecdsaDerivationClientWasm-GCt9yVsd.js} +1 -1
  39. package/dist/{public/sdk/ecdsaDerivationExport-BUUUGc6o.js → esm/sdk/ecdsaDerivationExport-jm2VBMz_.js} +1 -1
  40. package/dist/esm/sdk/{emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js → emailOtpEcdsaDerivationIdentity-DJmMyqL-.js} +1 -1
  41. package/dist/esm/sdk/{export-viewer-host-O0OV1Oou.js → export-viewer-host-TzgdJQuZ.js} +1 -1
  42. package/dist/{public/sdk/exportKeypairOperation-DkqY9Bpf.js → esm/sdk/exportKeypairOperation-B9_ulzNz.js} +1 -1
  43. package/dist/esm/sdk/host-DltV2Oan.js +1 -0
  44. package/dist/esm/sdk/{indexedDB-CA4tGqkr.js → indexedDB-BqsYXybq.js} +1 -1
  45. package/dist/esm/sdk/{lanes-vBKm6yBJ.js → lanes-0WT2w1Xz.js} +1 -1
  46. package/dist/esm/sdk/{localOnly-U_MucUAe.js → localOnly-DFrtrfdO.js} +1 -1
  47. package/dist/esm/sdk/{mountExportPrivateKeySurface-C2-fnvP6.js → mountExportPrivateKeySurface-D8juRQJM.js} +1 -1
  48. package/dist/{public/sdk/mountRecoveryCodeBackupSurface-C_tJNPJX.js → esm/sdk/mountRecoveryCodeBackupSurface-CMtByh-L.js} +1 -1
  49. package/dist/esm/sdk/{nearEd25519YaoSigningPreparation-CnbgQfZc.js → nearEd25519YaoSigningPreparation-Cz2Gb95g.js} +1 -1
  50. package/dist/esm/sdk/{operationFingerprint-Bas59T7L.js → operationFingerprint-GKEY-X5I.js} +1 -1
  51. package/dist/esm/sdk/ownerNearOperation-DCxxHcwX.js +1 -0
  52. package/dist/esm/sdk/{pendingWalletRecoveryCodeBackup-DXFrQmO5.js → pendingWalletRecoveryCodeBackup-8iMhQU-E.js} +1 -1
  53. package/dist/{public/sdk/presignaturePool-Dq4RhzXn.js → esm/sdk/presignaturePool-CaI45td2.js} +1 -1
  54. package/dist/esm/sdk/{presignatures-CkhuZ0YQ.js → presignatures-B9KnQyfE.js} +1 -1
  55. package/dist/esm/sdk/{recovery-entrypoint-s9OoKBcl.js → recovery-entrypoint-DA2FGLG6.js} +1 -1
  56. package/dist/esm/sdk/registration-Coh0_Nva.js +1 -0
  57. package/dist/esm/sdk/{registration-D3p7muCc.js → registration-XNyt1YRK.js} +1 -1
  58. package/dist/esm/sdk/{registrationIntent-C1-Kyx_-.js → registrationIntent-Cb3tggIM.js} +1 -1
  59. package/dist/{public/sdk/requireStepUpAuth-iVo6h_U-.js → esm/sdk/requireStepUpAuth-ByMTPBu4.js} +1 -1
  60. package/dist/esm/sdk/resealedEnvelopeResult-DKY5fVNY.js +1 -0
  61. package/dist/esm/sdk/routerAbNormalSigning-CPLDkttX.js +1 -0
  62. package/dist/esm/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  63. package/dist/esm/sdk/runtime-auth-CP6P681o.js +1 -0
  64. package/dist/esm/sdk/{runtime-device-link-qmYvGep9.js → runtime-device-link-CGDZQK-D.js} +1 -1
  65. package/dist/{public/sdk/runtime-ecdsa-tempo-Zh95TuLV.js → esm/sdk/runtime-ecdsa-tempo-BiJYKWK4.js} +1 -1
  66. package/dist/esm/sdk/{runtime-email-otp-CnLuW4H1.js → runtime-email-otp-B0XCNDRb.js} +1 -1
  67. package/dist/esm/sdk/{runtime-export-m8lvrXtw.js → runtime-export-CXxv6KIx.js} +1 -1
  68. package/dist/esm/sdk/{runtime-near-BiXzXXhH.js → runtime-near-CuyS57wu.js} +1 -1
  69. package/dist/esm/sdk/runtime-preferences-B2WBUZO7.js +1 -0
  70. package/dist/esm/sdk/runtime-recovery-KwVdSe94.js +1 -0
  71. package/dist/esm/sdk/{runtime-recovery-codes-B033ake_.js → runtime-recovery-codes-CFOWDVd9.js} +1 -1
  72. package/dist/esm/sdk/{runtimeContext-RNS2E5wy.js → runtimeContext-Iy1vecX0.js} +3 -3
  73. package/dist/esm/sdk/{secp256k1-DPeaOjM0.js → secp256k1-sDDAa4Ga.js} +1 -1
  74. package/dist/{public/sdk/signEvmFamily-Cksw3RpU.js → esm/sdk/signEvmFamily-CMrXkVsZ.js} +1 -1
  75. package/dist/esm/sdk/{signEvmFamilyWithUiConfirmForTempo-B7p9UVix.js → signEvmFamilyWithUiConfirmForTempo-CnRoo0e8.js} +1 -1
  76. package/dist/esm/sdk/{signEvmWithUiConfirm-B14zYdwE.js → signEvmWithUiConfirm-yITc3ZvP.js} +1 -1
  77. package/dist/esm/sdk/{signNear-D0rFEYP1.js → signNear-DyFk--I3.js} +1 -1
  78. package/dist/{public/sdk/signingFlow-Bd1X0e-1.js → esm/sdk/signingFlow-DTP4D19E.js} +1 -1
  79. package/dist/{public/sdk/signingQueue-DoUBeaCv.js → esm/sdk/signingQueue-Dy5mYMus.js} +1 -1
  80. package/dist/esm/sdk/{thresholdEcdsa-BxfOZmiR.js → thresholdEcdsa-CRfx6RP1.js} +1 -1
  81. package/dist/esm/sdk/{trace-BnhLKxcu.js → trace-BA8jya7O.js} +1 -1
  82. package/dist/{public/sdk/transactionState-G_FPe-U8.js → esm/sdk/transactionState-BCbaT2hO.js} +1 -1
  83. package/dist/esm/sdk/tx-confirm-ui.js +3 -1
  84. package/dist/esm/sdk/{types-A-w1cYlJ.js → types-D2Zk1W7I.js} +1 -1
  85. package/dist/{public/sdk/unlockedEd25519ExportRootCapability-5F1egCSv.js → esm/sdk/unlockedEd25519ExportRootCapability-BbGMlikr.js} +1 -1
  86. package/dist/esm/sdk/voiceid-host.js +1 -1
  87. package/dist/esm/sdk/wallet-iframe-host-ecdsa.js +1 -1
  88. package/dist/esm/sdk/wallet-iframe-host-full.js +1 -1
  89. package/dist/esm/sdk/wallet-iframe-host-near.js +1 -1
  90. package/dist/esm/sdk/wallet-iframe-host-runtime.js +1 -1
  91. package/dist/esm/sdk/{wallet-recovery-DXdm68_Q.js → wallet-recovery-Bfm-oUoP.js} +1 -1
  92. package/dist/esm/sdk/wallet-ui.css +1 -1
  93. package/dist/{public/sdk/walletAuthMethodRecord-BW-XV4fv.js → esm/sdk/walletAuthMethodRecord--fvGr8r1.js} +1 -1
  94. package/dist/{public/sdk/walletAuthority-DbGaSw7D.js → esm/sdk/walletAuthority-CU9nO0Ze.js} +1 -1
  95. package/dist/esm/sdk/{walletCustodyEcdsaContinuity-BnyL1Ryu.js → walletCustodyEcdsaContinuity-BUdDyRl_.js} +1 -1
  96. package/dist/esm/sdk/{walletDbName-Ca0rCq5r.js → walletDbName-B6-CV_Rq.js} +1 -1
  97. package/dist/esm/sdk/{walletOwnerOperation-CScYv2K6.js → walletOwnerOperation-BJPxzo-k.js} +1 -1
  98. package/dist/esm/sdk/{walletOwnershipGeneration-BZc6UKqX.js → walletOwnershipGeneration-B3uE9GRG.js} +1 -1
  99. package/dist/{public/sdk/walletRecoveryAdminProof-DdwikrW3.js → esm/sdk/walletRecoveryAdminProof-BmZaP0Q8.js} +1 -1
  100. package/dist/{public/sdk/walletRecoveryCommit-DbAoiJp5.js → esm/sdk/walletRecoveryCommit-CSYNbYNd.js} +1 -1
  101. package/dist/esm/sdk/{walletSessionAuthorizationStatus-GhcGvDCX.js → walletSessionAuthorizationStatus-CQ3qA9tI.js} +1 -1
  102. package/dist/{public/sdk/walletSessionAuthorizationStore-BivTUoKY.js → esm/sdk/walletSessionAuthorizationStore-CGt-s5fX.js} +1 -1
  103. package/dist/esm/shared-ts/src/utils/index.js +1 -1
  104. package/dist/esm/wasm/near_signer/pkg/wasm_signer_worker_bg.wasm +0 -0
  105. package/dist/esm/wasm/router_ab_ecdsa_client/pkg/router_ab_ecdsa_client_bg.wasm +0 -0
  106. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.d.ts +212 -233
  107. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client.js +675 -694
  108. package/dist/esm/wasm/router_ab_ed25519_yao_client/pkg/router_ab_ed25519_yao_client_bg.wasm +0 -0
  109. package/dist/public/headers.manifest.json +1 -1
  110. package/dist/public/sdk/{ConfirmationDrawer-BRnd5SEf.js → ConfirmationDrawer-fyl4IDRl.js} +1 -1
  111. package/dist/{esm/sdk/NonceCoordinator-CNXYrOoy.js → public/sdk/NonceCoordinator-C1lw03Ce.js} +1 -1
  112. package/dist/public/sdk/{activeWalletSession-BJ4B-nJo.js → activeWalletSession-HAOgRKzn.js} +1 -1
  113. package/dist/public/sdk/{adapters-B2k8y0MB.js → adapters-BY1wGpm5.js} +1 -1
  114. package/dist/public/sdk/appearance-token-vars-CzlRDVQ7.js +1 -0
  115. package/dist/public/sdk/{authorization-gVWwKwav.js → authorization-D_NueqAv.js} +1 -1
  116. package/dist/public/sdk/{clientSessionPersistenceState-BxpITYM_.js → clientSessionPersistenceState-B3gU3515.js} +1 -1
  117. package/dist/public/sdk/{commitQueue-C1wkey4q.js → commitQueue-CbyuhEW9.js} +1 -1
  118. package/dist/{esm/sdk/confirm-ui-Dx6c4-Rk.js → public/sdk/confirm-ui-DWFcGTsT.js} +1 -1
  119. package/dist/{esm/sdk/device-linking-_o3_fgiG.js → public/sdk/device-linking-BL2aDEUF.js} +1 -1
  120. package/dist/public/sdk/{deviceLinkApproval-CObsEWBa.js → deviceLinkApproval-C4T8XAmi.js} +1 -1
  121. package/dist/public/sdk/{digestEncoding-34kXJoJr.js → digestEncoding-Rx8Vjy4J.js} +1 -1
  122. package/dist/public/sdk/{display-CUWg48tD.js → display-8NGPOhQT.js} +1 -1
  123. package/dist/{esm/sdk/ecdsaCapabilityManifest--1Ztngfx.js → public/sdk/ecdsaCapabilityManifest-BbPXL-qh.js} +1 -1
  124. package/dist/{esm/sdk/ecdsaDerivationClientWasm-DJh2uN-q.js → public/sdk/ecdsaDerivationClientWasm-GCt9yVsd.js} +1 -1
  125. package/dist/{esm/sdk/ecdsaDerivationExport-BUUUGc6o.js → public/sdk/ecdsaDerivationExport-jm2VBMz_.js} +1 -1
  126. package/dist/public/sdk/{emailOtpEcdsaDerivationIdentity-Qd4pBwHv.js → emailOtpEcdsaDerivationIdentity-DJmMyqL-.js} +1 -1
  127. package/dist/public/sdk/{export-viewer-host-O0OV1Oou.js → export-viewer-host-TzgdJQuZ.js} +1 -1
  128. package/dist/{esm/sdk/exportKeypairOperation-DkqY9Bpf.js → public/sdk/exportKeypairOperation-B9_ulzNz.js} +1 -1
  129. package/dist/public/sdk/host-DltV2Oan.js +1 -0
  130. package/dist/public/sdk/{indexedDB-CA4tGqkr.js → indexedDB-BqsYXybq.js} +1 -1
  131. package/dist/public/sdk/{lanes-vBKm6yBJ.js → lanes-0WT2w1Xz.js} +1 -1
  132. package/dist/public/sdk/{localOnly-U_MucUAe.js → localOnly-DFrtrfdO.js} +1 -1
  133. package/dist/public/sdk/{mountExportPrivateKeySurface-C2-fnvP6.js → mountExportPrivateKeySurface-D8juRQJM.js} +1 -1
  134. package/dist/{esm/sdk/mountRecoveryCodeBackupSurface-C_tJNPJX.js → public/sdk/mountRecoveryCodeBackupSurface-CMtByh-L.js} +1 -1
  135. package/dist/public/sdk/{nearEd25519YaoSigningPreparation-CnbgQfZc.js → nearEd25519YaoSigningPreparation-Cz2Gb95g.js} +1 -1
  136. package/dist/public/sdk/{operationFingerprint-Bas59T7L.js → operationFingerprint-GKEY-X5I.js} +1 -1
  137. package/dist/public/sdk/ownerNearOperation-DCxxHcwX.js +1 -0
  138. package/dist/public/sdk/{pendingWalletRecoveryCodeBackup-DXFrQmO5.js → pendingWalletRecoveryCodeBackup-8iMhQU-E.js} +1 -1
  139. package/dist/{esm/sdk/presignaturePool-Dq4RhzXn.js → public/sdk/presignaturePool-CaI45td2.js} +1 -1
  140. package/dist/public/sdk/{presignatures-CkhuZ0YQ.js → presignatures-B9KnQyfE.js} +1 -1
  141. package/dist/public/sdk/{recovery-entrypoint-s9OoKBcl.js → recovery-entrypoint-DA2FGLG6.js} +1 -1
  142. package/dist/public/sdk/registration-Coh0_Nva.js +1 -0
  143. package/dist/public/sdk/{registration-D3p7muCc.js → registration-XNyt1YRK.js} +1 -1
  144. package/dist/public/sdk/{registrationIntent-C1-Kyx_-.js → registrationIntent-Cb3tggIM.js} +1 -1
  145. package/dist/{esm/sdk/requireStepUpAuth-iVo6h_U-.js → public/sdk/requireStepUpAuth-ByMTPBu4.js} +1 -1
  146. package/dist/public/sdk/resealedEnvelopeResult-DKY5fVNY.js +1 -0
  147. package/dist/public/sdk/routerAbNormalSigning-CPLDkttX.js +1 -0
  148. package/dist/public/sdk/router_ab_ed25519_yao_client_bg.wasm +0 -0
  149. package/dist/public/sdk/runtime-auth-CP6P681o.js +1 -0
  150. package/dist/public/sdk/{runtime-device-link-qmYvGep9.js → runtime-device-link-CGDZQK-D.js} +1 -1
  151. package/dist/{esm/sdk/runtime-ecdsa-tempo-Zh95TuLV.js → public/sdk/runtime-ecdsa-tempo-BiJYKWK4.js} +1 -1
  152. package/dist/public/sdk/{runtime-email-otp-CnLuW4H1.js → runtime-email-otp-B0XCNDRb.js} +1 -1
  153. package/dist/public/sdk/{runtime-export-m8lvrXtw.js → runtime-export-CXxv6KIx.js} +1 -1
  154. package/dist/public/sdk/{runtime-near-BiXzXXhH.js → runtime-near-CuyS57wu.js} +1 -1
  155. package/dist/public/sdk/runtime-preferences-B2WBUZO7.js +1 -0
  156. package/dist/public/sdk/runtime-recovery-KwVdSe94.js +1 -0
  157. package/dist/public/sdk/{runtime-recovery-codes-B033ake_.js → runtime-recovery-codes-CFOWDVd9.js} +1 -1
  158. package/dist/public/sdk/{runtimeContext-RNS2E5wy.js → runtimeContext-Iy1vecX0.js} +3 -3
  159. package/dist/public/sdk/{secp256k1-DPeaOjM0.js → secp256k1-sDDAa4Ga.js} +1 -1
  160. package/dist/{esm/sdk/signEvmFamily-Cksw3RpU.js → public/sdk/signEvmFamily-CMrXkVsZ.js} +1 -1
  161. package/dist/public/sdk/{signEvmFamilyWithUiConfirmForTempo-B7p9UVix.js → signEvmFamilyWithUiConfirmForTempo-CnRoo0e8.js} +1 -1
  162. package/dist/public/sdk/{signEvmWithUiConfirm-B14zYdwE.js → signEvmWithUiConfirm-yITc3ZvP.js} +1 -1
  163. package/dist/public/sdk/{signNear-D0rFEYP1.js → signNear-DyFk--I3.js} +1 -1
  164. package/dist/{esm/sdk/signingFlow-Bd1X0e-1.js → public/sdk/signingFlow-DTP4D19E.js} +1 -1
  165. package/dist/{esm/sdk/signingQueue-DoUBeaCv.js → public/sdk/signingQueue-Dy5mYMus.js} +1 -1
  166. package/dist/public/sdk/{thresholdEcdsa-BxfOZmiR.js → thresholdEcdsa-CRfx6RP1.js} +1 -1
  167. package/dist/public/sdk/{trace-BnhLKxcu.js → trace-BA8jya7O.js} +1 -1
  168. package/dist/{esm/sdk/transactionState-G_FPe-U8.js → public/sdk/transactionState-BCbaT2hO.js} +1 -1
  169. package/dist/public/sdk/tx-confirm-ui.js +3 -1
  170. package/dist/public/sdk/{types-A-w1cYlJ.js → types-D2Zk1W7I.js} +1 -1
  171. package/dist/{esm/sdk/unlockedEd25519ExportRootCapability-5F1egCSv.js → public/sdk/unlockedEd25519ExportRootCapability-BbGMlikr.js} +1 -1
  172. package/dist/public/sdk/voiceid-host.js +1 -1
  173. package/dist/public/sdk/wallet-iframe-host-ecdsa.js +1 -1
  174. package/dist/public/sdk/wallet-iframe-host-full.js +1 -1
  175. package/dist/public/sdk/wallet-iframe-host-near.js +1 -1
  176. package/dist/public/sdk/wallet-iframe-host-runtime.js +1 -1
  177. package/dist/public/sdk/{wallet-recovery-DXdm68_Q.js → wallet-recovery-Bfm-oUoP.js} +1 -1
  178. package/dist/public/sdk/wallet-ui.css +1 -1
  179. package/dist/{esm/sdk/walletAuthMethodRecord-BW-XV4fv.js → public/sdk/walletAuthMethodRecord--fvGr8r1.js} +1 -1
  180. package/dist/{esm/sdk/walletAuthority-DbGaSw7D.js → public/sdk/walletAuthority-CU9nO0Ze.js} +1 -1
  181. package/dist/public/sdk/{walletCustodyEcdsaContinuity-BnyL1Ryu.js → walletCustodyEcdsaContinuity-BUdDyRl_.js} +1 -1
  182. package/dist/public/sdk/{walletDbName-Ca0rCq5r.js → walletDbName-B6-CV_Rq.js} +1 -1
  183. package/dist/public/sdk/{walletOwnerOperation-CScYv2K6.js → walletOwnerOperation-BJPxzo-k.js} +1 -1
  184. package/dist/public/sdk/{walletOwnershipGeneration-BZc6UKqX.js → walletOwnershipGeneration-B3uE9GRG.js} +1 -1
  185. package/dist/{esm/sdk/walletRecoveryAdminProof-DdwikrW3.js → public/sdk/walletRecoveryAdminProof-BmZaP0Q8.js} +1 -1
  186. package/dist/{esm/sdk/walletRecoveryCommit-DbAoiJp5.js → public/sdk/walletRecoveryCommit-CSYNbYNd.js} +1 -1
  187. package/dist/public/sdk/{walletSessionAuthorizationStatus-GhcGvDCX.js → walletSessionAuthorizationStatus-CQ3qA9tI.js} +1 -1
  188. package/dist/{esm/sdk/walletSessionAuthorizationStore-BivTUoKY.js → public/sdk/walletSessionAuthorizationStore-CGt-s5fX.js} +1 -1
  189. package/dist/public/sdk/workers/device-linking-key.worker.js +454 -947
  190. package/dist/public/sdk/workers/email-otp.worker.js +588 -820
  191. package/dist/public/sdk/workers/email_otp_runtime_bg.wasm +0 -0
  192. package/dist/public/sdk/workers/evm_crypto_bg.wasm +0 -0
  193. package/dist/public/sdk/workers/passkey-mpc-export.worker.js +572 -804
  194. package/dist/public/sdk/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  195. package/dist/public/sdk/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  196. package/dist/public/sdk/workers/shamir3pass_runtime_bg.wasm +0 -0
  197. package/dist/public/sdk/workers/tempo_signer_bg.wasm +0 -0
  198. package/dist/public/sdk/workers/wallet-custody-ceremony.worker.js +524 -971
  199. package/dist/public/sdk/workers/wallet_custody_ceremony_bg.wasm +0 -0
  200. package/dist/public/sdk/workers/wasm_signer_worker_bg.wasm +0 -0
  201. package/dist/public/wallet-assets.manifest.json +153 -153
  202. package/dist/public/wallet-service/index.html +4 -4
  203. package/dist/types/wallet/src/SeamsWeb/index.d.ts +1 -0
  204. package/dist/types/wallet/src/SeamsWeb/publicApi/types.d.ts +3 -0
  205. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/inboundMessages.d.ts +5 -0
  206. package/dist/types/wallet/src/SeamsWeb/walletIframe/client/router.d.ts +3 -0
  207. package/dist/types/wallet/src/SeamsWeb/walletIframe/coordinator.d.ts +6 -0
  208. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/controller.d.ts +2 -0
  209. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/domain.d.ts +3 -0
  210. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/auth-menu/session.d.ts +4 -0
  211. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/requestRouter.d.ts +1 -1
  212. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/AuthMenuSurface.d.ts +5 -0
  213. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/WalletAlternativesSection.d.ts +13 -0
  214. package/dist/types/wallet/src/SeamsWeb/walletIframe/host/ui/auth-menu/mountAuthMenuSurface.d.ts +3 -0
  215. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/messages.d.ts +11 -4
  216. package/dist/types/wallet/src/SeamsWeb/walletIframe/shared/walletAlternatives.d.ts +52 -0
  217. package/dist/types/wallet/src/core/types/seams.d.ts +2 -2
  218. package/dist/types/wallet/src/core/ui/messages.d.ts +1 -1
  219. package/dist/types/wallet/src/core/ui/walletIcon.d.ts +3 -0
  220. package/dist/types/wallet/src/index.d.ts +1 -0
  221. package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/public.d.ts +1 -0
  222. package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/types.d.ts +4 -0
  223. package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/walletAlternatives.d.ts +48 -0
  224. package/dist/types/wallet/src/react/index.d.ts +1 -2
  225. package/dist/workers/device-linking-key.worker.js +454 -947
  226. package/dist/workers/email-otp.worker.js +588 -820
  227. package/dist/workers/email_otp_runtime_bg.wasm +0 -0
  228. package/dist/workers/evm_crypto_bg.wasm +0 -0
  229. package/dist/workers/passkey-mpc-export.worker.js +572 -804
  230. package/dist/workers/router_ab_ecdsa_client_bg.wasm +0 -0
  231. package/dist/workers/router_ab_ed25519_yao_client_bg.wasm +0 -0
  232. package/dist/workers/shamir3pass_runtime_bg.wasm +0 -0
  233. package/dist/workers/tempo_signer_bg.wasm +0 -0
  234. package/dist/workers/wallet-custody-ceremony.worker.js +524 -971
  235. package/dist/workers/wallet_custody_ceremony_bg.wasm +0 -0
  236. package/dist/workers/wasm_signer_worker_bg.wasm +0 -0
  237. package/package.json +17 -17
  238. package/dist/esm/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.css +0 -182
  239. package/dist/esm/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.js +0 -315
  240. package/dist/esm/sdk/appearance-token-vars-DkF3EBbF.js +0 -1
  241. package/dist/esm/sdk/host-BeE2dIU4.js +0 -1
  242. package/dist/esm/sdk/ownerNearOperation-DjNDxW3_.js +0 -1
  243. package/dist/esm/sdk/registration-CTtTocyo.js +0 -1
  244. package/dist/esm/sdk/resealedEnvelopeResult-DXDo-72P.js +0 -1
  245. package/dist/esm/sdk/routerAbNormalSigning-DVFFkNhJ.js +0 -1
  246. package/dist/esm/sdk/runtime-auth-Dsmw_dUA.js +0 -1
  247. package/dist/esm/sdk/runtime-preferences-DlKHDIjb.js +0 -1
  248. package/dist/esm/sdk/runtime-recovery-C6lS71Jp.js +0 -1
  249. package/dist/public/sdk/appearance-token-vars-DkF3EBbF.js +0 -1
  250. package/dist/public/sdk/host-BeE2dIU4.js +0 -1
  251. package/dist/public/sdk/ownerNearOperation-DjNDxW3_.js +0 -1
  252. package/dist/public/sdk/registration-CTtTocyo.js +0 -1
  253. package/dist/public/sdk/resealedEnvelopeResult-DXDo-72P.js +0 -1
  254. package/dist/public/sdk/routerAbNormalSigning-DVFFkNhJ.js +0 -1
  255. package/dist/public/sdk/runtime-auth-Dsmw_dUA.js +0 -1
  256. package/dist/public/sdk/runtime-preferences-DlKHDIjb.js +0 -1
  257. package/dist/public/sdk/runtime-recovery-C6lS71Jp.js +0 -1
  258. package/dist/types/wallet/src/react/components/HostedSeamsAuthMenu/WalletConnectorMenu.d.ts +0 -31
  259. /package/dist/esm/sdk/{canonicalPrimitives-Jd3i_Ngz.js → canonicalPrimitives-DKeS3M40.js} +0 -0
  260. /package/dist/esm/sdk/{capabilityKinds-DVlGMspk.js → capabilityKinds-Cafn86Y1.js} +0 -0
  261. /package/dist/esm/sdk/{walletIframeIdentity-CpgyEnKg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
  262. /package/dist/public/sdk/{canonicalPrimitives-Jd3i_Ngz.js → canonicalPrimitives-DKeS3M40.js} +0 -0
  263. /package/dist/public/sdk/{capabilityKinds-DVlGMspk.js → capabilityKinds-Cafn86Y1.js} +0 -0
  264. /package/dist/public/sdk/{walletIframeIdentity-CpgyEnKg.js → walletIframeIdentity-Cz82I_Uh.js} +0 -0
@@ -1,6 +1,7 @@
1
1
  import { buildHostedAuthMenuOpenRequest, hostedAuthMenuExternalAuthRequestIdFromBoundary, hostedAuthMenuSessionIdFromBoundary } from "../../../SeamsWeb/walletIframe/shared/messages.js";
2
2
  import { useSeams } from "../../context/index.js";
3
3
  import { SeamsAuthMenuMock } from "./SeamsAuthMenuMock.js";
4
+ import { WalletAlternativesBroker, describeWalletAlternatives, walletAlternativesControllerKey } from "./walletAlternatives.js";
4
5
  import { endHostedAuthMenuAnchor, resetHostedAuthMenuAnchor } from "../../../SeamsWeb/walletIframe/client/authMenuAnchor.js";
5
6
  import React from "react";
6
7
  import { jsx } from "react/jsx-runtime";
@@ -83,7 +84,8 @@ function hostedAuthMenuEffectConfigKey(config) {
83
84
  showRegistrationInput: config.showRegistrationInput,
84
85
  showProgress: config.showProgress,
85
86
  copy: config.copy,
86
- enabledExternalProviders: config.enabledExternalProviders
87
+ enabledExternalProviders: config.enabledExternalProviders,
88
+ walletAlternatives: describeWalletAlternatives(config.walletAlternatives)
87
89
  });
88
90
  return JSON.stringify({
89
91
  initialMode: normalized.initialMode,
@@ -92,7 +94,9 @@ function hostedAuthMenuEffectConfigKey(config) {
92
94
  showRegistrationInput: normalized.showRegistrationInput,
93
95
  showProgress: normalized.showProgress,
94
96
  copy: normalized.copy,
95
- enabledExternalProviders: normalized.enabledExternalProviders
97
+ enabledExternalProviders: normalized.enabledExternalProviders,
98
+ walletAlternatives: normalized.walletAlternatives,
99
+ walletControllers: walletAlternativesControllerKey(config.walletAlternatives)
96
100
  });
97
101
  } catch {
98
102
  return "invalid";
@@ -109,6 +113,8 @@ var HostedAuthMenuSessionController = class {
109
113
  showProgress;
110
114
  copy;
111
115
  externalAuthBroker;
116
+ walletAlternatives;
117
+ walletBroker;
112
118
  onOutcome;
113
119
  externalAuthRequestIds = /* @__PURE__ */ new Set();
114
120
  handleExternalAuthRequestBound;
@@ -128,12 +134,15 @@ var HostedAuthMenuSessionController = class {
128
134
  this.showProgress = args.showProgress;
129
135
  this.copy = args.copy;
130
136
  this.externalAuthBroker = args.externalAuthBroker;
137
+ this.walletAlternatives = args.walletAlternatives;
138
+ this.walletBroker = new WalletAlternativesBroker(args.seams.authMenu, args.authMenuSessionId, args.walletAlternatives);
131
139
  this.onOutcome = args.onOutcome;
132
140
  this.handleExternalAuthRequestBound = this.handleExternalAuthRequest.bind(this);
133
141
  }
134
142
  start() {
135
143
  if (this.isActive) return;
136
144
  this.isActive = true;
145
+ this.walletBroker.start();
137
146
  resetHostedAuthMenuAnchor(this.anchorElement);
138
147
  this.unsubscribeExternalAuthRequest = this.seams.authMenu.onExternalAuthRequest(this.handleExternalAuthRequestBound);
139
148
  this.open();
@@ -142,6 +151,7 @@ var HostedAuthMenuSessionController = class {
142
151
  if (this.hasFinalizedCleanup) return;
143
152
  this.hasFinalizedCleanup = true;
144
153
  this.isActive = false;
154
+ this.walletBroker.cleanup();
145
155
  this.unsubscribeExternalAuthRequest?.();
146
156
  this.unsubscribeExternalAuthRequest = null;
147
157
  this.externalAuthRequestIds.clear();
@@ -161,7 +171,8 @@ var HostedAuthMenuSessionController = class {
161
171
  showRegistrationInput: this.showRegistrationInput,
162
172
  showProgress: this.showProgress,
163
173
  copy: this.copy,
164
- enabledExternalProviders: this.externalAuthBroker.current ? ["google"] : []
174
+ enabledExternalProviders: this.externalAuthBroker.current ? ["google"] : [],
175
+ walletAlternatives: describeWalletAlternatives(this.walletAlternatives.current)
165
176
  });
166
177
  } catch (error) {
167
178
  this.emitFailure(failureCodeForError(error), errorMessage(error));
@@ -225,6 +236,10 @@ var HostedAuthMenuSessionController = class {
225
236
  if (this.hasTerminalOutcome) return;
226
237
  this.hasTerminalOutcome = true;
227
238
  endHostedAuthMenuAnchor(this.anchorElement);
239
+ try {
240
+ if (outcome.kind === "wallet_connected") this.walletBroker.complete(outcome.alternativeId);
241
+ } catch {}
242
+ this.walletBroker.cleanup();
228
243
  try {
229
244
  this.onOutcome.current(outcome);
230
245
  } catch {}
@@ -274,7 +289,7 @@ function forwardHostedAuthMenuOutcome(terminalGateRef, onOutcomeRef, outcome) {
274
289
  if (isTerminalHostedAuthMenuSuccess(outcome) && terminalGateRef.current) terminalGateRef.current.completed = true;
275
290
  onOutcomeRef.current(outcome);
276
291
  }
277
- const HostedSeamsAuthMenu = ({ initialMode = "login", initialHeightCssPx, placeholder, registrationAccountInput = "implicit_wallet", showRegistrationInput = false, showProgress = false, copy, externalAuthBroker = null, onOutcome }) => {
292
+ const HostedSeamsAuthMenu = ({ initialMode = "login", initialHeightCssPx, placeholder, registrationAccountInput = "implicit_wallet", showRegistrationInput = false, showProgress = false, copy, externalAuthBroker = null, walletAlternatives, onOutcome }) => {
278
293
  const { seams, isLoggedIn } = useOptionalSeams();
279
294
  const terminalGate = terminalGateFor(seams);
280
295
  syncTerminalGate(terminalGate, isLoggedIn);
@@ -285,9 +300,12 @@ const HostedSeamsAuthMenu = ({ initialMode = "login", initialHeightCssPx, placeh
285
300
  showRegistrationInput,
286
301
  showProgress,
287
302
  copy,
288
- enabledExternalProviders: externalProvidersForBroker(externalAuthBroker)
303
+ enabledExternalProviders: externalProvidersForBroker(externalAuthBroker),
304
+ walletAlternatives
289
305
  });
290
306
  const externalAuthBrokerRef = React.useRef(externalAuthBroker);
307
+ const walletAlternativesRef = React.useRef(walletAlternatives);
308
+ walletAlternativesRef.current = walletAlternatives;
291
309
  const onOutcomeRef = React.useRef(onOutcome);
292
310
  const terminalGateRef = React.useRef(terminalGate);
293
311
  const forwardedOutcomeRef = React.useRef(() => {});
@@ -299,7 +317,8 @@ const HostedSeamsAuthMenu = ({ initialMode = "login", initialHeightCssPx, placeh
299
317
  showRegistrationInput,
300
318
  showProgress,
301
319
  copy,
302
- enabledExternalProviders: externalProvidersForBroker(externalAuthBroker)
320
+ enabledExternalProviders: externalProvidersForBroker(externalAuthBroker),
321
+ walletAlternatives
303
322
  };
304
323
  externalAuthBrokerRef.current = externalAuthBroker;
305
324
  onOutcomeRef.current = onOutcome;
@@ -323,6 +342,7 @@ const HostedSeamsAuthMenu = ({ initialMode = "login", initialHeightCssPx, placeh
323
342
  showProgress: config.showProgress,
324
343
  copy: config.copy,
325
344
  externalAuthBroker: externalAuthBrokerRef,
345
+ walletAlternatives: walletAlternativesRef,
326
346
  onOutcome: forwardedOutcomeRef
327
347
  });
328
348
  session.start();
@@ -0,0 +1,178 @@
1
+ import { parseWalletAlternatives } from "../../../SeamsWeb/walletIframe/shared/walletAlternatives.js";
2
+ import { nearWalletName } from "../../../externalNear/wallets.js";
3
+ import { hotWalletIcon, meteorWalletIcon } from "../externalWalletBrandImages.js";
4
+ //#region src/react/components/HostedSeamsAuthMenu/walletAlternatives.ts
5
+ function walletAlternativeId(alternative) {
6
+ switch (alternative.kind) {
7
+ case "near": return `near:${alternative.wallet}`;
8
+ case "evm": return `evm:${alternative.wallet.id}`;
9
+ default: return assertNeverAlternative(alternative);
10
+ }
11
+ }
12
+ function describeWalletAlternative(alternative) {
13
+ let label;
14
+ let icon;
15
+ switch (alternative.kind) {
16
+ case "near":
17
+ label = nearWalletName(alternative.wallet);
18
+ icon = nearWalletIcon(alternative.wallet);
19
+ break;
20
+ case "evm":
21
+ label = alternative.wallet.name;
22
+ icon = alternative.wallet.icon;
23
+ break;
24
+ default: return assertNeverAlternative(alternative);
25
+ }
26
+ return {
27
+ id: walletAlternativeId(alternative),
28
+ label: alternative.label ?? label,
29
+ description: alternative.description ?? "Use your existing wallet",
30
+ icon: alternative.icon ?? icon
31
+ };
32
+ }
33
+ function describeWalletAlternatives(config) {
34
+ const parsed = parseWalletAlternatives({
35
+ primary: (config?.primary ?? []).map(describeWalletAlternative),
36
+ secondary: (config?.secondary ?? []).map(describeWalletAlternative)
37
+ });
38
+ if (!parsed) throw new Error("Wallet alternatives must have unique identifiers and valid display data");
39
+ return parsed;
40
+ }
41
+ /** Owns application-origin requests for exactly one hosted menu session. */
42
+ var WalletAlternativesBroker = class {
43
+ state = { kind: "inactive" };
44
+ unsubscribe = null;
45
+ seen = /* @__PURE__ */ new Set();
46
+ constructor(api, sessionId, config) {
47
+ this.api = api;
48
+ this.sessionId = sessionId;
49
+ this.config = config;
50
+ }
51
+ start() {
52
+ if (!this.config.current || this.config.current.primary.length + this.config.current.secondary.length === 0) return;
53
+ this.state = { kind: "idle" };
54
+ this.unsubscribe = this.api.onWalletConnectionRequest(this.receive);
55
+ }
56
+ cleanup() {
57
+ const previous = this.state;
58
+ this.state = { kind: "inactive" };
59
+ this.unsubscribe?.();
60
+ this.unsubscribe = null;
61
+ if (previous.kind === "pending" || previous.kind === "connected") previous.alternative.controller.disconnect();
62
+ }
63
+ complete(alternativeId) {
64
+ const attempt = this.state;
65
+ if (attempt.kind !== "connected" || attempt.request.alternativeId !== alternativeId) return;
66
+ this.state = { kind: "idle" };
67
+ attempt.notify();
68
+ }
69
+ receive = (request) => {
70
+ if (this.state.kind !== "idle" || request.authMenuSessionId !== this.sessionId || this.seen.has(request.connectionRequestId)) return;
71
+ this.seen.add(request.connectionRequestId);
72
+ const alternative = [...this.config.current?.primary ?? [], ...this.config.current?.secondary ?? []].find(matchesRequest.bind(null, request));
73
+ if (!alternative) return;
74
+ const attempt = {
75
+ kind: "pending",
76
+ alternative,
77
+ request
78
+ };
79
+ this.state = attempt;
80
+ this.connect(attempt);
81
+ };
82
+ async connect(attempt) {
83
+ const result = await connectWalletAlternative(attempt.alternative);
84
+ if (this.state !== attempt) return;
85
+ let resolution;
86
+ switch (result.kind) {
87
+ case "connected":
88
+ this.state = {
89
+ kind: "connected",
90
+ alternative: attempt.alternative,
91
+ request: attempt.request,
92
+ notify: result.notify
93
+ };
94
+ resolution = { kind: "connected" };
95
+ break;
96
+ case "cancelled":
97
+ case "failed":
98
+ this.state = { kind: "idle" };
99
+ resolution = result;
100
+ break;
101
+ default: return assertNeverAlternative(result);
102
+ }
103
+ try {
104
+ await this.api.resolveWalletConnection({
105
+ authMenuSessionId: this.sessionId,
106
+ connectionRequestId: attempt.request.connectionRequestId,
107
+ result: resolution
108
+ });
109
+ } catch {
110
+ this.cleanup();
111
+ }
112
+ }
113
+ };
114
+ async function connectWalletAlternative(alternative) {
115
+ try {
116
+ switch (alternative.kind) {
117
+ case "near": {
118
+ const result = await alternative.controller.connect(alternative.wallet);
119
+ if (!result.ok) return {
120
+ kind: "failed",
121
+ message: result.message
122
+ };
123
+ return {
124
+ kind: "connected",
125
+ notify: alternative.onConnected.bind(null, result.value)
126
+ };
127
+ }
128
+ case "evm": {
129
+ const result = await alternative.controller.connect(alternative.wallet.id);
130
+ if (result.ok) return {
131
+ kind: "connected",
132
+ notify: alternative.onConnected.bind(null, result.value)
133
+ };
134
+ if (result.code === "rejected") return { kind: "cancelled" };
135
+ return {
136
+ kind: "failed",
137
+ message: result.message
138
+ };
139
+ }
140
+ default: return assertNeverAlternative(alternative);
141
+ }
142
+ } catch {
143
+ return {
144
+ kind: "failed",
145
+ message: "Unable to connect this wallet."
146
+ };
147
+ }
148
+ }
149
+ function matchesRequest(request, alternative) {
150
+ return request.alternativeId === walletAlternativeId(alternative);
151
+ }
152
+ function nearWalletIcon(wallet) {
153
+ switch (wallet) {
154
+ case "meteor": return meteorWalletIcon;
155
+ case "hot": return hotWalletIcon;
156
+ case "intear": return null;
157
+ default: return assertNeverAlternative(wallet);
158
+ }
159
+ }
160
+ const controllerIds = /* @__PURE__ */ new WeakMap();
161
+ let nextControllerId = 0;
162
+ function controllerId(alternative) {
163
+ const current = controllerIds.get(alternative.controller);
164
+ if (current !== void 0) return current;
165
+ const id = ++nextControllerId;
166
+ controllerIds.set(alternative.controller, id);
167
+ return id;
168
+ }
169
+ function walletAlternativesControllerKey(config) {
170
+ return JSON.stringify([...config?.primary ?? [], ...config?.secondary ?? []].map(controllerId));
171
+ }
172
+ function assertNeverAlternative(value) {
173
+ throw new Error(`Unexpected wallet alternative: ${String(value)}`);
174
+ }
175
+ //#endregion
176
+ export { WalletAlternativesBroker, describeWalletAlternatives, walletAlternativesControllerKey };
177
+
178
+ //# sourceMappingURL=walletAlternatives.js.map
@@ -31,7 +31,6 @@ import HostedSeamsAuthMenu from "./components/HostedSeamsAuthMenu/shell.js";
31
31
  import { AccountMenuButtonMock } from "./components/AccountMenuButton/AccountMenuButtonMock.js";
32
32
  import { AccountMenuButton, ProfileSettingsButton, WalletSettingsPage } from "./components/AccountMenuButton/index.js";
33
33
  import { ShowQRCode } from "./components/ShowQRCode.js";
34
- import { WalletConnectorMenu } from "./components/HostedSeamsAuthMenu/WalletConnectorMenu.js";
35
34
  import QRCodeIcon from "./components/QRCodeIcon.js";
36
35
  import { useOwnerNearOperation } from "./hooks/useOwnerNearOperation.js";
37
- export { AccountMenuButton, AccountMenuButtonMock, AccountSyncEventPhase, ActionType, AmountError, DARK_TOKENS, ExternalEvmController, ExternalEvmWalletPicker, HostedSeamsAuthMenu, KeyExportEventPhase, LIGHT_TOKENS, LinkDeviceEventPhase, MoonIcon, PASSKEY_MANAGER_DEFAULT_CONFIGS, PROFILE_MENU_ITEM_IDS, ProfileSettingsButton, QRCodeIcon, QRCodeScanner, QRScanMode, RegistrationEventPhase, SHAPE_PRESETS, SHAPE_ROUNDED, SHAPE_SQUARE, SeamsAuthMenuMock, SeamsContextProvider, SeamsWeb, SeamsWebProvider, ShowQRCode, SigningEventPhase, SunIcon, Theme, TouchIcon, TransactionReviewError, TransactionReviewHost, TxExecutionStatus, UnlockEventPhase, WALLET_FLOW_EVENT_MESSAGES, WALLET_FLOW_EVENT_STEPS, WALLET_FLOW_EVENT_VERSION, WalletConnectorMenu, WalletSettingsPage, addKey, configuredThresholdEcdsaChainTargets, createAccount, createAccountSyncFlowEvent, createKeyExportFlowEvent, createLinkDeviceFlowEvent, createRegistrationFlowEvent, createSigningFlowEvent, createUnlockFlowEvent, createWalletFlowEvent, defineSeamsConfig, deleteAccount, deleteKey, deployContract, functionCall, isWalletFlowEvent, logWalletEvents, nearAccountRefFromAccountId, parseEther, parseNear, parseUnits, seamsTestnetConfig, stake, thresholdEcdsaChainTargetFromChainFamily, thresholdEcdsaChainTargetFromConfig, thresholdEcdsaChainTargetFromConfiguredRequest, thresholdEcdsaChainTargetFromRequest, thresholdEcdsaChainTargetKey, thresholdEcdsaChainTargetsEqual, toWalletId, transfer, useAccountInput, useDeviceLinking, useExternalEvm, useNearClient, useOwnerNearOperation, useQRCamera, useSeams, useTheme, useWalletAuth, useWalletDevices, walletIdFromWalletProfile, walletSessionRefFromSession, yoctoNear };
36
+ export { AccountMenuButton, AccountMenuButtonMock, AccountSyncEventPhase, ActionType, AmountError, DARK_TOKENS, ExternalEvmController, ExternalEvmWalletPicker, HostedSeamsAuthMenu, KeyExportEventPhase, LIGHT_TOKENS, LinkDeviceEventPhase, MoonIcon, PASSKEY_MANAGER_DEFAULT_CONFIGS, PROFILE_MENU_ITEM_IDS, ProfileSettingsButton, QRCodeIcon, QRCodeScanner, QRScanMode, RegistrationEventPhase, SHAPE_PRESETS, SHAPE_ROUNDED, SHAPE_SQUARE, SeamsAuthMenuMock, SeamsContextProvider, SeamsWeb, SeamsWebProvider, ShowQRCode, SigningEventPhase, SunIcon, Theme, TouchIcon, TransactionReviewError, TransactionReviewHost, TxExecutionStatus, UnlockEventPhase, WALLET_FLOW_EVENT_MESSAGES, WALLET_FLOW_EVENT_STEPS, WALLET_FLOW_EVENT_VERSION, WalletSettingsPage, addKey, configuredThresholdEcdsaChainTargets, createAccount, createAccountSyncFlowEvent, createKeyExportFlowEvent, createLinkDeviceFlowEvent, createRegistrationFlowEvent, createSigningFlowEvent, createUnlockFlowEvent, createWalletFlowEvent, defineSeamsConfig, deleteAccount, deleteKey, deployContract, functionCall, isWalletFlowEvent, logWalletEvents, nearAccountRefFromAccountId, parseEther, parseNear, parseUnits, seamsTestnetConfig, stake, thresholdEcdsaChainTargetFromChainFamily, thresholdEcdsaChainTargetFromConfig, thresholdEcdsaChainTargetFromConfiguredRequest, thresholdEcdsaChainTargetFromRequest, thresholdEcdsaChainTargetKey, thresholdEcdsaChainTargetsEqual, toWalletId, transfer, useAccountInput, useDeviceLinking, useExternalEvm, useNearClient, useOwnerNearOperation, useQRCamera, useSeams, useTheme, useWalletAuth, useWalletDevices, walletIdFromWalletProfile, walletSessionRefFromSession, yoctoNear };
@@ -197,189 +197,6 @@ svg[data-seams-root].seams-icon[viewBox],
197
197
  }
198
198
  }
199
199
 
200
- :where([data-seams-root]) .seams-wallet-connector {
201
- box-sizing: border-box;
202
- position: relative;
203
- width: min(100%, 420px);
204
- border-radius: var(--seams-shape-card, 16px);
205
- background: var(--seams-colors-colorBackground);
206
- box-shadow: var(--seams-shadows-md);
207
- color: var(--seams-colors-textPrimary);
208
- font-family: var(--seams-font-family, system-ui, sans-serif);
209
- font-size: var(--seams-font-size-base, 1rem);
210
- line-height: 1.5;
211
- transition: height 200ms cubic-bezier(0.32, 0.72, 0, 1);
212
- }
213
-
214
- :where([data-seams-root]) .seams-wallet-connector[data-connector-view='auth'] {
215
- background: transparent;
216
- box-shadow: none;
217
- }
218
-
219
- :where([data-seams-root]) .seams-wallet-connector-content {
220
- width: 100%;
221
- min-width: 0;
222
- border-radius: inherit;
223
- }
224
-
225
- :where([data-seams-root])
226
- .seams-wallet-connector[data-connector-view='auth']
227
- .seams-wallet-connector-content {
228
- animation: seams-connector-enter 180ms cubic-bezier(0.22, 1, 0.36, 1);
229
- }
230
-
231
- :where([data-seams-root]) .seams-wallet-connector-choices {
232
- box-sizing: border-box;
233
- padding: calc(var(--seams-spacing-lg) + var(--seams-spacing-xs)) var(--seams-spacing-lg)
234
- var(--seams-spacing-lg);
235
- border: 1px solid var(--seams-colors-borderPrimary);
236
- border-radius: inherit;
237
- }
238
-
239
- :where([data-seams-root]) .seams-wallet-connector h2 {
240
- margin: 0 calc(var(--seams-spacing-lg) + var(--seams-spacing-xs))
241
- calc(var(--seams-spacing-sm) + var(--seams-spacing-xs)) 0;
242
- font-size: 1.375em;
243
- line-height: 1.25;
244
- font-weight: 500;
245
- letter-spacing: -0.04em;
246
- outline: none;
247
- }
248
-
249
- :where([data-seams-root]) .seams-wallet-connector p {
250
- margin: 0 0 var(--seams-spacing-lg);
251
- color: var(--seams-colors-textSecondary);
252
- font-size: 0.8125em;
253
- }
254
-
255
- :where([data-seams-root]) .seams-wallet-connector-options {
256
- display: grid;
257
- gap: var(--seams-spacing-sm);
258
- }
259
-
260
- :where([data-seams-root]) .seams-wallet-connector-option {
261
- display: flex;
262
- align-items: center;
263
- gap: var(--seams-spacing-md);
264
- width: 100%;
265
- min-width: 0;
266
- min-height: calc(var(--seams-shape-controlHeight, 44px) + 2 * var(--seams-spacing-md));
267
- padding: var(--seams-spacing-md);
268
- box-sizing: border-box;
269
- border: 1px solid var(--seams-colors-secondaryButtonBorder, var(--seams-colors-borderPrimary));
270
- border-radius: var(--seams-shape-control, 10px);
271
- background: var(--seams-colors-secondaryButtonBackground, var(--seams-colors-surface));
272
- color: var(--seams-colors-secondaryButtonText, var(--seams-colors-textPrimary));
273
- font: inherit;
274
- text-align: start;
275
- cursor: pointer;
276
- transition:
277
- background-color 160ms ease,
278
- border-color 160ms ease;
279
- }
280
-
281
- :where([data-seams-root]) .seams-wallet-connector-option:disabled {
282
- opacity: 0.55;
283
- cursor: default;
284
- }
285
-
286
- :where([data-seams-root]) .seams-wallet-connector-icon {
287
- display: grid;
288
- place-items: center;
289
- width: 34px;
290
- flex: none;
291
- }
292
- :where([data-seams-root]) .seams-wallet-connector-icon img {
293
- display: block;
294
- object-fit: contain;
295
- }
296
-
297
- :where([data-seams-root]) .seams-wallet-connector-label {
298
- display: grid;
299
- gap: var(--seams-spacing-xs);
300
- flex: 1;
301
- min-width: 0;
302
- overflow-wrap: anywhere;
303
- }
304
-
305
- :where([data-seams-root]) .seams-wallet-connector-label strong {
306
- font-size: 0.8125em;
307
- font-weight: 500;
308
- }
309
-
310
- :where([data-seams-root]) .seams-wallet-connector-label small {
311
- font-size: 0.75em;
312
- color: var(--seams-colors-textSecondary);
313
- }
314
-
315
- :where([data-seams-root]) .seams-wallet-connector-option > svg {
316
- flex: none;
317
- color: var(--seams-colors-textSecondary);
318
- }
319
-
320
- :where([data-seams-root]) .seams-wallet-connector-close,
321
- :where([data-seams-root]) .seams-wallet-connector-back {
322
- position: absolute;
323
- z-index: calc(var(--seams-wallet-inline-dialog-z, 0) + 1);
324
- inset: 12px 12px auto auto;
325
- display: grid;
326
- place-items: center;
327
- width: 32px;
328
- height: 32px;
329
- padding: 0;
330
- border: 0;
331
- border-radius: 50%;
332
- color: var(--seams-colors-textSecondary);
333
- background: transparent;
334
- cursor: pointer;
335
- }
336
-
337
- :where([data-seams-root]) .seams-wallet-connector-back:has(+ .seams-wallet-connector-close) {
338
- right: 52px;
339
- }
340
-
341
- :where([data-seams-root]) .seams-wallet-connector button:focus-visible {
342
- outline: 2px solid var(--seams-colors-focus, currentColor);
343
- outline-offset: 3px;
344
- }
345
-
346
- :where([data-seams-root]) .seams-wallet-connector p[role] {
347
- margin: var(--seams-spacing-md) 0 0;
348
- }
349
-
350
- :where([data-seams-root]) .seams-wallet-connector .seams-wallet-connector-error {
351
- color: var(--seams-colors-error);
352
- }
353
-
354
- @media (hover: hover) and (pointer: fine) {
355
- :where([data-seams-root]) .seams-wallet-connector-option:not(:disabled):hover {
356
- background: var(--seams-colors-secondaryButtonHoverBackground, var(--seams-colors-hover));
357
- border-color: var(--seams-colors-borderHover);
358
- }
359
- :where([data-seams-root]) .seams-wallet-connector-close:hover,
360
- :where([data-seams-root]) .seams-wallet-connector-back:hover {
361
- background: var(--seams-colors-hover);
362
- }
363
- }
364
-
365
- @keyframes seams-connector-enter {
366
- from {
367
- opacity: 0;
368
- }
369
- to {
370
- opacity: 1;
371
- }
372
- }
373
-
374
- @media (prefers-reduced-motion: reduce) {
375
- :where([data-seams-root]) .seams-wallet-connector {
376
- transition: none;
377
- }
378
- :where([data-seams-root]) .seams-wallet-connector-content {
379
- animation: none;
380
- }
381
- }
382
-
383
200
 
384
201
  /* Import AccountMenuButton styles */
385
202
  /* Expander (ExportKeysSection) — same grid-rows collapse mechanism as the
@@ -3,7 +3,6 @@
3
3
  @import './components/theme/Theme.css';
4
4
  @import './components/AccountMenuButton/icons/Icon.css';
5
5
  @import './externalWalletPicker.css';
6
- @import './components/HostedSeamsAuthMenu/WalletConnectorMenu.css';
7
6
 
8
7
  /* Import AccountMenuButton styles */
9
8
  @import './components/AccountMenuButton/ExportKeysSection.css';
@@ -1 +1 @@
1
- import{a as e,i as t,r as n}from"./csp-stylesheet-5LU6VGKK.js";import{c as r,i,r as a,s as o}from"./appearance-token-vars-DkF3EBbF.js";async function s(e,t,n){if(!e.isConnected||n?.aborted)return!1;let r=e.ownerDocument,i=r.defaultView?.navigator.clipboard;if(i?.writeText)try{return await i.writeText(t),!0}catch{}if(!e.isConnected||n?.aborted)return!1;let a=r.createElement(`textarea`);a.value=t,a.readOnly=!0,a.className=`seams-offscreen`,e.appendChild(a),a.select();try{return r.execCommand(`copy`)}finally{a.remove()}}function c(){return n(`span`,{class:`copy-icon`,"aria-hidden":`true`,children:[n(`span`,{class:`copy-icon-check`,children:n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:n(`path`,{d:`M20 6 9 17l-5-5`})})}),n(`span`,{class:`copy-icon-copy`,children:n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:[n(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),n(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})]})})]})}let l=0;function u(e){return n(d,{...e},e.context)}var d=class extends t{static contextType=a;dialog=e();hosted=e();containerId=`seams-confirmation-modal-${++l}`;componentDidMount(){this.props.context===`standalone`?this.dialog.current?.showModal():this.hosted.current?.focus({preventScroll:!0})}componentWillUnmount(){this.dialog.current?.close()}cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.onCancel()};backdropClick=e=>{let t=this.dialog.current;if(!t||e.target!==t)return;let n=t.getBoundingClientRect();(e.clientX<n.left||e.clientX>n.right||e.clientY<n.top||e.clientY>n.bottom)&&this.cancel(e)};hostedKeyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};render(){return this.props.context===`standalone`?n(`dialog`,{ref:this.dialog,class:`seams-confirmation-modal`,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,children:n(`div`,{id:this.containerId,class:`modal-container-root`,tabIndex:-1,children:this.props.children})}):n(`div`,{ref:this.hosted,class:`seams-confirmation-modal seams-confirmation-modal--hosted`,tabIndex:-1,onKeyDown:this.hostedKeyDown,children:n(`div`,{id:this.containerId,class:`modal-container-root`,children:this.props.children})})}};function f(e){let t=e.startTranslatePx+e.deltaPx;if(t>=e.restTranslatePx)return t;let n=Math.max(e.sheetHeightPx*.5,e.viewportHeightPx*.5,e.minimumOverpullPx),r=e.restTranslatePx-t;return e.restTranslatePx-n*(1-1/(r/n+1))}function p(e){let t=e.totalDeltaPx/Math.max(1,e.durationMs);return Math.min(e.velocityPxPerMs,t)<=-.6||Math.max(e.velocityPxPerMs,t)>=.7||e.translatePx>=e.sheetHeightPx-50}let m=0;function h(e){return n(g,{...e},e.context)}var g=class extends t{static contextType=a;state={settled:!1};id=`seams-confirmation-drawer-${++m}`;dialog=e();sheet=e();body=e();content=e();observer=null;frame=null;closeTimer=null;gesture={kind:`idle`};lifetime=`active`;closeReported=!1;suppressPointerClick=!1;componentDidMount(){let e=this.sheet.current,t=e.ownerDocument.defaultView;this.dialog.current?.showModal(),this.dialog.current||e.focus({preventScroll:!0}),this.observer=new ResizeObserver(this.measureContent),this.observer.observe(this.content.current),this.observer.observe(e),t.addEventListener(`resize`,this.scheduleMeasure),t.visualViewport?.addEventListener(`resize`,this.scheduleMeasure),this.measure(),this.frame=t.requestAnimationFrame(this.openAfterLayout),this.props.state.kind===`closing`&&this.startClose()}openAfterLayout=()=>{this.frame=null,this.setState({settled:!0})};componentDidUpdate(e){e.styles!==this.props.styles&&(e.styles.deleteDynamicRule(this.id),e.styles.deleteDynamicRule(`${this.id}-drag`),this.resetGesture(),this.measure()),e.state.kind!==this.props.state.kind&&(this.props.state.kind===`closing`?this.startClose():(this.clearCloseTimer(),this.closeReported=!1)),this.props.state.kind===`open`&&this.props.state.interaction===`busy`&&this.resetGesture()}componentWillUnmount(){this.lifetime=`disposed`,this.resetGesture();let e=this.sheet.current.ownerDocument.defaultView;this.frame!==null&&e.cancelAnimationFrame(this.frame),this.clearCloseTimer(),this.observer?.disconnect(),e.removeEventListener(`resize`,this.scheduleMeasure),e.visualViewport?.removeEventListener(`resize`,this.scheduleMeasure),this.props.styles.deleteDynamicRule(this.id),this.dialog.current?.close()}scheduleMeasure=()=>{this.lifetime===`disposed`||this.frame!==null||(this.frame=this.sheet.current.ownerDocument.defaultView.requestAnimationFrame(this.measureFrame))};measureFrame=()=>{this.frame=null,this.measure()};measureContent=()=>{this.lifetime===`active`&&this.measure()};measure(){if(this.gesture.kind!==`idle`)return;let e=this.sheet.current,t=this.content.current,n=Math.round(t.getBoundingClientRect().bottom-e.getBoundingClientRect().top),r=this.props.context===`standalone`?Math.max(0,e.offsetHeight-n):0;this.props.styles.setDynamicDeclarations(this.id,`#${this.id}`,{"--seams-drawer-rest":`${r}px`})}startClose(){this.resetGesture(),this.clearCloseTimer();let e=this.sheet.current.ownerDocument.defaultView,t=e.matchMedia(`(prefers-reduced-motion: reduce)`).matches?0:150;this.closeTimer=e.setTimeout(this.reportClosed,t)}clearCloseTimer(){this.closeTimer!==null&&(this.sheet.current.ownerDocument.defaultView.clearTimeout(this.closeTimer),this.closeTimer=null)}reportClosed=()=>{this.clearCloseTimer(),!(this.lifetime===`disposed`||this.closeReported||this.props.state.kind!==`closing`)&&(this.closeReported=!0,this.props.state.onClosed())};transitionEnd=e=>{e.target===this.sheet.current&&e.propertyName===`transform`&&this.reportClosed()};cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.state.kind===`open`&&this.props.onCancel()};backdropClick=e=>{this.props.dismissOnBackdrop!==!1&&e.target===this.dialog.current&&this.canDrag()&&this.cancel(e)};keyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};canDrag(){return this.props.state.kind===`open`&&this.props.state.interaction===`ready`}pointerDown=e=>{if(this.clearClickSuppression(),!this.canDrag()||this.gesture.kind!==`idle`||!e.isPrimary||e.button!==0)return;let t=e.target;if(t instanceof Element&&t.closest(`a, input, textarea, select, summary, button:not(.seams-drawer-handle), [data-seams-drawer-no-drag]`))return;this.gesture={kind:`pending`,pointerId:e.pointerId,startY:e.clientY};let n=this.sheet.current.ownerDocument;n.addEventListener(`pointermove`,this.pointerMove,{passive:!1}),n.addEventListener(`pointerup`,this.pointerUp),n.addEventListener(`pointercancel`,this.pointerCancel)};pointerMove=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=this.sheet.current;if(t.kind===`pending`){if(Math.abs(e.clientY-t.startY)<8||this.body.current.scrollTop>0)return;let r=n.ownerDocument.defaultView,i=new DOMMatrixReadOnly(r.getComputedStyle(n).transform).m42;t={kind:`dragging`,pointerId:t.pointerId,startY:t.startY,lastY:t.startY,startedAt:e.timeStamp,lastTime:e.timeStamp,velocity:0,rest:i,translate:i,height:n.offsetHeight},this.gesture=t,n.setPointerCapture(e.pointerId),n.classList.add(`is-dragging`)}let r=e.timeStamp-t.lastTime;r>0&&(t.velocity=(e.clientY-t.lastY)/r),t.lastY=e.clientY,t.lastTime=e.timeStamp,t.translate=f({startTranslatePx:t.rest,deltaPx:e.clientY-t.startY,restTranslatePx:t.rest,sheetHeightPx:t.height,viewportHeightPx:n.ownerDocument.defaultView.innerHeight,minimumOverpullPx:160}),this.props.styles.setDynamicDeclarations(`${this.id}-drag`,`#${this.id}`,{"--seams-drawer-drag":`${t.translate}px`}),e.preventDefault()};pointerUp=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=t.kind===`dragging`&&p({velocityPxPerMs:t.velocity,totalDeltaPx:t.lastY-t.startY,durationMs:e.timeStamp-t.startedAt,translatePx:t.translate,sheetHeightPx:t.height});t.kind===`dragging`&&(this.suppressPointerClick=!0,e.preventDefault()),this.resetGesture(),n&&this.props.state.kind===`open`&&this.props.onCancel()};pointerCancel=e=>{this.gesture.kind!==`idle`&&this.gesture.pointerId===e.pointerId&&(this.gesture.kind===`dragging`&&(this.suppressPointerClick=!0),this.resetGesture())};clearClickSuppression=()=>{this.suppressPointerClick=!1};suppressDragClick=e=>{!this.suppressPointerClick||e.detail===0||(this.suppressPointerClick=!1,e.preventDefault(),e.stopPropagation())};resetGesture(){let e=this.sheet.current,t=this.gesture;this.gesture={kind:`idle`},t.kind!==`idle`&&e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId),e.classList.remove(`is-dragging`);let n=e.ownerDocument;n.removeEventListener(`pointermove`,this.pointerMove),n.removeEventListener(`pointerup`,this.pointerUp),n.removeEventListener(`pointercancel`,this.pointerCancel),this.props.styles.deleteDynamicRule(`${this.id}-drag`),this.lifetime===`active`&&this.scheduleMeasure()}render(){let e=this.state.settled&&this.props.state.kind===`open`,t=[`seams-confirmation-drawer`];e&&t.push(`is-open`),this.gesture.kind===`dragging`&&t.push(`is-dragging`);let a=n(`section`,{ref:this.sheet,id:this.id,class:t.join(` `),"data-context":this.props.context,tabIndex:-1,onPointerDownCapture:this.pointerDown,onClickCapture:this.suppressDragClick,onLostPointerCapture:this.pointerCancel,onTransitionEnd:this.transitionEnd,onKeyDown:this.keyDown,children:[n(`div`,{class:`seams-drawer-controls`,children:[this.props.origin&&n(`div`,{class:`seams-drawer-origin`,children:this.props.origin}),n(`button`,{type:`button`,class:`seams-drawer-handle`,"aria-label":r(this.context,`Dismiss confirmation`),disabled:!this.canDrag(),onClick:this.cancel,children:n(`span`,{})}),n(`button`,{type:`button`,class:`seams-drawer-close`,"aria-label":r(this.context,`Close`),disabled:!this.canDrag(),onClick:this.cancel,children:`×`})]}),n(`div`,{class:`seams-drawer-body`,ref:this.body,children:[this.props.errorMessage&&n(`div`,{class:`error`,children:n(i,{copy:this.props.errorMessage})}),n(`div`,{class:`seams-drawer-content`,ref:this.content,children:this.props.children})]})]});return this.props.context===`wallet-iframe`?a:n(`dialog`,{class:`seams-drawer-dialog`,ref:this.dialog,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,onClickCapture:this.suppressDragClick,onPointerDownCapture:this.clearClickSuppression,children:a})}};export{s as i,u as n,c as r,h as t};
1
+ import{a as e,i as t,r as n}from"./csp-stylesheet-5LU6VGKK.js";import{c as r,i,r as a,s as o}from"./appearance-token-vars-CzlRDVQ7.js";async function s(e,t,n){if(!e.isConnected||n?.aborted)return!1;let r=e.ownerDocument,i=r.defaultView?.navigator.clipboard;if(i?.writeText)try{return await i.writeText(t),!0}catch{}if(!e.isConnected||n?.aborted)return!1;let a=r.createElement(`textarea`);a.value=t,a.readOnly=!0,a.className=`seams-offscreen`,e.appendChild(a),a.select();try{return r.execCommand(`copy`)}finally{a.remove()}}function c(){return n(`span`,{class:`copy-icon`,"aria-hidden":`true`,children:[n(`span`,{class:`copy-icon-check`,children:n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:n(`path`,{d:`M20 6 9 17l-5-5`})})}),n(`span`,{class:`copy-icon-copy`,children:n(`svg`,{width:`16`,height:`16`,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,children:[n(`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}),n(`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`})]})})]})}let l=0;function u(e){return n(d,{...e},e.context)}var d=class extends t{static contextType=a;dialog=e();hosted=e();containerId=`seams-confirmation-modal-${++l}`;componentDidMount(){this.props.context===`standalone`?this.dialog.current?.showModal():this.hosted.current?.focus({preventScroll:!0})}componentWillUnmount(){this.dialog.current?.close()}cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.onCancel()};backdropClick=e=>{let t=this.dialog.current;if(!t||e.target!==t)return;let n=t.getBoundingClientRect();(e.clientX<n.left||e.clientX>n.right||e.clientY<n.top||e.clientY>n.bottom)&&this.cancel(e)};hostedKeyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};render(){return this.props.context===`standalone`?n(`dialog`,{ref:this.dialog,class:`seams-confirmation-modal`,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,children:n(`div`,{id:this.containerId,class:`modal-container-root`,tabIndex:-1,children:this.props.children})}):n(`div`,{ref:this.hosted,class:`seams-confirmation-modal seams-confirmation-modal--hosted`,tabIndex:-1,onKeyDown:this.hostedKeyDown,children:n(`div`,{id:this.containerId,class:`modal-container-root`,children:this.props.children})})}};function f(e){let t=e.startTranslatePx+e.deltaPx;if(t>=e.restTranslatePx)return t;let n=Math.max(e.sheetHeightPx*.5,e.viewportHeightPx*.5,e.minimumOverpullPx),r=e.restTranslatePx-t;return e.restTranslatePx-n*(1-1/(r/n+1))}function p(e){let t=e.totalDeltaPx/Math.max(1,e.durationMs);return Math.min(e.velocityPxPerMs,t)<=-.6||Math.max(e.velocityPxPerMs,t)>=.7||e.translatePx>=e.sheetHeightPx-50}let m=0;function h(e){return n(g,{...e},e.context)}var g=class extends t{static contextType=a;state={settled:!1};id=`seams-confirmation-drawer-${++m}`;dialog=e();sheet=e();body=e();content=e();observer=null;frame=null;closeTimer=null;gesture={kind:`idle`};lifetime=`active`;closeReported=!1;suppressPointerClick=!1;componentDidMount(){let e=this.sheet.current,t=e.ownerDocument.defaultView;this.dialog.current?.showModal(),this.dialog.current||e.focus({preventScroll:!0}),this.observer=new ResizeObserver(this.measureContent),this.observer.observe(this.content.current),this.observer.observe(e),t.addEventListener(`resize`,this.scheduleMeasure),t.visualViewport?.addEventListener(`resize`,this.scheduleMeasure),this.measure(),this.frame=t.requestAnimationFrame(this.openAfterLayout),this.props.state.kind===`closing`&&this.startClose()}openAfterLayout=()=>{this.frame=null,this.setState({settled:!0})};componentDidUpdate(e){e.styles!==this.props.styles&&(e.styles.deleteDynamicRule(this.id),e.styles.deleteDynamicRule(`${this.id}-drag`),this.resetGesture(),this.measure()),e.state.kind!==this.props.state.kind&&(this.props.state.kind===`closing`?this.startClose():(this.clearCloseTimer(),this.closeReported=!1)),this.props.state.kind===`open`&&this.props.state.interaction===`busy`&&this.resetGesture()}componentWillUnmount(){this.lifetime=`disposed`,this.resetGesture();let e=this.sheet.current.ownerDocument.defaultView;this.frame!==null&&e.cancelAnimationFrame(this.frame),this.clearCloseTimer(),this.observer?.disconnect(),e.removeEventListener(`resize`,this.scheduleMeasure),e.visualViewport?.removeEventListener(`resize`,this.scheduleMeasure),this.props.styles.deleteDynamicRule(this.id),this.dialog.current?.close()}scheduleMeasure=()=>{this.lifetime===`disposed`||this.frame!==null||(this.frame=this.sheet.current.ownerDocument.defaultView.requestAnimationFrame(this.measureFrame))};measureFrame=()=>{this.frame=null,this.measure()};measureContent=()=>{this.lifetime===`active`&&this.measure()};measure(){if(this.gesture.kind!==`idle`)return;let e=this.sheet.current,t=this.content.current,n=Math.round(t.getBoundingClientRect().bottom-e.getBoundingClientRect().top),r=this.props.context===`standalone`?Math.max(0,e.offsetHeight-n):0;this.props.styles.setDynamicDeclarations(this.id,`#${this.id}`,{"--seams-drawer-rest":`${r}px`})}startClose(){this.resetGesture(),this.clearCloseTimer();let e=this.sheet.current.ownerDocument.defaultView,t=e.matchMedia(`(prefers-reduced-motion: reduce)`).matches?0:150;this.closeTimer=e.setTimeout(this.reportClosed,t)}clearCloseTimer(){this.closeTimer!==null&&(this.sheet.current.ownerDocument.defaultView.clearTimeout(this.closeTimer),this.closeTimer=null)}reportClosed=()=>{this.clearCloseTimer(),!(this.lifetime===`disposed`||this.closeReported||this.props.state.kind!==`closing`)&&(this.closeReported=!0,this.props.state.onClosed())};transitionEnd=e=>{e.target===this.sheet.current&&e.propertyName===`transform`&&this.reportClosed()};cancel=e=>{e.preventDefault(),e.stopPropagation(),this.props.state.kind===`open`&&this.props.onCancel()};backdropClick=e=>{this.props.dismissOnBackdrop!==!1&&e.target===this.dialog.current&&this.canDrag()&&this.cancel(e)};keyDown=e=>{!e.defaultPrevented&&e.key===`Escape`&&this.cancel(e)};canDrag(){return this.props.state.kind===`open`&&this.props.state.interaction===`ready`}pointerDown=e=>{if(this.clearClickSuppression(),!this.canDrag()||this.gesture.kind!==`idle`||!e.isPrimary||e.button!==0)return;let t=e.target;if(t instanceof Element&&t.closest(`a, input, textarea, select, summary, button:not(.seams-drawer-handle), [data-seams-drawer-no-drag]`))return;this.gesture={kind:`pending`,pointerId:e.pointerId,startY:e.clientY};let n=this.sheet.current.ownerDocument;n.addEventListener(`pointermove`,this.pointerMove,{passive:!1}),n.addEventListener(`pointerup`,this.pointerUp),n.addEventListener(`pointercancel`,this.pointerCancel)};pointerMove=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=this.sheet.current;if(t.kind===`pending`){if(Math.abs(e.clientY-t.startY)<8||this.body.current.scrollTop>0)return;let r=n.ownerDocument.defaultView,i=new DOMMatrixReadOnly(r.getComputedStyle(n).transform).m42;t={kind:`dragging`,pointerId:t.pointerId,startY:t.startY,lastY:t.startY,startedAt:e.timeStamp,lastTime:e.timeStamp,velocity:0,rest:i,translate:i,height:n.offsetHeight},this.gesture=t,n.setPointerCapture(e.pointerId),n.classList.add(`is-dragging`)}let r=e.timeStamp-t.lastTime;r>0&&(t.velocity=(e.clientY-t.lastY)/r),t.lastY=e.clientY,t.lastTime=e.timeStamp,t.translate=f({startTranslatePx:t.rest,deltaPx:e.clientY-t.startY,restTranslatePx:t.rest,sheetHeightPx:t.height,viewportHeightPx:n.ownerDocument.defaultView.innerHeight,minimumOverpullPx:160}),this.props.styles.setDynamicDeclarations(`${this.id}-drag`,`#${this.id}`,{"--seams-drawer-drag":`${t.translate}px`}),e.preventDefault()};pointerUp=e=>{let t=this.gesture;if(t.kind===`idle`||t.pointerId!==e.pointerId)return;let n=t.kind===`dragging`&&p({velocityPxPerMs:t.velocity,totalDeltaPx:t.lastY-t.startY,durationMs:e.timeStamp-t.startedAt,translatePx:t.translate,sheetHeightPx:t.height});t.kind===`dragging`&&(this.suppressPointerClick=!0,e.preventDefault()),this.resetGesture(),n&&this.props.state.kind===`open`&&this.props.onCancel()};pointerCancel=e=>{this.gesture.kind!==`idle`&&this.gesture.pointerId===e.pointerId&&(this.gesture.kind===`dragging`&&(this.suppressPointerClick=!0),this.resetGesture())};clearClickSuppression=()=>{this.suppressPointerClick=!1};suppressDragClick=e=>{!this.suppressPointerClick||e.detail===0||(this.suppressPointerClick=!1,e.preventDefault(),e.stopPropagation())};resetGesture(){let e=this.sheet.current,t=this.gesture;this.gesture={kind:`idle`},t.kind!==`idle`&&e.hasPointerCapture(t.pointerId)&&e.releasePointerCapture(t.pointerId),e.classList.remove(`is-dragging`);let n=e.ownerDocument;n.removeEventListener(`pointermove`,this.pointerMove),n.removeEventListener(`pointerup`,this.pointerUp),n.removeEventListener(`pointercancel`,this.pointerCancel),this.props.styles.deleteDynamicRule(`${this.id}-drag`),this.lifetime===`active`&&this.scheduleMeasure()}render(){let e=this.state.settled&&this.props.state.kind===`open`,t=[`seams-confirmation-drawer`];e&&t.push(`is-open`),this.gesture.kind===`dragging`&&t.push(`is-dragging`);let a=n(`section`,{ref:this.sheet,id:this.id,class:t.join(` `),"data-context":this.props.context,tabIndex:-1,onPointerDownCapture:this.pointerDown,onClickCapture:this.suppressDragClick,onLostPointerCapture:this.pointerCancel,onTransitionEnd:this.transitionEnd,onKeyDown:this.keyDown,children:[n(`div`,{class:`seams-drawer-controls`,children:[this.props.origin&&n(`div`,{class:`seams-drawer-origin`,children:this.props.origin}),n(`button`,{type:`button`,class:`seams-drawer-handle`,"aria-label":r(this.context,`Dismiss confirmation`),disabled:!this.canDrag(),onClick:this.cancel,children:n(`span`,{})}),n(`button`,{type:`button`,class:`seams-drawer-close`,"aria-label":r(this.context,`Close`),disabled:!this.canDrag(),onClick:this.cancel,children:`×`})]}),n(`div`,{class:`seams-drawer-body`,ref:this.body,children:[this.props.errorMessage&&n(`div`,{class:`error`,children:n(i,{copy:this.props.errorMessage})}),n(`div`,{class:`seams-drawer-content`,ref:this.content,children:this.props.children})]})]});return this.props.context===`wallet-iframe`?a:n(`dialog`,{class:`seams-drawer-dialog`,ref:this.dialog,"aria-label":o(this.context,this.props.label),onCancel:this.cancel,onClick:this.backdropClick,onClickCapture:this.suppressDragClick,onPointerDownCapture:this.clearClickSuppression,children:a})}};export{s as i,u as n,c as r,h as t};