thirdweb 5.104.1 → 5.104.2-nightly-d85ee5fac30b739b69202184eb2e62660790979b-20250625000421

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 (107) hide show
  1. package/dist/cjs/bridge/Buy.js +0 -2
  2. package/dist/cjs/bridge/Buy.js.map +1 -1
  3. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js +3 -3
  4. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  5. package/dist/cjs/react/web/ui/Bridge/BuyWidget.js +14 -4
  6. package/dist/cjs/react/web/ui/Bridge/BuyWidget.js.map +1 -1
  7. package/dist/cjs/react/web/ui/Bridge/CheckoutWidget.js +14 -4
  8. package/dist/cjs/react/web/ui/Bridge/CheckoutWidget.js.map +1 -1
  9. package/dist/cjs/react/web/ui/Bridge/ErrorBanner.js +13 -1
  10. package/dist/cjs/react/web/ui/Bridge/ErrorBanner.js.map +1 -1
  11. package/dist/cjs/react/web/ui/Bridge/QuoteLoader.js +20 -1
  12. package/dist/cjs/react/web/ui/Bridge/QuoteLoader.js.map +1 -1
  13. package/dist/cjs/react/web/ui/Bridge/TransactionWidget.js +14 -4
  14. package/dist/cjs/react/web/ui/Bridge/TransactionWidget.js.map +1 -1
  15. package/dist/cjs/react/web/ui/Bridge/UnsupportedTokenScreen.js +14 -1
  16. package/dist/cjs/react/web/ui/Bridge/UnsupportedTokenScreen.js.map +1 -1
  17. package/dist/cjs/react/web/ui/Bridge/payment-details/PaymentDetails.js +27 -0
  18. package/dist/cjs/react/web/ui/Bridge/payment-details/PaymentDetails.js.map +1 -1
  19. package/dist/cjs/react/web/ui/Bridge/payment-selection/PaymentSelection.js +13 -0
  20. package/dist/cjs/react/web/ui/Bridge/payment-selection/PaymentSelection.js.map +1 -1
  21. package/dist/cjs/react/web/ui/Bridge/payment-success/SuccessScreen.js +18 -1
  22. package/dist/cjs/react/web/ui/Bridge/payment-success/SuccessScreen.js.map +1 -1
  23. package/dist/cjs/react/web/ui/PayEmbed.js +4 -4
  24. package/dist/cjs/react/web/ui/PayEmbed.js.map +1 -1
  25. package/dist/cjs/stories/Bridge/ErrorBanner.stories.js +2 -1
  26. package/dist/cjs/stories/Bridge/ErrorBanner.stories.js.map +1 -1
  27. package/dist/cjs/stories/Bridge/SuccessScreen.stories.js +7 -0
  28. package/dist/cjs/stories/Bridge/SuccessScreen.stories.js.map +1 -1
  29. package/dist/cjs/stories/Bridge/UnsupportedTokenScreen.stories.js +6 -0
  30. package/dist/cjs/stories/Bridge/UnsupportedTokenScreen.stories.js.map +1 -1
  31. package/dist/cjs/version.js +1 -1
  32. package/dist/cjs/version.js.map +1 -1
  33. package/dist/esm/bridge/Buy.js +0 -2
  34. package/dist/esm/bridge/Buy.js.map +1 -1
  35. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js +3 -3
  36. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  37. package/dist/esm/react/web/ui/Bridge/BuyWidget.js +14 -4
  38. package/dist/esm/react/web/ui/Bridge/BuyWidget.js.map +1 -1
  39. package/dist/esm/react/web/ui/Bridge/CheckoutWidget.js +14 -4
  40. package/dist/esm/react/web/ui/Bridge/CheckoutWidget.js.map +1 -1
  41. package/dist/esm/react/web/ui/Bridge/ErrorBanner.js +13 -1
  42. package/dist/esm/react/web/ui/Bridge/ErrorBanner.js.map +1 -1
  43. package/dist/esm/react/web/ui/Bridge/QuoteLoader.js +20 -1
  44. package/dist/esm/react/web/ui/Bridge/QuoteLoader.js.map +1 -1
  45. package/dist/esm/react/web/ui/Bridge/TransactionWidget.js +14 -4
  46. package/dist/esm/react/web/ui/Bridge/TransactionWidget.js.map +1 -1
  47. package/dist/esm/react/web/ui/Bridge/UnsupportedTokenScreen.js +14 -1
  48. package/dist/esm/react/web/ui/Bridge/UnsupportedTokenScreen.js.map +1 -1
  49. package/dist/esm/react/web/ui/Bridge/payment-details/PaymentDetails.js +27 -0
  50. package/dist/esm/react/web/ui/Bridge/payment-details/PaymentDetails.js.map +1 -1
  51. package/dist/esm/react/web/ui/Bridge/payment-selection/PaymentSelection.js +13 -0
  52. package/dist/esm/react/web/ui/Bridge/payment-selection/PaymentSelection.js.map +1 -1
  53. package/dist/esm/react/web/ui/Bridge/payment-success/SuccessScreen.js +18 -1
  54. package/dist/esm/react/web/ui/Bridge/payment-success/SuccessScreen.js.map +1 -1
  55. package/dist/esm/react/web/ui/PayEmbed.js +4 -4
  56. package/dist/esm/react/web/ui/PayEmbed.js.map +1 -1
  57. package/dist/esm/stories/Bridge/ErrorBanner.stories.js +2 -1
  58. package/dist/esm/stories/Bridge/ErrorBanner.stories.js.map +1 -1
  59. package/dist/esm/stories/Bridge/SuccessScreen.stories.js +8 -1
  60. package/dist/esm/stories/Bridge/SuccessScreen.stories.js.map +1 -1
  61. package/dist/esm/stories/Bridge/UnsupportedTokenScreen.stories.js +6 -0
  62. package/dist/esm/stories/Bridge/UnsupportedTokenScreen.stories.js.map +1 -1
  63. package/dist/esm/version.js +1 -1
  64. package/dist/esm/version.js.map +1 -1
  65. package/dist/types/bridge/Buy.d.ts +0 -2
  66. package/dist/types/bridge/Buy.d.ts.map +1 -1
  67. package/dist/types/react/web/ui/Bridge/BridgeOrchestrator.d.ts.map +1 -1
  68. package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts +1 -3
  69. package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts.map +1 -1
  70. package/dist/types/react/web/ui/Bridge/CheckoutWidget.d.ts +1 -3
  71. package/dist/types/react/web/ui/Bridge/CheckoutWidget.d.ts.map +1 -1
  72. package/dist/types/react/web/ui/Bridge/ErrorBanner.d.ts +3 -1
  73. package/dist/types/react/web/ui/Bridge/ErrorBanner.d.ts.map +1 -1
  74. package/dist/types/react/web/ui/Bridge/QuoteLoader.d.ts +2 -1
  75. package/dist/types/react/web/ui/Bridge/QuoteLoader.d.ts.map +1 -1
  76. package/dist/types/react/web/ui/Bridge/TransactionWidget.d.ts +1 -3
  77. package/dist/types/react/web/ui/Bridge/TransactionWidget.d.ts.map +1 -1
  78. package/dist/types/react/web/ui/Bridge/UnsupportedTokenScreen.d.ts +3 -0
  79. package/dist/types/react/web/ui/Bridge/UnsupportedTokenScreen.d.ts.map +1 -1
  80. package/dist/types/react/web/ui/Bridge/payment-details/PaymentDetails.d.ts.map +1 -1
  81. package/dist/types/react/web/ui/Bridge/payment-selection/PaymentSelection.d.ts.map +1 -1
  82. package/dist/types/react/web/ui/Bridge/payment-success/SuccessScreen.d.ts +3 -1
  83. package/dist/types/react/web/ui/Bridge/payment-success/SuccessScreen.d.ts.map +1 -1
  84. package/dist/types/react/web/ui/PayEmbed.d.ts +1 -1
  85. package/dist/types/react/web/ui/PayEmbed.d.ts.map +1 -1
  86. package/dist/types/stories/Bridge/ErrorBanner.stories.d.ts.map +1 -1
  87. package/dist/types/stories/Bridge/SuccessScreen.stories.d.ts.map +1 -1
  88. package/dist/types/stories/Bridge/UnsupportedTokenScreen.stories.d.ts.map +1 -1
  89. package/dist/types/version.d.ts +1 -1
  90. package/dist/types/version.d.ts.map +1 -1
  91. package/package.json +1 -1
  92. package/src/bridge/Buy.ts +0 -2
  93. package/src/react/web/ui/Bridge/BridgeOrchestrator.tsx +3 -0
  94. package/src/react/web/ui/Bridge/BuyWidget.tsx +21 -4
  95. package/src/react/web/ui/Bridge/CheckoutWidget.tsx +21 -4
  96. package/src/react/web/ui/Bridge/ErrorBanner.tsx +21 -1
  97. package/src/react/web/ui/Bridge/QuoteLoader.tsx +24 -0
  98. package/src/react/web/ui/Bridge/TransactionWidget.tsx +21 -4
  99. package/src/react/web/ui/Bridge/UnsupportedTokenScreen.tsx +18 -1
  100. package/src/react/web/ui/Bridge/payment-details/PaymentDetails.tsx +34 -0
  101. package/src/react/web/ui/Bridge/payment-selection/PaymentSelection.tsx +14 -0
  102. package/src/react/web/ui/Bridge/payment-success/SuccessScreen.tsx +22 -0
  103. package/src/react/web/ui/PayEmbed.tsx +4 -1
  104. package/src/stories/Bridge/ErrorBanner.stories.tsx +5 -1
  105. package/src/stories/Bridge/SuccessScreen.stories.tsx +8 -1
  106. package/src/stories/Bridge/UnsupportedTokenScreen.stories.tsx +7 -0
  107. package/src/version.ts +1 -1
