@dynamic-labs/sdk-react-core 2.1.0-alpha.15 → 2.1.0-alpha.17

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 (102) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/package.cjs +3 -2
  3. package/package.js +3 -2
  4. package/package.json +13 -12
  5. package/src/index.cjs +0 -2
  6. package/src/index.d.ts +1 -3
  7. package/src/index.js +0 -1
  8. package/src/lib/components/Portal/Portal.cjs +3 -1
  9. package/src/lib/components/Portal/Portal.js +3 -1
  10. package/src/lib/context/DynamicContext/DynamicContext.cjs +20 -14
  11. package/src/lib/context/DynamicContext/DynamicContext.d.ts +2 -1
  12. package/src/lib/context/DynamicContext/DynamicContext.js +20 -14
  13. package/src/lib/context/DynamicContext/hooks/useHandleLogout/types.d.ts +0 -1
  14. package/src/lib/context/DynamicContext/hooks/useHandleLogout/useHandleLogout.cjs +5 -1
  15. package/src/lib/context/DynamicContext/hooks/useHandleLogout/useHandleLogout.js +5 -1
  16. package/src/lib/context/DynamicContext/types/index.d.ts +4 -1
  17. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.cjs +2 -1
  18. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.d.ts +1 -1
  19. package/src/lib/context/DynamicContext/useDynamicContext/useDynamicContext.js +2 -1
  20. package/src/lib/context/DynamicContext/validators/validators.cjs +0 -29
  21. package/src/lib/context/DynamicContext/validators/validators.d.ts +0 -2
  22. package/src/lib/context/DynamicContext/validators/validators.js +1 -29
  23. package/src/lib/context/ViewContext/types/index.d.ts +1 -1
  24. package/src/lib/locale/en/translation.cjs +18 -0
  25. package/src/lib/locale/en/translation.d.ts +18 -0
  26. package/src/lib/locale/en/translation.js +18 -0
  27. package/src/lib/shared/utils/classes/storage/localStorage.cjs +1 -8
  28. package/src/lib/shared/utils/classes/storage/localStorage.js +2 -9
  29. package/src/lib/shared/utils/functions/index.d.ts +0 -1
  30. package/src/lib/shared/utils/functions/wallet/createWallet.d.ts +0 -4
  31. package/src/lib/store/actions/storeActions/index.d.ts +1 -0
  32. package/src/lib/store/actions/storeActions/storeActions.cjs +10 -0
  33. package/src/lib/store/actions/storeActions/storeActions.d.ts +1 -0
  34. package/src/lib/store/actions/storeActions/storeActions.js +6 -0
  35. package/src/lib/store/actions/userActions/index.d.ts +1 -0
  36. package/src/lib/store/actions/userActions/userActions.cjs +10 -0
  37. package/src/lib/store/actions/userActions/userActions.d.ts +7 -0
  38. package/src/lib/store/actions/userActions/userActions.js +6 -0
  39. package/src/lib/store/hooks/useUser/index.d.ts +1 -0
  40. package/src/lib/store/hooks/useUser/useUser.cjs +12 -0
  41. package/src/lib/store/hooks/useUser/useUser.d.ts +1 -0
  42. package/src/lib/store/hooks/useUser/useUser.js +8 -0
  43. package/src/lib/store/index.d.ts +4 -0
  44. package/src/lib/store/store.cjs +24 -0
  45. package/src/lib/store/store.d.ts +13 -0
  46. package/src/lib/store/store.js +19 -0
  47. package/src/lib/store/types.d.ts +4 -0
  48. package/src/lib/store/utils/createStore/createStore.cjs +21 -0
  49. package/src/lib/store/utils/createStore/createStore.d.ts +16 -0
  50. package/src/lib/store/utils/createStore/createStore.js +17 -0
  51. package/src/lib/store/utils/createStore/index.d.ts +1 -0
  52. package/src/lib/store/utils/syncLegacyStorage/index.d.ts +1 -0
  53. package/src/lib/store/utils/syncLegacyStorage/syncLegacyStorage.cjs +30 -0
  54. package/src/lib/store/utils/syncLegacyStorage/syncLegacyStorage.d.ts +2 -0
  55. package/src/lib/store/utils/syncLegacyStorage/syncLegacyStorage.js +26 -0
  56. package/src/lib/styles/index.shadow.cjs +1 -1
  57. package/src/lib/styles/index.shadow.js +1 -1
  58. package/src/lib/utils/constants/index.d.ts +1 -1
  59. package/src/lib/utils/constants/localStorage.cjs +2 -2
  60. package/src/lib/utils/constants/localStorage.d.ts +1 -1
  61. package/src/lib/utils/constants/localStorage.js +2 -2
  62. package/src/lib/utils/functions/downloadFile/downloadFile.cjs +15 -0
  63. package/src/lib/utils/functions/downloadFile/downloadFile.d.ts +1 -0
  64. package/src/lib/utils/functions/downloadFile/downloadFile.js +11 -0
  65. package/src/lib/utils/functions/downloadFile/index.d.ts +1 -0
  66. package/src/lib/utils/functions/index.d.ts +1 -0
  67. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.cjs +4 -2
  68. package/src/lib/utils/hooks/useAuthLayoutChecks/useAuthLayoutChecks.js +4 -2
  69. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.cjs +4 -0
  70. package/src/lib/utils/hooks/useDynamicLayoutData/useDynamicLayoutData.js +4 -0
  71. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.cjs +6 -3
  72. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.d.ts +1 -4
  73. package/src/lib/utils/hooks/useHandleUnlinkWallet/useHandleUnlinkWallet.js +5 -2
  74. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.cjs +6 -2
  75. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.d.ts +1 -4
  76. package/src/lib/utils/hooks/usePrimaryWalletId/usePrimaryWalletId.js +5 -1
  77. package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.cjs +2 -1
  78. package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.d.ts +3 -2
  79. package/src/lib/utils/hooks/useWalletConnectorOptions/useWalletConnectorOptions.js +2 -1
  80. package/src/lib/views/CreatePasswordView/SavePasswordStep/SavePasswordStep.cjs +5 -10
  81. package/src/lib/views/CreatePasswordView/SavePasswordStep/SavePasswordStep.js +5 -10
  82. package/src/lib/views/MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.cjs +111 -0
  83. package/src/lib/views/MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.d.ts +2 -0
  84. package/src/lib/views/MfaDisplayBackupCodesView/MfaDisplayBackupCodesView.js +107 -0
  85. package/src/lib/views/MfaDisplayBackupCodesView/index.d.ts +1 -0
  86. package/src/lib/views/MfaVerificationView/MfaVerificationView.cjs +3 -3
  87. package/src/lib/views/MfaVerificationView/MfaVerificationView.js +3 -3
  88. package/src/lib/views/WalletList/WalletListGridTabs/WalletListGridTabs.cjs +1 -1
  89. package/src/lib/views/WalletList/WalletListGridTabs/WalletListGridTabs.js +1 -1
  90. package/src/lib/views/WalletList/hooks/useTabState.cjs +4 -1
  91. package/src/lib/views/WalletList/hooks/useTabState.js +4 -1
  92. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.cjs +22 -0
  93. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.d.ts +2 -0
  94. package/src/lib/views/WalletList/utils/getInitialTabIndex/getInitialTabIndex.js +18 -0
  95. package/src/lib/views/WalletList/utils/getInitialTabIndex/index.d.ts +1 -0
  96. package/src/lib/views/viewToComponentMap.cjs +2 -0
  97. package/src/lib/views/viewToComponentMap.d.ts +1 -0
  98. package/src/lib/views/viewToComponentMap.js +2 -0
  99. package/src/lib/shared/utils/functions/validateType/index.d.ts +0 -1
  100. package/src/lib/shared/utils/functions/validateType/validateType.cjs +0 -30
  101. package/src/lib/shared/utils/functions/validateType/validateType.d.ts +0 -1
  102. package/src/lib/shared/utils/functions/validateType/validateType.js +0 -26
