@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.
- package/dist/lib.cjs/node_modules/style-inject/dist/style-inject.es.js +28 -0
- package/dist/lib.cjs/{config.js → packages/modal/src/config.js} +14 -14
- package/dist/lib.cjs/{index.js → packages/modal/src/index.js} +7 -0
- package/dist/lib.cjs/{modalManager.js → packages/modal/src/modalManager.js} +92 -92
- package/dist/lib.cjs/packages/modal/src/react/Web3AuthProvider.js +15 -0
- package/dist/lib.cjs/packages/modal/src/react/context/Web3AuthInnerContext.js +225 -0
- package/dist/lib.cjs/packages/modal/src/react/hooks/useWeb3Auth.js +15 -0
- package/dist/lib.cjs/packages/modal/src/react/index.js +12 -0
- package/dist/lib.cjs/packages/modal/src/ui/assets/arrow-left-dark.svg.js +7 -0
- package/dist/lib.cjs/packages/modal/src/ui/assets/arrow-left-light.svg.js +7 -0
- package/dist/lib.cjs/packages/modal/src/ui/assets/x-dark.svg.js +7 -0
- package/dist/lib.cjs/packages/modal/src/ui/assets/x-light.svg.js +7 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/AdapterLoader.js +108 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/Button/Button.js +34 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/Button/styles.css.js +8 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletButton.js +44 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletConnect.js +67 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletDetails.js +34 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletHeader.js +46 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallet/ExternalWalletInstall.js +167 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/ExternalWallets.js +273 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/Footer.js +20 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/Header.js +81 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/Icon.js +73 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/Image.js +51 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/Loader.js +59 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/Modal.js +244 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/SelfCustodyViaWeb3Auth.js +30 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/SocialLoginPasswordless.js +141 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/SocialLogins.js +148 -0
- package/dist/lib.cjs/packages/modal/src/ui/components/WalletConnect.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/config.js +17 -0
- package/dist/lib.cjs/packages/modal/src/ui/context/ThemeContext.js +9 -0
- package/dist/lib.cjs/packages/modal/src/ui/css/web3auth.css.js +8 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/dutch.json.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/english.json.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/french.json.js +82 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/german.json.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/japanese.json.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/korean.json.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/mandarin.json.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/portuguese.json.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/spanish.json.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/i18n/turkish.json.js +84 -0
- package/dist/lib.cjs/packages/modal/src/ui/interfaces.js +26 -0
- package/dist/lib.cjs/packages/modal/src/ui/localeImport.js +25 -0
- package/dist/lib.cjs/packages/modal/src/ui/loginModal.js +309 -0
- package/dist/lib.cjs/packages/modal/src/ui/utils.js +71 -0
- package/dist/lib.cjs/packages/modal/src/vue/Web3AuthProvider.js +234 -0
- package/dist/lib.cjs/packages/modal/src/vue/composables/useWeb3Auth.js +12 -0
- package/dist/lib.cjs/packages/modal/src/vue/index.js +9 -0
- package/dist/lib.esm/node_modules/style-inject/dist/style-inject.es.js +26 -0
- package/dist/lib.esm/{config.js → packages/modal/src/config.js} +1 -1
- package/dist/lib.esm/{index.js → packages/modal/src/index.js} +1 -0
- package/dist/lib.esm/{modalManager.js → packages/modal/src/modalManager.js} +5 -5
- package/dist/lib.esm/packages/modal/src/react/Web3AuthProvider.js +13 -0
- package/dist/lib.esm/packages/modal/src/react/context/Web3AuthInnerContext.js +222 -0
- package/dist/lib.esm/packages/modal/src/react/hooks/useWeb3Auth.js +13 -0
- package/dist/lib.esm/packages/modal/src/react/index.js +3 -0
- package/dist/lib.esm/packages/modal/src/ui/assets/arrow-left-dark.svg.js +5 -0
- package/dist/lib.esm/packages/modal/src/ui/assets/arrow-left-light.svg.js +5 -0
- package/dist/lib.esm/packages/modal/src/ui/assets/x-dark.svg.js +5 -0
- package/dist/lib.esm/packages/modal/src/ui/assets/x-light.svg.js +5 -0
- package/dist/lib.esm/packages/modal/src/ui/components/AdapterLoader.js +106 -0
- package/dist/lib.esm/packages/modal/src/ui/components/Button/Button.js +32 -0
- package/dist/lib.esm/packages/modal/src/ui/components/Button/styles.css.js +6 -0
- package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletButton.js +42 -0
- package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletConnect.js +65 -0
- package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletDetails.js +32 -0
- package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletHeader.js +44 -0
- package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallet/ExternalWalletInstall.js +165 -0
- package/dist/lib.esm/packages/modal/src/ui/components/ExternalWallets.js +271 -0
- package/dist/lib.esm/packages/modal/src/ui/components/Footer.js +18 -0
- package/dist/lib.esm/packages/modal/src/ui/components/Header.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/components/Icon.js +71 -0
- package/dist/lib.esm/packages/modal/src/ui/components/Image.js +49 -0
- package/dist/lib.esm/packages/modal/src/ui/components/Loader.js +57 -0
- package/dist/lib.esm/packages/modal/src/ui/components/Modal.js +242 -0
- package/dist/lib.esm/packages/modal/src/ui/components/SelfCustodyViaWeb3Auth.js +28 -0
- package/dist/lib.esm/packages/modal/src/ui/components/SocialLoginPasswordless.js +139 -0
- package/dist/lib.esm/packages/modal/src/ui/components/SocialLogins.js +146 -0
- package/dist/lib.esm/packages/modal/src/ui/components/WalletConnect.js +82 -0
- package/dist/lib.esm/packages/modal/src/ui/config.js +13 -0
- package/dist/lib.esm/packages/modal/src/ui/context/ThemeContext.js +7 -0
- package/dist/lib.esm/packages/modal/src/ui/css/web3auth.css.js +6 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/dutch.json.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/english.json.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/french.json.js +77 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/german.json.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/japanese.json.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/korean.json.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/mandarin.json.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/portuguese.json.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/spanish.json.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/i18n/turkish.json.js +79 -0
- package/dist/lib.esm/packages/modal/src/ui/interfaces.js +20 -0
- package/dist/lib.esm/packages/modal/src/ui/localeImport.js +23 -0
- package/dist/lib.esm/packages/modal/src/ui/loginModal.js +307 -0
- package/dist/lib.esm/packages/modal/src/ui/utils.js +65 -0
- package/dist/lib.esm/packages/modal/src/vue/Web3AuthProvider.js +232 -0
- package/dist/lib.esm/packages/modal/src/vue/composables/useWeb3Auth.js +10 -0
- package/dist/lib.esm/packages/modal/src/vue/index.js +2 -0
- package/dist/modal.cjs.js +5703 -420
- package/dist/modal.umd.min.js +1 -1
- package/dist/modal.umd.min.js.LICENSE.txt +54 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/interface.d.ts +1 -1
- package/dist/types/modalManager.d.ts +2 -3
- package/dist/types/react/Web3AuthProvider.d.ts +3 -0
- package/dist/types/react/context/Web3AuthInnerContext.d.ts +4 -0
- package/dist/types/react/context/index.d.ts +1 -0
- package/dist/types/react/hooks/index.d.ts +1 -0
- package/dist/types/react/hooks/useWeb3Auth.d.ts +2 -0
- package/dist/types/react/index.d.ts +4 -0
- package/dist/types/react/interfaces.d.ts +18 -0
- package/dist/types/ui/components/AdapterLoader.d.ts +11 -0
- package/dist/types/ui/components/Button/Button.d.ts +16 -0
- package/dist/types/ui/components/Button/index.d.ts +1 -0
- package/dist/types/ui/components/ExternalWallet/ExternalWalletButton.d.ts +7 -0
- package/dist/types/ui/components/ExternalWallet/ExternalWalletConnect.d.ts +9 -0
- package/dist/types/ui/components/ExternalWallet/ExternalWalletDetails.d.ts +9 -0
- package/dist/types/ui/components/ExternalWallet/ExternalWalletHeader.d.ts +8 -0
- package/dist/types/ui/components/ExternalWallet/ExternalWalletInstall.d.ts +8 -0
- package/dist/types/ui/components/ExternalWallets.d.ts +17 -0
- package/dist/types/ui/components/Footer.d.ts +1 -0
- package/dist/types/ui/components/Header.d.ts +8 -0
- package/dist/types/ui/components/Icon.d.ts +9 -0
- package/dist/types/ui/components/Image.d.ts +12 -0
- package/dist/types/ui/components/Loader.d.ts +10 -0
- package/dist/types/ui/components/Modal.d.ts +16 -0
- package/dist/types/ui/components/SelfCustodyViaWeb3Auth.d.ts +1 -0
- package/dist/types/ui/components/SocialLoginPasswordless.d.ts +16 -0
- package/dist/types/ui/components/SocialLogins.d.ts +14 -0
- package/dist/types/ui/components/WalletConnect.d.ts +8 -0
- package/dist/types/ui/config.d.ts +4 -0
- package/dist/types/ui/context/ThemeContext.d.ts +3 -0
- package/dist/types/ui/helper/countryData.d.ts +7 -0
- package/dist/types/ui/i18n/index.d.ts +11 -0
- package/dist/types/ui/index.d.ts +4 -0
- package/dist/types/ui/interfaces.d.ts +106 -0
- package/dist/types/ui/localeImport.d.ts +3 -0
- package/dist/types/ui/loginModal.d.ts +27 -0
- package/dist/types/ui/utils.d.ts +12 -0
- package/dist/types/vue/Web3AuthProvider.d.ts +13 -0
- package/dist/types/vue/composables/index.d.ts +1 -0
- package/dist/types/vue/composables/useWeb3Auth.d.ts +2 -0
- package/dist/types/vue/index.d.ts +3 -0
- package/dist/types/vue/interfaces.d.ts +45 -0
- package/package.json +100 -43
- 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;
|