@dynamic-labs/sdk-react-core 0.19.0-alpha.3 → 0.19.0-alpha.5

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 (87) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +9 -9
  5. package/src/lib/components/DynamicConnectButton/DynamicConnectButton.cjs +2 -14
  6. package/src/lib/components/DynamicConnectButton/DynamicConnectButton.js +2 -14
  7. package/src/lib/components/MenuList/Dropdown/Dropdown.cjs +1 -1
  8. package/src/lib/components/MenuList/Dropdown/Dropdown.js +1 -1
  9. package/src/lib/components/ModalHeaderBanner/ModalHeaderBanner.cjs +2 -0
  10. package/src/lib/components/ModalHeaderBanner/ModalHeaderBanner.d.ts +1 -1
  11. package/src/lib/components/ModalHeaderBanner/ModalHeaderBanner.js +2 -0
  12. package/src/lib/components/OTPVerificationView/OTPVerificationView.cjs +1 -1
  13. package/src/lib/components/OTPVerificationView/OTPVerificationView.js +1 -1
  14. package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -1
  15. package/src/lib/context/DynamicContext/DynamicContext.js +1 -1
  16. package/src/lib/context/DynamicContext/helpers.cjs +5 -6
  17. package/src/lib/context/DynamicContext/helpers.d.ts +2 -2
  18. package/src/lib/context/DynamicContext/helpers.js +5 -6
  19. package/src/lib/context/ViewContext/ViewContext.d.ts +1 -1
  20. package/src/lib/layout/DynamicAuthLayout/HelpContent/HelpContent.cjs +2 -1
  21. package/src/lib/layout/DynamicAuthLayout/HelpContent/HelpContent.js +2 -1
  22. package/src/lib/main.global.cjs +1 -1
  23. package/src/lib/main.global.js +1 -1
  24. package/src/lib/shared/utils/hooks/usePreventPageScroll/usePreventPageScroll.cjs +28 -2
  25. package/src/lib/shared/utils/hooks/usePreventPageScroll/usePreventPageScroll.js +28 -2
  26. package/src/lib/styles/index.shadow.cjs +1 -1
  27. package/src/lib/styles/index.shadow.js +1 -1
  28. package/src/lib/utils/functions/getDynamicLayoutData/getDynamicLayoutData.cjs +6 -0
  29. package/src/lib/utils/functions/getDynamicLayoutData/getDynamicLayoutData.js +6 -0
  30. package/src/lib/utils/functions/isEmailProviderEnabled/isEmailProviderEnabled.cjs +7 -1
  31. package/src/lib/utils/functions/isEmailProviderEnabled/isEmailProviderEnabled.js +7 -1
  32. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.cjs +8 -2
  33. package/src/lib/utils/hooks/authenticationHooks/useConnectAndSign/useConnectAndSign.js +9 -3
  34. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.cjs +4 -0
  35. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.js +4 -0
  36. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +7 -5
  37. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +7 -5
  38. package/src/lib/views/AccountExistsView/AccountExistsView.cjs +2 -2
  39. package/src/lib/views/AccountExistsView/AccountExistsView.js +2 -2
  40. package/src/lib/views/EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.cjs +1 -1
  41. package/src/lib/views/EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.js +1 -1
  42. package/src/lib/views/LoginView/LoginView.cjs +70 -0
  43. package/src/lib/views/LoginView/LoginView.d.ts +2 -0
  44. package/src/lib/views/LoginView/LoginView.js +66 -0
  45. package/src/lib/views/{LoginWithEmailView/components/LoginWithEmailForm/LoginWithEmailForm.cjs → LoginView/components/EmailSignIn/LoginEmailForm.cjs} +11 -12
  46. package/src/lib/views/LoginView/components/EmailSignIn/LoginEmailForm.d.ts +8 -0
  47. package/src/lib/views/{LoginWithEmailView/components/LoginWithEmailForm/LoginWithEmailForm.js → LoginView/components/EmailSignIn/LoginEmailForm.js} +11 -12
  48. package/src/lib/views/LoginView/components/EmailSignIn/index.d.ts +1 -0
  49. package/src/lib/views/LoginView/components/LoginWidget.d.ts +5 -0
  50. package/src/lib/views/LoginView/components/WalletSignIn/ListItemButton/ListItemButton.cjs +65 -0
  51. package/src/lib/views/{LoginWithEmailView/components → LoginView/components/WalletSignIn}/ListItemButton/ListItemButton.d.ts +2 -1
  52. package/src/lib/views/LoginView/components/WalletSignIn/ListItemButton/ListItemButton.js +61 -0
  53. package/src/lib/views/{LoginWithEmailView/components/ListItemButton/ListItemButton.cjs → LoginView/components/WalletSignIn/WalletSignIn.cjs} +7 -19
  54. package/src/lib/views/LoginView/components/WalletSignIn/WalletSignIn.d.ts +7 -0
  55. package/src/lib/views/{LoginWithEmailView/components/ListItemButton/ListItemButton.js → LoginView/components/WalletSignIn/WalletSignIn.js} +8 -20
  56. package/src/lib/views/LoginView/components/WalletSignIn/WalletSimpleSignIn/WalletSimpleSignIn.cjs +47 -0
  57. package/src/lib/views/LoginView/components/WalletSignIn/WalletSimpleSignIn/WalletSimpleSignIn.d.ts +8 -0
  58. package/src/lib/views/LoginView/components/WalletSignIn/WalletSimpleSignIn/WalletSimpleSignIn.js +43 -0
  59. package/src/lib/views/LoginView/components/WalletSignIn/WalletSimpleSignIn/index.d.ts +1 -0
  60. package/src/lib/views/LoginView/components/WalletSignIn/index.d.ts +1 -0
  61. package/src/lib/views/LoginView/components/index.d.ts +3 -0
  62. package/src/lib/views/LoginView/index.d.ts +1 -0
  63. package/src/lib/views/LoginView/useLoginView.cjs +137 -0
  64. package/src/lib/views/LoginView/useLoginView.d.ts +6 -0
  65. package/src/lib/views/LoginView/useLoginView.js +132 -0
  66. package/src/lib/views/WalletGroupView/components/WalletGroupItem/WalletGroupItem.cjs +1 -0
  67. package/src/lib/views/WalletGroupView/components/WalletGroupItem/WalletGroupItem.js +1 -0
  68. package/src/lib/views/WalletList/WalletListItem/WalletListItem.cjs +3 -3
  69. package/src/lib/views/WalletList/WalletListItem/WalletListItem.js +3 -3
  70. package/src/lib/views/WalletList/WalletListItem/WalletListItem.types.d.ts +1 -0
  71. package/src/lib/views/viewToComponentMap.cjs +4 -3
  72. package/src/lib/views/viewToComponentMap.js +4 -3
  73. package/src/lib/views/LoginWithEmailView/LoginWithEmailView.cjs +0 -63
  74. package/src/lib/views/LoginWithEmailView/LoginWithEmailView.d.ts +0 -2
  75. package/src/lib/views/LoginWithEmailView/LoginWithEmailView.js +0 -59
  76. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailForm/LoginWithEmailForm.d.ts +0 -7
  77. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailForm/index.d.ts +0 -1
  78. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailWalletList/LoginWithEmailWalletList.cjs +0 -36
  79. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailWalletList/LoginWithEmailWalletList.d.ts +0 -9
  80. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailWalletList/LoginWithEmailWalletList.js +0 -31
  81. package/src/lib/views/LoginWithEmailView/components/LoginWithEmailWalletList/index.d.ts +0 -1
  82. package/src/lib/views/LoginWithEmailView/index.d.ts +0 -1
  83. /package/src/lib/views/{LoginWithEmailView → LoginView}/components/SocialSignIn/SocialSignIn.cjs +0 -0
  84. /package/src/lib/views/{LoginWithEmailView → LoginView}/components/SocialSignIn/SocialSignIn.d.ts +0 -0
  85. /package/src/lib/views/{LoginWithEmailView → LoginView}/components/SocialSignIn/SocialSignIn.js +0 -0
  86. /package/src/lib/views/{LoginWithEmailView → LoginView}/components/SocialSignIn/index.d.ts +0 -0
  87. /package/src/lib/views/{LoginWithEmailView/components → LoginView/components/WalletSignIn}/ListItemButton/index.d.ts +0 -0