@@ -1,4 +1,4 @@
1
- export { AUTH_TOKEN, AUTH_MIN_TOKEN, AUTH_ONBOARDING_TOKEN, AUTH_USER, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, NONCE_STORAGE_KEY, PRIMARY_WALLET_ID, THEME, WALLET_PICKER_SEARCH_KEY, AUTH_MODE, PHANTOM_SIGNATURE_STATE, } from './localStorage';
1
+ export { AUTH_TOKEN, AUTH_MIN_TOKEN, AUTH_ONBOARDING_TOKEN, STORE_STORAGE_KEY, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, NONCE_STORAGE_KEY, PRIMARY_WALLET_ID, THEME, WALLET_PICKER_SEARCH_KEY, AUTH_MODE, PHANTOM_SIGNATURE_STATE, } from './localStorage';
2
2
  export { BASE_LIGHT_1, BASE_LIGHT_2, BASE_LIGHT_3, BASE_LIGHT_4, BASE_LIGHT_5, BASE_DARK_5, TEXT_LIGHT_PRIMARY, TEXT_LIGHT_SECONDARY, TEXT_LIGHT_TERTIARY, TEXT_LIGHT_LINK, CONNECTION_LIGHT_GREEN, CONNECTION_LIGHT_ORANGE, ERROR_LIGHT_1, ERROR_LIGHT_2, OVERLAY_LIGHT, HOVER_LIGHT, LOADING_ANIMATION_GRADIENT_LIGHT, BASE_DARK_1, BASE_DARK_2, BASE_DARK_3, BASE_DARK_4, DYNAMIC_CONNECT_BUTTON_BACKGROUND, DYNAMIC_CONNECT_BUTTON_BORDER, DYNAMIC_CONNECT_BUTTON_COLOR, TEXT_DARK_PRIMARY, TEXT_DARK_SECONDARY, TEXT_DARK_TERTIARY, TEXT_DARK_LINK, BRAND_HOVER, BRAND_PRIMARY, BRAND_SECONDARY, CONNECTION_DARK_GREEN, CONNECTION_DARK_ORANGE, ERROR_DARK_1, ERROR_DARK_2, OVERLAY_DARK, HOVER_DARK, LOADING_ANIMATION_GRADIENT_DARK, SHADOW_DOWN_1, SHADOW_DOWN_2, SHADOW_DOWN_3, SHADOW_UP_1, BRAND_HOVER_COLOR, BRAND_PRIMARY_COLOR, BRAND_SECONDARY_COLOR, } from './colors';
3
3
  export { BORDER_SQUARE, BORDER_ROUNDED, BORDER_RADIUS } from './theme';
4
4
  export { TITLE, BODY_NORMAL, BODY_SMALL, BODY_MINI, BUTTON_PRIMARY, BUTTON_SECONDARY, NUMBERS_BIG, NUMBERS_MEDIUM, } from './typography';
@@ -6,7 +6,6 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  const AUTH_TOKEN = 'dynamic_authentication_token';
7
7
  const AUTH_MIN_TOKEN = 'dynamic_min_authentication_token';
8
8
  const AUTH_ONBOARDING_TOKEN = 'dynamic_onboarding_authentication_token';
9
- const AUTH_USER = 'dynamic_authenticated_user';
10
9
  const LAST_USED_WALLET = 'dynamic_last_used_wallet';
11
10
  const NETWORKS_STORAGE_KEY = 'dynamic_networks';
12
11
  const NONCE_STORAGE_KEY = 'dynamic_nonce';
@@ -27,12 +26,12 @@ const PHONE_INPUT_DEFAULT_COUNTRY = 'dynamic_phone_input_default_country';
27
26
  * Used to identify the purpose of a signature after phantom redirects back to the app in mobile
28
27
  */
29
28
  const PHANTOM_SIGNATURE_STATE = 'phantom_verification_type';
29
+ const STORE_STORAGE_KEY = 'dynamic_store';
30
30
 
31
31
  exports.AUTH_MIN_TOKEN = AUTH_MIN_TOKEN;
32
32
  exports.AUTH_MODE = AUTH_MODE;
33
33
  exports.AUTH_ONBOARDING_TOKEN = AUTH_ONBOARDING_TOKEN;
34
34
  exports.AUTH_TOKEN = AUTH_TOKEN;
35
- exports.AUTH_USER = AUTH_USER;
36
35
  exports.BRIDGE_ONBOARDING_COMPLETED = BRIDGE_ONBOARDING_COMPLETED;
37
36
  exports.CONNECTED_WALLETS_INFO = CONNECTED_WALLETS_INFO;
38
37
  exports.CONNECTED_WALLET_NAME_SERVICE = CONNECTED_WALLET_NAME_SERVICE;
@@ -47,5 +46,6 @@ exports.PHANTOM_SIGNATURE_STATE = PHANTOM_SIGNATURE_STATE;
47
46
  exports.PHONE_INPUT_DEFAULT_COUNTRY = PHONE_INPUT_DEFAULT_COUNTRY;
