thirdweb 5.105.36 → 5.105.38

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 (74) hide show
  1. package/dist/cjs/adapters/eip1193/to-eip1193.js +12 -3
  2. package/dist/cjs/adapters/eip1193/to-eip1193.js.map +1 -1
  3. package/dist/cjs/exports/tokens.js +2 -1
  4. package/dist/cjs/exports/tokens.js.map +1 -1
  5. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js +2 -2
  6. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  7. package/dist/cjs/react/web/ui/Bridge/CheckoutWidget.js +6 -0
  8. package/dist/cjs/react/web/ui/Bridge/CheckoutWidget.js.map +1 -1
  9. package/dist/cjs/react/web/ui/Bridge/DirectPayment.js +2 -12
  10. package/dist/cjs/react/web/ui/Bridge/DirectPayment.js.map +1 -1
  11. package/dist/cjs/react/web/ui/Bridge/payment-selection/WalletFiatSelection.js +2 -2
  12. package/dist/cjs/react/web/ui/Bridge/payment-selection/WalletFiatSelection.js.map +1 -1
  13. package/dist/cjs/react/web/ui/Bridge/payment-success/SuccessScreen.js +6 -2
  14. package/dist/cjs/react/web/ui/Bridge/payment-success/SuccessScreen.js.map +1 -1
  15. package/dist/cjs/stories/Bridge/SuccessScreen.stories.js +14 -1
  16. package/dist/cjs/stories/Bridge/SuccessScreen.stories.js.map +1 -1
  17. package/dist/cjs/tokens/create-token.js +30 -0
  18. package/dist/cjs/tokens/create-token.js.map +1 -1
  19. package/dist/cjs/tokens/predict-address.js +1 -1
  20. package/dist/cjs/tokens/predict-address.js.map +1 -1
  21. package/dist/cjs/version.js +1 -1
  22. package/dist/cjs/wallets/wallet-connect/controller.js +3 -2
  23. package/dist/cjs/wallets/wallet-connect/controller.js.map +1 -1
  24. package/dist/esm/adapters/eip1193/to-eip1193.js +12 -3
  25. package/dist/esm/adapters/eip1193/to-eip1193.js.map +1 -1
  26. package/dist/esm/exports/tokens.js +1 -1
  27. package/dist/esm/exports/tokens.js.map +1 -1
  28. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js +2 -2
  29. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  30. package/dist/esm/react/web/ui/Bridge/CheckoutWidget.js +7 -1
  31. package/dist/esm/react/web/ui/Bridge/CheckoutWidget.js.map +1 -1
  32. package/dist/esm/react/web/ui/Bridge/DirectPayment.js +2 -12
  33. package/dist/esm/react/web/ui/Bridge/DirectPayment.js.map +1 -1
  34. package/dist/esm/react/web/ui/Bridge/payment-selection/WalletFiatSelection.js +2 -2
  35. package/dist/esm/react/web/ui/Bridge/payment-selection/WalletFiatSelection.js.map +1 -1
  36. package/dist/esm/react/web/ui/Bridge/payment-success/SuccessScreen.js +6 -2
  37. package/dist/esm/react/web/ui/Bridge/payment-success/SuccessScreen.js.map +1 -1
  38. package/dist/esm/stories/Bridge/SuccessScreen.stories.js +13 -0
  39. package/dist/esm/stories/Bridge/SuccessScreen.stories.js.map +1 -1
  40. package/dist/esm/tokens/create-token.js +29 -0
  41. package/dist/esm/tokens/create-token.js.map +1 -1
  42. package/dist/esm/tokens/predict-address.js +1 -1
  43. package/dist/esm/tokens/predict-address.js.map +1 -1
  44. package/dist/esm/version.js +1 -1
  45. package/dist/esm/wallets/wallet-connect/controller.js +3 -2
  46. package/dist/esm/wallets/wallet-connect/controller.js.map +1 -1
  47. package/dist/types/adapters/eip1193/to-eip1193.d.ts.map +1 -1
  48. package/dist/types/exports/tokens.d.ts +1 -1
  49. package/dist/types/exports/tokens.d.ts.map +1 -1
  50. package/dist/types/react/web/ui/Bridge/CheckoutWidget.d.ts.map +1 -1
  51. package/dist/types/react/web/ui/Bridge/DirectPayment.d.ts +1 -6
  52. package/dist/types/react/web/ui/Bridge/DirectPayment.d.ts.map +1 -1
  53. package/dist/types/react/web/ui/Bridge/payment-success/SuccessScreen.d.ts +5 -1
  54. package/dist/types/react/web/ui/Bridge/payment-success/SuccessScreen.d.ts.map +1 -1
  55. package/dist/types/stories/Bridge/SuccessScreen.stories.d.ts +1 -0
  56. package/dist/types/stories/Bridge/SuccessScreen.stories.d.ts.map +1 -1
  57. package/dist/types/tokens/create-token.d.ts +1 -0
  58. package/dist/types/tokens/create-token.d.ts.map +1 -1
  59. package/dist/types/version.d.ts +1 -1
  60. package/dist/types/wallets/wallet-connect/controller.d.ts.map +1 -1
  61. package/package.json +1 -1
  62. package/src/adapters/eip1193/to-eip1193.test.ts +10 -5
  63. package/src/adapters/eip1193/to-eip1193.ts +16 -5
  64. package/src/exports/tokens.ts +1 -1
  65. package/src/react/web/ui/Bridge/BridgeOrchestrator.tsx +1 -1
  66. package/src/react/web/ui/Bridge/CheckoutWidget.tsx +16 -0
  67. package/src/react/web/ui/Bridge/DirectPayment.tsx +3 -29
  68. package/src/react/web/ui/Bridge/payment-selection/WalletFiatSelection.tsx +3 -3
  69. package/src/react/web/ui/Bridge/payment-success/SuccessScreen.tsx +16 -4
  70. package/src/stories/Bridge/SuccessScreen.stories.tsx +14 -0
  71. package/src/tokens/create-token.ts +36 -0
  72. package/src/tokens/predict-address.ts +1 -1
  73. package/src/version.ts +1 -1
  74. package/src/wallets/wallet-connect/controller.ts +3 -2
