thirdweb 5.40.0-nightly-3848327373e49aa83c5902e6a16d5b8e96cf1eeb-20240726000343 → 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 (250) 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/utils/defaultTokens.js +32 -25
  8. package/dist/cjs/react/core/utils/defaultTokens.js.map +1 -1
  9. package/dist/cjs/react/core/utils/wallet.js +91 -13
  10. package/dist/cjs/react/core/utils/wallet.js.map +1 -1
  11. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js +18 -127
  12. package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  13. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +3 -1
  14. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  15. package/dist/cjs/react/web/ui/ConnectWallet/TransactionsScreen.js +1 -1
  16. package/dist/cjs/react/web/ui/ConnectWallet/TransactionsScreen.js.map +1 -1
  17. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +184 -118
  18. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  19. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +104 -0
  20. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -0
  21. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +69 -0
  22. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -0
  23. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +23 -5
  24. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +1 -1
  25. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +4 -4
  26. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
  27. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js +2 -2
  28. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js.map +1 -1
  29. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +2 -2
  30. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +1 -1
  31. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js +1 -1
  32. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js.map +1 -1
  33. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +132 -45
  34. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  35. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js +2 -5
  36. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js.map +1 -1
  37. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +13 -8
  38. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  39. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js +1 -1
  40. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js.map +1 -1
  41. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js +1 -1
  42. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js.map +1 -1
  43. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js +1 -1
  44. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js.map +1 -1
  45. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js +1 -1
  46. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js.map +1 -1
  47. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js +1 -1
  48. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js.map +1 -1
  49. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +9 -5
  50. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  51. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +1 -1
  52. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
  53. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +8 -3
  54. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  55. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js +1 -1
  56. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js.map +1 -1
  57. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js +1 -1
  58. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js.map +1 -1
  59. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js +84 -0
  60. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js.map +1 -0
  61. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js +13 -7
  62. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js.map +1 -1
  63. package/dist/cjs/react/web/ui/ConnectWallet/screens/nativeToken.js +3 -1
  64. package/dist/cjs/react/web/ui/ConnectWallet/screens/nativeToken.js.map +1 -1
  65. package/dist/cjs/react/web/ui/PayEmbed.js +16 -9
  66. package/dist/cjs/react/web/ui/PayEmbed.js.map +1 -1
  67. package/dist/cjs/react/web/ui/TransactionButton/ExecutingScreen.js +53 -0
  68. package/dist/cjs/react/web/ui/TransactionButton/ExecutingScreen.js.map +1 -0
  69. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js +33 -0
  70. package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js.map +1 -0
  71. package/dist/cjs/version.js +1 -1
  72. package/dist/cjs/version.js.map +1 -1
  73. package/dist/esm/exports/react.js +3 -1
  74. package/dist/esm/exports/react.js.map +1 -1
  75. package/dist/esm/react/core/design-system/index.js +2 -0
  76. package/dist/esm/react/core/design-system/index.js.map +1 -1
  77. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +13 -93
  78. package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
  79. package/dist/esm/react/core/utils/defaultTokens.js +31 -25
  80. package/dist/esm/react/core/utils/defaultTokens.js.map +1 -1
  81. package/dist/esm/react/core/utils/wallet.js +88 -13
  82. package/dist/esm/react/core/utils/wallet.js.map +1 -1
  83. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js +20 -129
  84. package/dist/esm/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
  85. package/dist/esm/react/web/ui/ConnectWallet/Details.js +3 -1
  86. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  87. package/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js +1 -1
  88. package/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js.map +1 -1
  89. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +188 -122
  90. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  91. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +101 -0
  92. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -0
  93. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +66 -0
  94. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -0
  95. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +22 -5
  96. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +1 -1
  97. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +4 -4
  98. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
  99. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js +2 -2
  100. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js.map +1 -1
  101. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +2 -2
  102. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +1 -1
  103. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js +1 -1
  104. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js.map +1 -1
  105. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +130 -44
  106. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  107. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js +2 -5
  108. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js.map +1 -1
  109. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +13 -8
  110. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
  111. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js +1 -1
  112. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js.map +1 -1
  113. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js +1 -1
  114. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js.map +1 -1
  115. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js +1 -1
  116. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js.map +1 -1
  117. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js +1 -1
  118. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js.map +1 -1
  119. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js +1 -1
  120. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js.map +1 -1
  121. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +7 -4
  122. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
  123. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +1 -1
  124. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
  125. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +9 -4
  126. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
  127. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js +1 -1
  128. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js.map +1 -1
  129. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js +1 -1
  130. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js.map +1 -1
  131. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js +81 -0
  132. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js.map +1 -0
  133. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js +14 -8
  134. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js.map +1 -1
  135. package/dist/esm/react/web/ui/ConnectWallet/screens/nativeToken.js +3 -1
  136. package/dist/esm/react/web/ui/ConnectWallet/screens/nativeToken.js.map +1 -1
  137. package/dist/esm/react/web/ui/PayEmbed.js +16 -9
  138. package/dist/esm/react/web/ui/PayEmbed.js.map +1 -1
  139. package/dist/esm/react/web/ui/TransactionButton/ExecutingScreen.js +50 -0
  140. package/dist/esm/react/web/ui/TransactionButton/ExecutingScreen.js.map +1 -0
  141. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js +29 -0
  142. package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js.map +1 -0
  143. package/dist/esm/version.js +1 -1
  144. package/dist/esm/version.js.map +1 -1
  145. package/dist/types/exports/react.d.ts +3 -2
  146. package/dist/types/exports/react.d.ts.map +1 -1
  147. package/dist/types/react/core/design-system/index.d.ts +2 -0
  148. package/dist/types/react/core/design-system/index.d.ts.map +1 -1
  149. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts +80 -34
  150. package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts.map +1 -1
  151. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts +3 -15
  152. package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  153. package/dist/types/react/core/utils/defaultTokens.d.ts +222 -0
  154. package/dist/types/react/core/utils/defaultTokens.d.ts.map +1 -1
  155. package/dist/types/react/core/utils/wallet.d.ts +43 -1
  156. package/dist/types/react/core/utils/wallet.d.ts.map +1 -1
  157. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts +2 -4
  158. package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts.map +1 -1
  159. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts +3 -1
  160. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  161. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts +0 -3
  162. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  163. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.d.ts +18 -0
  164. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.d.ts.map +1 -0
  165. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts +18 -0
  166. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts.map +1 -0
  167. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts +5 -0
  168. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts.map +1 -1
  169. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.d.ts +1 -2
  170. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.d.ts.map +1 -1
  171. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.d.ts +1 -2
  172. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.d.ts.map +1 -1
  173. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.d.ts +1 -2
  174. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.d.ts.map +1 -1
  175. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.d.ts +1 -2
  176. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.d.ts.map +1 -1
  177. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts +14 -8
  178. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts.map +1 -1
  179. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts +19 -9
  180. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts.map +1 -1
  181. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.d.ts +6 -5
  182. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.d.ts.map +1 -1
  183. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts +0 -2
  184. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map +1 -1
  185. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.d.ts +1 -1
  186. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.d.ts.map +1 -1
  187. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.d.ts +1 -1
  188. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.d.ts.map +1 -1
  189. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.d.ts +1 -1
  190. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.d.ts.map +1 -1
  191. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts +4 -0
  192. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts.map +1 -1
  193. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.d.ts.map +1 -1
  194. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts +1 -0
  195. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts.map +1 -1
  196. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.d.ts +1 -2
  197. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.d.ts.map +1 -1
  198. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.d.ts +1 -2
  199. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.d.ts.map +1 -1
  200. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.d.ts +19 -0
  201. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.d.ts.map +1 -0
  202. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.d.ts.map +1 -1
  203. package/dist/types/react/web/ui/ConnectWallet/screens/nativeToken.d.ts.map +1 -1
  204. package/dist/types/react/web/ui/PayEmbed.d.ts +0 -6
  205. package/dist/types/react/web/ui/PayEmbed.d.ts.map +1 -1
  206. package/dist/types/react/web/ui/TransactionButton/ExecutingScreen.d.ts +9 -0
  207. package/dist/types/react/web/ui/TransactionButton/ExecutingScreen.d.ts.map +1 -0
  208. package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts +24 -0
  209. package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts.map +1 -0
  210. package/dist/types/version.d.ts +1 -1
  211. package/dist/types/version.d.ts.map +1 -1
  212. package/package.json +1 -1
  213. package/src/exports/react.ts +14 -2
  214. package/src/react/core/design-system/index.ts +2 -0
  215. package/src/react/core/hooks/connection/ConnectButtonProps.ts +103 -51
  216. package/src/react/core/hooks/transaction/useSendTransaction.ts +17 -127
  217. package/src/react/core/utils/defaultTokens.ts +38 -26
  218. package/src/react/core/utils/wallet.ts +102 -18
  219. package/src/react/web/hooks/transaction/useSendTransaction.tsx +34 -278
  220. package/src/react/web/ui/ConnectWallet/Details.tsx +6 -4
  221. package/src/react/web/ui/ConnectWallet/TransactionsScreen.tsx +1 -1
  222. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +347 -383
  223. package/src/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.tsx +266 -0
  224. package/src/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.tsx +253 -0
  225. package/src/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.tsx +52 -21
  226. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.tsx +3 -6
  227. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.tsx +5 -6
  228. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.tsx +2 -4
  229. package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.tsx +2 -4
  230. package/src/react/web/ui/ConnectWallet/screens/Buy/main/types.ts +16 -12
  231. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts +155 -60
  232. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.ts +8 -3
  233. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts +17 -12
  234. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.tsx +2 -2
  235. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.tsx +2 -3
  236. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.tsx +1 -1
  237. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.tsx +1 -1
  238. package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.tsx +2 -2
  239. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +27 -19
  240. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.tsx +8 -4
  241. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.tsx +12 -5
  242. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.tsx +2 -4
  243. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.tsx +3 -4
  244. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.tsx +243 -0
  245. package/src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.tsx +30 -17
  246. package/src/react/web/ui/ConnectWallet/screens/nativeToken.ts +5 -1
  247. package/src/react/web/ui/PayEmbed.tsx +31 -32
  248. package/src/react/web/ui/TransactionButton/ExecutingScreen.tsx +127 -0
  249. package/src/react/web/ui/TransactionButton/TransactionModal.tsx +83 -0
  250. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"WalletSwitcherDrawerContent.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mDAAmD,CAAC;AAShF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB,8CA8CA"}
