@dynamic-labs/sdk-react-core 1.0.4 → 1.0.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 (42) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +10 -10
  5. package/src/lib/layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.cjs +12 -0
  6. package/src/lib/layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.d.ts +6 -0
  7. package/src/lib/layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.js +8 -0
  8. package/src/lib/layout/DynamicAuthLayout/DefaultFooter/index.d.ts +1 -0
  9. package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.cjs +1 -3
  10. package/src/lib/layout/DynamicAuthLayout/DynamicAuthLayout.js +1 -3
  11. package/src/lib/shared/utils/functions/isUserLinkingWallet/isUserLinkingWallet.cjs +1 -2
  12. package/src/lib/shared/utils/functions/isUserLinkingWallet/isUserLinkingWallet.js +1 -2
  13. package/src/lib/styles/index.shadow.cjs +1 -1
  14. package/src/lib/styles/index.shadow.js +1 -1
  15. package/src/lib/utils/hooks/authenticationHooks/useEmailVerificationRequest/useEmailVerificationRequest.cjs +1 -28
  16. package/src/lib/utils/hooks/authenticationHooks/useEmailVerificationRequest/useEmailVerificationRequest.js +1 -28
  17. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +3 -2
  18. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +3 -2
  19. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.cjs +1 -1
  20. package/src/lib/utils/hooks/useCreateDynamicEmbeddedWalletMutation/useCreateDynamicEmbeddedWalletMutation.js +1 -1
  21. package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.cjs +5 -4
  22. package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.d.ts +2 -0
  23. package/src/lib/utils/hooks/useEmailProvider/useEmailProvider.js +5 -5
  24. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +0 -3
  25. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +0 -3
  26. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +14 -20
  27. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +14 -20
  28. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs +4 -26
  29. package/src/lib/utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.js +4 -26
  30. package/src/lib/views/EmailVerification/EmailVerification.cjs +23 -34
  31. package/src/lib/views/EmailVerification/EmailVerification.js +23 -34
  32. package/src/lib/views/LoginView/LoginView.cjs +6 -1
  33. package/src/lib/views/LoginView/LoginView.js +6 -1
  34. package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.cjs +3 -4
  35. package/src/lib/views/LoginView/sections/EmailSignInSection/LoginEmailForm.js +3 -4
  36. package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.cjs +17 -0
  37. package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.d.ts +3 -0
  38. package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.js +13 -0
  39. package/src/lib/views/Passkey/utils/findEmailOtpWalletConnector/index.d.ts +1 -0
  40. package/src/lib/views/Passkey/utils/index.d.ts +1 -0
  41. package/src/lib/views/WalletList/WalletList.cjs +6 -7
  42. package/src/lib/views/WalletList/WalletList.js +6 -7
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
6
  var React = require('react');
7
7
  var sdkApi = require('@dynamic-labs/sdk-api');
8
+ var utils = require('@dynamic-labs/utils');
8
9
  var Divider = require('../../components/Divider/Divider.cjs');
9
10
  var ErrorContext = require('../../context/ErrorContext/ErrorContext.cjs');
10
11
  var ErrorContainer = require('../../components/ErrorContainer/ErrorContainer.cjs');
@@ -12,6 +13,8 @@ var LoadingContext = require('../../context/LoadingContext/LoadingContext.cjs');
12
13
  var classNames = require('../../utils/functions/classNames/classNames.cjs');
13
14
  var ViewContext = require('../../context/ViewContext/ViewContext.cjs');
14
15
  var WalletList = require('../WalletList/WalletList.cjs');
16
+ var DefaultFooter = require('../../layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.cjs');
17
+ var useAuthLayoutChecks = require('../../utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs');
15
18
  var LoginEmailForm = require('./sections/EmailSignInSection/LoginEmailForm.cjs');
16
19
  var WalletSignInSection = require('./sections/WalletSignInSection/WalletSignInSection.cjs');
17
20
  var SocialSignInSection = require('./sections/SocialSignInSection/SocialSignInSection.cjs');