@@ -1 +1 @@
1
- {"version":3,"file":"SuccessScreen.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/Bridge/SuccessScreen.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAEvF,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,4DAA4D,CAAC;AAsEpE,UAAU,2BAA4B,SAAQ,kBAAkB;IAC9D,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;CACjC;AAYD,QAAA,MAAM,IAAI;;;;;;;;qBA9BU,CAAC;2BAEf,CAAN;qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;uBAmBiB,2BAA2B;;;;;;;;;;;CAsCnB,CAAC;AAEhD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAQ1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAgB3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAUhC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAmB5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAajC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAWhC,CAAC"}
1
+ {"version":3,"file":"SuccessScreen.stories.d.ts","sourceRoot":"","sources":["../../../../src/stories/Bridge/SuccessScreen.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAQ,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,yCAAyC,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAEvF,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,4DAA4D,CAAC;AAsEpE,UAAU,2BAA4B,SAAQ,kBAAkB;IAC9D,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;CACjC;AAYD,QAAA,MAAM,IAAI;;;;;;;;qBA9BU,CAAC;2BAEf,CAAN;qBAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;uBAmBiB,2BAA2B;;;;;;;;;;;CAsCnB,CAAC;AAEhD,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;AAEnC,eAAO,MAAM,OAAO,EAAE,KAQrB,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAQ1B,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAgB3B,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAUhC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,KAmB5B,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,KAajC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,KAWhC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,KAYvB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { CreateTokenOptions } from "./types.js";
2
2
  export declare function createToken(options: CreateTokenOptions): Promise<string>;
3
+ export declare function prepareCreateToken(options: CreateTokenOptions): Promise<import("../transaction/prepare-transaction.js").PreparedTransaction<any, import("viem").AbiFunction, import("../transaction/prepare-transaction.js").PrepareTransactionOptions>>;
3
4
  //# sourceMappingURL=create-token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-token.d.ts","sourceRoot":"","sources":["../../../src/tokens/create-token.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,mBA+C5D"}
1
+ {"version":3,"file":"create-token.d.ts","sourceRoot":"","sources":["../../../src/tokens/create-token.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,mBA+C5D;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,4LAkCnE"}
@@ -1,2 +1,2 @@
1
- export declare const version = "5.105.36";
1
+ export declare const version = "5.105.38";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/wallets/wallet-connect/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,mCAAmC,CAAC;AAY3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAOxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzE,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAezD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GACvB,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAEnC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,oBAAoB,GAAG,eAAe,EAChD,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACrD,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAoHvC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,oBAAoB,GAAG,eAAe,EAChD,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACrD,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAyDvC;AAkND,iBAAS,SAAS,CAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,UAAU,EACtB,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC5D,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,CA2D/C"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../../src/wallets/wallet-connect/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,mCAAmC,CAAC;AAY3C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAU7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAOxE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,KAAK,EACV,OAAO,EAEP,MAAM,EACP,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzE,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAezD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,GACvB,MAAM,IAAI,MAAM,CAAC,eAAe,CAAC,CAEnC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,oBAAoB,GAAG,eAAe,EAChD,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACrD,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAqHvC;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,QAAQ,EAAE,oBAAoB,GAAG,eAAe,EAChD,OAAO,EAAE,YAAY,EACrB,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACrD,OAAO,CAAC,UAAU,CAAC,OAAO,SAAS,CAAC,CAAC,CAyDvC;AAkND,iBAAS,SAAS,CAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,UAAU,EACpB,OAAO,EAAE,aAAa,CAAC,oBAAoB,CAAC,EAC5C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,cAAc,EACtB,UAAU,EAAE,UAAU,EACtB,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAC5D,CAAC,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC,CA2D/C"}
package/package.json CHANGED
@@ -388,7 +388,7 @@
388
388
  }
389
389
  },
