@web3auth/modal 9.5.4 → 10.0.0-alpha.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 (150) hide show
  1. package/dist/lib.cjs/node_modules/style-inject/dist/style-inject.es.js +28 -0
  2. package/dist/lib.cjs/{config.js → packages/modal/src/config.js} +14 -14
  3. package/dist/lib.cjs/{index.js → packages/modal/src/index.js} +7 -0
  4. package/dist/lib.cjs/{modalManager.js → packages/modal/src/modalManager.js} +92 -92
  5. package/dist/lib.cjs/packages/modal/src/react/Web3AuthProvider.js +15 -0
  6. package/dist/lib.cjs/packages/modal/src/react/context/Web3AuthInnerContext.js +225 -0
  7. package/dist/lib.cjs/packages/modal/src/react/hooks/useWeb3Auth.js +15 -0
  8. package/dist/lib.cjs/packages/modal/src/react/index.js +12 -0
  9. package/dist/lib.cjs/packages/modal/src/ui/assets/arrow-left-dark.svg.js +7 -0
  10. package/dist/lib.cjs/packages/modal/src/ui/assets/arrow-left-light.svg.js +7 -0
  11. package/dist/lib.cjs/packages/modal/src/ui/assets/x-dark.svg.js +7 -0
  12. package/dist/lib.cjs/packages/modal/src/ui/assets/x-light.svg.js +7 -0
  13. package/dist/lib.cjs/packages/modal/src/ui/components/AdapterLoader.js +108 -0
  14. package/dist/lib.cjs/packages/modal/src/ui/components/Button/Button.js +34 -0
  15. package/dist/lib.cjs/packages/modal/src/ui/components/Button/styles.css.js +8 -0
  16. package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletButton.js +44 -0
  17. package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletConnect.js +67 -0
  18. package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletDetails.js +34 -0
  19. package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletHeader.js +46 -0
  20. package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletInstall.js +167 -0
  21. package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallets.js +273 -0
  22. package/dist/lib.cjs/packages/modal/src/ui/components/Footer.js +20 -0
  23. package/dist/lib.cjs/packages/modal/src/ui/components/Header.js +81 -0
  24. package/dist/lib.cjs/packages/modal/src/ui/components/Icon.js +73 -0
  25. package/dist/lib.cjs/packages/modal/src/ui/components/Image.js +51 -0
  26. package/dist/lib.cjs/packages/modal/src/ui/components/Loader.js +59 -0
  27. package/dist/lib.cjs/packages/modal/src/ui/components/Modal.js +244 -0
  28. package/dist/lib.cjs/packages/modal/src/ui/components/SelfCustodyViaWeb3Auth.js +30 -0
  29. package/dist/lib.cjs/packages/modal/src/ui/components/SocialLoginPasswordless.js +141 -0
  30. package/dist/lib.cjs/packages/modal/src/ui/components/SocialLogins.js +148 -0
  31. package/dist/lib.cjs/packages/modal/src/ui/components/WalletConnect.js +84 -0
  32. package/dist/lib.cjs/packages/modal/src/ui/config.js +17 -0
  33. package/dist/lib.cjs/packages/modal/src/ui/context/ThemeContext.js +9 -0
  34. package/dist/lib.cjs/packages/modal/src/ui/css/web3auth.css.js +8 -0
  35. package/dist/lib.cjs/packages/modal/src/ui/i18n/dutch.json.js +84 -0
  36. package/dist/lib.cjs/packages/modal/src/ui/i18n/english.json.js +84 -0
  37. package/dist/lib.cjs/packages/modal/src/ui/i18n/french.json.js +82 -0
  38. package/dist/lib.cjs/packages/modal/src/ui/i18n/german.json.js +84 -0
  39. package/dist/lib.cjs/packages/modal/src/ui/i18n/japanese.json.js +84 -0
  40. package/dist/lib.cjs/packages/modal/src/ui/i18n/korean.json.js +84 -0
  41. package/dist/lib.cjs/packages/modal/src/ui/i18n/mandarin.json.js +84 -0
  42. package/dist/lib.cjs/packages/modal/src/ui/i18n/portuguese.json.js +84 -0
  43. package/dist/lib.cjs/packages/modal/src/ui/i18n/spanish.json.js +84 -0
  44. package/dist/lib.cjs/packages/modal/src/ui/i18n/turkish.json.js +84 -0
  45. package/dist/lib.cjs/packages/modal/src/ui/interfaces.js +26 -0
  46. package/dist/lib.cjs/packages/modal/src/ui/localeImport.js +25 -0
  47. package/dist/lib.cjs/packages/modal/src/ui/loginModal.js +309 -0
  48. package/dist/lib.cjs/packages/modal/src/ui/utils.js +71 -0
  49. package/dist/lib.cjs/packages/modal/src/vue/Web3AuthProvider.js +234 -0
  50. package/dist/lib.cjs/packages/modal/src/vue/composables/useWeb3Auth.js +12 -0
  51. package/dist/lib.cjs/packages/modal/src/vue/index.js +9 -0
  52. package/dist/lib.esm/node_modules/style-inject/dist/style-inject.es.js +26 -0
  53. package/dist/lib.esm/{config.js → packages/modal/src/config.js} +1 -1
  54. package/dist/lib.esm/{index.js → packages/modal/src/index.js} +1 -0
  55. package/dist/lib.esm/{modalManager.js → packages/modal/src/modalManager.js} +5 -5
  56. package/dist/lib.esm/packages/modal/src/react/Web3AuthProvider.js +13 -0
  57. package/dist/lib.esm/packages/modal/src/react/context/Web3AuthInnerContext.js +222 -0
  58. package/dist/lib.esm/packages/modal/src/react/hooks/useWeb3Auth.js +13 -0
  59. package/dist/lib.esm/packages/modal/src/react/index.js +3 -0
  60. package/dist/lib.esm/packages/modal/src/ui/assets/arrow-left-dark.svg.js +5 -0
  61. package/dist/lib.esm/packages/modal/src/ui/assets/arrow-left-light.svg.js +5 -0
  62. package/dist/lib.esm/packages/modal/src/ui/assets/x-dark.svg.js +5 -0
  63. package/dist/lib.esm/packages/modal/src/ui/assets/x-light.svg.js +5 -0
  64. package/dist/lib.esm/packages/modal/src/ui/components/AdapterLoader.js +106 -0
  65. package/dist/lib.esm/packages/modal/src/ui/components/Button/Button.js +32 -0
  66. package/dist/lib.esm/packages/modal/src/ui/components/Button/styles.css.js +6 -0
  67. package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletButton.js +42 -0
  68. package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletConnect.js +65 -0
  69. package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletDetails.js +32 -0
  70. package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletHeader.js +44 -0
  71. package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletInstall.js +165 -0
  72. package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallets.js +271 -0
  73. package/dist/lib.esm/packages/modal/src/ui/components/Footer.js +18 -0
  74. package/dist/lib.esm/packages/modal/src/ui/components/Header.js +79 -0
  75. package/dist/lib.esm/packages/modal/src/ui/components/Icon.js +71 -0
  76. package/dist/lib.esm/packages/modal/src/ui/components/Image.js +49 -0
  77. package/dist/lib.esm/packages/modal/src/ui/components/Loader.js +57 -0
  78. package/dist/lib.esm/packages/modal/src/ui/components/Modal.js +242 -0
  79. package/dist/lib.esm/packages/modal/src/ui/components/SelfCustodyViaWeb3Auth.js +28 -0
  80. package/dist/lib.esm/packages/modal/src/ui/components/SocialLoginPasswordless.js +139 -0
  81. package/dist/lib.esm/packages/modal/src/ui/components/SocialLogins.js +146 -0
  82. package/dist/lib.esm/packages/modal/src/ui/components/WalletConnect.js +82 -0
  83. package/dist/lib.esm/packages/modal/src/ui/config.js +13 -0
  84. package/dist/lib.esm/packages/modal/src/ui/context/ThemeContext.js +7 -0
  85. package/dist/lib.esm/packages/modal/src/ui/css/web3auth.css.js +6 -0
  86. package/dist/lib.esm/packages/modal/src/ui/i18n/dutch.json.js +79 -0
  87. package/dist/lib.esm/packages/modal/src/ui/i18n/english.json.js +79 -0
  88. package/dist/lib.esm/packages/modal/src/ui/i18n/french.json.js +77 -0
  89. package/dist/lib.esm/packages/modal/src/ui/i18n/german.json.js +79 -0
  90. package/dist/lib.esm/packages/modal/src/ui/i18n/japanese.json.js +79 -0
  91. package/dist/lib.esm/packages/modal/src/ui/i18n/korean.json.js +79 -0
  92. package/dist/lib.esm/packages/modal/src/ui/i18n/mandarin.json.js +79 -0
  93. package/dist/lib.esm/packages/modal/src/ui/i18n/portuguese.json.js +79 -0
  94. package/dist/lib.esm/packages/modal/src/ui/i18n/spanish.json.js +79 -0
  95. package/dist/lib.esm/packages/modal/src/ui/i18n/turkish.json.js +79 -0
  96. package/dist/lib.esm/packages/modal/src/ui/interfaces.js +20 -0
  97. package/dist/lib.esm/packages/modal/src/ui/localeImport.js +23 -0
  98. package/dist/lib.esm/packages/modal/src/ui/loginModal.js +307 -0
  99. package/dist/lib.esm/packages/modal/src/ui/utils.js +65 -0
  100. package/dist/lib.esm/packages/modal/src/vue/Web3AuthProvider.js +232 -0
  101. package/dist/lib.esm/packages/modal/src/vue/composables/useWeb3Auth.js +10 -0
  102. package/dist/lib.esm/packages/modal/src/vue/index.js +2 -0
  103. package/dist/modal.cjs.js +5703 -420
  104. package/dist/modal.umd.min.js +1 -1
  105. package/dist/modal.umd.min.js.LICENSE.txt +54 -0
  106. package/dist/types/index.d.ts +1 -0
  107. package/dist/types/interface.d.ts +1 -1
  108. package/dist/types/modalManager.d.ts +2 -3
  109. package/dist/types/react/Web3AuthProvider.d.ts +3 -0
  110. package/dist/types/react/context/Web3AuthInnerContext.d.ts +4 -0
  111. package/dist/types/react/context/index.d.ts +1 -0
  112. package/dist/types/react/hooks/index.d.ts +1 -0
  113. package/dist/types/react/hooks/useWeb3Auth.d.ts +2 -0
  114. package/dist/types/react/index.d.ts +4 -0
  115. package/dist/types/react/interfaces.d.ts +18 -0
  116. package/dist/types/ui/components/AdapterLoader.d.ts +11 -0
  117. package/dist/types/ui/components/Button/Button.d.ts +16 -0
  118. package/dist/types/ui/components/Button/index.d.ts +1 -0
  119. package/dist/types/ui/components/ExternalWallet/ExternalWalletButton.d.ts +7 -0
  120. package/dist/types/ui/components/ExternalWallet/ExternalWalletConnect.d.ts +9 -0
  121. package/dist/types/ui/components/ExternalWallet/ExternalWalletDetails.d.ts +9 -0
  122. package/dist/types/ui/components/ExternalWallet/ExternalWalletHeader.d.ts +8 -0
  123. package/dist/types/ui/components/ExternalWallet/ExternalWalletInstall.d.ts +8 -0
  124. package/dist/types/ui/components/ExternalWallets.d.ts +17 -0
  125. package/dist/types/ui/components/Footer.d.ts +1 -0
  126. package/dist/types/ui/components/Header.d.ts +8 -0
  127. package/dist/types/ui/components/Icon.d.ts +9 -0
  128. package/dist/types/ui/components/Image.d.ts +12 -0
  129. package/dist/types/ui/components/Loader.d.ts +10 -0
  130. package/dist/types/ui/components/Modal.d.ts +16 -0
  131. package/dist/types/ui/components/SelfCustodyViaWeb3Auth.d.ts +1 -0
  132. package/dist/types/ui/components/SocialLoginPasswordless.d.ts +16 -0
  133. package/dist/types/ui/components/SocialLogins.d.ts +14 -0
  134. package/dist/types/ui/components/WalletConnect.d.ts +8 -0
  135. package/dist/types/ui/config.d.ts +4 -0
  136. package/dist/types/ui/context/ThemeContext.d.ts +3 -0
  137. package/dist/types/ui/helper/countryData.d.ts +7 -0
  138. package/dist/types/ui/i18n/index.d.ts +11 -0
  139. package/dist/types/ui/index.d.ts +4 -0
  140. package/dist/types/ui/interfaces.d.ts +106 -0
  141. package/dist/types/ui/localeImport.d.ts +3 -0
  142. package/dist/types/ui/loginModal.d.ts +27 -0
  143. package/dist/types/ui/utils.d.ts +12 -0
  144. package/dist/types/vue/Web3AuthProvider.d.ts +13 -0
  145. package/dist/types/vue/composables/index.d.ts +1 -0
  146. package/dist/types/vue/composables/useWeb3Auth.d.ts +2 -0
  147. package/dist/types/vue/index.d.ts +3 -0
  148. package/dist/types/vue/interfaces.d.ts +45 -0
  149. package/package.json +100 -43
  150. package/dist/modal.esm.js +0 -513
