thirdweb 5.42.0 → 5.43.0-nightly-75cc5a6434d29dbfe69b6cd6344a7c8426d59fac-20240731000316

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/cli/bin.js +13 -0
  2. package/dist/cjs/cli/bin.js.map +1 -1
  3. package/dist/cjs/exports/react.js +3 -1
  4. package/dist/cjs/exports/react.js.map +1 -1
  5. package/dist/cjs/extensions/marketplace/direct-listings/write/createListing.js +5 -1
  6. package/dist/cjs/extensions/marketplace/direct-listings/write/createListing.js.map +1 -1
  7. package/dist/cjs/pay/buyWithCrypto/getStatus.js.map +1 -1
  8. package/dist/cjs/react/core/hooks/wallets/useActiveAccount.js +1 -1
  9. package/dist/cjs/react/core/hooks/wallets/useActiveAccount.js.map +1 -1
  10. package/dist/cjs/react/core/hooks/wallets/useActiveWallet.js +1 -1
  11. package/dist/cjs/react/core/hooks/wallets/useActiveWallet.js.map +1 -1
  12. package/dist/cjs/react/core/hooks/wallets/useActiveWalletChain.js +1 -1
  13. package/dist/cjs/react/core/hooks/wallets/useActiveWalletChain.js.map +1 -1
  14. package/dist/cjs/react/core/hooks/wallets/useActiveWalletConnectionStatus.js +1 -1
  15. package/dist/cjs/react/core/hooks/wallets/useActiveWalletConnectionStatus.js.map +1 -1
  16. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js +4 -2
  17. package/dist/cjs/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  18. package/dist/cjs/react/core/hooks/wallets/useConnect.js +1 -1
  19. package/dist/cjs/react/core/hooks/wallets/useConnect.js.map +1 -1
  20. package/dist/cjs/react/core/hooks/wallets/useConnectedWallets.js +1 -1
  21. package/dist/cjs/react/core/hooks/wallets/useConnectedWallets.js.map +1 -1
  22. package/dist/cjs/react/core/hooks/wallets/useDisconnect.js +1 -1
  23. package/dist/cjs/react/core/hooks/wallets/useDisconnect.js.map +1 -1
  24. package/dist/cjs/react/core/hooks/wallets/useIsAutoConnecting.js +1 -1
  25. package/dist/cjs/react/core/hooks/wallets/useIsAutoConnecting.js.map +1 -1
  26. package/dist/cjs/react/core/hooks/wallets/useSetActiveWallet.js +1 -1
  27. package/dist/cjs/react/core/hooks/wallets/useSetActiveWallet.js.map +1 -1
  28. package/dist/cjs/react/core/hooks/wallets/useSetActiveWalletConnectionStatus.js +1 -1
  29. package/dist/cjs/react/core/hooks/wallets/useSetActiveWalletConnectionStatus.js.map +1 -1
  30. package/dist/cjs/react/core/hooks/wallets/useSwitchActiveWalletChain.js +1 -1
  31. package/dist/cjs/react/core/hooks/wallets/useSwitchActiveWalletChain.js.map +1 -1
  32. package/dist/cjs/react/core/providers/connection-manager.js +14 -2
  33. package/dist/cjs/react/core/providers/connection-manager.js.map +1 -1
  34. package/dist/cjs/react/web/ui/ConnectWallet/locale/de.js +114 -0
  35. package/dist/cjs/react/web/ui/ConnectWallet/locale/de.js.map +1 -0
  36. package/dist/cjs/react/web/ui/ConnectWallet/locale/getConnectLocale.js +3 -0
  37. package/dist/cjs/react/web/ui/ConnectWallet/locale/getConnectLocale.js.map +1 -1
  38. package/dist/cjs/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js +2 -0
  39. package/dist/cjs/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js.map +1 -1
  40. package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +118 -0
  41. package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -0
  42. package/dist/cjs/react/web/wallets/injected/locale/de.js +27 -0
  43. package/dist/cjs/react/web/wallets/injected/locale/de.js.map +1 -0
  44. package/dist/cjs/react/web/wallets/injected/locale/getInjectedWalletLocale.js +2 -0
  45. package/dist/cjs/react/web/wallets/injected/locale/getInjectedWalletLocale.js.map +1 -1
  46. package/dist/cjs/react/web/wallets/shared/locale/de.js +55 -0
  47. package/dist/cjs/react/web/wallets/shared/locale/de.js.map +1 -0
  48. package/dist/cjs/react/web/wallets/shared/locale/getConnectLocale.js +2 -0
  49. package/dist/cjs/react/web/wallets/shared/locale/getConnectLocale.js.map +1 -1
  50. package/dist/cjs/react/web/wallets/smartWallet/locale/de.js +13 -0
  51. package/dist/cjs/react/web/wallets/smartWallet/locale/de.js.map +1 -0
  52. package/dist/cjs/react/web/wallets/smartWallet/locale/getSmartWalletLocale.js +2 -0
  53. package/dist/cjs/react/web/wallets/smartWallet/locale/getSmartWalletLocale.js.map +1 -1
  54. package/dist/cjs/react/web/wallets/walletConnect/locale.js +4 -0
  55. package/dist/cjs/react/web/wallets/walletConnect/locale.js.map +1 -1
  56. package/dist/cjs/version.js +1 -1
  57. package/dist/cjs/version.js.map +1 -1
  58. package/dist/esm/cli/bin.js +13 -0
  59. package/dist/esm/cli/bin.js.map +1 -1
  60. package/dist/esm/exports/react.js +1 -0
  61. package/dist/esm/exports/react.js.map +1 -1
  62. package/dist/esm/extensions/marketplace/direct-listings/write/createListing.js +5 -1
  63. package/dist/esm/extensions/marketplace/direct-listings/write/createListing.js.map +1 -1
  64. package/dist/esm/pay/buyWithCrypto/getStatus.js.map +1 -1
  65. package/dist/esm/react/core/hooks/wallets/useActiveAccount.js +2 -2
  66. package/dist/esm/react/core/hooks/wallets/useActiveAccount.js.map +1 -1
  67. package/dist/esm/react/core/hooks/wallets/useActiveWallet.js +2 -2
  68. package/dist/esm/react/core/hooks/wallets/useActiveWallet.js.map +1 -1
  69. package/dist/esm/react/core/hooks/wallets/useActiveWalletChain.js +2 -2
  70. package/dist/esm/react/core/hooks/wallets/useActiveWalletChain.js.map +1 -1
  71. package/dist/esm/react/core/hooks/wallets/useActiveWalletConnectionStatus.js +2 -2
  72. package/dist/esm/react/core/hooks/wallets/useActiveWalletConnectionStatus.js.map +1 -1
  73. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js +5 -3
  74. package/dist/esm/react/core/hooks/wallets/useAutoConnect.js.map +1 -1
  75. package/dist/esm/react/core/hooks/wallets/useConnect.js +2 -2
  76. package/dist/esm/react/core/hooks/wallets/useConnect.js.map +1 -1
  77. package/dist/esm/react/core/hooks/wallets/useConnectedWallets.js +2 -2
  78. package/dist/esm/react/core/hooks/wallets/useConnectedWallets.js.map +1 -1
  79. package/dist/esm/react/core/hooks/wallets/useDisconnect.js +2 -2
  80. package/dist/esm/react/core/hooks/wallets/useDisconnect.js.map +1 -1
  81. package/dist/esm/react/core/hooks/wallets/useIsAutoConnecting.js +2 -2
  82. package/dist/esm/react/core/hooks/wallets/useIsAutoConnecting.js.map +1 -1
  83. package/dist/esm/react/core/hooks/wallets/useSetActiveWallet.js +2 -2
  84. package/dist/esm/react/core/hooks/wallets/useSetActiveWallet.js.map +1 -1
  85. package/dist/esm/react/core/hooks/wallets/useSetActiveWalletConnectionStatus.js +2 -2
  86. package/dist/esm/react/core/hooks/wallets/useSetActiveWalletConnectionStatus.js.map +1 -1
  87. package/dist/esm/react/core/hooks/wallets/useSwitchActiveWalletChain.js +2 -2
  88. package/dist/esm/react/core/hooks/wallets/useSwitchActiveWalletChain.js.map +1 -1
  89. package/dist/esm/react/core/providers/connection-manager.js +13 -2
  90. package/dist/esm/react/core/providers/connection-manager.js.map +1 -1
  91. package/dist/esm/react/web/ui/ConnectWallet/locale/de.js +112 -0
  92. package/dist/esm/react/web/ui/ConnectWallet/locale/de.js.map +1 -0
  93. package/dist/esm/react/web/ui/ConnectWallet/locale/getConnectLocale.js +3 -0
  94. package/dist/esm/react/web/ui/ConnectWallet/locale/getConnectLocale.js.map +1 -1
  95. package/dist/esm/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js +2 -0
  96. package/dist/esm/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js.map +1 -1
  97. package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +115 -0
  98. package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -0
  99. package/dist/esm/react/web/wallets/injected/locale/de.js +25 -0
  100. package/dist/esm/react/web/wallets/injected/locale/de.js.map +1 -0
  101. package/dist/esm/react/web/wallets/injected/locale/getInjectedWalletLocale.js +2 -0
  102. package/dist/esm/react/web/wallets/injected/locale/getInjectedWalletLocale.js.map +1 -1
  103. package/dist/esm/react/web/wallets/shared/locale/de.js +53 -0
  104. package/dist/esm/react/web/wallets/shared/locale/de.js.map +1 -0
  105. package/dist/esm/react/web/wallets/shared/locale/getConnectLocale.js +2 -0
  106. package/dist/esm/react/web/wallets/shared/locale/getConnectLocale.js.map +1 -1
  107. package/dist/esm/react/web/wallets/smartWallet/locale/de.js +11 -0
  108. package/dist/esm/react/web/wallets/smartWallet/locale/de.js.map +1 -0
  109. package/dist/esm/react/web/wallets/smartWallet/locale/getSmartWalletLocale.js +2 -0
  110. package/dist/esm/react/web/wallets/smartWallet/locale/getSmartWalletLocale.js.map +1 -1
  111. package/dist/esm/react/web/wallets/walletConnect/locale.js +4 -0
  112. package/dist/esm/react/web/wallets/walletConnect/locale.js.map +1 -1
  113. package/dist/esm/version.js +1 -1
  114. package/dist/esm/version.js.map +1 -1
  115. package/dist/types/exports/react.d.ts +1 -0
  116. package/dist/types/exports/react.d.ts.map +1 -1
  117. package/dist/types/extensions/marketplace/direct-listings/write/createListing.d.ts +5 -1
  118. package/dist/types/extensions/marketplace/direct-listings/write/createListing.d.ts.map +1 -1
  119. package/dist/types/pay/buyWithCrypto/getStatus.d.ts +1 -1
  120. package/dist/types/pay/buyWithCrypto/getStatus.d.ts.map +1 -1
  121. package/dist/types/react/core/hooks/wallets/useAutoConnect.d.ts.map +1 -1
  122. package/dist/types/react/core/providers/connection-manager.d.ts +21 -0
  123. package/dist/types/react/core/providers/connection-manager.d.ts.map +1 -1
  124. package/dist/types/react/web/ui/ConnectWallet/locale/de.d.ts +4 -0
  125. package/dist/types/react/web/ui/ConnectWallet/locale/de.d.ts.map +1 -0
  126. package/dist/types/react/web/ui/ConnectWallet/locale/getConnectLocale.d.ts.map +1 -1
  127. package/dist/types/react/web/ui/prebuilt/thirdweb/ClaimButton/index.d.ts +2 -0
  128. package/dist/types/react/web/ui/prebuilt/thirdweb/ClaimButton/index.d.ts.map +1 -1
  129. package/dist/types/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.d.ts +37 -0
  130. package/dist/types/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.d.ts.map +1 -0
  131. package/dist/types/react/web/ui/types.d.ts +1 -1
  132. package/dist/types/react/web/ui/types.d.ts.map +1 -1
  133. package/dist/types/react/web/wallets/injected/locale/de.d.ts +7 -0
  134. package/dist/types/react/web/wallets/injected/locale/de.d.ts.map +1 -0
  135. package/dist/types/react/web/wallets/injected/locale/getInjectedWalletLocale.d.ts.map +1 -1
  136. package/dist/types/react/web/wallets/shared/locale/de.d.ts +54 -0
  137. package/dist/types/react/web/wallets/shared/locale/de.d.ts.map +1 -0
  138. package/dist/types/react/web/wallets/shared/locale/getConnectLocale.d.ts.map +1 -1
  139. package/dist/types/react/web/wallets/smartWallet/locale/de.d.ts +4 -0
  140. package/dist/types/react/web/wallets/smartWallet/locale/de.d.ts.map +1 -0
  141. package/dist/types/react/web/wallets/smartWallet/locale/getSmartWalletLocale.d.ts.map +1 -1
  142. package/dist/types/react/web/wallets/walletConnect/locale.d.ts.map +1 -1
  143. package/dist/types/version.d.ts +1 -1
  144. package/dist/types/version.d.ts.map +1 -1
  145. package/package.json +1 -1
  146. package/src/cli/bin.ts +18 -0
  147. package/src/exports/react.ts +4 -0
  148. package/src/extensions/marketplace/direct-listings/write/createListing.ts +5 -1
  149. package/src/pay/buyWithCrypto/getStatus.ts +2 -1
  150. package/src/react/core/hooks/wallets/useActiveAccount.ts +2 -2
  151. package/src/react/core/hooks/wallets/useActiveWallet.ts +2 -2
  152. package/src/react/core/hooks/wallets/useActiveWalletChain.ts +2 -2
  153. package/src/react/core/hooks/wallets/useActiveWalletConnectionStatus.ts +2 -2
  154. package/src/react/core/hooks/wallets/useAutoConnect.ts +5 -3
  155. package/src/react/core/hooks/wallets/useConnect.ts +2 -2
  156. package/src/react/core/hooks/wallets/useConnectedWallets.ts +2 -2
  157. package/src/react/core/hooks/wallets/useDisconnect.ts +2 -2
  158. package/src/react/core/hooks/wallets/useIsAutoConnecting.ts +2 -2
  159. package/src/react/core/hooks/wallets/useSetActiveWallet.ts +2 -2
  160. package/src/react/core/hooks/wallets/useSetActiveWalletConnectionStatus.ts +2 -2
  161. package/src/react/core/hooks/wallets/useSwitchActiveWalletChain.ts +2 -2
  162. package/src/react/core/providers/connection-manager.tsx +15 -2
  163. package/src/react/web/ui/ConnectWallet/locale/de.ts +117 -0
  164. package/src/react/web/ui/ConnectWallet/locale/getConnectLocale.ts +3 -0
  165. package/src/react/web/ui/prebuilt/thirdweb/ClaimButton/index.tsx +2 -0
  166. package/src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/CreateDirectListingButton.test.tsx +29 -0
  167. package/src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx +165 -0
  168. package/src/react/web/ui/types.ts +7 -1
  169. package/src/react/web/wallets/injected/locale/de.ts +27 -0
  170. package/src/react/web/wallets/injected/locale/getInjectedWalletLocale.ts +2 -0
  171. package/src/react/web/wallets/shared/locale/de.ts +58 -0
  172. package/src/react/web/wallets/shared/locale/getConnectLocale.ts +2 -0
  173. package/src/react/web/wallets/smartWallet/locale/de.ts +13 -0
  174. package/src/react/web/wallets/smartWallet/locale/getSmartWalletLocale.ts +2 -0
  175. package/src/react/web/wallets/walletConnect/locale.ts +4 -0
  176. package/src/version.ts +1 -1
