thirdweb 5.86.7-nightly-f5f8a40320d5d768d5866813f53ee4880bdf7851-20250129000319 → 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 (190) 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/react/{web/ui/prebuilt/Account → core/account}/provider.js +5 -1
  6. package/dist/cjs/react/core/account/provider.js.map +1 -0
  7. package/dist/cjs/react/core/utils/account.js +105 -0
  8. package/dist/cjs/react/core/utils/account.js.map +1 -0
  9. package/dist/cjs/react/core/utils/walletIcon.js +23 -0
  10. package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
  11. package/dist/cjs/react/core/utils/walletname.js +43 -0
  12. package/dist/cjs/react/core/utils/walletname.js.map +1 -0
  13. package/dist/cjs/react/core/wallet/provider.js.map +1 -0
  14. package/dist/cjs/react/native/ui/prebuilt/Account/address.js +50 -0
  15. package/dist/cjs/react/native/ui/prebuilt/Account/address.js.map +1 -0
  16. package/dist/cjs/react/native/ui/prebuilt/Account/avatar.js +151 -0
  17. package/dist/cjs/react/native/ui/prebuilt/Account/avatar.js.map +1 -0
  18. package/dist/cjs/react/native/ui/prebuilt/Account/balance.js +130 -0
  19. package/dist/cjs/react/native/ui/prebuilt/Account/balance.js.map +1 -0
  20. package/dist/cjs/react/native/ui/prebuilt/Account/blobbie.js +58 -0
  21. package/dist/cjs/react/native/ui/prebuilt/Account/blobbie.js.map +1 -0
  22. package/dist/cjs/react/native/ui/prebuilt/Account/name.js +113 -0
  23. package/dist/cjs/react/native/ui/prebuilt/Account/name.js.map +1 -0
  24. package/dist/cjs/react/native/ui/prebuilt/Wallet/icon.js +85 -0
  25. package/dist/cjs/react/native/ui/prebuilt/Wallet/icon.js.map +1 -0
  26. package/dist/cjs/react/native/ui/prebuilt/Wallet/name.js +66 -0
  27. package/dist/cjs/react/native/ui/prebuilt/Wallet/name.js.map +1 -0
  28. package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js +2 -18
  29. package/dist/cjs/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
  30. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js +1 -1
  31. package/dist/cjs/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  32. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +5 -4
  33. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  34. package/dist/cjs/react/web/ui/prebuilt/Account/address.js +1 -1
  35. package/dist/cjs/react/web/ui/prebuilt/Account/address.js.map +1 -1
  36. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js +1 -1
  37. package/dist/cjs/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
  38. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js +8 -90
  39. package/dist/cjs/react/web/ui/prebuilt/Account/balance.js.map +1 -1
  40. package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js +1 -1
  41. package/dist/cjs/react/web/ui/prebuilt/Account/blobbie.js.map +1 -1
  42. package/dist/cjs/react/web/ui/prebuilt/Account/name.js +1 -1
  43. package/dist/cjs/react/web/ui/prebuilt/Account/name.js.map +1 -1
  44. package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js +1 -23
  45. package/dist/cjs/react/web/ui/prebuilt/Wallet/icon.js.map +1 -1
  46. package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js +2 -42
  47. package/dist/cjs/react/web/ui/prebuilt/Wallet/name.js.map +1 -1
  48. package/dist/cjs/utils/shortenLargeNumber.js +3 -0
  49. package/dist/cjs/utils/shortenLargeNumber.js.map +1 -1
  50. package/dist/cjs/version.js +1 -1
  51. package/dist/cjs/version.js.map +1 -1
  52. package/dist/esm/exports/react.js +3 -3
  53. package/dist/esm/exports/react.js.map +1 -1
  54. package/dist/esm/exports/react.native.js +15 -0
  55. package/dist/esm/exports/react.native.js.map +1 -1
  56. package/dist/esm/react/{web/ui/prebuilt/Account → core/account}/provider.js +5 -1
  57. package/dist/esm/react/core/account/provider.js.map +1 -0
  58. package/dist/esm/react/core/utils/account.js +99 -0
  59. package/dist/esm/react/core/utils/account.js.map +1 -0
  60. package/dist/esm/react/core/utils/walletIcon.js +21 -0
  61. package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
  62. package/dist/esm/react/core/utils/walletname.js +40 -0
  63. package/dist/esm/react/core/utils/walletname.js.map +1 -0
  64. package/dist/esm/react/core/wallet/provider.js.map +1 -0
  65. package/dist/esm/react/native/ui/prebuilt/Account/address.js +47 -0
  66. package/dist/esm/react/native/ui/prebuilt/Account/address.js.map +1 -0
  67. package/dist/esm/react/native/ui/prebuilt/Account/avatar.js +148 -0
  68. package/dist/esm/react/native/ui/prebuilt/Account/avatar.js.map +1 -0
  69. package/dist/esm/react/native/ui/prebuilt/Account/balance.js +127 -0
  70. package/dist/esm/react/native/ui/prebuilt/Account/balance.js.map +1 -0
  71. package/dist/esm/react/native/ui/prebuilt/Account/blobbie.js +54 -0
  72. package/dist/esm/react/native/ui/prebuilt/Account/blobbie.js.map +1 -0
  73. package/dist/esm/react/native/ui/prebuilt/Account/name.js +110 -0
  74. package/dist/esm/react/native/ui/prebuilt/Account/name.js.map +1 -0
  75. package/dist/esm/react/native/ui/prebuilt/Wallet/icon.js +81 -0
  76. package/dist/esm/react/native/ui/prebuilt/Wallet/icon.js.map +1 -0
  77. package/dist/esm/react/native/ui/prebuilt/Wallet/name.js +63 -0
  78. package/dist/esm/react/native/ui/prebuilt/Wallet/name.js.map +1 -0
  79. package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js +1 -17
  80. package/dist/esm/react/web/ui/ConnectWallet/Blobbie.js.map +1 -1
  81. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js +1 -1
  82. package/dist/esm/react/web/ui/ConnectWallet/ConnectButton.js.map +1 -1
  83. package/dist/esm/react/web/ui/ConnectWallet/Details.js +3 -2
  84. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  85. package/dist/esm/react/web/ui/prebuilt/Account/address.js +1 -1
  86. package/dist/esm/react/web/ui/prebuilt/Account/address.js.map +1 -1
  87. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js +1 -1
  88. package/dist/esm/react/web/ui/prebuilt/Account/avatar.js.map +1 -1
  89. package/dist/esm/react/web/ui/prebuilt/Account/balance.js +6 -85
  90. package/dist/esm/react/web/ui/prebuilt/Account/balance.js.map +1 -1
  91. package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js +1 -1
  92. package/dist/esm/react/web/ui/prebuilt/Account/blobbie.js.map +1 -1
  93. package/dist/esm/react/web/ui/prebuilt/Account/name.js +1 -1
  94. package/dist/esm/react/web/ui/prebuilt/Account/name.js.map +1 -1
  95. package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js +1 -22
  96. package/dist/esm/react/web/ui/prebuilt/Wallet/icon.js.map +1 -1
  97. package/dist/esm/react/web/ui/prebuilt/Wallet/name.js +1 -39
  98. package/dist/esm/react/web/ui/prebuilt/Wallet/name.js.map +1 -1
  99. package/dist/esm/utils/shortenLargeNumber.js +3 -0
  100. package/dist/esm/utils/shortenLargeNumber.js.map +1 -1
  101. package/dist/esm/version.js +1 -1
  102. package/dist/esm/version.js.map +1 -1
  103. package/dist/types/exports/react.d.ts +5 -4
  104. package/dist/types/exports/react.d.ts.map +1 -1
  105. package/dist/types/exports/react.native.d.ts +15 -0
  106. package/dist/types/exports/react.native.d.ts.map +1 -1
  107. package/dist/types/react/{web/ui/prebuilt/Account → core/account}/provider.d.ts +3 -4
  108. package/dist/types/react/core/account/provider.d.ts.map +1 -0
  109. package/dist/types/react/core/utils/account.d.ts +46 -0
  110. package/dist/types/react/core/utils/account.d.ts.map +1 -0
  111. package/dist/types/react/core/utils/walletIcon.d.ts +14 -0
  112. package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
  113. package/dist/types/react/core/utils/walletname.d.ts +9 -0
  114. package/dist/types/react/core/utils/walletname.d.ts.map +1 -0
  115. package/dist/types/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.d.ts +1 -1
  116. package/dist/types/react/core/wallet/provider.d.ts.map +1 -0
  117. package/dist/types/react/native/ui/prebuilt/Account/address.d.ts +54 -0
  118. package/dist/types/react/native/ui/prebuilt/Account/address.d.ts.map +1 -0
  119. package/dist/types/react/native/ui/prebuilt/Account/avatar.d.ts +141 -0
  120. package/dist/types/react/native/ui/prebuilt/Account/avatar.d.ts.map +1 -0
  121. package/dist/types/react/native/ui/prebuilt/Account/balance.d.ts +144 -0
  122. package/dist/types/react/native/ui/prebuilt/Account/balance.d.ts.map +1 -0
  123. package/dist/types/react/native/ui/prebuilt/Account/blobbie.d.ts +34 -0
  124. package/dist/types/react/native/ui/prebuilt/Account/blobbie.d.ts.map +1 -0
  125. package/dist/types/react/native/ui/prebuilt/Account/name.d.ts +118 -0
  126. package/dist/types/react/native/ui/prebuilt/Account/name.d.ts.map +1 -0
  127. package/dist/types/react/native/ui/prebuilt/Wallet/icon.d.ts +100 -0
  128. package/dist/types/react/native/ui/prebuilt/Wallet/icon.d.ts.map +1 -0
  129. package/dist/types/react/native/ui/prebuilt/Wallet/name.d.ts +94 -0
  130. package/dist/types/react/native/ui/prebuilt/Wallet/name.d.ts.map +1 -0
  131. package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts +1 -1
  132. package/dist/types/react/web/ui/ConnectWallet/Blobbie.d.ts.map +1 -1
  133. package/dist/types/react/web/ui/ConnectWallet/ConnectButton.d.ts.map +1 -1
  134. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts +1 -1
  135. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  136. package/dist/types/react/web/ui/prebuilt/Account/avatar.d.ts.map +1 -1
  137. package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts +1 -42
  138. package/dist/types/react/web/ui/prebuilt/Account/balance.d.ts.map +1 -1
  139. package/dist/types/react/web/ui/prebuilt/Account/blobbie.d.ts.map +1 -1
  140. package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts +2 -10
  141. package/dist/types/react/web/ui/prebuilt/Wallet/icon.d.ts.map +1 -1
  142. package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts +1 -18
  143. package/dist/types/react/web/ui/prebuilt/Wallet/name.d.ts.map +1 -1
  144. package/dist/types/utils/shortenLargeNumber.d.ts.map +1 -1
  145. package/dist/types/version.d.ts +1 -1
  146. package/dist/types/version.d.ts.map +1 -1
  147. package/package.json +1 -1
  148. package/src/exports/react.native.ts +47 -0
  149. package/src/exports/react.ts +5 -3
  150. package/src/react/{web/ui/prebuilt/Account → core/account}/provider.test.tsx +1 -1
  151. package/src/react/{web/ui/prebuilt/Account → core/account}/provider.tsx +7 -5
  152. package/src/react/core/utils/account.ts +146 -0
  153. package/src/react/core/utils/walletIcon.ts +28 -0
  154. package/src/react/core/utils/walletname.ts +53 -0
  155. package/src/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.tsx +1 -1
  156. package/src/react/native/ui/prebuilt/Account/address.tsx +65 -0
  157. package/src/react/native/ui/prebuilt/Account/avatar.tsx +225 -0
  158. package/src/react/native/ui/prebuilt/Account/balance.tsx +221 -0
  159. package/src/react/native/ui/prebuilt/Account/blobbie.tsx +94 -0
  160. package/src/react/native/ui/prebuilt/Account/name.tsx +180 -0
  161. package/src/react/native/ui/prebuilt/Wallet/icon.tsx +124 -0
  162. package/src/react/native/ui/prebuilt/Wallet/name.tsx +112 -0
  163. package/src/react/web/ui/ConnectWallet/Blobbie.tsx +1 -18
  164. package/src/react/web/ui/ConnectWallet/ConnectButton.tsx +1 -1
  165. package/src/react/web/ui/ConnectWallet/Details.test.tsx +1 -1
  166. package/src/react/web/ui/ConnectWallet/Details.tsx +7 -7
  167. package/src/react/web/ui/prebuilt/Account/address.test.tsx +1 -1
  168. package/src/react/web/ui/prebuilt/Account/address.tsx +1 -1
  169. package/src/react/web/ui/prebuilt/Account/avatar.test.tsx +1 -1
  170. package/src/react/web/ui/prebuilt/Account/avatar.tsx +1 -2
  171. package/src/react/web/ui/prebuilt/Account/balance.test.tsx +7 -5
  172. package/src/react/web/ui/prebuilt/Account/balance.tsx +10 -130
  173. package/src/react/web/ui/prebuilt/Account/blobbie.tsx +1 -1
  174. package/src/react/web/ui/prebuilt/Account/name.test.tsx +1 -1
  175. package/src/react/web/ui/prebuilt/Account/name.tsx +1 -1
  176. package/src/react/web/ui/prebuilt/Wallet/icon.test.tsx +3 -2
  177. package/src/react/web/ui/prebuilt/Wallet/icon.tsx +6 -30
  178. package/src/react/web/ui/prebuilt/Wallet/name.test.tsx +6 -2
  179. package/src/react/web/ui/prebuilt/Wallet/name.tsx +2 -52
  180. package/src/utils/shortenLargeNumber.ts +3 -0
  181. package/src/version.ts +1 -1
  182. package/dist/cjs/react/web/ui/prebuilt/Account/provider.js.map +0 -1
  183. package/dist/cjs/react/web/ui/prebuilt/Wallet/provider.js.map +0 -1
  184. package/dist/esm/react/web/ui/prebuilt/Account/provider.js.map +0 -1
  185. package/dist/esm/react/web/ui/prebuilt/Wallet/provider.js.map +0 -1
  186. package/dist/types/react/web/ui/prebuilt/Account/provider.d.ts.map +0 -1
  187. package/dist/types/react/web/ui/prebuilt/Wallet/provider.d.ts.map +0 -1
  188. /package/dist/cjs/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.js +0 -0
  189. /package/dist/esm/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.js +0 -0
  190. /package/src/react/{web/ui/prebuilt/Wallet → core/wallet}/provider.test.tsx +0 -0