@@ -1,6 +1,9 @@
1
1
  "use client";
2
2
  import { CheckIcon } from "@radix-ui/react-icons";
3
+ import { useQuery } from "@tanstack/react-query";
3
4
  import { useState } from "react";
5
+ import { trackPayEvent } from "../../../../../analytics/track/pay.js";
6
+ import type { ThirdwebClient } from "../../../../../client/client.js";
4
7
  import type { WindowAdapter } from "../../../../core/adapters/WindowAdapter.js";
5
8
  import { useCustomTheme } from "../../../../core/design-system/CustomThemeProvider.js";
6
9
  import { iconSize } from "../../../../core/design-system/index.js";
@@ -37,6 +40,8 @@ export interface SuccessScreenProps {
37
40
  * Window adapter for opening URLs
38
41
  */
39
42
  windowAdapter: WindowAdapter;
43
+
44
+ client: ThirdwebClient;
40
45
  }
41
46
 
42
47
  type ViewState = "success" | "detail";
@@ -47,10 +52,27 @@ export function SuccessScreen({
47
52
  completedStatuses,
48
53
  onDone,
49
54
  windowAdapter,
55
+ client,
50
56
  }: SuccessScreenProps) {
51
57
  const theme = useCustomTheme();
52
58
  const [viewState, setViewState] = useState<ViewState>("success");
53
59
 
60
+ useQuery({
61
+ queryFn: () => {
62
+ if (preparedQuote.type === "buy" || preparedQuote.type === "sell") {
63
+ trackPayEvent({
64
+ chainId: preparedQuote.intent.originChainId,
65
+ client: client,
66
+ event: "ub:ui:success_screen",
67
+ fromToken: preparedQuote.intent.originTokenAddress,
68
+ toChainId: preparedQuote.intent.destinationChainId,
69
+ toToken: preparedQuote.intent.destinationTokenAddress,
70
+ });
71
+ }
72
+ },
73
+ queryKey: ["success_screen", preparedQuote.type],
74
+ });
75
+
54
76
  if (viewState === "detail") {
55
77
  return (
56
78
  <PaymentReceipt
@@ -307,7 +307,7 @@ export type PayEmbedProps = {
307
307
  *
308
308
  * Refer to the [`PayEmbedConnectOptions`](https://portal.thirdweb.com/references/typescript/v5/PayEmbedConnectOptions) type for more details.
309
309
  *
310
- * @buyCrypto
310
+ * @deprecated Use `BuyWidget`, `CheckoutWidget` or `TransactionWidget` instead.
311
311
  */
312
312
  export function PayEmbed(props: PayEmbedProps) {
313
313
  const localeQuery = useConnectLocale(props.locale || "en_US");
@@ -356,6 +356,7 @@ export function PayEmbed(props: PayEmbedProps) {
356
356
  amount={props.payOptions.prefillBuy.amount || "0.01"}
357
357
  chain={props.payOptions.prefillBuy.chain}
358
358
  client={props.client}
359
+ onSuccess={() => props.payOptions?.onPurchaseSuccess?.()}
359
360
  theme={theme}
360
361
  title={metadata?.name || "Buy"}
361
362
  tokenAddress={
@@ -374,6 +375,7 @@ export function PayEmbed(props: PayEmbedProps) {
374
375
  description={metadata?.description}
375
376
  image={metadata?.image}
376
377
  name={metadata?.name || "Checkout"}
378
+ onSuccess={() => props.payOptions?.onPurchaseSuccess?.()}
377
379
  seller={props.payOptions.paymentInfo.sellerAddress as Address}
378
380
  theme={theme}
379
381
  tokenAddress={
@@ -389,6 +391,7 @@ export function PayEmbed(props: PayEmbedProps) {
389
391
  client={props.client}
390
392
  description={metadata?.description}
391
393
  image={metadata?.image}
394
+ onSuccess={() => props.payOptions?.onPurchaseSuccess?.()}
392
395
  theme={theme}
393
396
  title={metadata?.name}
394
397
  transaction={props.payOptions.transaction}
@@ -1,4 +1,5 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react";
2
+ import { createThirdwebClient } from "../../client/client.js";
2
3
  import type { Theme } from "../../react/core/design-system/index.js";
3
4
  import { ErrorBanner } from "../../react/web/ui/Bridge/ErrorBanner.js";
4
5
  import { ModalThemeWrapper } from "../utils.js";
@@ -25,7 +26,10 @@ const ErrorBannerWithTheme = (props: ErrorBannerWithThemeProps) => {
25
26
  const { theme, ...componentProps } = props;
26
27
  return (
27
28
  <ModalThemeWrapper theme={theme}>
28
- <ErrorBanner {...componentProps} />
29
+ <ErrorBanner
30
+ client={createThirdwebClient({ clientId: "test" })}
31
+ {...componentProps}
32
+ />
29
33
  </ModalThemeWrapper>
30
34
  );
31
35
  };
@@ -7,7 +7,7 @@ import {
7
7
  SuccessScreen,
8
8
  type SuccessScreenProps,
9
9
  } from "../../react/web/ui/Bridge/payment-success/SuccessScreen.js";
10
- import { ModalThemeWrapper } from "../utils.js";
10
+ import { ModalThemeWrapper, storyClient } from "../utils.js";
11
11
  import {
12
12
  FUND_WALLET_UI_OPTIONS,
13
13
  simpleBuyQuote,
@@ -126,6 +126,7 @@ type Story = StoryObj<typeof meta>;
126
126
 
127
127
  export const Default: Story = {
128
128
  args: {
129
+ client: storyClient,
129
130
  theme: "dark",
130
131
  },
131
132
  parameters: {
@@ -135,6 +136,7 @@ export const Default: Story = {
135
136
 
136
137
  export const DefaultLight: Story = {
137
138
  args: {
139
+ client: storyClient,
138
140
  theme: "light",
139
141
  },
140
142
  parameters: {
@@ -144,6 +146,7 @@ export const DefaultLight: Story = {
144
146
 
145
147
  export const OnrampPayment: Story = {
146
148
  args: {
149
+ client: storyClient,
147
150
  completedStatuses: mockOnrampCompletedStatuses,
148
151
  preparedQuote: simpleOnrampQuote,
149
152
  theme: "dark",
@@ -161,6 +164,7 @@ export const OnrampPayment: Story = {
161
164
 
162
165
  export const OnrampPaymentLight: Story = {
163
166
  args: {
167
+ client: storyClient,
164
168
  completedStatuses: mockOnrampCompletedStatuses,
165
169
  preparedQuote: simpleOnrampQuote,
166
170
  theme: "light",
@@ -172,6 +176,7 @@ export const OnrampPaymentLight: Story = {
172
176
 
173
177
  export const ComplexPayment: Story = {
174
178
  args: {
179
+ client: storyClient,
175
180
  completedStatuses: [
176
181
  ...mockOnrampCompletedStatuses,
177
182
  ...mockBuyCompletedStatuses,
@@ -192,6 +197,7 @@ export const ComplexPayment: Story = {
192
197
 
193
198
  export const ComplexPaymentLight: Story = {
194
199
  args: {
200
+ client: storyClient,
195
201
  completedStatuses: [
196
202
  ...mockOnrampCompletedStatuses,
197
203
  ...mockBuyCompletedStatuses,
@@ -206,6 +212,7 @@ export const ComplexPaymentLight: Story = {
206
212
 
207
213
  export const TransactionPayment: Story = {
208
214
  args: {
215
+ client: storyClient,
209
216
  completedStatuses: mockBuyCompletedStatuses,
210
217
  preparedQuote: simpleBuyQuote,
211
218
  theme: "light",
@@ -1,5 +1,6 @@
1
1
  import type { Meta, StoryObj } from "@storybook/react";
2
2
  import { defineChain } from "../../chains/utils.js";
3
+ import { createThirdwebClient } from "../../client/client.js";
3
4
  import type { Theme } from "../../react/core/design-system/index.js";
4
5
  import {
5
6
  UnsupportedTokenScreen,
@@ -7,6 +8,8 @@ import {
7
8
  } from "../../react/web/ui/Bridge/UnsupportedTokenScreen.js";
8
9
  import { ModalThemeWrapper } from "../utils.js";
9
10
 
11
+ const TEST_CLIENT = createThirdwebClient({ clientId: "test" });
12
+
10
13
  // Props interface for the wrapper component
11
14
  interface UnsupportedTokenScreenWithThemeProps
12
15
  extends UnsupportedTokenScreenProps {
@@ -57,6 +60,7 @@ type Story = StoryObj<typeof meta>;
57
60
  export const TokenNotSupported: Story = {
58
61
  args: {
59
62
  chain: defineChain(1),
63
+ client: TEST_CLIENT,
60
64
  theme: "dark", // Ethereum mainnet - will show indexing spinner
61
65
  },
62
66
  parameters: {
@@ -73,6 +77,7 @@ export const TokenNotSupported: Story = {
73
77
  export const TokenNotSupportedLight: Story = {
74
78
  args: {
75
79
  chain: defineChain(1),
80
+ client: TEST_CLIENT,
76
81
  theme: "light", // Ethereum mainnet - will show indexing spinner
77
82
  },
78
83
  parameters: {
@@ -89,6 +94,7 @@ export const TokenNotSupportedLight: Story = {
89
94
  export const TestnetNotSupported: Story = {
90
95
  args: {
91
96
  chain: defineChain(11155111),
97
+ client: TEST_CLIENT,
92
98
  theme: "dark", // Sepolia testnet - will show error state
93
99
  },
94
100
  parameters: {
@@ -105,6 +111,7 @@ export const TestnetNotSupported: Story = {
105
111
  export const TestnetNotSupportedLight: Story = {
106
112
  args: {
107
113
  chain: defineChain(11155111),
114
+ client: TEST_CLIENT,
108
115
  theme: "light", // Sepolia testnet - will show error state
109
116
  },
110
117
  parameters: {
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.104.1";
1
+ export const version = "5.104.2-nightly-d85ee5fac30b739b69202184eb2e62660790979b-20250625000421";