@@ -1,4 +1,4 @@
1
- import { useConnectionManager } from "../../providers/connection-manager.js";
1
+ import { useConnectionManagerCtx } from "../../providers/connection-manager.js";
2
2
 
3
3
  /**
4
4
  * Switch to blockchain with given chain id in the active wallet.
@@ -16,6 +16,6 @@ import { useConnectionManager } from "../../providers/connection-manager.js";
16
16
  * @walletConnection
17
17
  */
18
18
  export function useSwitchActiveWalletChain() {
19
- const manager = useConnectionManager();
19
+ const manager = useConnectionManagerCtx("useSwitchActiveWalletChain");
20
20
  return manager.switchActiveWalletChain;
21
21
  }
@@ -6,11 +6,24 @@ export const ConnectionManagerCtx = createContext<
6
6
  >(undefined);
7
7
 
8
8
  export function useConnectionManager() {
9
- const connectionManager = useContext(ConnectionManagerCtx);
9
+ const connectionManager = useConnectionManagerCtx("useConnectionManager");
10
10
  if (!connectionManager) {
11
11
  throw new Error(
12
- "useConnectionManager must be used within a ConnectionManager Provider",
12
+ "useConnectionManager must be used within a <ThirdwebProvider> Provider",
13
13
  );
14
14
  }
15
15
  return connectionManager;
16
16
  }