48
47
  exports.PRIMARY_WALLET_ID = PRIMARY_WALLET_ID;
49
48
  exports.PROJECT_SETTINGS_STORAGE_KEY = PROJECT_SETTINGS_STORAGE_KEY;
49
+ exports.STORE_STORAGE_KEY = STORE_STORAGE_KEY;
50
50
  exports.WAGMI_LAST_SESSION_SETTINGS = WAGMI_LAST_SESSION_SETTINGS;
51
51
  exports.WALLET_PICKER_SEARCH_KEY = WALLET_PICKER_SEARCH_KEY;
@@ -1,7 +1,6 @@
1
1
  export declare const AUTH_TOKEN = "dynamic_authentication_token";
2
2
  export declare const AUTH_MIN_TOKEN = "dynamic_min_authentication_token";
3
3
  export declare const AUTH_ONBOARDING_TOKEN = "dynamic_onboarding_authentication_token";
4
- export declare const AUTH_USER = "dynamic_authenticated_user";
5
4
  export declare const LAST_USED_WALLET = "dynamic_last_used_wallet";
6
5
  export declare const NETWORKS_STORAGE_KEY = "dynamic_networks";
7
6
  export declare const NONCE_STORAGE_KEY = "dynamic_nonce";
@@ -32,3 +31,4 @@ export type PhantomSignatureState = {
32
31
  * Used to identify the purpose of a signature after phantom redirects back to the app in mobile
33
32
  */
34
33
  export declare const PHANTOM_SIGNATURE_STATE = "phantom_verification_type";
34
+ export declare const STORE_STORAGE_KEY = "dynamic_store";
@@ -2,7 +2,6 @@
2
2
  const AUTH_TOKEN = 'dynamic_authentication_token';
3
3
  const AUTH_MIN_TOKEN = 'dynamic_min_authentication_token';
4
4
  const AUTH_ONBOARDING_TOKEN = 'dynamic_onboarding_authentication_token';
5
- const AUTH_USER = 'dynamic_authenticated_user';
6
5
  const LAST_USED_WALLET = 'dynamic_last_used_wallet';
7
6
  const NETWORKS_STORAGE_KEY = 'dynamic_networks';
8
7
  const NONCE_STORAGE_KEY = 'dynamic_nonce';
@@ -23,5 +22,6 @@ const PHONE_INPUT_DEFAULT_COUNTRY = 'dynamic_phone_input_default_country';
23
22
  * Used to identify the purpose of a signature after phantom redirects back to the app in mobile
24
23
  */
25
24
  const PHANTOM_SIGNATURE_STATE = 'phantom_verification_type';
25
+ const STORE_STORAGE_KEY = 'dynamic_store';
26
26
 
27
- export { AUTH_MIN_TOKEN, AUTH_MODE, AUTH_ONBOARDING_TOKEN, AUTH_TOKEN, AUTH_USER, BRIDGE_ONBOARDING_COMPLETED, CONNECTED_WALLETS_INFO, CONNECTED_WALLET_NAME_SERVICE, DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, EMBEDDED_WALLET_SECURE_BANNER, EMBEDDED_WALLET_SESSION_SETTINGS, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY, NONCE_STORAGE_KEY, PHANTOM_SIGNATURE_STATE, PHONE_INPUT_DEFAULT_COUNTRY, PRIMARY_WALLET_ID, PROJECT_SETTINGS_STORAGE_KEY, WAGMI_LAST_SESSION_SETTINGS, WALLET_PICKER_SEARCH_KEY };
27
+ export { AUTH_MIN_TOKEN, AUTH_MODE, AUTH_ONBOARDING_TOKEN, AUTH_TOKEN, BRIDGE_ONBOARDING_COMPLETED, CONNECTED_WALLETS_INFO, CONNECTED_WALLET_NAME_SERVICE, DYNAMIC_CONTEXT_LAST_SESSION_SETTINGS, EMBEDDED_WALLET_SECURE_BANNER, EMBEDDED_WALLET_SESSION_SETTINGS, LAST_USED_WALLET, NETWORKS_STORAGE_KEY, NEWTOWEB3_WALLET_EXTENSION_FLAG_KEY, NONCE_STORAGE_KEY, PHANTOM_SIGNATURE_STATE, PHONE_INPUT_DEFAULT_COUNTRY, PRIMARY_WALLET_ID, PROJECT_SETTINGS_STORAGE_KEY, STORE_STORAGE_KEY, WAGMI_LAST_SESSION_SETTINGS, WALLET_PICKER_SEARCH_KEY };
@@ -0,0 +1,15 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ const downloadFile = (fileName, content) => {
7
+ const element = document.createElement('a');
8
+ const file = new Blob([content], { type: 'text/plain' });
9
+ element.href = URL.createObjectURL(file);
10
+ element.download = fileName;
11
+ document.body.appendChild(element);
12
+ element.click();
13
+ };
14
+
15
+ exports.downloadFile = downloadFile;
@@ -0,0 +1 @@
1
+ export declare const downloadFile: (fileName: string, content: string) => void;
@@ -0,0 +1,11 @@
1
+ 'use client'
2
+ const downloadFile = (fileName, content) => {
3
+ const element = document.createElement('a');
4
+ const file = new Blob([content], { type: 'text/plain' });
5
+ element.href = URL.createObjectURL(file);
6
+ element.download = fileName;
7
+ document.body.appendChild(element);
8
+ element.click();
9
+ };
10
+
11
+ export { downloadFile };
@@ -0,0 +1 @@
1
+ export { downloadFile } from './downloadFile';
@@ -74,3 +74,4 @@ export * from './hasEmbeddedWallet';
74
74
  export * from './getEmbeddedWalletAuthHandler';
75
75
  export * from './getEmbeddedWalletSessionExpiration';
76
76
  export * from './serializeWalletConnectors';
77
+ export * from './downloadFile';
@@ -168,7 +168,8 @@ const useAuthLayoutChecks = () => {
168
168
  view.type === 'farcaster-connect-view' ||
169
169
  view.type === 'merge-user-accounts' ||
170
170
  view.type === 'merge-user-accounts-conflicts' ||
171
- view.type === 'mfa-verification');
171
+ view.type === 'mfa-verification' ||
172
+ view.type === 'mfa-display-backup-codes');
172
173
  const showCloseButton = view.type !== 'login-with-email-or-wallet-full-wallet-list' &&
173
174
  view.type !== 'login-with-email-verification' &&
174
175
  view.type !== 'login-with-sms-verification' &&
