thirdweb 5.39.0 → 5.40.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 (334) hide show
  1. package/dist/cjs/exports/react.js +7 -2
  2. package/dist/cjs/exports/react.js.map +1 -1
  3. package/dist/cjs/react/core/design-system/index.js +2 -0
  4. package/dist/cjs/react/core/design-system/index.js.map +1 -1
  5. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js +13 -94
  6. package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  7. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js +16 -3
  8. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  9. package/dist/cjs/react/core/utils/defaultTokens.js +32 -25
  10. package/dist/cjs/react/core/utils/defaultTokens.js.map +1 -1
  11. package/dist/cjs/react/core/utils/wallet.js +91 -13
  12. package/dist/cjs/react/core/utils/wallet.js.map +1 -1
  13. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js +18 -127
  14. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  15. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +3 -1
  16. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  17. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +7 -3
  18. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  19. package/dist/cjs/react/web/ui/ConnectWallet/TransactionsScreen.js +1 -1
  20. package/dist/cjs/react/web/ui/ConnectWallet/TransactionsScreen.js.map +1 -1
  21. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +184 -118
  22. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  23. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +104 -0
  24. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -0
  25. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +69 -0
  26. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -0
  27. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +23 -5
  28. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +1 -1
  29. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +4 -4
  30. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
  31. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js +2 -2
  32. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js.map +1 -1
  33. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +2 -2
  34. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +1 -1
  35. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js +1 -1
  36. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js.map +1 -1
  37. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +132 -45
  38. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  39. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js +2 -5
  40. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js.map +1 -1
  41. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +13 -8
  42. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  43. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js +1 -1
  44. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js.map +1 -1
  45. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js +1 -1
  46. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js.map +1 -1
  47. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js +1 -1
  48. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js.map +1 -1
  49. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js +1 -1
  50. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js.map +1 -1
  51. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js +1 -1
  52. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js.map +1 -1
  53. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +9 -5
  54. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  55. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +1 -1
  56. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
  57. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +8 -3
  58. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  59. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js +1 -1
  60. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js.map +1 -1
  61. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js +1 -1
  62. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js.map +1 -1
  63. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js +84 -0
  64. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js.map +1 -0
  65. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js +13 -7
  66. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js.map +1 -1
  67. package/dist/cjs/react/web/ui/ConnectWallet/screens/nativeToken.js +3 -1
  68. package/dist/cjs/react/web/ui/ConnectWallet/screens/nativeToken.js.map +1 -1
  69. package/dist/cjs/react/web/ui/PayEmbed.js +16 -9
  70. package/dist/cjs/react/web/ui/PayEmbed.js.map +1 -1
  71. package/dist/cjs/react/web/ui/TransactionButton/ExecutingScreen.js +53 -0
  72. package/dist/cjs/react/web/ui/TransactionButton/ExecutingScreen.js.map +1 -0
  73. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js +33 -0
  74. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js.map +1 -0
  75. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +16 -5
  76. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  77. package/dist/cjs/react/web/wallets/shared/SocialLogin.js +18 -2
  78. package/dist/cjs/react/web/wallets/shared/SocialLogin.js.map +1 -1
  79. package/dist/cjs/react/web/wallets/shared/{openOauthSignInWindow.js → oauthSignIn.js} +2 -3
  80. package/dist/cjs/react/web/wallets/shared/oauthSignIn.js.map +1 -0
  81. package/dist/cjs/version.js +1 -1
  82. package/dist/cjs/wallets/in-app/core/wallet/index.js +15 -0
  83. package/dist/cjs/wallets/in-app/core/wallet/index.js.map +1 -1
  84. package/dist/cjs/wallets/in-app/web/in-app.js +10 -0
  85. package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
  86. package/dist/cjs/wallets/in-app/web/lib/auth/index.js +2 -0
  87. package/dist/cjs/wallets/in-app/web/lib/auth/index.js.map +1 -1
  88. package/dist/cjs/wallets/in-app/web/lib/auth/oauth.js +9 -1
  89. package/dist/cjs/wallets/in-app/web/lib/auth/oauth.js.map +1 -1
  90. package/dist/cjs/wallets/in-app/web/lib/get-url-token.js +26 -0
  91. package/dist/cjs/wallets/in-app/web/lib/get-url-token.js.map +1 -0
  92. package/dist/cjs/wallets/in-app/web/lib/web-connector.js +13 -3
  93. package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
  94. package/dist/esm/exports/react.js +3 -1
  95. package/dist/esm/exports/react.js.map +1 -1
  96. package/dist/esm/react/core/design-system/index.js +2 -0
  97. package/dist/esm/react/core/design-system/index.js.map +1 -1
  98. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +13 -93
  99. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  100. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js +16 -3
  101. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  102. package/dist/esm/react/core/utils/defaultTokens.js +31 -25
  103. package/dist/esm/react/core/utils/defaultTokens.js.map +1 -1
  104. package/dist/esm/react/core/utils/wallet.js +88 -13
  105. package/dist/esm/react/core/utils/wallet.js.map +1 -1
  106. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js +20 -129
  107. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  108. package/dist/esm/react/web/ui/ConnectWallet/Details.js +3 -1
  109. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  110. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +7 -3
  111. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  112. package/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js +1 -1
  113. package/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js.map +1 -1
  114. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +188 -122
  115. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  116. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +101 -0
  117. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -0
  118. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +66 -0
  119. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -0
  120. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +22 -5
  121. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +1 -1
  122. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +4 -4
  123. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
  124. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js +2 -2
  125. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js.map +1 -1
  126. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +2 -2
  127. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +1 -1
  128. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js +1 -1
  129. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js.map +1 -1
  130. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +130 -44
  131. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  132. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js +2 -5
  133. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js.map +1 -1
  134. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +13 -8
  135. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  136. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js +1 -1
  137. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js.map +1 -1
  138. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js +1 -1
  139. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js.map +1 -1
  140. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js +1 -1
  141. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js.map +1 -1
  142. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js +1 -1
  143. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js.map +1 -1
  144. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js +1 -1
  145. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js.map +1 -1
  146. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +7 -4
  147. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  148. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +1 -1
  149. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
  150. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +9 -4
  151. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  152. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js +1 -1
  153. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js.map +1 -1
  154. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js +1 -1
  155. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js.map +1 -1
  156. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js +81 -0
  157. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js.map +1 -0
  158. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js +14 -8
  159. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js.map +1 -1
  160. package/dist/esm/react/web/ui/ConnectWallet/screens/nativeToken.js +3 -1
  161. package/dist/esm/react/web/ui/ConnectWallet/screens/nativeToken.js.map +1 -1
  162. package/dist/esm/react/web/ui/PayEmbed.js +16 -9
  163. package/dist/esm/react/web/ui/PayEmbed.js.map +1 -1
  164. package/dist/esm/react/web/ui/TransactionButton/ExecutingScreen.js +50 -0
  165. package/dist/esm/react/web/ui/TransactionButton/ExecutingScreen.js.map +1 -0
  166. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js +29 -0
  167. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js.map +1 -0
  168. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +15 -4
  169. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  170. package/dist/esm/react/web/wallets/shared/SocialLogin.js +17 -1
  171. package/dist/esm/react/web/wallets/shared/SocialLogin.js.map +1 -1
  172. package/dist/esm/react/web/wallets/shared/{openOauthSignInWindow.js → oauthSignIn.js} +2 -3
  173. package/dist/esm/react/web/wallets/shared/oauthSignIn.js.map +1 -0
  174. package/dist/esm/version.js +1 -1
  175. package/dist/esm/wallets/in-app/core/wallet/index.js +15 -0
  176. package/dist/esm/wallets/in-app/core/wallet/index.js.map +1 -1
  177. package/dist/esm/wallets/in-app/web/in-app.js +10 -0
  178. package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
  179. package/dist/esm/wallets/in-app/web/lib/auth/index.js +2 -0
  180. package/dist/esm/wallets/in-app/web/lib/auth/index.js.map +1 -1
  181. package/dist/esm/wallets/in-app/web/lib/auth/oauth.js +7 -0
  182. package/dist/esm/wallets/in-app/web/lib/auth/oauth.js.map +1 -1
  183. package/dist/esm/wallets/in-app/web/lib/get-url-token.js +23 -0
  184. package/dist/esm/wallets/in-app/web/lib/get-url-token.js.map +1 -0
  185. package/dist/esm/wallets/in-app/web/lib/web-connector.js +14 -4
  186. package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
  187. package/dist/types/exports/react.d.ts +3 -2
  188. package/dist/types/exports/react.d.ts.map +1 -1
  189. package/dist/types/exports/utils.d.ts +1 -0
  190. package/dist/types/exports/utils.d.ts.map +1 -1
  191. package/dist/types/react/core/design-system/index.d.ts +2 -0
  192. package/dist/types/react/core/design-system/index.d.ts.map +1 -1
  193. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts +80 -34
  194. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts.map +1 -1
  195. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts +3 -15
  196. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  197. package/dist/types/react/core/hooks/wallets/useAutoConnect.d.ts.map +1 -1
  198. package/dist/types/react/core/utils/defaultTokens.d.ts +222 -0
  199. package/dist/types/react/core/utils/defaultTokens.d.ts.map +1 -1
  200. package/dist/types/react/core/utils/wallet.d.ts +43 -1
  201. package/dist/types/react/core/utils/wallet.d.ts.map +1 -1
  202. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts +2 -4
  203. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  204. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts +3 -1
  205. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  206. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts.map +1 -1
  207. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts +0 -3
  208. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  209. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.d.ts +18 -0
  210. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.d.ts.map +1 -0
  211. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts +18 -0
  212. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts.map +1 -0
  213. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts +5 -0
  214. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts.map +1 -1
  215. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.d.ts +1 -2
  216. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.d.ts.map +1 -1
  217. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.d.ts +1 -2
  218. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.d.ts.map +1 -1
  219. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.d.ts +1 -2
  220. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.d.ts.map +1 -1
  221. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.d.ts +1 -2
  222. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.d.ts.map +1 -1
  223. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts +14 -8
  224. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts.map +1 -1
  225. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts +19 -9
  226. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts.map +1 -1
  227. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.d.ts +6 -5
  228. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.d.ts.map +1 -1
  229. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts +0 -2
  230. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map +1 -1
  231. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.d.ts +1 -1
  232. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.d.ts.map +1 -1
  233. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.d.ts +1 -1
  234. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.d.ts.map +1 -1
  235. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.d.ts +1 -1
  236. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.d.ts.map +1 -1
  237. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts +4 -0
  238. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts.map +1 -1
  239. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.d.ts.map +1 -1
  240. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts +1 -0
  241. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts.map +1 -1
  242. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.d.ts +1 -2
  243. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.d.ts.map +1 -1
  244. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.d.ts +1 -2
  245. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.d.ts.map +1 -1
  246. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.d.ts +19 -0
  247. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.d.ts.map +1 -0
  248. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.d.ts.map +1 -1
  249. package/dist/types/react/web/ui/ConnectWallet/screens/nativeToken.d.ts.map +1 -1
  250. package/dist/types/react/web/ui/PayEmbed.d.ts +0 -6
  251. package/dist/types/react/web/ui/PayEmbed.d.ts.map +1 -1
  252. package/dist/types/react/web/ui/TransactionButton/ExecutingScreen.d.ts +9 -0
  253. package/dist/types/react/web/ui/TransactionButton/ExecutingScreen.d.ts.map +1 -0
  254. package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts +24 -0
  255. package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts.map +1 -0
  256. package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
  257. package/dist/types/react/web/wallets/shared/SocialLogin.d.ts.map +1 -1
  258. package/dist/types/react/web/wallets/shared/{openOauthSignInWindow.d.ts → oauthSignIn.d.ts} +1 -2
  259. package/dist/types/react/web/wallets/shared/oauthSignIn.d.ts.map +1 -0
  260. package/dist/types/version.d.ts +1 -1
  261. package/dist/types/wallets/ecosystem/types.d.ts +3 -0
  262. package/dist/types/wallets/ecosystem/types.d.ts.map +1 -1
  263. package/dist/types/wallets/in-app/core/interfaces/connector.d.ts +4 -1
  264. package/dist/types/wallets/in-app/core/interfaces/connector.d.ts.map +1 -1
  265. package/dist/types/wallets/in-app/core/wallet/index.d.ts.map +1 -1
  266. package/dist/types/wallets/in-app/core/wallet/types.d.ts +4 -1
  267. package/dist/types/wallets/in-app/core/wallet/types.d.ts.map +1 -1
  268. package/dist/types/wallets/in-app/web/in-app.d.ts +10 -0
  269. package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
  270. package/dist/types/wallets/in-app/web/lib/auth/index.d.ts +11 -2
  271. package/dist/types/wallets/in-app/web/lib/auth/index.d.ts.map +1 -1
  272. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts +5 -0
  273. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts.map +1 -1
  274. package/dist/types/wallets/in-app/web/lib/get-url-token.d.ts +12 -0
  275. package/dist/types/wallets/in-app/web/lib/get-url-token.d.ts.map +1 -0
  276. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts +4 -1
  277. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
  278. package/package.json +1 -1
  279. package/src/exports/react.ts +14 -2
  280. package/src/exports/utils.ts +2 -0
  281. package/src/react/core/design-system/index.ts +2 -0
  282. package/src/react/core/hooks/connection/ConnectButtonProps.ts +103 -51
  283. package/src/react/core/hooks/transaction/useSendTransaction.ts +17 -127
  284. package/src/react/core/hooks/wallets/useAutoConnect.ts +17 -3
  285. package/src/react/core/utils/defaultTokens.ts +38 -26
  286. package/src/react/core/utils/wallet.ts +102 -18
  287. package/src/react/web/hooks/transaction/useSendTransaction.tsx +34 -278
  288. package/src/react/web/ui/ConnectWallet/Details.tsx +6 -4
  289. package/src/react/web/ui/ConnectWallet/Modal/ConnectEmbed.tsx +9 -3
  290. package/src/react/web/ui/ConnectWallet/TransactionsScreen.tsx +1 -1
  291. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +347 -383
  292. package/src/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.tsx +266 -0
  293. package/src/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.tsx +253 -0
  294. package/src/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.tsx +52 -21
  295. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.tsx +3 -6
  296. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.tsx +5 -6
  297. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.tsx +2 -4
  298. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.tsx +2 -4
  299. package/src/react/web/ui/ConnectWallet/screens/Buy/main/types.ts +16 -12
  300. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts +155 -60
  301. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.ts +8 -3
  302. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts +17 -12
  303. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.tsx +2 -2
  304. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.tsx +2 -3
  305. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.tsx +1 -1
  306. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.tsx +1 -1
  307. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.tsx +2 -2
  308. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +27 -19
  309. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.tsx +8 -4
  310. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.tsx +12 -5
  311. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.tsx +2 -4
  312. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.tsx +3 -4
  313. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.tsx +243 -0
  314. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.tsx +30 -17
  315. package/src/react/web/ui/ConnectWallet/screens/nativeToken.ts +5 -1
  316. package/src/react/web/ui/PayEmbed.tsx +31 -32
  317. package/src/react/web/ui/TransactionButton/ExecutingScreen.tsx +127 -0
  318. package/src/react/web/ui/TransactionButton/TransactionModal.tsx +83 -0
  319. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +18 -4
  320. package/src/react/web/wallets/shared/SocialLogin.tsx +20 -1
  321. package/src/react/web/wallets/shared/{openOauthSignInWindow.ts → oauthSignIn.ts} +1 -2
  322. package/src/version.ts +1 -1
  323. package/src/wallets/ecosystem/types.ts +3 -0
  324. package/src/wallets/in-app/core/interfaces/connector.ts +6 -0
  325. package/src/wallets/in-app/core/wallet/index.ts +22 -0
  326. package/src/wallets/in-app/core/wallet/types.ts +4 -0
  327. package/src/wallets/in-app/web/in-app.ts +10 -0
  328. package/src/wallets/in-app/web/lib/auth/index.ts +14 -3
  329. package/src/wallets/in-app/web/lib/auth/oauth.ts +12 -0
  330. package/src/wallets/in-app/web/lib/get-url-token.ts +36 -0
  331. package/src/wallets/in-app/web/lib/web-connector.ts +18 -4
  332. package/dist/cjs/react/web/wallets/shared/openOauthSignInWindow.js.map +0 -1
  333. package/dist/esm/react/web/wallets/shared/openOauthSignInWindow.js.map +0 -1
  334. package/dist/types/react/web/wallets/shared/openOauthSignInWindow.d.ts.map +0 -1