@@ -42,6 +45,7 @@ const LoginView = () => {
42
45
  setShowWalletList(false);
43
46
  }
44
47
  }, [isWalletOnly, view]);
48
+ const { showDefaultFooter } = useAuthLayoutChecks.useAuthLayoutChecks();
45
49
  const numOfWallets = ((_a = logingViewSections.find((section) => section.type === sdkApi.SdkViewSectionType.Wallet)) === null || _a === void 0 ? void 0 : _a.numOfItemsToDisplay) || 0;
46
50
  const renderViewSections = React.useMemo(() => logingViewSections.map((viewSection, index) => {
47
51
  switch (viewSection.type) {
@@ -63,9 +67,10 @@ const LoginView = () => {
63
67
  if (showWalletList) {
64
68
  return jsxRuntime.jsx(WalletList.WalletList, {});
65
69
  }
70
+ const shouldShowFooter = utils.isMobile() && showDefaultFooter;
66
71
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [error && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { className: 'login-with-email__error-container', withIcon: false, children: error })), jsxRuntime.jsx("div", { className: classNames.classNames('login-with-email__container', {
67
72
  'login-with-email__container--error': Boolean(error),
68
- }), children: jsxRuntime.jsx("div", { className: 'login-with-email__scroll', "data-testid": 'login-with-email-scroll', children: renderViewSections }) })] }));
73
+ }), children: jsxRuntime.jsx("div", { className: 'login-with-email__scroll', "data-testid": 'login-with-email-scroll', children: renderViewSections }) }), shouldShowFooter && jsxRuntime.jsx(DefaultFooter.DefaultFooter, { hideBorder: true })] }));
69
74
  };
70
75
 
71
76
  exports.LoginView = LoginView;
@@ -1,6 +1,7 @@
1
1
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
2
2
  import { useState, useEffect, useMemo } from 'react';
3
3
  import { SdkViewSectionType } from '@dynamic-labs/sdk-api';
4
+ import { isMobile } from '@dynamic-labs/utils';
4
5
  import { Divider } from '../../components/Divider/Divider.js';
5
6
  import { useErrorContext } from '../../context/ErrorContext/ErrorContext.js';
6
7
  import { ErrorContainer } from '../../components/ErrorContainer/ErrorContainer.js';
@@ -8,6 +9,8 @@ import { useLoadingContext } from '../../context/LoadingContext/LoadingContext.j
8
9
  import { classNames } from '../../utils/functions/classNames/classNames.js';
9
10
  import { useViewContext } from '../../context/ViewContext/ViewContext.js';
10
11
  import { WalletList } from '../WalletList/WalletList.js';
12
+ import { DefaultFooter } from '../../layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.js';
13
+ import { useAuthLayoutChecks } from '../../utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js';
11
14
  import { LoginEmailForm } from './sections/EmailSignInSection/LoginEmailForm.js';
12
15
  import { WalletSignInSection } from './sections/WalletSignInSection/WalletSignInSection.js';
13
16
  import { SocialSignInSection } from './sections/SocialSignInSection/SocialSignInSection.js';
@@ -38,6 +41,7 @@ const LoginView = () => {
38
41
  setShowWalletList(false);
39
42
  }
40
43
  }, [isWalletOnly, view]);
44
+ const { showDefaultFooter } = useAuthLayoutChecks();
41
45
  const numOfWallets = ((_a = logingViewSections.find((section) => section.type === SdkViewSectionType.Wallet)) === null || _a === void 0 ? void 0 : _a.numOfItemsToDisplay) || 0;