@@ -178,7 +179,8 @@ const useAuthLayoutChecks = () => {
178
179
  view.type !== 'passkey-recovery-bundle' &&
179
180
  view.type !== 'rename-passkey' &&
180
181
  view.type !== 'qr-code' &&
181
- view.type !== 'mfa-verification';
182
+ view.type !== 'mfa-verification' &&
183
+ view.type !== 'mfa-display-backup-codes';
182
184
  const showBackButton = view.type === 'pending-signature' ||
183
185
  view.type === 'no-qr-not-installed' ||
184
186
  view.type === 'wallet-connect-mobile-wallets-list' ||
@@ -164,7 +164,8 @@ const useAuthLayoutChecks = () => {
164
164
  view.type === 'farcaster-connect-view' ||
165
165
  view.type === 'merge-user-accounts' ||
166
166
  view.type === 'merge-user-accounts-conflicts' ||
167
- view.type === 'mfa-verification');
167
+ view.type === 'mfa-verification' ||
168
+ view.type === 'mfa-display-backup-codes');
168
169
  const showCloseButton = view.type !== 'login-with-email-or-wallet-full-wallet-list' &&
169
170
  view.type !== 'login-with-email-verification' &&
170
171
  view.type !== 'login-with-sms-verification' &&
@@ -174,7 +175,8 @@ const useAuthLayoutChecks = () => {
174
175
  view.type !== 'passkey-recovery-bundle' &&
175
176
  view.type !== 'rename-passkey' &&
176
177
  view.type !== 'qr-code' &&
177
- view.type !== 'mfa-verification';
178
+ view.type !== 'mfa-verification' &&
179
+ view.type !== 'mfa-display-backup-codes';
178
180
  const showBackButton = view.type === 'pending-signature' ||
179
181
  view.type === 'no-qr-not-installed' ||
180
182
  view.type === 'wallet-connect-mobile-wallets-list' ||
@@ -113,6 +113,10 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
113
113
  copykey: 'dyn_mfa.choose_device_view.title',
114
114
  heading: t('dyn_mfa.choose_device_view.title'),
115
115
  },
116
+ 'mfa-display-backup-codes': {
117
+ copykey: 'dyn_mfa.display_backup_codes_view.title',
118
+ heading: t('dyn_mfa.display_backup_codes_view.title'),
119
+ },
116
120
  'mfa-secure-device': {
117
121
  copykey: 'dyn_mfa.secure_device_view.title',
118
122
  heading: t('dyn_mfa.secure_device_view.title'),
@@ -109,6 +109,10 @@ const useDynamicLayoutData = ({ view, authMode, }) => {
109
109
  copykey: 'dyn_mfa.choose_device_view.title',
110
110
  heading: t('dyn_mfa.choose_device_view.title'),
111
111
  },
112
+ 'mfa-display-backup-codes': {
113
+ copykey: 'dyn_mfa.display_backup_codes_view.title',
114
+ heading: t('dyn_mfa.display_backup_codes_view.title'),
115
+ },
112
116
  'mfa-secure-device': {
113
117
  copykey: 'dyn_mfa.secure_device_view.title',
114
118
  heading: t('dyn_mfa.secure_device_view.title'),
@@ -20,8 +20,12 @@ var localStorage = require('../../../shared/utils/classes/storage/localStorage.c
20
20
  require('@dynamic-labs/utils');
21
21
  require('../../../shared/consts/index.cjs');
22
22
  var handleUnlinkHelper = require('../../functions/handleUnlinkHelper/handleUnlinkHelper.cjs');
23
+ var userActions = require('../../../store/actions/userActions/userActions.cjs');
24
+ require('zustand');
25
+ require('zustand/middleware');
26
+ require('zustand/react/shallow');
23
27
 
24
- const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, setUser, }) => {
28
+ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, }) => {
25
29
  const { removedWalletsIds } = UserWalletsContext.useInternalUserWallets();
26
30
  const callback = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
27
31
  var _a;
@@ -43,7 +47,7 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
43
47
  walletId,
44
48
  });
45
49
  if (newUser) {
46
- setUser(newUser);
50
+ userActions.setUser(newUser);
47
51
  }
48
52
  const wallet = secondaryWallets.find((w) => w.id === walletId);
49
53
  const numberOfLinkedWallets = verifiedCredentials.filter((account) => account.walletName === ((wallet === null || wallet === void 0 ? void 0 : wallet.connector.key) || '')).length;
@@ -56,7 +60,6 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
56
60
  primaryWalletId,
57
61
  environmentId,
58
62
  secondaryWallets,
59
- setUser,
60
63
  verifiedCredentials,
61
64
  removedWalletsIds,
62
65
  ]);
@@ -1,13 +1,10 @@
1
- import { Dispatch, SetStateAction } from 'react';
2
1
  import { JwtVerifiedCredential } from '@dynamic-labs/sdk-api-core';
3
- import { UserProfile } from '@dynamic-labs/types';
4
2
  import { Wallet } from '../../../shared';
5
3
  type UseHandleUnlinkProps = {
6
4
  environmentId: string;
7
5
  primaryWalletId: string | undefined;
8
6
  secondaryWallets: Wallet[];
9
- setUser: Dispatch<SetStateAction<UserProfile | undefined>>;
10
7
  verifiedCredentials: JwtVerifiedCredential[];
11
8
  };
12
- export declare const useHandleUnlinkWallet: ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, setUser, }: UseHandleUnlinkProps) => (walletId: string) => Promise<void>;
9
+ export declare const useHandleUnlinkWallet: ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, }: UseHandleUnlinkProps) => (walletId: string) => Promise<void>;
13
10
  export {};
@@ -16,8 +16,12 @@ import { LocalStorage } from '../../../shared/utils/classes/storage/localStorage
16
16
  import '@dynamic-labs/utils';
17
17
  import '../../../shared/consts/index.js';
18
18
  import { handleUnlinkHelper } from '../../functions/handleUnlinkHelper/handleUnlinkHelper.js';
19
+ import { setUser } from '../../../store/actions/userActions/userActions.js';
20
+ import 'zustand';
21
+ import 'zustand/middleware';
22
+ import 'zustand/react/shallow';
19
23
 
