thirdweb 5.56.0 → 5.57.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 (280) hide show
  1. package/dist/cjs/contract/verification/index.js +29 -33
  2. package/dist/cjs/contract/verification/index.js.map +1 -1
  3. package/dist/cjs/extensions/erc1155/read/getNFTs.js +4 -1
  4. package/dist/cjs/extensions/erc1155/read/getNFTs.js.map +1 -1
  5. package/dist/cjs/react/core/utils/walletIcon.js +4 -1
  6. package/dist/cjs/react/core/utils/walletIcon.js.map +1 -1
  7. package/dist/cjs/react/native/ui/components/WalletImage.js +2 -0
  8. package/dist/cjs/react/native/ui/components/WalletImage.js.map +1 -1
  9. package/dist/cjs/react/native/ui/connect/InAppWalletUI.js +21 -1
  10. package/dist/cjs/react/native/ui/connect/InAppWalletUI.js.map +1 -1
  11. package/dist/cjs/react/native/ui/connect/TokenListScreen.js +2 -1
  12. package/dist/cjs/react/native/ui/connect/TokenListScreen.js.map +1 -1
  13. package/dist/cjs/react/native/ui/icons/svgs.js +2 -1
  14. package/dist/cjs/react/native/ui/icons/svgs.js.map +1 -1
  15. package/dist/cjs/react/web/ui/ConnectWallet/Details.js +15 -2
  16. package/dist/cjs/react/web/ui/ConnectWallet/Details.js.map +1 -1
  17. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js +12 -12
  18. package/dist/cjs/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  19. package/dist/cjs/react/web/ui/ConnectWallet/screens/TokenSelector.js +5 -5
  20. package/dist/cjs/react/web/ui/ConnectWallet/screens/TokenSelector.js.map +1 -1
  21. package/dist/cjs/react/web/ui/MediaRenderer/MediaRenderer.js +1 -1
  22. package/dist/cjs/react/web/ui/MediaRenderer/MediaRenderer.js.map +1 -1
  23. package/dist/cjs/react/web/wallets/ecosystem/EcosystemWalletHeader.js +3 -3
  24. package/dist/cjs/react/web/wallets/ecosystem/EcosystemWalletHeader.js.map +1 -1
  25. package/dist/cjs/react/web/wallets/in-app/InAppWalletConnectUI.js +4 -0
  26. package/dist/cjs/react/web/wallets/in-app/InAppWalletConnectUI.js.map +1 -1
  27. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js +38 -19
  28. package/dist/cjs/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  29. package/dist/cjs/react/web/wallets/shared/GuestLogin.js +81 -0
  30. package/dist/cjs/react/web/wallets/shared/GuestLogin.js.map +1 -0
  31. package/dist/cjs/react/web/wallets/shared/OTPLoginUI.js +1 -1
  32. package/dist/cjs/react/web/wallets/shared/OTPLoginUI.js.map +1 -1
  33. package/dist/cjs/react/web/wallets/shared/SocialLogin.js +1 -1
  34. package/dist/cjs/react/web/wallets/shared/SocialLogin.js.map +1 -1
  35. package/dist/cjs/react/web/wallets/shared/locale/de.js +2 -1
  36. package/dist/cjs/react/web/wallets/shared/locale/de.js.map +1 -1
  37. package/dist/cjs/react/web/wallets/shared/locale/en.js +1 -0
  38. package/dist/cjs/react/web/wallets/shared/locale/en.js.map +1 -1
  39. package/dist/cjs/react/web/wallets/shared/locale/es.js +2 -1
  40. package/dist/cjs/react/web/wallets/shared/locale/es.js.map +1 -1
  41. package/dist/cjs/react/web/wallets/shared/locale/fr.js +2 -1
  42. package/dist/cjs/react/web/wallets/shared/locale/fr.js.map +1 -1
  43. package/dist/cjs/react/web/wallets/shared/locale/ja.js +2 -1
  44. package/dist/cjs/react/web/wallets/shared/locale/ja.js.map +1 -1
  45. package/dist/cjs/react/web/wallets/shared/locale/kr.js +2 -1
  46. package/dist/cjs/react/web/wallets/shared/locale/kr.js.map +1 -1
  47. package/dist/cjs/react/web/wallets/shared/locale/tl.js +2 -1
  48. package/dist/cjs/react/web/wallets/shared/locale/tl.js.map +1 -1
  49. package/dist/cjs/react/web/wallets/shared/locale/vi.js +1 -0
  50. package/dist/cjs/react/web/wallets/shared/locale/vi.js.map +1 -1
  51. package/dist/cjs/react/web/wallets/shared/oauthSignIn.js +1 -0
  52. package/dist/cjs/react/web/wallets/shared/oauthSignIn.js.map +1 -1
  53. package/dist/cjs/utils/any-evm/deploy-metadata.js +1 -0
  54. package/dist/cjs/utils/any-evm/deploy-metadata.js.map +1 -1
  55. package/dist/cjs/utils/encoding/hex.js +1 -3
  56. package/dist/cjs/utils/encoding/hex.js.map +1 -1
  57. package/dist/cjs/utils/fetch.js +7 -12
  58. package/dist/cjs/utils/fetch.js.map +1 -1
  59. package/dist/cjs/utils/promise/p-limit.js.map +1 -1
  60. package/dist/cjs/utils/signatures/sign-message.js +2 -4
  61. package/dist/cjs/utils/signatures/sign-message.js.map +1 -1
  62. package/dist/cjs/version.js +1 -1
  63. package/dist/cjs/wallets/in-app/core/authentication/guest.js +33 -0
  64. package/dist/cjs/wallets/in-app/core/authentication/guest.js.map +1 -0
  65. package/dist/cjs/wallets/in-app/core/authentication/types.js +1 -0
  66. package/dist/cjs/wallets/in-app/core/authentication/types.js.map +1 -1
  67. package/dist/cjs/wallets/in-app/native/auth/native-auth.js +25 -0
  68. package/dist/cjs/wallets/in-app/native/auth/native-auth.js.map +1 -1
  69. package/dist/cjs/wallets/in-app/native/helpers/api/fetchers.js +1 -3
  70. package/dist/cjs/wallets/in-app/native/helpers/api/fetchers.js.map +1 -1
  71. package/dist/cjs/wallets/in-app/native/helpers/wallet/sss.js.map +1 -1
  72. package/dist/cjs/wallets/in-app/native/native-connector.js +32 -0
  73. package/dist/cjs/wallets/in-app/native/native-connector.js.map +1 -1
  74. package/dist/cjs/wallets/in-app/web/in-app.js +13 -1
  75. package/dist/cjs/wallets/in-app/web/in-app.js.map +1 -1
  76. package/dist/cjs/wallets/in-app/web/lib/web-connector.js +8 -0
  77. package/dist/cjs/wallets/in-app/web/lib/web-connector.js.map +1 -1
  78. package/dist/cjs/wallets/manager/index.js +5 -0
  79. package/dist/cjs/wallets/manager/index.js.map +1 -1
  80. package/dist/cjs/wallets/types.js +1 -0
  81. package/dist/cjs/wallets/types.js.map +1 -1
  82. package/dist/cjs/wallets/wallet-connect/receiver/request-handlers/switch-chain.js +2 -4
  83. package/dist/cjs/wallets/wallet-connect/receiver/request-handlers/switch-chain.js.map +1 -1
  84. package/dist/esm/contract/verification/index.js +29 -33
  85. package/dist/esm/contract/verification/index.js.map +1 -1
  86. package/dist/esm/extensions/erc1155/read/getNFTs.js +4 -1
  87. package/dist/esm/extensions/erc1155/read/getNFTs.js.map +1 -1
  88. package/dist/esm/react/core/utils/walletIcon.js +3 -0
  89. package/dist/esm/react/core/utils/walletIcon.js.map +1 -1
  90. package/dist/esm/react/native/ui/components/WalletImage.js +3 -1
  91. package/dist/esm/react/native/ui/components/WalletImage.js.map +1 -1
  92. package/dist/esm/react/native/ui/connect/InAppWalletUI.js +21 -1
  93. package/dist/esm/react/native/ui/connect/InAppWalletUI.js.map +1 -1
  94. package/dist/esm/react/native/ui/connect/TokenListScreen.js +2 -1
  95. package/dist/esm/react/native/ui/connect/TokenListScreen.js.map +1 -1
  96. package/dist/esm/react/native/ui/icons/svgs.js +1 -0
  97. package/dist/esm/react/native/ui/icons/svgs.js.map +1 -1
  98. package/dist/esm/react/web/ui/ConnectWallet/Details.js +15 -2
  99. package/dist/esm/react/web/ui/ConnectWallet/Details.js.map +1 -1
  100. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js +12 -12
  101. package/dist/esm/react/web/ui/ConnectWallet/screens/SignatureScreen.js.map +1 -1
  102. package/dist/esm/react/web/ui/ConnectWallet/screens/TokenSelector.js +6 -6
  103. package/dist/esm/react/web/ui/ConnectWallet/screens/TokenSelector.js.map +1 -1
  104. package/dist/esm/react/web/ui/MediaRenderer/MediaRenderer.js +1 -1
  105. package/dist/esm/react/web/ui/MediaRenderer/MediaRenderer.js.map +1 -1
  106. package/dist/esm/react/web/wallets/ecosystem/EcosystemWalletHeader.js +3 -3
  107. package/dist/esm/react/web/wallets/ecosystem/EcosystemWalletHeader.js.map +1 -1
  108. package/dist/esm/react/web/wallets/in-app/InAppWalletConnectUI.js +4 -0
  109. package/dist/esm/react/web/wallets/in-app/InAppWalletConnectUI.js.map +1 -1
  110. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js +38 -19
  111. package/dist/esm/react/web/wallets/shared/ConnectWalletSocialOptions.js.map +1 -1
  112. package/dist/esm/react/web/wallets/shared/GuestLogin.js +78 -0
  113. package/dist/esm/react/web/wallets/shared/GuestLogin.js.map +1 -0
  114. package/dist/esm/react/web/wallets/shared/OTPLoginUI.js +1 -1
  115. package/dist/esm/react/web/wallets/shared/OTPLoginUI.js.map +1 -1
  116. package/dist/esm/react/web/wallets/shared/SocialLogin.js +1 -1
  117. package/dist/esm/react/web/wallets/shared/SocialLogin.js.map +1 -1
  118. package/dist/esm/react/web/wallets/shared/locale/de.js +2 -1
  119. package/dist/esm/react/web/wallets/shared/locale/de.js.map +1 -1
  120. package/dist/esm/react/web/wallets/shared/locale/en.js +1 -0
  121. package/dist/esm/react/web/wallets/shared/locale/en.js.map +1 -1
  122. package/dist/esm/react/web/wallets/shared/locale/es.js +2 -1
  123. package/dist/esm/react/web/wallets/shared/locale/es.js.map +1 -1
  124. package/dist/esm/react/web/wallets/shared/locale/fr.js +2 -1
  125. package/dist/esm/react/web/wallets/shared/locale/fr.js.map +1 -1
  126. package/dist/esm/react/web/wallets/shared/locale/ja.js +2 -1
  127. package/dist/esm/react/web/wallets/shared/locale/ja.js.map +1 -1
  128. package/dist/esm/react/web/wallets/shared/locale/kr.js +2 -1
  129. package/dist/esm/react/web/wallets/shared/locale/kr.js.map +1 -1
  130. package/dist/esm/react/web/wallets/shared/locale/tl.js +2 -1
  131. package/dist/esm/react/web/wallets/shared/locale/tl.js.map +1 -1
  132. package/dist/esm/react/web/wallets/shared/locale/vi.js +1 -0
  133. package/dist/esm/react/web/wallets/shared/locale/vi.js.map +1 -1
  134. package/dist/esm/react/web/wallets/shared/oauthSignIn.js +1 -0
  135. package/dist/esm/react/web/wallets/shared/oauthSignIn.js.map +1 -1
  136. package/dist/esm/utils/any-evm/deploy-metadata.js +1 -0
  137. package/dist/esm/utils/any-evm/deploy-metadata.js.map +1 -1
  138. package/dist/esm/utils/encoding/hex.js +1 -3
  139. package/dist/esm/utils/encoding/hex.js.map +1 -1
  140. package/dist/esm/utils/fetch.js +1 -7
  141. package/dist/esm/utils/fetch.js.map +1 -1
  142. package/dist/esm/utils/promise/p-limit.js.map +1 -1
  143. package/dist/esm/utils/signatures/sign-message.js +2 -4
  144. package/dist/esm/utils/signatures/sign-message.js.map +1 -1
  145. package/dist/esm/version.js +1 -1
  146. package/dist/esm/wallets/in-app/core/authentication/guest.js +30 -0
  147. package/dist/esm/wallets/in-app/core/authentication/guest.js.map +1 -0
  148. package/dist/esm/wallets/in-app/core/authentication/types.js +1 -0
  149. package/dist/esm/wallets/in-app/core/authentication/types.js.map +1 -1
  150. package/dist/esm/wallets/in-app/native/auth/native-auth.js +24 -0
  151. package/dist/esm/wallets/in-app/native/auth/native-auth.js.map +1 -1
  152. package/dist/esm/wallets/in-app/native/helpers/api/fetchers.js +1 -3
  153. package/dist/esm/wallets/in-app/native/helpers/api/fetchers.js.map +1 -1
  154. package/dist/esm/wallets/in-app/native/helpers/wallet/sss.js.map +1 -1
  155. package/dist/esm/wallets/in-app/native/native-connector.js +33 -1
  156. package/dist/esm/wallets/in-app/native/native-connector.js.map +1 -1
  157. package/dist/esm/wallets/in-app/web/in-app.js +13 -1
  158. package/dist/esm/wallets/in-app/web/in-app.js.map +1 -1
  159. package/dist/esm/wallets/in-app/web/lib/web-connector.js +8 -0
  160. package/dist/esm/wallets/in-app/web/lib/web-connector.js.map +1 -1
  161. package/dist/esm/wallets/manager/index.js +5 -0
  162. package/dist/esm/wallets/manager/index.js.map +1 -1
  163. package/dist/esm/wallets/types.js +1 -0
  164. package/dist/esm/wallets/types.js.map +1 -1
  165. package/dist/esm/wallets/wallet-connect/receiver/request-handlers/switch-chain.js +2 -4
  166. package/dist/esm/wallets/wallet-connect/receiver/request-handlers/switch-chain.js.map +1 -1
  167. package/dist/types/contract/verification/index.d.ts.map +1 -1
  168. package/dist/types/extensions/erc1155/read/getNFTs.d.ts.map +1 -1
  169. package/dist/types/react/core/utils/storage.d.ts +1 -1
  170. package/dist/types/react/core/utils/storage.d.ts.map +1 -1
  171. package/dist/types/react/core/utils/walletIcon.d.ts +2 -1
  172. package/dist/types/react/core/utils/walletIcon.d.ts.map +1 -1
  173. package/dist/types/react/native/ui/components/WalletImage.d.ts.map +1 -1
  174. package/dist/types/react/native/ui/connect/InAppWalletUI.d.ts.map +1 -1
  175. package/dist/types/react/native/ui/connect/TokenListScreen.d.ts.map +1 -1
  176. package/dist/types/react/native/ui/icons/svgs.d.ts +1 -0
  177. package/dist/types/react/native/ui/icons/svgs.d.ts.map +1 -1
  178. package/dist/types/react/web/ui/ConnectWallet/Details.d.ts.map +1 -1
  179. package/dist/types/react/web/ui/ConnectWallet/screens/TokenSelector.d.ts.map +1 -1
  180. package/dist/types/react/web/wallets/ecosystem/EcosystemWalletHeader.d.ts.map +1 -1
  181. package/dist/types/react/web/wallets/in-app/InAppWalletConnectUI.d.ts.map +1 -1
  182. package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts +3 -0
  183. package/dist/types/react/web/wallets/shared/ConnectWalletSocialOptions.d.ts.map +1 -1
  184. package/dist/types/react/web/wallets/shared/GuestLogin.d.ts +19 -0
  185. package/dist/types/react/web/wallets/shared/GuestLogin.d.ts.map +1 -0
  186. package/dist/types/react/web/wallets/shared/OTPLoginUI.d.ts.map +1 -1
  187. package/dist/types/react/web/wallets/shared/locale/de.d.ts +1 -0
  188. package/dist/types/react/web/wallets/shared/locale/de.d.ts.map +1 -1
  189. package/dist/types/react/web/wallets/shared/locale/en.d.ts +1 -0
  190. package/dist/types/react/web/wallets/shared/locale/en.d.ts.map +1 -1
  191. package/dist/types/react/web/wallets/shared/locale/es.d.ts +1 -0
  192. package/dist/types/react/web/wallets/shared/locale/es.d.ts.map +1 -1
  193. package/dist/types/react/web/wallets/shared/locale/fr.d.ts +1 -0
  194. package/dist/types/react/web/wallets/shared/locale/fr.d.ts.map +1 -1
  195. package/dist/types/react/web/wallets/shared/locale/ja.d.ts +1 -0
  196. package/dist/types/react/web/wallets/shared/locale/ja.d.ts.map +1 -1
  197. package/dist/types/react/web/wallets/shared/locale/kr.d.ts +1 -0
  198. package/dist/types/react/web/wallets/shared/locale/kr.d.ts.map +1 -1
  199. package/dist/types/react/web/wallets/shared/locale/tl.d.ts +1 -0
  200. package/dist/types/react/web/wallets/shared/locale/tl.d.ts.map +1 -1
  201. package/dist/types/react/web/wallets/shared/locale/types.d.ts +1 -0
  202. package/dist/types/react/web/wallets/shared/locale/types.d.ts.map +1 -1
  203. package/dist/types/react/web/wallets/shared/locale/vi.d.ts +1 -0
  204. package/dist/types/react/web/wallets/shared/locale/vi.d.ts.map +1 -1
  205. package/dist/types/react/web/wallets/shared/oauthSignIn.d.ts.map +1 -1
  206. package/dist/types/utils/any-evm/deploy-metadata.d.ts.map +1 -1
  207. package/dist/types/utils/encoding/hex.d.ts.map +1 -1
  208. package/dist/types/utils/fetch.d.ts +4 -2
  209. package/dist/types/utils/fetch.d.ts.map +1 -1
  210. package/dist/types/utils/promise/p-limit.d.ts.map +1 -1
  211. package/dist/types/version.d.ts +1 -1
  212. package/dist/types/wallets/in-app/core/authentication/guest.d.ts +12 -0
  213. package/dist/types/wallets/in-app/core/authentication/guest.d.ts.map +1 -0
  214. package/dist/types/wallets/in-app/core/authentication/types.d.ts +8 -4
  215. package/dist/types/wallets/in-app/core/authentication/types.d.ts.map +1 -1
  216. package/dist/types/wallets/in-app/core/wallet/types.d.ts +2 -1
  217. package/dist/types/wallets/in-app/core/wallet/types.d.ts.map +1 -1
  218. package/dist/types/wallets/in-app/native/auth/native-auth.d.ts +4 -3
  219. package/dist/types/wallets/in-app/native/auth/native-auth.d.ts.map +1 -1
  220. package/dist/types/wallets/in-app/native/helpers/api/fetchers.d.ts.map +1 -1
  221. package/dist/types/wallets/in-app/native/helpers/wallet/sss.d.ts.map +1 -1
  222. package/dist/types/wallets/in-app/native/native-connector.d.ts +1 -0
  223. package/dist/types/wallets/in-app/native/native-connector.d.ts.map +1 -1
  224. package/dist/types/wallets/in-app/web/in-app.d.ts +13 -1
  225. package/dist/types/wallets/in-app/web/in-app.d.ts.map +1 -1
  226. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts +3 -3
  227. package/dist/types/wallets/in-app/web/lib/auth/oauth.d.ts.map +1 -1
  228. package/dist/types/wallets/in-app/web/lib/web-connector.d.ts.map +1 -1
  229. package/dist/types/wallets/manager/index.d.ts.map +1 -1
  230. package/dist/types/wallets/types.d.ts +2 -1
  231. package/dist/types/wallets/types.d.ts.map +1 -1
  232. package/dist/types/wallets/wallet-connect/receiver/request-handlers/switch-chain.d.ts.map +1 -1
  233. package/package.json +10 -10
  234. package/src/contract/verification/index.ts +32 -34
  235. package/src/extensions/erc1155/read/getNFTs.ts +4 -1
  236. package/src/react/core/utils/walletIcon.ts +5 -0
  237. package/src/react/native/ui/components/WalletImage.tsx +3 -0
  238. package/src/react/native/ui/connect/InAppWalletUI.tsx +30 -0
  239. package/src/react/native/ui/connect/TokenListScreen.tsx +9 -12
  240. package/src/react/native/ui/icons/svgs.ts +2 -0
  241. package/src/react/web/ui/ConnectWallet/Details.tsx +15 -2
  242. package/src/react/web/ui/ConnectWallet/screens/SignatureScreen.tsx +36 -38
  243. package/src/react/web/ui/ConnectWallet/screens/TokenSelector.tsx +34 -36
  244. package/src/react/web/ui/MediaRenderer/MediaRenderer.tsx +1 -1
  245. package/src/react/web/wallets/ecosystem/EcosystemWalletHeader.tsx +18 -20
  246. package/src/react/web/wallets/in-app/InAppWalletConnectUI.tsx +16 -0
  247. package/src/react/web/wallets/shared/ConnectWalletSocialOptions.tsx +128 -101
  248. package/src/react/web/wallets/shared/GuestLogin.tsx +159 -0
  249. package/src/react/web/wallets/shared/OTPLoginUI.tsx +3 -5
  250. package/src/react/web/wallets/shared/SocialLogin.tsx +1 -1
  251. package/src/react/web/wallets/shared/locale/de.ts +2 -1
  252. package/src/react/web/wallets/shared/locale/en.ts +1 -0
  253. package/src/react/web/wallets/shared/locale/es.ts +2 -1
  254. package/src/react/web/wallets/shared/locale/fr.ts +2 -1
  255. package/src/react/web/wallets/shared/locale/ja.ts +2 -1
  256. package/src/react/web/wallets/shared/locale/kr.ts +2 -1
  257. package/src/react/web/wallets/shared/locale/tl.ts +2 -1
  258. package/src/react/web/wallets/shared/locale/types.ts +1 -0
  259. package/src/react/web/wallets/shared/locale/vi.ts +1 -0
  260. package/src/react/web/wallets/shared/oauthSignIn.ts +6 -2
  261. package/src/utils/any-evm/deploy-metadata.ts +1 -0
  262. package/src/utils/encoding/hex.ts +2 -3
  263. package/src/utils/fetch.test.ts +94 -0
  264. package/src/utils/fetch.ts +1 -12
  265. package/src/utils/promise/p-limit.ts +165 -165
  266. package/src/utils/signatures/sign-message.ts +3 -3
  267. package/src/version.ts +1 -1
  268. package/src/wallets/in-app/core/authentication/guest.ts +37 -0
  269. package/src/wallets/in-app/core/authentication/types.ts +9 -4
  270. package/src/wallets/in-app/core/wallet/types.ts +6 -1
  271. package/src/wallets/in-app/native/auth/native-auth.ts +34 -3
  272. package/src/wallets/in-app/native/helpers/api/fetchers.ts +1 -2
  273. package/src/wallets/in-app/native/helpers/wallet/sss.ts +1 -6
  274. package/src/wallets/in-app/native/native-connector.ts +42 -2
  275. package/src/wallets/in-app/web/in-app.ts +13 -1
  276. package/src/wallets/in-app/web/lib/auth/oauth.ts +3 -3
  277. package/src/wallets/in-app/web/lib/web-connector.ts +8 -0
  278. package/src/wallets/manager/index.ts +5 -0
  279. package/src/wallets/types.ts +2 -0
  280. package/src/wallets/wallet-connect/receiver/request-handlers/switch-chain.ts +2 -3