42
46
  const renderViewSections = useMemo(() => logingViewSections.map((viewSection, index) => {
43
47
  switch (viewSection.type) {
@@ -59,9 +63,10 @@ const LoginView = () => {
59
63
  if (showWalletList) {
60
64
  return jsx(WalletList, {});
61
65
  }
66
+ const shouldShowFooter = isMobile() && showDefaultFooter;
62
67
  return (jsxs(Fragment, { children: [error && (jsx(ErrorContainer, { className: 'login-with-email__error-container', withIcon: false, children: error })), jsx("div", { className: classNames('login-with-email__container', {
63
68
  'login-with-email__container--error': Boolean(error),
64
- }), children: jsx("div", { className: 'login-with-email__scroll', "data-testid": 'login-with-email-scroll', children: renderViewSections }) })] }));
69
+ }), children: jsx("div", { className: 'login-with-email__scroll', "data-testid": 'login-with-email-scroll', children: renderViewSections }) }), shouldShowFooter && jsx(DefaultFooter, { hideBorder: true })] }));
65
70
  };
66
71
 
67
72
  export { LoginView };
@@ -6,10 +6,10 @@ var _tslib = require('../../../../../../_virtual/_tslib.cjs');
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
7
  var React = require('react');
8
8
  var reactI18next = require('react-i18next');
9
- var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
10
9
  var classNames = require('../../../../utils/functions/classNames/classNames.cjs');
11
10
  require('@dynamic-labs/utils');
12
11
  var useInternalDynamicContext = require('../../../../context/DynamicContext/useInternalDynamicContext.cjs');
12
+ require('@dynamic-labs/wallet-connector-core');
13
13
  var CaptchaContext = require('../../../../context/CaptchaContext/CaptchaContext.cjs');
14
14
  var ErrorContext = require('../../../../context/ErrorContext/ErrorContext.cjs');
15
15
  var ViewContext = require('../../../../context/ViewContext/ViewContext.cjs');
@@ -29,6 +29,7 @@ require('../../../../context/AccountExistsContext/AccountExistsContext.cjs');
29
29
  require('../../../../config/ApiEndpoint.cjs');
30
30
  require('../../../../context/EmailVerificationContext/EmailVerificationContext.cjs');
31
31
  require('react-dom');
32
+ var findEmailOtpWalletConnector = require('../../../Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.cjs');
32
33
  require('../../../../context/ThemeContext/ThemeContext.cjs');
33
34
  require('@dynamic-labs/types');
34
35
  require('yup');
@@ -75,9 +76,7 @@ const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError,
75
76
  const { engageCaptcha } = CaptchaContext.useCaptchaContext();
76
77
  const [emailInput, setEmailInput] = React.useState(currentEmail !== null && currentEmail !== void 0 ? currentEmail : '');
77
78
  const [invalidEmail, setInvalidEmail] = React.useState(false);
78
- const emailWalletConnector = walletConnectorOptions
79
- .map(({ walletConnector }) => walletConnector)
80
- .find(walletConnectorCore.isEmailWalletConnector);
79
+ const emailWalletConnector = findEmailOtpWalletConnector.findEmailOtpWalletConnector(walletConnectorOptions);
81
80
  const { handleEmailSubmitWithOptionalCaptcha, isEmailProviderLoading } = useEmailProvider.useEmailProvider({
82
81
  emailWalletConnector,
83
82
  });
@@ -2,10 +2,10 @@ import { __awaiter } from '../../../../../../_virtual/_tslib.js';
2
2
  import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import { useState, useMemo, useReducer } from 'react';
4
4
  import { useTranslation } from 'react-i18next';