20
- const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, setUser, }) => {
24
+ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWalletId, secondaryWallets, }) => {
21
25
  const { removedWalletsIds } = useInternalUserWallets();
22
26
  const callback = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
23
27
  var _a;
@@ -52,7 +56,6 @@ const useHandleUnlinkWallet = ({ verifiedCredentials, environmentId, primaryWall
52
56
  primaryWalletId,
53
57
  environmentId,
54
58
  secondaryWallets,
55
- setUser,
56
59
  verifiedCredentials,
57
60
  removedWalletsIds,
58
61
  ]);
@@ -28,8 +28,12 @@ require('../../../config/ApiEndpoint.cjs');
28
28
  require('../../../locale/locale.cjs');
29
29
  var wallets = require('../../../data/api/wallets/wallets.cjs');
30
30
  var updateJWTAndCreateUserProfile = require('../../functions/updateJWTAndCreateUserProfile/updateJWTAndCreateUserProfile.cjs');
31
+ var userActions = require('../../../store/actions/userActions/userActions.cjs');
32
+ require('zustand');
33
+ require('zustand/middleware');
34
+ require('zustand/react/shallow');
31
35
 
32
- const usePrimaryWalletId = ({ minAuthToken, environmentId, setUser, }) => {
36
+ const usePrimaryWalletId = ({ minAuthToken, environmentId }) => {
33
37
  const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletId] = useLocalStorage.useLocalStorage(localStorage.PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator.primaryWalletIdValidator);
34
38
  const setPrimaryWalletId = React.useCallback((walletId) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
35
39
  setPrimaryWalletIdState(walletId);
@@ -37,7 +41,7 @@ const usePrimaryWalletId = ({ minAuthToken, environmentId, setUser, }) => {
37
41
  const response = yield wallets.storeSelectedWallet({ environmentId, walletId });
38
42
  // only update userProfile, authToken, and minAuthToken when response is valid from storeSelectedWallet
39
43
  if (response) {
40
- setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(response.jwt, response.minifiedJwt));
44
+ userActions.setUser(updateJWTAndCreateUserProfile.updateJWTAndCreateUserProfile(response.jwt, response.minifiedJwt));
41
45
  }
42
46
  }
43
47
  }), [setPrimaryWalletIdState]);
@@ -1,11 +1,8 @@
1
- import { Dispatch, SetStateAction } from 'react';
2
- import { UserProfile } from '@dynamic-labs/types';
3
1
  type Props = {
4
- setUser: Dispatch<SetStateAction<UserProfile | undefined>>;
5
2
  environmentId: string;
6
3
  minAuthToken: string | undefined;
7
4
  };
