@b3dotfun/sdk 0.0.83-test.0 → 0.0.84-alpha.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 (176) hide show
  1. package/dist/cjs/anyspend/constants/index.d.ts +1 -1
  2. package/dist/cjs/anyspend/constants/index.js +2 -2
  3. package/dist/cjs/anyspend/react/components/AnySpend.js +21 -12
  4. package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.js +1 -1
  5. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +4 -6
  6. package/dist/cjs/anyspend/react/components/common/CryptoPaySection.js +2 -4
  7. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +47 -177
  8. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethodDisplay.d.ts +15 -0
  9. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethodDisplay.js +28 -0
  10. package/dist/cjs/anyspend/react/components/common/InsufficientDepositPayment.js +1 -1
  11. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +5 -4
  12. package/dist/cjs/anyspend/react/components/common/OrderToken.js +2 -2
  13. package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.js +1 -1
  14. package/dist/cjs/anyspend/react/components/common/OrderTokenAmountFiat.js +1 -1
  15. package/dist/cjs/anyspend/react/components/common/OrderTokenAmountNew.js +2 -2
  16. package/dist/cjs/anyspend/react/components/common/PaymentStripeWeb2.js +4 -6
  17. package/dist/cjs/anyspend/react/components/common/PaymentVendorUI.js +41 -2
  18. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +1 -1
  19. package/dist/cjs/anyspend/react/components/webview/WebviewOnrampPayment.js +2 -3
  20. package/dist/cjs/anyspend/react/hooks/index.d.ts +1 -0
  21. package/dist/cjs/anyspend/react/hooks/index.js +1 -0
  22. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +0 -3
  23. package/dist/cjs/anyspend/react/hooks/useConnectedUserProfile.d.ts +2 -1
  24. package/dist/cjs/anyspend/react/hooks/useConnectedUserProfile.js +5 -8
  25. package/dist/cjs/anyspend/react/hooks/useConnectedWalletDisplay.d.ts +0 -2
  26. package/dist/cjs/anyspend/react/hooks/useConnectedWalletDisplay.js +2 -12
  27. package/dist/cjs/anyspend/react/hooks/useHyperliquidTransfer.d.ts +37 -0
  28. package/dist/cjs/anyspend/react/hooks/useHyperliquidTransfer.js +133 -0
  29. package/dist/cjs/anyspend/react/providers/AnyspendProvider.js +1 -13
  30. package/dist/cjs/anyspend/types/chain.d.ts +10 -2
  31. package/dist/cjs/anyspend/types/chain.js +1 -0
  32. package/dist/cjs/anyspend/utils/address.d.ts +11 -0
  33. package/dist/cjs/anyspend/utils/address.js +15 -0
  34. package/dist/cjs/anyspend/utils/chain.d.ts +58 -1
  35. package/dist/cjs/anyspend/utils/chain.js +94 -4
  36. package/dist/cjs/anyspend/utils/token.d.ts +4 -0
  37. package/dist/cjs/anyspend/utils/token.js +35 -6
  38. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +1 -1
  39. package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +3 -4
  40. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +12 -57
  41. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStep.js +1 -1
  42. package/dist/cjs/global-account/react/hooks/index.d.ts +0 -2
  43. package/dist/cjs/global-account/react/hooks/index.js +1 -5
  44. package/dist/cjs/global-account/react/hooks/useAccountWallet.js +11 -10
  45. package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +2 -2
  46. package/dist/cjs/global-account/react/hooks/useAuthentication.js +63 -72
  47. package/dist/cjs/global-account/react/hooks/useTWAuth.d.ts +0 -3
  48. package/dist/cjs/global-account/react/hooks/useTWAuth.js +0 -8
  49. package/dist/cjs/global-account/react/hooks/useTurnkeyAuth.js +24 -54
  50. package/dist/cjs/global-account/react/hooks/useUserQuery.d.ts +1 -1
  51. package/dist/cjs/shared/utils/payment.utils.d.ts +1 -0
  52. package/dist/cjs/shared/utils/payment.utils.js +9 -0
  53. package/dist/esm/anyspend/constants/index.d.ts +1 -1
  54. package/dist/esm/anyspend/constants/index.js +1 -1
  55. package/dist/esm/anyspend/react/components/AnySpend.js +22 -13
  56. package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.js +1 -1
  57. package/dist/esm/anyspend/react/components/AnySpendCustom.js +5 -7
  58. package/dist/esm/anyspend/react/components/common/CryptoPaySection.js +4 -6
  59. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +45 -175
  60. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethodDisplay.d.ts +15 -0
  61. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethodDisplay.js +25 -0
  62. package/dist/esm/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
  63. package/dist/esm/anyspend/react/components/common/OrderDetails.js +6 -5
  64. package/dist/esm/anyspend/react/components/common/OrderToken.js +3 -3
  65. package/dist/esm/anyspend/react/components/common/OrderTokenAmount.js +2 -2
  66. package/dist/esm/anyspend/react/components/common/OrderTokenAmountFiat.js +2 -2
  67. package/dist/esm/anyspend/react/components/common/OrderTokenAmountNew.js +3 -3
  68. package/dist/esm/anyspend/react/components/common/PaymentStripeWeb2.js +2 -4
  69. package/dist/esm/anyspend/react/components/common/PaymentVendorUI.js +9 -3
  70. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
  71. package/dist/esm/anyspend/react/components/webview/WebviewOnrampPayment.js +3 -4
  72. package/dist/esm/anyspend/react/hooks/index.d.ts +1 -0
  73. package/dist/esm/anyspend/react/hooks/index.js +1 -0
  74. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +0 -3
  75. package/dist/esm/anyspend/react/hooks/useConnectedUserProfile.d.ts +2 -1
  76. package/dist/esm/anyspend/react/hooks/useConnectedUserProfile.js +6 -9
  77. package/dist/esm/anyspend/react/hooks/useConnectedWalletDisplay.d.ts +0 -2
  78. package/dist/esm/anyspend/react/hooks/useConnectedWalletDisplay.js +2 -12
  79. package/dist/esm/anyspend/react/hooks/useHyperliquidTransfer.d.ts +37 -0
  80. package/dist/esm/anyspend/react/hooks/useHyperliquidTransfer.js +127 -0
  81. package/dist/esm/anyspend/react/providers/AnyspendProvider.js +1 -13
  82. package/dist/esm/anyspend/types/chain.d.ts +10 -2
  83. package/dist/esm/anyspend/types/chain.js +1 -0
  84. package/dist/esm/anyspend/utils/address.d.ts +11 -0
  85. package/dist/esm/anyspend/utils/address.js +14 -0
  86. package/dist/esm/anyspend/utils/chain.d.ts +58 -1
  87. package/dist/esm/anyspend/utils/chain.js +91 -4
  88. package/dist/esm/anyspend/utils/token.d.ts +4 -0
  89. package/dist/esm/anyspend/utils/token.js +32 -6
  90. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +2 -2
  91. package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +4 -5
  92. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +12 -57
  93. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStep.js +1 -1
  94. package/dist/esm/global-account/react/hooks/index.d.ts +0 -2
  95. package/dist/esm/global-account/react/hooks/index.js +0 -2
  96. package/dist/esm/global-account/react/hooks/useAccountWallet.js +11 -10
  97. package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +2 -2
  98. package/dist/esm/global-account/react/hooks/useAuthentication.js +63 -72
  99. package/dist/esm/global-account/react/hooks/useTWAuth.d.ts +0 -3
  100. package/dist/esm/global-account/react/hooks/useTWAuth.js +0 -8
  101. package/dist/esm/global-account/react/hooks/useTurnkeyAuth.js +24 -54
  102. package/dist/esm/global-account/react/hooks/useUserQuery.d.ts +1 -1
  103. package/dist/esm/shared/utils/payment.utils.d.ts +1 -0
  104. package/dist/esm/shared/utils/payment.utils.js +9 -1
  105. package/dist/styles/index.css +1 -1
  106. package/dist/types/anyspend/constants/index.d.ts +1 -1
  107. package/dist/types/anyspend/react/components/common/CryptoPaymentMethodDisplay.d.ts +15 -0
  108. package/dist/types/anyspend/react/hooks/index.d.ts +1 -0
  109. package/dist/types/anyspend/react/hooks/useConnectedUserProfile.d.ts +2 -1
  110. package/dist/types/anyspend/react/hooks/useConnectedWalletDisplay.d.ts +0 -2
  111. package/dist/types/anyspend/react/hooks/useHyperliquidTransfer.d.ts +37 -0
  112. package/dist/types/anyspend/types/chain.d.ts +10 -2
  113. package/dist/types/anyspend/utils/address.d.ts +11 -0
  114. package/dist/types/anyspend/utils/chain.d.ts +58 -1
  115. package/dist/types/anyspend/utils/token.d.ts +4 -0
  116. package/dist/types/global-account/react/hooks/index.d.ts +0 -2
  117. package/dist/types/global-account/react/hooks/useAuthentication.d.ts +2 -2
  118. package/dist/types/global-account/react/hooks/useTWAuth.d.ts +0 -3
  119. package/dist/types/global-account/react/hooks/useUserQuery.d.ts +1 -1
  120. package/dist/types/shared/utils/payment.utils.d.ts +1 -0
  121. package/package.json +1 -1
  122. package/src/anyspend/constants/index.ts +1 -1
  123. package/src/anyspend/react/components/AnySpend.tsx +31 -13
  124. package/src/anyspend/react/components/AnySpendCollectorClubPurchase.tsx +1 -1
  125. package/src/anyspend/react/components/AnySpendCustom.tsx +9 -29
  126. package/src/anyspend/react/components/common/CryptoPaySection.tsx +7 -30
  127. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +22 -253
  128. package/src/anyspend/react/components/common/CryptoPaymentMethodDisplay.tsx +64 -0
  129. package/src/anyspend/react/components/common/InsufficientDepositPayment.tsx +2 -2
  130. package/src/anyspend/react/components/common/OrderDetails.tsx +6 -5
  131. package/src/anyspend/react/components/common/OrderToken.tsx +5 -5
  132. package/src/anyspend/react/components/common/OrderTokenAmount.tsx +3 -3
  133. package/src/anyspend/react/components/common/OrderTokenAmountFiat.tsx +3 -3
  134. package/src/anyspend/react/components/common/OrderTokenAmountNew.tsx +6 -6
  135. package/src/anyspend/react/components/common/PaymentStripeWeb2.tsx +3 -5
  136. package/src/anyspend/react/components/common/PaymentVendorUI.tsx +26 -2
  137. package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +2 -2
  138. package/src/anyspend/react/components/webview/WebviewOnrampPayment.tsx +3 -5
  139. package/src/anyspend/react/hooks/index.ts +1 -0
  140. package/src/anyspend/react/hooks/useAnyspendFlow.ts +0 -4
  141. package/src/anyspend/react/hooks/useConnectedUserProfile.ts +7 -10
  142. package/src/anyspend/react/hooks/useConnectedWalletDisplay.ts +2 -15
  143. package/src/anyspend/react/hooks/useHyperliquidTransfer.ts +152 -0
  144. package/src/anyspend/react/providers/AnyspendProvider.tsx +7 -22
  145. package/src/anyspend/types/chain.ts +10 -1
  146. package/src/anyspend/utils/address.ts +15 -0
  147. package/src/anyspend/utils/chain.ts +115 -5
  148. package/src/anyspend/utils/token.ts +36 -7
  149. package/src/global-account/react/components/B3Provider/B3Provider.tsx +6 -2
  150. package/src/global-account/react/components/SignInWithB3/SignIn.tsx +4 -6
  151. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +22 -77
  152. package/src/global-account/react/components/SignInWithB3/steps/LoginStep.tsx +1 -1
  153. package/src/global-account/react/hooks/index.ts +0 -2
  154. package/src/global-account/react/hooks/useAccountWallet.tsx +12 -11
  155. package/src/global-account/react/hooks/useAuthentication.ts +85 -88
  156. package/src/global-account/react/hooks/useTWAuth.tsx +0 -10
  157. package/src/global-account/react/hooks/useTurnkeyAuth.ts +26 -59
  158. package/src/shared/utils/payment.utils.ts +10 -1
  159. package/dist/cjs/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.d.ts +0 -10
  160. package/dist/cjs/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.js +0 -73
  161. package/dist/cjs/global-account/react/hooks/useAuth.d.ts +0 -76
  162. package/dist/cjs/global-account/react/hooks/useAuth.js +0 -338
  163. package/dist/cjs/global-account/react/hooks/useBestTransactionPath.d.ts +0 -41
  164. package/dist/cjs/global-account/react/hooks/useBestTransactionPath.js +0 -148
  165. package/dist/esm/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.d.ts +0 -10
  166. package/dist/esm/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.js +0 -70
  167. package/dist/esm/global-account/react/hooks/useAuth.d.ts +0 -76
  168. package/dist/esm/global-account/react/hooks/useAuth.js +0 -332
  169. package/dist/esm/global-account/react/hooks/useBestTransactionPath.d.ts +0 -41
  170. package/dist/esm/global-account/react/hooks/useBestTransactionPath.js +0 -145
  171. package/dist/types/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.d.ts +0 -10
  172. package/dist/types/global-account/react/hooks/useAuth.d.ts +0 -76
  173. package/dist/types/global-account/react/hooks/useBestTransactionPath.d.ts +0 -41
  174. package/src/anyspend/react/hooks/useAutoSetActiveWalletFromWagmi.ts +0 -80
  175. package/src/global-account/react/hooks/useAuth.ts +0 -380
  176. package/src/global-account/react/hooks/useBestTransactionPath.tsx +0 -201
