thirdweb 5.69.0 → 5.70.0-nightly-ecaa304a812188da3c81888bb52ca6064093c139-20241121000332

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 (453) hide show
  1. package/dist/cjs/client/client.js +1 -0
  2. package/dist/cjs/client/client.js.map +1 -1
  3. package/dist/cjs/exports/react.js +32 -3
  4. package/dist/cjs/exports/react.js.map +1 -1
  5. package/dist/cjs/extensions/erc721/lazyMinting/read/getBatchesToReveal.js +1 -1
  6. package/dist/cjs/extensions/modules/common/checkModulesCompatibility.js +5 -0
  7. package/dist/cjs/extensions/modules/common/checkModulesCompatibility.js.map +1 -1
  8. package/dist/cjs/extensions/pack/createNewPack.js +2 -1
  9. package/dist/cjs/extensions/pack/createNewPack.js.map +1 -1
  10. package/dist/cjs/extensions/prebuilts/deploy-pack.js +1 -0
  11. package/dist/cjs/extensions/prebuilts/deploy-pack.js.map +1 -1
  12. package/dist/cjs/extensions/thirdweb/write/publish.js +4 -0
  13. package/dist/cjs/extensions/thirdweb/write/publish.js.map +1 -1
  14. package/dist/cjs/react/core/hooks/others/useChainQuery.js +3 -3
  15. package/dist/cjs/react/core/hooks/rpc/useBlockNumber.js +1 -1
  16. package/dist/cjs/react/core/hooks/wallets/useCapabilities.js +1 -1
  17. package/dist/cjs/react/core/hooks/wallets/useSendCalls.js +3 -3
  18. package/dist/cjs/react/core/providers/connection-manager.js +3 -0
  19. package/dist/cjs/react/core/providers/connection-manager.js.map +1 -1
  20. package/dist/cjs/react/core/utils/wallet.js +2 -1
  21. package/dist/cjs/react/core/utils/wallet.js.map +1 -1
  22. package/dist/cjs/react/core/utils/walletIcon.js +2 -0
  23. package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
  24. package/dist/cjs/react/native/hooks/wallets/useProfiles.js +1 -1
  25. package/dist/cjs/react/native/providers/thirdweb-provider.js +1 -0
  26. package/dist/cjs/react/native/providers/thirdweb-provider.js.map +1 -1
  27. package/dist/cjs/react/native/ui/AutoConnect/AutoConnect.js +1 -0
  28. package/dist/cjs/react/native/ui/AutoConnect/AutoConnect.js.map +1 -1
  29. package/dist/cjs/react/native/ui/connect/ConnectModal.js +1 -0
  30. package/dist/cjs/react/native/ui/connect/ConnectModal.js.map +1 -1
  31. package/dist/cjs/react/native/ui/transaction/TransactionButton.js +1 -0
  32. package/dist/cjs/react/native/ui/transaction/TransactionButton.js.map +1 -1
  33. package/dist/cjs/react/web/hooks/wallets/useProfiles.js +1 -1
  34. package/dist/cjs/react/web/providers/thirdweb-provider.js +1 -0
  35. package/dist/cjs/react/web/providers/thirdweb-provider.js.map +1 -1
  36. package/dist/cjs/react/web/ui/AutoConnect/AutoConnect.js +1 -0
  37. package/dist/cjs/react/web/ui/AutoConnect/AutoConnect.js.map +1 -1
  38. package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js +19 -4
  39. package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
  40. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +21 -19
  41. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  42. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +18 -13
  43. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  44. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +1 -0
  45. package/dist/cjs/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  46. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +9 -0
  47. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  48. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +15 -2
  49. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  50. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +2 -2
  51. package/dist/cjs/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  52. package/dist/cjs/react/web/ui/PayEmbed.js +1 -0
  53. package/dist/cjs/react/web/ui/PayEmbed.js.map +1 -1
  54. package/dist/cjs/react/web/ui/SiteEmbed.js +3 -2
  55. package/dist/cjs/react/web/ui/SiteEmbed.js.map +1 -1
  56. package/dist/cjs/react/web/ui/SiteLink.js +2 -1
  57. package/dist/cjs/react/web/ui/SiteLink.js.map +1 -1
  58. package/dist/cjs/react/web/ui/TransactionButton/index.js +1 -0
  59. package/dist/cjs/react/web/ui/TransactionButton/index.js.map +1 -1
  60. package/dist/cjs/react/web/ui/prebuilt/Account/address.js +49 -0
  61. package/dist/cjs/react/web/ui/prebuilt/Account/address.js.map +1 -0
  62. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js +144 -0
  63. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js.map +1 -0
  64. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js +122 -0
  65. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js.map +1 -0
  66. package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js +16 -0
  67. package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js.map +1 -0
  68. package/dist/cjs/react/web/ui/prebuilt/Account/name.js +106 -0
  69. package/dist/cjs/react/web/ui/prebuilt/Account/name.js.map +1 -0
  70. package/dist/cjs/react/web/ui/prebuilt/Account/provider.js +43 -0
  71. package/dist/cjs/react/web/ui/prebuilt/Account/provider.js.map +1 -0
  72. package/dist/cjs/react/web/ui/prebuilt/NFT/description.js +69 -0
  73. package/dist/cjs/react/web/ui/prebuilt/NFT/description.js.map +1 -0
  74. package/dist/cjs/react/web/ui/prebuilt/NFT/hooks.js +45 -0
  75. package/dist/cjs/react/web/ui/prebuilt/NFT/hooks.js.map +1 -0
  76. package/dist/cjs/react/web/ui/prebuilt/NFT/media.js +82 -0
  77. package/dist/cjs/react/web/ui/prebuilt/NFT/media.js.map +1 -0
  78. package/dist/cjs/react/web/ui/prebuilt/NFT/name.js +68 -0
  79. package/dist/cjs/react/web/ui/prebuilt/NFT/name.js.map +1 -0
  80. package/dist/cjs/react/web/ui/prebuilt/NFT/provider.js +55 -0
  81. package/dist/cjs/react/web/ui/prebuilt/NFT/provider.js.map +1 -0
  82. package/dist/cjs/react/web/ui/prebuilt/Token/icon.js +113 -0
  83. package/dist/cjs/react/web/ui/prebuilt/Token/icon.js.map +1 -0
  84. package/dist/cjs/react/web/ui/prebuilt/Token/name.js +137 -0
  85. package/dist/cjs/react/web/ui/prebuilt/Token/name.js.map +1 -0
  86. package/dist/cjs/react/web/ui/prebuilt/Token/provider.js +54 -0
  87. package/dist/cjs/react/web/ui/prebuilt/Token/provider.js.map +1 -0
  88. package/dist/cjs/react/web/ui/prebuilt/Token/symbol.js +134 -0
  89. package/dist/cjs/react/web/ui/prebuilt/Token/symbol.js.map +1 -0
  90. package/dist/cjs/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.js +1 -0
  91. package/dist/cjs/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.js.map +1 -1
  92. package/dist/cjs/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js +1 -0
  93. package/dist/cjs/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js.map +1 -1
  94. package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +1 -0
  95. package/dist/cjs/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
  96. package/dist/cjs/storage/unpin.js +1 -1
  97. package/dist/cjs/storage/upload.js +1 -0
  98. package/dist/cjs/storage/upload.js.map +1 -1
  99. package/dist/cjs/transaction/actions/to-serializable-transaction.js +1 -1
  100. package/dist/cjs/transaction/actions/zksync/send-eip712-transaction.js +5 -0
  101. package/dist/cjs/transaction/actions/zksync/send-eip712-transaction.js.map +1 -1
  102. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js +5 -0
  103. package/dist/cjs/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
  104. package/dist/cjs/utils/config.js +9 -0
  105. package/dist/cjs/utils/config.js.map +1 -1
  106. package/dist/cjs/utils/json.js +7 -4
  107. package/dist/cjs/utils/json.js.map +1 -1
  108. package/dist/cjs/version.js +1 -1
  109. package/dist/cjs/version.js.map +1 -1
  110. package/dist/cjs/wallets/eip5792/get-calls-status.js +1 -1
  111. package/dist/cjs/wallets/eip5792/get-capabilities.js +1 -1
  112. package/dist/cjs/wallets/eip5792/send-calls.js +2 -2
  113. package/dist/cjs/wallets/eip5792/wait-for-bundle.js +1 -1
  114. package/dist/cjs/wallets/in-app/core/users/getUser.js +1 -1
  115. package/dist/cjs/wallets/in-app/web/ecosystem.js +7 -17
  116. package/dist/cjs/wallets/in-app/web/ecosystem.js.map +1 -1
  117. package/dist/cjs/wallets/in-app/web/in-app.js +2 -17
  118. package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
  119. package/dist/cjs/wallets/in-app/web/lib/auth/index.js +1 -0
  120. package/dist/cjs/wallets/in-app/web/lib/auth/index.js.map +1 -1
  121. package/dist/cjs/wallets/in-app/web/lib/auth/passkeys.js +17 -16
  122. package/dist/cjs/wallets/in-app/web/lib/auth/passkeys.js.map +1 -1
  123. package/dist/cjs/wallets/smart/smart-wallet.js +1 -0
  124. package/dist/cjs/wallets/smart/smart-wallet.js.map +1 -1
  125. package/dist/esm/client/client.js +1 -0
  126. package/dist/esm/client/client.js.map +1 -1
  127. package/dist/esm/exports/react.js +17 -1
  128. package/dist/esm/exports/react.js.map +1 -1
  129. package/dist/esm/extensions/erc721/lazyMinting/read/getBatchesToReveal.js +1 -1
  130. package/dist/esm/extensions/modules/common/checkModulesCompatibility.js +5 -0
  131. package/dist/esm/extensions/modules/common/checkModulesCompatibility.js.map +1 -1
  132. package/dist/esm/extensions/pack/createNewPack.js +2 -1
  133. package/dist/esm/extensions/pack/createNewPack.js.map +1 -1
  134. package/dist/esm/extensions/prebuilts/deploy-pack.js +1 -0
  135. package/dist/esm/extensions/prebuilts/deploy-pack.js.map +1 -1
  136. package/dist/esm/extensions/thirdweb/write/publish.js +4 -0
  137. package/dist/esm/extensions/thirdweb/write/publish.js.map +1 -1
  138. package/dist/esm/react/core/hooks/others/useChainQuery.js +3 -3
  139. package/dist/esm/react/core/hooks/rpc/useBlockNumber.js +1 -1
  140. package/dist/esm/react/core/hooks/wallets/useCapabilities.js +1 -1
  141. package/dist/esm/react/core/hooks/wallets/useSendCalls.js +3 -3
  142. package/dist/esm/react/core/providers/connection-manager.js +3 -0
  143. package/dist/esm/react/core/providers/connection-manager.js.map +1 -1
  144. package/dist/esm/react/core/utils/wallet.js +2 -1
  145. package/dist/esm/react/core/utils/wallet.js.map +1 -1
  146. package/dist/esm/react/core/utils/walletIcon.js +2 -0
  147. package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
  148. package/dist/esm/react/native/hooks/wallets/useProfiles.js +1 -1
  149. package/dist/esm/react/native/providers/thirdweb-provider.js +1 -0
  150. package/dist/esm/react/native/providers/thirdweb-provider.js.map +1 -1
  151. package/dist/esm/react/native/ui/AutoConnect/AutoConnect.js +1 -0
  152. package/dist/esm/react/native/ui/AutoConnect/AutoConnect.js.map +1 -1
  153. package/dist/esm/react/native/ui/connect/ConnectModal.js +1 -0
  154. package/dist/esm/react/native/ui/connect/ConnectModal.js.map +1 -1
  155. package/dist/esm/react/native/ui/transaction/TransactionButton.js +1 -0
  156. package/dist/esm/react/native/ui/transaction/TransactionButton.js.map +1 -1
  157. package/dist/esm/react/web/hooks/wallets/useProfiles.js +1 -1
  158. package/dist/esm/react/web/providers/thirdweb-provider.js +1 -0
  159. package/dist/esm/react/web/providers/thirdweb-provider.js.map +1 -1
  160. package/dist/esm/react/web/ui/AutoConnect/AutoConnect.js +1 -0
  161. package/dist/esm/react/web/ui/AutoConnect/AutoConnect.js.map +1 -1
  162. package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js +19 -4
  163. package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
  164. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +21 -19
  165. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  166. package/dist/esm/react/web/ui/ConnectWallet/Details.js +19 -14
  167. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  168. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js +1 -0
  169. package/dist/esm/react/web/ui/ConnectWallet/Modal/ConnectEmbed.js.map +1 -1
  170. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js +9 -0
  171. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.js.map +1 -1
  172. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js +15 -2
  173. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.js.map +1 -1
  174. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js +2 -2
  175. package/dist/esm/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.js.map +1 -1
  176. package/dist/esm/react/web/ui/PayEmbed.js +1 -0
  177. package/dist/esm/react/web/ui/PayEmbed.js.map +1 -1
  178. package/dist/esm/react/web/ui/SiteEmbed.js +3 -2
  179. package/dist/esm/react/web/ui/SiteEmbed.js.map +1 -1
  180. package/dist/esm/react/web/ui/SiteLink.js +2 -1
  181. package/dist/esm/react/web/ui/SiteLink.js.map +1 -1
  182. package/dist/esm/react/web/ui/TransactionButton/index.js +1 -0
  183. package/dist/esm/react/web/ui/TransactionButton/index.js.map +1 -1
  184. package/dist/esm/react/web/ui/prebuilt/Account/address.js +46 -0
  185. package/dist/esm/react/web/ui/prebuilt/Account/address.js.map +1 -0
  186. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js +141 -0
  187. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js.map +1 -0
  188. package/dist/esm/react/web/ui/prebuilt/Account/balance.js +119 -0
  189. package/dist/esm/react/web/ui/prebuilt/Account/balance.js.map +1 -0
  190. package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js +13 -0
  191. package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js.map +1 -0
  192. package/dist/esm/react/web/ui/prebuilt/Account/name.js +103 -0
  193. package/dist/esm/react/web/ui/prebuilt/Account/name.js.map +1 -0
  194. package/dist/esm/react/web/ui/prebuilt/Account/provider.js +39 -0
  195. package/dist/esm/react/web/ui/prebuilt/Account/provider.js.map +1 -0
  196. package/dist/esm/react/web/ui/prebuilt/NFT/description.js +66 -0
  197. package/dist/esm/react/web/ui/prebuilt/NFT/description.js.map +1 -0
  198. package/dist/esm/react/web/ui/prebuilt/NFT/hooks.js +41 -0
  199. package/dist/esm/react/web/ui/prebuilt/NFT/hooks.js.map +1 -0
  200. package/dist/esm/react/web/ui/prebuilt/NFT/media.js +79 -0
  201. package/dist/esm/react/web/ui/prebuilt/NFT/media.js.map +1 -0
  202. package/dist/esm/react/web/ui/prebuilt/NFT/name.js +65 -0
  203. package/dist/esm/react/web/ui/prebuilt/NFT/name.js.map +1 -0
  204. package/dist/esm/react/web/ui/prebuilt/NFT/provider.js +50 -0
  205. package/dist/esm/react/web/ui/prebuilt/NFT/provider.js.map +1 -0
  206. package/dist/esm/react/web/ui/prebuilt/Token/icon.js +110 -0
  207. package/dist/esm/react/web/ui/prebuilt/Token/icon.js.map +1 -0
  208. package/dist/esm/react/web/ui/prebuilt/Token/name.js +134 -0
  209. package/dist/esm/react/web/ui/prebuilt/Token/name.js.map +1 -0
  210. package/dist/esm/react/web/ui/prebuilt/Token/provider.js +50 -0
  211. package/dist/esm/react/web/ui/prebuilt/Token/provider.js.map +1 -0
  212. package/dist/esm/react/web/ui/prebuilt/Token/symbol.js +131 -0
  213. package/dist/esm/react/web/ui/prebuilt/Token/symbol.js.map +1 -0
  214. package/dist/esm/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.js +1 -0
  215. package/dist/esm/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.js.map +1 -1
  216. package/dist/esm/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js +1 -0
  217. package/dist/esm/react/web/ui/prebuilt/thirdweb/ClaimButton/index.js.map +1 -1
  218. package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js +1 -0
  219. package/dist/esm/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.js.map +1 -1
  220. package/dist/esm/storage/unpin.js +1 -1
  221. package/dist/esm/storage/upload.js +1 -0
  222. package/dist/esm/storage/upload.js.map +1 -1
  223. package/dist/esm/transaction/actions/to-serializable-transaction.js +1 -1
  224. package/dist/esm/transaction/actions/zksync/send-eip712-transaction.js +5 -0
  225. package/dist/esm/transaction/actions/zksync/send-eip712-transaction.js.map +1 -1
  226. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js +5 -0
  227. package/dist/esm/utils/any-evm/zksync/isZkSyncChain.js.map +1 -1
  228. package/dist/esm/utils/config.js +9 -0
  229. package/dist/esm/utils/config.js.map +1 -1
  230. package/dist/esm/utils/json.js +6 -2
  231. package/dist/esm/utils/json.js.map +1 -1
  232. package/dist/esm/version.js +1 -1
  233. package/dist/esm/version.js.map +1 -1
  234. package/dist/esm/wallets/eip5792/get-calls-status.js +1 -1
  235. package/dist/esm/wallets/eip5792/get-capabilities.js +1 -1
  236. package/dist/esm/wallets/eip5792/send-calls.js +2 -2
  237. package/dist/esm/wallets/eip5792/wait-for-bundle.js +1 -1
  238. package/dist/esm/wallets/in-app/core/users/getUser.js +1 -1
  239. package/dist/esm/wallets/in-app/web/ecosystem.js +7 -17
  240. package/dist/esm/wallets/in-app/web/ecosystem.js.map +1 -1
  241. package/dist/esm/wallets/in-app/web/in-app.js +2 -17
  242. package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
  243. package/dist/esm/wallets/in-app/web/lib/auth/index.js +1 -0
  244. package/dist/esm/wallets/in-app/web/lib/auth/index.js.map +1 -1
  245. package/dist/esm/wallets/in-app/web/lib/auth/passkeys.js +18 -17
  246. package/dist/esm/wallets/in-app/web/lib/auth/passkeys.js.map +1 -1
  247. package/dist/esm/wallets/smart/smart-wallet.js +1 -0
  248. package/dist/esm/wallets/smart/smart-wallet.js.map +1 -1
  249. package/dist/types/client/client.d.ts +1 -0
  250. package/dist/types/client/client.d.ts.map +1 -1
  251. package/dist/types/exports/react.d.ts +14 -1
  252. package/dist/types/exports/react.d.ts.map +1 -1
  253. package/dist/types/extensions/erc721/lazyMinting/read/getBatchesToReveal.d.ts +1 -1
  254. package/dist/types/extensions/modules/common/checkModulesCompatibility.d.ts +5 -0
  255. package/dist/types/extensions/modules/common/checkModulesCompatibility.d.ts.map +1 -1
  256. package/dist/types/extensions/pack/createNewPack.d.ts +2 -2
  257. package/dist/types/extensions/pack/createNewPack.d.ts.map +1 -1
  258. package/dist/types/extensions/prebuilts/deploy-pack.d.ts +1 -0
  259. package/dist/types/extensions/prebuilts/deploy-pack.d.ts.map +1 -1
  260. package/dist/types/extensions/thirdweb/write/publish.d.ts +4 -0
  261. package/dist/types/extensions/thirdweb/write/publish.d.ts.map +1 -1
  262. package/dist/types/react/core/hooks/others/useChainQuery.d.ts +3 -3
  263. package/dist/types/react/core/hooks/rpc/useBlockNumber.d.ts +1 -1
  264. package/dist/types/react/core/hooks/wallets/useCapabilities.d.ts +1 -1
  265. package/dist/types/react/core/hooks/wallets/useSendCalls.d.ts +3 -3
  266. package/dist/types/react/core/providers/connection-manager.d.ts +3 -0
  267. package/dist/types/react/core/providers/connection-manager.d.ts.map +1 -1
  268. package/dist/types/react/core/utils/wallet.d.ts +2 -1
  269. package/dist/types/react/core/utils/wallet.d.ts.map +1 -1
  270. package/dist/types/react/core/utils/walletIcon.d.ts +2 -0
  271. package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
  272. package/dist/types/react/native/hooks/wallets/useProfiles.d.ts +1 -1
  273. package/dist/types/react/native/providers/thirdweb-provider.d.ts +1 -0
  274. package/dist/types/react/native/providers/thirdweb-provider.d.ts.map +1 -1
  275. package/dist/types/react/native/ui/AutoConnect/AutoConnect.d.ts +1 -0
  276. package/dist/types/react/native/ui/AutoConnect/AutoConnect.d.ts.map +1 -1
  277. package/dist/types/react/native/ui/connect/ConnectModal.d.ts +1 -0
  278. package/dist/types/react/native/ui/connect/ConnectModal.d.ts.map +1 -1
  279. package/dist/types/react/native/ui/transaction/TransactionButton.d.ts +1 -0
  280. package/dist/types/react/native/ui/transaction/TransactionButton.d.ts.map +1 -1
  281. package/dist/types/react/web/hooks/wallets/useProfiles.d.ts +1 -1
  282. package/dist/types/react/web/providers/thirdweb-provider.d.ts +1 -0
  283. package/dist/types/react/web/providers/thirdweb-provider.d.ts.map +1 -1
  284. package/dist/types/react/web/ui/AutoConnect/AutoConnect.d.ts +1 -0
  285. package/dist/types/react/web/ui/AutoConnect/AutoConnect.d.ts.map +1 -1
  286. package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts +22 -5
  287. package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts.map +1 -1
  288. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts +2 -1
  289. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
  290. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  291. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts +1 -0
  292. package/dist/types/react/web/ui/ConnectWallet/Modal/ConnectEmbed.d.ts.map +1 -1
  293. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.d.ts.map +1 -1
  294. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.d.ts.map +1 -1
  295. package/dist/types/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.d.ts.map +1 -1
  296. package/dist/types/react/web/ui/PayEmbed.d.ts +2 -2
  297. package/dist/types/react/web/ui/PayEmbed.d.ts.map +1 -1
  298. package/dist/types/react/web/ui/SiteEmbed.d.ts +3 -2
  299. package/dist/types/react/web/ui/SiteEmbed.d.ts.map +1 -1
  300. package/dist/types/react/web/ui/SiteLink.d.ts +2 -1
  301. package/dist/types/react/web/ui/SiteLink.d.ts.map +1 -1
  302. package/dist/types/react/web/ui/TransactionButton/index.d.ts +1 -0
  303. package/dist/types/react/web/ui/TransactionButton/index.d.ts.map +1 -1
  304. package/dist/types/react/web/ui/prebuilt/Account/address.d.ts +52 -0
  305. package/dist/types/react/web/ui/prebuilt/Account/address.d.ts.map +1 -0
  306. package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts +142 -0
  307. package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts.map +1 -0
  308. package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts +137 -0
  309. package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts.map +1 -0
  310. package/dist/types/react/web/ui/prebuilt/Account/blobbie.d.ts +8 -0
  311. package/dist/types/react/web/ui/prebuilt/Account/blobbie.d.ts.map +1 -0
  312. package/dist/types/react/web/ui/prebuilt/Account/name.d.ts +119 -0
  313. package/dist/types/react/web/ui/prebuilt/Account/name.d.ts.map +1 -0
  314. package/dist/types/react/web/ui/prebuilt/Account/provider.d.ts +45 -0
  315. package/dist/types/react/web/ui/prebuilt/Account/provider.d.ts.map +1 -0
  316. package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts +59 -0
  317. package/dist/types/react/web/ui/prebuilt/NFT/description.d.ts.map +1 -0
  318. package/dist/types/react/web/ui/prebuilt/NFT/hooks.d.ts +14 -0
  319. package/dist/types/react/web/ui/prebuilt/NFT/hooks.d.ts.map +1 -0
  320. package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts +75 -0
  321. package/dist/types/react/web/ui/prebuilt/NFT/media.d.ts.map +1 -0
  322. package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts +59 -0
  323. package/dist/types/react/web/ui/prebuilt/NFT/name.d.ts.map +1 -0
  324. package/dist/types/react/web/ui/prebuilt/NFT/provider.d.ts +55 -0
  325. package/dist/types/react/web/ui/prebuilt/NFT/provider.d.ts.map +1 -0
  326. package/dist/types/react/web/ui/prebuilt/Token/icon.d.ts +95 -0
  327. package/dist/types/react/web/ui/prebuilt/Token/icon.d.ts.map +1 -0
  328. package/dist/types/react/web/ui/prebuilt/Token/name.d.ts +140 -0
  329. package/dist/types/react/web/ui/prebuilt/Token/name.d.ts.map +1 -0
  330. package/dist/types/react/web/ui/prebuilt/Token/provider.d.ts +61 -0
  331. package/dist/types/react/web/ui/prebuilt/Token/provider.d.ts.map +1 -0
  332. package/dist/types/react/web/ui/prebuilt/Token/symbol.d.ts +137 -0
  333. package/dist/types/react/web/ui/prebuilt/Token/symbol.d.ts.map +1 -0
  334. package/dist/types/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.d.ts +1 -0
  335. package/dist/types/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.d.ts.map +1 -1
  336. package/dist/types/react/web/ui/prebuilt/thirdweb/ClaimButton/index.d.ts +1 -0
  337. package/dist/types/react/web/ui/prebuilt/thirdweb/ClaimButton/index.d.ts.map +1 -1
  338. package/dist/types/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.d.ts +1 -0
  339. package/dist/types/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.d.ts.map +1 -1
  340. package/dist/types/storage/unpin.d.ts +1 -1
  341. package/dist/types/storage/upload.d.ts +1 -0
  342. package/dist/types/storage/upload.d.ts.map +1 -1
  343. package/dist/types/transaction/actions/to-serializable-transaction.d.ts +1 -1
  344. package/dist/types/transaction/actions/zksync/send-eip712-transaction.d.ts +5 -0
  345. package/dist/types/transaction/actions/zksync/send-eip712-transaction.d.ts.map +1 -1
  346. package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts +5 -0
  347. package/dist/types/utils/any-evm/zksync/isZkSyncChain.d.ts.map +1 -1
  348. package/dist/types/utils/config.d.ts +9 -0
  349. package/dist/types/utils/config.d.ts.map +1 -1
  350. package/dist/types/utils/json.d.ts +1 -1
  351. package/dist/types/utils/json.d.ts.map +1 -1
  352. package/dist/types/version.d.ts +1 -1
  353. package/dist/types/version.d.ts.map +1 -1
  354. package/dist/types/wallets/eip5792/get-calls-status.d.ts +1 -1
  355. package/dist/types/wallets/eip5792/get-capabilities.d.ts +1 -1
  356. package/dist/types/wallets/eip5792/send-calls.d.ts +2 -2
  357. package/dist/types/wallets/eip5792/wait-for-bundle.d.ts +1 -1
  358. package/dist/types/wallets/in-app/core/users/getUser.d.ts +1 -1
  359. package/dist/types/wallets/in-app/web/ecosystem.d.ts +7 -17
  360. package/dist/types/wallets/in-app/web/ecosystem.d.ts.map +1 -1
  361. package/dist/types/wallets/in-app/web/in-app.d.ts +2 -17
  362. package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
  363. package/dist/types/wallets/in-app/web/lib/auth/index.d.ts +1 -0
  364. package/dist/types/wallets/in-app/web/lib/auth/index.d.ts.map +1 -1
  365. package/dist/types/wallets/in-app/web/lib/auth/passkeys.d.ts.map +1 -1
  366. package/dist/types/wallets/smart/smart-wallet.d.ts +1 -0
  367. package/dist/types/wallets/smart/smart-wallet.d.ts.map +1 -1
  368. package/package.json +2 -2
  369. package/src/client/client.ts +1 -0
  370. package/src/exports/react.ts +56 -2
  371. package/src/extensions/erc721/lazyMinting/read/getBatchesToReveal.ts +1 -1
  372. package/src/extensions/modules/common/checkModulesCompatibility.ts +5 -0
  373. package/src/extensions/pack/createNewPack.ts +8 -3
  374. package/src/extensions/prebuilts/deploy-pack.ts +1 -0
  375. package/src/extensions/thirdweb/write/publish.ts +4 -0
  376. package/src/react/core/hooks/others/useChainQuery.ts +3 -3
  377. package/src/react/core/hooks/rpc/useBlockNumber.ts +1 -1
  378. package/src/react/core/hooks/wallets/useCapabilities.ts +1 -1
  379. package/src/react/core/hooks/wallets/useSendCalls.ts +3 -3
  380. package/src/react/core/providers/connection-manager.tsx +3 -0
  381. package/src/react/core/utils/wallet.ts +2 -1
  382. package/src/react/core/utils/walletIcon.ts +2 -0
  383. package/src/react/native/hooks/wallets/useProfiles.ts +1 -1
  384. package/src/react/native/providers/thirdweb-provider.tsx +1 -0
  385. package/src/react/native/ui/AutoConnect/AutoConnect.tsx +1 -0
  386. package/src/react/native/ui/connect/ConnectModal.tsx +1 -0
  387. package/src/react/native/ui/transaction/TransactionButton.tsx +1 -0
  388. package/src/react/web/hooks/wallets/useProfiles.ts +1 -1
  389. package/src/react/web/providers/thirdweb-provider.tsx +1 -0
  390. package/src/react/web/ui/AutoConnect/AutoConnect.tsx +1 -0
  391. package/src/react/web/ui/ConnectWallet/Blobbie.tsx +31 -4
  392. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +36 -32
  393. package/src/react/web/ui/ConnectWallet/Details.tsx +91 -58
  394. package/src/react/web/ui/ConnectWallet/Modal/ConnectEmbed.tsx +1 -0
  395. package/src/react/web/ui/ConnectWallet/screens/Buy/BuyScreen.tsx +23 -0
  396. package/src/react/web/ui/ConnectWallet/screens/Buy/TransactionModeScreen.tsx +43 -2
  397. package/src/react/web/ui/ConnectWallet/screens/Buy/main/useBuyTxStates.ts +2 -3
  398. package/src/react/web/ui/PayEmbed.tsx +2 -2
  399. package/src/react/web/ui/SiteEmbed.tsx +3 -2
  400. package/src/react/web/ui/SiteLink.tsx +2 -1
  401. package/src/react/web/ui/TransactionButton/index.tsx +1 -0
  402. package/src/react/web/ui/prebuilt/Account/address.test.tsx +28 -0
  403. package/src/react/web/ui/prebuilt/Account/address.tsx +64 -0
  404. package/src/react/web/ui/prebuilt/Account/avatar.test.tsx +48 -0
  405. package/src/react/web/ui/prebuilt/Account/avatar.tsx +221 -0
  406. package/src/react/web/ui/prebuilt/Account/balance.test.tsx +54 -0
  407. package/src/react/web/ui/prebuilt/Account/balance.tsx +202 -0
  408. package/src/react/web/ui/prebuilt/Account/blobbie.tsx +12 -0
  409. package/src/react/web/ui/prebuilt/Account/name.test.tsx +62 -0
  410. package/src/react/web/ui/prebuilt/Account/name.tsx +175 -0
  411. package/src/react/web/ui/prebuilt/Account/provider.test.tsx +38 -0
  412. package/src/react/web/ui/prebuilt/Account/provider.tsx +69 -0
  413. package/src/react/web/ui/prebuilt/NFT/NFT.test.tsx +17 -14
  414. package/src/react/web/ui/prebuilt/NFT/description.tsx +87 -0
  415. package/src/react/web/ui/prebuilt/NFT/hooks.tsx +53 -0
  416. package/src/react/web/ui/prebuilt/NFT/media.tsx +119 -0
  417. package/src/react/web/ui/prebuilt/NFT/name.tsx +85 -0
  418. package/src/react/web/ui/prebuilt/NFT/provider.tsx +75 -0
  419. package/src/react/web/ui/prebuilt/Token/icon.tsx +164 -0
  420. package/src/react/web/ui/prebuilt/Token/name.tsx +201 -0
  421. package/src/react/web/ui/prebuilt/Token/provider.tsx +86 -0
  422. package/src/react/web/ui/prebuilt/Token/symbol.tsx +201 -0
  423. package/src/react/web/ui/prebuilt/thirdweb/BuyDirectListingButton/index.tsx +1 -0
  424. package/src/react/web/ui/prebuilt/thirdweb/ClaimButton/index.tsx +1 -0
  425. package/src/react/web/ui/prebuilt/thirdweb/CreateDirectListingButton/index.tsx +1 -0
  426. package/src/storage/unpin.ts +1 -1
  427. package/src/storage/upload.ts +1 -0
  428. package/src/transaction/actions/to-serializable-transaction.ts +1 -1
  429. package/src/transaction/actions/zksync/send-eip712-transaction.ts +5 -0
  430. package/src/utils/any-evm/zksync/isZkSyncChain.ts +5 -0
  431. package/src/utils/config.ts +9 -0
  432. package/src/utils/json.ts +8 -2
  433. package/src/version.ts +1 -1
  434. package/src/wallets/eip5792/get-calls-status.ts +1 -1
  435. package/src/wallets/eip5792/get-capabilities.ts +1 -1
  436. package/src/wallets/eip5792/send-calls.ts +2 -2
  437. package/src/wallets/eip5792/wait-for-bundle.ts +1 -1
  438. package/src/wallets/in-app/core/users/getUser.ts +1 -1
  439. package/src/wallets/in-app/web/ecosystem.ts +7 -17
  440. package/src/wallets/in-app/web/in-app.ts +2 -17
  441. package/src/wallets/in-app/web/lib/auth/index.ts +1 -0
  442. package/src/wallets/in-app/web/lib/auth/passkeys.ts +24 -23
  443. package/src/wallets/smart/smart-wallet.ts +1 -0
  444. package/dist/cjs/react/web/ui/prebuilt/NFT/NFT.js +0 -217
  445. package/dist/cjs/react/web/ui/prebuilt/NFT/NFT.js.map +0 -1
  446. package/dist/esm/react/web/ui/prebuilt/NFT/NFT.js +0 -212
  447. package/dist/esm/react/web/ui/prebuilt/NFT/NFT.js.map +0 -1
  448. package/dist/types/react/web/ui/prebuilt/NFT/NFT.d.ts +0 -76
  449. package/dist/types/react/web/ui/prebuilt/NFT/NFT.d.ts.map +0 -1
  450. package/src/extensions/prebuilts/deploy-published.test.ts +0 -132
  451. package/src/react/web/ui/prebuilt/NFT/NFT.tsx +0 -272
  452. package/src/wallets/smart/smart-wallet-integration-v07.test.ts +0 -270
  453. package/src/wallets/smart/smart-wallet-integration.test.ts +0 -375
