@web3auth/modal 10.0.0-beta.1 → 10.0.0-beta.12

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 (271) hide show
  1. package/README.md +2 -2
  2. package/dist/lib.cjs/packages/modal/src/config.js +3 -3
  3. package/dist/lib.cjs/packages/modal/src/connectors/coinbase-connector/index.js +12 -0
  4. package/dist/lib.cjs/packages/modal/src/index.js +1 -0
  5. package/dist/lib.cjs/packages/modal/src/modalManager.js +125 -75
  6. package/dist/lib.cjs/packages/modal/src/providers/ethereum-mpc-provider/index.js +12 -0
  7. package/dist/lib.cjs/packages/modal/src/providers/xrpl-provider/index.js +12 -0
  8. package/dist/lib.cjs/packages/modal/src/react/Web3AuthProvider.js +8 -2
  9. package/dist/lib.cjs/packages/modal/src/react/context/WalletServicesInnerContext.js +72 -0
  10. package/dist/lib.cjs/packages/modal/src/react/context/Web3AuthInnerContext.js +40 -96
  11. package/dist/lib.cjs/packages/modal/src/react/hooks/useCheckout.js +34 -0
  12. package/dist/lib.cjs/packages/modal/src/react/hooks/useEnableMFA.js +30 -0
  13. package/dist/lib.cjs/packages/modal/src/react/hooks/useIdentityToken.js +42 -0
  14. package/dist/lib.cjs/packages/modal/src/react/hooks/useManageMFA.js +30 -0
  15. package/dist/lib.cjs/packages/modal/src/react/hooks/useSwap.js +34 -0
  16. package/dist/lib.cjs/packages/modal/src/react/hooks/useSwitchChain.js +32 -0
  17. package/dist/lib.cjs/packages/modal/src/react/hooks/useWalletConnectScanner.js +34 -0
  18. package/dist/lib.cjs/packages/modal/src/react/hooks/useWalletServicesPlugin.js +13 -0
  19. package/dist/lib.cjs/packages/modal/src/react/hooks/useWalletUI.js +34 -0
  20. package/dist/lib.cjs/packages/modal/src/react/hooks/useWeb3Auth.js +21 -8
  21. package/dist/lib.cjs/packages/modal/src/react/hooks/useWeb3AuthConnect.js +63 -0
  22. package/dist/lib.cjs/packages/modal/src/react/hooks/useWeb3AuthDisconnect.js +30 -0
  23. package/dist/lib.cjs/packages/modal/src/react/hooks/useWeb3AuthInner.js +15 -0
  24. package/dist/lib.cjs/packages/modal/src/react/hooks/useWeb3AuthUser.js +50 -0
  25. package/dist/lib.cjs/packages/modal/src/react/index.js +24 -3
  26. package/dist/lib.cjs/packages/modal/src/react/solana/hooks/useSignAndSendTransaction.js +36 -0
  27. package/dist/lib.cjs/packages/modal/src/react/solana/hooks/useSignMessage.js +37 -0
  28. package/dist/lib.cjs/packages/modal/src/react/solana/hooks/useSignTransaction.js +36 -0
  29. package/dist/lib.cjs/packages/modal/src/react/solana/hooks/useSolanaWallet.js +43 -0
  30. package/dist/lib.cjs/packages/modal/src/react/solana/index.js +13 -0
  31. package/dist/lib.cjs/packages/modal/src/react/wagmi/constants.js +16 -0
  32. package/dist/lib.cjs/packages/modal/src/react/wagmi/index.js +7 -0
  33. package/dist/lib.cjs/packages/modal/src/react/wagmi/provider.js +195 -0
  34. package/dist/lib.cjs/packages/modal/src/ui/components/BottomSheet/BottomSheet.js +3 -3
  35. package/dist/lib.cjs/packages/modal/src/ui/components/Button/ButtonSocial/ButtonSocial.js +1 -1
  36. package/dist/lib.cjs/packages/modal/src/ui/components/Button/ButtonWallet/ButtonWallet.js +12 -4
  37. package/dist/lib.cjs/packages/modal/src/ui/components/ConnectWallet/ConnectWallet.js +27 -21
  38. package/dist/lib.cjs/packages/modal/src/ui/components/ConnectWallet/ConnectWalletChainFilter/ConnectWalletChainFilter.js +7 -4
  39. package/dist/lib.cjs/packages/modal/src/ui/components/ConnectWallet/ConnectWalletChainNamespaceSelect/ConnectWalletChainNamespaceSelect.js +3 -2
  40. package/dist/lib.cjs/packages/modal/src/ui/components/ConnectWallet/ConnectWalletHeader/ConnectWalletHeader.js +1 -1
  41. package/dist/lib.cjs/packages/modal/src/ui/components/ConnectWallet/ConnectWalletList/ConnectWalletList.js +13 -5
  42. package/dist/lib.cjs/packages/modal/src/ui/components/ConnectWallet/ConnectWalletQrCode/ConnectWalletQrCode.js +14 -8
  43. package/dist/lib.cjs/packages/modal/src/ui/components/Footer/Footer.js +6 -9
  44. package/dist/lib.cjs/packages/modal/src/ui/components/Image/Image.js +5 -4
  45. package/dist/lib.cjs/packages/modal/src/ui/components/Loader/Loader.js +1 -1
  46. package/dist/lib.cjs/packages/modal/src/ui/components/Login/Login.js +80 -42
  47. package/dist/lib.cjs/packages/modal/src/ui/components/Login/LoginOtp/LoginOtp.js +12 -9
  48. package/dist/lib.cjs/packages/modal/src/ui/components/Login/LoginPasswordLess/LoginPasswordLess.js +10 -5
  49. package/dist/lib.cjs/packages/modal/src/ui/components/Modal/Modal.js +1 -1
  50. package/dist/lib.cjs/packages/modal/src/ui/components/PulseLoader/PulseLoader.js +3 -3
  51. package/dist/lib.cjs/packages/modal/src/ui/components/Root/Root.js +185 -128
  52. package/dist/lib.cjs/packages/modal/src/ui/components/SocialLoginList/SocialLoginList.js +15 -34
  53. package/dist/lib.cjs/packages/modal/src/ui/components/Widget/Widget.js +16 -3
  54. package/dist/lib.cjs/packages/modal/src/ui/config.js +2 -1
  55. package/dist/lib.cjs/packages/modal/src/ui/constants.js +30 -0
  56. package/dist/lib.cjs/packages/modal/src/ui/context/RootContext.js +12 -3
  57. package/dist/lib.cjs/packages/modal/src/ui/css/index.css.js +1 -1
  58. package/dist/lib.cjs/packages/modal/src/ui/handlers/AbstractHandler.js +6 -2
  59. package/dist/lib.cjs/packages/modal/src/ui/handlers/EmailPasswordlessHandler.js +7 -4
  60. package/dist/lib.cjs/packages/modal/src/ui/handlers/SmsPasswordlessHandler.js +2 -2
  61. package/dist/lib.cjs/packages/modal/src/ui/i18n/dutch.json.js +32 -31
  62. package/dist/lib.cjs/packages/modal/src/ui/i18n/english.json.js +32 -31
  63. package/dist/lib.cjs/packages/modal/src/ui/i18n/french.json.js +32 -31
  64. package/dist/lib.cjs/packages/modal/src/ui/i18n/german.json.js +32 -31
  65. package/dist/lib.cjs/packages/modal/src/ui/i18n/japanese.json.js +32 -31
  66. package/dist/lib.cjs/packages/modal/src/ui/i18n/korean.json.js +32 -31
  67. package/dist/lib.cjs/packages/modal/src/ui/i18n/mandarin.json.js +32 -31
  68. package/dist/lib.cjs/packages/modal/src/ui/i18n/portuguese.json.js +32 -31
  69. package/dist/lib.cjs/packages/modal/src/ui/i18n/spanish.json.js +32 -31
  70. package/dist/lib.cjs/packages/modal/src/ui/i18n/turkish.json.js +32 -31
  71. package/dist/lib.cjs/packages/modal/src/ui/loginModal.js +33 -20
  72. package/dist/lib.cjs/packages/modal/src/ui/utils.js +16 -4
  73. package/dist/lib.cjs/packages/modal/src/vue/WalletServicesInnerProvider.js +70 -0
  74. package/dist/lib.cjs/packages/modal/src/vue/Web3AuthProvider.js +38 -78
  75. package/dist/lib.cjs/packages/modal/src/vue/composables/useCheckout.js +34 -0
  76. package/dist/lib.cjs/packages/modal/src/vue/composables/useEnableMFA.js +32 -0
  77. package/dist/lib.cjs/packages/modal/src/vue/composables/useIdentityToken.js +44 -0
  78. package/dist/lib.cjs/packages/modal/src/vue/composables/useManageMFA.js +32 -0
  79. package/dist/lib.cjs/packages/modal/src/vue/composables/useSwap.js +34 -0
  80. package/dist/lib.cjs/packages/modal/src/vue/composables/useSwitchChain.js +32 -0
  81. package/dist/lib.cjs/packages/modal/src/vue/composables/useWalletConnectScanner.js +34 -0
  82. package/dist/lib.cjs/packages/modal/src/vue/composables/useWalletServicesPlugin.js +13 -0
  83. package/dist/lib.cjs/packages/modal/src/vue/composables/useWalletUI.js +34 -0
  84. package/dist/lib.cjs/packages/modal/src/vue/composables/useWeb3Auth.js +2 -4
  85. package/dist/lib.cjs/packages/modal/src/vue/composables/useWeb3AuthConnect.js +66 -0
  86. package/dist/lib.cjs/packages/modal/src/vue/composables/useWeb3AuthDisconnect.js +32 -0
  87. package/dist/lib.cjs/packages/modal/src/vue/composables/useWeb3AuthInner.js +12 -0
  88. package/dist/lib.cjs/packages/modal/src/vue/composables/useWeb3AuthUser.js +53 -0
  89. package/dist/lib.cjs/packages/modal/src/vue/index.js +24 -0
  90. package/dist/lib.cjs/packages/modal/src/vue/solana/composables/useSignAndSendTransaction.js +36 -0
  91. package/dist/lib.cjs/packages/modal/src/vue/solana/composables/useSignMessage.js +38 -0
  92. package/dist/lib.cjs/packages/modal/src/vue/solana/composables/useSignTransaction.js +36 -0
  93. package/dist/lib.cjs/packages/modal/src/vue/solana/composables/useSolanaWallet.js +53 -0
  94. package/dist/lib.cjs/packages/modal/src/vue/solana/index.js +13 -0
  95. package/dist/lib.cjs/packages/modal/src/vue/wagmi/constants.js +16 -0
  96. package/dist/lib.cjs/packages/modal/src/vue/wagmi/index.js +7 -0
  97. package/dist/lib.cjs/packages/modal/src/vue/wagmi/provider.js +233 -0
  98. package/dist/lib.cjs/types/config.d.ts +1 -0
  99. package/dist/lib.cjs/types/connectors/coinbase-connector/index.d.ts +1 -0
  100. package/dist/lib.cjs/types/interface.d.ts +2 -3
  101. package/dist/lib.cjs/types/modalManager.d.ts +7 -3
  102. package/dist/lib.cjs/types/providers/ethereum-mpc-provider/index.d.ts +1 -0
  103. package/dist/lib.cjs/types/providers/xrpl-provider/index.d.ts +1 -0
  104. package/dist/lib.cjs/types/react/Web3AuthProvider.d.ts +1 -1
  105. package/dist/lib.cjs/types/react/context/WalletServicesInnerContext.d.ts +6 -0
  106. package/dist/lib.cjs/types/react/hooks/index.d.ts +13 -1
  107. package/dist/lib.cjs/types/react/hooks/useCheckout.d.ts +8 -0
  108. package/dist/lib.cjs/types/react/hooks/useEnableMFA.d.ts +7 -0
  109. package/dist/lib.cjs/types/react/hooks/useIdentityToken.d.ts +13 -0
  110. package/dist/lib.cjs/types/react/hooks/useManageMFA.d.ts +7 -0
  111. package/dist/lib.cjs/types/react/hooks/useSwap.d.ts +8 -0
  112. package/dist/lib.cjs/types/react/hooks/useSwitchChain.d.ts +7 -0
  113. package/dist/lib.cjs/types/react/hooks/useWalletConnectScanner.d.ts +8 -0
  114. package/dist/lib.cjs/types/react/hooks/useWalletServicesPlugin.d.ts +2 -0
  115. package/dist/lib.cjs/types/react/hooks/useWalletUI.d.ts +8 -0
  116. package/dist/lib.cjs/types/react/hooks/useWeb3Auth.d.ts +2 -1
  117. package/dist/lib.cjs/types/react/hooks/useWeb3AuthConnect.d.ts +10 -0
  118. package/dist/lib.cjs/types/react/hooks/useWeb3AuthDisconnect.d.ts +9 -0
  119. package/dist/lib.cjs/types/react/hooks/useWeb3AuthInner.d.ts +2 -0
  120. package/dist/lib.cjs/types/react/hooks/useWeb3AuthUser.d.ts +9 -0
  121. package/dist/lib.cjs/types/react/index.d.ts +0 -1
  122. package/dist/lib.cjs/types/react/interfaces.d.ts +7 -2
  123. package/dist/lib.cjs/types/react/solana/hooks/index.d.ts +4 -0
  124. package/dist/lib.cjs/types/react/solana/hooks/useSignAndSendTransaction.d.ts +8 -0
  125. package/dist/lib.cjs/types/react/solana/hooks/useSignMessage.d.ts +8 -0
  126. package/dist/lib.cjs/types/react/solana/hooks/useSignTransaction.d.ts +13 -0
  127. package/dist/lib.cjs/types/react/solana/hooks/useSolanaWallet.d.ts +8 -0
  128. package/dist/lib.cjs/types/react/solana/index.d.ts +1 -0
  129. package/dist/lib.cjs/types/react/wagmi/constants.d.ts +43 -0
  130. package/dist/lib.cjs/types/react/wagmi/index.d.ts +2 -0
  131. package/dist/lib.cjs/types/react/wagmi/interface.d.ts +4 -0
  132. package/dist/lib.cjs/types/react/wagmi/provider.d.ts +3 -0
  133. package/dist/lib.cjs/types/ui/components/ConnectWallet/ConnectWallet.type.d.ts +1 -0
  134. package/dist/lib.cjs/types/ui/components/ConnectWallet/ConnectWalletQrCode/ConnectWalletQrCode.type.d.ts +3 -4
  135. package/dist/lib.cjs/types/ui/components/Login/Login.type.d.ts +2 -2
  136. package/dist/lib.cjs/types/ui/components/Login/LoginOtp/LoginOtp.type.d.ts +3 -2
  137. package/dist/lib.cjs/types/ui/config.d.ts +1 -1
  138. package/dist/lib.cjs/types/ui/constants.d.ts +4 -0
  139. package/dist/lib.cjs/types/ui/context/RootContext.d.ts +12 -3
  140. package/dist/lib.cjs/types/ui/handlers/AbstractHandler.d.ts +3 -2
  141. package/dist/lib.cjs/types/ui/handlers/EmailPasswordlessHandler.d.ts +3 -1
  142. package/dist/lib.cjs/types/ui/interfaces.d.ts +15 -7
  143. package/dist/lib.cjs/types/ui/loginModal.d.ts +1 -1
  144. package/dist/lib.cjs/types/ui/utils.d.ts +2 -2
  145. package/dist/lib.cjs/types/vue/WalletServicesInnerProvider.d.ts +1 -0
  146. package/dist/lib.cjs/types/vue/composables/index.d.ts +12 -0
  147. package/dist/lib.cjs/types/vue/composables/useCheckout.d.ts +9 -0
  148. package/dist/lib.cjs/types/vue/composables/useEnableMFA.d.ts +8 -0
  149. package/dist/lib.cjs/types/vue/composables/useIdentityToken.d.ts +9 -0
  150. package/dist/lib.cjs/types/vue/composables/useManageMFA.d.ts +8 -0
  151. package/dist/lib.cjs/types/vue/composables/useSwap.d.ts +9 -0
  152. package/dist/lib.cjs/types/vue/composables/useSwitchChain.d.ts +10 -0
  153. package/dist/lib.cjs/types/vue/composables/useWalletConnectScanner.d.ts +9 -0
  154. package/dist/lib.cjs/types/vue/composables/useWalletServicesPlugin.d.ts +2 -0
  155. package/dist/lib.cjs/types/vue/composables/useWalletUI.d.ts +9 -0
  156. package/dist/lib.cjs/types/vue/composables/useWeb3Auth.d.ts +3 -2
  157. package/dist/lib.cjs/types/vue/composables/useWeb3AuthConnect.d.ts +11 -0
  158. package/dist/lib.cjs/types/vue/composables/useWeb3AuthDisconnect.d.ts +10 -0
  159. package/dist/lib.cjs/types/vue/composables/useWeb3AuthInner.d.ts +2 -0
  160. package/dist/lib.cjs/types/vue/composables/useWeb3AuthUser.d.ts +10 -0
  161. package/dist/lib.cjs/types/vue/interfaces.d.ts +10 -18
  162. package/dist/lib.cjs/types/vue/solana/composables/index.d.ts +4 -0
  163. package/dist/lib.cjs/types/vue/solana/composables/useSignAndSendTransaction.d.ts +9 -0
  164. package/dist/lib.cjs/types/vue/solana/composables/useSignMessage.d.ts +9 -0
  165. package/dist/lib.cjs/types/vue/solana/composables/useSignTransaction.d.ts +9 -0
  166. package/dist/lib.cjs/types/vue/solana/composables/useSolanaWallet.d.ts +9 -0
  167. package/dist/lib.cjs/types/vue/solana/index.d.ts +1 -0
  168. package/dist/lib.cjs/types/vue/wagmi/constants.d.ts +43 -0
  169. package/dist/lib.cjs/types/vue/wagmi/index.d.ts +2 -0
  170. package/dist/lib.cjs/types/vue/wagmi/interface.d.ts +4 -0
  171. package/dist/lib.cjs/types/vue/wagmi/provider.d.ts +17 -0
  172. package/dist/lib.esm/packages/modal/src/config.js +3 -4
  173. package/dist/lib.esm/packages/modal/src/connectors/coinbase-connector/index.js +1 -0
  174. package/dist/lib.esm/packages/modal/src/index.js +1 -1
  175. package/dist/lib.esm/packages/modal/src/modalManager.js +136 -76
  176. package/dist/lib.esm/packages/modal/src/providers/ethereum-mpc-provider/index.js +1 -0
  177. package/dist/lib.esm/packages/modal/src/providers/xrpl-provider/index.js +1 -0
  178. package/dist/lib.esm/packages/modal/src/react/Web3AuthProvider.js +9 -3
  179. package/dist/lib.esm/packages/modal/src/react/context/WalletServicesInnerContext.js +69 -0
  180. package/dist/lib.esm/packages/modal/src/react/context/Web3AuthInnerContext.js +42 -98
  181. package/dist/lib.esm/packages/modal/src/react/hooks/useCheckout.js +32 -0
  182. package/dist/lib.esm/packages/modal/src/react/hooks/useEnableMFA.js +28 -0
  183. package/dist/lib.esm/packages/modal/src/react/hooks/useIdentityToken.js +40 -0
  184. package/dist/lib.esm/packages/modal/src/react/hooks/useManageMFA.js +28 -0
  185. package/dist/lib.esm/packages/modal/src/react/hooks/useSwap.js +32 -0
  186. package/dist/lib.esm/packages/modal/src/react/hooks/useSwitchChain.js +30 -0
  187. package/dist/lib.esm/packages/modal/src/react/hooks/useWalletConnectScanner.js +32 -0
  188. package/dist/lib.esm/packages/modal/src/react/hooks/useWalletServicesPlugin.js +11 -0
  189. package/dist/lib.esm/packages/modal/src/react/hooks/useWalletUI.js +32 -0
  190. package/dist/lib.esm/packages/modal/src/react/hooks/useWeb3Auth.js +21 -8
  191. package/dist/lib.esm/packages/modal/src/react/hooks/useWeb3AuthConnect.js +61 -0
  192. package/dist/lib.esm/packages/modal/src/react/hooks/useWeb3AuthDisconnect.js +28 -0
  193. package/dist/lib.esm/packages/modal/src/react/hooks/useWeb3AuthInner.js +13 -0
  194. package/dist/lib.esm/packages/modal/src/react/hooks/useWeb3AuthUser.js +48 -0
  195. package/dist/lib.esm/packages/modal/src/react/index.js +12 -1
  196. package/dist/lib.esm/packages/modal/src/react/solana/hooks/useSignAndSendTransaction.js +34 -0
  197. package/dist/lib.esm/packages/modal/src/react/solana/hooks/useSignMessage.js +35 -0
  198. package/dist/lib.esm/packages/modal/src/react/solana/hooks/useSignTransaction.js +34 -0
  199. package/dist/lib.esm/packages/modal/src/react/solana/hooks/useSolanaWallet.js +41 -0
  200. package/dist/lib.esm/packages/modal/src/react/solana/index.js +4 -0
  201. package/dist/lib.esm/packages/modal/src/react/wagmi/constants.js +14 -0
  202. package/dist/lib.esm/packages/modal/src/react/wagmi/index.js +1 -0
  203. package/dist/lib.esm/packages/modal/src/react/wagmi/provider.js +194 -0
  204. package/dist/lib.esm/packages/modal/src/ui/components/BottomSheet/BottomSheet.js +3 -3
  205. package/dist/lib.esm/packages/modal/src/ui/components/Button/ButtonSocial/ButtonSocial.js +1 -1
  206. package/dist/lib.esm/packages/modal/src/ui/components/Button/ButtonWallet/ButtonWallet.js +14 -6
  207. package/dist/lib.esm/packages/modal/src/ui/components/ConnectWallet/ConnectWallet.js +27 -21
  208. package/dist/lib.esm/packages/modal/src/ui/components/ConnectWallet/ConnectWalletChainFilter/ConnectWalletChainFilter.js +7 -4
  209. package/dist/lib.esm/packages/modal/src/ui/components/ConnectWallet/ConnectWalletChainNamespaceSelect/ConnectWalletChainNamespaceSelect.js +3 -2
  210. package/dist/lib.esm/packages/modal/src/ui/components/ConnectWallet/ConnectWalletHeader/ConnectWalletHeader.js +1 -1
  211. package/dist/lib.esm/packages/modal/src/ui/components/ConnectWallet/ConnectWalletList/ConnectWalletList.js +13 -5
  212. package/dist/lib.esm/packages/modal/src/ui/components/ConnectWallet/ConnectWalletQrCode/ConnectWalletQrCode.js +15 -9
  213. package/dist/lib.esm/packages/modal/src/ui/components/Footer/Footer.js +6 -9
  214. package/dist/lib.esm/packages/modal/src/ui/components/Image/Image.js +5 -4
  215. package/dist/lib.esm/packages/modal/src/ui/components/Loader/Loader.js +1 -1
  216. package/dist/lib.esm/packages/modal/src/ui/components/Login/Login.js +84 -42
  217. package/dist/lib.esm/packages/modal/src/ui/components/Login/LoginOtp/LoginOtp.js +12 -9
  218. package/dist/lib.esm/packages/modal/src/ui/components/Login/LoginPasswordLess/LoginPasswordLess.js +11 -6
  219. package/dist/lib.esm/packages/modal/src/ui/components/Modal/Modal.js +1 -1
  220. package/dist/lib.esm/packages/modal/src/ui/components/PulseLoader/PulseLoader.js +3 -3
  221. package/dist/lib.esm/packages/modal/src/ui/components/Root/Root.js +189 -131
  222. package/dist/lib.esm/packages/modal/src/ui/components/SocialLoginList/SocialLoginList.js +16 -35
  223. package/dist/lib.esm/packages/modal/src/ui/components/Widget/Widget.js +18 -4
  224. package/dist/lib.esm/packages/modal/src/ui/config.js +2 -1
  225. package/dist/lib.esm/packages/modal/src/ui/constants.js +28 -1
  226. package/dist/lib.esm/packages/modal/src/ui/context/RootContext.js +12 -3
  227. package/dist/lib.esm/packages/modal/src/ui/css/index.css.js +1 -1
  228. package/dist/lib.esm/packages/modal/src/ui/handlers/AbstractHandler.js +5 -1
  229. package/dist/lib.esm/packages/modal/src/ui/handlers/EmailPasswordlessHandler.js +7 -4
  230. package/dist/lib.esm/packages/modal/src/ui/handlers/SmsPasswordlessHandler.js +2 -2
  231. package/dist/lib.esm/packages/modal/src/ui/i18n/dutch.json.js +32 -31
  232. package/dist/lib.esm/packages/modal/src/ui/i18n/english.json.js +32 -31
  233. package/dist/lib.esm/packages/modal/src/ui/i18n/french.json.js +32 -31
  234. package/dist/lib.esm/packages/modal/src/ui/i18n/german.json.js +32 -31
  235. package/dist/lib.esm/packages/modal/src/ui/i18n/japanese.json.js +32 -31
  236. package/dist/lib.esm/packages/modal/src/ui/i18n/korean.json.js +32 -31
  237. package/dist/lib.esm/packages/modal/src/ui/i18n/mandarin.json.js +32 -31
  238. package/dist/lib.esm/packages/modal/src/ui/i18n/portuguese.json.js +32 -31
  239. package/dist/lib.esm/packages/modal/src/ui/i18n/spanish.json.js +32 -31
  240. package/dist/lib.esm/packages/modal/src/ui/i18n/turkish.json.js +32 -31
  241. package/dist/lib.esm/packages/modal/src/ui/loginModal.js +35 -22
  242. package/dist/lib.esm/packages/modal/src/ui/utils.js +16 -4
  243. package/dist/lib.esm/packages/modal/src/vue/WalletServicesInnerProvider.js +69 -0
  244. package/dist/lib.esm/packages/modal/src/vue/Web3AuthProvider.js +40 -79
  245. package/dist/lib.esm/packages/modal/src/vue/composables/useCheckout.js +32 -0
  246. package/dist/lib.esm/packages/modal/src/vue/composables/useEnableMFA.js +30 -0
  247. package/dist/lib.esm/packages/modal/src/vue/composables/useIdentityToken.js +42 -0
  248. package/dist/lib.esm/packages/modal/src/vue/composables/useManageMFA.js +30 -0
  249. package/dist/lib.esm/packages/modal/src/vue/composables/useSwap.js +32 -0
  250. package/dist/lib.esm/packages/modal/src/vue/composables/useSwitchChain.js +30 -0
  251. package/dist/lib.esm/packages/modal/src/vue/composables/useWalletConnectScanner.js +32 -0
  252. package/dist/lib.esm/packages/modal/src/vue/composables/useWalletServicesPlugin.js +11 -0
  253. package/dist/lib.esm/packages/modal/src/vue/composables/useWalletUI.js +32 -0
  254. package/dist/lib.esm/packages/modal/src/vue/composables/useWeb3Auth.js +2 -4
  255. package/dist/lib.esm/packages/modal/src/vue/composables/useWeb3AuthConnect.js +64 -0
  256. package/dist/lib.esm/packages/modal/src/vue/composables/useWeb3AuthDisconnect.js +30 -0
  257. package/dist/lib.esm/packages/modal/src/vue/composables/useWeb3AuthInner.js +10 -0
  258. package/dist/lib.esm/packages/modal/src/vue/composables/useWeb3AuthUser.js +51 -0
  259. package/dist/lib.esm/packages/modal/src/vue/index.js +12 -0
  260. package/dist/lib.esm/packages/modal/src/vue/solana/composables/useSignAndSendTransaction.js +34 -0
  261. package/dist/lib.esm/packages/modal/src/vue/solana/composables/useSignMessage.js +36 -0
  262. package/dist/lib.esm/packages/modal/src/vue/solana/composables/useSignTransaction.js +34 -0
  263. package/dist/lib.esm/packages/modal/src/vue/solana/composables/useSolanaWallet.js +51 -0
  264. package/dist/lib.esm/packages/modal/src/vue/solana/index.js +4 -0
  265. package/dist/lib.esm/packages/modal/src/vue/wagmi/constants.js +14 -0
  266. package/dist/lib.esm/packages/modal/src/vue/wagmi/index.js +1 -0
  267. package/dist/lib.esm/packages/modal/src/vue/wagmi/provider.js +234 -0
  268. package/dist/modal.umd.min.js +1 -1
  269. package/dist/modal.umd.min.js.LICENSE.txt +0 -26
  270. package/package.json +91 -19
  271. package/dist/lib.cjs/types/react/context/index.d.ts +0 -1