@@ -1,12 +1,10 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useMemo } from 'react';
3
- import '@dynamic-labs/iconic';
4
- import '../../../../context/ViewContext/ViewContext.js';
5
- import { ReactComponent as SvgStroke } from '../../../../shared/assets/stroke.js';
6
- import { classNames } from '../../../../utils/functions/classNames/classNames.js';
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import 'react';
7
3
  import '@dynamic-labs/sdk-api';
8
4
  import '../../../../shared/logger.js';
5
+ import '@dynamic-labs/iconic';
9
6
  import '@dynamic-labs/wallet-connector-core';
7
+ import '../../../../context/ViewContext/ViewContext.js';
10
8
  import '@dynamic-labs/wallet-book';
11
9
  import '@dynamic-labs/utils';
12
10
  import '../../../../utils/constants/colors.js';
@@ -17,7 +15,6 @@ import '../../../../context/DynamicContext/DynamicContext.js';
17
15
  import '@dynamic-labs/multi-wallet';
18
16
  import '../../../../components/ShadowDOM/ShadowDOM.js';
19
17
  import '../../../../context/ThemeContext/ThemeContext.js';
20
- import { Icon } from '../../../../components/Icon/Icon.js';
21
18
  import 'react-dom';
22
19
  import 'react-focus-lock';
23
20
  import '../../../../components/Transition/ZoomTransition/ZoomTransition.js';
@@ -30,6 +27,7 @@ import '../../../../context/ErrorContext/ErrorContext.js';
30
27
  import '../../../../context/AccessDeniedContext/AccessDeniedContext.js';
31
28
  import '../../../../context/AccountExistsContext/AccountExistsContext.js';
32
29
  import '../../../../components/IconButton/IconButton.js';
30
+ import { Button } from '../../../../components/Button/Button.js';
33
31
  import '../../../../components/Alert/Alert.js';
34
32
  import 'formik';
35
33
  import 'yup';
@@ -40,22 +38,12 @@ import '../../../../context/EmailVerificationContext/EmailVerificationContext.js
40
38
  import '@dynamic-labs/types';
41
39
  import '../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js';
42
40
  import '../../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
43
- import { ListTile } from '../../../../components/ListTile/ListTile.js';
44
41
  import '../../../../components/Popper/Popper/Popper.js';
45
42
  import '../../../../components/Popper/PopperContext/PopperContext.js';
46
43
  import '../../../../components/InlineWidget/InlineWidget.js';
47
44
  import '../../../../components/MenuList/Dropdown/Dropdown.js';
48
- import { Badge } from '../../../../components/Badge/Badge.js';
45
+ import { WalletSimpleSignIn } from './WalletSimpleSignIn/WalletSimpleSignIn.js';
49
46
 