@@ -0,0 +1,266 @@
1
+ import { useQuery } from "@tanstack/react-query";
2
+ import type { Chain } from "../../../../../../chains/types.js";
3
+ import type { ThirdwebClient } from "../../../../../../client/client.js";
4
+ import { NATIVE_TOKEN_ADDRESS } from "../../../../../../constants/addresses.js";
5
+ import { getContract } from "../../../../../../contract/contract.js";
6
+ import { decimals } from "../../../../../../extensions/erc20/read/decimals.js";
7
+ import { shortenAddress } from "../../../../../../utils/address.js";
8
+ import { formatNumber } from "../../../../../../utils/formatNumber.js";
9
+ import { toTokens } from "../../../../../../utils/units.js";
10
+ import type { Account } from "../../../../../../wallets/interfaces/wallet.js";
11
+ import { useCustomTheme } from "../../../../../core/design-system/CustomThemeProvider.js";
12
+ import { iconSize, spacing } from "../../../../../core/design-system/index.js";
13
+ import type { PayUIOptions } from "../../../../../core/hooks/connection/ConnectButtonProps.js";
14
+ import { useChainQuery } from "../../../../../core/hooks/others/useChainQuery.js";
15
+ import type { TokenInfo } from "../../../../../core/utils/defaultTokens.js";
16
+ import { useEnsName } from "../../../../../core/utils/wallet.js";
17
+ import { useActiveWallet } from "../../../../hooks/wallets/useActiveWallet.js";
18
+ import { LoadingScreen } from "../../../../wallets/shared/LoadingScreen.js";
19
+ import type { PayEmbedConnectOptions } from "../../../PayEmbed.js";
20
+ import { ChainIcon } from "../../../components/ChainIcon.js";
21
+ import { Img } from "../../../components/Img.js";
22
+ import { Spacer } from "../../../components/Spacer.js";
23
+ import { TokenIcon } from "../../../components/TokenIcon.js";
24
+ import { WalletImage } from "../../../components/WalletImage.js";
25
+ import { Container, Line, ModalHeader } from "../../../components/basic.js";
26
+ import { Button } from "../../../components/buttons.js";
27
+ import { Text } from "../../../components/text.js";
28
+ import { ConnectButton } from "../../ConnectButton.js";
29
+ import { type ERC20OrNativeToken, isNativeToken } from "../nativeToken.js";
30
+ import type { SupportedChainAndTokens } from "./swap/useSwapSupportedChains.js";
31
+
32
+ export function DirectPaymentModeScreen(props: {
33
+ client: ThirdwebClient;
34
+ payUiOptions: Extract<PayUIOptions, { mode: "direct_payment" }>;
35
+ supportedDestinations: SupportedChainAndTokens;
36
+ payerAccount: Account | undefined;
37
+ connectOptions: PayEmbedConnectOptions | undefined;
38
+ onContinue: (
39
+ tokenAmount: string,
40
+ toChain: Chain,
41
+ toToken: ERC20OrNativeToken,
42
+ ) => void;
43
+ }) {
44
+ const {
45
+ payUiOptions,
46
+ supportedDestinations,
47
+ client,
48
+ onContinue,
49
+ payerAccount,
50
+ } = props;
51
+ const theme = useCustomTheme();
52
+ const activeWallet = useActiveWallet();
53
+ const metadata = payUiOptions.metadata;
54
+ const paymentInfo = payUiOptions.paymentInfo;
55
+ const { data: chainData } = useChainQuery(paymentInfo.chain);
56
+ const { data: sellerEns } = useEnsName({
57
+ client,
58
+ address: paymentInfo.sellerAddress,
59
+ });
60
+
61
+ const totalCostQuery = useQuery({
62
+ queryKey: ["amount", paymentInfo],
63
+ queryFn: async () => {
64
+ let tokenDecimals = 18;
65
+ if (paymentInfo.token && !isNativeToken(paymentInfo.token)) {
66
+ tokenDecimals = await decimals({
67
+ contract: getContract({
68
+ address: paymentInfo.token.address,
69
+ chain: paymentInfo.chain,
70
+ client,
71
+ }),
72
+ });
73
+ }
74
+ let cost: string;
75
+ if ("amountWei" in paymentInfo) {
76
+ cost = toTokens(paymentInfo.amountWei, tokenDecimals);
77
+ } else {
78
+ cost = paymentInfo.amount;
79
+ }
80
+ return cost;
81
+ },
82
+ });
83
+
84
+ const totalCost = totalCostQuery.data;
85
+ if (!chainData || totalCost === undefined) {
86
+ return <LoadingScreen />;
87
+ }
88
+
89
+ const token: TokenInfo = paymentInfo.token
90
+ ? {
91
+ ...paymentInfo.token,
92
+ icon:
93
+ paymentInfo.token?.icon ||
94
+ supportedDestinations
95
+ .find((c) => c.chain.id === paymentInfo.chain.id)
96
+ ?.tokens.find(
97
+ (t) =>
98
+ t.address.toLowerCase() ===
99
+ paymentInfo.token?.address.toLowerCase(),
100
+ )?.icon,
101
+ }
102
+ : {
103
+ address: NATIVE_TOKEN_ADDRESS,
104
+ name: chainData.nativeCurrency.name,
105
+ symbol: chainData.nativeCurrency.symbol,
106
+ icon: chainData.icon?.url,
107
+ };
108
+
109
+ return (
110
+ <Container p="lg">
111
+ <ModalHeader title={metadata?.name || "Payment Details"} />
112
+
113
+ <Spacer y="lg" />
114
+ <Container>
115
+ {metadata?.image ? (
116
+ <Img
117
+ client={client}
118
+ src={metadata?.image}
119
+ style={{
120
+ width: "100%",
121
+ borderRadius: spacing.md,
122
+ backgroundColor: theme.colors.tertiaryBg,
123
+ }}
124
+ />
125
+ ) : activeWallet ? (
126
+ <Container
127
+ flex="row"
128
+ center="both"
129
+ style={{
130
+ padding: spacing.md,
131
+ marginBottom: spacing.md,
132
+ borderRadius: spacing.md,
133
+ backgroundColor: theme.colors.tertiaryBg,
134
+ }}
135
+ >
136
+ <WalletImage
137
+ size={iconSize.xl}
138
+ id={activeWallet.id}
139
+ client={client}
140
+ />
141
+ <div
142
+ style={{
143
+ flexGrow: 1,
144
+ borderBottom: "6px dotted",
145
+ borderColor: theme.colors.secondaryIconColor,
146
+ marginLeft: spacing.md,
147
+ marginRight: spacing.md,
148
+ }}
149
+ />
150
+ <ChainIcon
151
+ client={client}
152
+ size={iconSize.xl}
153
+ chainIconUrl={chainData.icon?.url}
154
+ />
155
+ </Container>
156
+ ) : null}
157
+ <Spacer y="md" />
158
+ <Container flex="row">
159
+ <Container flex="column" expand>
160
+ <Text size="md" color="primaryText" weight={700}>
161
+ {"Price"}
162
+ </Text>
163
+ </Container>
164
+ <Container expand>
165
+ <Container
166
+ flex="row"
167
+ gap="xs"
168
+ center="y"
169
+ style={{ justifyContent: "right" }}
170
+ >
171
+ <TokenIcon
172
+ chain={paymentInfo.chain}
173
+ client={props.client}
174
+ size="sm"
175
+ token={token}
176
+ />
177
+ <Text color="primaryText" size="md" weight={700}>
178
+ {String(formatNumber(Number(totalCost), 6))} {token.symbol}
179
+ </Text>
180
+ </Container>
181
+ </Container>
182
+ </Container>
183
+ <Spacer y="md" />
184
+ <Line />
185
+ <Spacer y="md" />
186
+ <Container flex="row">
187
+ <Container flex="column" expand>
188
+ <Text size="xs" color="secondaryText">
189
+ Network
190
+ </Text>
191
+ </Container>
192
+ <Container expand>
193
+ <Container
194
+ flex="row"
195
+ gap="xs"
196
+ center="y"
197
+ style={{ justifyContent: "right" }}
198
+ >
199
+ <ChainIcon
200
+ chainIconUrl={chainData.icon?.url}
201
+ size="xs"
202
+ client={props.client}
203
+ />
204
+ <Text
205
+ size="xs"
206
+ color="secondaryText"
207
+ style={{ textAlign: "right" }}
208
+ >
209
+ {chainData.name}
210
+ </Text>
211
+ </Container>
212
+ </Container>
213
+ </Container>
214
+ <Spacer y="sm" />
215
+ <Container flex="row">
216
+ <Container flex="column" expand>
217
+ <Text size="xs" color="secondaryText">
218
+ Seller
219
+ </Text>
220
+ </Container>
221
+ <Container expand>
222
+ <Container
223
+ flex="row"
224
+ gap="xs"
225
+ center="y"
226
+ style={{ justifyContent: "right" }}
227
+ >
228
+ <Text
229
+ size="xs"
230
+ color="secondaryText"
231
+ style={{ textAlign: "right" }}
232
+ >
233
+ {sellerEns || shortenAddress(paymentInfo.sellerAddress)}
234
+ </Text>
235
+ </Container>
236
+ </Container>
237
+ </Container>
238
+ </Container>
239
+ <Spacer y="xl" />
240
+ {payerAccount ? (
241
+ <Button
242
+ variant="accent"
243
+ fullWidth
244
+ onClick={() => {
245
+ onContinue(totalCost, paymentInfo.chain, token);
246
+ }}
247
+ >
248
+ Choose Payment Method
249
+ </Button>
250
+ ) : (
251
+ <div>
252
+ <ConnectButton
253
+ {...props.connectOptions}
254
+ client={client}
255
+ theme={theme}
256
+ connectButton={{
257
+ style: {
258
+ width: "100%",
259
+ },
260
+ }}
261
+ />
262
+ </div>
263
+ )}
264
+ </Container>
265
+ );
266
+ }
@@ -0,0 +1,253 @@
1
+ import type { Chain } from "../../../../../../chains/types.js";
2
+ import type { ThirdwebClient } from "../../../../../../client/client.js";
3
+ import { NATIVE_TOKEN_ADDRESS } from "../../../../../../constants/addresses.js";
4
+ import { formatNumber } from "../../../../../../utils/formatNumber.js";
5
+ import { toTokens } from "../../../../../../utils/units.js";
6
+ import type { Account } from "../../../../../../wallets/interfaces/wallet.js";
7
+ import { useCustomTheme } from "../../../../../core/design-system/CustomThemeProvider.js";
8
+ import { iconSize, spacing } from "../../../../../core/design-system/index.js";
9
+ import type { PayUIOptions } from "../../../../../core/hooks/connection/ConnectButtonProps.js";
10
+ import { useChainQuery } from "../../../../../core/hooks/others/useChainQuery.js";
11
+ import { hasSponsoredTransactionsEnabled } from "../../../../../core/utils/wallet.js";
12
+ import { useActiveWallet } from "../../../../hooks/wallets/useActiveWallet.js";
13
+ import { LoadingScreen } from "../../../../wallets/shared/LoadingScreen.js";
14
+ import type { PayEmbedConnectOptions } from "../../../PayEmbed.js";
15
+ import { ChainIcon } from "../../../components/ChainIcon.js";
16
+ import { Img } from "../../../components/Img.js";
17
+ import { Spacer } from "../../../components/Spacer.js";
18
+ import { TokenIcon } from "../../../components/TokenIcon.js";
19
+ import { WalletImage } from "../../../components/WalletImage.js";
20
+ import { Container, Line, ModalHeader } from "../../../components/basic.js";
21
+ import { Button } from "../../../components/buttons.js";
22
+ import { Text } from "../../../components/text.js";
23
+ import { ConnectButton } from "../../ConnectButton.js";
24
+ import type { ERC20OrNativeToken } from "../nativeToken.js";
25
+ import { useTransactionCostAndData } from "./main/useBuyTxStates.js";
26
+ import type { SupportedChainAndTokens } from "./swap/useSwapSupportedChains.js";
27
+
28
+ export function TransactionModeScreen(props: {
29
+ client: ThirdwebClient;
30
+ payUiOptions: Extract<PayUIOptions, { mode: "transaction" }>;
31
+ supportedDestinations: SupportedChainAndTokens;
32
+ payerAccount: Account | undefined;
33
+ connectOptions: PayEmbedConnectOptions | undefined;
34
+ onContinue: (
35
+ tokenAmount: string,
36
+ toChain: Chain,
37
+ toToken: ERC20OrNativeToken,
38
+ ) => void;
39
+ }) {
40
+ const {
41
+ payUiOptions,
42
+ client,
43
+ payerAccount,
44
+ supportedDestinations,
45
+ onContinue,
46
+ } = props;
47
+ const { data: chainData } = useChainQuery(payUiOptions.transaction.chain);
48
+ const metadata = payUiOptions.metadata;
49
+ const { data: transactionCostAndData } = useTransactionCostAndData({
50
+ transaction: payUiOptions.transaction,
51
+ account: payerAccount,
52
+ supportedDestinations,
53
+ });
54
+ const theme = useCustomTheme();
55
+ const activeWallet = useActiveWallet();
56
+ const sponsoredTransactionsEnabled =
57
+ hasSponsoredTransactionsEnabled(activeWallet);
58
+
59
+ if (!transactionCostAndData || !chainData) {
60
+ return <LoadingScreen />;
61
+ }
62
+
63
+ return (
64
+ <Container p="lg">
65
+ <ModalHeader title={metadata?.name || "Transaction"} />
66
+
67
+ <Spacer y="lg" />
68
+ <Container>
69
+ {metadata?.image ? (
70
+ <Img
71
+ client={client}
72
+ src={metadata?.image}
73
+ style={{
74
+ width: "100%",
75
+ borderRadius: spacing.md,
76
+ backgroundColor: theme.colors.tertiaryBg,
77
+ }}
78
+ />
79
+ ) : activeWallet ? (
80
+ <Container
81
+ flex="row"
82
+ center="both"
83
+ style={{
84
+ padding: spacing.md,
85
+ marginBottom: spacing.md,
86
+ borderRadius: spacing.md,
87
+ backgroundColor: theme.colors.tertiaryBg,
88
+ }}
89
+ >
90
+ <WalletImage
91
+ size={iconSize.xl}
92
+ id={activeWallet.id}
93
+ client={client}
94
+ />
95
+ <div
96
+ style={{
97
+ flexGrow: 1,
98
+ borderBottom: "6px dotted",
99
+ borderColor: theme.colors.secondaryIconColor,
100
+ marginLeft: spacing.md,
101
+ marginRight: spacing.md,
102
+ }}
103
+ />
104
+ <ChainIcon
105
+ client={client}
106
+ size={iconSize.xl}
107
+ chainIconUrl={chainData.icon?.url}
108
+ />
109
+ </Container>
110
+ ) : null}
111
+ <Spacer y="md" />
112
+ <Container flex="row">
113
+ <Container flex="column" expand>
114
+ <Text size="md" color="primaryText" weight={700}>
115
+ {"Price"}
116
+ </Text>
117
+ </Container>
118
+ <Container expand>
119
+ <Container
120
+ flex="row"
121
+ gap="xs"
122
+ center="y"
123
+ style={{ justifyContent: "right" }}
124
+ >
125
+ <TokenIcon
126
+ chain={payUiOptions.transaction.chain}
127
+ client={props.client}
128
+ size="sm"
129
+ token={transactionCostAndData.token}
130
+ />
131
+ <Text color="primaryText" size="md" weight={700}>
132
+ {String(
133
+ formatNumber(
134
+ Number(
135
+ toTokens(
136
+ transactionCostAndData.transactionValueWei,
137
+ transactionCostAndData.decimals,
138
+ ),
139
+ ),
140
+ 6,
141
+ ),
142
+ )}{" "}
143
+ {transactionCostAndData.token.symbol}
144
+ </Text>
145
+ </Container>
146
+ </Container>
147
+ </Container>
148
+ <Spacer y="md" />
149
+ <Line />
150
+ <Spacer y="md" />
151
+ <Container flex="row">
152
+ <Container flex="column" expand>
153
+ <Text size="xs" color="secondaryText">
154
+ Gas Fees
155
+ </Text>
156
+ </Container>
157
+ <Container expand>
158
+ <Container
159
+ flex="row"
160
+ gap="xs"
161
+ center="y"
162
+ style={{ justifyContent: "right" }}
163
+ >
164
+ <Text
165
+ color={sponsoredTransactionsEnabled ? "success" : "primaryText"}
166
+ size="xs"
167
+ >
168
+ {sponsoredTransactionsEnabled
169
+ ? "Sponsored"
170
+ : `${String(
171
+ formatNumber(
172
+ Number(
173
+ toTokens(
174
+ transactionCostAndData.gasCostWei,
175
+ chainData.nativeCurrency.decimals,
176
+ ),
177
+ ),
178
+ 6,
179
+ ),
180
+ )} ${chainData.nativeCurrency.symbol}`}
181
+ </Text>
182
+ </Container>
183
+ </Container>
184
+ </Container>
185
+ <Spacer y="sm" />
186
+ <Container flex="row">
187
+ <Container flex="column" expand>
188
+ <Text size="xs" color="secondaryText">
189
+ Network
190
+ </Text>
191
+ </Container>
192
+ <Container expand>
193
+ <Container
194
+ flex="row"
195
+ gap="xs"
196
+ center="y"
197
+ style={{ justifyContent: "right" }}
198
+ >
199
+ <ChainIcon
200
+ chainIconUrl={chainData.icon?.url}
201
+ size="xs"
202
+ client={props.client}
203
+ />
204
+ <Text
205
+ size="xs"
206
+ color="secondaryText"
207
+ style={{ textAlign: "right" }}
208
+ >
209
+ {chainData.name}
210
+ </Text>
211
+ </Container>
212
+ </Container>
213
+ </Container>
214
+ </Container>
215
+ <Spacer y="xl" />
216
+ {payerAccount ? (
217
+ <Button
218
+ variant="accent"
219
+ fullWidth
220
+ onClick={() => {
221
+ let totalCostWei = transactionCostAndData.transactionValueWei;
222
+ if (
223
+ transactionCostAndData.token.address === NATIVE_TOKEN_ADDRESS &&
224
+ !sponsoredTransactionsEnabled
225
+ ) {
226
+ totalCostWei += transactionCostAndData.gasCostWei;
227
+ }
228
+ onContinue(
229
+ toTokens(totalCostWei, transactionCostAndData.decimals),
230
+ payUiOptions.transaction.chain,
231
+ transactionCostAndData.token,
232
+ );
233
+ }}
234
+ >
235
+ Choose Payment Method
236
+ </Button>
237
+ ) : (
238
+ <div>
239
+ <ConnectButton
240
+ {...props.connectOptions}
241
+ client={client}
242
+ theme={theme}
243
+ connectButton={{
244
+ style: {
245
+ width: "100%",
246
+ },
247
+ }}
248
+ />
249
+ </div>
250
+ )}
251
+ </Container>
252
+ );
253
+ }
@@ -8,12 +8,14 @@ import {
8
8
  radius,
9
9
  spacing,
10
10
  } from "../../../../../core/design-system/index.js";
