thirdweb 5.86.6 → 5.87.0

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 (419) hide show
  1. package/dist/cjs/exports/react.js +4 -3
  2. package/dist/cjs/exports/react.js.map +1 -1
  3. package/dist/cjs/exports/react.native.js +27 -1
  4. package/dist/cjs/exports/react.native.js.map +1 -1
  5. package/dist/cjs/exports/wallets.js +4 -1
  6. package/dist/cjs/exports/wallets.js.map +1 -1
  7. package/dist/cjs/react/{web/ui/prebuilt/Account → core/account}/provider.js +5 -1
  8. package/dist/cjs/react/core/account/provider.js.map +1 -0
  9. package/dist/cjs/react/core/utils/account.js +105 -0
  10. package/dist/cjs/react/core/utils/account.js.map +1 -0
  11. package/dist/cjs/react/core/utils/walletIcon.js +23 -0
  12. package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
  13. package/dist/cjs/react/core/utils/walletname.js +43 -0
  14. package/dist/cjs/react/core/utils/walletname.js.map +1 -0
  15. package/dist/cjs/react/core/wallet/provider.js.map +1 -0
  16. package/dist/cjs/react/native/ui/prebuilt/Account/address.js +50 -0
  17. package/dist/cjs/react/native/ui/prebuilt/Account/address.js.map +1 -0
  18. package/dist/cjs/react/native/ui/prebuilt/Account/avatar.js +151 -0
  19. package/dist/cjs/react/native/ui/prebuilt/Account/avatar.js.map +1 -0
  20. package/dist/cjs/react/native/ui/prebuilt/Account/balance.js +130 -0
  21. package/dist/cjs/react/native/ui/prebuilt/Account/balance.js.map +1 -0
  22. package/dist/cjs/react/native/ui/prebuilt/Account/blobbie.js +58 -0
  23. package/dist/cjs/react/native/ui/prebuilt/Account/blobbie.js.map +1 -0
  24. package/dist/cjs/react/native/ui/prebuilt/Account/name.js +113 -0
  25. package/dist/cjs/react/native/ui/prebuilt/Account/name.js.map +1 -0
  26. package/dist/cjs/react/native/ui/prebuilt/Wallet/icon.js +85 -0
  27. package/dist/cjs/react/native/ui/prebuilt/Wallet/icon.js.map +1 -0
  28. package/dist/cjs/react/native/ui/prebuilt/Wallet/name.js +66 -0
  29. package/dist/cjs/react/native/ui/prebuilt/Wallet/name.js.map +1 -0
  30. package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js +2 -18
  31. package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
  32. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +1 -1
  33. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  34. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +5 -4
  35. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  36. package/dist/cjs/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js +5 -4
  37. package/dist/cjs/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js.map +1 -1
  38. package/dist/cjs/react/web/ui/prebuilt/Account/address.js +1 -1
  39. package/dist/cjs/react/web/ui/prebuilt/Account/address.js.map +1 -1
  40. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js +1 -1
  41. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
  42. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js +8 -90
  43. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js.map +1 -1
  44. package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js +1 -1
  45. package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js.map +1 -1
  46. package/dist/cjs/react/web/ui/prebuilt/Account/name.js +1 -1
  47. package/dist/cjs/react/web/ui/prebuilt/Account/name.js.map +1 -1
  48. package/dist/cjs/react/web/ui/prebuilt/NFT/utils.js.map +1 -1
  49. package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js +1 -23
  50. package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js.map +1 -1
  51. package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js +2 -42
  52. package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js.map +1 -1
  53. package/dist/cjs/utils/shortenLargeNumber.js +3 -0
  54. package/dist/cjs/utils/shortenLargeNumber.js.map +1 -1
  55. package/dist/cjs/version.js +1 -1
  56. package/dist/cjs/wallets/connection/autoConnectCore.js +12 -12
  57. package/dist/cjs/wallets/connection/autoConnectCore.js.map +1 -1
  58. package/dist/cjs/wallets/in-app/web/lib/get-url-token.js +3 -3
  59. package/dist/cjs/wallets/in-app/web/lib/get-url-token.js.map +1 -1
  60. package/dist/esm/exports/react.js +3 -3
  61. package/dist/esm/exports/react.js.map +1 -1
  62. package/dist/esm/exports/react.native.js +15 -0
  63. package/dist/esm/exports/react.native.js.map +1 -1
  64. package/dist/esm/exports/wallets.js +2 -0
  65. package/dist/esm/exports/wallets.js.map +1 -1
  66. package/dist/esm/react/{web/ui/prebuilt/Account → core/account}/provider.js +5 -1
  67. package/dist/esm/react/core/account/provider.js.map +1 -0
  68. package/dist/esm/react/core/utils/account.js +99 -0
  69. package/dist/esm/react/core/utils/account.js.map +1 -0
  70. package/dist/esm/react/core/utils/walletIcon.js +21 -0
  71. package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
  72. package/dist/esm/react/core/utils/walletname.js +40 -0
  73. package/dist/esm/react/core/utils/walletname.js.map +1 -0
  74. package/dist/esm/react/core/wallet/provider.js.map +1 -0
  75. package/dist/esm/react/native/ui/prebuilt/Account/address.js +47 -0
  76. package/dist/esm/react/native/ui/prebuilt/Account/address.js.map +1 -0
  77. package/dist/esm/react/native/ui/prebuilt/Account/avatar.js +148 -0
  78. package/dist/esm/react/native/ui/prebuilt/Account/avatar.js.map +1 -0
  79. package/dist/esm/react/native/ui/prebuilt/Account/balance.js +127 -0
  80. package/dist/esm/react/native/ui/prebuilt/Account/balance.js.map +1 -0
  81. package/dist/esm/react/native/ui/prebuilt/Account/blobbie.js +54 -0
  82. package/dist/esm/react/native/ui/prebuilt/Account/blobbie.js.map +1 -0
  83. package/dist/esm/react/native/ui/prebuilt/Account/name.js +110 -0
  84. package/dist/esm/react/native/ui/prebuilt/Account/name.js.map +1 -0
  85. package/dist/esm/react/native/ui/prebuilt/Wallet/icon.js +81 -0
  86. package/dist/esm/react/native/ui/prebuilt/Wallet/icon.js.map +1 -0
  87. package/dist/esm/react/native/ui/prebuilt/Wallet/name.js +63 -0
  88. package/dist/esm/react/native/ui/prebuilt/Wallet/name.js.map +1 -0
  89. package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js +1 -17
  90. package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
  91. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +1 -1
  92. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  93. package/dist/esm/react/web/ui/ConnectWallet/Details.js +3 -2
  94. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  95. package/dist/esm/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js +5 -4
  96. package/dist/esm/react/web/ui/ConnectWallet/screens/ManageWalletScreen.js.map +1 -1
  97. package/dist/esm/react/web/ui/prebuilt/Account/address.js +1 -1
  98. package/dist/esm/react/web/ui/prebuilt/Account/address.js.map +1 -1
  99. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js +1 -1
  100. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
  101. package/dist/esm/react/web/ui/prebuilt/Account/balance.js +6 -85
  102. package/dist/esm/react/web/ui/prebuilt/Account/balance.js.map +1 -1
  103. package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js +1 -1
  104. package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js.map +1 -1
  105. package/dist/esm/react/web/ui/prebuilt/Account/name.js +1 -1
  106. package/dist/esm/react/web/ui/prebuilt/Account/name.js.map +1 -1
  107. package/dist/esm/react/web/ui/prebuilt/NFT/utils.js +0 -1
  108. package/dist/esm/react/web/ui/prebuilt/NFT/utils.js.map +1 -1
  109. package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js +1 -22
  110. package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js.map +1 -1
  111. package/dist/esm/react/web/ui/prebuilt/Wallet/name.js +1 -39
  112. package/dist/esm/react/web/ui/prebuilt/Wallet/name.js.map +1 -1
  113. package/dist/esm/utils/shortenLargeNumber.js +3 -0
  114. package/dist/esm/utils/shortenLargeNumber.js.map +1 -1
  115. package/dist/esm/version.js +1 -1
  116. package/dist/esm/wallets/connection/autoConnectCore.js +12 -12
  117. package/dist/esm/wallets/connection/autoConnectCore.js.map +1 -1
  118. package/dist/esm/wallets/in-app/web/lib/get-url-token.js +3 -3
  119. package/dist/esm/wallets/in-app/web/lib/get-url-token.js.map +1 -1
  120. package/dist/types/exports/react.d.ts +5 -4
  121. package/dist/types/exports/react.d.ts.map +1 -1
  122. package/dist/types/exports/react.native.d.ts +15 -0
  123. package/dist/types/exports/react.native.d.ts.map +1 -1
  124. package/dist/types/exports/wallets.d.ts +1 -0
  125. package/dist/types/exports/wallets.d.ts.map +1 -1
  126. package/dist/types/extensions/airdrop/__generated__/Airdrop/read/eip712Domain.d.ts +1 -1
  127. package/dist/types/extensions/airdrop/__generated__/Airdrop/read/eip712Domain.d.ts.map +1 -1
  128. package/dist/types/extensions/airdrop/__generated__/Airdrop/read/owner.d.ts +1 -1
  129. package/dist/types/extensions/airdrop/__generated__/Airdrop/read/owner.d.ts.map +1 -1
  130. package/dist/types/extensions/common/__generated__/IOwnable/read/owner.d.ts +1 -1
  131. package/dist/types/extensions/common/__generated__/IOwnable/read/owner.d.ts.map +1 -1
  132. package/dist/types/extensions/common/__generated__/IPlatformFee/read/getPlatformFeeInfo.d.ts +1 -1
  133. package/dist/types/extensions/common/__generated__/IPlatformFee/read/getPlatformFeeInfo.d.ts.map +1 -1
  134. package/dist/types/extensions/common/__generated__/IPrimarySale/read/primarySaleRecipient.d.ts +1 -1
  135. package/dist/types/extensions/common/__generated__/IPrimarySale/read/primarySaleRecipient.d.ts.map +1 -1
  136. package/dist/types/extensions/common/__generated__/IRoyalty/read/getDefaultRoyaltyInfo.d.ts +1 -1
  137. package/dist/types/extensions/common/__generated__/IRoyalty/read/getDefaultRoyaltyInfo.d.ts.map +1 -1
  138. package/dist/types/extensions/common/__generated__/IRoyalty/read/getRoyaltyInfoForToken.d.ts +1 -1
  139. package/dist/types/extensions/common/__generated__/IRoyalty/read/getRoyaltyInfoForToken.d.ts.map +1 -1
  140. package/dist/types/extensions/common/__generated__/IRoyalty/read/royaltyInfo.d.ts +1 -1
  141. package/dist/types/extensions/common/__generated__/IRoyalty/read/royaltyInfo.d.ts.map +1 -1
  142. package/dist/types/extensions/ens/__generated__/AddressResolver/read/addr.d.ts +1 -1
  143. package/dist/types/extensions/ens/__generated__/AddressResolver/read/addr.d.ts.map +1 -1
  144. package/dist/types/extensions/ens/__generated__/UniversalResolver/read/resolve.d.ts +1 -1
  145. package/dist/types/extensions/ens/__generated__/UniversalResolver/read/resolve.d.ts.map +1 -1
  146. package/dist/types/extensions/ens/__generated__/UniversalResolver/read/reverse.d.ts +1 -1
  147. package/dist/types/extensions/ens/__generated__/UniversalResolver/read/reverse.d.ts.map +1 -1
  148. package/dist/types/extensions/erc1155/__generated__/IDrop1155/read/getClaimConditionById.d.ts +1 -1
  149. package/dist/types/extensions/erc1155/__generated__/IDropSinglePhase1155/read/claimCondition.d.ts +1 -1
  150. package/dist/types/extensions/erc1155/__generated__/ISignatureMintERC1155/read/verify.d.ts +1 -1
  151. package/dist/types/extensions/erc1155/__generated__/ISignatureMintERC1155/read/verify.d.ts.map +1 -1
  152. package/dist/types/extensions/erc1155/drops/write/resetClaimEligibility.d.ts +1 -1
  153. package/dist/types/extensions/erc1155/drops/write/resetClaimEligibility.d.ts.map +1 -1
  154. package/dist/types/extensions/erc20/__generated__/IDropERC20/read/getClaimConditionById.d.ts +1 -1
  155. package/dist/types/extensions/erc20/__generated__/ISignatureMintERC20/read/verify.d.ts +1 -1
  156. package/dist/types/extensions/erc20/__generated__/ISignatureMintERC20/read/verify.d.ts.map +1 -1
  157. package/dist/types/extensions/erc20/__generated__/IVotes/read/delegates.d.ts +1 -1
  158. package/dist/types/extensions/erc20/__generated__/IVotes/read/delegates.d.ts.map +1 -1
  159. package/dist/types/extensions/erc20/drops/write/resetClaimEligibility.d.ts +1 -1
  160. package/dist/types/extensions/erc20/drops/write/resetClaimEligibility.d.ts.map +1 -1
  161. package/dist/types/extensions/erc2981/__generated__/IERC2981/read/royaltyInfo.d.ts +1 -1
  162. package/dist/types/extensions/erc2981/__generated__/IERC2981/read/royaltyInfo.d.ts.map +1 -1
  163. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/accountImplementation.d.ts +1 -1
  164. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/accountImplementation.d.ts.map +1 -1
  165. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/getAccounts.d.ts +1 -1
  166. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/getAccounts.d.ts.map +1 -1
  167. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/getAccountsOfSigner.d.ts +1 -1
  168. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/getAccountsOfSigner.d.ts.map +1 -1
  169. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/getAddress.d.ts +1 -1
  170. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/getAddress.d.ts.map +1 -1
  171. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/getAllAccounts.d.ts +1 -1
  172. package/dist/types/extensions/erc4337/__generated__/IAccountFactory/read/getAllAccounts.d.ts.map +1 -1
  173. package/dist/types/extensions/erc4337/__generated__/IAccountPermissions/read/getAllActiveSigners.d.ts +2 -2
  174. package/dist/types/extensions/erc4337/__generated__/IAccountPermissions/read/getAllAdmins.d.ts +1 -1
  175. package/dist/types/extensions/erc4337/__generated__/IAccountPermissions/read/getAllAdmins.d.ts.map +1 -1
  176. package/dist/types/extensions/erc4337/__generated__/IAccountPermissions/read/getAllSigners.d.ts +2 -2
  177. package/dist/types/extensions/erc4337/__generated__/IAccountPermissions/read/getPermissionsForSigner.d.ts +2 -2
  178. package/dist/types/extensions/erc4337/__generated__/IAccountPermissions/read/verifySignerPermissionRequest.d.ts +1 -1
  179. package/dist/types/extensions/erc4337/__generated__/IAccountPermissions/read/verifySignerPermissionRequest.d.ts.map +1 -1
  180. package/dist/types/extensions/erc4626/__generated__/IERC4626/read/asset.d.ts +1 -1
  181. package/dist/types/extensions/erc4626/__generated__/IERC4626/read/asset.d.ts.map +1 -1
  182. package/dist/types/extensions/erc6551/__generated__/IERC6551Account/read/token.d.ts +1 -1
  183. package/dist/types/extensions/erc6551/__generated__/IERC6551Account/read/token.d.ts.map +1 -1
  184. package/dist/types/extensions/erc721/__generated__/IDrop/read/getClaimConditionById.d.ts +1 -1
  185. package/dist/types/extensions/erc721/__generated__/IDropSinglePhase/read/claimCondition.d.ts +1 -1
  186. package/dist/types/extensions/erc721/__generated__/IERC721A/read/getApproved.d.ts +1 -1
  187. package/dist/types/extensions/erc721/__generated__/IERC721A/read/getApproved.d.ts.map +1 -1
  188. package/dist/types/extensions/erc721/__generated__/IERC721A/read/ownerOf.d.ts +1 -1
  189. package/dist/types/extensions/erc721/__generated__/IERC721A/read/ownerOf.d.ts.map +1 -1
  190. package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721/read/verify.d.ts +1 -1
  191. package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721/read/verify.d.ts.map +1 -1
  192. package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721_v2/read/verify.d.ts +1 -1
  193. package/dist/types/extensions/erc721/__generated__/ISignatureMintERC721_v2/read/verify.d.ts.map +1 -1
  194. package/dist/types/extensions/erc721/__generated__/Multiwrap/read/getWrappedContents.d.ts +1 -1
  195. package/dist/types/extensions/erc721/drops/write/resetClaimEligibility.d.ts +1 -1
  196. package/dist/types/extensions/erc721/drops/write/resetClaimEligibility.d.ts.map +1 -1
  197. package/dist/types/extensions/erc7504/__generated__/IRouterState/read/getAllExtensions.d.ts +1 -1
  198. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.d.ts +1 -1
  199. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/accountImplementation.d.ts.map +1 -1
  200. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.d.ts +1 -1
  201. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/entrypoint.d.ts.map +1 -1
  202. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.d.ts +1 -1
  203. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/getAddress.d.ts.map +1 -1
  204. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.d.ts +1 -1
  205. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/implementation.d.ts.map +1 -1
  206. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.d.ts +1 -1
  207. package/dist/types/extensions/erc7579/__generated__/ModularAccountFactory/read/owner.d.ts.map +1 -1
  208. package/dist/types/extensions/farcaster/__generated__/IBundler/read/idGateway.d.ts +1 -1
  209. package/dist/types/extensions/farcaster/__generated__/IBundler/read/idGateway.d.ts.map +1 -1
  210. package/dist/types/extensions/farcaster/__generated__/IBundler/read/keyGateway.d.ts +1 -1
  211. package/dist/types/extensions/farcaster/__generated__/IBundler/read/keyGateway.d.ts.map +1 -1
  212. package/dist/types/extensions/farcaster/__generated__/IIdGateway/read/idRegistry.d.ts +1 -1
  213. package/dist/types/extensions/farcaster/__generated__/IIdGateway/read/idRegistry.d.ts.map +1 -1
  214. package/dist/types/extensions/farcaster/__generated__/IIdGateway/read/storageRegistry.d.ts +1 -1
  215. package/dist/types/extensions/farcaster/__generated__/IIdGateway/read/storageRegistry.d.ts.map +1 -1
  216. package/dist/types/extensions/farcaster/__generated__/IIdRegistry/read/custodyOf.d.ts +1 -1
  217. package/dist/types/extensions/farcaster/__generated__/IIdRegistry/read/custodyOf.d.ts.map +1 -1
  218. package/dist/types/extensions/farcaster/__generated__/IIdRegistry/read/idGateway.d.ts +1 -1
  219. package/dist/types/extensions/farcaster/__generated__/IIdRegistry/read/idGateway.d.ts.map +1 -1
  220. package/dist/types/extensions/farcaster/__generated__/IIdRegistry/read/recoveryOf.d.ts +1 -1
  221. package/dist/types/extensions/farcaster/__generated__/IIdRegistry/read/recoveryOf.d.ts.map +1 -1
  222. package/dist/types/extensions/farcaster/__generated__/IKeyGateway/read/keyRegistry.d.ts +1 -1
  223. package/dist/types/extensions/farcaster/__generated__/IKeyGateway/read/keyRegistry.d.ts.map +1 -1
  224. package/dist/types/extensions/farcaster/__generated__/IKeyRegistry/read/idRegistry.d.ts +1 -1
  225. package/dist/types/extensions/farcaster/__generated__/IKeyRegistry/read/idRegistry.d.ts.map +1 -1
  226. package/dist/types/extensions/farcaster/__generated__/IKeyRegistry/read/keyDataOf.d.ts +1 -1
  227. package/dist/types/extensions/farcaster/__generated__/IKeyRegistry/read/keyDataOf.d.ts.map +1 -1
  228. package/dist/types/extensions/farcaster/__generated__/IKeyRegistry/read/keyGateway.d.ts +1 -1
  229. package/dist/types/extensions/farcaster/__generated__/IKeyRegistry/read/keyGateway.d.ts.map +1 -1
  230. package/dist/types/extensions/lens/__generated__/LensHandle/read/getHandleTokenURIContract.d.ts +1 -1
  231. package/dist/types/extensions/lens/__generated__/LensHandle/read/getHandleTokenURIContract.d.ts.map +1 -1
  232. package/dist/types/extensions/lens/__generated__/LensHub/read/getProfile.d.ts +2 -2
  233. package/dist/types/extensions/lens/__generated__/LensHub/read/getPublication.d.ts +3 -3
  234. package/dist/types/extensions/lens/__generated__/LensHub/read/tokenDataOf.d.ts +1 -1
  235. package/dist/types/extensions/marketplace/__generated__/IDirectListings/read/getAllListings.d.ts +3 -3
  236. package/dist/types/extensions/marketplace/__generated__/IDirectListings/read/getAllValidListings.d.ts +3 -3
  237. package/dist/types/extensions/marketplace/__generated__/IDirectListings/read/getListing.d.ts +3 -3
  238. package/dist/types/extensions/marketplace/__generated__/IEnglishAuctions/read/getAllAuctions.d.ts +3 -3
  239. package/dist/types/extensions/marketplace/__generated__/IEnglishAuctions/read/getAllValidAuctions.d.ts +3 -3
  240. package/dist/types/extensions/marketplace/__generated__/IEnglishAuctions/read/getAuction.d.ts +3 -3
  241. package/dist/types/extensions/marketplace/__generated__/IEnglishAuctions/read/getWinningBid.d.ts +1 -1
  242. package/dist/types/extensions/marketplace/__generated__/IEnglishAuctions/read/getWinningBid.d.ts.map +1 -1
  243. package/dist/types/extensions/marketplace/__generated__/IMarketplace/read/getPlatformFeeInfo.d.ts +1 -1
  244. package/dist/types/extensions/marketplace/__generated__/IMarketplace/read/getPlatformFeeInfo.d.ts.map +1 -1
  245. package/dist/types/extensions/marketplace/__generated__/IOffers/read/getAllOffers.d.ts +3 -3
  246. package/dist/types/extensions/marketplace/__generated__/IOffers/read/getAllValidOffers.d.ts +3 -3
  247. package/dist/types/extensions/marketplace/__generated__/IOffers/read/getOffer.d.ts +3 -3
  248. package/dist/types/extensions/modules/ClaimableERC1155/mint.d.ts +1 -1
  249. package/dist/types/extensions/modules/ClaimableERC1155/mint.d.ts.map +1 -1
  250. package/dist/types/extensions/modules/ClaimableERC1155/setClaimConditions.d.ts +1 -1
  251. package/dist/types/extensions/modules/ClaimableERC1155/setClaimConditions.d.ts.map +1 -1
  252. package/dist/types/extensions/modules/ClaimableERC20/mint.d.ts +1 -1
  253. package/dist/types/extensions/modules/ClaimableERC20/mint.d.ts.map +1 -1
  254. package/dist/types/extensions/modules/ClaimableERC20/setClaimConditions.d.ts +1 -1
  255. package/dist/types/extensions/modules/ClaimableERC20/setClaimConditions.d.ts.map +1 -1
  256. package/dist/types/extensions/modules/ClaimableERC721/mint.d.ts +1 -1
  257. package/dist/types/extensions/modules/ClaimableERC721/mint.d.ts.map +1 -1
  258. package/dist/types/extensions/modules/ClaimableERC721/setClaimConditions.d.ts +1 -1
  259. package/dist/types/extensions/modules/ClaimableERC721/setClaimConditions.d.ts.map +1 -1
  260. package/dist/types/extensions/modules/__generated__/ClaimableERC1155/read/getClaimConditionByTokenId.d.ts +1 -1
  261. package/dist/types/extensions/modules/__generated__/ClaimableERC1155/read/getSaleConfig.d.ts +1 -1
  262. package/dist/types/extensions/modules/__generated__/ClaimableERC1155/read/getSaleConfig.d.ts.map +1 -1
  263. package/dist/types/extensions/modules/__generated__/ClaimableERC20/read/getClaimCondition.d.ts +1 -1
  264. package/dist/types/extensions/modules/__generated__/ClaimableERC20/read/getSaleConfig.d.ts +1 -1
  265. package/dist/types/extensions/modules/__generated__/ClaimableERC20/read/getSaleConfig.d.ts.map +1 -1
  266. package/dist/types/extensions/modules/__generated__/ClaimableERC721/read/getClaimCondition.d.ts +1 -1
  267. package/dist/types/extensions/modules/__generated__/ClaimableERC721/read/getSaleConfig.d.ts +1 -1
  268. package/dist/types/extensions/modules/__generated__/ClaimableERC721/read/getSaleConfig.d.ts.map +1 -1
  269. package/dist/types/extensions/modules/__generated__/IModularCore/read/getInstalledModules.d.ts +1 -1
  270. package/dist/types/extensions/modules/__generated__/MintableERC1155/read/getSaleConfig.d.ts +1 -1
  271. package/dist/types/extensions/modules/__generated__/MintableERC1155/read/getSaleConfig.d.ts.map +1 -1
  272. package/dist/types/extensions/modules/__generated__/MintableERC20/read/getSaleConfig.d.ts +1 -1
  273. package/dist/types/extensions/modules/__generated__/MintableERC20/read/getSaleConfig.d.ts.map +1 -1
  274. package/dist/types/extensions/modules/__generated__/MintableERC721/read/getSaleConfig.d.ts +1 -1
  275. package/dist/types/extensions/modules/__generated__/MintableERC721/read/getSaleConfig.d.ts.map +1 -1
  276. package/dist/types/extensions/modules/__generated__/OwnableRoles/read/owner.d.ts +1 -1
  277. package/dist/types/extensions/modules/__generated__/OwnableRoles/read/owner.d.ts.map +1 -1
  278. package/dist/types/extensions/modules/__generated__/RoyaltyERC1155/read/getDefaultRoyaltyInfo.d.ts +1 -1
  279. package/dist/types/extensions/modules/__generated__/RoyaltyERC1155/read/getDefaultRoyaltyInfo.d.ts.map +1 -1
  280. package/dist/types/extensions/modules/__generated__/RoyaltyERC1155/read/getRoyaltyInfoForToken.d.ts +1 -1
  281. package/dist/types/extensions/modules/__generated__/RoyaltyERC1155/read/getRoyaltyInfoForToken.d.ts.map +1 -1
  282. package/dist/types/extensions/modules/__generated__/RoyaltyERC1155/read/getTransferValidator.d.ts +1 -1
  283. package/dist/types/extensions/modules/__generated__/RoyaltyERC1155/read/getTransferValidator.d.ts.map +1 -1
  284. package/dist/types/extensions/modules/__generated__/RoyaltyERC1155/read/royaltyInfo.d.ts +1 -1
  285. package/dist/types/extensions/modules/__generated__/RoyaltyERC1155/read/royaltyInfo.d.ts.map +1 -1
  286. package/dist/types/extensions/modules/__generated__/RoyaltyERC721/read/getDefaultRoyaltyInfo.d.ts +1 -1
  287. package/dist/types/extensions/modules/__generated__/RoyaltyERC721/read/getDefaultRoyaltyInfo.d.ts.map +1 -1
  288. package/dist/types/extensions/modules/__generated__/RoyaltyERC721/read/getRoyaltyInfoForToken.d.ts +1 -1
  289. package/dist/types/extensions/modules/__generated__/RoyaltyERC721/read/getRoyaltyInfoForToken.d.ts.map +1 -1
  290. package/dist/types/extensions/modules/__generated__/RoyaltyERC721/read/getTransferValidator.d.ts +1 -1
  291. package/dist/types/extensions/modules/__generated__/RoyaltyERC721/read/getTransferValidator.d.ts.map +1 -1
  292. package/dist/types/extensions/modules/__generated__/RoyaltyERC721/read/royaltyInfo.d.ts +1 -1
  293. package/dist/types/extensions/modules/__generated__/RoyaltyERC721/read/royaltyInfo.d.ts.map +1 -1
  294. package/dist/types/extensions/multicall3/__generated__/IMulticall3/read/getCurrentBlockCoinbase.d.ts +1 -1
  295. package/dist/types/extensions/multicall3/__generated__/IMulticall3/read/getCurrentBlockCoinbase.d.ts.map +1 -1
  296. package/dist/types/extensions/pack/__generated__/IPack/read/getPackContents.d.ts +1 -1
  297. package/dist/types/extensions/pack/__generated__/IPack/read/getTokenOfBundle.d.ts +1 -1
  298. package/dist/types/extensions/permissions/__generated__/IPermissionsEnumerable/read/getRoleMember.d.ts +1 -1
  299. package/dist/types/extensions/permissions/__generated__/IPermissionsEnumerable/read/getRoleMember.d.ts.map +1 -1
  300. package/dist/types/extensions/split/__generated__/Split/read/payee.d.ts +1 -1
  301. package/dist/types/extensions/split/__generated__/Split/read/payee.d.ts.map +1 -1
  302. package/dist/types/extensions/thirdweb/__generated__/IContractPublisher/read/getAllPublishedContracts.d.ts +1 -1
  303. package/dist/types/extensions/thirdweb/__generated__/IContractPublisher/read/getPublishedContract.d.ts +1 -1
  304. package/dist/types/extensions/thirdweb/__generated__/IContractPublisher/read/getPublishedContractVersions.d.ts +1 -1
  305. package/dist/types/extensions/thirdweb/__generated__/IRulesEngine/read/getAllRules.d.ts +1 -1
  306. package/dist/types/extensions/thirdweb/__generated__/IRulesEngine/read/getRulesEngineOverride.d.ts +1 -1
  307. package/dist/types/extensions/thirdweb/__generated__/IRulesEngine/read/getRulesEngineOverride.d.ts.map +1 -1
  308. package/dist/types/extensions/thirdweb/__generated__/ISignatureAction/read/verify.d.ts +1 -1
  309. package/dist/types/extensions/thirdweb/__generated__/ISignatureAction/read/verify.d.ts.map +1 -1
  310. package/dist/types/extensions/thirdweb/__generated__/ITWFee/read/getFeeInfo.d.ts +1 -1
  311. package/dist/types/extensions/thirdweb/__generated__/ITWFee/read/getFeeInfo.d.ts.map +1 -1
  312. package/dist/types/extensions/thirdweb/__generated__/ITWMultichainRegistry/read/getAll.d.ts +1 -1
  313. package/dist/types/extensions/uniswap/__generated__/IUniswapV3Factory/read/getPool.d.ts +1 -1
  314. package/dist/types/extensions/uniswap/__generated__/IUniswapV3Factory/read/getPool.d.ts.map +1 -1
  315. package/dist/types/extensions/uniswap/__generated__/IUniswapV3Factory/read/owner.d.ts +1 -1
  316. package/dist/types/extensions/uniswap/__generated__/IUniswapV3Factory/read/owner.d.ts.map +1 -1
  317. package/dist/types/extensions/vote/__generated__/Vote/read/getAllProposals.d.ts +2 -2
  318. package/dist/types/extensions/vote/__generated__/Vote/read/proposals.d.ts +1 -1
  319. package/dist/types/extensions/vote/__generated__/Vote/read/proposals.d.ts.map +1 -1
  320. package/dist/types/extensions/vote/__generated__/Vote/read/token.d.ts +1 -1
  321. package/dist/types/extensions/vote/__generated__/Vote/read/token.d.ts.map +1 -1
  322. package/dist/types/react/{web/ui/prebuilt/Account → core/account}/provider.d.ts +3 -4
  323. package/dist/types/react/core/account/provider.d.ts.map +1 -0
  324. package/dist/types/react/core/utils/account.d.ts +46 -0
  325. package/dist/types/react/core/utils/account.d.ts.map +1 -0
  326. package/dist/types/react/core/utils/walletIcon.d.ts +14 -0
  327. package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
  328. package/dist/types/react/core/utils/walletname.d.ts +9 -0
  329. package/dist/types/react/core/utils/walletname.d.ts.map +1 -0
  330. package/dist/types/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.d.ts +1 -1
  331. package/dist/types/react/core/wallet/provider.d.ts.map +1 -0
  332. package/dist/types/react/native/ui/prebuilt/Account/address.d.ts +54 -0
  333. package/dist/types/react/native/ui/prebuilt/Account/address.d.ts.map +1 -0
  334. package/dist/types/react/native/ui/prebuilt/Account/avatar.d.ts +141 -0
  335. package/dist/types/react/native/ui/prebuilt/Account/avatar.d.ts.map +1 -0
  336. package/dist/types/react/native/ui/prebuilt/Account/balance.d.ts +144 -0
  337. package/dist/types/react/native/ui/prebuilt/Account/balance.d.ts.map +1 -0
  338. package/dist/types/react/native/ui/prebuilt/Account/blobbie.d.ts +34 -0
  339. package/dist/types/react/native/ui/prebuilt/Account/blobbie.d.ts.map +1 -0
  340. package/dist/types/react/native/ui/prebuilt/Account/name.d.ts +118 -0
  341. package/dist/types/react/native/ui/prebuilt/Account/name.d.ts.map +1 -0
  342. package/dist/types/react/native/ui/prebuilt/Wallet/icon.d.ts +100 -0
  343. package/dist/types/react/native/ui/prebuilt/Wallet/icon.d.ts.map +1 -0
  344. package/dist/types/react/native/ui/prebuilt/Wallet/name.d.ts +94 -0
  345. package/dist/types/react/native/ui/prebuilt/Wallet/name.d.ts.map +1 -0
  346. package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts +1 -1
  347. package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts.map +1 -1
  348. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
  349. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts +1 -1
  350. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  351. package/dist/types/react/web/ui/ConnectWallet/screens/ManageWalletScreen.d.ts.map +1 -1
  352. package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts.map +1 -1
  353. package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts +1 -42
  354. package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts.map +1 -1
  355. package/dist/types/react/web/ui/prebuilt/Account/blobbie.d.ts.map +1 -1
  356. package/dist/types/react/web/ui/prebuilt/NFT/utils.d.ts.map +1 -1
  357. package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts +2 -10
  358. package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts.map +1 -1
  359. package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts +1 -18
  360. package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts.map +1 -1
  361. package/dist/types/utils/any-evm/keyless-transaction.d.ts +1 -1
  362. package/dist/types/utils/shortenLargeNumber.d.ts.map +1 -1
  363. package/dist/types/version.d.ts +1 -1
  364. package/dist/types/wallets/in-app/web/lib/get-url-token.d.ts +1 -1
  365. package/dist/types/wallets/in-app/web/lib/get-url-token.d.ts.map +1 -1
  366. package/package.json +30 -30
  367. package/src/exports/react.native.ts +47 -0
  368. package/src/exports/react.ts +5 -3
  369. package/src/exports/wallets.ts +2 -0
  370. package/src/react/{web/ui/prebuilt/Account → core/account}/provider.test.tsx +1 -1
  371. package/src/react/{web/ui/prebuilt/Account → core/account}/provider.tsx +7 -5
  372. package/src/react/core/utils/account.ts +146 -0
  373. package/src/react/core/utils/walletIcon.ts +28 -0
  374. package/src/react/core/utils/walletname.ts +53 -0
  375. package/src/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.tsx +1 -1
  376. package/src/react/native/ui/prebuilt/Account/address.tsx +65 -0
  377. package/src/react/native/ui/prebuilt/Account/avatar.tsx +225 -0
  378. package/src/react/native/ui/prebuilt/Account/balance.tsx +221 -0
  379. package/src/react/native/ui/prebuilt/Account/blobbie.tsx +94 -0
  380. package/src/react/native/ui/prebuilt/Account/name.tsx +180 -0
  381. package/src/react/native/ui/prebuilt/Wallet/icon.tsx +124 -0
  382. package/src/react/native/ui/prebuilt/Wallet/name.tsx +112 -0
  383. package/src/react/web/ui/ConnectWallet/Blobbie.tsx +1 -18
  384. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +1 -1
  385. package/src/react/web/ui/ConnectWallet/Details.test.tsx +1 -1
  386. package/src/react/web/ui/ConnectWallet/Details.tsx +7 -7
  387. package/src/react/web/ui/ConnectWallet/screens/ManageWalletScreen.test.tsx +3 -3
  388. package/src/react/web/ui/ConnectWallet/screens/ManageWalletScreen.tsx +5 -4
  389. package/src/react/web/ui/prebuilt/Account/address.test.tsx +1 -1
  390. package/src/react/web/ui/prebuilt/Account/address.tsx +1 -1
  391. package/src/react/web/ui/prebuilt/Account/avatar.test.tsx +1 -1
  392. package/src/react/web/ui/prebuilt/Account/avatar.tsx +1 -2
  393. package/src/react/web/ui/prebuilt/Account/balance.test.tsx +7 -5
  394. package/src/react/web/ui/prebuilt/Account/balance.tsx +10 -130
  395. package/src/react/web/ui/prebuilt/Account/blobbie.tsx +1 -1
  396. package/src/react/web/ui/prebuilt/Account/name.test.tsx +1 -1
  397. package/src/react/web/ui/prebuilt/Account/name.tsx +1 -1
  398. package/src/react/web/ui/prebuilt/NFT/utils.ts +0 -1
  399. package/src/react/web/ui/prebuilt/Token/name.test.tsx +0 -1
  400. package/src/react/web/ui/prebuilt/Token/symbol.test.tsx +0 -1
  401. package/src/react/web/ui/prebuilt/Wallet/icon.test.tsx +3 -2
  402. package/src/react/web/ui/prebuilt/Wallet/icon.tsx +6 -30
  403. package/src/react/web/ui/prebuilt/Wallet/name.test.tsx +6 -2
  404. package/src/react/web/ui/prebuilt/Wallet/name.tsx +2 -52
  405. package/src/utils/shortenLargeNumber.ts +3 -0
  406. package/src/version.ts +1 -1
  407. package/src/wallets/connection/autoConnectCore.ts +13 -13
  408. package/src/wallets/in-app/web/lib/get-url-token.test.tsx +6 -6
  409. package/src/wallets/in-app/web/lib/get-url-token.ts +11 -9
  410. package/src/wallets/smart/smart-wallet-modular.test.ts +0 -1
  411. package/dist/cjs/react/web/ui/prebuilt/Account/provider.js.map +0 -1
  412. package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js.map +0 -1
  413. package/dist/esm/react/web/ui/prebuilt/Account/provider.js.map +0 -1
  414. package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js.map +0 -1
  415. package/dist/types/react/web/ui/prebuilt/Account/provider.d.ts.map +0 -1
  416. package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts.map +0 -1
  417. /package/dist/cjs/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.js +0 -0
  418. /package/dist/esm/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.js +0 -0
  419. /package/src/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.test.tsx +0 -0
