Skip to content

Commit 0c4e326

Browse files
gregfromstlclaude
andcommitted
[SDK] Update enableCard prop to paymentMethods array
Replace boolean enableCard prop with paymentMethods array that accepts ["crypto", "card"] literals. This provides more flexibility for controlling available payment options in BuyWidget, CheckoutWidget, and TransactionWidget. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent a6b3d14 commit 0c4e326

File tree

8 files changed

+29
-27
lines changed

8 files changed

+29
-27
lines changed

.changeset/dull-breads-start.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
"thirdweb": patch
33
---
44

5-
Adds enableCard prop to BuyWidget, CheckoutWidget, and TransactionWidget
5+
Adds paymentMethods prop to BuyWidget, CheckoutWidget, and TransactionWidget to control available payment options. Accepts an array of "crypto" and/or "card" values.

packages/thirdweb/src/react/web/ui/Bridge/BridgeOrchestrator.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,10 @@ export interface BridgeOrchestratorProps {
115115
presetOptions: [number, number, number] | undefined;
116116

117117
/**
118-
* Whether to enable the "Buy with card" (fiat payment) option
118+
* Allowed payment methods
119+
* @default ["crypto", "card"]
119120
*/
120-
enableCard?: boolean;
121+
paymentMethods?: ("crypto" | "card")[];
121122
}
122123