50
- const ListItemButton = ({ text, onClick, numberOfWallets }) => {
51
- const numberOfWalletsText = useMemo(() => {
52
- if (numberOfWallets <= 10) {
53
- return numberOfWallets;
54
- }
55
- return `+${Math.floor(numberOfWallets / 10) * 10}`;
56
- }, [numberOfWallets]);
57
- const trailing = (jsxs("div", Object.assign({ className: 'list-item-button__trailing' }, { children: [jsx("div", Object.assign({ className: classNames('list-item-button__trailing-child', 'list-item-button__trailing-label') }, { children: jsx(Badge, { text: `${numberOfWalletsText} available` }) })), jsx("div", Object.assign({ className: classNames('list-item-button__trailing-child', 'list-item-button__trailing-icon') }, { children: jsx(Icon, Object.assign({ color: 'text-primary', size: 'small' }, { children: jsx(SvgStroke, {}) })) }))] })));
58
- return (jsx(ListTile, Object.assign({ trailing: trailing, onClick: onClick, className: 'list-item-button' }, { children: text })));
59
- };
47
+ const WalletSignIn = ({ numberOfItensToShow, isLoading, onSubmit, }) => numberOfItensToShow > 0 ? (jsx(WalletSimpleSignIn, { previewWalletsNumber: numberOfItensToShow, onshowAllWallets: () => onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(), disabled: isLoading })) : (jsx(Button, Object.assign({ disabled: isLoading, onClick: () => onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(), buttonVariant: 'primary', buttonPadding: 'large' }, { children: "Connect with Wallet" })));
60
48
 