390
390
  "typings": "./dist/types/exports/thirdweb.d.ts",
391
- "version": "5.105.36",
391
+ "version": "5.105.38",
392
392
  "scripts": {
393
393
  "bench": "vitest -c ./test/vitest.config.ts bench",
394
394
  "bench:compare": "bun run ./benchmarks/run.ts",
@@ -170,7 +170,7 @@ describe("toProvider", () => {
170
170
  expect(result).toBeGreaterThan(0n);
171
171
  });
172
172
 
173
- test("should throw error when account is not connected", async () => {
173
+ test("should return empty array when account is not connected", async () => {
174
174
  const walletWithoutAccount = {
175
175
  ...mockWallet,
176
176
  getAccount: () => undefined,
@@ -187,17 +187,22 @@ describe("toProvider", () => {
187
187
  method: "eth_accounts",
188
188
  params: [],
189
189
  }),
190
- ).rejects.toThrow("Account not connected");
190
+ ).resolves.toEqual([]);
191
191
  });
192
192
 
193
193
  test("should use custom connect override when provided", async () => {
194
- const customConnect = vi.fn().mockResolvedValue(mockAccount);
194
+ const walletWithoutAccount = {
195
+ ...mockWallet,
196
+ getAccount: () => undefined,
197
+ };
198
+
199
+ const customConnect = vi.fn().mockResolvedValue(walletWithoutAccount);
195
200
 
196
201
  const provider = toProvider({
197
202
  chain: ANVIL_CHAIN,
198
203
  client: TEST_CLIENT,
199
204
  connectOverride: customConnect,
200
- wallet: mockWallet,
205
+ wallet: walletWithoutAccount,
201
206
  });
202
207
 
203
208
  await provider.request({
@@ -205,6 +210,6 @@ describe("toProvider", () => {
205
210
  params: [],
206
211
  });
207
212
 
208
- expect(customConnect).toHaveBeenCalledWith(mockWallet);
213
+ expect(customConnect).toHaveBeenCalledWith(walletWithoutAccount);
209
214
  });
210
215
  });
@@ -115,18 +115,29 @@ export function toProvider(options: ToEip1193ProviderOptions): EIP1193Provider {
115
115
  if (request.method === "eth_accounts") {
116
116
  const account = wallet.getAccount();
117
117
  if (!account) {
118
- throw new Error("Account not connected");
118
+ return [];
119
119
  }
120
120
  return [account.address];
121
121
  }
122
122
  if (request.method === "eth_requestAccounts") {
123
+ const connectedAccount = wallet.getAccount();
124
+ if (connectedAccount) {
125
+ return [connectedAccount.address];
126
+ }
123
127
  const account = connectOverride
124
128
  ? await connectOverride(wallet)
125
- : await wallet.connect({
126
- client,
127
- });
129
+ : await wallet
130
+ .connect({
131
+ client,
132
+ })
133
+ .catch((e) => {
134
+ console.error("Error connecting wallet", e);
135
+ return null;
136
+ });
128
137
  if (!account) {
129
- throw new Error("Unable to connect wallet");
138
+ throw new Error(
139
+ "Unable to connect wallet - try passing a connectOverride function",
140
+ );
130
141
  }
131
142
  return [account.address];
132
143
  }
@@ -6,7 +6,7 @@ export {
6
6
  DEFAULT_DEVELOPER_ADDRESS,
7
7
  DEFAULT_DEVELOPER_REWARD_BPS,
8
8
  } from "../tokens/constants.js";
9
- export { createToken } from "../tokens/create-token.js";
9
+ export { createToken, prepareCreateToken } from "../tokens/create-token.js";
10
10
  export { distributeToken } from "../tokens/distribute-token.js";
11
11
  export {
12
12
  getDeployedContractFactory,
@@ -277,7 +277,6 @@ export function BridgeOrchestrator({
277
277
  {state.value === "init" && uiOptions.mode === "direct_payment" && (
278
278
  <DirectPayment
279
279
  client={client}
280
- connectOptions={modifiedConnectOptions}
281
280
  onContinue={handleRequirementsResolved}
282
281
  showThirdwebBranding={showThirdwebBranding}
283
282
  uiOptions={uiOptions}
@@ -389,6 +388,7 @@ export function BridgeOrchestrator({
389
388
  preparedQuote={state.context.quote}
390
389
  uiOptions={uiOptions}
391
390
  windowAdapter={webWindowAdapter}
391
+ hasPaymentId={!!paymentLinkId}
392
392
  />
393
393
  )}
394
394
 
@@ -22,8 +22,11 @@ import type { ConnectButton_connectModalOptions } from "../../../core/hooks/conn
22
22
  import type { SupportedTokens } from "../../../core/utils/defaultTokens.js";
23
23
  import { useConnectLocale } from "../ConnectWallet/locale/getConnectLocale.js";
24
24
  import { EmbedContainer } from "../ConnectWallet/Modal/ConnectEmbed.js";
25
+ import { Container } from "../components/basic.js";
26
+ import { Button } from "../components/buttons.js";
25
27
  import { DynamicHeight } from "../components/DynamicHeight.js";
26
28
  import { Spinner } from "../components/Spinner.js";
29
+ import { Text } from "../components/text.js";
27
30
  import type { LocaleId } from "../types.js";
28
31
  import { BridgeOrchestrator, type UIOptions } from "./BridgeOrchestrator.js";
29
32
  import { UnsupportedTokenScreen } from "./UnsupportedTokenScreen.js";
@@ -421,6 +424,19 @@ export function CheckoutWidget(props: CheckoutWidgetProps) {
421
424
  );
422
425
  }
423
426
 
427
+ if (bridgeDataQuery.isError) {
428
+ content = (
429
+ <Container flex="column" center="both" gap="md" p="md" py="xl">
430
+ <Text center size="md" weight={600}>
431
+ Something went wrong.
432
+ </Text>
433
+ <Button variant="ghost" onClick={() => bridgeDataQuery.refetch()}>
434
+ Retry
435
+ </Button>
436
+ </Container>
437
+ );
438
+ }
439
+
424
440
  return (
425
441
  <CustomThemeProvider theme={theme}>
426
442
  <EmbedContainer
@@ -3,9 +3,6 @@ import type { Token } from "../../../../bridge/types/Token.js";
3
3
  import { defineChain } from "../../../../chains/utils.js";
4
4
  import type { ThirdwebClient } from "../../../../client/client.js";
5
5
  import type { Address } from "../../../../utils/address.js";
6
- import { useCustomTheme } from "../../../core/design-system/CustomThemeProvider.js";
7
- import { useActiveAccount } from "../../../core/hooks/wallets/useActiveAccount.js";
8
- import { ConnectButton } from "../ConnectWallet/ConnectButton.js";
9
6
  import { PoweredByThirdweb } from "../ConnectWallet/PoweredByTW.js";
10
7
  import { FiatValue } from "../ConnectWallet/screens/Buy/swap/FiatValue.js";
11
8
  import { Container, Line } from "../components/basic.js";
@@ -13,7 +10,6 @@ import { Button } from "../components/buttons.js";
13
10
  import { ChainName } from "../components/ChainName.js";
14
11
  import { Spacer } from "../components/Spacer.js";
15
12
  import { Text } from "../components/text.js";
16
- import type { PayEmbedConnectOptions } from "../PayEmbed.js";
17
13
  import type { UIOptions } from "./BridgeOrchestrator.js";
18
14
  import { ChainIcon } from "./common/TokenAndChain.js";
19
15
  import { WithHeader } from "./common/WithHeader.js";
@@ -34,11 +30,6 @@ export interface DirectPaymentProps {
34
30
  */
35
31
  onContinue: (amount: string, token: Token, receiverAddress: Address) => void;
36
32
 
37
- /**
38
- * Connect options for wallet connection
39
- */
40
- connectOptions?: PayEmbedConnectOptions;
41
-
42
33
  /**
43
34
  * Whether to show thirdweb branding in the widget.
44
35
  * @default true
@@ -50,12 +41,9 @@ export function DirectPayment({
50
41
  uiOptions,
51
42
  client,
52
43
  onContinue,
53
- connectOptions,
54
44
  showThirdwebBranding = true,
55
45
  }: DirectPaymentProps) {
56
- const activeAccount = useActiveAccount();
57
46
  const chain = defineChain(uiOptions.paymentInfo.token.chainId);
58
- const theme = useCustomTheme();
59
47
  const handleContinue = () => {
60
48
  onContinue(
61
49
  uiOptions.paymentInfo.amount,
@@ -188,23 +176,9 @@ export function DirectPayment({
188
176
 
189
177
  {/* Action button */}
190
178
  <Container flex="column">
191
- {activeAccount ? (
192
- <Button fullWidth onClick={handleContinue} variant="primary">
193
- {buyNow}
194
- </Button>
195
- ) : (
196
- <ConnectButton
197
- client={client}
198
- connectButton={{
199
- label: buyNow,
200
- style: {
201
- width: "100%",
202
- },
203
- }}
204
- theme={theme}
205
- {...connectOptions}
206
- />
207
- )}
179
+ <Button fullWidth onClick={handleContinue} variant="primary">
180
+ {buyNow}
181
+ </Button>
208
182
 
209
183
  {showThirdwebBranding ? (
210
184
  <div>
@@ -121,10 +121,10 @@ export function WalletFiatSelection({
121
121
  </Container>
122
122
  <Container flex="column" gap="3xs" style={{ flex: 1 }}>
123
123
  <Text color="primaryText" size="sm" style={{ fontWeight: 600 }}>
124
- Connect Another Wallet
124
+ Connect a Wallet
125
125
  </Text>
126
126
  <Text color="secondaryText" size="xs">
127
- Use a different wallet to pay
127
+ Pay with any web3 wallet
128
128
  </Text>
129
129
  </Container>
130
130
  </Container>
@@ -169,7 +169,7 @@ export function WalletFiatSelection({
169
169
  Pay with Card
170
170
  </Text>
171
171
  <Text color="secondaryText" size="xs">
172
- Buy crypto and bridge in one step
172
+ Onramp and pay in one step
173
173
  </Text>
174
174
  </Container>
175
175
  </Container>
@@ -42,6 +42,11 @@ export interface SuccessScreenProps {
42
42
  windowAdapter: WindowAdapter;
43
43
 
44
44
  client: ThirdwebClient;
45
+
46
+ /**
47
+ * Whether or not this payment is associated with a payment ID. If it does, we show a different message.
48
+ */
49
+ hasPaymentId?: boolean;
45
50
  }
46
51
 
47
52
  type ViewState = "success" | "detail";
@@ -53,6 +58,7 @@ export function SuccessScreen({
53
58
  onDone,
54
59
  windowAdapter,
55
60
  client,
61
+ hasPaymentId = false,
56
62
  }: SuccessScreenProps) {
57
63
  const theme = useCustomTheme();
58
64
  const [viewState, setViewState] = useState<ViewState>("success");
@@ -120,7 +126,11 @@ export function SuccessScreen({
120
126
  </Text>
121
127
 
122
128
  <Text center color="secondaryText" size="sm">
123
- Your cross-chain payment has been completed successfully.
129
+ {hasPaymentId
130
+ ? "You can now close this page and return to the application."
131
+ : uiOptions.mode === "transaction"
132
+ ? "Click continue to execute your transaction."
133
+ : "Your payment has been completed successfully."}
124
134
  </Text>
125
135
  </Container>
126
136
  <Spacer y="lg" />
@@ -135,9 +145,11 @@ export function SuccessScreen({
135
145
  View Payment Receipt
136
146
  </Button>
137
147
 
138
- <Button fullWidth onClick={onDone} variant="accent">
139
- {uiOptions.mode === "transaction" ? "Continue" : "Done"}
140
- </Button>
148
+ {!hasPaymentId && (
149
+ <Button fullWidth onClick={onDone} variant="accent">
150
+ {uiOptions.mode === "transaction" ? "Continue" : "Done"}
151
+ </Button>
152
+ )}
141
153
  </Container>
142
154
 
143
155
  {/* CSS Animations */}
@@ -222,3 +222,17 @@ export const TransactionPayment: Story = {
222
222
  backgrounds: { default: "light" },
223
223
  },
224
224
  };
225
+
226
+ export const PaymentId: Story = {
227
+ args: {
228
+ client: storyClient,
229
+ completedStatuses: mockBuyCompletedStatuses,
230
+ hasPaymentId: true,
231
+ preparedQuote: simpleBuyQuote,
232
+ theme: "light",
233
+ uiOptions: TRANSACTION_UI_OPTIONS.contractInteraction,
234
+ },
235
+ parameters: {
236
+ backgrounds: { default: "light" },
237
+ },
238
+ };
@@ -62,3 +62,39 @@ export async function createToken(options: CreateTokenOptions) {
62
62
 
63
63
  return decodedEvent[0]?.args.asset;
64
64
  }
65
+
66
+ export async function prepareCreateToken(options: CreateTokenOptions) {
67
+ const { client, params, account, launchConfig } = options;
68
+
69
+ const creator = params.owner || account.address;
70
+ const encodedInitData = await encodeInitParams({
71
+ client,
72
+ creator,
73
+ params,
74
+ });
75
+
76
+ const salt: Hex = generateSalt(options.salt || bytesToHex(randomBytes(31)));
77
+
78
+ const entrypoint = await getDeployedEntrypointERC20(options);
79
+
80
+ let hookData: Hex = "0x";
81
+ let contractId = padHex(toHex("ERC20Asset"), { size: 32 });
82
+ if (launchConfig?.kind === "pool") {
83
+ hookData = encodePoolConfig(launchConfig.config);
84
+ contractId = padHex(toHex("ERC20Asset_Pool"), { size: 32 });
85
+ }
86
+
87
+ const transaction = createById({
88
+ contract: entrypoint,
89
+ contractId,
90
+ params: {
91
+ data: encodedInitData,
92
+ hookData,
93
+ developer: options.developerAddress || DEFAULT_DEVELOPER_ADDRESS,
94
+ salt,
95
+ },
96
+ creator,
97
+ });
98
+
99
+ return transaction;
100
+ }
@@ -12,7 +12,7 @@ import {
12
12
  import type { CreateTokenOptions } from "./types.js";
13
13
 
14
14
  export async function predictAddress(options: CreateTokenOptions) {
15
- const { client, account, params, launchConfig } = options;
15
+ const { client, params, launchConfig, account } = options;
16
16
 
17
17
  const creator = params.owner || account.address;
18
18
  const encodedInitData = await encodeInitParams({
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.105.36";
1
+ export const version = "5.105.38";
@@ -142,6 +142,7 @@ export async function connectWC(
142
142
  "eth_sign",
143
143
  "personal_sign",
144
144
  "eth_signTypedData",
145
+ "eth_signTypedData_v4",
145
146
  "wallet_switchEthereumChain",
146
147
  "wallet_addEthereumChain",
147
148
  ],
@@ -185,8 +186,8 @@ export async function connectWC(
185
186
  }
186
187
  }
187
188
 
188
- if (wcOptions?.onDisplayUri) {
189
- provider.events.removeListener("display_uri", wcOptions.onDisplayUri);
189
+ if (onDisplayUri) {
190
+ provider.events.removeListener("display_uri", onDisplayUri);
190
191
  }
191
192
 
192
193
  return onConnect(