5
- import { isEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
6
5
  import { classNames } from '../../../../utils/functions/classNames/classNames.js';
7
6
  import '@dynamic-labs/utils';
8
7
  import { useInternalDynamicContext } from '../../../../context/DynamicContext/useInternalDynamicContext.js';
8
+ import '@dynamic-labs/wallet-connector-core';
9
9
  import { useCaptchaContext } from '../../../../context/CaptchaContext/CaptchaContext.js';
10
10
  import { useErrorContext } from '../../../../context/ErrorContext/ErrorContext.js';
11
11
  import { useViewContext } from '../../../../context/ViewContext/ViewContext.js';
@@ -25,6 +25,7 @@ import '../../../../context/AccountExistsContext/AccountExistsContext.js';
25
25
  import '../../../../config/ApiEndpoint.js';
26
26
  import '../../../../context/EmailVerificationContext/EmailVerificationContext.js';
27
27
  import 'react-dom';
28
+ import { findEmailOtpWalletConnector } from '../../../Passkey/utils/findEmailOtpWalletConnector/findEmailOtpWalletConnector.js';
28
29
  import '../../../../context/ThemeContext/ThemeContext.js';
29
30
  import '@dynamic-labs/types';
30
31
  import 'yup';
@@ -71,9 +72,7 @@ const LoginEmailForm = ({ isLoading: isExternalLoading, onSubmit, onSubmitError,
71
72
  const { engageCaptcha } = useCaptchaContext();
72
73
  const [emailInput, setEmailInput] = useState(currentEmail !== null && currentEmail !== void 0 ? currentEmail : '');
73
74
  const [invalidEmail, setInvalidEmail] = useState(false);
74
- const emailWalletConnector = walletConnectorOptions
75
- .map(({ walletConnector }) => walletConnector)
76
- .find(isEmailWalletConnector);
75
+ const emailWalletConnector = findEmailOtpWalletConnector(walletConnectorOptions);
77
76
  const { handleEmailSubmitWithOptionalCaptcha, isEmailProviderLoading } = useEmailProvider({
78
77
  emailWalletConnector,
79
78
  });
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
6
+
7
+ const findEmailOtpWalletConnector = (wallets) => {
8
+ const walletConnector = wallets
9
+ .map(({ walletConnector }) => walletConnector)
10
+ .find((walletConnector) => walletConnectorCore.isEmailWalletConnector(walletConnector) &&
11
+ // additional check to make sure the wallet connector actually implements its own otp workflow
12
+ // if a walletConnector only uses Dynamic's OTP, then canConnectViaEmail should be false
13
+ walletConnector.canConnectViaEmail);
14
+ return walletConnector;
15
+ };
16
+
17
+ exports.findEmailOtpWalletConnector = findEmailOtpWalletConnector;
@@ -0,0 +1,3 @@
1
+ import { IEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
2
+ import { WalletOption } from '../../../../shared';
3
+ export declare const findEmailOtpWalletConnector: (wallets: WalletOption[]) => IEmailWalletConnector | undefined;
@@ -0,0 +1,13 @@
1
+ import { isEmailWalletConnector } from '@dynamic-labs/wallet-connector-core';
2
+
3
+ const findEmailOtpWalletConnector = (wallets) => {
4
+ const walletConnector = wallets
5
+ .map(({ walletConnector }) => walletConnector)
6
+ .find((walletConnector) => isEmailWalletConnector(walletConnector) &&
7
+ // additional check to make sure the wallet connector actually implements its own otp workflow
8
+ // if a walletConnector only uses Dynamic's OTP, then canConnectViaEmail should be false
9
+ walletConnector.canConnectViaEmail);
10
+ return walletConnector;
11
+ };
12
+
13
+ export { findEmailOtpWalletConnector };
@@ -0,0 +1 @@
1
+ export { findEmailOtpWalletConnector } from './findEmailOtpWalletConnector';
@@ -1,3 +1,4 @@
1
1
  export * from './createEmbeddedWalletWithPasskey';
2
2
  export * from './findPasskeyEmailWalletConnector';
3
3
  export * from './createPregeneratedWallet';
4
+ export * from './findEmailOtpWalletConnector';
@@ -26,6 +26,7 @@ require('viem');
26
26
  require('@dynamic-labs/utils');
27
27
  require('../../shared/consts/index.cjs');
28
28
  var noWalletFound = require('../../assets/no-wallet-found.cjs');
29
+ var DefaultFooter = require('../../layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.cjs');
29
30
  var useAuthLayoutChecks = require('../../utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs');
30
31
  var SearchNotFoundMessage = require('./SearchNotFoundMessage/SearchNotFoundMessage.cjs');
31
32
  var WalletListItem = require('./WalletListItem/WalletListItem.cjs');
@@ -36,9 +37,10 @@ const WalletList = ({ isWalletConnectList = false, }) => {
36
37
  const { walletsFilter, signWithEmailWalletName, walletConnectorOptions, projectSettings, defaultNumberOfWalletsToShow, bridgeChainsToConnect, connectedWallets, authMode, multiWallet, walletConnector, } = useInternalDynamicContext.useInternalDynamicContext();
37
38
  const { walletBook: walletBook$1 } = walletBook.useWalletBookContext();
38
39
  const { error } = ErrorContext.useErrorContext();
40
+ const { showDefaultFooter } = useAuthLayoutChecks.useAuthLayoutChecks(walletConnector);
41
+ const [footerBorderIsVisible, setFooterBorderIsVisible] = React.useState(true);
39
42
  const { t } = reactI18next.useTranslation();
40
43
  const [filterValue, setFilterValue] = React.useState((_a = localStorage.LocalStorage.getFromLS(localStorage$1.WALLET_PICKER_SEARCH_KEY)) !== null && _a !== void 0 ? _a : '');
41
- const [footerIsVisible, setFooterIsVisibile] = React.useState(false);
42
44
  const getFilteredBridgeChains = (bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length) &&
43
45
  index.FilterBridgeChainsName(bridgeChainsToConnect[0].chain);
44
46
  const filteredBridgeChains = getFilteredBridgeChains && getFilteredBridgeChains(walletConnectorOptions);
@@ -59,7 +61,6 @@ const WalletList = ({ isWalletConnectList = false, }) => {
59
61
  });
60
62
  const isSearchEnabled = numberOfWallets > defaultNumberOfWalletsToShow &&
61
63
  walletsList.length !== numberOfWallets;
62
- const { showDefaultFooter } = useAuthLayoutChecks.useAuthLayoutChecks(walletConnector);
63
64
  const walletListScrollRef = React.useRef(null);
64
65
  /* istanbul ignore next */
65
66
  const handleScroll = () => {
@@ -68,10 +69,10 @@ const WalletList = ({ isWalletConnectList = false, }) => {
68
69
  return;
69
70
  }
70
71
  if ((element === null || element === void 0 ? void 0 : element.scrollTop) > (element === null || element === void 0 ? void 0 : element.clientHeight) * 1.25) {
71
- setFooterIsVisibile(true);
72
+ setFooterBorderIsVisible(false);
72
73
  }
73
74
  else {
74
- setFooterIsVisibile(false);
75
+ setFooterBorderIsVisible(true);
75
76
  }
76
77
  };
77
78
  const handleFilterValueChange = (value) => {
@@ -84,9 +85,7 @@ const WalletList = ({ isWalletConnectList = false, }) => {
84
85
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [searchContainer, Boolean(error) && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { className: 'wallet-list__error-container', withIcon: false, children: error })), jsxRuntime.jsx("div", { className: 'wallet-list__container', children: jsxRuntime.jsxs("div", { className: classNames.classNames('wallet-list__scroll-container', {
85
86
  'wallet-list__scroll-container--error': Boolean(error),
86
87
  'wallet-list__scroll-container--full-height': isSearchEnabled,
87
- }), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll, children: [!projectSettings ? (jsxRuntime.jsx(Skeleton.Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [walletConnectorOptions.length === 0 && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { copykey: 'dyn_wallet_list.configuration_mismatch', children: t('dyn_wallet_list.configuration_mismatch') })), walletConnectorOptions.length && walletsList.length === 0 ? (jsxRuntime.jsx(SearchNotFoundMessage.SearchNotFoundMessage, { title: t('dyn_wallet_list.search.not_found.title'), subtitle: t('dyn_wallet_list.search.not_found.description'), image: jsxRuntime.jsx(noWalletFound.ReactComponent, {}) })) : (walletsList.map((wallet, index) => (jsxRuntime.jsx(WalletListItem.WalletListItem, { wallet: wallet, usingMultiWallet: multiWallet, onResetSearchValue: () => handleFilterValueChange('') }, `${wallet.key}_${index}`))))] })), isSearchEnabled && !filterValue && projectSettings && (jsxRuntime.jsx(SearchNotFoundMessage.SearchNotFoundMessage, {}))] }) }), showDefaultFooter && (jsxRuntime.jsx("div", { className: classNames.classNames('wallet-list__tiny-footer', {
88
- 'wallet-list__tiny-footer--hidden': footerIsVisible,
89
- }), "data-testid": 'wallet-list-tiny-footer' }))] }));
88
+ }), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll, children: [!projectSettings ? (jsxRuntime.jsx(Skeleton.Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [walletConnectorOptions.length === 0 && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { copykey: 'dyn_wallet_list.configuration_mismatch', children: t('dyn_wallet_list.configuration_mismatch') })), walletConnectorOptions.length && walletsList.length === 0 ? (jsxRuntime.jsx(SearchNotFoundMessage.SearchNotFoundMessage, { title: t('dyn_wallet_list.search.not_found.title'), subtitle: t('dyn_wallet_list.search.not_found.description'), image: jsxRuntime.jsx(noWalletFound.ReactComponent, {}) })) : (walletsList.map((wallet, index) => (jsxRuntime.jsx(WalletListItem.WalletListItem, { wallet: wallet, usingMultiWallet: multiWallet, onResetSearchValue: () => handleFilterValueChange('') }, `${wallet.key}_${index}`))))] })), isSearchEnabled && !filterValue && projectSettings && (jsxRuntime.jsx(SearchNotFoundMessage.SearchNotFoundMessage, {}))] }) }), showDefaultFooter && (jsxRuntime.jsx(DefaultFooter.DefaultFooter, { hideBorder: !footerBorderIsVisible }))] }));
90
89
  };