@@ -1,4 +1,8 @@
1
+ import { type UseQueryOptions, useQuery } from "@tanstack/react-query";
2
+ import { getWalletInfo } from "../../../wallets/__generated__/getWalletInfo.js";
1
3
  import type { AuthOption } from "../../../wallets/types.js";
4
+ import type { WalletId } from "../../../wallets/wallet-types.js";
5
+ import { useWalletContext } from "../wallet/provider.js";
2
6
 
3
7
  // TODO make the social icons usable in RN too
4
8
  const googleIconUri =
@@ -106,3 +110,27 @@ export function getSocialIcon(provider: AuthOption | ({} & string)): string {
106
110
  return genericWalletIcon;
107
111
  }
108
112
  }
113
+
114
+ /**
115
+ * @internal
116
+ */
117
+ export function useWalletIcon(props: {
118
+ queryOptions?: Omit<UseQueryOptions<string>, "queryFn" | "queryKey">;
119
+ }) {
120
+ const { id } = useWalletContext();
121
+ const imageQuery = useQuery({
122
+ queryKey: ["walletIcon", id],
123
+ queryFn: async () => fetchWalletImage({ id }),
124
+ ...props.queryOptions,
125
+ });
126
+ return imageQuery;
127
+ }
128
+
129
+ /**
130
+ * @internal Exported for tests only
131
+ */
132
+ export async function fetchWalletImage(props: {
133
+ id: WalletId;
134
+ }) {
135
+ return getWalletInfo(props.id, true);
136
+ }
@@ -0,0 +1,53 @@
1
+ import { useQuery } from "@tanstack/react-query";
2
+ import type { UseQueryOptions } from "@tanstack/react-query";
3
+ import { getFunctionId } from "../../../utils/function-id.js";
4
+ import { getWalletInfo } from "../../../wallets/__generated__/getWalletInfo.js";
5
+ import type { WalletId } from "../../../wallets/wallet-types.js";
6
+ import { useWalletContext } from "../wallet/provider.js";
7
+
8
+ /**
9
+ * @internal
10
+ */
11
+ export function useWalletName(props: {
12
+ formatFn?: (str: string) => string;
13
+ queryOptions?: Omit<UseQueryOptions<string>, "queryFn" | "queryKey">;
14
+ }) {
15
+ const { id } = useWalletContext();
16
+ const nameQuery = useQuery({
17
+ queryKey: getQueryKeys({ id, formatFn: props.formatFn }),
18
+ queryFn: async () => fetchWalletName({ id, formatFn: props.formatFn }),
19
+ ...props.queryOptions,
20
+ });
21
+ return nameQuery;
22
+ }
23
+
24
+ /**
25
+ * @internal Exported for tests only
26
+ */
27
+ function getQueryKeys(props: {
28
+ id: WalletId;
29
+ formatFn?: (str: string) => string;
30
+ }) {
31
+ if (typeof props.formatFn === "function") {
32
+ return [
33
+ "walletName",
34
+ props.id,
35
+ { resolver: getFunctionId(props.formatFn) },
36
+ ] as const;
37
+ }
38
+ return ["walletName", props.id] as const;
39
+ }
40
+
41
+ /**
42
+ * @internal Exported for tests only
43
+ */
44
+ async function fetchWalletName(props: {
45
+ id: WalletId;
46
+ formatFn?: (str: string) => string;
47
+ }) {
48
+ const info = await getWalletInfo(props.id);
49
+ if (typeof props.formatFn === "function") {
50
+ return props.formatFn(info.name);
51
+ }
52
+ return info.name;
53
+ }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import type React from "react";
4
4
  import { createContext, useContext } from "react";