@@ -15,6 +15,8 @@ var utils = require('../../utils.js');
15
15
  var BottomSheet = require('../BottomSheet/BottomSheet.js');
16
16
  var ConnectWallet = require('../ConnectWallet/ConnectWallet.js');
17
17
  var ConnectWalletChainNamespaceSelect = require('../ConnectWallet/ConnectWalletChainNamespaceSelect/ConnectWalletChainNamespaceSelect.js');
18
+ var ConnectWalletHeader = require('../ConnectWallet/ConnectWalletHeader/ConnectWalletHeader.js');
19
+ var ConnectWalletQrCode = require('../ConnectWallet/ConnectWalletQrCode/ConnectWalletQrCode.js');
18
20
  var Footer = require('../Footer/Footer.js');
19
21
  var Image = require('../Image/Image.js');
20
22
  var Loader = require('../Loader/Loader.js');
@@ -22,7 +24,7 @@ var Login = require('../Login/Login.js');
22
24
  var Toast = require('../Toast/Toast.js');
23
25
 
24
26
  function Root(props) {
25
- var _bodyState$walletDeta2, _bodyState$walletDeta4;
27
+ var _bodyState$installLin2, _bodyState$installLin4, _bodyState$metamaskQr2, _bodyState$metamaskQr3, _bodyState$metamaskQr4, _bodyState$multiChain, _bodyState$installLin5;
26
28
  const {
27
29
  setModalState,
28
30
  modalState,
@@ -47,7 +49,6 @@ function Root(props) {
47
49
  const {
48
50
  logoAlignment = "center",
49
51
  buttonRadiusType = "pill",
50
- enableMainSocialLoginButton = false,
51
52
  privacyPolicy = "",
52
53
  tncLink = "",
53
54
  displayInstalledExternalWallets = true,
@@ -60,9 +61,18 @@ function Root(props) {
60
61
  isDark
61
62
  } = react.useContext(ThemeContext.ThemedContext);
62
63
  const [bodyState, setBodyState] = react.useState({
63
- showWalletDetails: false,
64
- walletDetails: null,
65
- showMultiChainSelector: false
64
+ metamaskQrCode: {
65
+ show: false,
66
+ wallet: null
67
+ },
68
+ installLinks: {
69
+ show: false,
70
+ wallet: null
71
+ },
72
+ multiChainSelector: {
73
+ show: false,
74
+ wallet: null
75
+ }
66
76
  });
67
77
  const [toast, setToast] = react.useState({
68
78
  message: "",
@@ -84,6 +94,11 @@ function Root(props) {
84
94
  };
85
95
  // Wallet Details
86
96
  const deviceDetails = react.useMemo(() => {
97
+ if (typeof window === "undefined") return {
98
+ platform: "mobile",
99
+ browser: "chrome",
100
+ os: "ios"
101
+ };
87
102
  const browserData = Bowser.getParser(window.navigator.userAgent);
88
103
  return {
89
104
  platform: browserData.getPlatformType(),
@@ -92,9 +107,9 @@ function Root(props) {
92
107
  };
93
108
  }, []);
94
109
  const mobileInstallLinks = react.useMemo(() => {
95
- var _bodyState$walletDeta;
110
+ var _bodyState$installLin;
96
111
  if (deviceDetails.platform === "desktop") return [];
97
- const installConfig = ((_bodyState$walletDeta = bodyState.walletDetails) === null || _bodyState$walletDeta === void 0 || (_bodyState$walletDeta = _bodyState$walletDeta.walletRegistryItem) === null || _bodyState$walletDeta === void 0 ? void 0 : _bodyState$walletDeta.app) || {};
112
+ const installConfig = ((_bodyState$installLin = bodyState.installLinks) === null || _bodyState$installLin === void 0 || (_bodyState$installLin = _bodyState$installLin.wallet) === null || _bodyState$installLin === void 0 || (_bodyState$installLin = _bodyState$installLin.walletRegistryItem) === null || _bodyState$installLin === void 0 ? void 0 : _bodyState$installLin.app) || {};
98
113
  const installLinks = Object.keys(installConfig).reduce((acc, osKey) => {
99
114
  if (!["android", "ios"].includes(osKey)) return acc;
100
115
  const appId = installConfig[osKey];
@@ -111,7 +126,7 @@ function Root(props) {
111
126
  target: "_blank",
112
127
  children: jsxRuntime.jsxs("button", {
113
128
  type: "button",
114
- className: utils.cn("w3a--link-arrow w3a--flex w3a--w-full w3a--items-center w3a--justify-start w3a--gap-x-2 w3a--border w3a--border-app-gray-200 w3a--bg-app-gray-50 w3a--px-5 w3a--py-2.5 hover:w3a--translate-y-[0.5px] hover:w3a--border-app-gray-50 dark:w3a--border-app-gray-500 dark:w3a--bg-app-gray-800 dark:hover:w3a--border-app-gray-800", {
129
+ className: utils.cn("w3a--group w3a--relative w3a--overflow-hidden w3a--h-11 w3a--flex w3a--w-full w3a--items-center w3a--justify-start w3a--gap-x-2 w3a--border w3a--border-app-gray-200 w3a--bg-app-gray-50 w3a--px-5 w3a--py-2.5 hover:w3a--translate-y-[0.5px] hover:w3a--border-app-gray-50 dark:w3a--border-app-gray-500 dark:w3a--bg-app-gray-800 dark:hover:w3a--border-app-gray-800", {
115
130
  "w3a--rounded-full": buttonRadiusType === "pill",
116
131
  "w3a--rounded-lg": buttonRadiusType === "rounded",
117
132
  "w3a--rounded-none": buttonRadiusType === "square"
@@ -130,24 +145,24 @@ function Root(props) {
130
145
  os: utils.getOsName(osKey)
131
146
  })
132
147
  }), jsxRuntime.jsx("img", {
133
- id: "device-link-arrow",
134
- className: "w3a--icon-animation w3a--ml-auto",
148
+ id: "install-links-arrow",
149
+ className: "w3a--absolute w3a--right-4 w3a--top-1/2 -w3a--translate-x-6 -w3a--translate-y-1/2 w3a--opacity-0 w3a--transition-all w3a--duration-300\n group-hover:w3a--translate-x-0 group-hover:w3a--opacity-100",
135
150
  src: utils.getIcons(isDark ? "chevron-right-dark" : "chevron-right-light"),
136
151
  alt: "arrow"
137
152
  })]
138
153
  })
139
154
  })
140
- }));
155
+ }, appUrl));
141
156
  return acc;
142
157
  }, []);
143
158
  return installLinks;
144
- }, [(_bodyState$walletDeta2 = bodyState.walletDetails) === null || _bodyState$walletDeta2 === void 0 || (_bodyState$walletDeta2 = _bodyState$walletDeta2.walletRegistryItem) === null || _bodyState$walletDeta2 === void 0 ? void 0 : _bodyState$walletDeta2.app, deviceDetails.platform, isDark, t, buttonRadiusType]);
159
+ }, [(_bodyState$installLin2 = bodyState.installLinks) === null || _bodyState$installLin2 === void 0 || (_bodyState$installLin2 = _bodyState$installLin2.wallet) === null || _bodyState$installLin2 === void 0 || (_bodyState$installLin2 = _bodyState$installLin2.walletRegistryItem) === null || _bodyState$installLin2 === void 0 ? void 0 : _bodyState$installLin2.app, deviceDetails.platform, isDark, t, buttonRadiusType]);
145
160
  const desktopInstallLinks = react.useMemo(() => {
146
- var _bodyState$walletDeta3;
161
+ var _bodyState$installLin3;
147
162
  if (deviceDetails.platform !== "desktop") return [];
148
163
  // if browser is brave, use chrome extension
149
164
  const browserType = deviceDetails.browser === "brave" ? "chrome" : deviceDetails.browser;
150
- const browserExtensionConfig = ((_bodyState$walletDeta3 = bodyState.walletDetails) === null || _bodyState$walletDeta3 === void 0 || (_bodyState$walletDeta3 = _bodyState$walletDeta3.walletRegistryItem) === null || _bodyState$walletDeta3 === void 0 ? void 0 : _bodyState$walletDeta3.app) || {};
165
+ const browserExtensionConfig = ((_bodyState$installLin3 = bodyState.installLinks) === null || _bodyState$installLin3 === void 0 || (_bodyState$installLin3 = _bodyState$installLin3.wallet) === null || _bodyState$installLin3 === void 0 || (_bodyState$installLin3 = _bodyState$installLin3.walletRegistryItem) === null || _bodyState$installLin3 === void 0 ? void 0 : _bodyState$installLin3.app) || {};
151
166
  const extensionForCurrentBrowser = browserExtensionConfig.browser && browserExtensionConfig.browser.includes(browserType) ? browserExtensionConfig.browser : undefined;
152
167
  const browserExtensionId = browserExtensionConfig[browserType] || extensionForCurrentBrowser;
153
168
  const browserExtensionUrl = browserExtensionId ? utils.getBrowserExtensionUrl(browserType, browserExtensionId) : null;
@@ -158,7 +173,7 @@ function Root(props) {
158
173
  target: "_blank",
159
174
  children: jsxRuntime.jsxs("button", {
160
175
  type: "button",
161
- className: utils.cn("w3a--link-arrow w3a--flex w3a--w-full w3a--items-center w3a--justify-start w3a--gap-x-2 w3a--border w3a--border-app-gray-200 w3a--bg-app-gray-50 w3a--px-5 w3a--py-2.5 hover:w3a--translate-y-[0.5px] hover:w3a--border-app-gray-50 dark:w3a--border-app-gray-500 dark:w3a--bg-app-gray-800 dark:hover:w3a--border-app-gray-800", {
176
+ className: utils.cn("w3a--group w3a--relative w3a--overflow-hidden w3a--h-11 w3a--flex w3a--w-full w3a--items-center w3a--justify-start w3a--gap-x-2 w3a--border w3a--border-app-gray-200 w3a--bg-app-gray-50 w3a--px-5 w3a--py-2.5 hover:w3a--translate-y-[0.5px] hover:w3a--border-app-gray-50 dark:w3a--border-app-gray-500 dark:w3a--bg-app-gray-800 dark:hover:w3a--border-app-gray-800", {
162
177
  "w3a--rounded-full": buttonRadiusType === "pill",
163
178
  "w3a--rounded-lg": buttonRadiusType === "rounded",
164
179
  "w3a--rounded-none": buttonRadiusType === "square"
@@ -177,38 +192,26 @@ function Root(props) {
177
192
  browser: utils.getBrowserName(deviceDetails.browser)
178
193
  })
179
194
  }), jsxRuntime.jsx("img", {
180
- id: "device-link-arrow",
181
- className: "w3a--icon-animation w3a--ml-auto",
195
+ id: "install-links-arrow",
196
+ className: "w3a--absolute w3a--right-4 w3a--top-1/2 -w3a--translate-x-6 -w3a--translate-y-1/2 w3a--opacity-0 w3a--transition-all w3a--duration-300\n group-hover:w3a--translate-x-0 group-hover:w3a--opacity-100",
182
197
  src: utils.getIcons(isDark ? "chevron-right-dark" : "chevron-right-light"),
183
198
  alt: "arrow"
184
199
  })]
185
200
  })
186
201
  })
187
- }) : null;
202
+ }, browserExtensionUrl) : null;
188
203
  return [installLink, ...mobileInstallLinks];