91
90
 
92
91
  exports.WalletList = WalletList;
@@ -22,6 +22,7 @@ import 'viem';
22
22
  import '@dynamic-labs/utils';
23
23
  import '../../shared/consts/index.js';
24
24
  import { ReactComponent as SvgNoWalletFound } from '../../assets/no-wallet-found.js';
25
+ import { DefaultFooter } from '../../layout/DynamicAuthLayout/DefaultFooter/DefaultFooter.js';
25
26
  import { useAuthLayoutChecks } from '../../utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js';
26
27
  import { SearchNotFoundMessage } from './SearchNotFoundMessage/SearchNotFoundMessage.js';
27
28
  import { WalletListItem } from './WalletListItem/WalletListItem.js';
@@ -32,9 +33,10 @@ const WalletList = ({ isWalletConnectList = false, }) => {
32
33
  const { walletsFilter, signWithEmailWalletName, walletConnectorOptions, projectSettings, defaultNumberOfWalletsToShow, bridgeChainsToConnect, connectedWallets, authMode, multiWallet, walletConnector, } = useInternalDynamicContext();
33
34
  const { walletBook } = useWalletBookContext();
34
35
  const { error } = useErrorContext();
36
+ const { showDefaultFooter } = useAuthLayoutChecks(walletConnector);
37
+ const [footerBorderIsVisible, setFooterBorderIsVisible] = useState(true);
35
38
  const { t } = useTranslation();
36
39
  const [filterValue, setFilterValue] = useState((_a = LocalStorage.getFromLS(WALLET_PICKER_SEARCH_KEY)) !== null && _a !== void 0 ? _a : '');
37
- const [footerIsVisible, setFooterIsVisibile] = useState(false);
38
40
  const getFilteredBridgeChains = (bridgeChainsToConnect === null || bridgeChainsToConnect === void 0 ? void 0 : bridgeChainsToConnect.length) &&
39
41
  FilterBridgeChainsName(bridgeChainsToConnect[0].chain);
40
42
  const filteredBridgeChains = getFilteredBridgeChains && getFilteredBridgeChains(walletConnectorOptions);
@@ -55,7 +57,6 @@ const WalletList = ({ isWalletConnectList = false, }) => {
55
57
  });