@@ -177,6 +177,7 @@ import { useSetupScreen } from "./screen.js";
177
177
  *
178
178
  * @returns A JSX element that renders the <ConnectEmbed> component.
179
179
  * @component
180
+ * @walletConnection
180
181
  */
181
182
  export function ConnectEmbed(props: ConnectEmbedProps) {
182
183
  const activeWallet = useActiveWallet();
@@ -24,6 +24,7 @@ import { useBuyWithFiatQuote } from "../../../../../core/hooks/pay/useBuyWithFia
24
24
  import { useActiveAccount } from "../../../../../core/hooks/wallets/useActiveAccount.js";
25
25
  import { invalidateWalletBalance } from "../../../../../core/providers/invalidateWalletBalance.js";
26
26
  import type { SupportedTokens } from "../../../../../core/utils/defaultTokens.js";
27
+ import { ErrorState } from "../../../../wallets/shared/ErrorState.js";
27
28
  import { LoadingScreen } from "../../../../wallets/shared/LoadingScreen.js";
28
29
  import type { PayEmbedConnectOptions } from "../../../PayEmbed.js";
29
30
  import { ChainName } from "../../../components/ChainName.js";
@@ -105,6 +106,24 @@ export default function BuyScreen(props: BuyScreenProps) {
105
106
  isTestMode,
106
107
  );
107
108
 
109
+ if (supportedDestinationsQuery.isError) {
110
+ return (
111
+ <Container
112
+ style={{
113
+ minHeight: "350px",
114
+ }}
115
+ fullHeight
116
+ flex="row"
117
+ center="both"
118
+ >
119
+ <ErrorState
120
+ title="Something went wrong"
121
+ onTryAgain={supportedDestinationsQuery.refetch}
122
+ />
123
+ </Container>
124
+ );
125
+ }
126
+
108
127
  if (!supportedDestinationsQuery.data) {
109
128
  return <LoadingScreen />;
110
129
  }
@@ -137,9 +156,11 @@ type BuyScreenContentProps = {
137
156
  */
138
157
  function BuyScreenContent(props: BuyScreenContentProps) {
139
158
  const { client, supportedDestinations, connectLocale, payOptions } = props;
159
+ console.log("BuyScreenContent");
140
160
 
141
161
  const activeAccount = useActiveAccount();
142
162
  const { payer, setPayer } = usePayerSetup();
163
+ console.log("payer", payer);
143
164
 
144
165
  const [screen, setScreen] = useState<SelectedScreen>({
145
166
  id: "main",
@@ -477,6 +498,8 @@ function BuyScreenContent(props: BuyScreenContentProps) {
477
498
  );
478
499
  }
479
500
 
501
+ console.log("SCREEN", screen.id);
502
+
480
503
  return (
481
504
  <Container animate="fadein">
482
505
  <div>
@@ -13,6 +13,7 @@ import { useWalletBalance } from "../../../../../core/hooks/others/useWalletBala
13
13
  import { useActiveAccount } from "../../../../../core/hooks/wallets/useActiveAccount.js";
14
14
  import { useActiveWallet } from "../../../../../core/hooks/wallets/useActiveWallet.js";
15
15
  import { hasSponsoredTransactionsEnabled } from "../../../../../core/utils/wallet.js";
16
+ import { ErrorState } from "../../../../wallets/shared/ErrorState.js";
16
17
  import { LoadingScreen } from "../../../../wallets/shared/LoadingScreen.js";
17
18
  import type { PayEmbedConnectOptions } from "../../../PayEmbed.js";
18
19
  import { ChainIcon } from "../../../components/ChainIcon.js";
@@ -54,9 +55,19 @@ export function TransactionModeScreen(props: {
54
55
  supportedDestinations,
55
56
  onContinue,
56
57
  } = props;
57
- const { data: chainData } = useChainMetadata(payUiOptions.transaction.chain);
58
+ const {
59
+ data: chainData,
60
+ error: chainDataError,
61
+ isLoading: chainDataLoading,
62
+ refetch: chainDataRefetch,
63
+ } = useChainMetadata(payUiOptions.transaction.chain);
58
64
  const metadata = payUiOptions.metadata;
59
- const { data: transactionCostAndData } = useTransactionCostAndData({
65
+ const {
66
+ data: transactionCostAndData,
67
+ error: transactionCostAndDataError,
68
+ isLoading: transactionCostAndDataLoading,
69
+ refetch: transactionCostAndDataRefetch,
70
+ } = useTransactionCostAndData({
60
71
  transaction: payUiOptions.transaction,
61
72
  account: payerAccount,
62
73
  supportedDestinations,
@@ -80,6 +91,36 @@ export function TransactionModeScreen(props: {
80
91
  },
81
92
  );
82
93
 
94
+ if (transactionCostAndDataLoading || chainDataLoading) {
95
+ return <LoadingScreen />;
96
+ }
97
+
98
+ if (transactionCostAndDataError || chainDataError) {
99
+ return (
100
+ <Container
101
+ style={{
102
+ minHeight: "350px",
103
+ }}
104
+ fullHeight
105
+ flex="row"
106
+ center="both"
107
+ >
108
+ <ErrorState
109
+ title={
110
+ transactionCostAndDataError?.message ||
111
+ chainDataError?.message ||
112
+ "Something went wrong"
113
+ }
114
+ onTryAgain={
115
+ transactionCostAndDataError
116
+ ? transactionCostAndDataRefetch
117
+ : chainDataRefetch
118
+ }
119
+ />
120
+ </Container>
121
+ );
122
+ }
123
+
83
124
  if (!transactionCostAndData || !chainData) {
84
125
  return <LoadingScreen />;
85
126
  }
@@ -58,7 +58,7 @@ export function useTransactionCostAndData(args: {
58
58
  ],
59
59
  queryFn: async () => {
60
60
  if (!account) {
61
- throw new Error("No account");
61
+ throw new Error("No payer account found");
62
62
  }
63
63
 
64
64
  const erc20Value = await resolvePromisedValue(transaction.erc20Value);
@@ -112,7 +112,6 @@ export function useTransactionCostAndData(args: {
112
112
  getChainMetadata(transaction.chain),
113
113
  getTransactionGasCost(transaction, account?.address),
114
114
  ]);
115
-
116
115
  const walletBalance = nativeWalletBalance;
117
116
  const transactionValueWei =
118
117
  (await resolvePromisedValue(transaction.value)) || 0n;
@@ -129,7 +128,7 @@ export function useTransactionCostAndData(args: {
129
128
  transactionValueWei,
130
129
  } satisfies TransactionCostAndData;
131
130
  },
132
- enabled: !!transaction && !!account && !!txQueryKey,
131
+ enabled: !!transaction && !!txQueryKey,
133
132
  refetchInterval: () => {
134
133
  if (transaction.erc20Value) {
135
134
  // if erc20 value is set, we don't need to poll
@@ -29,8 +29,7 @@ import type { LocaleId } from "./types.js";
29
29
  */
30
30
  export type PayEmbedProps = {
31
31
  /**
32
- * Override the default tokens shown in PayEmbed uI
33
- * @component
32
+ * Override the default tokens shown in PayEmbed UI
34
33
  * By default, PayEmbed shows a few popular tokens for Pay supported chains
35
34
  * @example
36
35
  *
@@ -157,6 +156,7 @@ export type PayEmbedProps = {
157
156
  * }}
158
157
  * />
159
158
  * ```
159
+ * @buyCrypto
160
160
  */
161
161
  export function PayEmbed(props: PayEmbedProps) {
162
162
  const localeQuery = useConnectLocale(props.locale || "en_US");
@@ -11,9 +11,9 @@ import { useActiveWallet } from "../../core/hooks/wallets/useActiveWallet.js";
11
11
  /**
12
12
  * Embeds another thirdweb-supported site for seamless in-app and ecosystem wallet connection.
13
13
  *
14
- * @note Make sure the embedded site includes <AutoConnect /> and supports frame ancestors, see [here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) for more information.
14
+ * Make sure the embedded site includes <AutoConnect /> and supports frame ancestors, see [here](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors) for more information.
15
15
  *
16
- * @note The embedded site must support the connected wallet (ecosystem or in-app).
16
+ * The embedded site must support the connected wallet (ecosystem or in-app).
17
17
  *
18
18
  * @param {Object} props - The props to pass to the iframe
19
19
  * @param {String} props.src - The URL of the site to embed
@@ -26,6 +26,7 @@ import { useActiveWallet } from "../../core/hooks/wallets/useActiveWallet.js";
26
26
  *
27
27
  * <SiteEmbed src="https://thirdweb.com" client={thirdwebClient} ecosystem={{ id: "ecosystem.thirdweb" }} />
28
28
  * ```
29
+ * @walletConnection
29
30
  */
30
31
  export function SiteEmbed({
31
32
  src,
@@ -11,7 +11,7 @@ import { useActiveWallet } from "../../core/hooks/wallets/useActiveWallet.js";
11
11
  /**
12
12
  * Creates a link to another thirdweb-supported site with wallet connection parameters.
13
13
  *
14
- * @note The target site must support the connected wallet (ecosystem or in-app).
14
+ * The target site must support the connected wallet (ecosystem or in-app).
15
15
  *
16
16
  * @param {Object} props - The props to pass to the anchor tag
17
17
  * @param {String} props.href - The URL of the site to link to
@@ -27,6 +27,7 @@ import { useActiveWallet } from "../../core/hooks/wallets/useActiveWallet.js";
27
27
  * Visit Site
28
28
  * </SiteLink>
29
29
  * ```
30
+ * @walletConnection
30
31
  */
31
32
  export function SiteLink({
32
33
  href,
@@ -129,6 +129,7 @@ import { Button } from "../components/buttons.js";
129
129
  * </TransactionButton>
130
130
  * ```
131
131
  * @component
132
+ * @transaction
132
133
  */
133
134
  export function TransactionButton(props: TransactionButtonProps) {
134
135
  const {
@@ -0,0 +1,28 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { render, screen, waitFor } from "~test/react-render.js";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import { shortenAddress } from "../../../../../utils/address.js";
5
+ import { AccountAddress } from "./address.js";
6
+ import { AccountProvider } from "./provider.js";
7
+
8
+ describe.runIf(process.env.TW_SECRET_KEY)("AccountAddress component", () => {
9
+ it("should format the address properly", () => {
10
+ render(
11
+ <AccountProvider
12
+ address="0x12345674b599ce99958242b3D3741e7b01841DF3"
13
+ client={TEST_CLIENT}
14
+ >
15
+ <AccountAddress formatFn={shortenAddress} />
16
+ </AccountProvider>,
17
+ );
18
+
19
+ waitFor(() =>
20
+ expect(
21
+ screen.getByText("0x1234...1DF3", {
22
+ exact: true,
23
+ selector: "span",
24
+ }),
25
+ ).toBeInTheDocument(),
26
+ );
27
+ });
28
+ });
@@ -0,0 +1,64 @@
1
+ "use client";
2
+
3
+ import { useAccountContext } from "./provider.js";
4
+
5
+ /**
6
+ * @component
7
+ * @account
8
+ */
9
+ export interface AccountAddressProps
10
+ extends Omit<React.HTMLAttributes<HTMLSpanElement>, "children"> {
11
+ /**
12
+ * The function used to transform (format) the wallet address
13
+ * Specifically useful for shortening the wallet.
14
+ *
15
+ * This function should take in a string and output a string
16
+ */
17
+ formatFn?: (str: string) => string;
18
+ }
19
+
20
+ /**
21
+ *
22
+ * @returns a <span> containing the full wallet address of the account
23
+ *
24
+ * @example
25
+ * ### Basic usage
26
+ * ```tsx
27
+ * import { AccountProvider, AccountAddress } from "thirdweb/react";
28
+ *
29
+ * <AccountProvider address="0x12345674b599ce99958242b3D3741e7b01841DF3" client={TW_CLIENT}>
30
+ * <AccountAddress />
31
+ * </AccountProvider>
32
+ * ```
33
+ * Result:
34
+ * ```html
35
+ * <span>0x12345674b599ce99958242b3D3741e7b01841DF3</span>
36
+ * ```
37
+ *
38
+ *
39
+ * ### Shorten the address
40
+ * ```tsx
41
+ * import { AccountProvider, AccountAddress } from "thirdweb/react";
42
+ * import { shortenAddress } from "thirdweb/utils";
43
+ *
44
+ * <AccountProvider address="0x12345674b599ce99958242b3D3741e7b01841DF3" client={TW_CLIENT}>
45
+ * <AccountAddress formatFn={shortenAddress} />
46
+ * </AccountProvider>
47
+ * ```
48
+ * Result:
49
+ * ```html
50
+ * <span>0x1234...1DF3</span>
51
+ * ```
52
+ *
53
+ * @component
54
+ * @account
55
+ * @beta
56
+ */
57
+ export function AccountAddress({
58
+ formatFn,
59
+ ...restProps
60
+ }: AccountAddressProps) {
61
+ const { address } = useAccountContext();
62
+ const value = formatFn ? formatFn(address) : address;
63
+ return <span {...restProps}>{value}</span>;
64
+ }
@@ -0,0 +1,48 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { render, screen, waitFor } from "~test/react-render.js";
3
+ import { TEST_CLIENT } from "~test/test-clients.js";
4
+ import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
5
+ import { AccountAvatar } from "./avatar.js";
6
+ import { AccountProvider } from "./provider.js";
7
+
8
+ describe.runIf(process.env.TW_SECRET_KEY)("AccountAvatar component", () => {
9
+ it("should render an image", () => {
10
+ render(
11
+ <AccountProvider
12
+ address={"0x12345674b599ce99958242b3D3741e7b01841DF3"}
13
+ client={TEST_CLIENT}
14
+ >
15
+ <AccountAvatar />
16
+ </AccountProvider>,
17
+ );
18
+
19
+ waitFor(() => expect(screen.getByRole("img")).toBeInTheDocument());
20
+ });
21
+
22
+ it("should fallback properly if failed to load", () => {
23
+ render(
24
+ <AccountProvider address={TEST_ACCOUNT_A.address} client={TEST_CLIENT}>
25
+ <AccountAvatar fallbackComponent={<span>oops</span>} />
26
+ </AccountProvider>,
27
+ );
28
+
29
+ waitFor(() =>
30
+ expect(
31
+ screen.getByText("oops", {
32
+ exact: true,
33
+ selector: "span",
34
+ }),
35
+ ).toBeInTheDocument(),
36
+ );
37
+ });
38
+
39
+ it("should NOT render anything if fail to resolve avatar", () => {
40
+ render(
41
+ <AccountProvider address={"invalid-wallet-address"} client={TEST_CLIENT}>
42
+ <AccountAvatar />
43
+ </AccountProvider>,
44
+ );
45
+
46
+ waitFor(() => expect(screen.getByRole("img")).not.toBeInTheDocument());
47
+ });
48
+ });
@@ -0,0 +1,221 @@
1
+ "use client";
2
+
3
+ import { type UseQueryOptions, useQuery } from "@tanstack/react-query";
4
+ import type React from "react";
5
+ import type { JSX } from "react";
6
+ import { resolveAvatar } from "../../../../../extensions/ens/resolve-avatar.js";
7
+ import {
8
+ type ResolveNameOptions,
9
+ resolveName,
10
+ } from "../../../../../extensions/ens/resolve-name.js";
11
+ import { getSocialProfiles } from "../../../../../social/profiles.js";
12
+ import type { SocialProfile } from "../../../../../social/types.js";
13
+ import { parseAvatarRecord } from "../../../../../utils/ens/avatar.js";
14
+ import { useAccountContext } from "./provider.js";
15
+
16
+ /**
17
+ * Props for the AccountAvatar component
18
+ * @component
19
+ * @account
20
+ */
21
+ export interface AccountAvatarProps
22
+ extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, "src">,
23
+ Omit<ResolveNameOptions, "client" | "address"> {
24
+ /**
25
+ * Use this prop to prioritize the social profile that you want to display
26
+ * This is useful for a wallet containing multiple social profiles.
27
+ * This component inherits all attributes of a HTML's <img />, so you can interact with it just like a normal <img />
28
+ *
29
+ * @example
30
+ * If you have ENS, Lens and Farcaster profiles linked to your wallet
31
+ * you can prioritize showing the image for Lens by:
32
+ * ```tsx
33
+ * <AccountAvatar
34
+ * socialType="lens" // Choose between: "farcaster" | "lens" | "ens"
35
+ * />
36
+ * ```
37
+ */
38
+ socialType?: SocialProfile["type"];
39
+
40
+ /**
41
+ * This component will be shown while the avatar of the account is being fetched
42
+ * If not passed, the component will return `null`.
43
+ *
44
+ * You can pass a loading sign or spinner to this prop.
45
+ * @example
46
+ * ```tsx
47
+ * <AccountAvatar loadingComponent={<Spinner />} />
48
+ * ```
49
+ */
50
+ loadingComponent?: JSX.Element;
51
+ /**
52
+ * This component will be shown if the request for fetching the avatar is done
53
+ * but could not retreive any result.
54
+ * You can pass a dummy avatar/image to this prop.
55
+ *
56
+ * If not passed, the component will return `null`
57
+ *
58
+ * @example
59
+ * ```tsx
60
+ * <AccountAvatar fallbackComponent={<DummyImage />} />
61
+ * ```
62
+ */
63
+ fallbackComponent?: JSX.Element;
64
+
65
+ /**
66
+ * Optional query options for `useQuery`
67
+ */
68
+ queryOptions?: Omit<UseQueryOptions<string>, "queryFn" | "queryKey">;
69
+ }
70
+
71
+ /**
72
+ * The component for showing the avatar of the account.
73
+ * If fetches all the social profiles linked to your wallet, including: Farcaster, ENS, Lens (more to be added)
74
+ * You can choose which social profile you want to display. Defaults to the first item in the list.
75
+ *
76
+ * @example
77
+ * ### Basic usage
78
+ * ```tsx
79
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
80
+ *
81
+ * <AccountProvider address="0x...">
82
+ * <AccountAvatar />
83
+ * </AccountProvider>
84
+ * ```
85
+ * Result: An <img /> component, if the avatar is resolved successfully
86
+ * ```html
87
+ * <img alt="" src="resolved-url-for-the-avatar" />
88
+ * ```
89
+ *
90
+ * ### Show a loading sign when the avatar is being resolved
91
+ * ```tsx
92
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
93
+ *
94
+ * <AccountProvider address="0x...">
95
+ * <AccountAvatar
96
+ * loadingComponent={<YourLoadingComponent />}
97
+ * />
98
+ * </AccountProvider>
99
+ * ```
100
+ *
101
+ * ### Fallback to something when the avatar fails to resolve
102
+ * ```tsx
103
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
104
+ *
105
+ * <AccountProvider address="0x...">
106
+ * <AccountAvatar
107
+ * fallbackComponent={<DummyImage />}
108
+ * />
109
+ * </AccountProvider>
110
+ * ```
111
+ *
112
+ * ### Select a social profile to display
113
+ * If you wallet associates with more than one social profiles (Lens, Farcaster, ENS, etc.)
114
+ * You can specify which service you want to prioritize using the `socialType` props
115
+ * ```tsx
116
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
117
+ *
118
+ * <AccountProvider address="0x...">
119
+ * <AccountAvatar
120
+ * // Choose between: "farcaster" | "lens" | "ens"
121
+ * socialType={"ens"}
122
+ * />
123
+ * </AccountProvider>
124
+ * ```
125
+ *
126
+ * ### Custom ENS resolver chain
127
+ * This component shares the same props with the ENS extension `resolveAvatar`
128
+ * ```tsx
129
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
130
+ * import { base } from "thirdweb/chains";
131
+ *
132
+ * <AccountProvider address="0x...">
133
+ * <AccountAvatar
134
+ * resolverAddress={"0x..."}
135
+ * resolverChain={base}
136
+ * />
137
+ * </AccountProvider>
138
+ * ```
139
+ *
140
+ * ### Custom query options for useQuery
141
+ * This component uses `@tanstack-query`'s useQuery internally.
142
+ * You can use the `queryOptions` prop for more fine-grained control
143
+ * ```tsx
144
+ * <AccountAvatar
145
+ * queryOptions={{
146
+ * enabled: isEnabled,
147
+ * retry: 3,
148
+ * }}
149
+ * />
150
+ * ```
151
+ * @returns An <img /> if the avatar is resolved successfully
152
+ * @component
153
+ * @account
154
+ * @beta
155
+ */
156
+ export function AccountAvatar({
157
+ socialType,
158
+ resolverAddress,
159
+ resolverChain,
160
+ loadingComponent,
161
+ fallbackComponent,
162
+ queryOptions,
163
+ ...restProps
164
+ }: AccountAvatarProps) {
165
+ const { address, client } = useAccountContext();
166
+ const avatarQuery = useQuery({
167
+ queryKey: ["account-avatar", address],
168
+ queryFn: async (): Promise<string> => {
169
+ const [socialData, ensName] = await Promise.all([
170
+ getSocialProfiles({ address, client }),
171
+ resolveName({
172
+ client,
173
+ address: address || "",
174
+ resolverAddress,
175
+ resolverChain,
176
+ }),
177
+ ]);
178
+
179
+ const uri = socialData?.filter(
180
+ (p) => p.avatar && (socialType ? p.type === socialType : true),
181
+ )[0]?.avatar;
182
+
183
+ const [resolvedSocialAvatar, resolvedENSAvatar] = await Promise.all([
184
+ uri ? parseAvatarRecord({ client, uri }) : undefined,
185
+ ensName
186
+ ? resolveAvatar({
187
+ client,
188
+ name: ensName,
189
+ })
190
+ : undefined,
191
+ ]);
192
+
193
+ // If no social image + ens name found -> exit and show <Blobbie />
194
+ if (!resolvedSocialAvatar && !resolvedENSAvatar) {
195
+ throw new Error("Failed to resolve social + ens avatar");
196
+ }
197
+
198
+ // else, prioritize the social image first
199
+ if (resolvedSocialAvatar) {
200
+ return resolvedSocialAvatar;
201
+ }
202
+
203
+ if (resolvedENSAvatar) {
204
+ return resolvedENSAvatar;
205
+ }
206
+
207
+ throw new Error("Failed to resolve social + ens avatar");
208
+ },
209
+ ...queryOptions,
210
+ });
211
+
212
+ if (avatarQuery.isLoading) {
213
+ return loadingComponent || null;
214
+ }
215
+
216
+ if (!avatarQuery.data) {
217
+ return fallbackComponent || null;
218
+ }
219
+
220
+ return <img src={avatarQuery.data} {...restProps} alt={restProps.alt} />;
221
+ }
@@ -0,0 +1,54 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { ANVIL_CHAIN } from "~test/chains.js";
3
+ import { render, screen, waitFor } from "~test/react-render.js";
4
+ import { TEST_CLIENT } from "~test/test-clients.js";
5
+ import { TEST_ACCOUNT_A } from "~test/test-wallets.js";
6
+ import { getWalletBalance } from "../../../../../wallets/utils/getWalletBalance.js";
7
+ import { AccountBalance } from "./balance.js";
8
+ import { AccountProvider } from "./provider.js";
9
+
10
+ describe.runIf(process.env.TW_SECRET_KEY)("AccountBalance component", () => {
11
+ it("format the balance properly", async () => {
12
+ const roundTo1Decimal = (num: number): number => Math.round(num * 10) / 10;
13
+ const balance = await getWalletBalance({
14
+ chain: ANVIL_CHAIN,
15
+ client: TEST_CLIENT,
16
+ address: TEST_ACCOUNT_A.address,
17
+ });
18
+
19
+ render(
20
+ <AccountProvider address={TEST_ACCOUNT_A.address} client={TEST_CLIENT}>
21
+ <AccountBalance chain={ANVIL_CHAIN} formatFn={roundTo1Decimal} />
22
+ </AccountProvider>,
23
+ );
24
+
25
+ waitFor(() =>
26
+ expect(
27
+ screen.getByText(roundTo1Decimal(Number(balance.displayValue)), {
28
+ exact: true,
29
+ selector: "span",
30
+ }),
31
+ ).toBeInTheDocument(),
32
+ );
33
+ });
34
+
35
+ it("should fallback properly if failed to load", () => {
36
+ render(
37
+ <AccountProvider address={TEST_ACCOUNT_A.address} client={TEST_CLIENT}>
38
+ <AccountBalance
39
+ chain={undefined}
40
+ fallbackComponent={<span>oops</span>}
41
+ />
42
+ </AccountProvider>,
43
+ );
44
+
45
+ waitFor(() =>
46
+ expect(
47
+ screen.getByText("oops", {
48
+ exact: true,
49
+ selector: "span",
50
+ }),
51
+ ).toBeInTheDocument(),
52
+ );
53
+ });
54
+ });