189
- }, [(_bodyState$walletDeta4 = bodyState.walletDetails) === null || _bodyState$walletDeta4 === void 0 || (_bodyState$walletDeta4 = _bodyState$walletDeta4.walletRegistryItem) === null || _bodyState$walletDeta4 === void 0 ? void 0 : _bodyState$walletDeta4.app, deviceDetails.browser, deviceDetails.platform, isDark, mobileInstallLinks, buttonRadiusType, t]);
204
+ }, [(_bodyState$installLin4 = bodyState.installLinks) === null || _bodyState$installLin4 === void 0 || (_bodyState$installLin4 = _bodyState$installLin4.wallet) === null || _bodyState$installLin4 === void 0 || (_bodyState$installLin4 = _bodyState$installLin4.walletRegistryItem) === null || _bodyState$installLin4 === void 0 ? void 0 : _bodyState$installLin4.app, deviceDetails.browser, deviceDetails.platform, isDark, mobileInstallLinks, buttonRadiusType, t]);
190
205
  // External Wallets
191
206
  const config = react.useMemo(() => modalState.externalWalletsConfig, [modalState.externalWalletsConfig]);
192
207
  const connectorVisibilityMap = react.useMemo(() => {
193
208
  const canShowMap = {};
194
209
  Object.keys(config).forEach(connector => {
195
- const connectorConfig = config[connector];
196
- if (!connectorConfig.showOnModal) {
197
- canShowMap[connector] = false;
198
- return;
199
- }
200
- if (deviceDetails.platform === "desktop" && connectorConfig.showOnDesktop) {
201
- canShowMap[connector] = true;
202
- return;
203
- }
204
- if ((deviceDetails.platform === "mobile" || deviceDetails.platform === "tablet") && connectorConfig.showOnMobile) {
205
- canShowMap[connector] = true;
206
- return;
207
- }
208
- canShowMap[connector] = false;
210
+ var _config$connector;
211
+ canShowMap[connector] = Boolean((_config$connector = config[connector]) === null || _config$connector === void 0 ? void 0 : _config$connector.showOnModal);
209
212
  });
210
213
  return canShowMap;
211
- }, [deviceDetails, config]);
214
+ }, [config]);
212
215
  const isWalletConnectConnectorIncluded = react.useMemo(
213
216
  // WC is always included when enabling wallet discovery
214
217
  () => Object.keys((walletRegistry === null || walletRegistry === void 0 ? void 0 : walletRegistry.default) || {}).length > 0 || Object.keys((walletRegistry === null || walletRegistry === void 0 ? void 0 : walletRegistry.others) || {}).length > 0, [walletRegistry]);