11
+ import { useEnsAvatar, useEnsName } from "../../../../../core/utils/wallet.js";
11
12
  import { useConnectedWallets } from "../../../../hooks/wallets/useConnectedWallets.js";
13
+ import { Img } from "../../../components/Img.js";
12
14
  import { WalletImage } from "../../../components/WalletImage.js";
13
15
  import { Container } from "../../../components/basic.js";
14
16
  import { Button } from "../../../components/buttons.js";
15
17
  import { Text } from "../../../components/text.js";
16
- import { GenericWalletIcon } from "../../icons/GenericWalletIcon.js";
18
+ import { SmartWalletBadgeIcon } from "../../icons/SmartAccountBadgeIcon.js";
17
19
 
18
20
  export function WalletSelectorButton(props: {
19
21
  address: string;
@@ -26,11 +28,6 @@ export function WalletSelectorButton(props: {
26
28
  checked?: boolean;
27
29
  }) {
28
30
  const theme = useCustomTheme();
29
- const connectedWallets = useConnectedWallets();
30
- const walletId =
31
- props.walletId ||
32
- connectedWallets.find((x) => x.getAccount()?.address === props.address)?.id;
33
-
34
31
  return (
35
32
  <Container
36
33
  bg="tertiaryBg"
@@ -52,21 +49,7 @@ export function WalletSelectorButton(props: {
52
49
  }}
53
50
  gap="sm"
54
51
  >
55
- <Container flex="row" center="y" gap="sm" color="secondaryText">
56
- {walletId ? (
57
- <WalletImage
58
- id={walletId}
59
- size={iconSize.md}
60
- client={props.client}
61
- />
62
- ) : (
63
- <GenericWalletIcon size={iconSize.md} />
64
- )}
65
-
66
- <Text size="sm" color="primaryText">
67
- {shortenAddress(props.address)}
68
- </Text>
69
- </Container>
52
+ <WalletRow client={props.client} address={props.address} />
70
53
  {!props.disableChevron && (
71
54
  <ChevronDownIcon
72
55
  width={iconSize.sm}
@@ -84,3 +67,51 @@ export function WalletSelectorButton(props: {
84
67
  </Container>
85
68
  );
86
69
  }
70
+
71
+ export function WalletRow(props: {
72
+ client: ThirdwebClient;
73
+ address: string;
74
+ walletId?: WalletId;
75
+ }) {
76
+ const { client, address } = props;
77
+ const connectedWallets = useConnectedWallets();
78
+ const wallet = connectedWallets.find(
79
+ (x) => x.getAccount()?.address === props.address,
80
+ );
81
+ const walletId = props.walletId || wallet?.id;
82
+ const ensNameQuery = useEnsName({
83
+ client,
84
+ address,
85
+ });
86
+ const addressOrENS = ensNameQuery.data || shortenAddress(address);
87
+ const ensAvatarQuery = useEnsAvatar({
88
+ client,
89
+ ensName: ensNameQuery.data,
90
+ });
91
+ return (
92
+ <Container flex="row" center="y" gap="sm" color="secondaryText">
93
+ {ensAvatarQuery.data ? (
94
+ <Img
95
+ src={ensAvatarQuery.data}
96
+ width={iconSize.md}
97
+ height={iconSize.md}
98
+ style={{
99
+ borderRadius: radius.sm,
100
+ }}
101
+ client={props.client}
102
+ />
103
+ ) : walletId ? (
104
+ <WalletImage id={walletId} size={iconSize.md} client={props.client} />
105
+ ) : null}
106
+
107
+ <Text size="sm" color="primaryText">
108
+ {addressOrENS || shortenAddress(props.address)}
109
+ </Text>
110
+ {walletId === "smart" && (
111
+ <Container color="accentText" center="both">
112
+ <SmartWalletBadgeIcon size={iconSize.sm} />
113
+ </Container>
114
+ )}
115
+ </Container>
116
+ );
117
+ }
@@ -43,10 +43,9 @@ export function FiatFlow(props: {
43
43
  client: ThirdwebClient;
44
44
  testMode: boolean;
45
45
  theme: "light" | "dark";
46
- onViewPendingTx: () => void;
47
46
  openedWindow: Window | null;
48
47
  onDone: () => void;
49
- isBuyForTx: boolean;
48
+ transactionMode: boolean;
50
49
  isEmbed: boolean;
51
50
  payer: PayerInfo;
52
51
  }) {
@@ -93,7 +92,6 @@ export function FiatFlow(props: {
93
92
  client={props.client}
94
93
  intentId={props.quote.intentId}
95
94
  onBack={props.onBack}
96
- onViewPendingTx={props.onViewPendingTx}
97
95
  hasTwoSteps={hasTwoSteps}
98
96
  openedWindow={popupWindow}
99
97
  quote={props.quote}
@@ -101,7 +99,7 @@ export function FiatFlow(props: {
101
99
  onShowSwapFlow={(_status) => {
102
100
  setScreen({ id: "postonramp-swap", data: _status });
103
101
  }}
104
- isBuyForTx={props.isBuyForTx}
102
+ transactionMode={props.transactionMode}
105
103
  isEmbed={props.isEmbed}
106
104
  />
107
105
  );
@@ -115,12 +113,11 @@ export function FiatFlow(props: {
115
113
  quote={fiatQuoteToPartialQuote(props.quote)}
116
114
  client={props.client}
117
115
  onBack={props.onBack}
118
- onViewPendingTx={props.onViewPendingTx}
119
116
  onDone={props.onDone}
120
117
  onSwapFlowStarted={() => {
121
118
  // no op
122
119
  }}
123
- isBuyForTx={props.isBuyForTx}
120
+ transactionMode={props.transactionMode}
124
121
  isEmbed={props.isEmbed}
125
122
  payer={props.payer}
126
123
  />