61
- export { ListItemButton };
49
+ export { WalletSignIn };
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var walletBook = require('@dynamic-labs/wallet-book');
7
+ var Skeleton = require('../../../../../components/Skeleton/Skeleton.cjs');
8
+ var useInternalDynamicContext = require('../../../../../context/DynamicContext/useInternalDynamicContext.cjs');
9
+ require('@dynamic-labs/sdk-api');
10
+ require('../../../../../shared/logger.cjs');
11
+ require('@dynamic-labs/iconic');
12
+ require('@dynamic-labs/wallet-connector-core');
13
+ require('../../../../../context/ViewContext/ViewContext.cjs');
14
+ require('react');
15
+ require('@dynamic-labs/utils');
16
+ var localStorage$1 = require('../../../../../utils/constants/localStorage.cjs');
17
+ require('../../../../../utils/constants/colors.cjs');
18
+ var localStorage = require('../../../../../shared/utils/classes/storage/localStorage.cjs');
19
+ require('ethers');
20
+ require('../../../../../shared/consts/index.cjs');
21
+ var WalletListItem = require('../../../../WalletList/WalletListItem/WalletListItem.cjs');
22
+ var ListItemButton = require('../ListItemButton/ListItemButton.cjs');
23
+ var walletListBuilder = require('../../../../../utils/functions/walletListBuilder/walletListBuilder.cjs');
24
+
25
+ const WalletSimpleSignIn = ({ previewWalletsNumber, disabled = false, onshowAllWallets, }) => {
26
+ const { wallets, projectSettings, walletsFilter, signWithEmailWalletName } = useInternalDynamicContext.useInternalDynamicContext();
27
+ const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
28
+ const { numberOfWallets, walletsList } = walletListBuilder.walletListBuilder({
29
+ groupWallets: true,
30
+ inputList: wallets,
31
+ isWalletConnectList: false,
32
+ lastUsedWalletName: localStorage.LocalStorage.getFromLS(localStorage$1.LAST_USED_WALLET),
33
+ loginWithEmail: true,
34
+ numberOfWalletsToShow: previewWalletsNumber,
35
+ searchFilter: undefined,
36
+ signWithEmailWalletName,
37
+ walletBook: walletBook$1,
38
+ walletsFilter,
39
+ });
40
+ const isUsingMultiWallet = Boolean(localStorage.LocalStorage.getFromLS(localStorage$1.AUTH_USER));
41
+ return !projectSettings ? (jsxRuntime.jsx(Skeleton.Skeleton, { count: previewWalletsNumber + 1, className: 'login-with-email-wallet-list__skeleton' })) : (jsxRuntime.jsxs("div", Object.assign({ className: 'login-with-email-wallet-list__container', "data-testid": 'top-wallets-list' }, { children: [walletsList.map((wallet) => {
42
+ var _a;
43
+ return (jsxRuntime.jsx(WalletListItem.WalletListItem, { wallet: wallet, usingMultiWallet: isUsingMultiWallet, disabled: disabled }, wallet.key + ((_a = wallet.groupedWallets) === null || _a === void 0 ? void 0 : _a.length)));
44
+ }), jsxRuntime.jsx(ListItemButton.ListItemButton, { text: 'View all wallets', onClick: onshowAllWallets, numberOfWallets: numberOfWallets, disabled: disabled })] })));
45
+ };
46
+
47
+ exports.WalletSimpleSignIn = WalletSimpleSignIn;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ interface WalletSimpleSignInProp {
3
+ previewWalletsNumber: number;
4
+ disabled: boolean;
5
+ onshowAllWallets: () => void;
6
+ }
7
+ export declare const WalletSimpleSignIn: React.FC<WalletSimpleSignInProp>;
8
+ export {};
@@ -0,0 +1,43 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useWalletBookContext } from '@dynamic-labs/wallet-book';
3
+ import { Skeleton } from '../../../../../components/Skeleton/Skeleton.js';
4
+ import { useInternalDynamicContext } from '../../../../../context/DynamicContext/useInternalDynamicContext.js';
5
+ import '@dynamic-labs/sdk-api';
6
+ import '../../../../../shared/logger.js';
7
+ import '@dynamic-labs/iconic';
8
+ import '@dynamic-labs/wallet-connector-core';
9
+ import '../../../../../context/ViewContext/ViewContext.js';
10
+ import 'react';
11
+ import '@dynamic-labs/utils';
12
+ import { LAST_USED_WALLET, AUTH_USER } from '../../../../../utils/constants/localStorage.js';
13
+ import '../../../../../utils/constants/colors.js';
14
+ import { LocalStorage } from '../../../../../shared/utils/classes/storage/localStorage.js';
15
+ import 'ethers';
16
+ import '../../../../../shared/consts/index.js';
17
+ import { WalletListItem } from '../../../../WalletList/WalletListItem/WalletListItem.js';
18
+ import { ListItemButton } from '../ListItemButton/ListItemButton.js';
19
+ import { walletListBuilder } from '../../../../../utils/functions/walletListBuilder/walletListBuilder.js';
20
+
21
+ const WalletSimpleSignIn = ({ previewWalletsNumber, disabled = false, onshowAllWallets, }) => {
22
+ const { wallets, projectSettings, walletsFilter, signWithEmailWalletName } = useInternalDynamicContext();
23
+ const { walletBook } = useWalletBookContext();
24
+ const { numberOfWallets, walletsList } = walletListBuilder({
25
+ groupWallets: true,
26
+ inputList: wallets,
27
+ isWalletConnectList: false,
28
+ lastUsedWalletName: LocalStorage.getFromLS(LAST_USED_WALLET),
29
+ loginWithEmail: true,
30
+ numberOfWalletsToShow: previewWalletsNumber,
31
+ searchFilter: undefined,
32
+ signWithEmailWalletName,
33
+ walletBook,
34
+ walletsFilter,
35
+ });
36
+ const isUsingMultiWallet = Boolean(LocalStorage.getFromLS(AUTH_USER));
37
+ return !projectSettings ? (jsx(Skeleton, { count: previewWalletsNumber + 1, className: 'login-with-email-wallet-list__skeleton' })) : (jsxs("div", Object.assign({ className: 'login-with-email-wallet-list__container', "data-testid": 'top-wallets-list' }, { children: [walletsList.map((wallet) => {
38
+ var _a;
39
+ return (jsx(WalletListItem, { wallet: wallet, usingMultiWallet: isUsingMultiWallet, disabled: disabled }, wallet.key + ((_a = wallet.groupedWallets) === null || _a === void 0 ? void 0 : _a.length)));
40
+ }), jsx(ListItemButton, { text: 'View all wallets', onClick: onshowAllWallets, numberOfWallets: numberOfWallets, disabled: disabled })] })));
41
+ };
42
+
43
+ export { WalletSimpleSignIn };
@@ -0,0 +1 @@
1
+ export { WalletSimpleSignIn } from './WalletSimpleSignIn';
@@ -0,0 +1 @@
1
+ export { WalletSignIn } from './WalletSignIn';
@@ -0,0 +1,3 @@
1
+ export * from './EmailSignIn';
2
+ export * from './LoginWidget';
3
+ export * from './WalletSignIn';
@@ -0,0 +1 @@
1
+ export { LoginView } from './LoginView';
@@ -0,0 +1,137 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var sdkApi = require('@dynamic-labs/sdk-api');
7
+ var useInternalDynamicContext = require('../../context/DynamicContext/useInternalDynamicContext.cjs');
8
+
9
+ const NUMBER_OF_WALLETS = 3;
10
+ const useLoginView = () => {
11
+ const { projectSettings, authorizationViewDisplayOrder, loginWithEmail, wallets, } = useInternalDynamicContext.useInternalDynamicContext();
12
+ const isWalletOnly = React.useMemo(() => {
13
+ var _a, _b, _c, _d, _e, _f;
14
+ if (!projectSettings) {
15
+ return false;
16
+ }
17
+ // toolkit functionality overrides whatever is defined
18
+ if (!loginWithEmail) {
19
+ return true;
20
+ }
21
+ const loginView = (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.views) === null || _b === void 0 ? void 0 : _b.find((view) => view.type === sdkApi.SdkViewType.Login);
22
+ // backwards compatibility for those that didn't set up login view sessions
23
+ if (!((_c = loginView === null || loginView === void 0 ? void 0 : loginView.sections) === null || _c === void 0 ? void 0 : _c.length)) {
24
+ return (!((_e = (_d = projectSettings.design) === null || _d === void 0 ? void 0 : _d.modal) === null || _e === void 0 ? void 0 : _e.emailOnly) &&
25
+ !((_f = projectSettings.providers) === null || _f === void 0 ? void 0 : _f.length));
26
+ }
27
+ return (loginView.sections.length === 1 && loginView.sections[0].type === 'wallet');
28
+ }, [projectSettings, loginWithEmail]);
29
+ /**
30
+ * build email and social view sections from project settings design.modal props - backwards compatibility
31
+ * @returns SdkViewSection[]
32
+ */
33
+ const getEmailViewSectionDefinition = () => {
34
+ var _a, _b, _c;
35
+ const loginViewSections = [
36
+ {
37
+ type: sdkApi.SdkViewSectionType.Email,
38
+ },
39
+ ];
40
+ if ((_c = (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.socialSignIn) === null || _b === void 0 ? void 0 : _b.providers) === null || _c === void 0 ? void 0 : _c.length) {
41
+ const numOfProvidersToDisplay = projectSettings.sdk.socialSignIn.providers.filter((provider) => provider.enabled).length;
42
+ loginViewSections.push({
43
+ numOfItemsToDisplay: numOfProvidersToDisplay,
44
+ type: sdkApi.SdkViewSectionType.Social,
45
+ });
46
+ }
47
+ return loginViewSections;
48
+ };
49
+ // TODO: https://linear.app/dynamic-labs/issue/GVTY-212/rethink-or-implement-toolkit-template-for-email-wallet-order
50
+ /**
51
+ * remove wallet view section from projectSettings?.sdk?.views if no wallet defined
52
+ * @param sections
53
+ * @returns
54
+ */
55
+ const filterLoginViewSections = (sections) => {
56
+ if (wallets === null || wallets === void 0 ? void 0 : wallets.length) {
57
+ return sections;
58
+ }
59
+ return sections.filter((section) => section.type !== 'wallet');
60
+ };
61
+ const addSeparator = (index, loginItem) => {
62
+ var _a;
63
+ // if not the first index, no separator is needed
64
+ // if the first index but does not have wallets or providers,
65
+ // it'll show only one view section - no separator is needed
66
+ if (index !== 0 ||
67
+ !(wallets === null || wallets === void 0 ? void 0 : wallets.length) ||
68
+ !((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) === null || _a === void 0 ? void 0 : _a.length)) {
69
+ return [];
70
+ }
71
+ const label = loginItem === 'email' ? 'Or continue with a wallet' : 'Or continue with';
72
+ return [
73
+ {
74
+ label,
75
+ type: sdkApi.SdkViewSectionType.Separator,
76
+ },
77
+ ];
78
+ };
79
+ /**
80
+ * build login view sections array from project settings design.modal props - backwards compatibility
81
+ * @returns SdkViewSection[]
82
+ */
83
+ const buildLoginSections = () => {
84
+ let loginViewSections = [];
85
+ authorizationViewDisplayOrder === null || authorizationViewDisplayOrder === void 0 ? void 0 : authorizationViewDisplayOrder.forEach((loginItem, index) => {
86
+ var _a, _b, _c;
87
+ if (loginItem === 'email' && ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) === null || _a === void 0 ? void 0 : _a.length)) {
88
+ loginViewSections = loginViewSections.concat(getEmailViewSectionDefinition(),
89
+ // add separator if wallets defined
90
+ addSeparator(index, loginItem));
91
+ }
92
+ if (loginItem === 'wallet' && (wallets === null || wallets === void 0 ? void 0 : wallets.length)) {
93
+ // if showWalletsButton is true, it should show "Connec with Wallet" button
94
+ const numOfItemsToDisplay = ((_c = (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design) === null || _b === void 0 ? void 0 : _b.modal) === null || _c === void 0 ? void 0 : _c.showWalletsButton)
95
+ ? 0
96
+ : NUMBER_OF_WALLETS;
97
+ loginViewSections = loginViewSections.concat([
98
+ {
99
+ numOfItemsToDisplay,
100
+ type: sdkApi.SdkViewSectionType.Wallet,
101
+ },
102
+ ],
103
+ // add separator if email providers defined
104
+ addSeparator(index, loginItem));
105
+ }
106
+ });
107
+ return loginViewSections;
108
+ };
109
+ /**
110
+ * returns the login view sections to be displayed in order from projectSettings?.sdk?.views
111
+ * and has backwards compatibility with project settings design.modal props
112
+ */
113
+ const logingViewSections = React.useMemo(() => {
114
+ var _a, _b, _c, _d, _e;
115
+ const loginView = (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.views) === null || _b === void 0 ? void 0 : _b.find((view) => view.type === sdkApi.SdkViewType.Login);
116
+ if ((_c = loginView === null || loginView === void 0 ? void 0 : loginView.sections) === null || _c === void 0 ? void 0 : _c.length) {
117
+ return filterLoginViewSections(loginView === null || loginView === void 0 ? void 0 : loginView.sections);
118
+ }
119
+ if ((_e = (_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design) === null || _d === void 0 ? void 0 : _d.modal) === null || _e === void 0 ? void 0 : _e.emailOnly) {
120
+ return getEmailViewSectionDefinition();
121
+ }
122
+ return buildLoginSections();
123
+ }, [
124
+ projectSettings,
125
+ authorizationViewDisplayOrder,
126
+ getEmailViewSectionDefinition,
127
+ filterLoginViewSections,
128
+ buildLoginSections,
129
+ ]);
130
+ return {
131
+ isWalletOnly,
132
+ logingViewSections,
133
+ };
134
+ };
135
+
136
+ exports.NUMBER_OF_WALLETS = NUMBER_OF_WALLETS;
137
+ exports.useLoginView = useLoginView;
@@ -0,0 +1,6 @@
1
+ import { SdkViewSection } from '@dynamic-labs/sdk-api';
2
+ export declare const NUMBER_OF_WALLETS = 3;
3
+ export declare const useLoginView: () => {
4
+ isWalletOnly: boolean;
5
+ logingViewSections: SdkViewSection[];
6
+ };
@@ -0,0 +1,132 @@
1
+ import { useMemo } from 'react';
2
+ import { SdkViewType, SdkViewSectionType } from '@dynamic-labs/sdk-api';
3
+ import { useInternalDynamicContext } from '../../context/DynamicContext/useInternalDynamicContext.js';
4
+
5
+ const NUMBER_OF_WALLETS = 3;
6
+ const useLoginView = () => {
7
+ const { projectSettings, authorizationViewDisplayOrder, loginWithEmail, wallets, } = useInternalDynamicContext();
8
+ const isWalletOnly = useMemo(() => {
9
+ var _a, _b, _c, _d, _e, _f;
10
+ if (!projectSettings) {
11
+ return false;
12
+ }
13
+ // toolkit functionality overrides whatever is defined
14
+ if (!loginWithEmail) {
15
+ return true;
16
+ }
17
+ const loginView = (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.views) === null || _b === void 0 ? void 0 : _b.find((view) => view.type === SdkViewType.Login);
18
+ // backwards compatibility for those that didn't set up login view sessions
19
+ if (!((_c = loginView === null || loginView === void 0 ? void 0 : loginView.sections) === null || _c === void 0 ? void 0 : _c.length)) {
20
+ return (!((_e = (_d = projectSettings.design) === null || _d === void 0 ? void 0 : _d.modal) === null || _e === void 0 ? void 0 : _e.emailOnly) &&
21
+ !((_f = projectSettings.providers) === null || _f === void 0 ? void 0 : _f.length));
22
+ }
23
+ return (loginView.sections.length === 1 && loginView.sections[0].type === 'wallet');
24
+ }, [projectSettings, loginWithEmail]);
25
+ /**
26
+ * build email and social view sections from project settings design.modal props - backwards compatibility
27
+ * @returns SdkViewSection[]
28
+ */
29
+ const getEmailViewSectionDefinition = () => {
30
+ var _a, _b, _c;
31
+ const loginViewSections = [
32
+ {
33
+ type: SdkViewSectionType.Email,
34
+ },
35
+ ];
36
+ if ((_c = (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.socialSignIn) === null || _b === void 0 ? void 0 : _b.providers) === null || _c === void 0 ? void 0 : _c.length) {
37
+ const numOfProvidersToDisplay = projectSettings.sdk.socialSignIn.providers.filter((provider) => provider.enabled).length;
38
+ loginViewSections.push({
39
+ numOfItemsToDisplay: numOfProvidersToDisplay,
40
+ type: SdkViewSectionType.Social,
41
+ });
42
+ }
43
+ return loginViewSections;
44
+ };
45
+ // TODO: https://linear.app/dynamic-labs/issue/GVTY-212/rethink-or-implement-toolkit-template-for-email-wallet-order
46
+ /**
47
+ * remove wallet view section from projectSettings?.sdk?.views if no wallet defined
48
+ * @param sections
49
+ * @returns
50
+ */
51
+ const filterLoginViewSections = (sections) => {
52
+ if (wallets === null || wallets === void 0 ? void 0 : wallets.length) {
53
+ return sections;
54
+ }
55
+ return sections.filter((section) => section.type !== 'wallet');
56
+ };
57
+ const addSeparator = (index, loginItem) => {
58
+ var _a;
59
+ // if not the first index, no separator is needed
60
+ // if the first index but does not have wallets or providers,
61
+ // it'll show only one view section - no separator is needed
62
+ if (index !== 0 ||
63
+ !(wallets === null || wallets === void 0 ? void 0 : wallets.length) ||
64
+ !((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) === null || _a === void 0 ? void 0 : _a.length)) {
65
+ return [];
66
+ }
67
+ const label = loginItem === 'email' ? 'Or continue with a wallet' : 'Or continue with';
68
+ return [
69
+ {
70
+ label,
71
+ type: SdkViewSectionType.Separator,
72
+ },
73
+ ];
74
+ };
75
+ /**
76
+ * build login view sections array from project settings design.modal props - backwards compatibility
77
+ * @returns SdkViewSection[]
78
+ */
79
+ const buildLoginSections = () => {
80
+ let loginViewSections = [];
81
+ authorizationViewDisplayOrder === null || authorizationViewDisplayOrder === void 0 ? void 0 : authorizationViewDisplayOrder.forEach((loginItem, index) => {
82
+ var _a, _b, _c;
83
+ if (loginItem === 'email' && ((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) === null || _a === void 0 ? void 0 : _a.length)) {
84
+ loginViewSections = loginViewSections.concat(getEmailViewSectionDefinition(),
85
+ // add separator if wallets defined
86
+ addSeparator(index, loginItem));
87
+ }
88
+ if (loginItem === 'wallet' && (wallets === null || wallets === void 0 ? void 0 : wallets.length)) {
89
+ // if showWalletsButton is true, it should show "Connec with Wallet" button
90
+ const numOfItemsToDisplay = ((_c = (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design) === null || _b === void 0 ? void 0 : _b.modal) === null || _c === void 0 ? void 0 : _c.showWalletsButton)
91
+ ? 0
92
+ : NUMBER_OF_WALLETS;
93
+ loginViewSections = loginViewSections.concat([
94
+ {
95
+ numOfItemsToDisplay,
96
+ type: SdkViewSectionType.Wallet,
97
+ },
98
+ ],
99
+ // add separator if email providers defined
100
+ addSeparator(index, loginItem));
101
+ }
102
+ });
103
+ return loginViewSections;
104
+ };
105
+ /**
106
+ * returns the login view sections to be displayed in order from projectSettings?.sdk?.views
107
+ * and has backwards compatibility with project settings design.modal props
108
+ */
109
+ const logingViewSections = useMemo(() => {
110
+ var _a, _b, _c, _d, _e;
111
+ const loginView = (_b = (_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk) === null || _a === void 0 ? void 0 : _a.views) === null || _b === void 0 ? void 0 : _b.find((view) => view.type === SdkViewType.Login);
112
+ if ((_c = loginView === null || loginView === void 0 ? void 0 : loginView.sections) === null || _c === void 0 ? void 0 : _c.length) {
113
+ return filterLoginViewSections(loginView === null || loginView === void 0 ? void 0 : loginView.sections);
114
+ }
115
+ if ((_e = (_d = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.design) === null || _d === void 0 ? void 0 : _d.modal) === null || _e === void 0 ? void 0 : _e.emailOnly) {
116
+ return getEmailViewSectionDefinition();
117
+ }
118
+ return buildLoginSections();
119
+ }, [
120
+ projectSettings,
121
+ authorizationViewDisplayOrder,
122
+ getEmailViewSectionDefinition,
123
+ filterLoginViewSections,
124
+ buildLoginSections,
125
+ ]);
126
+ return {
127
+ isWalletOnly,
128
+ logingViewSections,
129
+ };
130
+ };
131
+
132
+ export { NUMBER_OF_WALLETS, useLoginView };
@@ -13,6 +13,7 @@ require('@dynamic-labs/wallet-book');
13
13
  var getWalletListItemLabel = require('../../../../shared/utils/functions/getWalletListItemLabel/getWalletListItemLabel.cjs');