@@ -224,20 +227,22 @@ function Root(props) {
224
227
  const deepLink = walletRegistryItem === null || walletRegistryItem === void 0 || (_walletRegistryItem$m2 = walletRegistryItem.mobile) === null || _walletRegistryItem$m2 === void 0 ? void 0 : _walletRegistryItem$m2.native;
225
228
  href = universalLink || deepLink;
226
229
  }
230
+ // determine the chain namespaces supported by the wallet
231
+ const connectorConfig = config[wallet];
232
+ const connectorChainNamespaces = (connectorConfig === null || connectorConfig === void 0 ? void 0 : connectorConfig.chainNamespaces) || [];
227
233
  const registryNamespaces = new Set((_walletRegistryItem$c = walletRegistryItem.chains) === null || _walletRegistryItem$c === void 0 ? void 0 : _walletRegistryItem$c.map(chain => chain.split(":")[0]));
228
234
  const injectedChainNamespaces = new Set((_walletRegistryItem$i = walletRegistryItem.injected) === null || _walletRegistryItem$i === void 0 ? void 0 : _walletRegistryItem$i.map(injected => injected.namespace));
229
- const availableChainNamespaces = chainNamespaces.filter(x => registryNamespaces.has(x) || injectedChainNamespaces.has(x));
230
- const connector = config[wallet];
235
+ const availableChainNamespaces = chainNamespaces.filter(x => registryNamespaces.has(x) || injectedChainNamespaces.has(x) || connectorChainNamespaces.includes(x));
231
236
  const button = {
232
237
  name: wallet,
233
238
  displayName: walletRegistryItem.name,
234
239
  href,
235
- hasInjectedWallet: (connector === null || connector === void 0 ? void 0 : connector.isInjected) || false,
240
+ hasInjectedWallet: (connectorConfig === null || connectorConfig === void 0 ? void 0 : connectorConfig.isInjected) || false,
236
241
  hasWalletConnect: isWalletConnectConnectorIncluded && ((_walletRegistryItem$w = walletRegistryItem.walletConnect) === null || _walletRegistryItem$w === void 0 || (_walletRegistryItem$w = _walletRegistryItem$w.sdks) === null || _walletRegistryItem$w === void 0 ? void 0 : _walletRegistryItem$w.includes("sign_v2")),
237
242
  hasInstallLinks: Object.keys(walletRegistryItem.app || {}).length > 0,
238
243
  walletRegistryItem,
239
244
  imgExtension: walletRegistryItem.imgExtension || "svg",
240
- icon: connector === null || connector === void 0 ? void 0 : connector.icon,
245
+ icon: connectorConfig === null || connectorConfig === void 0 ? void 0 : connectorConfig.icon,
241
246
  chainNamespaces: availableChainNamespaces
242
247
  };