1
+ {"version":3,"file":"WalletSwitcherDrawerContent.d.ts","sourceRoot":"","sources":["../../../../../../../../../src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mDAAmD,CAAC;AAchF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,cAAc,CAAC;IACvB,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAC9B,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;CACzB,8CAsDA"}
@@ -1 +1 @@
1
- {"version":3,"file":"nativeToken.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/ConnectWallet/screens/nativeToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,MAAM,MAAM,WAAW,GAAG;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,CAAC;AAEhD,eAAO,MAAM,YAAY,EAAE,WAAmC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,WAAW,GACtC,KAAK,IAAI,WAAW,CAEtB;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,WAAW,CAAC"}
1
+ {"version":3,"file":"nativeToken.d.ts","sourceRoot":"","sources":["../../../../../../../src/react/web/ui/ConnectWallet/screens/nativeToken.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,MAAM,MAAM,WAAW,GAAG;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,CAAC;AAEhD,eAAO,MAAM,YAAY,EAAE,WAAmC,CAAC;AAE/D;;GAEG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,WAAW,GACtC,KAAK,IAAI,WAAW,CAKtB;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,WAAW,CAAC"}
@@ -107,12 +107,6 @@ export type PayEmbedProps = {
107
107
  * Refer to the [`PayEmbedConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/PayEmbedConnectOptions) type for more details.
108
108
  */
109
109
  connectOptions?: PayEmbedConnectOptions;
110
- /**
111
- * Customize the display of the PayEmbed UI.
112
- */
113
- metadata?: {
114
- title?: string;
115
- };
116
110
  style?: React.CSSProperties;
117
111
  };
118
112
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PayEmbed.d.ts","sourceRoot":"","sources":["../../../../../src/react/web/ui/PayEmbed.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EACV,iCAAiC,EACjC,YAAY,EACb,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAOzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;;;;;;;;;;;OAcG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IAEjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;IAExC;;OAEG;IACH,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,8CA+E5C;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,YAAY,CAAC,EAAE,iCAAiC,CAAC;IAEjD;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;OASG;IACH,WAAW,CAAC,EACR;QACE,OAAO,EAAE,MAAM,CAAC;KACjB,GACD,OAAO,CAAC;IAEZ;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IAEjB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB,CAAC"}
1
+ {"version":3,"file":"PayEmbed.d.ts","sourceRoot":"","sources":["../../../../../src/react/web/ui/PayEmbed.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mCAAmC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,KAAK,EACV,iCAAiC,EACjC,YAAY,EACb,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAOzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG;IAC1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;;;;;;;;;;;;OAcG;IACH,MAAM,EAAE,cAAc,CAAC;IACvB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,YAAY,CAAC;IAE1B;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;IAEjC;;;;OAIG;IACH,cAAc,CAAC,EAAE,sBAAsB,CAAC;IAExC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,8CAqF5C;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,YAAY,CAAC,EAAE,iCAAiC,CAAC;IAEjD;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IAExC;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;;;;;OASG;IACH,WAAW,CAAC,EACR;QACE,OAAO,EAAE,MAAM,CAAC;KACjB,GACD,OAAO,CAAC;IAEZ;;OAEG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;IAEd;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC;IAEjB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAE9B;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { WaitForReceiptOptions } from "../../../../transaction/actions/wait-for-tx-receipt.js";
2
+ import type { PreparedTransaction } from "../../../../transaction/prepare-transaction.js";
3
+ export declare function ExecutingTxScreen(props: {
4
+ tx: PreparedTransaction;
5
+ closeModal: () => void;
6
+ onTxSent: (data: WaitForReceiptOptions) => void;
7
+ onBack?: () => void;
8
+ }): import("react/jsx-runtime.js").JSX.Element;
9
+ //# sourceMappingURL=ExecutingScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExecutingScreen.d.ts","sourceRoot":"","sources":["../../../../../../src/react/web/ui/TransactionButton/ExecutingScreen.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAW1F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,EAAE,EAAE,mBAAmB,CAAC;IACxB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB,8CA0GA"}
@@ -0,0 +1,24 @@
1
+ import type { ThirdwebClient } from "../../../../client/client.js";
2
+ import type { WaitForReceiptOptions } from "../../../../transaction/actions/wait-for-tx-receipt.js";
3
+ import type { PreparedTransaction } from "../../../../transaction/prepare-transaction.js";
4
+ import type { Theme } from "../../../core/design-system/index.js";
5
+ import type { PayUIOptions } from "../../../core/hooks/connection/ConnectButtonProps.js";
6
+ import type { SupportedTokens } from "../../../core/utils/defaultTokens.js";
7
+ import type { LocaleId } from "../types.js";
8
+ export type ModalProps = {
9
+ title: string;
10
+ onComplete: () => void;
11
+ onClose: () => void;
12
+ client: ThirdwebClient;
13
+ localeId: LocaleId;
14
+ supportedTokens?: SupportedTokens;
15
+ theme: Theme | "light" | "dark";
16
+ tx: PreparedTransaction;
17
+ payOptions: PayUIOptions;
18
+ onTxSent: (data: WaitForReceiptOptions) => void;
19
+ };
20
+ export declare function TransactionModal(props: ModalProps): import("react/jsx-runtime.js").JSX.Element;
21
+ export declare function TransactionModalContent(props: ModalProps & {
22
+ onBack?: () => void;
23
+ }): import("react/jsx-runtime.js").JSX.Element;
24
+ //# sourceMappingURL=TransactionModal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TransactionModal.d.ts","sourceRoot":"","sources":["../../../../../../src/react/web/ui/TransactionButton/TransactionModal.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAE1F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sCAAsC,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sDAAsD,CAAC;AACzF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAK5E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,KAAK,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAChC,EAAE,EAAE,mBAAmB,CAAC;IACxB,UAAU,EAAE,YAAY,CAAC;IACzB,QAAQ,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,IAAI,CAAC;CACjD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,8CAgBjD;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE,8CAmC5C"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.40.0-nightly-3848327373e49aa83c5902e6a16d5b8e96cf1eeb-20240726000343";
1
+ export declare const version = "5.40.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,2EAA2E,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "thirdweb",
3
- "version": "5.40.0-nightly-3848327373e49aa83c5902e6a16d5b8e96cf1eeb-20240726000343",
3
+ "version": "5.40.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/thirdweb-dev/js.git#main"
@@ -29,7 +29,10 @@ export type {
29
29
  SupportedTokens,
30
30
  TokenInfo,
31
31
  } from "../react/core/utils/defaultTokens.js";
32
- export { defaultTokens } from "../react/core/utils/defaultTokens.js";
32
+ export {
33
+ defaultTokens,
34
+ getDefaultToken,
35
+ } from "../react/core/utils/defaultTokens.js";
33
36
 
34
37
  // Media Renderer
35
38
  export { MediaRenderer } from "../react/web/ui/MediaRenderer/MediaRenderer.js";
@@ -121,7 +124,13 @@ export {
121
124
  type PayEmbedProps,
122
125
  type PayEmbedConnectOptions,
123
126
  } from "../react/web/ui/PayEmbed.js";
124
- export type { PayUIOptions } from "../react/core/hooks/connection/ConnectButtonProps.js";
127
+ export type {
128
+ PayUIOptions,
129
+ PaymentInfo,
130
+ DirectPaymentOptions,
131
+ FundWalletOptions,
132
+ TranasctionOptions,
133
+ } from "../react/core/hooks/connection/ConnectButtonProps.js";
125
134
 
126
135
  export {
127
136
  useConnectModal,
@@ -141,6 +150,9 @@ export {
141
150
  type UseNetworkSwitcherModalOptions,
142
151
  } from "../react/web/ui/ConnectWallet/NetworkSelector.js";
143
152
 
153
+ // ens
154
+ export { useEnsName, useEnsAvatar } from "../react/core/utils/wallet.js";
155
+
144
156
  /**
145
157
  * Prebuilt UI components for thirdweb contracts
146
158
  */
@@ -170,6 +170,7 @@ export const fontSize = {
170
170
  };
171
171
 
172
172
  export const spacing = {
173
+ "3xs": "4px",
173
174
  xxs: "6px",
174
175
  xs: "8px",
175
176
  sm: "12px",
@@ -181,6 +182,7 @@ export const spacing = {
181
182
  };
182
183
 
183
184
  export const radius = {
185
+ xs: "4px",
184
186
  sm: "6px",
185
187
  md: "8px",
186
188
  lg: "12px",
@@ -1,5 +1,7 @@
1
1
  import type { Chain } from "../../../../chains/types.js";
2
2
  import type { ThirdwebClient } from "../../../../client/client.js";
3
+ import type { PreparedTransaction } from "../../../../transaction/prepare-transaction.js";
4
+ import type { Prettify } from "../../../../utils/type-utils.js";
3
5
  import type { Account, Wallet } from "../../../../wallets/interfaces/wallet.js";
4
6
  import type { SmartWalletOptions } from "../../../../wallets/smart/types.js";
5
7
  import type { AppMetadata } from "../../../../wallets/types.js";
@@ -10,10 +12,88 @@ import type { Theme } from "../../design-system/index.js";
10
12
  import type {
11
13
  SupportedNFTs,
12
14
  SupportedTokens,
15
+ TokenInfo,
13
16
  } from "../../utils/defaultTokens.js";
14
17
  import type { SiweAuthOptions } from "../auth/useSiweAuth.js";
15
18
 
16
- export type PayUIOptions = {
19
+ export type PaymentInfo = {
20
+ /**
21
+ * The chain to receive the payment on.
22
+ */
23
+ chain: Chain;
24
+ /**
25
+ * The address of the seller wallet to receive the payment on.
26
+ */
27
+ sellerAddress: string;
28
+ /**
29
+ * Optional ERC20 token to receive the payment on.
30
+ * If not provided, the native token will be used.
31
+ */
32
+ token?: TokenInfo;
33
+ } & (
34
+ | {
35
+ /**
36
+ * The amount of tokens to receive in ETH or tokens.
37
+ * ex: 0.1 ETH or 100 USDC
38
+ */
39
+ amount: string;
40
+ }
41
+ | {
42
+ /**
43
+ * The amount of tokens to receive in wei.
44
+ * ex: 1000000000000000000 wei
45
+ */
46
+ amountWei: bigint;
47
+ }
48
+ );
49
+
50
+ export type PayUIOptions = Prettify<
51
+ {
52
+ /**
53
+ * Configure options for buying tokens using other token ( aka Swap )
54
+ *
55
+ * By default, the "Crypto" option is enabled. You can disable it by setting `buyWithCrypto` to `false`
56
+ *
57
+ * You can prefill the source token and chain using `prefillSource`
58
+ * You can also disable the edits for the prefilled values by setting `prefillSource.allowEdits` - By default all are editable
59
+ *
60
+ * For example, if you want to allow selecting chain and but disable selecting token, you can set `allowEdits` to `{ token: false, chain: true }`
61
+ */
62
+ buyWithCrypto?:
63
+ | false
64
+ | {
65
+ prefillSource?: {
66
+ chain: Chain;
67
+ token?: TokenInfo;
68
+ allowEdits?: {
69
+ token: boolean;
70
+ chain: boolean;
71
+ };
72
+ };
73
+ };
74
+
75
+ /**
76
+ * By default "Credit card" option is enabled. you can disable it by setting `buyWithFiat` to `false`
77
+ *
78
+ * You can also enable the test mode for the on-ramp provider to test on-ramp without using real credit card.
79
+ */
80
+ buyWithFiat?:
81
+ | {
82
+ testMode?: boolean;
83
+ }
84
+ | false;
85
+
86
+ /**
87
+ * Extra details to store with the purchase.
88
+ *
89
+ * This details will be stored with the purchase and can be retrieved later via the status API or Webhook
90
+ */
91
+ purchaseData?: object;
92
+ } & (FundWalletOptions | DirectPaymentOptions | TranasctionOptions)
93
+ >;
94
+
95
+ export type FundWalletOptions = {
96
+ mode?: "fund_wallet";
17
97
  /**
18
98
  * Prefill the Buy Token amount, chain and/or token.
19
99
  * You can also disable the edits for the prefilled values using `allowEdits` - By default all are editable
@@ -25,12 +105,7 @@ export type PayUIOptions = {
25
105
  */
26
106
  prefillBuy?: {
27
107
  chain: Chain;
28
- token?: {
29
- name: string;
30
- symbol: string;
31
- address: string;
32
- icon?: string;
33
- };
108
+ token?: TokenInfo;
34
109
  amount?: string;
35
110
  allowEdits?: {
36
111
  amount: boolean;
@@ -38,59 +113,36 @@ export type PayUIOptions = {
38
113
  chain: boolean;
39
114
  };
40
115
  };
116
+ };
41
117
 
118
+ export type DirectPaymentOptions = {
119
+ mode: "direct_payment";
42
120
  /**
43
- * Configure options for buying tokens using other token ( aka Swap )
44
- *
45
- * By default, the "Crypto" option is enabled. You can disable it by setting `buyWithCrypto` to `false`
46
- *
47
- * You can prefill the source token and chain using `prefillSource`
48
- * You can also disable the edits for the prefilled values by setting `prefillSource.allowEdits` - By default all are editable
49
- *
50
- * For example, if you want to allow selecting chain and but disable selecting token, you can set `allowEdits` to `{ token: false, chain: true }`
121
+ * The payment information
51
122
  */
52
- buyWithCrypto?:
53
- | false
54
- | {
55
- prefillSource?: {
56
- chain: Chain;
57
- token?: {
58
- name: string;
59
- symbol: string;
60
- address: string;
61
- icon?: string;
62
- };
63
- allowEdits?: {
64
- token: boolean;
65
- chain: boolean;
66
- };
67
- };
68
- };
69
-
123
+ paymentInfo: PaymentInfo;
70
124
  /**
71
- * By default "Credit card" option is enabled. you can disable it by setting `buyWithFiat` to `false`
72
- *
73
- * You can also enable the test mode for the on-ramp provider to test on-ramp without using real credit card.
125
+ * Customize the display of the PayEmbed UI.
74
126
  */
75
- buyWithFiat?:
76
- | {
77
- testMode?: boolean;
78
- }
79
- | false;
127
+ metadata?: {
128
+ name?: string;
129
+ image?: string;
130
+ };
131
+ };
80
132
 
133
+ export type TranasctionOptions = {
134
+ mode: "transaction";
81
135
  /**
82
- * Extra details to store with the purchase.
83
- *
84
- * This details will be stored with the purchase and can be retrieved later via the status API or Webhook
136
+ * The transaction to be executed.
85
137
  */
86
- purchaseData?: object;
87
-
138
+ transaction: PreparedTransaction;
88
139
  /**
89
- * The address of the recipient of the purchase.
90
- *
91
- * This address will be used to send the purchased tokens to.
140
+ * Customize the display of the PayEmbed UI.
92
141
  */
93
- recipientAddress?: string;
142
+ metadata?: {
143
+ name?: string;
144
+ image?: string;
145
+ };
94
146
  };
95
147
 
96
148
  /**
@@ -192,7 +244,7 @@ export type ConnectButton_detailsModalOptions = {
192
244
  *
193
245
  * thirdweb Pay allows users to buy tokens using crypto or fiat currency.
194
246
  */
195
- payOptions?: PayUIOptions;
247
+ payOptions?: Extract<PayUIOptions, { mode?: "fund_wallet" }>;
196
248
  };
197
249
 
198
250
  /**
@@ -1,21 +1,11 @@
1
1
  import { type UseMutationResult, useMutation } from "@tanstack/react-query";
2
- import type { Address } from "abitype";
3
2
  import type { Chain } from "../../../../chains/types.js";
4
- import { getContract } from "../../../../contract/contract.js";
5
- import { getCurrencyMetadata } from "../../../../extensions/erc20/read/getCurrencyMetadata.js";
6
- import { getGasPrice } from "../../../../gas/get-gas-price.js";
7
- import { estimateGasCost } from "../../../../transaction/actions/estimate-gas-cost.js";
8
3
  import type { GaslessOptions } from "../../../../transaction/actions/gasless/types.js";
9
4
  import { sendTransaction } from "../../../../transaction/actions/send-transaction.js";
10
5
  import type { WaitForReceiptOptions } from "../../../../transaction/actions/wait-for-tx-receipt.js";
11
6
  import type { PreparedTransaction } from "../../../../transaction/prepare-transaction.js";
12
7
  import { resolvePromisedValue } from "../../../../utils/promise/resolve-promised-value.js";
13
8
  import type { Wallet } from "../../../../wallets/interfaces/wallet.js";
14
- import {
15
- type GetWalletBalanceResult,
16
- getWalletBalance,
17
- } from "../../../../wallets/utils/getWalletBalance.js";
18
- import { fetchBuySupportedDestinations } from "../../../web/ui/ConnectWallet/screens/Buy/swap/useSwapSupportedChains.js";
19
9
  import type { LocaleId } from "../../../web/ui/types.js";
20
10
  import type { Theme } from "../../design-system/index.js";
21
11
  import type { SupportedTokens } from "../../utils/defaultTokens.js";
@@ -43,7 +33,8 @@ import type { SupportedTokens } from "../../utils/defaultTokens.js";
43
33
  export type SendTransactionPayModalConfig =
44
34
  | {
45
35
  metadata?: {
46
- title?: string;
36
+ name?: string;
37
+ image?: string;
47
38
  };
48
39
  locale?: LocaleId;
49
40
  supportedTokens?: SupportedTokens;
@@ -74,19 +65,10 @@ export type SendTransactionConfig = {
74
65
  gasless?: GaslessOptions;
75
66
  };
76
67
 
77
- type ShowModalData = {
68
+ export type ShowModalData = {
78
69
  tx: PreparedTransaction;
79
70
  sendTx: () => void;
80
71
  rejectTx: (reason: Error) => void;
81
- totalCostWei: bigint;
82
- currency?: {
83
- address: Address;
84
- name: string;
85
- symbol: string;
86
- decimals: number;
87
- icon?: string;
88
- };
89
- walletBalance: GetWalletBalanceResult;
90
72
  resolveTx: (data: WaitForReceiptOptions) => void;
91
73
  };
92
74
 
@@ -152,76 +134,23 @@ export function useSendTransactionCore(args: {
152
134
 
153
135
  (async () => {
154
136
  try {
155
- const destinations = await fetchBuySupportedDestinations(tx.client);
156
-
157
- const isBuySupported = destinations.find(
158
- (c) => c.chain.id === tx.chain.id,
159
- );
160
-
161
- // buy not supported, can't show modal - send tx directly
162
- if (!isBuySupported) {
163
- sendTx();
164
- return;
165
- }
166
-
167
- // buy supported, check if there is enough balance - if not show modal to buy tokens
168
- const [nativeWalletBalance, nativeCostWei] = await Promise.all([
169
- getWalletBalance({
170
- address: account.address,
171
- chain: tx.chain,
172
- client: tx.client,
173
- }),
174
- getTotalTxCostForBuy(tx, account?.address),
137
+ const [_nativeValue, _erc20Value] = await Promise.all([
138
+ resolvePromisedValue(tx.value),
139
+ resolvePromisedValue(tx.erc20Value),
175
140
  ]);
176
-
177
- let currency: ShowModalData["currency"] | undefined = undefined;
178
- let walletBalance = nativeWalletBalance;
179
- let totalCostWei = nativeCostWei;
180
- const hasEnoughForGas = nativeWalletBalance.value > nativeCostWei;
181
-
182
- const erc20Value = await resolvePromisedValue(tx.erc20Value);
183
- if (erc20Value && hasEnoughForGas) {
184
- const [tokenBalance, tokenMeta] = await Promise.all([
185
- getWalletBalance({
186
- address: account.address,
187
- chain: tx.chain,
188
- client: tx.client,
189
- tokenAddress: erc20Value.tokenAddress,
190
- }),
191
- getCurrencyMetadata({
192
- contract: getContract({
193
- address: erc20Value.tokenAddress,
194
- chain: tx.chain,
195
- client: tx.client,
196
- }),
197
- }),
198
- ]);
199
- totalCostWei = erc20Value.amountWei;
200
- walletBalance = tokenBalance;
201
- currency = {
202
- address: erc20Value.tokenAddress,
203
- name: tokenMeta.name,
204
- symbol: tokenMeta.symbol,
205
- decimals: tokenMeta.decimals,
206
- };
207
- }
208
-
209
- // if enough balance, send tx
210
- if (totalCostWei < walletBalance.value) {
141
+ const nativeValue = _nativeValue || 0n;
142
+ const erc20Value = _erc20Value?.amountWei || 0n;
143
+
144
+ if (nativeValue > 0n || erc20Value > 0n) {
145
+ showPayModal({
146
+ tx,
147
+ sendTx,
148
+ rejectTx: reject,
149
+ resolveTx: resolve,
150
+ });
151
+ } else {
211
152
  sendTx();
212
- return;
213
153
  }
214
-
215
- // if not enough balance - show modal
216
- showPayModal({
217
- tx,
218
- sendTx,
219
- rejectTx: reject,
220
- resolveTx: resolve,
221
- totalCostWei,
222
- walletBalance,
223
- currency,
224
- });
225
154
  } catch (e) {
226
155
  console.error("Failed to estimate cost", e);
227
156
  // send it anyway?
@@ -232,42 +161,3 @@ export function useSendTransactionCore(args: {
232
161
  },
233
162
  });
234
163
  }
235
-
236
- export async function getTotalTxCostForBuy(
237
- tx: PreparedTransaction,
238
- from?: string,
239
- ) {
240
- try {
241
- const gasCost = await estimateGasCost({
242
- transaction: tx,
243
- from,
244
- });
245
-
246
- const bufferCost = gasCost.wei / 10n;
247
-
248
- // Note: get tx.value AFTER estimateGasCost
249
- const txValue = await resolvePromisedValue(tx.value);
250
-
251
- // add 10% extra gas cost to the estimate to ensure user buys enough to cover the tx cost
252
- return gasCost.wei + bufferCost + (txValue || 0n);
253
- } catch (e) {
254
- if (from) {
255
- // try again without passing from
256
- return await getTotalTxCostForBuy(tx);
257
- }
258
- // fallback if both fail, use the tx value + 2M * gas price
259
- const value = await resolvePromisedValue(tx.value);
260
-
261
- const gasPrice = await getGasPrice({
262
- client: tx.client,
263
- chain: tx.chain,
264
- });
265
-
266
- const buffer = 2_000_000n * gasPrice;
267
-
268
- if (!value) {
269
- return 0n + buffer;
270
- }
271
- return value + buffer;
272
- }
273
- }
@@ -1,3 +1,4 @@
1
+ import type { Chain } from "../../../chains/types.js";
1
2
  import type { Address } from "../../../utils/address.js";
2
3
 
3
4
  export type TokenInfo = {
@@ -34,31 +35,8 @@ const fantomIcon =
34
35
  export type SupportedTokens = Record<number, TokenInfo[]>;
35
36
  export type SupportedNFTs = Record<number, Address[]>;
36
37
 
37
- /**
38
- * Default tokens shown in [`ConnectButton`](https://portal.thirdweb.com/react/v4/components/ConnectButton)'s SendFunds screen for each network.
39
- *
40
- * You can use the default tokens as a starting point for your own list of tokens and override tokens for specific networks.
41
- * @example
42
- * Below example shows adding a custom token for the Ethereum mainnet at start of the list of default tokens for the Ethereum mainnet. Here the `1` represents the chainId of Ethereum mainnet.
43
- *
44
- * ```tsx
45
- * const ethereumChainId = 1;
46
- *
47
- * <ConnectButton supportedTokens={{
48
- * ...defaultTokens,
49
- * [ethereumChainId]: [
50
- * {
51
- * address: 'YOUR_TOKEN_ADDRESS',
52
- * name: 'YOUR_TOKEN_NAME',
53
- * symbol: 'YOUR_TOKEN_SYMBOL',
54
- * icon: 'YOUR_TOKEN_ICON_URL'
55
- * },
56
- * ...defaultTokens[ethereumChainId],
57
- * ]
58
- * }} />
59
- * ```
60
- */
61
- export const defaultTokens: SupportedTokens = {
38
+ // TODO these should be moved to chain definitions
39
+ const DEFAULT_TOKENS = {
62
40
  "1": [
63
41
  {
64
42
  address: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
@@ -333,4 +311,38 @@ export const defaultTokens: SupportedTokens = {
333
311
  icon: usdcIcon,
334
312
  },
335
313
  ],
336
- };
314
+ } as const;
315
+
316
+ /**
317
+ * Default tokens shown in [`ConnectButton`](https://portal.thirdweb.com/react/v4/components/ConnectButton)'s SendFunds screen for each network.
318
+ *
319
+ * You can use the default tokens as a starting point for your own list of tokens and override tokens for specific networks.
320
+ * @example
321
+ * Below example shows adding a custom token for the Ethereum mainnet at start of the list of default tokens for the Ethereum mainnet. Here the `1` represents the chainId of Ethereum mainnet.
322
+ *
323
+ * ```tsx
324
+ * const ethereumChainId = 1;
325
+ *
326
+ * <ConnectButton supportedTokens={{
327
+ * ...defaultTokens,
328
+ * [ethereumChainId]: [
329
+ * {
330
+ * address: 'YOUR_TOKEN_ADDRESS',
331
+ * name: 'YOUR_TOKEN_NAME',
332
+ * symbol: 'YOUR_TOKEN_SYMBOL',
333
+ * icon: 'YOUR_TOKEN_ICON_URL'
334
+ * },
335
+ * ...defaultTokens[ethereumChainId],
336
+ * ]
337
+ * }} />
338
+ * ```
339
+ */
340
+ export const defaultTokens = DEFAULT_TOKENS as unknown as SupportedTokens;
341
+
342
+ type SupportedSymbol =
343
+ (typeof DEFAULT_TOKENS)[keyof typeof DEFAULT_TOKENS][number]["symbol"];
344
+
345
+ export function getDefaultToken(chain: Chain, symbol: SupportedSymbol) {
346
+ const tokens = defaultTokens[chain.id];
347
+ return tokens?.find((t) => t.symbol === symbol);
348
+ }