@@ -124,10 +124,40 @@ export function InAppWalletUI(props: InAppWalletFormUIProps) {
124
124
  }}
125
125
  />
126
126
  ) : null}
127
+ {authOptions.includes("guest") ? <GuestLogin {...props} /> : null}
127
128
  </View>
128
129
  );
129
130
  }
130
131
 
132
+ function GuestLogin(props: InAppWalletFormUIProps) {
133
+ const { theme, wallet, client, connector } = props;
134
+ const connectInAppWallet = useCallback(() => {
135
+ connector({
136
+ wallet,
137
+ connectFn: async () => {
138
+ await wallet.connect({
139
+ client,
140
+ strategy: "guest",
141
+ });
142
+ await setLastAuthProvider("guest", nativeLocalStorage);
143
+ return wallet;
144
+ },
145
+ authMethod: "guest",
146
+ });
147
+ }, [connector, wallet, client]);
148
+
149
+ return (
150
+ <ThemedButtonWithIcon
151
+ theme={theme}
152
+ title="Continue as guest"
153
+ icon={getAuthProviderImage("guest")}
154
+ onPress={() => {
155
+ connectInAppWallet();
156
+ }}
157
+ />
158
+ );
159
+ }
160
+
131
161
  function SocialLogin(
132
162
  props: InAppWalletFormUIProps & { auth: InAppWalletSocialAuth },
133
163
  ) {
@@ -88,18 +88,15 @@ export const TokenRow = (props: {
88
88
  <ThemedText theme={theme} type="defaultSemiBold">
89
89
  {tokenName}
90
90
  </ThemedText>
91
- {address && (
92
- <>
93
- {balanceQuery.data ? (
94
- <ThemedText theme={theme} type="subtext">
95
- {formatBalanceOnButton(Number(balanceQuery.data.displayValue))}{" "}
96
- {balanceQuery.data?.symbol}
97
- </ThemedText>
98
- ) : (
99
- <Skeleton theme={theme} style={{ width: 80, height: 14 }} />
100
- )}
101
- </>
102
- )}
91
+ {address &&
92
+ (balanceQuery.data ? (
93
+ <ThemedText theme={theme} type="subtext">
94
+ {formatBalanceOnButton(Number(balanceQuery.data.displayValue))}{" "}
95
+ {balanceQuery.data?.symbol}
96
+ </ThemedText>
97
+ ) : (
98
+ <Skeleton theme={theme} style={{ width: 80, height: 14 }} />
99
+ ))}
103
100
  </View>
104
101
  {props.onTokenSelected && (
105
102
  <>
@@ -98,6 +98,8 @@ export const X_ICON = `<svg width="320" height="320" viewBox="0 0 320 320" fill=
98
98
  <path d="M177.315 145.335L245.068 67H229.013L170.182 135.017L123.195 67H69L140.055 169.854L69 252H85.0563L147.183 180.172L196.805 252H251L177.311 145.335H177.315ZM155.323 170.76L148.124 160.518L90.8417 79.022H115.503L161.731 144.792L168.93 155.034L229.02 240.525H204.359L155.323 170.764V170.76Z" fill="white"/>
99
99
  </svg>`;
100
100
 
101
+ export const GUEST_ICON = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-user"><path d="M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2"/><circle cx="12" cy="7" r="4"/></svg>`;
102
+
101
103
  export const WALLET_ICON = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
102
104
  <path d="M12.6667 4.66667V2.66667C12.6667 2.48986 12.5964 2.32029 12.4714 2.19526C12.3464 2.07024 12.1768 2 12 2H3.33333C2.97971 2 2.64057 2.14048 2.39052 2.39052C2.14048 2.64057 2 2.97971 2 3.33333C2 3.68696 2.14048 4.02609 2.39052 4.27614C2.64057 4.52619 2.97971 4.66667 3.33333 4.66667H13.3333C13.5101 4.66667 13.6797 4.7369 13.8047 4.86193C13.9298 4.98695 14 5.15652 14 5.33333V8M14 8H12C11.6464 8 11.3072 8.14048 11.0572 8.39052C10.8071 8.64057 10.6667 8.97971 10.6667 9.33333C10.6667 9.68696 10.8071 10.0261 11.0572 10.2761C11.3072 10.5262 11.6464 10.6667 12 10.6667H14C14.1768 10.6667 14.3464 10.5964 14.4714 10.4714C14.5964 10.3464 14.6667 10.1768 14.6667 10V8.66667C14.6667 8.48986 14.5964 8.32029 14.4714 8.19526C14.3464 8.07024 14.1768 8 14 8Z" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
103
105
  <path d="M2 3.3335V12.6668C2 13.0205 2.14048 13.3596 2.39052 13.6096C2.64057 13.8597 2.97971 14.0002 3.33333 14.0002H13.3333C13.5101 14.0002 13.6797 13.9299 13.8047 13.8049C13.9298 13.6799 14 13.5103 14 13.3335V10.6668" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round"/>
@@ -14,8 +14,10 @@ import { trackPayEvent } from "../../../../analytics/track.js";
14
14
  import type { Chain } from "../../../../chains/types.js";
15
15
  import type { ThirdwebClient } from "../../../../client/client.js";
16
16
  import { getContract } from "../../../../contract/contract.js";
17
+ import { getLastAuthProvider } from "../../../../react/core/utils/storage.js";
17
18
  import { isContractDeployed } from "../../../../utils/bytecode/is-contract-deployed.js";
18
19
  import { formatNumber } from "../../../../utils/formatNumber.js";
20
+ import { webLocalStorage } from "../../../../utils/storage/webStorage.js";
19
21
  import type { Account, Wallet } from "../../../../wallets/interfaces/wallet.js";
20
22
  import type { SmartWalletOptions } from "../../../../wallets/smart/types.js";
21
23
  import type { AppMetadata } from "../../../../wallets/types.js";
@@ -1062,6 +1064,17 @@ function InAppWalletUserInfo(props: {
1062
1064
  const activeWallet = useActiveWallet();
1063
1065
  const { data: walletInfo } = useWalletInfo(activeWallet?.id);
1064
1066
  const isSmartWallet = hasSmartAccount(activeWallet);
1067
+ const { data: walletName } = useQuery({
1068
+ queryKey: [activeWallet?.id, "wallet-name"],
1069
+ queryFn: async () => {
1070
+ const lastAuthProvider = await getLastAuthProvider(webLocalStorage);
1071
+ if (lastAuthProvider === "guest") {
1072
+ return "Guest";
1073
+ }
1074
+ return walletInfo?.name;
1075
+ },
1076
+ enabled: !!activeWallet?.id,
1077
+ });
1065
1078
 
1066
1079
  const userInfoQuery = useQuery({
1067
1080
  queryKey: ["in-app-wallet-user", client, account?.address],
@@ -1088,10 +1101,10 @@ function InAppWalletUserInfo(props: {
1088
1101
  return <ConnectedToSmartWallet client={client} connectLocale={locale} />;
1089
1102
  }
1090
1103
 
1091
- if (userInfoQuery.data || walletInfo) {
1104
+ if (userInfoQuery.data || walletName) {
1092
1105
  return (
1093
1106
  <Text size="xs" weight={400}>
1094
- {userInfoQuery.data || walletInfo?.name}
1107
+ {userInfoQuery.data || walletName}
1095
1108
  </Text>
1096
1109
  );
1097
1110
  }
@@ -259,45 +259,43 @@ function HeadlessSignIn({
259
259
  {status === "signing" && <Spinner size="xl" color="accentText" />}
260
260
 
261
261
  {status === "failed" && (
262
- <>
263
- <Container>
264
- <Spacer y="lg" />
265
- <Text size="lg" center color="danger">
266
- {locale.signingScreen.failedToSignIn}
267
- </Text>
262
+ <Container>
263
+ <Spacer y="lg" />
264
+ <Text size="lg" center color="danger">
265
+ {locale.signingScreen.failedToSignIn}
266
+ </Text>
268
267
 
269
- <Spacer y="lg" />
270
- <Button
271
- fullWidth
272
- variant="accent"
273
- onClick={() => {
274
- signIn();
275
- }}
276
- style={{
277
- gap: spacing.xs,
278
- alignItems: "center",
279
- padding: spacing.md,
280
- }}
281
- >
282
- <ReloadIcon width={iconSize.sm} height={iconSize.sm} />
283
- {locale.signingScreen.tryAgain}
284
- </Button>
285
- <Spacer y="sm" />
286
- <Button
287
- fullWidth
288
- variant="secondary"
289
- onClick={() => {
290
- disconnect(wallet);
291
- }}
292
- style={{
293
- alignItems: "center",
294
- padding: spacing.md,
295
- }}
296
- >
297
- {locale.instructionScreen.disconnectWallet}
298
- </Button>
299
- </Container>
300
- </>
268
+ <Spacer y="lg" />
269
+ <Button
270
+ fullWidth
271
+ variant="accent"
272
+ onClick={() => {
273
+ signIn();
274
+ }}
275
+ style={{
276
+ gap: spacing.xs,
277
+ alignItems: "center",
278
+ padding: spacing.md,
279
+ }}
280
+ >
281
+ <ReloadIcon width={iconSize.sm} height={iconSize.sm} />
282
+ {locale.signingScreen.tryAgain}
283
+ </Button>
284
+ <Spacer y="sm" />
285
+ <Button
286
+ fullWidth
287
+ variant="secondary"
288
+ onClick={() => {
289
+ disconnect(wallet);
290
+ }}
291
+ style={{
292
+ alignItems: "center",
293
+ padding: spacing.md,
294
+ }}
295
+ >
296
+ {locale.instructionScreen.disconnectWallet}
297
+ </Button>
298
+ </Container>
301
299
  )}
302
300
  </Container>
303
301
  </Container>
@@ -154,43 +154,41 @@ export function TokenSelector(props: {
154
154
  <Spacer y="md" />
155
155
 
156
156
  {props.chainSelection && (
157
- <>
158
- <Container px="lg">
159
- <Text size="sm">Select Network</Text>
160
- <Spacer y="xxs" />
161
- <SelectTokenBtn
162
- fullWidth
163
- variant="secondary"
164
- onClick={() => {
165
- setScreen("select-chain");
166
- }}
167
- >
168
- <ChainIcon
169
- chainIconUrl={chainIconQuery.url}
170
- size={iconSize.lg}
171
- client={props.client}
172
- />
157
+ <Container px="lg">
158
+ <Text size="sm">Select Network</Text>
159
+ <Spacer y="xxs" />
160
+ <SelectTokenBtn
161
+ fullWidth
162
+ variant="secondary"
163
+ onClick={() => {
164
+ setScreen("select-chain");
165
+ }}
166
+ >
167
+ <ChainIcon
168
+ chainIconUrl={chainIconQuery.url}
169
+ size={iconSize.lg}
170
+ client={props.client}
171
+ />
173
172
 
174
- {chainNameQuery.name ? (
175
- <Text color="primaryText" size="sm">
176
- {chainNameQuery.name}
177
- </Text>
178
- ) : (
179
- <Skeleton height={fontSize.md} />
180
- )}
181
-
182
- <ChevronDownIcon
183
- width={iconSize.sm}
184
- height={iconSize.sm}
185
- style={{
186
- marginLeft: "auto",
187
- }}
188
- />
189
- </SelectTokenBtn>
190
- <Spacer y="xl" />
191
- <Text size="sm">Select Token</Text>
192
- </Container>
193
- </>
173
+ {chainNameQuery.name ? (
174
+ <Text color="primaryText" size="sm">
175
+ {chainNameQuery.name}
176
+ </Text>
177
+ ) : (
178
+ <Skeleton height={fontSize.md} />
179
+ )}
180
+
181
+ <ChevronDownIcon
182
+ width={iconSize.sm}
183
+ height={iconSize.sm}
184
+ style={{
185
+ marginLeft: "auto",
186
+ }}
187
+ />
188
+ </SelectTokenBtn>
189
+ <Spacer y="xl" />
190
+ <Text size="sm">Select Token</Text>
191
+ </Container>
194
192
  )}
195
193
 
196
194
  <Container px="lg">
@@ -549,7 +549,7 @@ const IframePlayer = /* @__PURE__ */ (() =>
549
549
  <div style={{ position: "relative", ...style }} {...restProps}>
550
550
  <iframe
551
551
  title={alt || "thirdweb iframe player"}
552
- src={playing ? src ?? undefined : undefined}
552
+ src={playing ? (src ?? undefined) : undefined}
553
553
  ref={ref}
554
554
  style={{
555
555
  objectFit: "contain",
@@ -23,26 +23,24 @@ export function EcosystemWalletHeader(props: {
23
23
  <ModalHeader
24
24
  onBack={props.onBack}
25
25
  title={
26
- <>
27
- {walletInfo.isLoading ? (
28
- <Skeleton height="24px" width="200px" />
29
- ) : (
30
- <>
31
- {!walletInfo.data?.image_id ? null : (
32
- <Img
33
- src={walletInfo.data?.image_id}
34
- style={{
35
- borderRadius: radius.sm,
36
- }}
37
- width={iconSize.md}
38
- height={iconSize.md}
39
- client={props.client}
40
- />
41
- )}
42
- <ModalTitle>{walletInfo.data?.name}</ModalTitle>
43
- </>
44
- )}
45
- </>
26
+ walletInfo.isLoading ? (
27
+ <Skeleton height="24px" width="200px" />
28
+ ) : (
29
+ <>
30
+ {!walletInfo.data?.image_id ? null : (
31
+ <Img
32
+ src={walletInfo.data?.image_id}
33
+ style={{
34
+ borderRadius: radius.sm,
35
+ }}
36
+ width={iconSize.md}
37
+ height={iconSize.md}
38
+ client={props.client}
39
+ />
40
+ )}
41
+ <ModalTitle>{walletInfo.data?.name}</ModalTitle>
42
+ </>
43
+ )
46
44
  }
47
45
  leftAligned
48
46
  />
@@ -9,6 +9,7 @@ import {
9
9
  import { useScreenContext } from "../../ui/ConnectWallet/Modal/screen.js";
10
10
  import type { ConnectLocale } from "../../ui/ConnectWallet/locale/types.js";
11
11
  import type { ConnectWalletSelectUIState } from "../shared/ConnectWalletSocialOptions.js";
12
+ import { GuestLogin } from "../shared/GuestLogin.js";
12
13
  import { LoadingScreen } from "../shared/LoadingScreen.js";
13
14
  import { OTPLoginUI } from "../shared/OTPLoginUI.js";
14
15
  import { PassKeyLogin } from "../shared/PassKeyLogin.js";
@@ -135,6 +136,21 @@ function InAppWalletConnectUI(props: {
135
136
  );
136
137
  }
137
138
 
139
+ if (state?.guestLogin) {
140
+ return (
141
+ <GuestLogin
142
+ locale={locale}
143
+ done={done}
144
+ goBack={goBackToMain}
145
+ wallet={props.wallet}
146
+ state={state}
147
+ client={props.client}
148
+ size={props.size}
149
+ connectLocale={props.connectLocale}
150
+ />
151
+ );
152
+ }
153
+
138
154
  return (
139
155
  <InAppWalletFormUIScreen
140
156
  select={() => {}}
@@ -53,6 +53,9 @@ export type ConnectWalletSelectUIState =
53
53
  type: SocialAuthOption;
54
54
  connectionPromise: Promise<Account | Profile[]>;
55
55
  };
56
+ guestLogin?: {
57
+ connectionPromise: Promise<Account | Profile[]>;
58
+ };
56
59
  passkeyLogin?: boolean;
57
60
  walletLogin?: boolean;
58
61
  };
@@ -124,8 +127,8 @@ export const ConnectWalletSocialOptions = (
124
127
  retry: false,
125
128
  });
126
129
  const authOptions = isEcosystemWallet(wallet)
127
- ? ecosystemAuthOptions ?? defaultAuthOptions
128
- : wallet.getConfig()?.auth?.options ?? defaultAuthOptions;
130
+ ? (ecosystemAuthOptions ?? defaultAuthOptions)
131
+ : (wallet.getConfig()?.auth?.options ?? defaultAuthOptions);
129
132
 
130
133
  const emailIndex = authOptions.indexOf("email");
131
134
  const isEmailEnabled = emailIndex !== -1;
@@ -157,6 +160,7 @@ export const ConnectWalletSocialOptions = (
157
160
  }
158
161
 
159
162
  const passKeyEnabled = authOptions.includes("passkey");
163
+ const guestEnabled = authOptions.includes("guest");
160
164
 
161
165
  const placeholder =
162
166
  inputMode === "email" ? locale.emailPlaceholder : locale.phonePlaceholder;
@@ -182,6 +186,27 @@ export const ConnectWalletSocialOptions = (
182
186
  }
183
187
  : undefined;
184
188
 
189
+ const handleGuestLogin = async () => {
190
+ const connectOptions = {
191
+ client: props.client,
192
+ ecosystem: ecosystemInfo,
193
+ strategy: "guest" as const,
194
+ };
195
+ const connectPromise = (async () => {
196
+ const result = await wallet.connect(connectOptions);
197
+ setLastAuthProvider("guest", webLocalStorage);
198
+ return result;
199
+ })();
200
+
201
+ setData({
202
+ guestLogin: {
203
+ connectionPromise: connectPromise,
204
+ },
205
+ });
206
+
207
+ props.select(); // show Connect UI
208
+ };
209
+
185
210
  // Need to trigger login on button click to avoid popup from being blocked
186
211
  const handleSocialLogin = async (strategy: SocialAuthOption) => {
187
212
  const walletConfig = wallet.getConfig();
@@ -227,11 +252,11 @@ export const ConnectWalletSocialOptions = (
227
252
  throw new Error("Only in-app wallets support multi-auth");
228
253
  }
229
254
  return linkProfile(wallet, connectOptions);
230
- } else {
231
- const connectPromise = wallet.connect(connectOptions);
232
- setLastAuthProvider(strategy, webLocalStorage);
233
- return connectPromise;
234
255
  }
256
+
257
+ const connectPromise = wallet.connect(connectOptions);
258
+ setLastAuthProvider(strategy, webLocalStorage);
259
+ return connectPromise;
235
260
  })();
236
261
 
237
262
  setData({
@@ -303,12 +328,11 @@ export const ConnectWalletSocialOptions = (
303
328
  const imgIconSize = (() => {
304
329
  if (!showOnlyIcons) {
305
330
  return iconSize.md;
306
- } else {
307
- if (socialLogins.length > 4) {
308
- return iconSize.md;
309
- }
310
- return iconSize.lg;
311
331
  }
332
+ if (socialLogins.length > 4) {
333
+ return iconSize.md;
334
+ }
335
+ return iconSize.lg;
312
336
  })();
313
337
 
314
338
  return (
@@ -341,108 +365,111 @@ export const ConnectWalletSocialOptions = (
341
365
  (isEmailEnabled || isPhoneEnabled) && <TextDivider text={locale.or} />}
342
366
 
343
367
  {/* Email/Phone Login */}
344
- {isEmailEnabled && (
345
- <>
346
- {inputMode === "email" ? (
347
- <InputSelectionUI
348
- type={type}
349
- onSelect={(value) => {
350
- setData({ emailLogin: value });
351
- props.select();
352
- }}
353
- placeholder={placeholder}
354
- name="email"
355
- errorMessage={(input) => {
356
- const isValidEmail = validateEmail(input.toLowerCase());
357
- if (!isValidEmail) {
358
- return locale.invalidEmail;
359
- }
360
- return undefined;
361
- }}
362
- disabled={props.disabled}
363
- emptyErrorMessage={emptyErrorMessage}
364
- submitButtonText={locale.submitEmail}
365
- />
366
- ) : (
367
- <WalletTypeRowButton
368
- client={props.client}
369
- icon={emailIcon}
370
- onClick={() => {
371
- setManualInputMode("email");
372
- }}
373
- title={locale.emailPlaceholder}
374
- disabled={props.disabled}
375
- />
376
- )}
377
- </>
378
- )}
379
- {isPhoneEnabled && (
380
- <>
381
- {inputMode === "phone" ? (
382
- <InputSelectionUI
383
- format="phone"
384
- type={type}
385
- onSelect={(value) => {
386
- // removes white spaces and special characters
387
- setData({ phoneLogin: value.replace(/[-\(\) ]/g, "") });
388
- props.select();
389
- }}
390
- placeholder={placeholder}
391
- name="phone"
392
- errorMessage={(_input) => {
393
- // removes white spaces and special characters
394
- const input = _input.replace(/[-\(\) ]/g, "");
395
- const isPhone = /^[0-9]+$/.test(input);
396
-
397
- if (!isPhone && isPhoneEnabled) {
398
- return locale.invalidPhone;
399
- }
400
-
401
- return undefined;
402
- }}
403
- disabled={props.disabled}
404
- emptyErrorMessage={emptyErrorMessage}
405
- submitButtonText={locale.submitEmail}
406
- />
407
- ) : (
408
- <WalletTypeRowButton
409
- client={props.client}
410
- icon={phoneIcon}
411
- onClick={() => {
412
- setManualInputMode("phone");
413
- }}
414
- title={locale.phonePlaceholder}
415
- disabled={props.disabled}
416
- />
417
- )}
418
- </>
419
- )}
420
-
421
- {passKeyEnabled && (
422
- <>
368
+ {isEmailEnabled &&
369
+ (inputMode === "email" ? (
370
+ <InputSelectionUI
371
+ type={type}
372
+ onSelect={(value) => {
373
+ setData({ emailLogin: value });
374
+ props.select();
375
+ }}
376
+ placeholder={placeholder}
377
+ name="email"
378
+ errorMessage={(input) => {
379
+ const isValidEmail = validateEmail(input.toLowerCase());
380
+ if (!isValidEmail) {
381
+ return locale.invalidEmail;
382
+ }
383
+ return undefined;
384
+ }}
385
+ disabled={props.disabled}
386
+ emptyErrorMessage={emptyErrorMessage}
387
+ submitButtonText={locale.submitEmail}
388
+ />
389
+ ) : (
423
390
  <WalletTypeRowButton
424
391
  client={props.client}
425
- icon={passkeyIcon}
392
+ icon={emailIcon}
426
393
  onClick={() => {
427
- handlePassKeyLogin();
394
+ setManualInputMode("email");
428
395
  }}
429
- title={locale.passkey}
396
+ title={locale.emailPlaceholder}
430
397
  disabled={props.disabled}
431
398
  />
432
- </>
433
- )}
399
+ ))}
400
+ {isPhoneEnabled &&
401
+ (inputMode === "phone" ? (
402
+ <InputSelectionUI
403
+ format="phone"
404
+ type={type}
405
+ onSelect={(value) => {
406
+ // removes white spaces and special characters
407
+ setData({ phoneLogin: value.replace(/[-\(\) ]/g, "") });
408
+ props.select();
409
+ }}
410
+ placeholder={placeholder}
411
+ name="phone"
412
+ errorMessage={(_input) => {
413
+ // removes white spaces and special characters
414
+ const input = _input.replace(/[-\(\) ]/g, "");
415
+ const isPhone = /^[0-9]+$/.test(input);
416
+
417
+ if (!isPhone && isPhoneEnabled) {
418
+ return locale.invalidPhone;
419
+ }
434
420
 
435
- {props.isLinking && (
436
- <>
421
+ return undefined;
422
+ }}
423
+ disabled={props.disabled}
424
+ emptyErrorMessage={emptyErrorMessage}
425
+ submitButtonText={locale.submitEmail}
426
+ />
427
+ ) : (
437
428
  <WalletTypeRowButton
438
429
  client={props.client}
439
- icon={getWalletIcon("")}
430
+ icon={phoneIcon}
440
431
  onClick={() => {
441
- handleWalletLogin();
432
+ setManualInputMode("phone");
442
433
  }}
443
- title={locale.linkWallet}
434
+ title={locale.phonePlaceholder}
435
+ disabled={props.disabled}
444
436
  />
445
- </>
437
+ ))}
438
+
439
+ {passKeyEnabled && (
440
+ <WalletTypeRowButton
441
+ client={props.client}
442
+ icon={passkeyIcon}
443
+ onClick={() => {
444
+ handlePassKeyLogin();
445
+ }}
446
+ title={locale.passkey}
447
+ disabled={props.disabled}
448
+ />
449
+ )}
450
+
451
+ {/* Guest login */}
452
+ {guestEnabled && (
453
+ <WalletTypeRowButton
454
+ client={props.client}
455
+ icon={getWalletIcon("guest")}
456
+ onClick={() => {
457
+ handleGuestLogin();
458
+ }}
459
+ title={locale.loginAsGuest}
460
+ disabled={props.disabled}
461
+ />
462
+ )}
463
+
464
+ {props.isLinking && (
465
+ <WalletTypeRowButton
466
+ client={props.client}
467
+ icon={getWalletIcon("")}
468
+ onClick={() => {
469
+ handleWalletLogin();
470
+ }}
471
+ title={locale.linkWallet}
472
+ />
446
473
  )}
447
474
  </Container>
448
475
  );