14
14
  require('ethers');
15
15
  require('../../../../shared/utils/classes/storage/localStorage.cjs');
16
+ require('@dynamic-labs/utils');
16
17
  require('../../../../context/ViewContext/ViewContext.cjs');
17
18
  var stroke = require('../../../../shared/assets/stroke.cjs');
18
19
  require('../../../../shared/consts/index.cjs');
@@ -9,6 +9,7 @@ import '@dynamic-labs/wallet-book';
9
9
  import { getWalletListItemLabel } from '../../../../shared/utils/functions/getWalletListItemLabel/getWalletListItemLabel.js';
10
10
  import 'ethers';
11
11
  import '../../../../shared/utils/classes/storage/localStorage.js';
12
+ import '@dynamic-labs/utils';
12
13
  import '../../../../context/ViewContext/ViewContext.js';
13
14
  import { ReactComponent as SvgStroke } from '../../../../shared/assets/stroke.js';
14
15
  import '../../../../shared/consts/index.js';
@@ -16,11 +16,11 @@ require('@dynamic-labs/wallet-connector-core');
16
16
  var getWalletListItemLabel = require('../../../shared/utils/functions/getWalletListItemLabel/getWalletListItemLabel.cjs');
17
17
  require('ethers');
18
18
  require('../../../shared/utils/classes/storage/localStorage.cjs');