56
58
  const isSearchEnabled = numberOfWallets > defaultNumberOfWalletsToShow &&
57
59
  walletsList.length !== numberOfWallets;
58
- const { showDefaultFooter } = useAuthLayoutChecks(walletConnector);
59
60
  const walletListScrollRef = useRef(null);
60
61
  /* istanbul ignore next */
61
62
  const handleScroll = () => {
@@ -64,10 +65,10 @@ const WalletList = ({ isWalletConnectList = false, }) => {
64
65
  return;
65
66
  }
66
67
  if ((element === null || element === void 0 ? void 0 : element.scrollTop) > (element === null || element === void 0 ? void 0 : element.clientHeight) * 1.25) {
67
- setFooterIsVisibile(true);
68
+ setFooterBorderIsVisible(false);
68
69
  }
69
70
  else {
70
- setFooterIsVisibile(false);
71
+ setFooterBorderIsVisible(true);
71
72
  }
72
73
  };
73
74
  const handleFilterValueChange = (value) => {
@@ -80,9 +81,7 @@ const WalletList = ({ isWalletConnectList = false, }) => {
80
81
  return (jsxs(Fragment, { children: [searchContainer, Boolean(error) && (jsx(ErrorContainer, { className: 'wallet-list__error-container', withIcon: false, children: error })), jsx("div", { className: 'wallet-list__container', children: jsxs("div", { className: classNames('wallet-list__scroll-container', {
81
82
  'wallet-list__scroll-container--error': Boolean(error),
82
83
  'wallet-list__scroll-container--full-height': isSearchEnabled,
83
- }), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll, children: [!projectSettings ? (jsx(Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxs(Fragment, { children: [walletConnectorOptions.length === 0 && (jsx(ErrorContainer, { copykey: 'dyn_wallet_list.configuration_mismatch', children: t('dyn_wallet_list.configuration_mismatch') })), walletConnectorOptions.length && walletsList.length === 0 ? (jsx(SearchNotFoundMessage, { title: t('dyn_wallet_list.search.not_found.title'), subtitle: t('dyn_wallet_list.search.not_found.description'), image: jsx(SvgNoWalletFound, {}) })) : (walletsList.map((wallet, index) => (jsx(WalletListItem, { wallet: wallet, usingMultiWallet: multiWallet, onResetSearchValue: () => handleFilterValueChange('') }, `${wallet.key}_${index}`))))] })), isSearchEnabled && !filterValue && projectSettings && (jsx(SearchNotFoundMessage, {}))] }) }), showDefaultFooter && (jsx("div", { className: classNames('wallet-list__tiny-footer', {
84
- 'wallet-list__tiny-footer--hidden': footerIsVisible,
85
- }), "data-testid": 'wallet-list-tiny-footer' }))] }));
84
+ }), "data-testid": 'wallet-list-scroll-container', ref: walletListScrollRef, onScroll: handleScroll, children: [!projectSettings ? (jsx(Skeleton, { count: 10, className: 'wallet-list__tile-skeleton' })) : (jsxs(Fragment, { children: [walletConnectorOptions.length === 0 && (jsx(ErrorContainer, { copykey: 'dyn_wallet_list.configuration_mismatch', children: t('dyn_wallet_list.configuration_mismatch') })), walletConnectorOptions.length && walletsList.length === 0 ? (jsx(SearchNotFoundMessage, { title: t('dyn_wallet_list.search.not_found.title'), subtitle: t('dyn_wallet_list.search.not_found.description'), image: jsx(SvgNoWalletFound, {}) })) : (walletsList.map((wallet, index) => (jsx(WalletListItem, { wallet: wallet, usingMultiWallet: multiWallet, onResetSearchValue: () => handleFilterValueChange('') }, `${wallet.key}_${index}`))))] })), isSearchEnabled && !filterValue && projectSettings && (jsx(SearchNotFoundMessage, {}))] }) }), showDefaultFooter && (jsx(DefaultFooter, { hideBorder: !footerBorderIsVisible }))] }));
86
85
  };
87
86
 
88
87
  export { WalletList };