243
248
  if (!button.hasInjectedWallet && !button.hasWalletConnect && !button.hasInstallLinks) return acc;
@@ -246,30 +251,44 @@ function Root(props) {
246
251
  return acc;
247
252
  }, []);
248
253
  }, [connectorVisibilityMap, chainNamespaces, config, deviceDetails.platform, isWalletConnectConnectorIncluded]);
254
+ const allButtons = react.useMemo(() => {
255
+ return [...generateWalletButtons(walletRegistry.default), ...generateWalletButtons(walletRegistry.others)];
256
+ }, [generateWalletButtons, walletRegistry.default, walletRegistry.others]);
249
257
  const installedConnectorButtons = react.useMemo(() => {
250
258
  const installedConnectors = Object.keys(config).reduce((acc, connector) => {
251
- var _walletRegistryItem$c2, _walletRegistryItem$i2, _config$connector, _config$connector2;
252
- if ([noModal.WALLET_CONNECTORS.WALLET_CONNECT_V2].includes(connector) || !connectorVisibilityMap[connector]) return acc;
253
- // determine chain namespaces based on wallet registry
254
- const walletRegistryItem = walletRegistry.default[connector];
255
- const registryNamespaces = new Set(walletRegistryItem === null || walletRegistryItem === void 0 || (_walletRegistryItem$c2 = walletRegistryItem.chains) === null || _walletRegistryItem$c2 === void 0 ? void 0 : _walletRegistryItem$c2.map(chain => chain.split(":")[0]));
256
- const injectedChainNamespaces = new Set(walletRegistryItem === null || walletRegistryItem === void 0 || (_walletRegistryItem$i2 = walletRegistryItem.injected) === null || _walletRegistryItem$i2 === void 0 ? void 0 : _walletRegistryItem$i2.map(injected => injected.namespace));
257
- const availableChainNamespaces = chainNamespaces.filter(x => registryNamespaces.has(x) || injectedChainNamespaces.has(x));
259
+ if (connector === noModal.WALLET_CONNECTORS.WALLET_CONNECT_V2 || !connectorVisibilityMap[connector]) return acc;
260
+ const connectorConfig = config[connector];
258
261
  acc.push({
259
262
  name: connector,
260
- displayName: config[connector].label || connector,
261
- hasInjectedWallet: ((_config$connector = config[connector]) === null || _config$connector === void 0 ? void 0 : _config$connector.isInjected) || false,
263
+ displayName: (connectorConfig === null || connectorConfig === void 0 ? void 0 : connectorConfig.label) || connector,
264
+ hasInjectedWallet: (connectorConfig === null || connectorConfig === void 0 ? void 0 : connectorConfig.isInjected) || false,
262
265
  hasWalletConnect: false,
263
266
  hasInstallLinks: false,
264
- walletRegistryItem,
265
- icon: (_config$connector2 = config[connector]) === null || _config$connector2 === void 0 ? void 0 : _config$connector2.icon,
266
- chainNamespaces: availableChainNamespaces
267
+ icon: connectorConfig === null || connectorConfig === void 0 ? void 0 : connectorConfig.icon,
268
+ chainNamespaces: (connectorConfig === null || connectorConfig === void 0 ? void 0 : connectorConfig.chainNamespaces) || []
267
269
  });
268
270
  return acc;
269
271
  }, []);
272
+ // if metamask connector is not injected, use the registry button instead to display QR code
273
+ const metamaskConnectorIdx = installedConnectors.findIndex(x => x.name === noModal.WALLET_CONNECTORS.METAMASK && !x.hasInjectedWallet);
274
+ if (metamaskConnectorIdx !== -1) {
275
+ const metamaskConnector = installedConnectors[metamaskConnectorIdx];
276
+ let metamaskRegistryButton = allButtons.find(button => button.name === noModal.WALLET_CONNECTORS.METAMASK);
277
+ if (!metamaskRegistryButton) {
278
+ // use the default metamask registry item if it's not in the registry
279
+ metamaskRegistryButton = generateWalletButtons({
280
+ [noModal.WALLET_CONNECTORS.METAMASK]: constants.DEFAULT_METAMASK_WALLET_REGISTRY_ITEM
281
+ })[0];
282
+ }
283
+ if (metamaskRegistryButton) {
284
+ installedConnectors.splice(metamaskConnectorIdx, 1, _objectSpread(_objectSpread({}, metamaskRegistryButton), {}, {
285
+ chainNamespaces: metamaskConnector.chainNamespaces // preserve the chain namespaces
286
+ }));
287
+ }
288
+ }
270
289
  // make metamask the first button and limit the number of buttons
271
290
  return installedConnectors;
272
- }, [config, connectorVisibilityMap, walletRegistry.default, chainNamespaces]);
291
+ }, [allButtons, config, connectorVisibilityMap, generateWalletButtons]);
273
292
  const customConnectorButtons = react.useMemo(() => {
274
293
  return installedConnectorButtons.filter(button => !button.hasInjectedWallet);
275
294
  }, [installedConnectorButtons]);