17
+
18
+ /**
19
+ * Use this instead of `useConnectionManager` to throw a more specific error message when used outside of a provider.
20
+ * @internal
21
+ */
22
+ export function useConnectionManagerCtx(hookname: string) {
23
+ const manager = useContext(ConnectionManagerCtx);
24
+ if (!manager) {
25
+ throw new Error(`${hookname} must be used within <ThirdwebProvider>`);
26
+ }
27
+
28
+ return manager;
29
+ }
@@ -0,0 +1,117 @@
1
+ import type { ConnectLocale } from "./types.js";
2
+
3
+ const connectLocaleDe: ConnectLocale = {
4
+ id: "de_DE",
5
+ signIn: "Anmelden",
6
+ defaultButtonTitle: "Wallet verbinden",
7
+ connecting: "Anmelden",
8
+ switchNetwork: "Netzwerk wechseln",
9
+ switchingNetwork: "Netzwerk wechseln",
10
+ defaultModalTitle: "Anmelden",
11
+ recommended: "Empfohlen",
12
+ installed: "Installiert",
13
+ buy: "Kaufen",
14
+ continueAsGuest: "Als Gast fortfahren",
15
+ connectAWallet: "Wallet verbinden",
16
+ newToWallets: `Was ist ein "Wallet"?`,
17
+ getStarted: "Loslegen",
18
+ guest: "Gast",
19
+ send: "Senden",
20
+ receive: "Empfangen",
21
+ currentNetwork: "Aktuelles Netzwerk",
22
+ switchAccount: "Account wechseln",
23
+ requestTestnetFunds: "Testnetz-Geld anfordern",
24
+ transactions: "Transaktionen",
25
+ payTransactions: "Fiat Transaktionen",
26
+ walletTransactions: "Wallet Transaktionen",
27
+ viewAllTransactions: "Alle Transaktionen anzeigen",
28
+ backupWallet: "Wallet sichern",
29
+ guestWalletWarning:
30
+ "Dies ist ein temporäres Gast-Wallet. Sichere das Wallet, wenn du den Zugriff darauf nicht verlieren möchtest",
31
+ switchTo: "Wechsle zu", // Used in "Switch to <Wallet-Name>"
32
+ connectedToSmartWallet: "Smart Account",
33
+ confirmInWallet: "Im Wallet bestätigen",
34
+ disconnectWallet: "Wallet trennen",
35
+ copyAddress: "Adresse kopieren",
36
+ personalWallet: "Persönliches Wallet",
37
+ smartWallet: "Smart Wallet",
38
+ or: "Oder",
39
+ goBackButton: "Zurück",
40
+ welcomeScreen: {
41
+ defaultTitle: "Dein Tor zur dezentralen Welt",
42
+ defaultSubtitle: "Verbinde ein Wallet, um loszulegen",
43
+ },
44
+ agreement: {
45
+ prefix: "Durch die Verbindung stimmst du diesen zu:",
46
+ termsOfService: "Nutzungsbedingungen",
47
+ and: "&",
48
+ privacyPolicy: "Datenschutzrichtlinien",
49
+ },
50
+ networkSelector: {
51
+ title: "Netzwerk auswählen",
52
+ mainnets: "Mainnets",
53
+ testnets: "Testnets",
54
+ allNetworks: "Alle",
55
+ addCustomNetwork: "Eigenes Netzwerk hinzufügen",
56
+ inputPlaceholder: "Netzwerk oder Chain ID suchen",
57
+ categoryLabel: {
58
+ recentlyUsed: "Zuletzt verwendet",
59
+ popular: "Beliebt",
60
+ others: "Alle Netzwerke",
61
+ },
62
+ loading: "Laden",
63
+ failedToSwitch: "Netzwerkwechsel fehlgeschlagen",
64
+ },
65
+ receiveFundsScreen: {
66
+ title: "Geld empfangen",
67
+ instruction:
68
+ "Kopiere die Wallet-Adresse, um Geld an dieses Wallet zu senden",
69
+ },
70
+ sendFundsScreen: {
71
+ title: "Geld senden",
72
+ submitButton: "Senden",
73
+ token: "Token",
74
+ sendTo: "Senden an",
75
+ amount: "Betrag",
76
+ successMessage: "Transaktion erfolgreich",
77
+ invalidAddress: "Ungültige Adresse",
78
+ noTokensFound: "Keine Token gefunden",
79
+ searchToken: "Token suchen oder einfügen",
80
+ transactionFailed: "Transaktion fehlgeschlagen",
81
+ transactionRejected: "Transaktion abgelehnt",
82
+ insufficientFunds: "Nicht genügend Guthaben",
83
+ selectTokenTitle: "Token auswählen",
84
+ sending: "Sende",
85
+ },
86
+ signatureScreen: {
87
+ instructionScreen: {
88
+ title: "Anmelden",
89
+ instruction: "Signiere die Anmeldeanfrage in deinem Wallet",
90
+ signInButton: "Anmelden",
91
+ disconnectWallet: "Wallet trennen",
92
+ },
93
+ signingScreen: {
94
+ title: "Signaturanfrage",
95
+ prompt: "Signiere die Signaturanfrage in deinem Wallet",
96
+ promptForSafe:
97
+ "Signiere die Signaturanfrage in deinem Wallet, um fortzufahren",
98
+ approveTransactionInSafe: "Transaktion im Safe bestätigen",
99
+ tryAgain: "Erneut versuchen",
100
+ failedToSignIn: "Anmeldung fehlgeschlagen",
101
+ inProgress: "Warte auf Bestätigung",
102
+ },
103
+ },
104
+ manageWallet: {
105
+ title: "Wallet verwalten",
106
+ connectAnApp: "App verbinden",
107
+ exportPrivateKey: "PrivateKey exportieren",
108
+ },
109
+ viewFunds: {
110
+ title: "Guthaben anzeigen",
111
+ viewNFTs: "NFTs anzeigen",
112
+ viewTokens: "Tokens anzeigen",
113
+ viewAssets: "Assets anzeigen",
114
+ },
115
+ };
116
+
117
+ export default connectLocaleDe;
@@ -15,6 +15,9 @@ export async function getConnectLocale(localeId: LocaleId) {
15
15
  case "vi_VN": {
16
16
  return (await import("./vi.js")).default;
17
17
  }
18
+ case "de_DE": {
19
+ return (await import("./de.js")).default;
20
+ }
18
21
  default: {
19
22
  return (await import("./en.js")).default;
20
23
  }
@@ -151,6 +151,8 @@ export function ClaimButton(props: ClaimButtonProps) {
151
151
  }
152
152
 
153
153
  /**
154
+ * We can only get the image and name for Edition Drop
155
+ * For NFT Drop and Token Drop we fall back to the name & image of the contract
154
156
  * @internal
155
157
  */
156
158
  export async function getPayMetadata(
@@ -0,0 +1,29 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { render, screen } from "~test/react-render.js";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import { sepolia } from "../../../../../../chains/chain-definitions/sepolia.js";
5
+ import { CreateDirectListingButton } from "./index.js";
6
+
7
+ const client = TEST_CLIENT;
8
+
9
+ // marketplace v3 on sepolia
10
+ const marketplaceAddress = "0xe0eFD6fb388405b67b3E9FaFc02649c70E749f03";
11
+
12
+ describe.runIf(process.env.TW_SECRET_KEY)("BuyDirectListingButton", () => {
13
+ it("should render", () => {
14
+ render(
15
+ <CreateDirectListingButton
16
+ client={client}
17
+ chain={sepolia}
18
+ contractAddress={marketplaceAddress}
19
+ assetContractAddress="0x3cf279b3248E164F3e5C341826B878d350EC6AB1"
20
+ tokenId={0n}
21
+ pricePerToken="0.1"
22
+ >
23
+ Sell NFT
24
+ </CreateDirectListingButton>,
25
+ );
26
+ expect(screen.queryByText("Sell NFT")).toBeInTheDocument();
27
+ expect(screen.getByRole("button")).toBeInTheDocument();
28
+ });
29
+ });
@@ -0,0 +1,165 @@
1
+ "use client";
2
+
3
+ import { useCallback } from "react";
4
+ import type { Chain } from "../../../../../../chains/types.js";
5
+ import type { ThirdwebClient } from "../../../../../../client/client.js";
6
+ import { getContract } from "../../../../../../contract/contract.js";
7
+ import { getApprovalForTransaction } from "../../../../../../extensions/erc20/write/getApprovalForTransaction.js";
8
+ import {
9
+ type CreateListingParams,
10
+ createListing,
11
+ } from "../../../../../../extensions/marketplace/direct-listings/write/createListing.js";
12
+ import type { BaseTransactionOptions } from "../../../../../../transaction/types.js";
13
+ import { useReadContract } from "../../../../../core/hooks/contract/useReadContract.js";
14
+ import type { TransactionButtonProps } from "../../../../../core/hooks/transaction/transaction-button-utils.js";
15
+ import { useSendAndConfirmTransaction } from "../../../../../core/hooks/transaction/useSendAndConfirmTransaction.js";
16
+ import { useActiveAccount } from "../../../../../core/hooks/wallets/useActiveAccount.js";
17
+ import { TransactionButton } from "../../../TransactionButton/index.js";
18
+
19
+ export type CreateDirectListingButtonProps = Omit<
20
+ TransactionButtonProps,
21
+ "transaction"
22
+ > &
23
+ CreateListingParams & {
24
+ contractAddress: string;
25
+ chain: Chain;
26
+ client: ThirdwebClient;
27
+ };
28
+
29
+ /**
30
+ * This button is used to create Direct listings for the thirdweb Marketplace v3 contract
31
+ *
32
+ * It uses the [`TransactionButton`](https://portal.thirdweb.com/references/typescript/v5/TransactionButton)
33
+ * and the [`createListing` extension](https://portal.thirdweb.com/references/typescript/v5/marketplace/createListing) under the hood
34
+ * which means it inherits all the props of those 2 components.
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * import { CreateDirectListingButton } from "thirdweb/react";
39
+ *
40
+ * <CreateDirectListingButton
41
+ * contractAddress="0x..." // contract address for the marketplace-v3
42
+ * chain={...} // the chain which the marketplace contract is deployed on
43
+ *
44
+ * // These props below are the same props for `createListing`
45
+ * // to get the full list, check the docs link above
46
+ * tokenId={0n}
47
+ * assetContractAddress="0x..." // The NFT contract address whose NFT(s) you want to sell
48
+ * pricePerToken={"0.1"} // sell for 0.1 <native token>
49
+ * >
50
+ * Sell NFT
51
+ * </CreateDirectListingButton>
52
+ * ```
53
+ * @component
54
+ */
55
+ export function CreateDirectListingButton(
56
+ props: CreateDirectListingButtonProps,
57
+ ) {
58
+ const {
59
+ contractAddress,
60
+ chain,
61
+ client,
62
+ children,
63
+ payModal,
64
+ assetContractAddress,
65
+ tokenId,
66
+ } = props;
67
+ const marketplaceContract = getContract({
68
+ address: contractAddress,
69
+ chain,
70
+ client,
71
+ });
72
+ const account = useActiveAccount();
73
+ const defaultPayModalMetadata = payModal ? payModal.metadata : undefined;
74
+ const { data: payMetadata } = useReadContract(getPayMetadata, {
75
+ contract: getContract({
76
+ address: assetContractAddress,
77
+ chain,
78
+ client,
79
+ }),
80
+ tokenId,
81
+ queryOptions: {
82
+ enabled: !defaultPayModalMetadata,
83
+ },
84
+ });
85
+ const { mutateAsync } = useSendAndConfirmTransaction();
86
+
87
+ const prepareTransaction = useCallback(async () => {
88
+ if (!account) {
89
+ throw new Error("No account detected");
90
+ }
91
+ const listingTx = createListing({
92
+ contract: marketplaceContract,
93
+ ...props,
94
+ });
95
+ const approveTx = await getApprovalForTransaction({
96
+ transaction: listingTx,
97
+ account,
98
+ });
99
+ if (approveTx) {
100
+ await mutateAsync(approveTx);
101
+ }
102
+ return listingTx;
103
+ }, [marketplaceContract, props, account, mutateAsync]);
104
+
105
+ return (
106
+ <TransactionButton
107
+ transaction={() => prepareTransaction()}
108
+ payModal={{
109
+ metadata: defaultPayModalMetadata || payMetadata,
110
+ ...payModal,
111
+ }}
112
+ {...props}
113
+ >
114
+ {children}
115
+ </TransactionButton>
116
+ );
117
+ }
118
+
119
+ /**
120
+ * @internal
121
+ */
122
+ async function getPayMetadata(
123
+ options: BaseTransactionOptions<{
124
+ tokenId: bigint;
125
+ }>,
126
+ ): Promise<{ name?: string; image?: string }> {
127
+ const [
128
+ { isERC721 },
129
+ { isERC1155 },
130
+ { getContractMetadata },
131
+ { getNFT: getERC721 },
132
+ { getNFT: getERC1155 },
133
+ ] = await Promise.all([
134
+ import("../../../../../../extensions/erc721/read/isERC721.js"),
135
+ import("../../../../../../extensions/erc1155/read/isERC1155.js"),
136
+ import("../../../../../../extensions/common/read/getContractMetadata.js"),
137
+ import("../../../../../../extensions/erc721/read/getNFT.js"),
138
+ import("../../../../../../extensions/erc1155/read/getNFT.js"),
139
+ ]);
140
+ const [is721, is1155, contractMetadata] = await Promise.all([
141
+ isERC721(options),
142
+ isERC1155(options),
143
+ getContractMetadata(options),
144
+ ]);
145
+ if (is721) {
146
+ const nft = await getERC721(options);
147
+ return {
148
+ image: nft?.metadata?.image,
149
+ name: nft?.metadata?.name,
150
+ };
151
+ }
152
+
153
+ if (is1155) {
154
+ const nft = await getERC1155(options);
155
+ return {
156
+ image: nft?.metadata?.image,
157
+ name: nft?.metadata?.name,
158
+ };
159
+ }
160
+
161
+ return {
162
+ image: contractMetadata?.image,
163
+ name: contractMetadata?.name,
164
+ };
165
+ }
@@ -1,2 +1,8 @@
1
1
  // valid combinations of ISO language code and ISO country code
2
- export type LocaleId = "en_US" | "es_ES" | "ja_JP" | "tl_PH" | "vi_VN";
2
+ export type LocaleId =
3
+ | "en_US"
4
+ | "es_ES"
5
+ | "ja_JP"
6
+ | "tl_PH"
7
+ | "vi_VN"
8
+ | "de_DE";
@@ -0,0 +1,27 @@
1
+ import type { InjectedWalletLocale } from "./types.js";
2
+
3
+ /**
4
+ * @internal
5
+ */
6
+ const injectedWalletLocaleEn = (wallet: string): InjectedWalletLocale => ({
7
+ connectionScreen: {
8
+ inProgress: "Verbindung wird hergestellt",
9
+ failed: "Verbindung fehlgeschlagen",
10
+ instruction: `Akzeptiere die Verbindung in ${wallet}`,
11
+ retry: "Erneut versuchen",
12
+ },
13
+ getStartedScreen: {
14
+ instruction: `Scanne den QR Code um ${wallet} herunterzuladen`,
15
+ },
16
+ scanScreen: {
17
+ instruction: `Scanne den QR Code um ${wallet} zu verbinden`,
18
+ },
19
+ getStartedLink: `Du hast ${wallet} nicht?`,
20
+ download: {
21
+ chrome: "Chrome Extension installieren",
22
+ android: "Von Google Play herunterladen",
23
+ iOS: "Von App Store herunterladen",
24
+ },
25
+ });
26
+
27
+ export default injectedWalletLocaleEn;
@@ -16,6 +16,8 @@ export async function getInjectedWalletLocale(
16
16
  return (await import("./tl.js")).default;
17
17
  case "vi_VN":
18
18
  return (await import("./vi.js")).default;
19
+ case "de_DE":
20
+ return (await import("./de.js")).default;
19
21
  default:
20
22
  return (await import("./en.js")).default;
21
23
  }
@@ -0,0 +1,58 @@
1
+ import type { InAppWalletLocale } from "./types.js";
2
+
3
+ export default {
4
+ signInWithGoogle: "Google",
5
+ signInWithFacebook: "Facebook",
6
+ signInWithApple: "Apple",
7
+ signInWithDiscord: "Discord",
8
+ emailPlaceholder: "E-Mail Adresse",
9
+ submitEmail: "Weiter",
10
+ signIn: "Anmelden",
11
+ or: "Oder",
12
+ emailRequired: "E-Mail Adresse ist erforderlich",
13
+ invalidEmail: "Ungültige E-Mail Adresse",
14
+ maxAccountsExceeded:
15
+ "Maximale Anzahl von Konten überschritten. Bitte informiere den App-Entwickler.",
16
+ socialLoginScreen: {
17
+ title: "Anmelden",
18
+ instruction: "Melde dich im Popup Fenster an",
19
+ failed: "Anmeldung fehlgeschlagen",
20
+ retry: "Erneut versuchen",
21
+ },
22
+ emailLoginScreen: {
23
+ title: "Anmelden",
24
+ enterCodeSendTo: "Gib den Bestätigungscode ein. Gesendet an",
25
+ newDeviceDetected: "Neues Gerät erkannt",
26
+ enterRecoveryCode:
27
+ "Gib den Wiederherstellungscode ein, der dir per E-Mail zugesandt wurde, als du dich zum ersten Mal angemeldet hast",
28
+ invalidCode: "Ungültiger Bestätigungscode",
29
+ invalidCodeOrRecoveryCode:
30
+ "Ungültiger Bestätigungscode oder Wiederherstellungscode",
31
+ verify: "Bestätigen",
32
+ failedToSendCode: "Bestätigungscode konnte nicht gesendet werden",
33
+ sendingCode: "Bestätigungscode wird gesendet",
34
+ resendCode: "Bestätigungscode erneut senden",
35
+ },
36
+ createPassword: {
37
+ title: "Passwort erstellen",
38
+ instruction:
39
+ "Lege ein Passwort für dein Konto fest. Du benötigst dieses Passwort, um dich von einem neuen Gerät aus anzumelden.",
40
+ saveInstruction: "Stelle sicher, dass du es gespeichert hast",
41
+ inputPlaceholder: "Gib dein Passwort ein",
42
+ confirmation: "Ich habe mein Passwort gespeichert",
43
+ submitButton: "Passwort festlegen",
44
+ failedToSetPassword: "Passwort festlegen fehlgeschlagen",
45
+ },
46
+ enterPassword: {
47
+ title: "Passwort eingeben",
48
+ instruction: "Gib das Passwort für dein Konto ein",
49
+ inputPlaceholder: "Gib dein Passwort ein",
50
+ submitButton: "Überprüfen",
51
+ wrongPassword: "Falsches Passwort",
52
+ },
53
+ signInWithEmail: "Mit E-Mail Adresse anmelden",
54
+ invalidPhone: "Ungültige Telefonnummer",
55
+ phonePlaceholder: "Telefonnummer",
56
+ signInWithPhone: "Mit Telefonnummer anmelden",
57
+ phoneRequired: "Telefonnummer ist erforderlich",
58
+ } satisfies InAppWalletLocale;
@@ -16,6 +16,8 @@ export async function getInAppWalletLocale(
16
16
  return (await import("./tl.js")).default;
17
17
  case "vi_VN":
18
18
  return (await import("./vi.js")).default;
19
+ case "de_DE":
20
+ return (await import("./de.js")).default;
19
21
  default:
20
22
  return (await import("./en.js")).default;
21
23
  }
@@ -0,0 +1,13 @@
1
+ import type { SmartWalletLocale } from "./types.js";
2
+
3
+ const smartWalletLocalEn: SmartWalletLocale = {
4
+ connecting: "Verbindung zum Smart Account wird hergestellt",
5
+ failedToConnect: "Verbindung zum Smart Account fehlgeschlagen",
6
+ wrongNetworkScreen: {
7
+ title: "Falsches Netzwerk",
8
+ subtitle: "Dein Wallet ist nicht mit dem erforderlichen Netzwerk verbunden",
9
+ failedToSwitch: "Netzwerkwechsel fehlgeschlagen",
10
+ },
11
+ };
12
+
13
+ export default smartWalletLocalEn;
@@ -16,6 +16,8 @@ export async function getSmartWalletLocale(
16
16
  return (await import("./tl.js")).default;
17
17
  case "vi_VN":
18
18
  return (await import("./vi.js")).default;
19
+ case "de_DE":
20
+ return (await import("./de.js")).default;
19
21
  default:
20
22
  return (await import("./en.js")).default;
21
23
  }
@@ -29,4 +29,8 @@ export const walletConnectLocales: Record<LocaleId, WalletConnectLocale> = {
29
29
  scanInstruction: "Quét mã QR bằng ứng dụng ví để kết nối",
30
30
  openWCModal: "Mở giao diện WalletConnect",
31
31
  },
32
+ de_DE: {
33
+ scanInstruction: "Scanne dies mit deiner Wallet-App, um zu verbinden",
34
+ openWCModal: "Offizielles WalletConnect-Modal öffnen",
35
+ },
32
36
  };
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = "5.42.0";
1
+ export const version = "5.43.0-nightly-75cc5a6434d29dbfe69b6cd6344a7c8426d59fac-20240731000316";