5
- import type { WalletId } from "../../../../../wallets/wallet-types.js";
5
+ import type { WalletId } from "../../../wallets/wallet-types.js";
6
6
 
7
7
  /**
8
8
  * Props for the WalletProvider component
@@ -0,0 +1,65 @@
1
+ "use client";
2
+
3
+ import { Text, type TextProps } from "react-native";
4
+ import { useAccountContext } from "../../../../core/account/provider.js";
5
+
6
+ /**
7
+ * @component
8
+ * @wallet
9
+ */
10
+ export interface AccountAddressProps extends Omit<TextProps, "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
+ className?: string;
19
+ }
20
+
21
+ /**
22
+ *
23
+ * @returns a <span> containing the full wallet address of the account
24
+ *
25
+ * @example
26
+ * ### Basic usage
27
+ * ```tsx
28
+ * import { AccountProvider, AccountAddress } from "thirdweb/react";
29
+ *
30
+ * <AccountProvider address="0x12345674b599ce99958242b3D3741e7b01841DF3" client={TW_CLIENT}>
31
+ * <AccountAddress />
32
+ * </AccountProvider>
33
+ * ```
34
+ * Result:
35
+ * ```html
36
+ * <span>0x12345674b599ce99958242b3D3741e7b01841DF3</span>
37
+ * ```
38
+ *
39
+ *
40
+ * ### Shorten the address
41
+ * ```tsx
42
+ * import { AccountProvider, AccountAddress } from "thirdweb/react";
43
+ * import { shortenAddress } from "thirdweb/utils";
44
+ *
45
+ * <AccountProvider address="0x12345674b599ce99958242b3D3741e7b01841DF3" client={TW_CLIENT}>
46
+ * <AccountAddress formatFn={shortenAddress} />
47
+ * </AccountProvider>
48
+ * ```
49
+ * Result:
50
+ * ```html
51
+ * <span>0x1234...1DF3</span>
52
+ * ```
53
+ *
54
+ * @component
55
+ * @wallet
56
+ * @beta
57
+ */
58
+ export function AccountAddress({
59
+ formatFn,
60
+ ...restProps
61
+ }: AccountAddressProps) {
62
+ const { address } = useAccountContext();
63
+ const value = formatFn ? formatFn(address) : address;
64
+ return <Text {...restProps}>{value}</Text>;
65
+ }
@@ -0,0 +1,225 @@
1
+ "use client";
2
+
3
+ import { type UseQueryOptions, useQuery } from "@tanstack/react-query";
4
+ import { Image, type ImageProps } from "react-native";
5
+ import { resolveAvatar } from "../../../../../extensions/ens/resolve-avatar.js";
6
+ import {
7
+ type ResolveNameOptions,
8
+ resolveName,
9
+ } from "../../../../../extensions/ens/resolve-name.js";
10
+ import { getSocialProfiles } from "../../../../../social/profiles.js";
11
+ import type { SocialProfile } from "../../../../../social/types.js";
12
+ import { parseAvatarRecord } from "../../../../../utils/ens/avatar.js";
13
+ import { useAccountContext } from "../../../../core/account/provider.js";
14
+ /**
15
+ * Props for the AccountAvatar component
16
+ * @component
17
+ * @wallet
18
+ */
19
+ export interface AccountAvatarProps
20
+ extends Omit<ImageProps, "source">,
21
+ Omit<ResolveNameOptions, "client" | "address"> {
22
+ /**
23
+ * Use this prop to prioritize the social profile that you want to display
24
+ * This is useful for a wallet containing multiple social profiles.
25
+ * This component inherits all attributes of a HTML's <img />, so you can interact with it just like a normal <img />
26
+ *
27
+ * @example
28
+ * If you have ENS, Lens and Farcaster profiles linked to your wallet
29
+ * you can prioritize showing the image for Lens by:
30
+ * ```tsx
31
+ * <AccountAvatar
32
+ * socialType="lens" // Choose between: "farcaster" | "lens" | "ens"
33
+ * />
34
+ * ```
35
+ */
36
+ socialType?: SocialProfile["type"];
37
+
38
+ /**
39
+ * This component will be shown while the avatar of the account is being fetched
40
+ * If not passed, the component will return `null`.
41
+ *
42
+ * You can pass a loading sign or spinner to this prop.
43
+ * @example
44
+ * ```tsx
45
+ * <AccountAvatar loadingComponent={<Spinner />} />
46
+ * ```
47
+ */
48
+ loadingComponent?: React.ComponentType;
49
+ /**
50
+ * This component will be shown if the request for fetching the avatar is done
51
+ * but could not retreive any result.
52
+ * You can pass a dummy avatar/image to this prop.
53
+ *
54
+ * If not passed, the component will return `null`
55
+ *
56
+ * @example
57
+ * ```tsx
58
+ * <AccountAvatar fallbackComponent={<DummyImage />} />
59
+ * ```
60
+ */
61
+ fallbackComponent?: React.ComponentType;
62
+
63
+ /**
64
+ * Optional query options for `useQuery`
65
+ */
66
+ queryOptions?: Omit<UseQueryOptions<string>, "queryFn" | "queryKey">;
67
+ }
68
+
69
+ /**
70
+ * The component for showing the avatar of the account.
71
+ * If fetches all the social profiles linked to your wallet, including: Farcaster, ENS, Lens (more to be added)
72
+ * You can choose which social profile you want to display. Defaults to the first item in the list.
73
+ *
74
+ * @example
75
+ * ### Basic usage
76
+ * ```tsx
77
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
78
+ *
79
+ * <AccountProvider address="0x...">
80
+ * <AccountAvatar />
81
+ * </AccountProvider>
82
+ * ```
83
+ * Result: An <img /> component, if the avatar is resolved successfully
84
+ * ```html
85
+ * <img alt="" src="resolved-url-for-the-avatar" />
86
+ * ```
87
+ *
88
+ * ### Show a loading sign when the avatar is being resolved
89
+ * ```tsx
90
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
91
+ *
92
+ * <AccountProvider address="0x...">
93
+ * <AccountAvatar
94
+ * loadingComponent={<YourLoadingComponent />}
95
+ * />
96
+ * </AccountProvider>
97
+ * ```
98
+ *
99
+ * ### Fallback to something when the avatar fails to resolve
100
+ * ```tsx
101
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
102
+ *
103
+ * <AccountProvider address="0x...">
104
+ * <AccountAvatar
105
+ * fallbackComponent={<DummyImage />}
106
+ * />
107
+ * </AccountProvider>
108
+ * ```
109
+ *
110
+ * ### Select a social profile to display
111
+ * If you wallet associates with more than one social profiles (Lens, Farcaster, ENS, etc.)
112
+ * You can specify which service you want to prioritize using the `socialType` props
113
+ * ```tsx
114
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
115
+ *
116
+ * <AccountProvider address="0x...">
117
+ * <AccountAvatar
118
+ * // Choose between: "farcaster" | "lens" | "ens"
119
+ * socialType={"ens"}
120
+ * />
121
+ * </AccountProvider>
122
+ * ```
123
+ *
124
+ * ### Custom ENS resolver chain
125
+ * This component shares the same props with the ENS extension `resolveAvatar`
126
+ * ```tsx
127
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
128
+ * import { base } from "thirdweb/chains";
129
+ *
130
+ * <AccountProvider address="0x...">
131
+ * <AccountAvatar
132
+ * resolverAddress={"0x..."}
133
+ * resolverChain={base}
134
+ * />
135
+ * </AccountProvider>
136
+ * ```
137
+ *
138
+ * ### Custom query options for useQuery
139
+ * This component uses `@tanstack-query`'s useQuery internally.
140
+ * You can use the `queryOptions` prop for more fine-grained control
141
+ * ```tsx
142
+ * <AccountAvatar
143
+ * queryOptions={{
144
+ * enabled: isEnabled,
145
+ * retry: 3,
146
+ * }}
147
+ * />
148
+ * ```
149
+ * @returns An <img /> if the avatar is resolved successfully
150
+ * @component
151
+ * @wallet
152
+ * @beta
153
+ */
154
+ export function AccountAvatar({
155
+ socialType,
156
+ resolverAddress,
157
+ resolverChain,
158
+ loadingComponent,
159
+ fallbackComponent,
160
+ queryOptions,
161
+ ...restProps
162
+ }: AccountAvatarProps) {
163
+ const { address, client } = useAccountContext();
164
+ const avatarQuery = useQuery({
165
+ queryKey: [
166
+ "account-avatar",
167
+ address,
168
+ { socialType },
169
+ { resolverAddress, resolverChain },
170
+ ],
171
+ queryFn: async (): Promise<string> => {
172
+ const [socialData, ensName] = await Promise.all([
173
+ getSocialProfiles({ address, client }),
174
+ resolveName({
175
+ client,
176
+ address: address || "",
177
+ resolverAddress,
178
+ resolverChain,
179
+ }),
180
+ ]);
181
+
182
+ const uri = socialData?.filter(
183
+ (p) => p.avatar && (socialType ? p.type === socialType : true),
184
+ )[0]?.avatar;
185
+
186
+ const [resolvedSocialAvatar, resolvedENSAvatar] = await Promise.all([
187
+ uri ? parseAvatarRecord({ client, uri }) : undefined,
188
+ ensName
189
+ ? resolveAvatar({
190
+ client,
191
+ name: ensName,
192
+ })
193
+ : undefined,
194
+ ]);
195
+
196
+ // If no social image + ens name found -> exit and show <Blobbie />
197
+ if (!resolvedSocialAvatar && !resolvedENSAvatar) {
198
+ throw new Error("Failed to resolve social + ens avatar");
199
+ }
200
+
201
+ // else, prioritize the social image first
202
+ if (resolvedSocialAvatar) {
203
+ return resolvedSocialAvatar;
204
+ }
205
+
206
+ if (resolvedENSAvatar) {
207
+ return resolvedENSAvatar;
208
+ }
209
+
210
+ throw new Error("Failed to resolve social + ens avatar");
211
+ },
212
+ retry: false,
213
+ ...queryOptions,
214
+ });
215
+
216
+ if (avatarQuery.isLoading) {
217
+ return loadingComponent || null;
218
+ }
219
+
220
+ if (!avatarQuery.data) {
221
+ return fallbackComponent || null;
222
+ }
223
+
224
+ return <Image source={{ uri: avatarQuery.data }} {...restProps} />;
225
+ }
@@ -0,0 +1,221 @@
1
+ "use client";
2
+
3
+ import { type UseQueryOptions, useQuery } from "@tanstack/react-query";
4
+ import { Text, type TextProps } from "react-native";
5
+ import type { Chain } from "../../../../../chains/types.js";
6
+ import type { SupportedFiatCurrency } from "../../../../../pay/convert/type.js";
7
+ import { useActiveWalletChain } from "../../../../../react/core/hooks/wallets/useActiveWalletChain.js";
8
+ import { getAddress } from "../../../../../utils/address.js";
9
+ import { useAccountContext } from "../../../../core/account/provider.js";
10
+ import {
11
+ type AccountBalanceInfo,
12
+ formatAccountFiatBalance,
13
+ loadAccountBalance,
14
+ } from "../../../../core/utils/account.js";
15
+ import { formatAccountTokenBalance } from "../../../../core/utils/account.js";
16
+
17
+ /**
18
+ * Props for the AccountBalance component
19
+ * @component
20
+ * @wallet
21
+ */
22
+ export interface AccountBalanceProps extends Omit<TextProps, "children"> {
23
+ /**
24
+ * The network to fetch balance on
25
+ * If not passed, the component will use the current chain that the wallet is connected to (`useActiveWalletChain()`)
26
+ */
27
+ chain?: Chain;
28
+ /**
29
+ * By default this component will fetch the balance for the native token on a given chain
30
+ * If you want to fetch balance for an ERC20 token, use the `tokenAddress` props
31
+ */
32
+ tokenAddress?: string;
33
+ /**
34
+ * A function to format the balance's display value
35
+ * use this function to transform the balance display value like round up the number
36
+ * Particularly useful to avoid overflowing-UI issues
37
+ */
38
+ formatFn?: (props: AccountBalanceInfo) => string;
39
+ /**
40
+ * This component will be shown while the balance of the account is being fetched
41
+ * If not passed, the component will return `null`.
42
+ *
43
+ * You can/should pass a loading sign or spinner to this prop.
44
+ * @example
45
+ * ```tsx
46
+ * <AccountBalance
47
+ * chain={ethereum}
48
+ * loadingComponent={<Spinner />}
49
+ * />
50
+ * ```
51
+ */
52
+ loadingComponent?: React.ComponentType;
53
+ /**
54
+ * This component will be shown if the balance fails to be retreived
55
+ * If not passed, the component will return `null`.
56
+ *
57
+ * You can/should pass a descriptive text/component to this prop, indicating that the
58
+ * balance was not fetched succesfully
59
+ * @example
60
+ * ```tsx
61
+ * <AccountBalance
62
+ * chain={nonExistentChain}
63
+ * fallbackComponent={"Failed to load"}
64
+ * />
65
+ * ```
66
+ */
67
+ fallbackComponent?: React.ComponentType;
68
+ /**
69
+ * Optional `useQuery` params
70
+ */
71
+ queryOptions?: Omit<
72
+ UseQueryOptions<AccountBalanceInfo>,
73
+ "queryFn" | "queryKey"
74
+ >;
75
+
76
+ /**
77
+ * Show the token balance in a supported fiat currency (e.g "USD")
78
+ */
79
+ showBalanceInFiat?: SupportedFiatCurrency;
80
+ }
81
+
82
+ /**
83
+ * This component fetches and shows the balance of the wallet address on a given chain.
84
+ * It inherits all the attributes of a HTML <span> component, hence you can style it just like how you would style a normal <span>
85
+ *
86
+ *
87
+ * @example
88
+ * ### Basic usage
89
+ * ```tsx
90
+ * import { AccountProvider, AccountBalance } from "thirdweb/react";
91
+ * import { ethereum } from "thirdweb/chains";
92
+ *
93
+ * <AccountProvider address="0x...">
94
+ * <AccountBalance chain={ethereum} />
95
+ * </AccountProvider>
96
+ * ```
97
+ * Result:
98
+ * ```html
99
+ * <span>1.091435 ETH</span>
100
+ * ```
101
+ *
102
+ *
103
+ * ### Format the balance (round up, shorten etc.)
104
+ * The AccountBalance component accepts a `formatFn` which takes in an object of type `AccountBalanceInfo` and outputs a string
105
+ * The function is used to modify the display value of the wallet balance (either in crypto or fiat)
106
+ *
107
+ * ```tsx
108
+ * import type { AccountBalanceInfo } from "thirdweb/react";
109
+ * import { formatNumber } from "thirdweb/utils";
110
+ *
111
+ * const format = (props: AccountInfoBalance):string => `${formatNumber(props.balance, 1)} ${props.symbol.toLowerCase()}`
112
+ *
113
+ * <AccountBalance formatFn={format} />
114
+ * ```
115
+ *
116
+ * Result:
117
+ * ```html
118
+ * <span>1.1 eth</span> // the balance is rounded up to 1 decimal and the symbol is lowercased
119
+ * ```
120
+ *
121
+ * ### Show a loading sign when the balance is being fetched
122
+ * ```tsx
123
+ * import { AccountProvider, AccountBalance } from "thirdweb/react";
124
+ *
125
+ * <AccountProvider address="0x...">
126
+ * <AccountBalance
127
+ * chain={ethereum}
128
+ * loadingComponent={<Spinner />}
129
+ * />
130
+ * </AccountProvider>
131
+ * ```
132
+ *
133
+ * ### Fallback to something when the balance fails to resolve
134
+ * ```tsx
135
+ * <AccountProvider address="0x...">
136
+ * <AccountBalance
137
+ * chain={nonExistentChain}
138
+ * fallbackComponent={"Failed to load"}
139
+ * />
140
+ * </AccountProvider>
141
+ * ```
142
+ *
143
+ * ### Custom query options for useQuery
144
+ * This component uses `@tanstack-query`'s useQuery internally.
145
+ * You can use the `queryOptions` prop for more fine-grained control
146
+ * ```tsx
147
+ * <AccountBalance
148
+ * queryOptions={{
149
+ * enabled: isEnabled,
150
+ * retry: 4,
151
+ * }}
152
+ * />
153
+ * ```
154
+ *
155
+ * @component
156
+ * @wallet
157
+ * @beta
158
+ */
159
+ export function AccountBalance({
160
+ chain,
161
+ tokenAddress,
162
+ loadingComponent,
163
+ fallbackComponent,
164
+ queryOptions,
165
+ formatFn,
166
+ showBalanceInFiat,
167
+ ...restProps
168
+ }: AccountBalanceProps) {
169
+ const { address, client } = useAccountContext();
170
+ const walletChain = useActiveWalletChain();
171
+ const chainToLoad = chain || walletChain;
172
+ const balanceQuery = useQuery({
173
+ queryKey: [
174
+ "internal_account_balance",
175
+ chainToLoad?.id || -1,
176
+ address,
177
+ { tokenAddress },
178
+ showBalanceInFiat,
179
+ ] as const,
180
+ queryFn: async (): Promise<AccountBalanceInfo> =>
181
+ loadAccountBalance({
182
+ chain: chainToLoad,
183
+ client,
184
+ address: getAddress(address),
185
+ tokenAddress: tokenAddress ? getAddress(tokenAddress) : undefined,
186
+ showBalanceInFiat,
187
+ }),
188
+ retry: false,
189
+ ...queryOptions,
190
+ });
191
+
192
+ if (balanceQuery.isLoading) {
193
+ return loadingComponent || null;
194
+ }
195
+
196
+ if (balanceQuery.data === undefined) {
197
+ return fallbackComponent || null;
198
+ }
199
+
200
+ // Prioritize using the formatFn from users
201
+ if (formatFn) {
202
+ return <Text {...restProps}>{formatFn(balanceQuery.data)}</Text>;
203
+ }
204
+
205
+ if (showBalanceInFiat) {
206
+ return (
207
+ <Text {...restProps}>
208
+ {formatAccountFiatBalance({ ...balanceQuery.data, decimals: 2 })}
209
+ </Text>
210
+ );
211
+ }
212
+
213
+ return (
214
+ <Text {...restProps}>
215
+ {formatAccountTokenBalance({
216
+ ...balanceQuery.data,
217
+ decimals: balanceQuery.data.balance < 1 ? 3 : 2,
218
+ })}
219
+ </Text>
220
+ );
221
+ }
@@ -0,0 +1,94 @@
1
+ import { hexToNumber } from "@noble/curves/abstract/utils";
2
+ import { useMemo } from "react";
3
+ import { StyleSheet, View, type ViewStyle } from "react-native";
4
+ import { Defs, LinearGradient, Rect, Stop, Svg } from "react-native-svg";
5
+ import { useAccountContext } from "../../../../core/account/provider.js";
6
+ import { COLOR_OPTIONS } from "../../../../core/utils/account.js";
7
+ /**
8
+ * Props for the Blobbie component
9
+ * @component
10
+ */
11
+ export type BlobbieProps = {
12
+ address: string;
13
+ size: number;
14
+ style?: ViewStyle;
15
+ };
16
+
17
+ /**
18
+ * A wrapper for the Blobbie component
19
+ * @param props BlobbieProps
20
+ * @beta
21
+ * @wallet
22
+ */
23
+ export function AccountBlobbie(props: Omit<BlobbieProps, "address">) {
24
+ const { address } = useAccountContext();
25
+ return <Blobbie {...props} address={address} />;
26
+ }
27
+
28
+ /**
29
+ * A unique gradient avatar based on the provided address.
30
+ * @param props The component props.
31
+ * @param props.address The address to generate the gradient with.
32
+ * @param props.style The style for the component
33
+ * @param props.size The size of each side of the square avatar (in pixels)
34
+ * @component
35
+ * @wallet
36
+ * @example
37
+ * ```tsx
38
+ * import { Blobbie } from "thirdweb/react";
39
+ *
40
+ * <Blobbie address="0x...." style={{ width: 40, height: 40 }} />
41
+ * ```
42
+ */
43
+ export function Blobbie(props: BlobbieProps) {
44
+ const colors = useMemo(
45
+ () =>
46
+ COLOR_OPTIONS[
47
+ Number(hexToNumber(props.address.slice(2, 4))) % COLOR_OPTIONS.length
48
+ ] as [string, string],
49
+ [props.address],
50
+ );
51
+
52
+ const containerStyle = useMemo(() => {
53
+ const baseStyle = props.style || {};
54
+ if (props.size) {
55
+ return {
56
+ ...baseStyle,
57
+ width: props.size,
58
+ height: props.size,
59
+ };
60
+ }
61
+ return baseStyle;
62
+ }, [props.style, props.size]);
63
+
64
+ const gradientUniqueId = `grad${colors[0]}+${colors[1]}`.replace(
65
+ /[^a-zA-Z0-9 ]/g,
66
+ "",
67
+ );
68
+
69
+ return (
70
+ <View style={[styles.container, containerStyle]}>
71
+ <Svg height="100%" width="100%" style={StyleSheet.absoluteFillObject}>
72
+ <Defs>
73
+ <LinearGradient
74
+ id={gradientUniqueId}
75
+ x1="0%"
76
+ y1="100%"
77
+ x2="100%"
78
+ y2="0%"
79
+ >
80
+ <Stop offset="0" stopColor={colors[0]} />
81
+ <Stop offset="1" stopColor={colors[1]} />
82
+ </LinearGradient>
83
+ </Defs>
84
+ <Rect width="100%" height="100%" fill={`url(#${gradientUniqueId})`} />
85
+ </Svg>
86
+ </View>
87
+ );
88
+ }
89
+
90
+ const styles = StyleSheet.create({
91
+ container: {
92
+ overflow: "hidden",
93
+ },
94
+ });