@@ -1,6 +1,7 @@
1
1
  "use client";
2
2
  import { jsx as _jsx } from "react/jsx-runtime";
3
3
  import { createContext, useContext } from "react";
4
+ import { isAddress } from "../../../utils/address.js";
4
5
  const AccountProviderContext = /* @__PURE__ */ createContext(undefined);
5
6
  /**
6
7
  * A React context provider component that supplies Account-related data to its child components.
@@ -12,7 +13,7 @@ const AccountProviderContext = /* @__PURE__ */ createContext(undefined);
12
13
  * ```tsx
13
14
  * import { AccountProvider, AccountAvatar, AccountName, AccountAddress } from "thirdweb/react";
14
15
  *
15
- * <AccountProvider>
16
+ * <AccountProvider address="0x..." client={client}>
16
17
  * <AccountAvatar />
17
18
  * <AccountName />
18
19
  * <AccountAddress />
@@ -27,6 +28,9 @@ export function AccountProvider(props) {
27
28
  if (!props.address) {
28
29
  throw new Error("AccountProvider: No address passed. Ensure an address is always provided to the AccountProvider");
29
30
  }
31
+ if (!isAddress(props.address)) {
32
+ throw new Error(`AccountProvider: Invalid address: ${props.address}`);
33
+ }
30
34
  return (_jsx(AccountProviderContext.Provider, { value: props, children: props.children }));
31
35
  }
32
36
  /**
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../../src/react/core/account/provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAiBtD,MAAM,sBAAsB,GAAG,eAAe,CAAC,aAAa,CAE1D,SAAS,CAAC,CAAC;AAEb;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAoD;IAEpD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,qCAAqC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CACL,KAAC,sBAAsB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAC1C,KAAK,CAAC,QAAQ,GACiB,CACnC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,sBAAsB,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,oIAAoI,CACrI,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { NATIVE_TOKEN_ADDRESS } from "../../../constants/addresses.js";
2
+ import { convertCryptoToFiat } from "../../../pay/convert/cryptoToFiat.js";
3
+ import { isAddress } from "../../../utils/address.js";
4
+ import { formatNumber } from "../../../utils/formatNumber.js";
5
+ import { shortenLargeNumber } from "../../../utils/shortenLargeNumber.js";
6
+ import { getWalletBalance } from "../../../wallets/utils/getWalletBalance.js";
7
+ export const COLOR_OPTIONS = [
8
+ ["#fca5a5", "#b91c1c"],
9
+ ["#fdba74", "#c2410c"],
10
+ ["#fcd34d", "#b45309"],
11
+ ["#fde047", "#a16207"],
12
+ ["#a3e635", "#4d7c0f"],
13
+ ["#86efac", "#15803d"],
14
+ ["#67e8f9", "#0e7490"],
15
+ ["#7dd3fc", "#0369a1"],
16
+ ["#93c5fd", "#1d4ed8"],
17
+ ["#a5b4fc", "#4338ca"],
18
+ ["#c4b5fd", "#6d28d9"],
19
+ ["#d8b4fe", "#7e22ce"],
20
+ ["#f0abfc", "#a21caf"],
21
+ ["#f9a8d4", "#be185d"],
22
+ ["#fda4af", "#be123c"],
23
+ ];
24
+ /**
25
+ * @internal Exported for tests
26
+ */
27
+ export async function loadAccountBalance(props) {
28
+ const { chain, client, address, tokenAddress, showBalanceInFiat } = props;
29
+ if (!chain) {
30
+ throw new Error("chain is required");
31
+ }
32
+ if (tokenAddress &&
33
+ tokenAddress?.toLowerCase() === NATIVE_TOKEN_ADDRESS.toLowerCase()) {
34
+ throw new Error(`Invalid tokenAddress - cannot be ${NATIVE_TOKEN_ADDRESS}`);
35
+ }
36
+ if (!isAddress(address)) {
37
+ throw new Error("Invalid wallet address. Expected an EVM address");
38
+ }
39
+ if (tokenAddress && !isAddress(tokenAddress)) {
40
+ throw new Error("Invalid tokenAddress. Expected an EVM contract address");
41
+ }
42
+ const tokenBalanceData = await getWalletBalance({
43
+ chain,
44
+ client,
45
+ address,
46
+ tokenAddress,
47
+ }).catch(() => undefined);
48
+ if (!tokenBalanceData) {
49
+ throw new Error(`Failed to retrieve ${tokenAddress ? `token: ${tokenAddress}` : "native token"} balance for address: ${address} on chainId:${chain.id}`);
50
+ }
51
+ if (showBalanceInFiat) {
52
+ const fiatData = await convertCryptoToFiat({
53
+ fromAmount: Number(tokenBalanceData.displayValue),
54
+ fromTokenAddress: tokenAddress || NATIVE_TOKEN_ADDRESS,
55
+ to: showBalanceInFiat,
56
+ chain,
57
+ client,
58
+ }).catch(() => undefined);
59
+ if (fiatData === undefined) {
60
+ throw new Error(`Failed to resolve fiat value for ${tokenAddress ? `token: ${tokenAddress}` : "native token"} on chainId: ${chain.id}`);
61
+ }
62
+ const result = {
63
+ balance: fiatData?.result,
64
+ symbol: getFiatSymbol(showBalanceInFiat),
65
+ };
66
+ return result;
67
+ }
68
+ return {
69
+ balance: Number(tokenBalanceData.displayValue),
70
+ symbol: tokenBalanceData.symbol,
71
+ };
72
+ }
73
+ function getFiatSymbol(showBalanceInFiat) {
74
+ switch (showBalanceInFiat) {
75
+ case "USD":
76
+ return "$";
77
+ }
78
+ }
79
+ /**
80
+ * Format the display balance for both crypto and fiat, in the Details button and Modal
81
+ * If both crypto balance and fiat balance exist, we have to keep the string very short to avoid UI issues.
82
+ * @internal
83
+ * Used internally for the Details button and the Details Modal
84
+ */
85
+ export function formatAccountTokenBalance(props) {
86
+ const formattedTokenBalance = formatNumber(props.balance, props.decimals);
87
+ return `${formattedTokenBalance} ${props.symbol}`;
88
+ }
89
+ /**
90
+ * Used internally for the Details button and Details Modal
91
+ * @internal
92
+ */
93
+ export function formatAccountFiatBalance(props) {
94
+ const num = formatNumber(props.balance, props.decimals);
95
+ // Need to keep them short to avoid UI overflow issues
96
+ const formattedFiatBalance = shortenLargeNumber(num);
97
+ return `${props.symbol}${formattedFiatBalance}`;
98
+ }
99
+ //# sourceMappingURL=account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/account.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,6 @@
1
+ import { useQuery } from "@tanstack/react-query";
2
+ import { getWalletInfo } from "../../../wallets/__generated__/getWalletInfo.js";
3
+ import { useWalletContext } from "../wallet/provider.js";
1
4
  // TODO make the social icons usable in RN too
2
5
  const googleIconUri = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI3MDUuNiIgaGVpZ2h0PSI3MjAiIHZpZXdCb3g9IjAgMCAxODYuNjkgMTkwLjUiIHhtbG5zOnY9Imh0dHBzOi8vdmVjdGEuaW8vbmFubyI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTE4NC41ODMgNzY1LjE3MSkiPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMDg5LjMzMy02ODcuMjM5djM2Ljg4OGg1MS4yNjJjLTIuMjUxIDExLjg2My05LjAwNiAyMS45MDgtMTkuMTM3IDI4LjY2MmwzMC45MTMgMjMuOTg2YzE4LjAxMS0xNi42MjUgMjguNDAyLTQxLjA0NCAyOC40MDItNzAuMDUyIDAtNi43NTQtLjYwNi0xMy4yNDktMS43MzItMTkuNDgzeiIgZmlsbD0iIzQyODVmNCIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTQyLjcxNC02NTEuNzkxbC02Ljk3MiA1LjMzNy0yNC42NzkgMTkuMjIzaDBjMTUuNjczIDMxLjA4NiA0Ny43OTYgNTIuNTYxIDg1LjAzIDUyLjU2MSAyNS43MTcgMCA0Ny4yNzgtOC40ODYgNjMuMDM4LTIzLjAzM2wtMzAuOTEzLTIzLjk4NmMtOC40ODYgNS43MTUtMTkuMzEgOS4xNzktMzIuMTI1IDkuMTc5LTI0Ljc2NSAwLTQ1LjgwNi0xNi43MTItNTMuMzQtMzkuMjI2eiIgZmlsbD0iIzM0YTg1MyIvPjxwYXRoIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIgZD0iTS0xMTc0LjM2NS03MTIuNjFjLTYuNDk0IDEyLjgxNS0xMC4yMTcgMjcuMjc2LTEwLjIxNyA0Mi42ODlzMy43MjMgMjkuODc0IDEwLjIxNyA0Mi42ODljMCAuMDg2IDMxLjY5My0yNC41OTIgMzEuNjkzLTI0LjU5Mi0xLjkwNS01LjcxNS0zLjAzMS0xMS43NzYtMy4wMzEtMTguMDk4czEuMTI2LTEyLjM4MyAzLjAzMS0xOC4wOTh6IiBmaWxsPSIjZmJiYzA1Ii8+PHBhdGggZD0iTS0xMDg5LjMzMy03MjcuMjQ0YzE0LjAyOCAwIDI2LjQ5NyA0Ljg0OSAzNi40NTUgMTQuMjAxbDI3LjI3Ni0yNy4yNzZjLTE2LjUzOS0xNS40MTMtMzguMDEzLTI0Ljg1Mi02My43MzEtMjQuODUyLTM3LjIzNCAwLTY5LjM1OSAyMS4zODgtODUuMDMyIDUyLjU2MWwzMS42OTIgMjQuNTkyYzcuNTMzLTIyLjUxNCAyOC41NzUtMzkuMjI2IDUzLjM0LTM5LjIyNnoiIGZpbGw9IiNlYTQzMzUiIGNsaXAtcGF0aD0ibm9uZSIgbWFzaz0ibm9uZSIvPjwvZz48L3N2Zz4=";
3
6
  const facebookIconUri = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGRhdGEtbmFtZT0iRWJlbmUgMSIgdmlld0JveD0iMCAwIDEwMjQgMTAyNCIgaWQ9ImZhY2Vib29rLWxvZ28tMjAxOSI+PHBhdGggZmlsbD0iIzE4NzdmMiIgZD0iTTEwMjQsNTEyQzEwMjQsMjI5LjIzMDE2LDc5NC43Njk3OCwwLDUxMiwwUzAsMjI5LjIzMDE2LDAsNTEyYzAsMjU1LjU1NCwxODcuMjMxLDQ2Ny4zNzAxMiw0MzIsNTA1Ljc3Nzc3VjY2MEgzMDJWNTEySDQzMlYzOTkuMkM0MzIsMjcwLjg3OTgyLDUwOC40Mzg1NCwyMDAsNjI1LjM4OTIyLDIwMCw2ODEuNDA3NjUsMjAwLDc0MCwyMTAsNzQwLDIxMFYzMzZINjc1LjQzNzEzQzYxMS44MzUwOCwzMzYsNTkyLDM3NS40NjY2Nyw1OTIsNDE1Ljk1NzI4VjUxMkg3MzRMNzExLjMsNjYwSDU5MnYzNTcuNzc3NzdDODM2Ljc2OSw5NzkuMzcwMTIsMTAyNCw3NjcuNTU0LDEwMjQsNTEyWiI+PC9wYXRoPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik03MTEuMyw2NjAsNzM0LDUxMkg1OTJWNDE1Ljk1NzI4QzU5MiwzNzUuNDY2NjcsNjExLjgzNTA4LDMzNiw2NzUuNDM3MTMsMzM2SDc0MFYyMTBzLTU4LjU5MjM1LTEwLTExNC42MTA3OC0xMEM1MDguNDM4NTQsMjAwLDQzMiwyNzAuODc5ODIsNDMyLDM5OS4yVjUxMkgzMDJWNjYwSDQzMnYzNTcuNzc3NzdhNTE3LjM5NjE5LDUxNy4zOTYxOSwwLDAsMCwxNjAsMFY2NjBaIj48L3BhdGg+PC9zdmc+";
@@ -84,4 +87,22 @@ export function getSocialIcon(provider) {
84
87
  return genericWalletIcon;
85
88
  }
86
89
  }
90
+ /**
91
+ * @internal
92
+ */
93
+ export function useWalletIcon(props) {
94
+ const { id } = useWalletContext();
95
+ const imageQuery = useQuery({
96
+ queryKey: ["walletIcon", id],
97
+ queryFn: async () => fetchWalletImage({ id }),
98
+ ...props.queryOptions,
99
+ });
100
+ return imageQuery;
101
+ }
102
+ /**
103
+ * @internal Exported for tests only
104
+ */
105
+ export async function fetchWalletImage(props) {
106
+ return getWalletInfo(props.id, true);
107
+ }
87
108
  //# sourceMappingURL=walletIcon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"walletIcon.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/walletIcon.ts"],"names":[],"mappings":"AAEA,8CAA8C;AAC9C,MAAM,aAAa,GACjB,ojDAAojD,CAAC;AACvjD,MAAM,eAAe,GACnB,g9BAAg9B,CAAC;AACn9B,MAAM,YAAY,GAChB,w5BAAw5B,CAAC;AAC35B,MAAM,cAAc,GAClB,w1CAAw1C,CAAC;AAC31C,MAAM,eAAe,GACnB,oiCAAoiC,CAAC;AACviC,MAAM,WAAW,GACf,g8DAAg8D,CAAC;AACn8D,MAAM,gBAAgB,GACpB,45CAA45C,CAAC;AAC/5C,MAAM,eAAe,GACnB,4sFAA4sF,CAAC;AAC/sF,MAAM,aAAa,GACjB,gkCAAgkC,CAAC;AACnkC,MAAM,YAAY,GAChB,omEAAomE,CAAC;AACvmE,MAAM,aAAa,GACjB,4pDAA4pD,CAAC;AAC/pD,MAAM,KAAK,GACT,opBAAopB,CAAC;AACvpB,MAAM,SAAS,GACb,o2BAAo2B,CAAC;AACv2B,MAAM,SAAS,GACb,w7DAAw7D,CAAC;AAC37D,MAAM,CAAC,MAAM,gBAAgB,GAC3B,42EAA42E,CAAC;AAC/2E,MAAM,SAAS,GACb,gxBAAgxB,CAAC;AACnxB,MAAM,CAAC,MAAM,iBAAiB,GAC5B,4mDAA4mD,CAAC;AAC/mD,MAAM,WAAW,GACf,ovFAAovF,CAAC;AAEvvF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,YAAY;IACnB,QAAQ,EAAE,eAAe;IACzB,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,WAAW;IACjB,CAAC,EAAE,KAAK;IACR,SAAS,EAAE,gBAAgB;IAC3B,QAAQ,EAAE,eAAe;IACzB,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,aAAa;IACrB,KAAK,EAAE,YAAY;CACpB,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,aAAa,CAAC,QAAoC;IAChE,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,eAAe,CAAC;QACzB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,UAAU;YACb,OAAO,eAAe,CAAC;QACzB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,WAAW,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,WAAW,CAAC;QACrB,KAAK,GAAG;YACN,OAAO,KAAK,CAAC;QACf,KAAK,WAAW;YACd,OAAO,gBAAgB,CAAC;QAC1B,KAAK,UAAU;YACb,OAAO,eAAe,CAAC;QACzB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,iBAAiB,CAAC;IAC7B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"walletIcon.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/walletIcon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { useQuery } from "@tanstack/react-query";
2
+ import { getFunctionId } from "../../../utils/function-id.js";
3
+ import { getWalletInfo } from "../../../wallets/__generated__/getWalletInfo.js";
4
+ import { useWalletContext } from "../wallet/provider.js";
5
+ /**
6
+ * @internal
7
+ */
8
+ export function useWalletName(props) {
9
+ const { id } = useWalletContext();
10
+ const nameQuery = useQuery({
11
+ queryKey: getQueryKeys({ id, formatFn: props.formatFn }),
12
+ queryFn: async () => fetchWalletName({ id, formatFn: props.formatFn }),
13
+ ...props.queryOptions,
14
+ });
15
+ return nameQuery;
16
+ }
17
+ /**
18
+ * @internal Exported for tests only
19
+ */
20
+ function getQueryKeys(props) {
21
+ if (typeof props.formatFn === "function") {
22
+ return [
23
+ "walletName",
24
+ props.id,
25
+ { resolver: getFunctionId(props.formatFn) },
26
+ ];
27
+ }
28
+ return ["walletName", props.id];
29
+ }
30
+ /**
31
+ * @internal Exported for tests only
32
+ */
33
+ async function fetchWalletName(props) {
34
+ const info = await getWalletInfo(props.id);
35
+ if (typeof props.formatFn === "function") {
36
+ return props.formatFn(info.name);
37
+ }
38
+ return info.name;
39
+ }
40
+ //# sourceMappingURL=walletname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletname.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/walletname.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAEhF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAG7B;IACC,MAAM,EAAE,EAAE,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,QAAQ,CAAC;QACzB,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACxD,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtE,GAAG,KAAK,CAAC,YAAY;KACtB,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,KAGrB;IACC,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACzC,OAAO;YACL,YAAY;YACZ,KAAK,CAAC,EAAE;YACR,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;SACnC,CAAC;IACb,CAAC;IACD,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAU,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,KAG9B;IACC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC3C,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC;AACnB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../../src/react/core/wallet/provider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAGb,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAYlD;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,eAAe,CAAC,aAAa,CAEhE,SAAS,CAAC,CAAC;AAEb;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAmD;IAEnD,OAAO,CACL,KAAC,qBAAqB,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YACzC,KAAK,CAAC,QAAQ,GACgB,CAClC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,GAAG,GAAG,UAAU,CAAC,qBAAqB,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,MAAM,IAAI,KAAK,CACb,6HAA6H,CAC9H,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Text } from "react-native";
4
+ import { useAccountContext } from "../../../../core/account/provider.js";
5
+ /**
6
+ *
7
+ * @returns a <span> containing the full wallet address of the account
8
+ *
9
+ * @example
10
+ * ### Basic usage
11
+ * ```tsx
12
+ * import { AccountProvider, AccountAddress } from "thirdweb/react";
13
+ *
14
+ * <AccountProvider address="0x12345674b599ce99958242b3D3741e7b01841DF3" client={TW_CLIENT}>
15
+ * <AccountAddress />
16
+ * </AccountProvider>
17
+ * ```
18
+ * Result:
19
+ * ```html
20
+ * <span>0x12345674b599ce99958242b3D3741e7b01841DF3</span>
21
+ * ```
22
+ *
23
+ *
24
+ * ### Shorten the address
25
+ * ```tsx
26
+ * import { AccountProvider, AccountAddress } from "thirdweb/react";
27
+ * import { shortenAddress } from "thirdweb/utils";
28
+ *
29
+ * <AccountProvider address="0x12345674b599ce99958242b3D3741e7b01841DF3" client={TW_CLIENT}>
30
+ * <AccountAddress formatFn={shortenAddress} />
31
+ * </AccountProvider>
32
+ * ```
33
+ * Result:
34
+ * ```html
35
+ * <span>0x1234...1DF3</span>
36
+ * ```
37
+ *
38
+ * @component
39
+ * @wallet
40
+ * @beta
41
+ */
42
+ export function AccountAddress({ formatFn, ...restProps }) {
43
+ const { address } = useAccountContext();
44
+ const value = formatFn ? formatFn(address) : address;
45
+ return _jsx(Text, { ...restProps, children: value });
46
+ }
47
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../../../../../../../src/react/native/ui/prebuilt/Account/address.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAiBzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,QAAQ,EACR,GAAG,SAAS,EACQ;IACpB,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACrD,OAAO,KAAC,IAAI,OAAK,SAAS,YAAG,KAAK,GAAQ,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,148 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useQuery } from "@tanstack/react-query";
4
+ import { Image } from "react-native";
5
+ import { resolveAvatar } from "../../../../../extensions/ens/resolve-avatar.js";
6
+ import { resolveName, } from "../../../../../extensions/ens/resolve-name.js";
7
+ import { getSocialProfiles } from "../../../../../social/profiles.js";
8
+ import { parseAvatarRecord } from "../../../../../utils/ens/avatar.js";
9
+ import { useAccountContext } from "../../../../core/account/provider.js";
10
+ /**
11
+ * The component for showing the avatar of the account.
12
+ * If fetches all the social profiles linked to your wallet, including: Farcaster, ENS, Lens (more to be added)
13
+ * You can choose which social profile you want to display. Defaults to the first item in the list.
14
+ *
15
+ * @example
16
+ * ### Basic usage
17
+ * ```tsx
18
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
19
+ *
20
+ * <AccountProvider address="0x...">
21
+ * <AccountAvatar />
22
+ * </AccountProvider>
23
+ * ```
24
+ * Result: An <img /> component, if the avatar is resolved successfully
25
+ * ```html
26
+ * <img alt="" src="resolved-url-for-the-avatar" />
27
+ * ```
28
+ *
29
+ * ### Show a loading sign when the avatar is being resolved
30
+ * ```tsx
31
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
32
+ *
33
+ * <AccountProvider address="0x...">
34
+ * <AccountAvatar
35
+ * loadingComponent={<YourLoadingComponent />}
36
+ * />
37
+ * </AccountProvider>
38
+ * ```
39
+ *
40
+ * ### Fallback to something when the avatar fails to resolve
41
+ * ```tsx
42
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
43
+ *
44
+ * <AccountProvider address="0x...">
45
+ * <AccountAvatar
46
+ * fallbackComponent={<DummyImage />}
47
+ * />
48
+ * </AccountProvider>
49
+ * ```
50
+ *
51
+ * ### Select a social profile to display
52
+ * If you wallet associates with more than one social profiles (Lens, Farcaster, ENS, etc.)
53
+ * You can specify which service you want to prioritize using the `socialType` props
54
+ * ```tsx
55
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
56
+ *
57
+ * <AccountProvider address="0x...">
58
+ * <AccountAvatar
59
+ * // Choose between: "farcaster" | "lens" | "ens"
60
+ * socialType={"ens"}
61
+ * />
62
+ * </AccountProvider>
63
+ * ```
64
+ *
65
+ * ### Custom ENS resolver chain
66
+ * This component shares the same props with the ENS extension `resolveAvatar`
67
+ * ```tsx
68
+ * import { AccountProvider, AccountAvatar } from "thirdweb/react";
69
+ * import { base } from "thirdweb/chains";
70
+ *
71
+ * <AccountProvider address="0x...">
72
+ * <AccountAvatar
73
+ * resolverAddress={"0x..."}
74
+ * resolverChain={base}
75
+ * />
76
+ * </AccountProvider>
77
+ * ```
78
+ *
79
+ * ### Custom query options for useQuery
80
+ * This component uses `@tanstack-query`'s useQuery internally.
81
+ * You can use the `queryOptions` prop for more fine-grained control
82
+ * ```tsx
83
+ * <AccountAvatar
84
+ * queryOptions={{
85
+ * enabled: isEnabled,
86
+ * retry: 3,
87
+ * }}
88
+ * />
89
+ * ```
90
+ * @returns An <img /> if the avatar is resolved successfully
91
+ * @component
92
+ * @wallet
93
+ * @beta
94
+ */
95
+ export function AccountAvatar({ socialType, resolverAddress, resolverChain, loadingComponent, fallbackComponent, queryOptions, ...restProps }) {
96
+ const { address, client } = useAccountContext();
97
+ const avatarQuery = useQuery({
98
+ queryKey: [
99
+ "account-avatar",
100
+ address,
101
+ { socialType },
102
+ { resolverAddress, resolverChain },
103
+ ],
104
+ queryFn: async () => {
105
+ const [socialData, ensName] = await Promise.all([
106
+ getSocialProfiles({ address, client }),
107
+ resolveName({
108
+ client,
109
+ address: address || "",
110
+ resolverAddress,
111
+ resolverChain,
112
+ }),
113
+ ]);
114
+ const uri = socialData?.filter((p) => p.avatar && (socialType ? p.type === socialType : true))[0]?.avatar;
115
+ const [resolvedSocialAvatar, resolvedENSAvatar] = await Promise.all([
116
+ uri ? parseAvatarRecord({ client, uri }) : undefined,
117
+ ensName
118
+ ? resolveAvatar({
119
+ client,
120
+ name: ensName,
121
+ })
122
+ : undefined,
123
+ ]);
124
+ // If no social image + ens name found -> exit and show <Blobbie />
125
+ if (!resolvedSocialAvatar && !resolvedENSAvatar) {
126
+ throw new Error("Failed to resolve social + ens avatar");
127
+ }
128
+ // else, prioritize the social image first
129
+ if (resolvedSocialAvatar) {
130
+ return resolvedSocialAvatar;
131
+ }
132
+ if (resolvedENSAvatar) {
133
+ return resolvedENSAvatar;
134
+ }
135
+ throw new Error("Failed to resolve social + ens avatar");
136
+ },
137
+ retry: false,
138
+ ...queryOptions,
139
+ });
140
+ if (avatarQuery.isLoading) {
141
+ return loadingComponent || null;
142
+ }
143
+ if (!avatarQuery.data) {
144
+ return fallbackComponent || null;
145
+ }
146
+ return _jsx(Image, { source: { uri: avatarQuery.data }, ...restProps });
147
+ }
148
+ //# sourceMappingURL=avatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avatar.js","sourceRoot":"","sources":["../../../../../../../src/react/native/ui/prebuilt/Account/avatar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useQuery } from "@tanstack/react-query";
4
+ import { Text } from "react-native";
5
+ import { useActiveWalletChain } from "../../../../../react/core/hooks/wallets/useActiveWalletChain.js";
6
+ import { getAddress } from "../../../../../utils/address.js";
7
+ import { useAccountContext } from "../../../../core/account/provider.js";
8
+ import { formatAccountFiatBalance, loadAccountBalance, } from "../../../../core/utils/account.js";
9
+ import { formatAccountTokenBalance } from "../../../../core/utils/account.js";
10
+ /**
11
+ * This component fetches and shows the balance of the wallet address on a given chain.
12
+ * It inherits all the attributes of a HTML <span> component, hence you can style it just like how you would style a normal <span>
13
+ *
14
+ *
15
+ * @example
16
+ * ### Basic usage
17
+ * ```tsx
18
+ * import { AccountProvider, AccountBalance } from "thirdweb/react";
19
+ * import { ethereum } from "thirdweb/chains";
20
+ *
21
+ * <AccountProvider address="0x...">
22
+ * <AccountBalance chain={ethereum} />
23
+ * </AccountProvider>
24
+ * ```
25
+ * Result:
26
+ * ```html
27
+ * <span>1.091435 ETH</span>
28
+ * ```
29
+ *
30
+ *
31
+ * ### Format the balance (round up, shorten etc.)
32
+ * The AccountBalance component accepts a `formatFn` which takes in an object of type `AccountBalanceInfo` and outputs a string
33
+ * The function is used to modify the display value of the wallet balance (either in crypto or fiat)
34
+ *
35
+ * ```tsx
36
+ * import type { AccountBalanceInfo } from "thirdweb/react";
37
+ * import { formatNumber } from "thirdweb/utils";
38
+ *
39
+ * const format = (props: AccountInfoBalance):string => `${formatNumber(props.balance, 1)} ${props.symbol.toLowerCase()}`
40
+ *
41
+ * <AccountBalance formatFn={format} />
42
+ * ```
43
+ *
44
+ * Result:
45
+ * ```html
46
+ * <span>1.1 eth</span> // the balance is rounded up to 1 decimal and the symbol is lowercased
47
+ * ```
48
+ *
49
+ * ### Show a loading sign when the balance is being fetched
50
+ * ```tsx
51
+ * import { AccountProvider, AccountBalance } from "thirdweb/react";
52
+ *
53
+ * <AccountProvider address="0x...">
54
+ * <AccountBalance
55
+ * chain={ethereum}
56
+ * loadingComponent={<Spinner />}
57
+ * />
58
+ * </AccountProvider>
59
+ * ```
60
+ *
61
+ * ### Fallback to something when the balance fails to resolve
62
+ * ```tsx
63
+ * <AccountProvider address="0x...">
64
+ * <AccountBalance
65
+ * chain={nonExistentChain}
66
+ * fallbackComponent={"Failed to load"}
67
+ * />
68
+ * </AccountProvider>
69
+ * ```
70
+ *
71
+ * ### Custom query options for useQuery
72
+ * This component uses `@tanstack-query`'s useQuery internally.
73
+ * You can use the `queryOptions` prop for more fine-grained control
74
+ * ```tsx
75
+ * <AccountBalance
76
+ * queryOptions={{
77
+ * enabled: isEnabled,
78
+ * retry: 4,
79
+ * }}
80
+ * />
81
+ * ```
82
+ *
83
+ * @component
84
+ * @wallet
85
+ * @beta
86
+ */
87
+ export function AccountBalance({ chain, tokenAddress, loadingComponent, fallbackComponent, queryOptions, formatFn, showBalanceInFiat, ...restProps }) {
88
+ const { address, client } = useAccountContext();
89
+ const walletChain = useActiveWalletChain();
90
+ const chainToLoad = chain || walletChain;
91
+ const balanceQuery = useQuery({
92
+ queryKey: [
93
+ "internal_account_balance",
94
+ chainToLoad?.id || -1,
95
+ address,
96
+ { tokenAddress },
97
+ showBalanceInFiat,
98
+ ],
99
+ queryFn: async () => loadAccountBalance({
100
+ chain: chainToLoad,
101
+ client,
102
+ address: getAddress(address),
103
+ tokenAddress: tokenAddress ? getAddress(tokenAddress) : undefined,
104
+ showBalanceInFiat,
105
+ }),
106
+ retry: false,
107
+ ...queryOptions,
108
+ });
109
+ if (balanceQuery.isLoading) {
110
+ return loadingComponent || null;
111
+ }
112
+ if (balanceQuery.data === undefined) {
113
+ return fallbackComponent || null;
114
+ }
115
+ // Prioritize using the formatFn from users
116
+ if (formatFn) {
117
+ return _jsx(Text, { ...restProps, children: formatFn(balanceQuery.data) });
118
+ }
119
+ if (showBalanceInFiat) {
120
+ return (_jsx(Text, { ...restProps, children: formatAccountFiatBalance({ ...balanceQuery.data, decimals: 2 }) }));
121
+ }
122
+ return (_jsx(Text, { ...restProps, children: formatAccountTokenBalance({
123
+ ...balanceQuery.data,
124
+ decimals: balanceQuery.data.balance < 1 ? 3 : 2,
125
+ }) }));
126
+ }
127
+ //# sourceMappingURL=balance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../../../../../../src/react/native/ui/prebuilt/Account/balance.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAwB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAGpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAC;AACvG,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAEL,wBAAwB,EACxB,kBAAkB,GACnB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAmE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,KAAK,EACL,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,GAAG,SAAS,EACQ;IACpB,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,oBAAoB,EAAE,CAAC;IAC3C,MAAM,WAAW,GAAG,KAAK,IAAI,WAAW,CAAC;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC;QAC5B,QAAQ,EAAE;YACR,0BAA0B;YAC1B,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;YACP,EAAE,YAAY,EAAE;YAChB,iBAAiB;SACT;QACV,OAAO,EAAE,KAAK,IAAiC,EAAE,CAC/C,kBAAkB,CAAC;YACjB,KAAK,EAAE,WAAW;YAClB,MAAM;YACN,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC;YAC5B,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS;YACjE,iBAAiB;SAClB,CAAC;QACJ,KAAK,EAAE,KAAK;QACZ,GAAG,YAAY;KAChB,CAAC,CAAC;IAEH,IAAI,YAAY,CAAC,SAAS,EAAE,CAAC;QAC3B,OAAO,gBAAgB,IAAI,IAAI,CAAC;IAClC,CAAC;IAED,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,iBAAiB,IAAI,IAAI,CAAC;IACnC,CAAC;IAED,2CAA2C;IAC3C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,KAAC,IAAI,OAAK,SAAS,YAAG,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,GAAQ,CAAC;IACnE,CAAC;IAED,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CACL,KAAC,IAAI,OAAK,SAAS,YAChB,wBAAwB,CAAC,EAAE,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,GAC3D,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,KAAC,IAAI,OAAK,SAAS,YAChB,yBAAyB,CAAC;YACzB,GAAG,YAAY,CAAC,IAAI;YACpB,QAAQ,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAChD,CAAC,GACG,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { hexToNumber } from "@noble/curves/abstract/utils";
3
+ import { useMemo } from "react";
4
+ import { StyleSheet, View } from "react-native";
5
+ import { Defs, LinearGradient, Rect, Stop, Svg } from "react-native-svg";
6
+ import { useAccountContext } from "../../../../core/account/provider.js";
7
+ import { COLOR_OPTIONS } from "../../../../core/utils/account.js";
8
+ /**
9
+ * A wrapper for the Blobbie component
10
+ * @param props BlobbieProps
11
+ * @beta
12
+ * @wallet
13
+ */
14
+ export function AccountBlobbie(props) {
15
+ const { address } = useAccountContext();
16
+ return _jsx(Blobbie, { ...props, address: address });
17
+ }
18
+ /**
19
+ * A unique gradient avatar based on the provided address.
20
+ * @param props The component props.
21
+ * @param props.address The address to generate the gradient with.
22
+ * @param props.style The style for the component
23
+ * @param props.size The size of each side of the square avatar (in pixels)
24
+ * @component
25
+ * @wallet
26
+ * @example
27
+ * ```tsx
28
+ * import { Blobbie } from "thirdweb/react";
29
+ *
30
+ * <Blobbie address="0x...." style={{ width: 40, height: 40 }} />
31
+ * ```
32
+ */
33
+ export function Blobbie(props) {
34
+ const colors = useMemo(() => COLOR_OPTIONS[Number(hexToNumber(props.address.slice(2, 4))) % COLOR_OPTIONS.length], [props.address]);
35
+ const containerStyle = useMemo(() => {
36
+ const baseStyle = props.style || {};
37
+ if (props.size) {
38
+ return {
39
+ ...baseStyle,
40
+ width: props.size,
41
+ height: props.size,
42
+ };
43
+ }
44
+ return baseStyle;
45
+ }, [props.style, props.size]);
46
+ const gradientUniqueId = `grad${colors[0]}+${colors[1]}`.replace(/[^a-zA-Z0-9 ]/g, "");
47
+ return (_jsx(View, { style: [styles.container, containerStyle], children: _jsxs(Svg, { height: "100%", width: "100%", style: StyleSheet.absoluteFillObject, children: [_jsx(Defs, { children: _jsxs(LinearGradient, { id: gradientUniqueId, x1: "0%", y1: "100%", x2: "100%", y2: "0%", children: [_jsx(Stop, { offset: "0", stopColor: colors[0] }), _jsx(Stop, { offset: "1", stopColor: colors[1] })] }) }), _jsx(Rect, { width: "100%", height: "100%", fill: `url(#${gradientUniqueId})` })] }) }));
48
+ }
49
+ const styles = StyleSheet.create({
50
+ container: {
51
+ overflow: "hidden",
52
+ },
53
+ });
54
+ //# sourceMappingURL=blobbie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blobbie.js","sourceRoot":"","sources":["../../../../../../../src/react/native/ui/prebuilt/Account/blobbie.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAkB,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAWlE;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAoC;IACjE,MAAM,EAAE,OAAO,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACxC,OAAO,KAAC,OAAO,OAAK,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,OAAO,CAAC,KAAmB;IACzC,MAAM,MAAM,GAAG,OAAO,CACpB,GAAG,EAAE,CACH,aAAa,CACX,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,CAClD,EACvB,CAAC,KAAK,CAAC,OAAO,CAAC,CAChB,CAAC;IAEF,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;gBACL,GAAG,SAAS;gBACZ,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,MAAM,EAAE,KAAK,CAAC,IAAI;aACnB,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9B,MAAM,gBAAgB,GAAG,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAC9D,gBAAgB,EAChB,EAAE,CACH,CAAC;IAEF,OAAO,CACL,KAAC,IAAI,IAAC,KAAK,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,YAC7C,MAAC,GAAG,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAE,UAAU,CAAC,kBAAkB,aAClE,KAAC,IAAI,cACH,MAAC,cAAc,IACb,EAAE,EAAE,gBAAgB,EACpB,EAAE,EAAC,IAAI,EACP,EAAE,EAAC,MAAM,EACT,EAAE,EAAC,MAAM,EACT,EAAE,EAAC,IAAI,aAEP,KAAC,IAAI,IAAC,MAAM,EAAC,GAAG,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,GAAI,EACzC,KAAC,IAAI,IAAC,MAAM,EAAC,GAAG,EAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,GAAI,IAC1B,GACZ,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,EAAC,IAAI,EAAE,QAAQ,gBAAgB,GAAG,GAAI,IAClE,GACD,CACR,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,QAAQ,EAAE,QAAQ;KACnB;CACF,CAAC,CAAC"}