@@ -4,13 +4,8 @@ import { toast, useAccountWallet, WalletImage } from "@b3dotfun/sdk/global-accou
4
4
  import { cn } from "@b3dotfun/sdk/shared/utils/cn";
5
5
  import { shortenAddress } from "@b3dotfun/sdk/shared/utils/formatAddress";
6
6
  import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
7
- import { WalletCoinbase, WalletMetamask, WalletRainbow, WalletWalletConnect } from "@web3icons/react";
8
7
  import { ChevronLeft, ChevronRightCircle, Wallet, X, ZapIcon } from "lucide-react";
9
- import { useState } from "react";
10
- import { createPortal } from "react-dom";
11
- import { useSetActiveWallet, useWalletInfo } from "thirdweb/react";
12
- import { createWallet, WalletId } from "thirdweb/wallets";
13
- import { useAccount, useConnect, useDisconnect, useWalletClient } from "wagmi";
8
+ import { useConnectModal, useDisconnect, useWalletInfo } from "thirdweb/react";
14
9
  import { useConnectedWalletDisplay } from "../../hooks/useConnectedWalletDisplay";
15
10
 
16
11
  export enum CryptoPaymentMethodType {
@@ -35,128 +30,32 @@ export function CryptoPaymentMethod({
35
30
  onBack,
36
31
  onSelectPaymentMethod,
37
32
  }: CryptoPaymentMethodProps) {
38
- const { connectedEOAWallet: connectedEOAWallet, connectedSmartWallet: connectedSmartWallet } = useAccountWallet();
39
- const { connector, address } = useAccount();
40
- const { connect, connectors, isPending } = useConnect();
33
+ const { connectedEOAWallet, connectedSmartWallet } = useAccountWallet();
41
34
  const { disconnect } = useDisconnect();
42
- const { data: walletClient } = useWalletClient();
43
- const [showWalletModal, setShowWalletModal] = useState(false);
44
- const setActiveWallet = useSetActiveWallet();
35
+ const { connect: openConnectModal } = useConnectModal();
45
36
  const { data: eoaWalletInfo } = useWalletInfo(connectedEOAWallet?.id);
46
37
 
47
- const isConnected = !!connectedEOAWallet;
48
38
  const globalAddress = connectedSmartWallet?.getAccount()?.address;
49
39
 
50
40
  // Use custom hook to determine wallet display logic
51
- const { shouldShowConnectedEOA, shouldShowWagmiWallet } = useConnectedWalletDisplay(selectedPaymentMethod);
52
- console.log("shouldShowWagmiWallet :", shouldShowWagmiWallet);
41
+ const { shouldShowConnectedEOA } = useConnectedWalletDisplay(selectedPaymentMethod);
53
42
 
54
- // Map wagmi connector names to thirdweb wallet IDs
55
- const getThirdwebWalletId = (connectorName: string): WalletId | null => {
56
- const walletMap: Record<string, WalletId> = {
57
- MetaMask: "io.metamask",
58
- "Coinbase Wallet": "com.coinbase.wallet",
59
- Rainbow: "me.rainbow",
60
- WalletConnect: "walletConnect",
61
- Phantom: "app.phantom",
62
- };
63
- return walletMap[connectorName] || null;
64
- };
65
-
66
- // Create thirdweb wallet from wagmi connector
67
- const createThirdwebWalletFromConnector = async (connectorName: string) => {
68
- const walletId = getThirdwebWalletId(connectorName);
69
- if (!walletId) {
70
- console.warn(`No thirdweb wallet ID found for connector: ${connectorName}`);
71
- return null;
72
- }
73
-
74
- try {
75
- const thirdwebWallet = createWallet(walletId);
76
- // Connect the wallet to sync with the existing wagmi connection
77
- await thirdwebWallet.connect({ client });
78
- return thirdwebWallet;
79
- } catch (error) {
80
- console.error(`Failed to create thirdweb wallet for ${connectorName}:`, error);
81
- return null;
82
- }
83
- };
84
-
85
- // Define available wallet connectors
86
- const availableConnectors = connectors.filter(connector =>
87
- ["MetaMask", "WalletConnect", "Coinbase Wallet", "Rainbow", "Phantom"].includes(connector.name),
88
- );
89
-
90
- // Define wallet options with icons and info
91
- const walletOptions = [
92
- {
93
- id: "metamask",
94
- name: "MetaMask",
95
- icon: <WalletMetamask size={48} />,
96
- description: "Connect using MetaMask browser extension",
97
- connector: availableConnectors.find(c => c.name === "MetaMask"),
98
- },
99
- {
100
- id: "coinbase",
101
- name: "Coinbase Wallet",
102
- icon: <WalletCoinbase size={48} />,
103
- description: "Connect using Coinbase Wallet",
104
- connector: availableConnectors.find(c => c.name === "Coinbase Wallet"),
105
- },
106
- {
107
- id: "rainbow",
108
- name: "Rainbow",
109
- icon: <WalletRainbow size={48} />,
110
- description: "Connect using Rainbow wallet",
111
- connector: availableConnectors.find(c => c.name === "Rainbow"),
112
- },
113
- {
114
- id: "walletconnect",
115
- name: "WalletConnect",
116
- icon: <WalletWalletConnect size={48} />,
117
- description: "Connect using WalletConnect protocol",
118
- connector: availableConnectors.find(c => c.name === "WalletConnect"),
119
- },
120
- ].filter(wallet => wallet.connector); // Only show wallets that have available connectors
121
-
122
- // Reset modal state when closing
123
- const handleCloseModal = () => {
124
- setShowWalletModal(false);
125
- };
126
-
127
- // Function to request wallet permissions for specific wallet
128
- const requestWalletPermissions = async (walletConnector?: any) => {
43
+ // Handle wallet connection using thirdweb modal
44
+ const handleConnectWallet = async () => {
129
45
  try {
130
- // If a specific wallet connector is provided and it's different from current
131
- if (walletConnector && connector?.name !== walletConnector.name) {
132
- // Disconnect current and connect to the selected wallet
133
- // if (isConnected) {
134
- // disconnect();
135
- // // Small delay to ensure disconnection
136
- // await new Promise(resolve => setTimeout(resolve, 100));
137
- // }
138
- await connect({ connector: walletConnector });
139
- setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
140
- onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
141
- toast.success(`Connected to ${walletConnector.name}`);
142
- return;
46
+ // Disconnect current wallet before connecting a new one
47
+ if (connectedEOAWallet) {
48
+ await disconnect(connectedEOAWallet);
143
49
  }
144
-
145
- // If same wallet or no specific wallet, request permissions for account switching
146
- if (walletClient && "request" in walletClient) {
147
- await walletClient.request({
148
- method: "wallet_requestPermissions",
149
- params: [{ eth_accounts: {} }],
150
- });
151
- toast.success("Account selection completed");
50
+ const wallet = await openConnectModal({ client, setActive: false });
51
+ if (wallet) {
52
+ // setActiveWallet(wallet);
152
53
  setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
153
54
  onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
154
- } else {
155
- // Fallback: show modal for manual wallet selection
156
- setShowWalletModal(true);
55
+ toast.success("Wallet connected");
157
56
  }
158
57
  } catch (error) {
159
- console.error("Failed to request wallet permissions:", error);
58
+ console.error("Failed to connect wallet:", error);
160
59
  if (error && typeof error === "object" && "message" in error) {
161
60
  const errorMessage = (error as any).message.toLowerCase();
162
61
  if (
@@ -164,12 +63,10 @@ export function CryptoPaymentMethod({
164
63
  errorMessage.includes("denied") ||
165
64
  errorMessage.includes("cancelled")
166
65
  ) {
167
- toast.error("Account selection cancelled");
66
+ // User cancelled - no toast needed
168
67
  } else {
169
- toast.error("Failed to open account selection");
68
+ toast.error("Failed to connect wallet");
170
69
  }
171
- } else {
172
- toast.error("Failed to open account selection");
173
70
  }
174
71
  }
175
72
  };
@@ -236,7 +133,7 @@ export function CryptoPaymentMethod({
236
133
  {/* Payment Methods */}
237
134
  <div className="crypto-payment-methods flex flex-col gap-4">
238
135
  {/* Installed Wallets Section */}
239
- {(shouldShowConnectedEOA || shouldShowWagmiWallet || globalAddress) && (
136
+ {(shouldShowConnectedEOA || globalAddress) && (
240
137
  <div className="installed-wallets">
241
138
  <h3 className="text-as-primary/80 mb-3 text-sm font-medium">Connected wallets</h3>
242
139
  <div className="space-y-2">
@@ -247,10 +144,7 @@ export function CryptoPaymentMethod({
247
144
  onClick={() => {
248
145
  setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
249
146
  onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
250
- if (connectedEOAWallet) {
251
- setActiveWallet(connectedEOAWallet);
252
- }
253
- toast.success(`Selected ${eoaWalletInfo?.name || connector?.name || "wallet"}`);
147
+ toast.success(`Selected ${eoaWalletInfo?.name || "wallet"}`);
254
148
  }}
255
149
  className={cn(
256
150
  "crypto-payment-method-connect-wallet eoa-wallet w-full rounded-xl border p-4 text-left transition-all hover:shadow-md",
@@ -266,7 +160,7 @@ export function CryptoPaymentMethod({
266
160
  </div>
267
161
  <div className="flex flex-col">
268
162
  <span className="text-as-primary font-semibold">
269
- {eoaWalletInfo?.name || connector?.name || "Connected Wallet"}
163
+ {eoaWalletInfo?.name || "Connected Wallet"}
270
164
  </span>
271
165
  <span className="text-as-primary/60 text-sm">
272
166
  {shortenAddress(connectedEOAWallet?.getAccount()?.address || "")}
@@ -280,62 +174,9 @@ export function CryptoPaymentMethod({
280
174
  <button
281
175
  onClick={e => {
282
176
  e.stopPropagation();
283
- disconnect();
284
- toast.success("Wallet disconnected");
285
- if (selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
286
- setSelectedPaymentMethod(CryptoPaymentMethodType.NONE);
177
+ if (connectedEOAWallet) {
178
+ disconnect(connectedEOAWallet);
287
179
  }
288
- }}
289
- className="text-as-primary/60 hover:text-as-primary/80 rounded-lg p-1.5 transition-colors"
290
- >
291
- <X className="h-4 w-4" />
292
- </button>
293
- </div>
294
- </div>
295
- </button>
296
- )}
297
-
298
- {shouldShowWagmiWallet && (
299
- <button
300
- onClick={async () => {
301
- setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
302
- onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
303
-
304
- // Create thirdweb wallet from wagmi connector
305
- if (connector?.name) {
306
- const thirdwebWallet = await createThirdwebWalletFromConnector(connector.name);
307
- if (thirdwebWallet) {
308
- setActiveWallet(thirdwebWallet);
309
- }
310
- }
311
-
312
- toast.success(`Selected ${connector?.name || "wallet"}`);
313
- }}
314
- className={cn(
315
- "crypto-payment-method-connect-wallet wagmi-wallet w-full rounded-xl border p-4 text-left transition-all hover:shadow-md",
316
- selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET
317
- ? "connected-wallet border-as-brand bg-as-brand/5"
318
- : "border-as-border-secondary bg-as-surface-primary hover:border-as-secondary/80",
319
- )}
320
- >
321
- <div className="flex items-center justify-between">
322
- <div className="flex items-center gap-3">
323
- <div className="wallet-icon flex h-10 w-10 items-center justify-center rounded-full bg-blue-100">
324
- <Wallet className="h-5 w-5 text-blue-600" />
325
- </div>
326
- <div className="flex flex-col">
327
- <span className="text-as-primary font-semibold">{connector?.name || "Connected Wallet"}</span>
328
- <span className="text-as-primary/60 text-sm">{shortenAddress(address || "")}</span>
329
- </div>
330
- </div>
331
- <div className="flex items-center gap-2">
332
- {selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET && (
333
- <div className="h-2 w-2 rounded-full bg-green-500"></div>
334
- )}
335
- <button
336
- onClick={e => {
337
- e.stopPropagation();
338
- disconnect();
339
180
  toast.success("Wallet disconnected");
340
181
  if (selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
341
182
  setSelectedPaymentMethod(CryptoPaymentMethodType.NONE);
@@ -398,10 +239,7 @@ export function CryptoPaymentMethod({
398
239
  <div className="space-y-3">
399
240
  {/* Connect Wallet Section */}
400
241
  <button
401
- onClick={() => {
402
- // Always show wallet selection modal first
403
- setShowWalletModal(true);
404
- }}
242
+ onClick={handleConnectWallet}
405
243
  className="crypto-payment-method-connect-wallet bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md"
406
244
  >
407
245
  <div className="flex items-center gap-3">
@@ -438,75 +276,6 @@ export function CryptoPaymentMethod({
438
276
  </div>
439
277
  </div>
440
278
  </div>
441
-
442
- {/* Wallet Connection Modal */}
443
- {showWalletModal &&
444
- createPortal(
445
- <div className="wallet-connection-modal pointer-events-auto fixed inset-0 z-[9999] flex items-center justify-center bg-black/50">
446
- <div className="max-h-[80vh] w-[400px] max-w-[90vw] overflow-auto rounded-xl bg-white p-6 dark:bg-gray-900">
447
- <div className="mb-4 flex items-center justify-between">
448
- <h3 className="text-lg font-semibold text-gray-900 dark:text-white">
449
- {isConnected ? "Switch wallet or account" : "Choose wallet to connect"}
450
- </h3>
451
- <button
452
- onClick={handleCloseModal}
453
- className="text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200"
454
- >
455
- <X className="h-5 w-5" />
456
- </button>
457
- </div>
458
-
459
- <div className="space-y-4">
460
- {/* Custom wallet options */}
461
- <div className="space-y-3">
462
- {walletOptions.map(walletOption => {
463
- const isCurrentWallet = isConnected && connector?.name === walletOption.connector?.name;
464
-
465
- return (
466
- <button
467
- key={walletOption.id}
468
- onClick={async () => {
469
- handleCloseModal();
470
- await requestWalletPermissions(walletOption.connector);
471
- }}
472
- disabled={isPending}
473
- className={`wallet-option w-full rounded-xl border p-4 text-left transition-all hover:shadow-md disabled:opacity-50 ${
474
- isCurrentWallet
475
- ? "wallet-option--active border-blue-500 bg-blue-50 dark:bg-blue-900/20"
476
- : "border-gray-200 bg-white hover:border-gray-300 dark:border-gray-600 dark:bg-gray-800 dark:hover:border-gray-500"
477
- }`}
478
- >
479
- <div className="flex items-center justify-between">
480
- <div className="flex items-center gap-3">
481
- {walletOption.icon}
482
-
483
- <div>
484
- <div className="wallet-option-name flex items-center gap-2">
485
- <div className="text-sm font-semibold text-gray-900 dark:text-white">
486
- {walletOption.name}
487
- </div>
488
- {isCurrentWallet && (
489
- <span className="rounded-full bg-blue-100 px-2 py-0.5 text-xs font-medium text-blue-700 dark:bg-blue-800 dark:text-blue-200">
490
- Connected
491
- </span>
492
- )}
493
- </div>
494
- <div className="text-xs text-gray-500 dark:text-gray-400">
495
- {isCurrentWallet ? "Switch account or reconnect" : walletOption.description}
496
- </div>
497
- </div>
498
- </div>
499
- <ChevronRightCircle className="h-5 w-5 text-gray-400" />
500
- </div>
501
- </button>
502
- );
503
- })}
504
- </div>
505
- </div>
506
- </div>
507
- </div>,
508
- typeof window !== "undefined" ? document.getElementById("b3-root") || document.body : document.body,
509
- )}
510
279
  </div>
511
280
  );
512
281
  }
@@ -0,0 +1,64 @@
1
+ import { formatUsername } from "@b3dotfun/sdk/shared/utils";
2
+ import { shortenAddress } from "@b3dotfun/sdk/shared/utils/formatAddress";
3
+ import { ChevronRight } from "lucide-react";
4
+ import { CryptoPaymentMethodType } from "./CryptoPaymentMethod";
5
+
6
+ interface CryptoPaymentMethodDisplayProps {
7
+ paymentMethod: CryptoPaymentMethodType;
8
+ connectedAddress?: string | null;
9
+ connectedName?: string | null;
10
+ }
11
+
12
+ /**
13
+ * Displays the selected crypto payment method with appropriate label
14
+ * - CONNECT_WALLET: Shows wallet address/name or "Connect wallet"
15
+ * - GLOBAL_WALLET: Shows "Global Account"
16
+ * - TRANSFER_CRYPTO: Shows "Transfer crypto"
17
+ * - NONE: Shows "Select payment method"
18
+ */
19
+ export function CryptoPaymentMethodDisplay({
20
+ paymentMethod,
21
+ connectedAddress,
22
+ connectedName,
23
+ }: CryptoPaymentMethodDisplayProps) {
24
+ if (paymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
25
+ return (
26
+ <>
27
+ {connectedAddress ? (
28
+ <span className="text-as-tertiarry whitespace-nowrap">
29
+ {connectedName ? formatUsername(connectedName) : shortenAddress(connectedAddress)}
30
+ </span>
31
+ ) : (
32
+ <span className="whitespace-nowrap">Connect wallet</span>
33
+ )}
34
+ <ChevronRight className="h-4 w-4 shrink-0" />
35
+ </>
36
+ );
37
+ }
38
+
39
+ if (paymentMethod === CryptoPaymentMethodType.GLOBAL_WALLET) {
40
+ return (
41
+ <>
42
+ <span className="whitespace-nowrap">Global Account</span>
43
+ <ChevronRight className="h-4 w-4 shrink-0" />
44
+ </>
45
+ );
46
+ }
47
+
48
+ if (paymentMethod === CryptoPaymentMethodType.TRANSFER_CRYPTO) {
49
+ return (
50
+ <>
51
+ <span className="whitespace-nowrap">Transfer crypto</span>
52
+ <ChevronRight className="h-4 w-4 shrink-0" />
53
+ </>
54
+ );
55
+ }
56
+
57
+ // NONE or any other case
58
+ return (
59
+ <>
60
+ <span className="whitespace-nowrap">Select payment method</span>
61
+ <ChevronRight className="h-4 w-4 shrink-0" />
62
+ </>
63
+ );
64
+ }
@@ -4,8 +4,8 @@ import {
4
4
  ALL_CHAINS,
5
5
  getChainName,
6
6
  getPaymentUrl,
7
- RELAY_ETH_ADDRESS,
8
7
  RELAY_SOLANA_MAINNET_CHAIN_ID,
8
+ ZERO_ADDRESS,
9
9
  } from "@b3dotfun/sdk/anyspend";
10
10
  import { components } from "@b3dotfun/sdk/anyspend/types/api";
11
11
  import { Badge, CopyToClipboard, ShinyButton, TextLoop } from "@b3dotfun/sdk/global-account/react";
@@ -121,7 +121,7 @@ export function InsufficientDepositPayment({
121
121
  value={getPaymentUrl(
122
122
  order.globalAddress,
123
123
  BigInt(depositDeficit),
124
- order.srcTokenAddress === RELAY_ETH_ADDRESS ? srcToken?.symbol || "ETH" : order.srcTokenAddress,
124
+ order.srcTokenAddress === ZERO_ADDRESS ? srcToken?.symbol || "ETH" : order.srcTokenAddress,
125
125
  order.srcChain,
126
126
  srcToken?.decimals,
127
127
  )}
@@ -8,8 +8,8 @@ import {
8
8
  getPaymentUrl,
9
9
  getStatusDisplay,
10
10
  isNativeToken,
11
- RELAY_ETH_ADDRESS,
12
11
  RELAY_SOLANA_MAINNET_CHAIN_ID,
12
+ ZERO_ADDRESS,
13
13
  } from "@b3dotfun/sdk/anyspend";
14
14
  import { components } from "@b3dotfun/sdk/anyspend/types/api";
15
15
  import {
@@ -327,16 +327,17 @@ export const OrderDetails = memo(function OrderDetails({
327
327
  // Main payment handler that triggers chain switch and payment
328
328
  const handlePayment = useCallback(async () => {
329
329
  console.log("Initiating payment process. Target chain:", order.srcChain, "Current chain:", walletClient?.chain?.id);
330
+ const amountToSend = depositDeficit > BigInt(0) ? depositDeficit.toString() : order.srcAmount;
330
331
  if (order.srcChain === RELAY_SOLANA_MAINNET_CHAIN_ID) {
331
- // Use the existing depositDeficit calculation to determine amount to send
332
- const amountToSend = depositDeficit > BigInt(0) ? depositDeficit.toString() : order.srcAmount;
332
+ // Solana payment flow
333
333
  await initiatePhantomTransfer({
334
334
  amountLamports: amountToSend,
335
335
  tokenAddress: order.srcTokenAddress,
336
336
  recipientAddress: order.globalAddress,
337
337
  });
338
338
  } else {
339
- // Use unified payment process for both EOA and AA wallets
339
+ // EVM payment flow (EOA and AA wallets)
340
+ // Note: Hyperliquid is NOT supported as source chain, only as destination chain
340
341
  await handleUnifiedPaymentProcess();
341
342
  }
342
343
  }, [order, walletClient?.chain?.id, depositDeficit, handleUnifiedPaymentProcess, initiatePhantomTransfer]);
@@ -1039,7 +1040,7 @@ export const OrderDetails = memo(function OrderDetails({
1039
1040
  value={getPaymentUrl(
1040
1041
  order.globalAddress,
1041
1042
  BigInt(order.srcAmount),
1042
- order.srcTokenAddress === RELAY_ETH_ADDRESS ? srcToken?.symbol || "ETH" : order.srcTokenAddress,
1043
+ order.srcTokenAddress === ZERO_ADDRESS ? srcToken?.symbol || "ETH" : order.srcTokenAddress,
1043
1044
  order.srcChain,
1044
1045
  srcToken?.decimals,
1045
1046
  )}
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
 
3
- import { ALL_CHAINS, RELAY_ETH_ADDRESS, RELAY_SOLANA_MAINNET_CHAIN_ID } from "@b3dotfun/sdk/anyspend";
3
+ import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID, ZERO_ADDRESS, getAvailableChainIds } from "@b3dotfun/sdk/anyspend";
4
+ import { components } from "@b3dotfun/sdk/anyspend/types/api";
4
5
  import { Button, useAccountWallet, useTokenBalancesByChain } from "@b3dotfun/sdk/global-account/react";
5
6
  import { cn } from "@b3dotfun/sdk/shared/utils";
6
7
  import { formatTokenAmount } from "@b3dotfun/sdk/shared/utils/number";
@@ -9,7 +10,6 @@ import { TokenSelector } from "@relayprotocol/relay-kit-ui";
9
10
  import { CheckCircle2, ChevronsUpDown } from "lucide-react";
10
11
  import { useMemo } from "react";
11
12
  import { ChainTokenIcon } from "./ChainTokenIcon";
12
- import { components } from "@b3dotfun/sdk/anyspend/types/api";
13
13
 
14
14
  export function OrderToken({
15
15
  context,
@@ -44,7 +44,7 @@ export function OrderToken({
44
44
  // Get balance for the selected token
45
45
  let balance: bigint | null = null;
46
46
  if (token && wallet?.address) {
47
- if (token.address === RELAY_ETH_ADDRESS) {
47
+ if (token.address === ZERO_ADDRESS) {
48
48
  // Native token
49
49
  const nativeToken = nativeTokens?.find(t => t.chainId === chainId);
50
50
  balance = nativeToken?.value ?? null;
@@ -69,12 +69,12 @@ export function OrderToken({
69
69
  return (
70
70
  <TokenSelector
71
71
  address={address}
72
- chainIdsFilter={Object.values(ALL_CHAINS).map(chain => chain.id)}
72
+ chainIdsFilter={getAvailableChainIds(context)}
73
73
  context={context}
74
74
  fromChainWalletVMSupported={true}
75
75
  isValidAddress={true}
76
76
  key={undefined}
77
- lockedChainIds={Object.values(ALL_CHAINS).map(chain => chain.id)}
77
+ lockedChainIds={getAvailableChainIds(context)}
78
78
  multiWalletSupportEnabled={true}
79
79
  onAnalyticEvent={undefined}
80
80
  popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
@@ -5,7 +5,7 @@ import { useEffect, useRef } from "react";
5
5
  import { NumericFormat } from "react-number-format";
6
6
  import { formatUnits } from "viem";
7
7
 
8
- import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID } from "@b3dotfun/sdk/anyspend";
8
+ import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID, getAvailableChainIds } from "@b3dotfun/sdk/anyspend";
9
9
  import { components } from "@b3dotfun/sdk/anyspend/types/api";
10
10
  import { getNativeRequired } from "@b3dotfun/sdk/anyspend/utils/chain";
11
11
  import { isNativeToken } from "@b3dotfun/sdk/anyspend/utils/token";
@@ -163,12 +163,12 @@ export function OrderTokenAmount({
163
163
  {!hideTokenSelect && (
164
164
  <TokenSelector
165
165
  address={address}
166
- chainIdsFilter={Object.values(ALL_CHAINS).map(chain => chain.id)}
166
+ chainIdsFilter={getAvailableChainIds(context)}
167
167
  context={context}
168
168
  fromChainWalletVMSupported={true}
169
169
  isValidAddress={true}
170
170
  key={`selector-${context}-${token.address}-${chainId}`}
171
- lockedChainIds={Object.values(ALL_CHAINS).map(chain => chain.id)}
171
+ lockedChainIds={getAvailableChainIds(context)}
172
172
  multiWalletSupportEnabled={true}
173
173
  onAnalyticEvent={undefined}
174
174
  popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
@@ -4,7 +4,7 @@ import { ChevronsUpDown } from "lucide-react";
4
4
  import { useEffect, useRef } from "react";
5
5
  import { NumericFormat } from "react-number-format";
6
6
 
7
- import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID } from "@b3dotfun/sdk/anyspend";
7
+ import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID, getAvailableChainIds } from "@b3dotfun/sdk/anyspend";
8
8
  import { components } from "@b3dotfun/sdk/anyspend/types/api";
9
9
  import { cn } from "@b3dotfun/sdk/shared/utils";
10
10
  import { TokenSelector } from "@relayprotocol/relay-kit-ui";
@@ -79,12 +79,12 @@ export function OrderTokenAmountFiat({
79
79
  return (
80
80
  <TokenSelector
81
81
  address={address}
82
- chainIdsFilter={Object.values(ALL_CHAINS).map(chain => chain.id)}
82
+ chainIdsFilter={getAvailableChainIds(context)}
83
83
  context={context}
84
84
  fromChainWalletVMSupported={true}
85
85
  isValidAddress={true}
86
86
  key={`selector-${context}-${token.address}-${chainId}`}
87
- lockedChainIds={Object.values(ALL_CHAINS).map(chain => chain.id)}
87
+ lockedChainIds={getAvailableChainIds(context)}
88
88
  multiWalletSupportEnabled={true}
89
89
  onAnalyticEvent={undefined}
90
90
  popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
@@ -4,12 +4,12 @@ import { ChevronsUpDown } from "lucide-react";
4
4
  import { useEffect, useRef } from "react";
5
5
  import { NumericFormat } from "react-number-format";
6
6
 
7
- import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID } from "@b3dotfun/sdk/anyspend";
7
+ import { ALL_CHAINS, RELAY_SOLANA_MAINNET_CHAIN_ID, getAvailableChainIds } from "@b3dotfun/sdk/anyspend";
8
+ import { components } from "@b3dotfun/sdk/anyspend/types/api";
8
9
  import { Button } from "@b3dotfun/sdk/global-account/react";
9
10
  import { cn } from "@b3dotfun/sdk/shared/utils";
10
11
  import { TokenSelector } from "@relayprotocol/relay-kit-ui";
11
12
  import { ChainTokenIcon } from "./ChainTokenIcon";
12
- import { components } from "@b3dotfun/sdk/anyspend/types/api";
13
13
 
14
14
  export function OrderTokenAmountFiat({
15
15
  disabled,
@@ -118,12 +118,12 @@ export function OrderTokenAmountFiat({
118
118
  {!hideTokenSelect && (
119
119
  <TokenSelector
120
120
  address={address}
121
- chainIdsFilter={Object.values(ALL_CHAINS).map(chain => chain.id)}
121
+ chainIdsFilter={getAvailableChainIds(context)}
122
122
  context={context}
123
123
  fromChainWalletVMSupported={true}
124
124
  isValidAddress={true}
125
125
  key={`selector-${context}-${token.address}-${chainId}`}
126
- lockedChainIds={Object.values(ALL_CHAINS).map(chain => chain.id)}
126
+ lockedChainIds={getAvailableChainIds(context)}
127
127
  multiWalletSupportEnabled={true}
128
128
  onAnalyticEvent={undefined}
129
129
  popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
@@ -173,12 +173,12 @@ export function OrderTokenAmountFiat({
173
173
  {!hideTokenSelect && (
174
174
  <TokenSelector
175
175
  address={address}
176
- chainIdsFilter={Object.values(ALL_CHAINS).map(chain => chain.id)}
176
+ chainIdsFilter={getAvailableChainIds(context)}
177
177
  context={context}
178
178
  fromChainWalletVMSupported={true}
179
179
  isValidAddress={true}
180
180
  key={`selector-${context}-${token.address}-${chainId}`}
181
- lockedChainIds={Object.values(ALL_CHAINS).map(chain => chain.id)}
181
+ lockedChainIds={getAvailableChainIds(context)}
182
182
  multiWalletSupportEnabled={true}
183
183
  onAnalyticEvent={undefined}
184
184
  popularChainIds={[1, 8453, RELAY_SOLANA_MAINNET_CHAIN_ID]}
@@ -1,19 +1,17 @@
1
- import { STRIPE_CONFIG } from "@b3dotfun/sdk/anyspend/constants";
1
+ import { getStripePromise } from "@b3dotfun/sdk/shared/utils/payment.utils";
2
2
  import { OrderDetailsCollapsible, useStripeClientSecret } from "@b3dotfun/sdk/anyspend/react";
3
3
  import { components } from "@b3dotfun/sdk/anyspend/types/api";
4
4
  import { ShinyButton, useB3, useModalStore, useProfile } from "@b3dotfun/sdk/global-account/react";
5
5
  import { formatTokenAmount } from "@b3dotfun/sdk/shared/utils/number";
6
6
  import { formatStripeAmount } from "@b3dotfun/sdk/shared/utils/payment.utils";
7
7
  import { AddressElement, Elements, PaymentElement, useElements, useStripe } from "@stripe/react-stripe-js";
8
- import { loadStripe, PaymentIntentResult, StripePaymentElementOptions } from "@stripe/stripe-js";
8
+ import { PaymentIntentResult, StripePaymentElementOptions } from "@stripe/stripe-js";
9
9
  import { X } from "lucide-react";
10
10
  import { useEffect, useState } from "react";
11
11
  import { AnySpendFingerprintWrapper, getFingerprintConfig } from "../AnySpendFingerprintWrapper";
12
12
  import HowItWorks from "./HowItWorks";
13
13
  import PaymentMethodIcons from "./PaymentMethodIcons";
14
14
 
15
- const stripePromise = loadStripe(STRIPE_CONFIG.publishableKey);
16
-
17
15
  interface PaymentStripeWeb2Props {
18
16
  order: components["schemas"]["Order"];
19
17
  stripePaymentIntentId: string;
@@ -38,7 +36,7 @@ export default function PaymentStripeWeb2({ order, stripePaymentIntentId, onPaym
38
36
  return (
39
37
  <AnySpendFingerprintWrapper fingerprint={fingerprintConfig}>
40
38
  <Elements
41
- stripe={stripePromise}
39
+ stripe={getStripePromise()}
42
40
  options={{
43
41
  clientSecret: clientSecret || undefined,
44
42
  appearance: { theme: theme === "light" ? "stripe" : "night" },