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.
- package/dist/cjs/exports/react.js +7 -2
- package/dist/cjs/exports/react.js.map +1 -1
- package/dist/cjs/react/core/design-system/index.js +2 -0
- package/dist/cjs/react/core/design-system/index.js.map +1 -1
- package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js +13 -94
- package/dist/cjs/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
- package/dist/cjs/react/core/utils/defaultTokens.js +32 -25
- package/dist/cjs/react/core/utils/defaultTokens.js.map +1 -1
- package/dist/cjs/react/core/utils/wallet.js +91 -13
- package/dist/cjs/react/core/utils/wallet.js.map +1 -1
- package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js +18 -127
- package/dist/cjs/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js +3 -1
- package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/TransactionsScreen.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/TransactionsScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +184 -118
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +104 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +69 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +23 -5
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +4 -4
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js +2 -2
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +2 -2
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +132 -45
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js +2 -5
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +13 -8
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +9 -5
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +8 -3
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js +84 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js.map +1 -0
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js +13 -7
- package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js.map +1 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/nativeToken.js +3 -1
- package/dist/cjs/react/web/ui/ConnectWallet/screens/nativeToken.js.map +1 -1
- package/dist/cjs/react/web/ui/PayEmbed.js +16 -9
- package/dist/cjs/react/web/ui/PayEmbed.js.map +1 -1
- package/dist/cjs/react/web/ui/TransactionButton/ExecutingScreen.js +53 -0
- package/dist/cjs/react/web/ui/TransactionButton/ExecutingScreen.js.map +1 -0
- package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js +33 -0
- package/dist/cjs/react/web/ui/TransactionButton/TransactionModal.js.map +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/esm/exports/react.js +3 -1
- package/dist/esm/exports/react.js.map +1 -1
- package/dist/esm/react/core/design-system/index.js +2 -0
- package/dist/esm/react/core/design-system/index.js.map +1 -1
- package/dist/esm/react/core/hooks/transaction/useSendTransaction.js +13 -93
- package/dist/esm/react/core/hooks/transaction/useSendTransaction.js.map +1 -1
- package/dist/esm/react/core/utils/defaultTokens.js +31 -25
- package/dist/esm/react/core/utils/defaultTokens.js.map +1 -1
- package/dist/esm/react/core/utils/wallet.js +88 -13
- package/dist/esm/react/core/utils/wallet.js.map +1 -1
- package/dist/esm/react/web/hooks/transaction/useSendTransaction.js +20 -129
- package/dist/esm/react/web/hooks/transaction/useSendTransaction.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/Details.js +3 -1
- package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/TransactionsScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +188 -122
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js +101 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.js.map +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +66 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js +22 -5
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js +4 -4
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js +2 -2
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js +2 -2
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +130 -44
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js +2 -5
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js +13 -8
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js +7 -4
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js +9 -4
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js +81 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.js.map +1 -0
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js +14 -8
- package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.js.map +1 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/nativeToken.js +3 -1
- package/dist/esm/react/web/ui/ConnectWallet/screens/nativeToken.js.map +1 -1
- package/dist/esm/react/web/ui/PayEmbed.js +16 -9
- package/dist/esm/react/web/ui/PayEmbed.js.map +1 -1
- package/dist/esm/react/web/ui/TransactionButton/ExecutingScreen.js +50 -0
- package/dist/esm/react/web/ui/TransactionButton/ExecutingScreen.js.map +1 -0
- package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js +29 -0
- package/dist/esm/react/web/ui/TransactionButton/TransactionModal.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/types/exports/react.d.ts +3 -2
- package/dist/types/exports/react.d.ts.map +1 -1
- package/dist/types/react/core/design-system/index.d.ts +2 -0
- package/dist/types/react/core/design-system/index.d.ts.map +1 -1
- package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts +80 -34
- package/dist/types/react/core/hooks/connection/ConnectButtonProps.d.ts.map +1 -1
- package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts +3 -15
- package/dist/types/react/core/hooks/transaction/useSendTransaction.d.ts.map +1 -1
- package/dist/types/react/core/utils/defaultTokens.d.ts +222 -0
- package/dist/types/react/core/utils/defaultTokens.d.ts.map +1 -1
- package/dist/types/react/core/utils/wallet.d.ts +43 -1
- package/dist/types/react/core/utils/wallet.d.ts.map +1 -1
- package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts +2 -4
- package/dist/types/react/web/hooks/transaction/useSendTransaction.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/Details.d.ts +3 -1
- package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts +0 -3
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.d.ts +18 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.d.ts.map +1 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts +18 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts.map +1 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts +5 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.d.ts +1 -2
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.d.ts +1 -2
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.d.ts +1 -2
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.d.ts +1 -2
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts +14 -8
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/types.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts +19 -9
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.d.ts +6 -5
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts +0 -2
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.d.ts +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.d.ts +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.d.ts +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts +4 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts +1 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.d.ts +1 -2
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.d.ts +1 -2
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.d.ts +19 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.d.ts.map +1 -0
- package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.d.ts.map +1 -1
- package/dist/types/react/web/ui/ConnectWallet/screens/nativeToken.d.ts.map +1 -1
- package/dist/types/react/web/ui/PayEmbed.d.ts +0 -6
- package/dist/types/react/web/ui/PayEmbed.d.ts.map +1 -1
- package/dist/types/react/web/ui/TransactionButton/ExecutingScreen.d.ts +9 -0
- package/dist/types/react/web/ui/TransactionButton/ExecutingScreen.d.ts.map +1 -0
- package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts +24 -0
- package/dist/types/react/web/ui/TransactionButton/TransactionModal.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/exports/react.ts +14 -2
- package/src/react/core/design-system/index.ts +2 -0
- package/src/react/core/hooks/connection/ConnectButtonProps.ts +103 -51
- package/src/react/core/hooks/transaction/useSendTransaction.ts +17 -127
- package/src/react/core/utils/defaultTokens.ts +38 -26
- package/src/react/core/utils/wallet.ts +102 -18
- package/src/react/web/hooks/transaction/useSendTransaction.tsx +34 -278
- package/src/react/web/ui/ConnectWallet/Details.tsx +6 -4
- package/src/react/web/ui/ConnectWallet/TransactionsScreen.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +347 -383
- package/src/react/web/ui/ConnectWallet/screens/Buy/DirectPaymentModeScreen.tsx +266 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.tsx +253 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/WalletSelectorButton.tsx +52 -21
- package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatFlow.tsx +3 -6
- package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/FiatStatusScreen.tsx +5 -6
- package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwap.tsx +2 -4
- package/src/react/web/ui/ConnectWallet/screens/Buy/fiat/PostOnRampSwapFlow.tsx +2 -4
- package/src/react/web/ui/ConnectWallet/screens/Buy/main/types.ts +16 -12
- package/src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts +155 -60
- package/src/react/web/ui/ConnectWallet/screens/Buy/main/useEnabledPaymentMethods.ts +8 -3
- package/src/react/web/ui/ConnectWallet/screens/Buy/main/useUISelectionStates.ts +17 -12
- package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/BuyTxHistory.tsx +2 -2
- package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/FiatDetailsScreen.tsx +2 -3
- package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/SwapDetailsScreen.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TokenInfoRow.tsx +1 -1
- package/src/react/web/ui/ConnectWallet/screens/Buy/pay-transactions/TxDetailsScreen.tsx +2 -2
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/ConfirmationScreen.tsx +27 -19
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/Fees.tsx +8 -4
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/PayWithCrypto.tsx +12 -5
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapFlow.tsx +2 -4
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/SwapStatusScreen.tsx +3 -4
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/TransferFlow.tsx +243 -0
- package/src/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.tsx +30 -17
- package/src/react/web/ui/ConnectWallet/screens/nativeToken.ts +5 -1
- package/src/react/web/ui/PayEmbed.tsx +31 -32
- package/src/react/web/ui/TransactionButton/ExecutingScreen.tsx +127 -0
- package/src/react/web/ui/TransactionButton/TransactionModal.tsx +83 -0
- package/src/version.ts +1 -1
package/dist/types/react/web/ui/ConnectWallet/screens/Buy/swap/WalletSwitcherDrawerContent.d.ts.map
CHANGED
@@ -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;
|
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":"
|
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
|
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"}
|
package/dist/types/version.d.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "5.40.0
|
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,
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,WAAW,CAAC"}
|
package/package.json
CHANGED
package/src/exports/react.ts
CHANGED
@@ -29,7 +29,10 @@ export type {
|
|
29
29
|
SupportedTokens,
|
30
30
|
TokenInfo,
|
31
31
|
} from "../react/core/utils/defaultTokens.js";
|
32
|
-
export {
|
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 {
|
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
|
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
|
-
*
|
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
|
-
|
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
|
-
*
|
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
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
127
|
+
metadata?: {
|
128
|
+
name?: string;
|
129
|
+
image?: string;
|
130
|
+
};
|
131
|
+
};
|
80
132
|
|
133
|
+
export type TranasctionOptions = {
|
134
|
+
mode: "transaction";
|
81
135
|
/**
|
82
|
-
*
|
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
|
-
|
87
|
-
|
138
|
+
transaction: PreparedTransaction;
|
88
139
|
/**
|
89
|
-
*
|
90
|
-
*
|
91
|
-
* This address will be used to send the purchased tokens to.
|
140
|
+
* Customize the display of the PayEmbed UI.
|
92
141
|
*/
|
93
|
-
|
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
|
-
|
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
|
156
|
-
|
157
|
-
|
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
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
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
|
-
|
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
|
+
}
|