19
+ require('@dynamic-labs/utils');
19
20
  require('../../../shared/consts/index.cjs');
20
21
  require('../../../context/DynamicContext/DynamicContext.cjs');
21
22
  require('../../../utils/constants/colors.cjs');
22
23
  require('@dynamic-labs/multi-wallet');
23
- require('@dynamic-labs/utils');
24
24
  var pixelToRem = require('../../../utils/functions/pixelToRem/pixelToRem.cjs');
25
25
  require('../../../components/ShadowDOM/ShadowDOM.cjs');
26
26
  require('../../../context/ThemeContext/ThemeContext.cjs');
@@ -57,7 +57,7 @@ var Badge = require('../../../components/Badge/Badge.cjs');
57
57
  var isWalletGroup = require('../../../utils/functions/walletListBuilder/utils/isWalletGroup/isWalletGroup.cjs');
58
58
  var WalletGroupContext = require('../../../context/WalletGroupContext/WalletGroupContext.cjs');
59
59
 
60
- const WalletListItem = ({ usingMultiWallet, wallet, onResetSearchValue, tile = ({ leading, name, onClick, trailing }) => (jsxRuntime.jsx(ListTile.ListTile, Object.assign({ leading: leading, trailing: trailing, onClick: onClick, className: 'wallet-list-item__tile', dataTestId: 'ListTile' }, { children: name }))), }) => {
60
+ const WalletListItem = ({ disabled = false, usingMultiWallet, wallet, onResetSearchValue, tile = ({ leading, name, onClick, trailing }) => (jsxRuntime.jsx(ListTile.ListTile, Object.assign({ leading: leading, trailing: trailing, onClick: onClick, className: 'wallet-list-item__tile', dataTestId: 'ListTile' }, { children: name }))), }) => {
61
61
  const { navigateToWalletGroup } = WalletGroupContext.useWalletGroupContext();
62
62
  const _isWalletGroup = isWalletGroup.isWalletGroup(wallet);
63
63
  const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
@@ -69,7 +69,7 @@ const WalletListItem = ({ usingMultiWallet, wallet, onResetSearchValue, tile = (
69
69
  const Tile = tile;
70
70
  const isComingSoon = label === 'Coming soon';
71
71
  const handleClick = () => _tslib.__awaiter(void 0, void 0, void 0, function* () {
72
- if (isComingSoon) {
72
+ if (isComingSoon || disabled) {
73
73
  return;
74
74
  }
75
75
  onResetSearchValue === null || onResetSearchValue === void 0 ? void 0 : onResetSearchValue('');
@@ -12,11 +12,11 @@ import '@dynamic-labs/wallet-connector-core';
12
12
  import { getWalletListItemLabel } from '../../../shared/utils/functions/getWalletListItemLabel/getWalletListItemLabel.js';
13
13
  import 'ethers';
14
14
  import '../../../shared/utils/classes/storage/localStorage.js';
15
+ import '@dynamic-labs/utils';
15
16
  import '../../../shared/consts/index.js';
16
17
  import '../../../context/DynamicContext/DynamicContext.js';
17
18
  import '../../../utils/constants/colors.js';
18
19
  import '@dynamic-labs/multi-wallet';
19
- import '@dynamic-labs/utils';
20
20
  import { pixelToRem } from '../../../utils/functions/pixelToRem/pixelToRem.js';
21
21
  import '../../../components/ShadowDOM/ShadowDOM.js';
22
22
  import '../../../context/ThemeContext/ThemeContext.js';
@@ -53,7 +53,7 @@ import { Badge } from '../../../components/Badge/Badge.js';
53
53
  import { isWalletGroup } from '../../../utils/functions/walletListBuilder/utils/isWalletGroup/isWalletGroup.js';
54
54
  import { useWalletGroupContext } from '../../../context/WalletGroupContext/WalletGroupContext.js';
55
55
 
56
- const WalletListItem = ({ usingMultiWallet, wallet, onResetSearchValue, tile = ({ leading, name, onClick, trailing }) => (jsx(ListTile, Object.assign({ leading: leading, trailing: trailing, onClick: onClick, className: 'wallet-list-item__tile', dataTestId: 'ListTile' }, { children: name }))), }) => {
56
+ const WalletListItem = ({ disabled = false, usingMultiWallet, wallet, onResetSearchValue, tile = ({ leading, name, onClick, trailing }) => (jsx(ListTile, Object.assign({ leading: leading, trailing: trailing, onClick: onClick, className: 'wallet-list-item__tile', dataTestId: 'ListTile' }, { children: name }))), }) => {
57
57
  const { navigateToWalletGroup } = useWalletGroupContext();
58
58
  const _isWalletGroup = isWalletGroup(wallet);
59
59
  const { walletBook } = useWalletBookContext();
@@ -65,7 +65,7 @@ const WalletListItem = ({ usingMultiWallet, wallet, onResetSearchValue, tile = (
65
65
  const Tile = tile;
66
66
  const isComingSoon = label === 'Coming soon';
67
67
  const handleClick = () => __awaiter(void 0, void 0, void 0, function* () {
68
- if (isComingSoon) {
68
+ if (isComingSoon || disabled) {
69
69
  return;
70
70
  }
71
71
  onResetSearchValue === null || onResetSearchValue === void 0 ? void 0 : onResetSearchValue('');
@@ -5,6 +5,7 @@ export type WalletListItemProps = {
5
5
  tile?: WalletListItemTile;
6
6
  usingMultiWallet: boolean;
7
7
  wallet: WalletOption;
8
+ disabled?: boolean;
8
9
  };
9
10
  export type WalletListItemComponent = (props: WalletListItemProps) => ReactElement;
10
11
  export type WalletListItemTileProps = {
@@ -10,7 +10,6 @@ var EmailConfirmationWaitingView = require('./EmailConfirmationWaitingView/Email
10
10
  var EmailUpdate = require('./EmailUpdate/EmailUpdate.cjs');
11
11
  var EmailVerification = require('./EmailVerification/EmailVerification.cjs');
12
12
  var EmailWalletOTPVerificationView = require('./EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.cjs');
13
- var LoginWithEmailView = require('./LoginWithEmailView/LoginWithEmailView.cjs');
14
13
  var NetworkNotSupported = require('./NetworkNotSupported/NetworkNotSupported.cjs');
15
14
  var NetworkNotSupportedSwitchManual = require('./NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs');
16
15
  var NoQrNotInstalledView = require('./NoQrNotInstalledView/NoQrNotInstalledView.cjs');
@@ -31,6 +30,7 @@ var BridgeNextWalletConnectionView = require('./BridgeNextWalletConnectionView/B
31
30
  var AccountExistsView = require('./AccountExistsView/AccountExistsView.cjs');
32
31
  var MergeUserAccountsView = require('./MergeUserAccountsView/MergeUserAccountsView.cjs');
33
32
  var WalletCannotBeTransferredView = require('./WalletCannotBeTransferredView/WalletCannotBeTransferredView.cjs');
33
+ var LoginView = require('./LoginView/LoginView.cjs');
34
34
 
35
35
  const viewToComponentMap = {
36
36
  'account-exists': jsxRuntime.jsx(AccountExistsView.AccountExistsView, {}),
@@ -43,9 +43,10 @@ const viewToComponentMap = {
43
43
  'collect-user-data-login-with-email': jsxRuntime.jsx(CollectUserDataViewLoginWithEmail.CollectUserDataViewLoginWithEmail, {}),
44
44
  'email-wallet-otp-verification-view': jsxRuntime.jsx(EmailWalletOTPVerificationView.EmailWalletOTPVerificationView, {}),
45
45
  'gate-blocked-wallet': jsxRuntime.jsx(NoAccess.NoAccess, {}),
46
- 'login-with-email-or-wallet': jsxRuntime.jsx(LoginWithEmailView.LoginWithEmailView, {}),
47
- 'login-with-email-or-wallet-full-wallet-list': jsxRuntime.jsx(WalletList.WalletList, {}),
46
+ 'login-with-email-or-wallet': jsxRuntime.jsx(LoginView.LoginView, {}),
47
+ 'login-with-email-or-wallet-full-wallet-list': jsxRuntime.jsx(LoginView.LoginView, {}),
48
48
  'login-with-email-verification': jsxRuntime.jsx(EmailVerification.EmailVerification, {}),
49
+ 'login-with-wallet-only': jsxRuntime.jsx(LoginView.LoginView, {}),
49
50
  'merge-user-accounts': jsxRuntime.jsx(MergeUserAccountsView.MergeUserAccountsView, {}),
50
51
  'network-not-supported': jsxRuntime.jsx(NetworkNotSupported.NetworkNotSupported, {}),
51
52
  'network-not-supported-manual': jsxRuntime.jsx(NetworkNotSupportedSwitchManual.NetworkNotSupportedSwitchManual, {}),
@@ -6,7 +6,6 @@ import { EmailConfirmationWaitingView } from './EmailConfirmationWaitingView/Ema
6
6
  import { EmailUpdate } from './EmailUpdate/EmailUpdate.js';
7
7
  import { EmailVerification } from './EmailVerification/EmailVerification.js';
8
8
  import { EmailWalletOTPVerificationView } from './EmailWalletOTPVerificationView/EmailWalletOTPVerificationView.js';
9
- import { LoginWithEmailView } from './LoginWithEmailView/LoginWithEmailView.js';
10
9
  import { NetworkNotSupported } from './NetworkNotSupported/NetworkNotSupported.js';
11
10
  import { NetworkNotSupportedSwitchManual } from './NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js';
12
11
  import { NoQrNotInstalledView } from './NoQrNotInstalledView/NoQrNotInstalledView.js';
@@ -27,6 +26,7 @@ import { BridgeNextWalletConnectionView } from './BridgeNextWalletConnectionView
27
26
  import { AccountExistsView } from './AccountExistsView/AccountExistsView.js';
28
27
  import { MergeUserAccountsView } from './MergeUserAccountsView/MergeUserAccountsView.js';
29
28
  import { WalletCannotBeTransferredView } from './WalletCannotBeTransferredView/WalletCannotBeTransferredView.js';
29
+ import { LoginView } from './LoginView/LoginView.js';
30
30
 
31
31
  const viewToComponentMap = {
32
32
  'account-exists': jsx(AccountExistsView, {}),
@@ -39,9 +39,10 @@ const viewToComponentMap = {
39
39
  'collect-user-data-login-with-email': jsx(CollectUserDataViewLoginWithEmail, {}),
40
40
  'email-wallet-otp-verification-view': jsx(EmailWalletOTPVerificationView, {}),
41
41
  'gate-blocked-wallet': jsx(NoAccess, {}),
42
- 'login-with-email-or-wallet': jsx(LoginWithEmailView, {}),
43
- 'login-with-email-or-wallet-full-wallet-list': jsx(WalletList, {}),
42
+ 'login-with-email-or-wallet': jsx(LoginView, {}),
43
+ 'login-with-email-or-wallet-full-wallet-list': jsx(LoginView, {}),
44
44
  'login-with-email-verification': jsx(EmailVerification, {}),
45
+ 'login-with-wallet-only': jsx(LoginView, {}),
45
46
  'merge-user-accounts': jsx(MergeUserAccountsView, {}),
46
47
  'network-not-supported': jsx(NetworkNotSupported, {}),
47
48
  'network-not-supported-manual': jsx(NetworkNotSupportedSwitchManual, {}),