@@ -0,0 +1,167 @@
1
+ 'use strict';
2
+
3
+ var Bowser = require('bowser');
4
+ var React = require('react');
5
+ var reactI18next = require('react-i18next');
6
+ var localeImport = require('../../localeImport.js');
7
+ var Button = require('../Button/Button.js');
8
+ var Image = require('../Image.js');
9
+ var ExternalWalletHeader = require('./ExternalWalletHeader.js');
10
+ var jsxRuntime = require('react/jsx-runtime');
11
+
12
+ const getBrowserExtensionUrl = (browserType, walletId) => {
13
+ if (walletId !== null && walletId !== void 0 && walletId.startsWith("https://")) return walletId;
14
+ switch (browserType) {
15
+ case "chrome":
16
+ return `https://chrome.google.com/webstore/detail/${walletId}`;
17
+ case "firefox":
18
+ return `https://addons.mozilla.org/firefox/addon/${walletId}`;
19
+ case "edge":
20
+ return `https://microsoftedge.microsoft.com/addons/detail/${walletId}`;
21
+ default:
22
+ return null;
23
+ }
24
+ };
25
+ const getMobileInstallLink = (os, appId) => {
26
+ if (appId !== null && appId !== void 0 && appId.includes("https://")) {
27
+ return appId;
28
+ }
29
+ switch (os) {
30
+ case "android":
31
+ return `https://play.google.com/store/apps/details?id=${appId}`;
32
+ case "ios":
33
+ return `https://apps.apple.com/app/safepal-wallet/${appId}`;
34
+ default:
35
+ return "";
36
+ }
37
+ };
38
+ const getOsName = os => {
39
+ switch (os) {
40
+ case "ios":
41
+ return "iOS";
42
+ case "android":
43
+ return "Android";
44
+ default:
45
+ return "";
46
+ }
47
+ };
48
+ const getBrowserName = browser => {
49
+ return browser.charAt(0).toUpperCase() + browser.slice(1);
50
+ };
51
+ function ExternalWalletInstall(props) {
52
+ const {
53
+ connectButton,
54
+ goBack,
55
+ closeModal
56
+ } = props;
57
+ const [t] = reactI18next.useTranslation(undefined, {
58
+ i18n: localeImport
59
+ });
60
+ const deviceDetails = React.useMemo(() => {
61
+ const browser = Bowser.getParser(window.navigator.userAgent);
62
+ return {
63
+ platform: browser.getPlatformType(),
64
+ browser: browser.getBrowserName().toLowerCase(),
65
+ os: browser.getOSName()
66
+ };
67
+ }, []);
68
+ const mobileInstallLinks = () => {
69
+ const installConfig = connectButton.walletRegistryItem.app || {};
70
+ const installLinks = Object.keys(installConfig).reduce((acc, os) => {
71
+ if (!["android", "ios"].includes(os)) return acc;
72
+ const appId = installConfig[os];
73
+ if (!appId) return acc;
74
+ const appUrl = getMobileInstallLink(os, appId);
75
+ if (!appUrl) return acc;
76
+ const logoLight = `${os}-light`;
77
+ const logoDark = `${os}-dark`;
78
+ acc.push(/*#__PURE__*/jsxRuntime.jsx("li", {
79
+ className: "w3a--w-full",
80
+ children: /*#__PURE__*/jsxRuntime.jsx("a", {
81
+ href: appUrl,
82
+ rel: "noopener noreferrer",
83
+ target: "_blank",
84
+ children: /*#__PURE__*/jsxRuntime.jsxs(Button, {
85
+ type: "button",
86
+ variant: "tertiary",
87
+ className: "w3a--w-full !w3a--justify-start w3a--flex w3a--items-center w3a--gap-2 wallet-link-btn",
88
+ children: [/*#__PURE__*/jsxRuntime.jsx(Image, {
89
+ imageId: logoLight,
90
+ darkImageId: logoDark,
91
+ hoverImageId: logoLight,
92
+ darkHoverImageId: logoDark,
93
+ height: "28",
94
+ width: "28",
95
+ isButton: true
96
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
97
+ className: "w3a--text-sm w3a--font-medium",
98
+ children: t("modal.external.install-mobile-app", {
99
+ os: getOsName(os)
100
+ })
101
+ })]
102
+ })
103
+ })
104
+ }, os));
105
+ return acc;
106
+ }, []);
107
+ return installLinks;
108
+ };
109
+ const desktopInstallLinks = () => {
110
+ // if browser is brave, use chrome extension
111
+ const browserType = deviceDetails.browser === "brave" ? "chrome" : deviceDetails.browser;
112
+ const browserExtensionConfig = connectButton.walletRegistryItem.app || {};
113
+ const extensionForCurrentBrowser = browserExtensionConfig.browser && browserExtensionConfig.browser.includes(browserType) ? browserExtensionConfig.browser : undefined;
114
+ const browserExtensionId = browserExtensionConfig[browserType] || extensionForCurrentBrowser;
115
+ const browserExtensionUrl = browserExtensionId ? getBrowserExtensionUrl(browserType, browserExtensionId) : null;
116
+ const installLink = browserExtensionUrl ? /*#__PURE__*/jsxRuntime.jsx("li", {
117
+ children: /*#__PURE__*/jsxRuntime.jsx("a", {
118
+ href: browserExtensionUrl,
119
+ rel: "noopener noreferrer",
120
+ target: "_blank",
121
+ children: /*#__PURE__*/jsxRuntime.jsxs(Button, {
122
+ type: "button",
123
+ variant: "tertiary",
124
+ className: "w3a--w-full !w3a--justify-start w3a--flex w3a--items-center w3a--gap-2 wallet-link-btn",
125
+ children: [/*#__PURE__*/jsxRuntime.jsx(Image, {
126
+ imageId: deviceDetails.browser,
127
+ darkImageId: deviceDetails.browser,
128
+ hoverImageId: deviceDetails.browser,
129
+ darkHoverImageId: deviceDetails.browser,
130
+ height: "30",
131
+ width: "30",
132
+ isButton: true
133
+ }), /*#__PURE__*/jsxRuntime.jsx("span", {
134
+ className: "w3a--text-sm w3a--font-medium",
135
+ children: t("modal.external.install-browser-extension", {
136
+ browser: getBrowserName(deviceDetails.browser)
137
+ })
138
+ })]
139
+ })
140
+ })
141
+ }, deviceDetails.browser) : null;
142
+ return [installLink, ...mobileInstallLinks()];
143
+ };
144
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
145
+ children: [/*#__PURE__*/jsxRuntime.jsx(ExternalWalletHeader, {
146
+ title: `${t("modal.external.get")} ${connectButton.displayName}`,
147
+ goBack: goBack,
148
+ closeModal: closeModal
149
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
150
+ className: "w3a--flex w3a--justify-center w3a--my-6",
151
+ children: /*#__PURE__*/jsxRuntime.jsx(Image, {
152
+ imageId: `login-${connectButton.name}`,
153
+ hoverImageId: `login-${connectButton.name}`,
154
+ fallbackImageId: "wallet",
155
+ height: "100",
156
+ width: "100",
157
+ isButton: true,
158
+ extension: connectButton.imgExtension
159
+ })
160
+ }), /*#__PURE__*/jsxRuntime.jsx("ul", {
161
+ className: "w3a--flex w3a--flex-col w3a--gap-3",
162
+ children: deviceDetails.platform === "desktop" ? desktopInstallLinks() : mobileInstallLinks()
163
+ })]
164
+ });
165
+ }
166
+
167
+ module.exports = ExternalWalletInstall;
@@ -0,0 +1,273 @@
1
+ 'use strict';
2
+
3
+ var noModal = require('@web3auth/no-modal');
4
+ var Bowser = require('bowser');
5
+ var React = require('react');
6
+ var reactI18next = require('react-i18next');
7
+ var interfaces = require('../interfaces.js');
8
+ var localeImport = require('../localeImport.js');
9
+ var ExternalWalletButton = require('./ExternalWallet/ExternalWalletButton.js');
10
+ var ExternalWalletDetails = require('./ExternalWallet/ExternalWalletDetails.js');
11
+ var ExternalWalletHeader = require('./ExternalWallet/ExternalWalletHeader.js');
12
+ var Loader = require('./Loader.js');
13
+ var jsxRuntime = require('react/jsx-runtime');
14
+
15
+ function formatIOSMobile(params) {
16
+ const encodedUri = encodeURIComponent(params.uri);
17
+ if (params.link.startsWith("http")) return `${params.link}/wc?uri=${encodedUri}`;
18
+ if (params.link) return `${params.link}wc?uri=${encodedUri}`;
19
+ return "";
20
+ }
21
+ function ExternalWallet(props) {
22
+ const {
23
+ hideExternalWallets,
24
+ handleExternalWalletClick,
25
+ closeModal,
26
+ config = {},
27
+ walletConnectUri,
28
+ showBackButton,
29
+ modalStatus,
30
+ chainNamespace,
31
+ walletRegistry
32
+ } = props;
33
+ const [externalButtons, setExternalButtons] = React.useState([]);
34
+ const [totalExternalWallets, setTotalExternalWallets] = React.useState(0);
35
+ const [selectedButton, setSelectedButton] = React.useState(null);
36
+ const [walletSearch, setWalletSearch] = React.useState("");
37
+ const [t] = reactI18next.useTranslation(undefined, {
38
+ i18n: localeImport
39
+ });
40
+ const walletDiscoverySupported = React.useMemo(() => {
41
+ const supported = walletRegistry && Object.keys(walletRegistry.default).length > 0 && Object.keys(walletRegistry.others).length > 0;
42
+ return supported;
43
+ }, [walletRegistry]);
44
+ const deviceDetails = React.useMemo(() => {
45
+ const browser = Bowser.getParser(window.navigator.userAgent);
46
+ return {
47
+ platform: browser.getPlatformType(),
48
+ os: browser.getOSName(),
49
+ browser: browser.getBrowserName().toLowerCase()
50
+ };
51
+ }, []);
52
+ const handleWalletSearch = e => {
53
+ setWalletSearch(e.target.value);
54
+ };
55
+ const adapterVisibilityMap = React.useMemo(() => {
56
+ const canShowMap = {};
57
+ Object.keys(config).forEach(adapter => {
58
+ const adapterConfig = config[adapter];
59
+ if (!adapterConfig.showOnModal) {
60
+ canShowMap[adapter] = false;
61
+ return;
62
+ }
63
+ if (deviceDetails.platform === "desktop" && adapterConfig.showOnDesktop) {
64
+ canShowMap[adapter] = true;
65
+ return;
66
+ }
67
+ if ((deviceDetails.platform === "mobile" || deviceDetails.platform === "tablet") && adapterConfig.showOnMobile) {
68
+ canShowMap[adapter] = true;
69
+ return;
70
+ }
71
+ canShowMap[adapter] = false;
72
+ });
73
+ noModal.log.debug("adapter visibility map", canShowMap);
74
+ return canShowMap;
75
+ }, [config, deviceDetails.platform]);
76
+ React.useEffect(() => {
77
+ var _config$WALLET_ADAPTE;
78
+ noModal.log.debug("loaded external wallets", config, walletConnectUri);
79
+ const wcAvailable = (((_config$WALLET_ADAPTE = config[noModal.WALLET_ADAPTERS.WALLET_CONNECT_V2]) === null || _config$WALLET_ADAPTE === void 0 ? void 0 : _config$WALLET_ADAPTE.showOnModal) || false) !== false;
80
+ if (wcAvailable && !walletConnectUri) {
81
+ handleExternalWalletClick({
82
+ adapter: noModal.WALLET_ADAPTERS.WALLET_CONNECT_V2
83
+ });
84
+ }
85
+ }, [config, handleExternalWalletClick, walletConnectUri]);
86
+ React.useEffect(() => {
87
+ if (walletDiscoverySupported) {
88
+ const isWalletConnectAdapterIncluded = Object.keys(config).some(adapter => adapter === noModal.WALLET_ADAPTERS.WALLET_CONNECT_V2);
89
+ const defaultButtonKeys = new Set(Object.keys(walletRegistry.default));
90
+ const generateWalletButtons = wallets => {
91
+ return Object.keys(wallets).reduce((acc, wallet) => {
92
+ var _config$wallet, _walletRegistryItem$w, _walletRegistryItem$c, _walletRegistryItem$i;
93
+ if (adapterVisibilityMap[wallet] === false) return acc;
94
+ const walletRegistryItem = wallets[wallet];
95
+ let href = "";
96
+ if (deviceDetails.platform === Bowser.PLATFORMS_MAP.mobile) {
97
+ var _walletRegistryItem$m, _walletRegistryItem$m2;
98
+ const universalLink = walletRegistryItem === null || walletRegistryItem === void 0 || (_walletRegistryItem$m = walletRegistryItem.mobile) === null || _walletRegistryItem$m === void 0 ? void 0 : _walletRegistryItem$m.universal;
99
+ const deepLink = walletRegistryItem === null || walletRegistryItem === void 0 || (_walletRegistryItem$m2 = walletRegistryItem.mobile) === null || _walletRegistryItem$m2 === void 0 ? void 0 : _walletRegistryItem$m2.native;
100
+ href = universalLink || deepLink;
101
+ }
102
+ const button = {
103
+ name: wallet,
104
+ displayName: walletRegistryItem.name,
105
+ href,
106
+ hasInjectedWallet: ((_config$wallet = config[wallet]) === null || _config$wallet === void 0 ? void 0 : _config$wallet.isInjected) || false,
107
+ hasWalletConnect: isWalletConnectAdapterIncluded && ((_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")),
108
+ hasInstallLinks: Object.keys(walletRegistryItem.app || {}).length > 0,
109
+ walletRegistryItem,
110
+ imgExtension: walletRegistryItem.imgExtension || "svg"
111
+ };
112
+ // const isBrowserExtensionAvailable = walletRegistryItem.app?.chrome || walletRegistryItem.app?.firefox || walletRegistryItem.app?.edge;
113
+ if (!button.hasInjectedWallet && !button.hasWalletConnect && !button.hasInstallLinks) return acc;
114
+ const chainNamespaces = new Set((_walletRegistryItem$c = walletRegistryItem.chains) === null || _walletRegistryItem$c === void 0 ? void 0 : _walletRegistryItem$c.map(chain => chain.split(":")[0]));
115
+ const injectedChainNamespaces = new Set((_walletRegistryItem$i = walletRegistryItem.injected) === null || _walletRegistryItem$i === void 0 ? void 0 : _walletRegistryItem$i.map(injected => injected.namespace));
116
+ if (!chainNamespaces.has(chainNamespace) && !injectedChainNamespaces.has(chainNamespace)) return acc;
117
+ acc.push(button);
118
+ return acc;
119
+ }, []);
120
+ };
121
+
122
+ // Generate buttons for default and other wallets
123
+ const defaultButtons = generateWalletButtons(walletRegistry.default);
124
+ const otherButtons = generateWalletButtons(walletRegistry.others);
125
+
126
+ // Generate custom adapter buttons
127
+ const customAdapterButtons = Object.keys(config).reduce((acc, adapter) => {
128
+ if (![noModal.WALLET_ADAPTERS.WALLET_CONNECT_V2].includes(adapter) && !config[adapter].isInjected && adapterVisibilityMap[adapter]) {
129
+ noModal.log.debug("custom adapter", adapter, config[adapter]);
130
+ acc.push({
131
+ name: adapter,
132
+ displayName: config[adapter].label || adapter,
133
+ hasInjectedWallet: false,
134
+ hasWalletConnect: false,
135
+ hasInstallLinks: false
136
+ });
137
+ }
138
+ return acc;
139
+ }, []);
140
+ const allButtons = [...defaultButtons, ...otherButtons];
141
+
142
+ // Filter and set external buttons based on search input
143
+ if (walletSearch) {
144
+ const filteredList = allButtons.concat(customAdapterButtons).filter(button => button.name.toLowerCase().includes(walletSearch.toLowerCase()));
145
+ noModal.log.debug("filteredLists", filteredList);
146
+ setExternalButtons(filteredList);
147
+ } else {
148
+ const sortedButtons = [...allButtons.filter(button => button.hasInjectedWallet && defaultButtonKeys.has(button.name)), ...customAdapterButtons, ...allButtons.filter(button => !button.hasInjectedWallet && defaultButtonKeys.has(button.name))];
149
+ setExternalButtons(sortedButtons);
150
+ }
151
+ setTotalExternalWallets(allButtons.length + customAdapterButtons.length);
152
+ noModal.log.debug("external buttons", allButtons);
153
+ } else {
154
+ const buttons = Object.keys(config).reduce((acc, adapter) => {
155
+ noModal.log.debug("external buttons", adapter, adapterVisibilityMap[adapter]);
156
+ if (![noModal.WALLET_ADAPTERS.WALLET_CONNECT_V2].includes(adapter) && adapterVisibilityMap[adapter]) {
157
+ acc.push({
158
+ name: adapter,
159
+ displayName: config[adapter].label || adapter,
160
+ hasInjectedWallet: config[adapter].isInjected,
161
+ hasWalletConnect: false,
162
+ hasInstallLinks: false
163
+ });
164
+ }
165
+ return acc;
166
+ }, []);
167
+ setExternalButtons(buttons);
168
+ setTotalExternalWallets(buttons.length);
169
+ }
170
+ }, [config, deviceDetails, adapterVisibilityMap, walletRegistry, walletSearch, chainNamespace, walletDiscoverySupported]);
171
+ const handleWalletClick = button => {
172
+ // if has injected wallet, connect to injected wallet
173
+ // if doesn't have wallet connect & doesn't have install links, must be a custom adapter
174
+ if (button.hasInjectedWallet || !button.hasWalletConnect && !button.hasInstallLinks) {
175
+ handleExternalWalletClick({
176
+ adapter: button.name
177
+ });
178
+ } else {
179
+ // else, show wallet detail
180
+ setSelectedButton(button);
181
+ }
182
+ };
183
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
184
+ className: `w3ajs-external-wallet w3a-group ${totalExternalWallets === 0 ? "w3a-group-loader-height" : ""}`,
185
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
186
+ className: "w3a-external-container w3ajs-external-container",
187
+ children: totalExternalWallets === 0 ? /*#__PURE__*/jsxRuntime.jsx(Loader, {
188
+ modalStatus: interfaces.MODAL_STATUS.CONNECTING,
189
+ canEmit: false
190
+ }) : modalStatus === interfaces.MODAL_STATUS.INITIALIZED && (
191
+ // All wallets
192
+ !selectedButton ? /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
193
+ children: [/*#__PURE__*/jsxRuntime.jsx(ExternalWalletHeader, {
194
+ disableBackButton: !showBackButton,
195
+ title: t("modal.external.connect-wallet"),
196
+ goBack: hideExternalWallets,
197
+ closeModal: closeModal
198
+ }), totalExternalWallets > 15 && /*#__PURE__*/jsxRuntime.jsx("div", {
199
+ className: "w3a--py-4",
200
+ children: /*#__PURE__*/jsxRuntime.jsx("input", {
201
+ className: "w3a--w-full w3a-text-field",
202
+ name: "passwordless-input",
203
+ required: true,
204
+ value: walletSearch,
205
+ placeholder: t("modal.external.search-wallet", {
206
+ count: totalExternalWallets
207
+ }),
208
+ onFocus: e => {
209
+ e.target.placeholder = "";
210
+ },
211
+ onBlur: e => {
212
+ e.target.placeholder = t("modal.external.search-wallet", {
213
+ count: totalExternalWallets
214
+ });
215
+ },
216
+ onChange: e => handleWalletSearch(e)
217
+ })
218
+ }), externalButtons.length === 0 ? /*#__PURE__*/jsxRuntime.jsx("div", {
219
+ className: "w3a--w-full w3a--text-center w3a--text-app-gray-400 dark:w3a--text-app-gray-500 w3a--py-6 w3a--flex w3a--justify-center w3a--items-center",
220
+ children: t("modal.external.no-wallets-found")
221
+ }) : /*#__PURE__*/jsxRuntime.jsx("div", {
222
+ className: `w3a-adapter-list-container ${totalExternalWallets < 15 ? "w3a--py-4" : ""}`,
223
+ children: /*#__PURE__*/jsxRuntime.jsxs("ul", {
224
+ className: "w3a-adapter-list w3ajs-wallet-adapters",
225
+ children: [externalButtons.map(button => {
226
+ return /*#__PURE__*/jsxRuntime.jsxs("li", {
227
+ className: "w3a-adapter-item w3a-adapter-item--full",
228
+ children: [deviceDetails.platform === "desktop" && /*#__PURE__*/jsxRuntime.jsx(ExternalWalletButton, {
229
+ button: button,
230
+ handleWalletClick: handleWalletClick
231
+ }), deviceDetails.platform !== "desktop" && (button.href && button.hasWalletConnect && !button.hasInjectedWallet ? /*#__PURE__*/jsxRuntime.jsx("a", {
232
+ href: button.href ? formatIOSMobile({
233
+ uri: walletConnectUri,
234
+ link: button.href
235
+ }) : walletConnectUri,
236
+ target: "_blank",
237
+ className: "w3a--w-full",
238
+ rel: "noreferrer noopener",
239
+ children: /*#__PURE__*/jsxRuntime.jsx(ExternalWalletButton, {
240
+ button: button,
241
+ handleWalletClick: handleWalletClick
242
+ })
243
+ }) : /*#__PURE__*/jsxRuntime.jsx(ExternalWalletButton, {
244
+ button: button,
245
+ handleWalletClick: handleWalletClick
246
+ }))]
247
+ }, button.name + button.displayName);
248
+ }), totalExternalWallets > 10 && !walletSearch && /*#__PURE__*/jsxRuntime.jsxs("li", {
249
+ className: "w3a--flex w3a--flex-col w3a--items-center w3a--justify-center w3a--gap-y-0.5 w3a--my-4 w3a--w-full w3a--mx-auto w3a-adapter-item--full",
250
+ children: [/*#__PURE__*/jsxRuntime.jsx("p", {
251
+ className: "w3a--text-xs w3a--text-app-gray-500 dark:w3a--text-app-gray-400",
252
+ children: t("modal.external.search-text")
253
+ }), /*#__PURE__*/jsxRuntime.jsx("p", {
254
+ className: "w3a--text-xs w3a--font-medium w3a--text-app-gray-900 dark:w3a--text-app-white",
255
+ children: t("modal.external.search-subtext")
256
+ })]
257
+ })]
258
+ })
259
+ })]
260
+ }) :
261
+ /*#__PURE__*/
262
+ // Wallet Detail
263
+ jsxRuntime.jsx(ExternalWalletDetails, {
264
+ connectButton: selectedButton,
265
+ goBack: () => setSelectedButton(null),
266
+ walletConnectUri: walletConnectUri,
267
+ closeModal: closeModal
268
+ }))
269
+ })
270
+ });
271
+ }
272
+
273
+ module.exports = ExternalWallet;
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var SelfCustodyViaWeb3Auth = require('./SelfCustodyViaWeb3Auth.js');
4
+ var jsxRuntime = require('react/jsx-runtime');
5
+
6
+ function Footer() {
7
+ return /*#__PURE__*/jsxRuntime.jsx("div", {
8
+ className: "w3a-modal__footer",
9
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
10
+ className: "w3a-footer",
11
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
12
+ children: /*#__PURE__*/jsxRuntime.jsx("div", {
13
+ children: /*#__PURE__*/jsxRuntime.jsx(SelfCustodyViaWeb3Auth, {})
14
+ })
15
+ })
16
+ })
17
+ });
18
+ }
19
+
20
+ module.exports = Footer;
@@ -0,0 +1,81 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var reactI18next = require('react-i18next');
5
+ var interfaces = require('../interfaces.js');
6
+ var localeImport = require('../localeImport.js');
7
+ var Icon = require('./Icon.js');
8
+ var jsxRuntime = require('react/jsx-runtime');
9
+
10
+ function Header(props) {
11
+ const {
12
+ onClose,
13
+ appLogo,
14
+ appName
15
+ } = props;
16
+ const [t] = reactI18next.useTranslation(undefined, {
17
+ i18n: localeImport
18
+ });
19
+ const headerLogo = [interfaces.DEFAULT_LOGO_DARK, interfaces.DEFAULT_LOGO_LIGHT].includes(appLogo) ? "" : appLogo;
20
+ const subtitle = t("modal.header-subtitle-name", {
21
+ appName
22
+ });
23
+ return /*#__PURE__*/jsxRuntime.jsxs("div", {
24
+ className: "w3a-modal__header",
25
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
26
+ className: "w3a-header",
27
+ children: /*#__PURE__*/jsxRuntime.jsxs("div", {
28
+ children: [headerLogo && /*#__PURE__*/jsxRuntime.jsx("div", {
29
+ className: "w3a-header__logo",
30
+ children: /*#__PURE__*/jsxRuntime.jsx("img", {
31
+ src: headerLogo,
32
+ alt: ""
33
+ })
34
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
35
+ className: "w3a-header__title",
36
+ children: t("modal.header-title")
37
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
38
+ className: "w3a-header__subtitle",
39
+ children: [subtitle, /*#__PURE__*/jsxRuntime.jsxs("div", {
40
+ className: "w3a--relative w3a--flex w3a--flex-col w3a--items-center w3a--group w3a--cursor-pointer",
41
+ children: [/*#__PURE__*/jsxRuntime.jsx(Icon, {
42
+ iconName: "information-circle-light",
43
+ darkIconName: "information-circle"
44
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
45
+ className: "w3a--absolute w3a--top-4 w3a--z-20 w3a--flex-col w3a--items-center w3a--hidden w3a--mb-5 group-hover:w3a--flex",
46
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
47
+ className: "w3a--w-3 w3a--h-3 w3a--ml-[3px] -w3a--mb-2 w3a--rotate-45 w3a--bg-app-gray-50 dark:w3a--bg-app-gray-600"
48
+ }), /*#__PURE__*/jsxRuntime.jsxs("div", {
49
+ className: `w3a--relative w3a--p-4 w3a--w-[270px] w3a--translate-x-[-16px] w3a--text-xs w3a--leading-none w3a--text-app-white w3a--rounded-md w3a--bg-app-gray-50 dark:w3a--bg-app-gray-600 w3a--shadow-lg ${subtitle.length > 34 ? "-w3a--ml-[100px]" : ""}`,
50
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
51
+ className: "w3a--text-xs w3a--font-medium w3a--mb-1 w3a--text-app-gray-900 dark:w3a--text-app-white",
52
+ children: t("modal.header-tooltip-title")
53
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
54
+ className: "w3a--text-xs w3a--text-app-gray-400",
55
+ children: t("modal.header-tooltip-desc")
56
+ })]
57
+ })]
58
+ })]
59
+ })]
60
+ })]
61
+ })
62
+ }), /*#__PURE__*/jsxRuntime.jsx("button", {
63
+ type: "button",
64
+ onClick: onClose,
65
+ className: "w3a-header__button w3ajs-close-btn ",
66
+ children: /*#__PURE__*/jsxRuntime.jsx(Icon, {
67
+ iconName: "x-light",
68
+ darkIconName: "x-dark"
69
+ })
70
+ })]
71
+ });
72
+ }
73
+ const memoizedHeader = /*#__PURE__*/React.memo(Header, (prevProps, nextProps) => {
74
+ if (prevProps.appLogo !== nextProps.appLogo) {
75
+ return true;
76
+ }
77
+ return false;
78
+ });
79
+ memoizedHeader.displayName = "Header";
80
+
81
+ module.exports = memoizedHeader;
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ var arrowLeftDark = require('../assets/arrow-left-dark.svg.js');
4
+ var arrowLeftLight = require('../assets/arrow-left-light.svg.js');
5
+ var xDark = require('../assets/x-dark.svg.js');
6
+ var xLight = require('../assets/x-light.svg.js');
7
+ var jsxRuntime = require('react/jsx-runtime');
8
+
9
+ const icons = {
10
+ "arrow-left": {
11
+ image: "https://images.web3auth.io/circle-arrow-left.svg"
12
+ },
13
+ close: {
14
+ image: "https://images.web3auth.io/close.svg"
15
+ },
16
+ "expand-light": {
17
+ image: "https://images.web3auth.io/expand-light.svg"
18
+ },
19
+ expand: {
20
+ image: "https://images.web3auth.io/expand.svg"
21
+ },
22
+ connected: {
23
+ image: "https://images.web3auth.io/connected.svg"
24
+ },
25
+ "information-circle-light": {
26
+ image: "https://images.web3auth.io/information-circle-light.svg"
27
+ },
28
+ "information-circle": {
29
+ image: "https://images.web3auth.io/information-circle.svg"
30
+ },
31
+ "arrow-left-light": {
32
+ image: arrowLeftLight
33
+ },
34
+ "x-light": {
35
+ image: xLight
36
+ },
37
+ "arrow-left-dark": {
38
+ image: arrowLeftDark
39
+ },
40
+ "x-dark": {
41
+ image: xDark
42
+ }
43
+ };
44
+ function Icon(props) {
45
+ const {
46
+ iconName,
47
+ iconTitle = "",
48
+ height = "auto",
49
+ width = "auto",
50
+ darkIconName = ""
51
+ } = props;
52
+ const h = height === "auto" ? "w3a--h-auto" : `w3a--h-[${height}px]`;
53
+ const w = width === "auto" ? "w3a--w-auto" : `w3a--w-[${width}px]`;
54
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
55
+ children: [icons[iconName] && /*#__PURE__*/jsxRuntime.jsx("img", {
56
+ className: `${iconTitle ? "w3a--cursor-pointer" : ""} dark:w3a--hidden w3a--block ${h} ${w}`,
57
+ height: height,
58
+ width: width,
59
+ src: icons[iconName].image,
60
+ alt: iconName,
61
+ title: iconTitle
62
+ }), icons[darkIconName] && /*#__PURE__*/jsxRuntime.jsx("img", {
63
+ className: `${iconTitle ? "w3a--cursor-pointer" : ""} w3a--hidden dark:w3a--block ${h} ${w}`,
64
+ height: height,
65
+ width: width,
66
+ src: icons[darkIconName].image,
67
+ alt: darkIconName,
68
+ title: iconTitle
69
+ })]
70
+ });
71
+ }
72
+
73
+ module.exports = Icon;
@@ -0,0 +1,51 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var ThemeContext = require('../context/ThemeContext.js');
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ function Image(props) {
8
+ const {
9
+ hoverImageId,
10
+ darkHoverImageId,
11
+ imageId,
12
+ darkImageId,
13
+ isButton = false,
14
+ height = "auto",
15
+ width = "auto",
16
+ fallbackImageId,
17
+ extension = "svg"
18
+ } = props;
19
+ const {
20
+ isDark
21
+ } = React.useContext(ThemeContext.ThemedContext);
22
+ const imgName = isDark && darkImageId ? darkImageId : imageId;
23
+ const hoverImgName = isDark && darkHoverImageId ? darkHoverImageId : hoverImageId;
24
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
25
+ children: [/*#__PURE__*/jsxRuntime.jsx("img", {
26
+ src: `https://images.web3auth.io/${imgName}.${extension}`,
27
+ height: height,
28
+ width: width,
29
+ alt: imageId,
30
+ className: "image-icon w3a--object-contain w3a--rounded",
31
+ onError: ({
32
+ currentTarget
33
+ }) => {
34
+ if (fallbackImageId) {
35
+ // eslint-disable-next-line no-param-reassign
36
+ currentTarget.onerror = null; // prevents looping
37
+ // eslint-disable-next-line no-param-reassign
38
+ currentTarget.src = `https://images.web3auth.io/${fallbackImageId}.svg`;
39
+ }
40
+ }
41
+ }), isButton ? /*#__PURE__*/jsxRuntime.jsx("img", {
42
+ src: `https://images.web3auth.io/${hoverImgName}.${extension}`,
43
+ height: height,
44
+ width: width,
45
+ alt: hoverImageId,
46
+ className: "hover-icon w3a--object-contain w3a--rounded"
47
+ }) : null]
48
+ });
49
+ }
50
+
51
+ module.exports = Image;