@@ -278,9 +297,6 @@ function Root(props) {
278
297
  // make metamask the first button and limit the number of buttons
279
298
  return installedConnectorButtons.sort((a, _) => a.name === noModal.WALLET_CONNECTORS.METAMASK ? -1 : 1).slice(0, displayInstalledExternalWallets ? MAX_TOP_INSTALLED_CONNECTORS : 1);
280
299
  }, [installedConnectorButtons, displayInstalledExternalWallets]);
281
- const allButtons = react.useMemo(() => {
282
- return [...generateWalletButtons(walletRegistry.default), ...generateWalletButtons(walletRegistry.others)];
283
- }, [generateWalletButtons, walletRegistry.default, walletRegistry.others]);
284
300
  const totalExternalWallets = react.useMemo(() => {
285
301
  const uniqueWalletSet = new Set();
286
302
  return allButtons.concat(installedConnectorButtons).filter(button => {
@@ -296,15 +312,19 @@ function Root(props) {
296
312
  setIsWalletDetailsExpanded(prev => !prev);
297
313
  };
298
314
  const containerMaxHeight = react.useMemo(() => {
315
+ var _bodyState$metamaskQr;
299
316
  const isPrivacyPolicyOrTncLink = privacyPolicy || tncLink;
300
- const isEnableMainSocialLoginButton = enableMainSocialLoginButton;
301
317
  // Loader Screen
302
318
  if (modalState.status !== interfaces.MODAL_STATUS.INITIALIZED) {
303
- return "642px";
319
+ return "530px";
304
320
  }
305
321
  // Wallet Details Screen
306
322
  if (isWalletDetailsExpanded) {
307
- return "588px";
323
+ return isPrivacyPolicyOrTncLink ? "640px" : "588px";
324
+ }
325
+ // MetaMask QR Code Screen
326
+ if ((_bodyState$metamaskQr = bodyState.metamaskQrCode) !== null && _bodyState$metamaskQr !== void 0 && _bodyState$metamaskQr.show) {
327
+ return isPrivacyPolicyOrTncLink ? "640px" : "588px";
308
328
  }
309
329
  // Connect Wallet Screen
310
330
  if (modalState.currentPage === constants.PAGES.CONNECT_WALLET) {
@@ -316,28 +336,32 @@ function Root(props) {
316
336
  }
317
337
  // Only MetaMask
318
338
  if (topInstalledConnectorButtons.length === 1) {
319
- if (isPrivacyPolicyOrTncLink) {
320
- return isEnableMainSocialLoginButton ? "600px" : "560px";
321
- }
322
- return isEnableMainSocialLoginButton ? "570px" : "530px";
339
+ return isPrivacyPolicyOrTncLink ? "560px" : "530px";
323
340
  }
324
341
  // More than 1 connector
325
342
  if (topInstalledConnectorButtons.length > 1) {
326
343
  const maxHeight = 500 + (topInstalledConnectorButtons.length - 1) * 58;
327
344
  if (isPrivacyPolicyOrTncLink) {
328
- return `${maxHeight + (isEnableMainSocialLoginButton ? 120 : 60)}px`;
345
+ return `${maxHeight + 60}px`;
329
346
  }
330
- return `${maxHeight + (isEnableMainSocialLoginButton ? 66 : 16)}px`;
347
+ return `${maxHeight + 16}px`;
331
348
  }
332
349
  // Default
333
350
  return "539px";
334
- }, [isWalletDetailsExpanded, modalState.currentPage, isSocialLoginsExpanded, installedConnectorButtons, privacyPolicy, tncLink, enableMainSocialLoginButton, modalState.status]);
351
+ }, [privacyPolicy, tncLink, modalState.status, modalState.currentPage, isWalletDetailsExpanded, (_bodyState$metamaskQr2 = bodyState.metamaskQrCode) === null || _bodyState$metamaskQr2 === void 0 ? void 0 : _bodyState$metamaskQr2.show, isSocialLoginsExpanded, topInstalledConnectorButtons.length]);
335
352
  const contextValue = react.useMemo(() => ({
336
353
  bodyState,
337
354
  setBodyState,
338
355
  toast,
339
356
  setToast
340
357
  }), [bodyState, setBodyState, toast, setToast]);
358
+ const isShowLoader = react.useMemo(() => {
359
+ // don't show loader if metamask is connecting and there is a connect uri
360
+ if (modalState.detailedLoaderConnector === noModal.WALLET_CONNECTORS.METAMASK && modalState.metamaskConnectUri) {
361
+ return false;
362
+ }
363
+ return modalState.status !== interfaces.MODAL_STATUS.INITIALIZED;
364
+ }, [modalState.detailedLoaderConnector, modalState.metamaskConnectUri, modalState.status]);
341
365
  return jsxRuntime.jsx(RootContext.RootContext.Provider, {
342
366
  value: contextValue,
343
367
  children: jsxRuntime.jsxs("div", {
@@ -351,92 +375,125 @@ function Root(props) {
351
375
  className: "w3a--modal-curtain"
352
376
  }), jsxRuntime.jsxs("div", {
353
377
  className: "w3a--relative w3a--flex w3a--h-full w3a--flex-1 w3a--flex-col w3a--p-6",
354
- children: [modalState.status !== interfaces.MODAL_STATUS.INITIALIZED ? jsxRuntime.jsx(Loader, {
378
+ children: [isShowLoader ? jsxRuntime.jsx(Loader, {
355
379
  connector: modalState.detailedLoaderConnector,
356
380
  connectorName: modalState.detailedLoaderConnectorName,
357
381
  modalStatus: modalState.status,
358
382
  onClose: onCloseLoader,
359
383
  appLogo: appLogo
360
- }) : jsxRuntime.jsxs(jsxRuntime.Fragment, {
361
- children: [modalState.currentPage === constants.PAGES.LOGIN && showExternalWalletPage && modalState.status === interfaces.MODAL_STATUS.INITIALIZED && jsxRuntime.jsx(Login, {
362
- web3authClientId: modalState.web3authClientId,
363
- web3authNetwork: modalState.web3authNetwork,
364
- isModalVisible: modalState.modalVisibility,
365
- isDark: isDark,
366
- appLogo: appLogo,
367
- showPasswordLessInput: showPasswordLessInput,
368
- showExternalWalletButton: showExternalWalletButton,
369
- showExternalWalletCount: displayExternalWalletsCount,
370
- showInstalledExternalWallets: displayInstalledExternalWallets,
371
- socialLoginsConfig: socialLoginsConfig,
372
- areSocialLoginsVisible: areSocialLoginsVisible,
373
- isEmailPrimary: isEmailPrimary,
374
- isExternalPrimary: isExternalPrimary,
375
- installedExternalWalletConfig: topInstalledConnectorButtons,
376
- isEmailPasswordLessLoginVisible: isEmailPasswordLessLoginVisible,
377
- isSmsPasswordLessLoginVisible: isSmsPasswordLessLoginVisible,
378
- totalExternalWallets: totalExternalWallets,
379
- logoAlignment: logoAlignment,
380
- buttonRadius: buttonRadiusType,
381
- enableMainSocialLoginButton: enableMainSocialLoginButton,
382
- handleSocialLoginClick: handleSocialLoginClick,
383
- handleExternalWalletBtnClick: onExternalWalletBtnClick,
384
- handleSocialLoginHeight: handleSocialLoginHeight,
385
- handleExternalWalletClick: preHandleExternalWalletClick
386
- }), modalState.currentPage === constants.PAGES.CONNECT_WALLET && !showExternalWalletPage && modalState.status === interfaces.MODAL_STATUS.INITIALIZED && jsxRuntime.jsx(ConnectWallet, {
387
- isDark: isDark,
388
- walletConnectUri: modalState.walletConnectUri,
389
- config: modalState.externalWalletsConfig,
390
- walletRegistry: walletRegistry,
391
- allExternalButtons: allButtons,
392
- connectorVisibilityMap: connectorVisibilityMap,
393
- customConnectorButtons: customConnectorButtons,
394
- deviceDetails: {
395
- platform: deviceDetails.platform,
396
- browser: deviceDetails.browser,
397
- os: deviceDetails.os
398
- },
399
- chainNamespace: chainNamespaces,
400
- buttonRadius: buttonRadiusType,
401
- handleWalletDetailsHeight: handleWalletDetailsHeight,
402
- onBackClick: onBackClick,
403
- handleExternalWalletClick: preHandleExternalWalletClick
404
- })]
384
+ }) : jsxRuntime.jsx(jsxRuntime.Fragment, {
385
+ children: (_bodyState$metamaskQr3 = bodyState.metamaskQrCode) !== null && _bodyState$metamaskQr3 !== void 0 && _bodyState$metamaskQr3.show ? jsxRuntime.jsxs("div", {
386
+ className: "w3a--relative w3a--flex w3a--flex-1 w3a--flex-col w3a--gap-y-4",
387
+ children: [jsxRuntime.jsx(ConnectWalletHeader, {
388
+ onBackClick: () => setBodyState(_objectSpread(_objectSpread({}, bodyState), {}, {
389
+ metamaskQrCode: {
390
+ show: false,
391
+ wallet: null
392
+ }
393
+ })),
394
+ currentPage: constants.CONNECT_WALLET_PAGES.SELECTED_WALLET,
395
+ selectedButton: bodyState.metamaskQrCode.wallet
396
+ }), jsxRuntime.jsx(ConnectWalletQrCode, {
397
+ qrCodeValue: modalState.metamaskConnectUri,
398
+ isDark: isDark,
399
+ selectedButton: bodyState.metamaskQrCode.wallet,
400
+ primaryColor: (_bodyState$metamaskQr4 = bodyState.metamaskQrCode.wallet.walletRegistryItem) === null || _bodyState$metamaskQr4 === void 0 ? void 0 : _bodyState$metamaskQr4.primaryColor,
401
+ logoImage: `https://images.web3auth.io/login-${bodyState.metamaskQrCode.wallet.name}.${bodyState.metamaskQrCode.wallet.imgExtension}`
402
+ })]
403
+ }) : jsxRuntime.jsxs(jsxRuntime.Fragment, {
404
+ children: [modalState.currentPage === constants.PAGES.LOGIN && showExternalWalletPage && modalState.status === interfaces.MODAL_STATUS.INITIALIZED && jsxRuntime.jsx(Login, {
405
+ web3authClientId: modalState.web3authClientId,
406
+ web3authNetwork: modalState.web3authNetwork,
407
+ authBuildEnv: modalState.authBuildEnv,
408
+ isModalVisible: modalState.modalVisibility,
409
+ isDark: isDark,
410
+ appLogo: appLogo,
411
+ showPasswordLessInput: showPasswordLessInput,
412
+ showExternalWalletButton: showExternalWalletButton,
413
+ showExternalWalletCount: displayExternalWalletsCount,
414
+ showInstalledExternalWallets: displayInstalledExternalWallets,
415
+ socialLoginsConfig: socialLoginsConfig,
416
+ areSocialLoginsVisible: areSocialLoginsVisible,
417
+ isEmailPrimary: isEmailPrimary,
418
+ isExternalPrimary: isExternalPrimary,
419
+ installedExternalWalletConfig: topInstalledConnectorButtons,
420
+ isEmailPasswordLessLoginVisible: isEmailPasswordLessLoginVisible,
421
+ isSmsPasswordLessLoginVisible: isSmsPasswordLessLoginVisible,
422
+ totalExternalWallets: totalExternalWallets,
423
+ logoAlignment: logoAlignment,
424
+ buttonRadius: buttonRadiusType,
425
+ handleSocialLoginClick: handleSocialLoginClick,
426
+ handleExternalWalletBtnClick: onExternalWalletBtnClick,
427
+ handleSocialLoginHeight: handleSocialLoginHeight,
428
+ handleExternalWalletClick: preHandleExternalWalletClick
429
+ }), modalState.currentPage === constants.PAGES.CONNECT_WALLET && !showExternalWalletPage && modalState.status === interfaces.MODAL_STATUS.INITIALIZED && jsxRuntime.jsx(ConnectWallet, {
430
+ isDark: isDark,
431
+ walletConnectUri: modalState.walletConnectUri,
432
+ metamaskConnectUri: modalState.metamaskConnectUri,
433
+ config: modalState.externalWalletsConfig,
434
+ walletRegistry: walletRegistry,
435
+ allExternalButtons: allButtons,
436
+ connectorVisibilityMap: connectorVisibilityMap,
437
+ customConnectorButtons: customConnectorButtons,
438
+ deviceDetails: {
439
+ platform: deviceDetails.platform,
440
+ browser: deviceDetails.browser,
441
+ os: deviceDetails.os
442
+ },
443
+ chainNamespace: chainNamespaces,
444
+ buttonRadius: buttonRadiusType,
445
+ handleWalletDetailsHeight: handleWalletDetailsHeight,
446
+ onBackClick: onBackClick,
447
+ handleExternalWalletClick: preHandleExternalWalletClick
448
+ })]
449
+ })
405
450
  }), jsxRuntime.jsx(Footer, {
406
451
  privacyPolicy: privacyPolicy,
407
452
  termsOfService: tncLink
408
- }), bodyState.showMultiChainSelector && jsxRuntime.jsx(BottomSheet, {
453
+ }), ((_bodyState$multiChain = bodyState.multiChainSelector) === null || _bodyState$multiChain === void 0 ? void 0 : _bodyState$multiChain.show) && jsxRuntime.jsx(BottomSheet, {
409
454
  uiConfig: uiConfig,
410
- isShown: bodyState.showMultiChainSelector,
411
- onClose: () => setBodyState({
412
- showMultiChainSelector: false
413
- }),
455
+ isShown: bodyState.multiChainSelector.show,
456
+ onClose: () => setBodyState(_objectSpread(_objectSpread({}, bodyState), {}, {
457
+ multiChainSelector: {
458
+ show: false,
459
+ wallet: null
460
+ }
461
+ })),
414
462
  children: jsxRuntime.jsx(ConnectWalletChainNamespaceSelect, {
415
463
  isDark: isDark,
416
- wallet: bodyState.walletDetails,
464
+ wallet: bodyState.multiChainSelector.wallet,
417
465
  handleExternalWalletClick: params => {
418
466
  preHandleExternalWalletClick(params);
419
- setBodyState({
420
- showMultiChainSelector: false
421
- });
467
+ setBodyState(_objectSpread(_objectSpread({}, bodyState), {}, {
468
+ multiChainSelector: {
469
+ show: false,
470
+ wallet: null
471
+ }
472
+ }));
422
473
  }
423
474
  })
424
- }), bodyState.showWalletDetails && jsxRuntime.jsxs(BottomSheet, {
475
+ }), ((_bodyState$installLin5 = bodyState.installLinks) === null || _bodyState$installLin5 === void 0 ? void 0 : _bodyState$installLin5.show) && jsxRuntime.jsxs(BottomSheet, {
425
476
  uiConfig: uiConfig,
426
- isShown: bodyState.showWalletDetails,
427
- onClose: () => setBodyState({
428
- showWalletDetails: false
429
- }),
430
- children: [jsxRuntime.jsx("div", {
477
+ isShown: bodyState.installLinks.show,
478
+ onClose: () => setBodyState(_objectSpread(_objectSpread({}, bodyState), {}, {
479
+ installLinks: {
480
+ show: false,
481
+ wallet: null
482
+ }
483
+ })),
484
+ children: [jsxRuntime.jsx("p", {
485
+ className: "w3a--mb-2 w3a--text-center w3a--text-base w3a--font-semibold w3a--text-app-gray-900 dark:w3a--text-app-white",
486
+ children: t("modal.getWallet")
487
+ }), jsxRuntime.jsx("div", {
431
488
  className: "w3a--my-4 w3a--flex w3a--justify-center",
432
489
  children: jsxRuntime.jsx(Image, {
433
- imageId: `login-${bodyState.walletDetails.name}`,
434
- hoverImageId: `login-${bodyState.walletDetails.name}`,
490
+ imageId: `login-${bodyState.installLinks.wallet.name}`,
491
+ hoverImageId: `login-${bodyState.installLinks.wallet.name}`,
435
492
  fallbackImageId: "wallet",
436
493
  height: "80",
437
494
  width: "80",
438
495
  isButton: true,
439
- extension: bodyState.walletDetails.imgExtension
496
+ extension: bodyState.installLinks.wallet.imgExtension
440
497
  })
441
498
  }), jsxRuntime.jsx("ul", {
442
499
  className: "w3a--flex w3a--flex-col w3a--gap-y-2",
@@ -8,19 +8,19 @@ var Button_type = require('../Button/Button.type.js');
8
8
  var LoginHint = require('../LoginHint/LoginHint.js');
9
9
 
10
10
  function getProviderIcon(method, isDark, extension) {
11
- const imageId = method === auth.AUTH_CONNECTION.TWITTER ? `login-twitter-x${isDark ? "-light" : "-dark"}` : `login-${method}${isDark ? "-light" : "-dark"}`;
11
+ const imageId = method === auth.AUTH_CONNECTION.TWITTER ? `login-X${isDark ? "-light" : "-dark"}` : `login-${method}${isDark ? "-light" : "-dark"}`;
12
12
  const hoverId = method === auth.AUTH_CONNECTION.APPLE || method === auth.AUTH_CONNECTION.GITHUB || method === auth.AUTH_CONNECTION.TWITTER ? imageId : `login-${method}-active`;
13
13
  return jsxRuntime.jsxs(jsxRuntime.Fragment, {
14
14
  children: [jsxRuntime.jsx("img", {
15
15
  id: "active-login-img",
16
16
  src: `https://images.web3auth.io/${hoverId}${extension}`,
17
17
  alt: "active-login-img",
18
- className: "w3a--size-5 w3a--object-contain"
18
+ className: "w3a--hidden w3a--size-5 w3a--object-contain group-hover:w3a--block"
19
19
  }), jsxRuntime.jsx("img", {
20
20
  id: "login-img",
21
21
  src: `https://images.web3auth.io/${imageId}${extension}`,
22
22
  alt: "login-img",
23
- className: "w3a--size-5 w3a--object-contain"
23
+ className: "w3a--block w3a--size-5 w3a--object-contain group-hover:w3a--hidden"
24
24
  })]
25
25
  });
26
26
  }
@@ -46,31 +46,11 @@ function SocialLoginList(props) {
46
46
  }
47
47
  };
48
48
  if (visibleRow.length !== 0 && (otherRow === null || otherRow === void 0 ? void 0 : otherRow.length) === 0) {
49
- var _visibleRow$;
50
- const isMainOption = (_visibleRow$ = visibleRow[0]) === null || _visibleRow$ === void 0 ? void 0 : _visibleRow$.isMainOption;
51
- const rowsToShow = isMainOption ? visibleRow.filter(row => !row.isMainOption) : visibleRow;
52
- return jsxRuntime.jsxs("div", {
49
+ return jsxRuntime.jsx("div", {
53
50
  className: "w3a--flex w3a--w-full w3a--flex-col w3a--items-center w3a--justify-center w3a--gap-y-2",
54
- children: [isMainOption && jsxRuntime.jsx(Button, {
55
- type: Button_type.BUTTON_TYPE.SOCIAL,
56
- props: {
57
- showText: false,
58
- method: visibleRow[0].method,
59
- isDark,
60
- isPrimaryBtn: false,
61
- btnStyle: "w3a--flex w3a--items-center !w3a--justify-center w3a--w-full w3a--h-full w3a-arrow w3a-img-login-group",
62
- children: jsxRuntime.jsx(jsxRuntime.Fragment, {
63
- children: getProviderIcon(visibleRow[0].method, isDark, ".svg")
64
- }),
65
- onClick: () => handleSocialLoginClick({
66
- connector: visibleRow[0].connector,
67
- loginParams: visibleRow[0].loginParams
68
- }),
69
- buttonRadius
70
- }
71
- }, visibleRow[0].method), jsxRuntime.jsxs("div", {
51
+ children: jsxRuntime.jsxs("div", {
72
52
  className: utils.cn("w3a--grid w3a--w-full w3a--gap-x-2", getGridRowFromVisibleLogin()),
73
- children: [rowsToShow.filter((_, index) => rowsToShow.length === 4 ? index <= 3 : index < 3).map(row => jsxRuntime.jsx(LoginHint, {
53
+ children: [visibleRow.filter((_, index) => visibleRow.length === 4 ? index <= 3 : index < 3).map(row => jsxRuntime.jsx(LoginHint, {
74
54
  content: "Last Login",
75
55
  isDark: isDark,
76
56
  hideHint: true,
@@ -81,7 +61,7 @@ function SocialLoginList(props) {
81
61
  method: row.method,
82
62
  isDark,
83
63
  isPrimaryBtn: false,
84
- btnStyle: "w3a--flex w3a--items-center !w3a--justify-center w3a--w-full w3a--h-full w3a-arrow w3a-img-login-group",
64
+ btnStyle: "w3a--flex w3a--items-center !w3a--justify-center w3a--w-full w3a--h-11 w3a--group",
85
65
  children: jsxRuntime.jsx(jsxRuntime.Fragment, {
86
66
  children: getProviderIcon(row.method, isDark, ".svg")
87
67
  }),
@@ -92,11 +72,12 @@ function SocialLoginList(props) {
92
72
  buttonRadius
93
73
  }
94
74
  }, row.method)
95
- }, row.method)), canShowMore && rowsToShow.length > 4 && jsxRuntime.jsx(Button, {
75
+ }, row.method)), canShowMore && visibleRow.length > 4 && jsxRuntime.jsx(Button, {
96
76
  type: Button_type.BUTTON_TYPE.SOCIAL,
97
77
  props: {
98
78
  showIcon: false,
99
79
  onClick: handleExpandSocialLogins,
80
+ btnStyle: "w3a--flex w3a--items-center !w3a--justify-center w3a--w-full w3a--h-11",
100
81
  children: jsxRuntime.jsx("img", {
101
82
  src: utils.getIcons(isDark ? "dots-dark-horizontal" : "dots-light-horizontal"),
102
83
  alt: "Logo",
@@ -105,7 +86,7 @@ function SocialLoginList(props) {
105
86
  buttonRadius
106
87
  }
107
88
  })]
108
- })]
89
+ })
109
90
  });
110
91
  }
111
92
  return jsxRuntime.jsxs("div", {
@@ -120,9 +101,9 @@ function SocialLoginList(props) {
120
101
  className: "w3a--object-contain"
121
102
  })
122
103
  }), jsxRuntime.jsx("div", {
123
- className: "w3a--grid w3a--h-[300px] w3a--w-full w3a--auto-rows-min w3a--grid-cols-1 w3a--gap-y-2 w3a--overflow-y-auto w3a--px-1",
104
+ className: "w3a--social-container w3a--grid w3a--h-[300px] w3a--w-full w3a--auto-rows-min w3a--grid-cols-1 w3a--gap-y-2 w3a--overflow-y-auto w3a--pl-2 w3a--pr-3",
124
105
  children: otherRow.map(row => jsxRuntime.jsx("div", {
125
- className: "w3a--h-[50px] w3a--w-full",
106
+ className: "w3a--h-11 w3a--w-full",
126
107
  children: jsxRuntime.jsx(Button, {
127
108
  type: Button_type.BUTTON_TYPE.SOCIAL,
128
109
  props: {
@@ -133,7 +114,7 @@ function SocialLoginList(props) {
133
114
  connector: row.connector,
134
115
  loginParams: row.loginParams
135
116
  }),
136
- btnStyle: "w3a--flex w3a--items-center !w3a--justify-start w3a--w-full w3a--h-full w3a-arrow w3a-img-login-group",
117
+ btnStyle: "w3a--group w3a--relative w3a--overflow-hidden w3a--flex w3a--items-center !w3a--justify-start w3a--w-full w3a--h-11",
137
118
  buttonRadius,
138
119
  children: jsxRuntime.jsxs(jsxRuntime.Fragment, {
139
120
  children: [getProviderIcon(row.method, isDark, ".svg"), jsxRuntime.jsx("p", {
@@ -141,8 +122,8 @@ function SocialLoginList(props) {
141
122
  children: row.name
142
123
  }), jsxRuntime.jsx("img", {
143
124
  id: "login-arrow",
144
- className: "w3a--icon-animation w3a--ml-auto",
145
- src: utils.getIcons(props.isDark ? "chevron-right-dark" : "chevron-right-light"),
125
+ className: "w3a--absolute w3a--right-4 w3a--top-1/2 -w3a--translate-x-10 -w3a--translate-y-1/2 w3a--opacity-0 w3a--transition-all w3a--duration-300\n group-hover:w3a--translate-x-0 group-hover:w3a--opacity-100",
126
+ src: utils.getIcons(isDark ? "chevron-right-dark" : "chevron-right-light"),
146
127
  alt: "arrow"
147
128
  })]
148
129
  })