123124
export function BridgeOrchestrator({
@@ -132,7 +133,7 @@ export function BridgeOrchestrator({
132133
purchaseData,
133134
paymentLinkId,
134135
presetOptions,
135-
enableCard,
136+
paymentMethods = ["crypto", "card"],
136137
}: BridgeOrchestratorProps) {
137138
// Initialize adapters
138139
const adapters = useMemo(
@@ -277,7 +278,7 @@ export function BridgeOrchestrator({
277278
onError={handleError}
278279
onPaymentMethodSelected={handlePaymentMethodSelected}
279280
receiverAddress={state.context.receiverAddress}
280-
enableCard={enableCard}
281+
paymentMethods={paymentMethods}
281282
/>
282283
)}
283284

packages/thirdweb/src/react/web/ui/Bridge/BuyWidget.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,10 @@ export type BuyWidgetProps = {
162162
paymentLinkId?: string;
163163

164164
/**
165-
* Whether to enable the "Buy with card" (fiat payment) option.
166-
* @default true
165+
* Allowed payment methods
166+
* @default ["crypto", "card"]
167167
*/
168-
enableCard?: boolean;
168+
paymentMethods?: ("crypto" | "card")[];
169169
};
170170

171171
// Enhanced UIOptions to handle unsupported token state
@@ -388,7 +388,7 @@ export function BuyWidget(props: BuyWidgetProps) {
388388
purchaseData={props.purchaseData}
389389
receiverAddress={undefined}
390390
uiOptions={bridgeDataQuery.data.data}
391-
enableCard={props.enableCard}
391+
paymentMethods={props.paymentMethods}
392392
/>
393393
);
394394
}

packages/thirdweb/src/react/web/ui/Bridge/CheckoutWidget.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,10 @@ export type CheckoutWidgetProps = {
168168
paymentLinkId?: string;
169169

170170
/**
171-
* Whether to enable the "Buy with card" (fiat payment) option.
172-
* @default true
171+
* Allowed payment methods
172+
* @default ["crypto", "card"]
173173
*/
174-
enableCard?: boolean;
174+
paymentMethods?: ("crypto" | "card")[];
175175
};
176176

177177
// Enhanced UIOptions to handle unsupported token state
@@ -351,7 +351,7 @@ export function CheckoutWidget(props: CheckoutWidgetProps) {
351351
purchaseData={props.purchaseData}
352352
receiverAddress={props.seller}
353353
uiOptions={bridgeDataQuery.data.data}
354-
enableCard={props.enableCard}
354+
paymentMethods={props.paymentMethods}
355355
/>
356356
);
357357
}

packages/thirdweb/src/react/web/ui/Bridge/TransactionWidget.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,10 @@ export type TransactionWidgetProps = {
171171
paymentLinkId?: string;
172172

173173
/**
174-
* Whether to enable the "Buy with card" (fiat payment) option.
175-
* @default true
174+
* Allowed payment methods
175+
* @default ["crypto", "card"]
176176
*/
177-
enableCard?: boolean;
177+
paymentMethods?: ("crypto" | "card")[];
178178
};
179179

180180
// Enhanced UIOptions to handle unsupported token state
@@ -410,7 +410,7 @@ export function TransactionWidget(props: TransactionWidgetProps) {
410410
purchaseData={props.purchaseData}
411411
receiverAddress={undefined}
412412
uiOptions={bridgeDataQuery.data.data}
413-
enableCard={props.enableCard}
413+
paymentMethods={props.paymentMethods}
414414
/>
415415
);
416416
}

packages/thirdweb/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,10 @@ export interface PaymentSelectionProps {
7373
includeDestinationToken?: boolean;
7474

7575
/**
76-
* Whether to enable the "Buy with card" (fiat payment) option
76+
* Allowed payment methods
77+
* @default ["crypto", "card"]
7778
*/
78-
enableCard?: boolean;
79+
paymentMethods?: ("crypto" | "card")[];
7980
}
8081

8182
type Step =
@@ -95,7 +96,7 @@ export function PaymentSelection({
9596
connectOptions,
9697
connectLocale,
9798
includeDestinationToken,
98-
enableCard,
99+
paymentMethods = ["crypto", "card"],
99100
}: PaymentSelectionProps) {
100101
const connectedWallets = useConnectedWallets();
101102
const activeWallet = useActiveWallet();
@@ -254,7 +255,7 @@ export function PaymentSelection({
254255
onConnectWallet={handleConnectWallet}
255256
onFiatSelected={handleFiatSelected}
256257
onWalletSelected={handleWalletSelected}
257-
enableCard={enableCard}
258+
paymentMethods={paymentMethods}
258259
/>
259260
)}
260261

packages/thirdweb/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ interface WalletFiatSelectionProps {
2121
onWalletSelected: (wallet: Wallet) => void;
2222
onFiatSelected: () => void;
2323
onConnectWallet: () => void;
24-
enableCard?: boolean;
24+
paymentMethods?: ("crypto" | "card")[];
2525
}
2626

2727
export function WalletFiatSelection({
@@ -30,7 +30,7 @@ export function WalletFiatSelection({
3030
onWalletSelected,
3131
onFiatSelected,
3232
onConnectWallet,
33-
enableCard = true,
33+
paymentMethods = ["crypto", "card"],
3434
}: WalletFiatSelectionProps) {
3535
const theme = useCustomTheme();
3636

@@ -128,7 +128,7 @@ export function WalletFiatSelection({
128128
</Container>
129129
</Button>
130130

131-
{enableCard && (
131+
{paymentMethods.includes("card") && (
132132
<>
133133
<Spacer y="md" />
134134

packages/thirdweb/src/react/web/ui/PayEmbed.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,7 @@ export function PayEmbed(props: PayEmbedProps) {
359359
onSuccess={() => props.payOptions?.onPurchaseSuccess?.()}
360360
theme={theme}
361361
title={metadata?.name || "Buy"}
362-
enableCard={props.payOptions?.buyWithFiat === false ? false : true}
362+
paymentMethods={props.payOptions?.buyWithFiat === false ? ["crypto"] : ["crypto", "card"]}
363363
tokenAddress={
364364
props.payOptions.prefillBuy.token?.address as Address | undefined
365365
}
@@ -378,7 +378,7 @@ export function PayEmbed(props: PayEmbedProps) {
378378
name={metadata?.name || "Checkout"}
379379
onSuccess={() => props.payOptions?.onPurchaseSuccess?.()}
380380
seller={props.payOptions.paymentInfo.sellerAddress as Address}
381-
enableCard={props.payOptions?.buyWithFiat === false ? false : true}
381+
paymentMethods={props.payOptions?.buyWithFiat === false ? ["crypto"] : ["crypto", "card"]}
382382
theme={theme}
383383
tokenAddress={
384384
props.payOptions.paymentInfo.token?.address as Address | undefined
@@ -395,7 +395,7 @@ export function PayEmbed(props: PayEmbedProps) {
395395
image={metadata?.image}
396396
onSuccess={() => props.payOptions?.onPurchaseSuccess?.()}
397397
theme={theme}
398-
enableCard={props.payOptions?.buyWithFiat === false ? false : true}
398+
paymentMethods={props.payOptions?.buyWithFiat === false ? ["crypto"] : ["crypto", "card"]}
399399
title={metadata?.name}
400400
transaction={props.payOptions.transaction}
401401
/>

0 commit comments

Comments
 (0)