8
- export declare const usePrimaryWalletId: ({ minAuthToken, environmentId, setUser, }: Props) => {
5
+ export declare const usePrimaryWalletId: ({ minAuthToken, environmentId }: Props) => {
9
6
  clearPrimaryWalletId: () => void;
10
7
  primaryWalletId: string | undefined;
11
8
  setPrimaryWalletId: (walletId: string) => Promise<void>;
@@ -24,8 +24,12 @@ import '../../../config/ApiEndpoint.js';
24
24
  import '../../../locale/locale.js';
25
25
  import { storeSelectedWallet } from '../../../data/api/wallets/wallets.js';
26
26
  import { updateJWTAndCreateUserProfile } from '../../functions/updateJWTAndCreateUserProfile/updateJWTAndCreateUserProfile.js';
27
+ import { setUser } from '../../../store/actions/userActions/userActions.js';
28
+ import 'zustand';
29
+ import 'zustand/middleware';
30
+ import 'zustand/react/shallow';
27
31
 
28
- const usePrimaryWalletId = ({ minAuthToken, environmentId, setUser, }) => {
32
+ const usePrimaryWalletId = ({ minAuthToken, environmentId }) => {
29
33
  const [primaryWalletId, setPrimaryWalletIdState, clearPrimaryWalletId] = useLocalStorage(PRIMARY_WALLET_ID, undefined, primaryWalletIdValidator);
30
34
  const setPrimaryWalletId = useCallback((walletId) => __awaiter(void 0, void 0, void 0, function* () {
31
35
  setPrimaryWalletIdState(walletId);
@@ -27,7 +27,7 @@ require('../../../locale/locale.cjs');
27
27
  var serializeWalletConnectors = require('../../functions/serializeWalletConnectors/serializeWalletConnectors.cjs');
28
28
  var verifyRequiredConnectorsAreSetup = require('./utils/verifyRequiredConnectorsAreSetup/verifyRequiredConnectorsAreSetup.cjs');
29
29
 
30
- const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
30
+ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, coinbaseWalletPreference, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
31
31
  const walletConnectorsKey = React.useMemo(() => { var _a; return (_a = serializeWalletConnectors.serializeWalletConnectors(walletConnectorsProp)) === null || _a === void 0 ? void 0 : _a.join(','); }, [walletConnectorsProp]);
32
32
  const walletBookLength = React.useMemo(() => Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length, [walletBook]);
33
33
  const walletConnectorOptions = React.useMemo(() => {
@@ -39,6 +39,7 @@ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepL
39
39
  getSupportedWalletOpts: {
40
40
  appLogoUrl,
41
41
  appName,
42
+ coinbaseWalletPreference,
42
43
  deepLinkPreference,
43
44
  flowNetwork,
44
45
  mobileExperience,
@@ -1,10 +1,11 @@
1
1
  import { ProjectSettings } from '@dynamic-labs/sdk-api-core';
2
- import { NetworkConfigurationMap, WalletUiUtils } from '@dynamic-labs/types';
2
+ import { type CoinbaseWalletPreference, type NetworkConfigurationMap, type WalletUiUtils } from '@dynamic-labs/types';
3
3
  import { DeepLinkVariant, WalletConnector, WalletConnectorExtension, WalletConnectorsMethod } from '@dynamic-labs/wallet-connector-core';
4
4
  import { WalletBookSchema } from '@dynamic-labs/wallet-book';
5
5
  type Props = {
6
6
  appLogoUrl?: string;
7
7
  appName?: string;
8
+ coinbaseWalletPreference?: CoinbaseWalletPreference;
8
9
  deepLinkPreference?: DeepLinkVariant;
9
10
  flowNetwork?: 'mainnet' | 'testnet';
10
11
  mobileExperience?: 'in-app-browser' | 'redirect';
@@ -16,7 +17,7 @@ type Props = {
16
17
  walletUiUtils: WalletUiUtils<WalletConnector>;
17
18
  walletConnectorExtensions?: WalletConnectorExtension[];
18
19
  };
19
- export declare const useWalletConnectorOptions: ({ projectSettings, appLogoUrl, appName, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }: Props) => {
20
+ export declare const useWalletConnectorOptions: ({ projectSettings, appLogoUrl, appName, coinbaseWalletPreference, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }: Props) => {
20
21
  walletConnectorOptions: import("../../../shared").WalletOption[];
21
22
  };
22
23
  export {};
@@ -23,7 +23,7 @@ import '../../../locale/locale.js';
23
23
  import { serializeWalletConnectors } from '../../functions/serializeWalletConnectors/serializeWalletConnectors.js';
24
24
  import { verifyRequiredConnectorsAreSetup } from './utils/verifyRequiredConnectorsAreSetup/verifyRequiredConnectorsAreSetup.js';
25
25
 
26
- const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
26
+ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, coinbaseWalletPreference, deepLinkPreference, flowNetwork, mobileExperience, networkConfigurations, walletBook, walletUiUtils, walletConnectorsProp, walletConnectPreferredChains, walletConnectorExtensions, }) => {
27
27
  const walletConnectorsKey = useMemo(() => { var _a; return (_a = serializeWalletConnectors(walletConnectorsProp)) === null || _a === void 0 ? void 0 : _a.join(','); }, [walletConnectorsProp]);
28
28
  const walletBookLength = useMemo(() => Object.keys(walletBook !== null && walletBook !== void 0 ? walletBook : {}).length, [walletBook]);
29
29
  const walletConnectorOptions = useMemo(() => {
@@ -35,6 +35,7 @@ const useWalletConnectorOptions = ({ projectSettings, appLogoUrl, appName, deepL
35
35
  getSupportedWalletOpts: {
36
36
  appLogoUrl,
37
37
  appName,
38
+ coinbaseWalletPreference,
38
39
  deepLinkPreference,
39
40
  flowNetwork,
40
41
  mobileExperience,
@@ -33,6 +33,7 @@ require('viem');
33
33
  require('viem/chains');
34
34
  require('../../../config/ApiEndpoint.cjs');
35
35
  require('../../../locale/locale.cjs');
36
+ var downloadFile = require('../../../utils/functions/downloadFile/downloadFile.cjs');
36
37
  require('../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
37
38
  require('../../../context/AccountExistsContext/AccountExistsContext.cjs');
38
39
  require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
@@ -99,22 +100,16 @@ const SavePasswordStep = ({ password, error, isLoading, onSave, onBack, onClose,
99
100
  e.preventDefault();
100
101
  onSave();
101
102
  });
102
- const handleDownloadFile = (e) => {
103
- e.preventDefault();
104
- const element = document.createElement('a');
105
- const file = new Blob([password], { type: 'text/plain' });
106
- element.href = URL.createObjectURL(file);
107
- element.download = 'dynamic-wallet-recovery.txt';
108
- document.body.appendChild(element);
109
- element.click();
110
- };
111
103
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { leading: backButton, trailing: closeButton, children: jsxRuntime.jsx(Typography.Typography, { as: 'h1', variant: 'title', color: 'primary', "data-testid": 'dynamic-auth-modal-heading', className: 'header__typography', copykey: 'dyn_save_password.title', children: t('dyn_save_password.title') }) }), jsxRuntime.jsx("div", { className: 'save-password-view', children: jsxRuntime.jsxs("form", { className: 'save-password-view__body', "data-testid": 'save-password-form', onSubmit: handleSavePassword, children: [jsxRuntime.jsx("div", { className: 'save-password-view__body__icon', children: jsxRuntime.jsx(savePasswordHero.ReactComponent, {}) }), jsxRuntime.jsx("div", { className: 'save-password-view__body__icon', children: jsxRuntime.jsx(Badge.Badge, { text: t('dyn_save_password.badge_text'), className: 'save-password-view__body__badge', copykey: 'dyn_save_password.badge_text' }) }), jsxRuntime.jsxs("div", { className: 'save-password-view__body__description', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', copykey: 'dyn_save_password.description', children: t('dyn_save_password.description') }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'bold', color: 'secondary', copykey: 'dyn_save_password.description', children: t('dyn_save_password.warning') })] }), error && jsxRuntime.jsx(ErrorContainer.ErrorContainer, { children: error }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Input.Input, { id: 'password', placeholder: t('dyn_save_password.password_input.placeholder'), type: inputType, suffix: inputSuffix, disabled: true, label: t('dyn_save_password.password_input.label'), value: password, autoFocus: true, copykey: 'dyn_save_password.password_input' }) }), jsxRuntime.jsxs("div", { className: 'save-password-view__actions', children: [jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'save-password-copy', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
112
104
  e.preventDefault();
113
105
  helpers.copyToClipboard(password);
114
106
  setIsCopied(true);
115
107
  }, startSlot: jsxRuntime.jsx(copy.ReactComponent, {}), expanded: true, copykey: 'dyn_save_password.copy_button', children: isCopied
116
108
  ? t('dyn_save_password.copy_button.copied')
117
- : t('dyn_save_password.copy_button.copy') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'save-password-download', buttonPadding: 'small', buttonVariant: 'primary', onClick: handleDownloadFile, startSlot: jsxRuntime.jsx(download.ReactComponent, {}), expanded: true, copykey: 'dyn_save_password.download_button', children: t('dyn_save_password.download_button') })] }), jsxRuntime.jsx("div", { className: 'save-password-view__body__confirm-card', children: jsxRuntime.jsxs("button", { className: 'save-password-view__body__card__acknowledgement', onClick: (e) => {
109
+ : t('dyn_save_password.copy_button.copy') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'save-password-download', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
110
+ e.preventDefault();
111
+ downloadFile.downloadFile('wallet-recovery.txt', password);
112
+ }, startSlot: jsxRuntime.jsx(download.ReactComponent, {}), expanded: true, copykey: 'dyn_save_password.download_button', children: t('dyn_save_password.download_button') })] }), jsxRuntime.jsx("div", { className: 'save-password-view__body__confirm-card', children: jsxRuntime.jsxs("button", { className: 'save-password-view__body__card__acknowledgement', onClick: (e) => {
118
113
  e.stopPropagation();
119
114
  setAcknowledgement(!acknowledgement);
120
115
  }, type: 'button', children: [jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Checkbox.Checkbox, { checked: acknowledgement, onChange: (e) => {
@@ -29,6 +29,7 @@ import 'viem';
29
29
  import 'viem/chains';
30
30
  import '../../../config/ApiEndpoint.js';
31
31
  import '../../../locale/locale.js';
32
+ import { downloadFile } from '../../../utils/functions/downloadFile/downloadFile.js';
32
33
  import '../../../context/AccessDeniedContext/AccessDeniedContext.js';
33
34
  import '../../../context/AccountExistsContext/AccountExistsContext.js';
34
35
  import '../../../context/UserWalletsContext/UserWalletsContext.js';
@@ -95,22 +96,16 @@ const SavePasswordStep = ({ password, error, isLoading, onSave, onBack, onClose,
95
96
  e.preventDefault();
96
97
  onSave();
97
98
  });
98
- const handleDownloadFile = (e) => {
99
- e.preventDefault();
100
- const element = document.createElement('a');
101
- const file = new Blob([password], { type: 'text/plain' });
102
- element.href = URL.createObjectURL(file);
103
- element.download = 'dynamic-wallet-recovery.txt';
104
- document.body.appendChild(element);
105
- element.click();
106
- };
107
99
  return (jsxs(Fragment, { children: [jsx(ModalHeader, { leading: backButton, trailing: closeButton, children: jsx(Typography, { as: 'h1', variant: 'title', color: 'primary', "data-testid": 'dynamic-auth-modal-heading', className: 'header__typography', copykey: 'dyn_save_password.title', children: t('dyn_save_password.title') }) }), jsx("div", { className: 'save-password-view', children: jsxs("form", { className: 'save-password-view__body', "data-testid": 'save-password-form', onSubmit: handleSavePassword, children: [jsx("div", { className: 'save-password-view__body__icon', children: jsx(SvgSavePasswordHero, {}) }), jsx("div", { className: 'save-password-view__body__icon', children: jsx(Badge, { text: t('dyn_save_password.badge_text'), className: 'save-password-view__body__badge', copykey: 'dyn_save_password.badge_text' }) }), jsxs("div", { className: 'save-password-view__body__description', children: [jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', copykey: 'dyn_save_password.description', children: t('dyn_save_password.description') }), jsx(Typography, { variant: 'body_normal', weight: 'bold', color: 'secondary', copykey: 'dyn_save_password.description', children: t('dyn_save_password.warning') })] }), error && jsx(ErrorContainer, { children: error }), jsx("div", { children: jsx(Input, { id: 'password', placeholder: t('dyn_save_password.password_input.placeholder'), type: inputType, suffix: inputSuffix, disabled: true, label: t('dyn_save_password.password_input.label'), value: password, autoFocus: true, copykey: 'dyn_save_password.password_input' }) }), jsxs("div", { className: 'save-password-view__actions', children: [jsx(TypographyButton, { dataTestId: 'save-password-copy', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
108
100
  e.preventDefault();
109
101
  copyToClipboard(password);
110
102
  setIsCopied(true);
111
103
  }, startSlot: jsx(SvgCopy, {}), expanded: true, copykey: 'dyn_save_password.copy_button', children: isCopied
112
104
  ? t('dyn_save_password.copy_button.copied')
113
- : t('dyn_save_password.copy_button.copy') }), jsx(TypographyButton, { dataTestId: 'save-password-download', buttonPadding: 'small', buttonVariant: 'primary', onClick: handleDownloadFile, startSlot: jsx(SvgDownload, {}), expanded: true, copykey: 'dyn_save_password.download_button', children: t('dyn_save_password.download_button') })] }), jsx("div", { className: 'save-password-view__body__confirm-card', children: jsxs("button", { className: 'save-password-view__body__card__acknowledgement', onClick: (e) => {
105
+ : t('dyn_save_password.copy_button.copy') }), jsx(TypographyButton, { dataTestId: 'save-password-download', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
106
+ e.preventDefault();
107
+ downloadFile('wallet-recovery.txt', password);
108
+ }, startSlot: jsx(SvgDownload, {}), expanded: true, copykey: 'dyn_save_password.download_button', children: t('dyn_save_password.download_button') })] }), jsx("div", { className: 'save-password-view__body__confirm-card', children: jsxs("button", { className: 'save-password-view__body__card__acknowledgement', onClick: (e) => {
114
109
  e.stopPropagation();
115
110
  setAcknowledgement(!acknowledgement);
116
111
  }, type: 'button', children: [jsx("div", { children: jsx(Checkbox, { checked: acknowledgement, onChange: (e) => {
@@ -0,0 +1,111 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var jsxRuntime = require('react/jsx-runtime');
7
+ var React = require('react');
8
+ var reactI18next = require('react-i18next');
9
+ require('../../events/dynamicEvents.cjs');
10
+ require('../../../../_virtual/_tslib.cjs');
11
+ require('@dynamic-labs/utils');
12
+ require('../../context/DynamicContext/DynamicContext.cjs');
13
+ require('@dynamic-labs/sdk-api-core');
14
+ require('../../shared/logger.cjs');
15
+ require('@dynamic-labs/iconic');
16
+ require('@dynamic-labs/wallet-connector-core');
17
+ require('../../context/ViewContext/ViewContext.cjs');
18
+ var copy = require('../../shared/assets/copy.cjs');
19
+ var download = require('../../shared/assets/download.cjs');
20
+ require('@dynamic-labs/wallet-book');
21
+ require('../../utils/constants/colors.cjs');
22
+ require('../../utils/constants/values.cjs');
23
+ require('../../shared/utils/classes/storage/localStorage.cjs');
24
+ require('../../shared/consts/index.cjs');
25
+ var useInternalDynamicContext = require('../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
26
+ require('../../context/CaptchaContext/CaptchaContext.cjs');
27
+ require('../../context/ErrorContext/ErrorContext.cjs');
28
+ require('@dynamic-labs/multi-wallet');
29
+ require('react-international-phone');
30
+ require('viem');
31
+ require('viem/chains');
32
+ require('../../config/ApiEndpoint.cjs');
33
+ require('../../locale/locale.cjs');
34
+ var downloadFile = require('../../utils/functions/downloadFile/downloadFile.cjs');
35
+ require('../../context/AccessDeniedContext/AccessDeniedContext.cjs');
36
+ require('../../context/AccountExistsContext/AccountExistsContext.cjs');
37
+ require('../../context/UserWalletsContext/UserWalletsContext.cjs');
38
+ require('../../context/VerificationContext/VerificationContext.cjs');
39
+ require('react-dom');
40
+ require('../../context/WalletContext/WalletContext.cjs');
41
+ var usePromise = require('../../utils/hooks/usePromise/usePromise.cjs');
42
+ require('../../context/ThemeContext/ThemeContext.cjs');
43
+ require('@dynamic-labs/types');
44
+ require('../../context/LoadingContext/LoadingContext.cjs');
45
+ require('yup');
46
+ require('../../context/MockContext/MockContext.cjs');
47
+ require('../../context/FieldsStateContext/FieldsStateContext.cjs');
48
+ require('../../utils/hooks/useUserUpdateRequest/useUpdateUser/useUpdateUser.cjs');
49
+ require('../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
50
+ require('@dynamic-labs/rpc-providers');
51
+ var Typography = require('../../components/Typography/Typography.cjs');
52
+ require('../../context/FooterAnimationContext/index.cjs');
53
+ require('../../components/ShadowDOM/ShadowDOM.cjs');
54
+ require('../../components/Transition/ZoomTransition/ZoomTransition.cjs');
55
+ require('../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
56
+ require('../../components/Transition/OpacityTransition/OpacityTransition.cjs');
57
+ require('../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
58
+ require('../../context/SocialRedirectContext/SocialRedirectContext.cjs');
59
+ require('../../context/WalletGroupContext/WalletGroupContext.cjs');
60
+ require('../../widgets/DynamicWidget/components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
61
+ require('react-focus-lock');
62
+ var Icon = require('../../components/Icon/Icon.cjs');
63
+ require('../../widgets/DynamicWidget/context/DynamicWidgetContext.cjs');
64
+ require('../../components/IconButton/IconButton.cjs');
65
+ require('../../components/MenuList/Dropdown/Dropdown.cjs');
66
+ require('formik');
67
+ var TypographyButton = require('../../components/TypographyButton/TypographyButton.cjs');
68
+ require('../TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
69
+ var spinner = require('../../components/Spinner/spinner.cjs');
70
+ var Alert = require('../../components/Alert/Alert.cjs');
71
+ require('../../components/Input/Input.cjs');
72
+ require('../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
73
+ require('../../context/PasskeyContext/PasskeyContext.cjs');
74
+ require('../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
75
+ var useMfa = require('../../utils/hooks/useMfa/useMfa.cjs');
76
+ var Checkbox = require('../../components/Checkbox/Checkbox.cjs');
77
+ var CopyButton = require('../../components/CopyButton/CopyButton.cjs');
78
+ require('../../components/InlineWidget/InlineWidget.cjs');
79
+ require('../../components/IsBrowser/IsBrowser.cjs');
80
+ require('../../components/Popper/Popper/Popper.cjs');
81
+ require('../../components/Popper/PopperContext/PopperContext.cjs');
82
+ require('qrcode');
83
+ require('../WalletList/WalletList.cjs');
84
+ require('../../widgets/DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
85
+ require('@hcaptcha/react-hcaptcha');
86
+ require('../LoginView/sections/PhoneNumberSignInSection/PhoneNumberSignInSection.cjs');
87
+
88
+ const MfaDisplayBackupCodesView = () => {
89
+ const { setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
90
+ const [acknowledgement, setAcknowledgement] = React.useState(false);
91
+ const { t } = reactI18next.useTranslation();
92
+ const { getRecoveryCodes } = useMfa.useMfa();
93
+ const { data: codes, isLoading } = usePromise.usePromise(() => getRecoveryCodes());
94
+ const codesAsString = (codes || []).join('\n');
95
+ return (jsxRuntime.jsxs("div", { className: 'mfa-display-backup-codes-view__body', "data-testid": 'mfa-display-backup-codes-view', children: [jsxRuntime.jsx(Typography.Typography, { className: 'mfa-display-backup-codes-view__copy', variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_mfa.display_backup_codes_view.body') }), jsxRuntime.jsx(Alert.Alert, { variant: 'warning', copykey: 'dyn_mfa.display_backup_codes_view.warning', className: 'mfa-display-backup-codes-view__warning', children: t('dyn_mfa.display_backup_codes_view.warning') }), isLoading ? (jsxRuntime.jsx(spinner.Spinner, { className: 'mfa-display-backup-codes-view__loading-spinner' })) : (jsxRuntime.jsxs("div", { className: 'mfa-display-backup-codes-view__codes', children: [codes === null || codes === void 0 ? void 0 : codes.map((code, index) => (jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', className: 'mfa-display-backup-codes-view__code', children: code }, index))), jsxRuntime.jsxs("div", { className: 'mfa-display-backup-codes-view__actions', children: [jsxRuntime.jsx(CopyButton.CopyButton, { variant: 'button', textToCopy: codesAsString, copykey: 'dyn_mfa.display_backup_codes_view.copy_all', startSlot:
96
+ // eslint-disable-next-line react/jsx-wrap-multilines
97
+ jsxRuntime.jsx(Icon.Icon, { size: 'mini', color: 'text-tertiary', children: jsxRuntime.jsx(copy.ReactComponent, {}) }), children: t('dyn_mfa.display_backup_codes_view.copy_all') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'download-button', buttonPadding: 'small', buttonVariant: 'primary', onClick: (e) => {
98
+ e.preventDefault();
99
+ downloadFile.downloadFile('mfa-backup-codes.txt', codesAsString);
100
+ }, startSlot: jsxRuntime.jsx(download.ReactComponent, {}), expanded: true, copykey: 'dyn_mfa.display_backup_codes_view.download', children: t('dyn_mfa.display_backup_codes_view.download') })] })] })), jsxRuntime.jsxs("div", { className: 'mfa-display-backup-codes-view__complete', children: [jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonClassName: 'mfa-display-backup-codes-view__acknowledgement', dataTestId: 'ack-button', buttonPadding: 'small', buttonVariant: 'primary', onClick: () => setAcknowledgement(!acknowledgement), startSlot:
101
+ // eslint-disable-next-line react/jsx-wrap-multilines
102
+ jsxRuntime.jsx(Checkbox.Checkbox, { checked: acknowledgement, onChange: () => {
103
+ setAcknowledgement(!acknowledgement);
104
+ }, className: 'mfa-display-backup-codes-view__acknowledgement__checkbox' }), expanded: true, typographyProps: {
105
+ color: 'secondary',
106
+ }, copykey: 'dyn_mfa.display_backup_codes_view.checkbox', children: t('dyn_mfa.display_backup_codes_view.checkbox') }), jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'complete-button', buttonPadding: 'large', buttonVariant: 'brand-primary', typographyProps: {
107
+ color: 'inherit',
108
+ }, disabled: !acknowledgement, expanded: true, copykey: 'dyn_mfa.display_backup_codes_view.complete', onClick: () => setShowAuthFlow(false), children: t('dyn_mfa.display_backup_codes_view.complete') })] })] }));
109
+ };
110
+
111
+ exports.MfaDisplayBackupCodesView = MfaDisplayBackupCodesView;
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const MfaDisplayBackupCodesView: () => JSX.Element;