@dynamic-labs/sdk-react-core 3.9.9 → 3.9.10

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 (54) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +11 -11
  5. package/src/index.d.ts +1 -0
  6. package/src/lib/components/NeedHelpSection/NeedHelpSection.cjs +32 -31
  7. package/src/lib/components/NeedHelpSection/NeedHelpSection.d.ts +2 -1
  8. package/src/lib/components/NeedHelpSection/NeedHelpSection.js +34 -33
  9. package/src/lib/components/SupportLinks/SupportLinks.cjs +24 -0
  10. package/src/lib/components/SupportLinks/SupportLinks.d.ts +6 -0
  11. package/src/lib/components/SupportLinks/SupportLinks.js +20 -0
  12. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.cjs +3 -2
  13. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.js +3 -2
  14. package/src/lib/components/TransactionConfirmationPageLayout/utils.cjs +6 -2
  15. package/src/lib/components/TransactionConfirmationPageLayout/utils.js +6 -2
  16. package/src/lib/context/DynamicContext/DynamicContext.cjs +2 -0
  17. package/src/lib/context/DynamicContext/DynamicContext.js +2 -0
  18. package/src/lib/events/dynamicEvents.cjs +4 -0
  19. package/src/lib/events/dynamicEvents.d.ts +2 -2
  20. package/src/lib/events/dynamicEvents.js +4 -0
  21. package/src/lib/events/index.d.ts +1 -0
  22. package/src/lib/events/wallets.d.ts +25 -0
  23. package/src/lib/locale/en/translation.cjs +3 -2
  24. package/src/lib/locale/en/translation.d.ts +1 -0
  25. package/src/lib/locale/en/translation.js +3 -2
  26. package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.cjs +3 -1
  27. package/src/lib/modals/SignMessageConfirmationModal/SignMessageConfirmationModal.js +3 -1
  28. package/src/lib/shared/types/embeddedWallets.d.ts +7 -1
  29. package/src/lib/styles/index.shadow.cjs +1 -1
  30. package/src/lib/styles/index.shadow.js +1 -1
  31. package/src/lib/utils/hooks/events/useDynamicEvents/useDynamicEvents.d.ts +1 -1
  32. package/src/lib/utils/hooks/index.d.ts +1 -0
  33. package/src/lib/utils/hooks/useAggregateWalletEvents/index.d.ts +1 -0
  34. package/src/lib/utils/hooks/useAggregateWalletEvents/useAggregateWalletEvents.cjs +56 -0
  35. package/src/lib/utils/hooks/useAggregateWalletEvents/useAggregateWalletEvents.d.ts +2 -0
  36. package/src/lib/utils/hooks/useAggregateWalletEvents/useAggregateWalletEvents.js +52 -0
  37. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.cjs +3 -1
  38. package/src/lib/utils/hooks/usePasskeyRecovery/usePasskeyRecovery.js +3 -1
  39. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +3 -0
  40. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +3 -0
  41. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.cjs +4 -3
  42. package/src/lib/views/EmbeddedReveal/EmbeddedRevealView/EmbeddedRevealView.js +4 -3
  43. package/src/lib/views/Passkey/EmbeddedAuthChoice/EmbeddedAuthChoice.cjs +14 -4
  44. package/src/lib/views/Passkey/EmbeddedAuthChoice/EmbeddedAuthChoice.js +14 -4
  45. package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.cjs +1 -1
  46. package/src/lib/views/Passkey/EmbeddedAuthChoiceCards/EmbeddedAuthChoiceCards.js +1 -1
  47. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.cjs +11 -3
  48. package/src/lib/views/Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery.js +11 -3
  49. package/src/lib/views/Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery.cjs +3 -3
  50. package/src/lib/views/Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery.d.ts +4 -1
  51. package/src/lib/views/Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery.js +3 -3
  52. package/src/lib/views/viewToComponentMap.d.ts +1 -1
  53. package/src/lib/widgets/DynamicWidget/views/SettingsView/SettingsView.cjs +3 -1
  54. package/src/lib/widgets/DynamicWidget/views/SettingsView/SettingsView.js +3 -1
@@ -4,5 +4,5 @@ type DynamicEventListener<E extends keyof DynamicEvents> = (...args: EventArgs<D
4
4
  /** Allows us to subscribe to all dynamicEvents with a hook, even the internal ones */
5
5
  export declare const useInternalDynamicEvents: <E extends keyof import("../../../../events/auth").AuthEvents | keyof import("../../../../events/ui").UIEvents | keyof import("../../../../events/otp").OTPEvents | keyof import("../../../../events/wallets").WalletEvents | keyof import("../../../../events/passkey").PasskeyEvents | "farcasterConnectCancelled" | keyof import("../../../../events/embeddedWallet").EmbeddedWalletEvents | keyof import("../../../../events/multiWallet").MultiWalletInternalEvents | "tokenBalancesChanged">(event: E, listener: DynamicEventListener<E>) => void;
6
6
  /** Allows subscribing to dynamic events directly inside components with a hook */
7
- export declare const useDynamicEvents: <E extends "logout" | "mfaCompletionSuccess" | "mfaCompletionFailure" | "emailVerificationResult" | "walletAdded" | "primaryWalletChanged" | "primaryWalletNetworkChanged" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
7
+ export declare const useDynamicEvents: <E extends "logout" | "mfaCompletionSuccess" | "mfaCompletionFailure" | "emailVerificationResult" | "smsVerificationResult" | "walletAdded" | "walletRemoved" | "primaryWalletChanged" | "primaryWalletNetworkChanged" | "userWalletsChanged" | "embeddedWalletCreated">(event: E, listener: DynamicEventListener<E>) => void;
8
8
  export {};
@@ -68,3 +68,4 @@ export { useTelegramLogin } from './useTelegramLogin';
68
68
  export { useDebounce } from './useDebounce';
69
69
  export * from './useEmbeddedWallet';
70
70
  export { useUpgradeEmbeddedWallet } from './useUpgradeEmbeddedWallet';
71
+ export { useAggregateWalletEvents } from './useAggregateWalletEvents';
@@ -0,0 +1 @@
1
+ export * from './useAggregateWalletEvents';
@@ -0,0 +1,56 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var UserWalletsContext = require('../../../context/UserWalletsContext/UserWalletsContext.cjs');
7
+ var useDynamicEvents = require('../events/useDynamicEvents/useDynamicEvents.cjs');
8
+ var dynamicEvents = require('../../../events/dynamicEvents.cjs');
9
+
10
+ const useAggregateWalletEvents = (primaryWallet) => {
11
+ const { userWallets } = UserWalletsContext.useInternalUserWallets();
12
+ const findPrimaryWallet = (wallets) => wallets.find((wallet) => wallet.id === (primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id));
13
+ useDynamicEvents.useInternalDynamicEvents('walletAdded', (wallet, userWallets) => {
14
+ dynamicEvents.dynamicEvents.emit('userWalletsChanged', {
15
+ addedWallet: wallet,
16
+ primaryWallet: findPrimaryWallet(userWallets),
17
+ updateType: 'walletAdded',
18
+ userWallets,
19
+ });
20
+ });
21
+ useDynamicEvents.useInternalDynamicEvents('walletRemoved', (wallet, userWallets) => {
22
+ dynamicEvents.dynamicEvents.emit('userWalletsChanged', {
23
+ primaryWallet: findPrimaryWallet(userWallets),
24
+ removedWallet: wallet,
25
+ updateType: 'walletRemoved',
26
+ userWallets,
27
+ });
28
+ });
29
+ useDynamicEvents.useInternalDynamicEvents('primaryWalletChanged', (newPrimaryWallet) => {
30
+ dynamicEvents.dynamicEvents.emit('userWalletsChanged', {
31
+ primaryWallet: newPrimaryWallet,
32
+ updateType: 'primaryWalletChanged',
33
+ userWallets,
34
+ });
35
+ });
36
+ useDynamicEvents.useInternalDynamicEvents('primaryWalletNetworkChanged', (newNetwork) => {
37
+ dynamicEvents.dynamicEvents.emit('userWalletsChanged', {
38
+ newNetwork,
39
+ primaryWallet: findPrimaryWallet(userWallets),
40
+ updateType: 'primaryWalletNetworkChanged',
41
+ userWallets,
42
+ });
43
+ });
44
+ useDynamicEvents.useInternalDynamicEvents('nonPrimaryWalletNetworkChanged', (newNetwork, connector) => {
45
+ const affectedWallets = userWallets.filter((wallet) => wallet.connector.key === connector.key);
46
+ dynamicEvents.dynamicEvents.emit('userWalletsChanged', {
47
+ affectedWallets,
48
+ newNetwork,
49
+ primaryWallet: findPrimaryWallet(userWallets),
50
+ updateType: 'nonPrimaryWalletNetworkChanged',
51
+ userWallets,
52
+ });
53
+ });
54
+ };
55
+
56
+ exports.useAggregateWalletEvents = useAggregateWalletEvents;
@@ -0,0 +1,2 @@
1
+ import { Wallet as WalletConnectorCoreWallet } from '@dynamic-labs/wallet-connector-core';
2
+ export declare const useAggregateWalletEvents: (primaryWallet: WalletConnectorCoreWallet | null) => void;
@@ -0,0 +1,52 @@
1
+ 'use client'
2
+ import { useInternalUserWallets } from '../../../context/UserWalletsContext/UserWalletsContext.js';
3
+ import { useInternalDynamicEvents } from '../events/useDynamicEvents/useDynamicEvents.js';
4
+ import { dynamicEvents } from '../../../events/dynamicEvents.js';
5
+
6
+ const useAggregateWalletEvents = (primaryWallet) => {
7
+ const { userWallets } = useInternalUserWallets();
8
+ const findPrimaryWallet = (wallets) => wallets.find((wallet) => wallet.id === (primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.id));
9
+ useInternalDynamicEvents('walletAdded', (wallet, userWallets) => {
10
+ dynamicEvents.emit('userWalletsChanged', {
11
+ addedWallet: wallet,
12
+ primaryWallet: findPrimaryWallet(userWallets),
13
+ updateType: 'walletAdded',
14
+ userWallets,
15
+ });
16
+ });
17
+ useInternalDynamicEvents('walletRemoved', (wallet, userWallets) => {
18
+ dynamicEvents.emit('userWalletsChanged', {
19
+ primaryWallet: findPrimaryWallet(userWallets),
20
+ removedWallet: wallet,
21
+ updateType: 'walletRemoved',
22
+ userWallets,
23
+ });
24
+ });
25
+ useInternalDynamicEvents('primaryWalletChanged', (newPrimaryWallet) => {
26
+ dynamicEvents.emit('userWalletsChanged', {
27
+ primaryWallet: newPrimaryWallet,
28
+ updateType: 'primaryWalletChanged',
29
+ userWallets,
30
+ });
31
+ });
32
+ useInternalDynamicEvents('primaryWalletNetworkChanged', (newNetwork) => {
33
+ dynamicEvents.emit('userWalletsChanged', {
34
+ newNetwork,
35
+ primaryWallet: findPrimaryWallet(userWallets),
36
+ updateType: 'primaryWalletNetworkChanged',
37
+ userWallets,
38
+ });
39
+ });
40
+ useInternalDynamicEvents('nonPrimaryWalletNetworkChanged', (newNetwork, connector) => {
41
+ const affectedWallets = userWallets.filter((wallet) => wallet.connector.key === connector.key);
42
+ dynamicEvents.emit('userWalletsChanged', {
43
+ affectedWallets,
44
+ newNetwork,
45
+ primaryWallet: findPrimaryWallet(userWallets),
46
+ updateType: 'nonPrimaryWalletNetworkChanged',
47
+ userWallets,
48
+ });
49
+ });
50
+ };
51
+
52
+ export { useAggregateWalletEvents };
@@ -189,7 +189,9 @@ const usePasskeyRecovery = () => {
189
189
  }
190
190
  else if (!authenticatorType &&
191
191
  supportedAuthenticatorMethods.length > 1) {
192
- setView('embedded-wallet-auth-choice', { currentAction });
192
+ setView('embedded-wallet-auth-choice', {
193
+ currentAction,
194
+ });
193
195
  setShowAuthFlow(true, {
194
196
  ignoreIfIsEmbeddedWidget: false,
195
197
  performMultiWalletChecks: false,
@@ -185,7 +185,9 @@ const usePasskeyRecovery = () => {
185
185
  }
186
186
  else if (!authenticatorType &&
187
187
  supportedAuthenticatorMethods.length > 1) {
188
- setView('embedded-wallet-auth-choice', { currentAction });
188
+ setView('embedded-wallet-auth-choice', {
189
+ currentAction,
190
+ });
189
191
  setShowAuthFlow(true, {
190
192
  ignoreIfIsEmbeddedWidget: false,
191
193
  performMultiWalletChecks: false,
@@ -158,6 +158,9 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
158
158
  }
159
159
  }
160
160
  });
161
+ useWalletConnectorEvent.useWalletConnectorEvent(uniqueNonPrimaryWallets, 'chainChange', ({ chain }, connector) => {
162
+ dynamicEvents.dynamicEvents.emit('nonPrimaryWalletNetworkChanged', chain, connector);
163
+ });
161
164
  };
162
165
 
163
166
  exports.useWalletEventListeners = useWalletEventListeners;
@@ -154,6 +154,9 @@ const useWalletEventListeners = ({ disconnectWallet, handleLogOut, multiWallet,
154
154
  }
155
155
  }
156
156
  });
157
+ useWalletConnectorEvent(uniqueNonPrimaryWallets, 'chainChange', ({ chain }, connector) => {
158
+ dynamicEvents.emit('nonPrimaryWalletNetworkChanged', chain, connector);
159
+ });
157
160
  };
158
161
 
159
162
  export { useWalletEventListeners };
@@ -75,6 +75,7 @@ require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
75
75
  require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
76
76
  require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
77
77
  require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
78
+ var NeedHelpSection = require('../../../components/NeedHelpSection/NeedHelpSection.cjs');
78
79
  require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
79
80
  require('../../../components/Popper/Popper/Popper.cjs');
80
81
  require('../../../components/Popper/PopperContext/PopperContext.cjs');
@@ -244,9 +245,9 @@ const EmbeddedRevealView = ({ exportPrivateKey, }) => {
244
245
  color: 'inherit',
245
246
  }, children: t('dyn_embedded_reveal.done_button_label') })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: 'embedded-reveal-view__body__description', children: jsxRuntime.jsx(Badge.Badge, { text: t('dyn_embedded_reveal.badge_label'), className: 'embedded-reveal-view__body__badge' }) }), errorText && jsxRuntime.jsx(ErrorContainer.ErrorContainer, { children: errorText }), jsxRuntime.jsxs("div", { className: 'embedded-reveal-view__body__card', children: [jsxRuntime.jsxs("div", { className: 'embedded-reveal-view__body__card__statement', children: [jsxRuntime.jsx("div", { className: 'embedded-reveal-view__body__card__icon', children: jsxRuntime.jsx(walletV2.ReactComponent, {}) }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', style: { letterSpacing: '-0.15px' }, copykey: 'dyn_embedded_reveal.statement_1.title', children: t('dyn_embedded_reveal.statement_1.title') }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: 'secondary', weight: 'regular', copykey: 'dyn_embedded_reveal.statement_1.description', children: t('dyn_embedded_reveal.statement_1.description') })] })] }), jsxRuntime.jsxs("div", { className: 'embedded-reveal-view__body__card__statement', children: [jsxRuntime.jsx("div", { className: 'embedded-reveal-view__body__card__icon', children: jsxRuntime.jsx(eyeOffIcon.ReactComponent, {}) }), jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', style: { letterSpacing: '-0.15px' }, copykey: 'dyn_embedded_reveal.statement_2.title', children: t('dyn_embedded_reveal.statement_2.title') }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: 'secondary', weight: 'regular', copykey: 'dyn_embedded_reveal.statement_2.description', children: t('dyn_embedded_reveal.statement_2.description', {
246
247
  credential_type: credentialTitle === null || credentialTitle === void 0 ? void 0 : credentialTitle.toLowerCase(),
247
- }) })] })] })] }), jsxRuntime.jsxs("div", { className: 'embedded-reveal-view__body__confirm_card', children: [jsxRuntime.jsxs("button", { className: 'embedded-reveal-view__body__card__acknowledgement', onClick: () => setAcknowledgement1(!acknowledgement1), children: [jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Checkbox.Checkbox, { checked: acknowledgement1, onChange: () => setAcknowledgement1(!acknowledgement1), className: 'embedded-reveal-view__body__card__statement__checkbox', id: 'embedded-reveal-checkbox-1' }) }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', style: { letterSpacing: '-0.15px' }, copykey: 'dyn_embedded_reveal.checkbox_label', children: t('dyn_embedded_reveal.checkbox_label') }) })] }), jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonPadding: 'large', buttonVariant: 'brand-primary', typographyProps: {
248
- color: 'inherit',
249
- }, onClick: () => handleExportWallet(), disabled: !acknowledgement1 || exportLoading, loading: isLoading, dataTestId: 'embedded-reveal-button', copykey: 'dyn_embedded_reveal.reveal_button_label', children: t('dyn_embedded_reveal.reveal_button_label') })] })] }))] }) })] }));
248
+ }) })] })] })] }), jsxRuntime.jsx("div", { className: 'embedded-reveal-view__body__confirm_card', children: jsxRuntime.jsxs("button", { className: 'embedded-reveal-view__body__card__acknowledgement', onClick: () => setAcknowledgement1(!acknowledgement1), children: [jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Checkbox.Checkbox, { checked: acknowledgement1, onChange: () => setAcknowledgement1(!acknowledgement1), className: 'embedded-reveal-view__body__card__statement__checkbox', id: 'embedded-reveal-checkbox-1' }) }), jsxRuntime.jsx("div", { children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', style: { letterSpacing: '-0.15px' }, copykey: 'dyn_embedded_reveal.checkbox_label', children: t('dyn_embedded_reveal.checkbox_label') }) })] }) }), jsxRuntime.jsx(NeedHelpSection.NeedHelpSection, { isExport: true }), jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonPadding: 'large', buttonVariant: 'brand-primary', typographyProps: {
249
+ color: 'inherit',
250
+ }, onClick: () => handleExportWallet(), disabled: !acknowledgement1 || exportLoading, loading: isLoading, dataTestId: 'embedded-reveal-button', copykey: 'dyn_embedded_reveal.reveal_button_label', children: t('dyn_embedded_reveal.reveal_button_label') })] }))] }) })] }));
250
251
  };
251
252
 
252
253
  exports.EmbeddedRevealView = EmbeddedRevealView;
@@ -71,6 +71,7 @@ import '../../../components/Transition/ZoomTransition/ZoomTransition.js';
71
71
  import '../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
72
72
  import '../../../components/Transition/OpacityTransition/OpacityTransition.js';
73
73
  import '../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
74
+ import { NeedHelpSection } from '../../../components/NeedHelpSection/NeedHelpSection.js';
74
75
  import '../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
75
76
  import '../../../components/Popper/Popper/Popper.js';
76
77
  import '../../../components/Popper/PopperContext/PopperContext.js';
@@ -240,9 +241,9 @@ const EmbeddedRevealView = ({ exportPrivateKey, }) => {
240
241
  color: 'inherit',
241
242
  }, children: t('dyn_embedded_reveal.done_button_label') })) : (jsxs(Fragment, { children: [jsx("div", { className: 'embedded-reveal-view__body__description', children: jsx(Badge, { text: t('dyn_embedded_reveal.badge_label'), className: 'embedded-reveal-view__body__badge' }) }), errorText && jsx(ErrorContainer, { children: errorText }), jsxs("div", { className: 'embedded-reveal-view__body__card', children: [jsxs("div", { className: 'embedded-reveal-view__body__card__statement', children: [jsx("div", { className: 'embedded-reveal-view__body__card__icon', children: jsx(SvgWalletV2, {}) }), jsxs("div", { children: [jsx(Typography, { variant: 'body_normal', color: 'primary', style: { letterSpacing: '-0.15px' }, copykey: 'dyn_embedded_reveal.statement_1.title', children: t('dyn_embedded_reveal.statement_1.title') }), jsx(Typography, { variant: 'body_small', color: 'secondary', weight: 'regular', copykey: 'dyn_embedded_reveal.statement_1.description', children: t('dyn_embedded_reveal.statement_1.description') })] })] }), jsxs("div", { className: 'embedded-reveal-view__body__card__statement', children: [jsx("div", { className: 'embedded-reveal-view__body__card__icon', children: jsx(SvgEyeOffIcon, {}) }), jsxs("div", { children: [jsx(Typography, { variant: 'body_normal', color: 'primary', style: { letterSpacing: '-0.15px' }, copykey: 'dyn_embedded_reveal.statement_2.title', children: t('dyn_embedded_reveal.statement_2.title') }), jsx(Typography, { variant: 'body_small', color: 'secondary', weight: 'regular', copykey: 'dyn_embedded_reveal.statement_2.description', children: t('dyn_embedded_reveal.statement_2.description', {
242
243
  credential_type: credentialTitle === null || credentialTitle === void 0 ? void 0 : credentialTitle.toLowerCase(),
243
- }) })] })] })] }), jsxs("div", { className: 'embedded-reveal-view__body__confirm_card', children: [jsxs("button", { className: 'embedded-reveal-view__body__card__acknowledgement', onClick: () => setAcknowledgement1(!acknowledgement1), children: [jsx("div", { children: jsx(Checkbox, { checked: acknowledgement1, onChange: () => setAcknowledgement1(!acknowledgement1), className: 'embedded-reveal-view__body__card__statement__checkbox', id: 'embedded-reveal-checkbox-1' }) }), jsx("div", { children: jsx(Typography, { variant: 'body_normal', color: 'primary', style: { letterSpacing: '-0.15px' }, copykey: 'dyn_embedded_reveal.checkbox_label', children: t('dyn_embedded_reveal.checkbox_label') }) })] }), jsx(TypographyButton, { buttonPadding: 'large', buttonVariant: 'brand-primary', typographyProps: {
244
- color: 'inherit',
245
- }, onClick: () => handleExportWallet(), disabled: !acknowledgement1 || exportLoading, loading: isLoading, dataTestId: 'embedded-reveal-button', copykey: 'dyn_embedded_reveal.reveal_button_label', children: t('dyn_embedded_reveal.reveal_button_label') })] })] }))] }) })] }));
244
+ }) })] })] })] }), jsx("div", { className: 'embedded-reveal-view__body__confirm_card', children: jsxs("button", { className: 'embedded-reveal-view__body__card__acknowledgement', onClick: () => setAcknowledgement1(!acknowledgement1), children: [jsx("div", { children: jsx(Checkbox, { checked: acknowledgement1, onChange: () => setAcknowledgement1(!acknowledgement1), className: 'embedded-reveal-view__body__card__statement__checkbox', id: 'embedded-reveal-checkbox-1' }) }), jsx("div", { children: jsx(Typography, { variant: 'body_normal', color: 'primary', style: { letterSpacing: '-0.15px' }, copykey: 'dyn_embedded_reveal.checkbox_label', children: t('dyn_embedded_reveal.checkbox_label') }) })] }) }), jsx(NeedHelpSection, { isExport: true }), jsx(TypographyButton, { buttonPadding: 'large', buttonVariant: 'brand-primary', typographyProps: {
245
+ color: 'inherit',
246
+ }, onClick: () => handleExportWallet(), disabled: !acknowledgement1 || exportLoading, loading: isLoading, dataTestId: 'embedded-reveal-button', copykey: 'dyn_embedded_reveal.reveal_button_label', children: t('dyn_embedded_reveal.reveal_button_label') })] }))] }) })] }));
246
247
  };
247
248
 
248
249
  export { EmbeddedRevealView };
@@ -68,6 +68,7 @@ require('../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
68
68
  require('../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
69
69
  require('../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
70
70
  require('../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
71
+ var SupportLinks = require('../../../components/SupportLinks/SupportLinks.cjs');
71
72
  require('../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
72
73
  require('../../../components/Popper/Popper/Popper.cjs');
73
74
  require('../../../components/Popper/PopperContext/PopperContext.cjs');
@@ -116,7 +117,7 @@ const titleDescriptionMap = {
116
117
  },
117
118
  };
118
119
  const EmbeddedAuthChoice = ({ currentAction, }) => {
119
- var _a;
120
+ var _a, _b, _c;
120
121
  const { t } = reactI18next.useTranslation();
121
122
  const { primaryWallet, projectSettings, setShowAuthFlow } = useInternalDynamicContext.useInternalDynamicContext();
122
123
  const { getEOAWallet } = useSmartWallets.useSmartWallets();
@@ -127,7 +128,8 @@ const EmbeddedAuthChoice = ({ currentAction, }) => {
127
128
  var _a;
128
129
  const supportedAuths = getEnabledEmbeddedWalletsAuthenticators.getEnabledEmbeddedWalletsAuthenticators((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _a === void 0 ? void 0 : _a.supportedSecurityMethods);
129
130
  const supportedMethods = Object.keys(supportedAuths);
130
- if (!currentAction || !['helpSession', 'reveal'].includes(currentAction)) {
131
+ if (!currentAction ||
132
+ !['helpSession', 'reveal'].includes(currentAction.type)) {
131
133
  return supportedMethods.filter((auth) => auth !== 'email');
132
134
  }
133
135
  return supportedMethods;
@@ -143,13 +145,21 @@ const EmbeddedAuthChoice = ({ currentAction, }) => {
143
145
  const buttonCopyKey = isEmailAuthSessionActive()
144
146
  ? 'dyn_embedded_authenticator.passkey.auth_info.start_button'
145
147
  : 'dyn_embedded_authenticator.passkey.auth_info.add_button';
146
- const { title, description } = titleDescriptionMap[currentAction || 'signMessage'];
148
+ const { title, description } = titleDescriptionMap[(currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) || 'signMessage'];
149
+ const supportUrls = (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.general) === null || _b === void 0 ? void 0 : _b.supportUrls;
150
+ const supportEmail = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.general) === null || _c === void 0 ? void 0 : _c.supportEmail;
147
151
  if (!(supportedAuthenticators === null || supportedAuthenticators === void 0 ? void 0 : supportedAuthenticators.length)) {
148
152
  return null;
149
153
  }
150
154
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { children: jsxRuntime.jsx(Typography.Typography, { as: 'h1', variant: 'title', color: 'primary', "data-testid": 'dynamic-auth-modal-heading', className: 'header__typography', copykey: title, children: t(title) }) }), jsxRuntime.jsxs("div", { className: 'embedded-auth-choice', children: [jsxRuntime.jsx("div", { className: 'embedded-auth-choice__header', children: renderIcon() }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', className: 'embedded-auth-choice__subtitle', copykey: description, children: t(description) }), supportedAuthenticators.length > 1 ? (jsxRuntime.jsx(EmbeddedAuthChoiceCards.EmbeddedAuthChoiceCards, { currentAction: currentAction, supportedAuthenticators: supportedAuthenticators })) : (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(AuthChoiceInfo.AuthChoiceInfo, { choice: 'passkey' }), jsxRuntime.jsx(TypographyButton.TypographyButton, { dataTestId: 'passkey-only-choice-button', buttonVariant: 'brand-primary', color: 'brand-primary', expanded: true, onClick: () => initPasskeyRecoveryProcess('passkey'), copykey: buttonCopyKey, typographyProps: {
151
155
  color: 'inherit',
152
- }, children: t(buttonCopyKey) })] })), currentAction !== 'reveal' && (jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'primary', buttonClassName: 'embedded-auth-choice__skip-button', expanded: true, onClick: () => setShowAuthFlow(false), copykey: 'dyn_embedded_authenticator.skip', children: t('dyn_embedded_authenticator.skip') }))] })] }));
156
+ }, children: t(buttonCopyKey) })] })), (currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) !== 'reveal' && (jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonVariant: 'primary', buttonClassName: 'embedded-auth-choice__skip-button', expanded: true, onClick: () => {
157
+ var _a, _b, _c;
158
+ ((_a = currentAction === null || currentAction === void 0 ? void 0 : currentAction.settings) === null || _a === void 0 ? void 0 : _a.goBack)
159
+ ? (_c = (_b = currentAction === null || currentAction === void 0 ? void 0 : currentAction.settings) === null || _b === void 0 ? void 0 : _b.goBack) === null || _c === void 0 ? void 0 : _c.call(_b)
160
+ : setShowAuthFlow(false);
161
+ }, copykey: 'dyn_embedded_authenticator.skip', children: t('dyn_embedded_authenticator.skip') })), (currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) === 'helpSession' &&
162
+ (supportUrls || supportEmail) && (jsxRuntime.jsx("div", { className: 'embedded-auth-choice__support-links', children: jsxRuntime.jsx(SupportLinks.SupportLinks, { supportEmail: supportEmail, supportUrls: supportUrls }) }))] })] }));
153
163
  };
154
164
 
155
165
  exports.EmbeddedAuthChoice = EmbeddedAuthChoice;
@@ -64,6 +64,7 @@ import '../../../components/Transition/ZoomTransition/ZoomTransition.js';
64
64
  import '../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
65
65
  import '../../../components/Transition/OpacityTransition/OpacityTransition.js';
66
66
  import '../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
67
+ import { SupportLinks } from '../../../components/SupportLinks/SupportLinks.js';
67
68
  import '../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
68
69
  import '../../../components/Popper/Popper/Popper.js';
69
70
  import '../../../components/Popper/PopperContext/PopperContext.js';
@@ -112,7 +113,7 @@ const titleDescriptionMap = {
112
113
  },
113
114
  };
114
115
  const EmbeddedAuthChoice = ({ currentAction, }) => {
115
- var _a;
116
+ var _a, _b, _c;
116
117
  const { t } = useTranslation();
117
118
  const { primaryWallet, projectSettings, setShowAuthFlow } = useInternalDynamicContext();
118
119
  const { getEOAWallet } = useSmartWallets();
@@ -123,7 +124,8 @@ const EmbeddedAuthChoice = ({ currentAction, }) => {
123
124
  var _a;
124
125
  const supportedAuths = getEnabledEmbeddedWalletsAuthenticators((_a = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.embeddedWallets) === null || _a === void 0 ? void 0 : _a.supportedSecurityMethods);
125
126
  const supportedMethods = Object.keys(supportedAuths);
126
- if (!currentAction || !['helpSession', 'reveal'].includes(currentAction)) {
127
+ if (!currentAction ||
128
+ !['helpSession', 'reveal'].includes(currentAction.type)) {
127
129
  return supportedMethods.filter((auth) => auth !== 'email');
128
130
  }
129
131
  return supportedMethods;
@@ -139,13 +141,21 @@ const EmbeddedAuthChoice = ({ currentAction, }) => {
139
141
  const buttonCopyKey = isEmailAuthSessionActive()
140
142
  ? 'dyn_embedded_authenticator.passkey.auth_info.start_button'
141
143
  : 'dyn_embedded_authenticator.passkey.auth_info.add_button';
142
- const { title, description } = titleDescriptionMap[currentAction || 'signMessage'];
144
+ const { title, description } = titleDescriptionMap[(currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) || 'signMessage'];
145
+ const supportUrls = (_b = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.general) === null || _b === void 0 ? void 0 : _b.supportUrls;
146
+ const supportEmail = (_c = projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.general) === null || _c === void 0 ? void 0 : _c.supportEmail;
143
147
  if (!(supportedAuthenticators === null || supportedAuthenticators === void 0 ? void 0 : supportedAuthenticators.length)) {
144
148
  return null;
145
149
  }
146
150
  return (jsxs(Fragment, { children: [jsx(ModalHeader, { children: jsx(Typography, { as: 'h1', variant: 'title', color: 'primary', "data-testid": 'dynamic-auth-modal-heading', className: 'header__typography', copykey: title, children: t(title) }) }), jsxs("div", { className: 'embedded-auth-choice', children: [jsx("div", { className: 'embedded-auth-choice__header', children: renderIcon() }), jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', className: 'embedded-auth-choice__subtitle', copykey: description, children: t(description) }), supportedAuthenticators.length > 1 ? (jsx(EmbeddedAuthChoiceCards, { currentAction: currentAction, supportedAuthenticators: supportedAuthenticators })) : (jsxs(Fragment, { children: [jsx(AuthChoiceInfo, { choice: 'passkey' }), jsx(TypographyButton, { dataTestId: 'passkey-only-choice-button', buttonVariant: 'brand-primary', color: 'brand-primary', expanded: true, onClick: () => initPasskeyRecoveryProcess('passkey'), copykey: buttonCopyKey, typographyProps: {
147
151
  color: 'inherit',
148
- }, children: t(buttonCopyKey) })] })), currentAction !== 'reveal' && (jsx(TypographyButton, { buttonVariant: 'primary', buttonClassName: 'embedded-auth-choice__skip-button', expanded: true, onClick: () => setShowAuthFlow(false), copykey: 'dyn_embedded_authenticator.skip', children: t('dyn_embedded_authenticator.skip') }))] })] }));
152
+ }, children: t(buttonCopyKey) })] })), (currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) !== 'reveal' && (jsx(TypographyButton, { buttonVariant: 'primary', buttonClassName: 'embedded-auth-choice__skip-button', expanded: true, onClick: () => {
153
+ var _a, _b, _c;
154
+ ((_a = currentAction === null || currentAction === void 0 ? void 0 : currentAction.settings) === null || _a === void 0 ? void 0 : _a.goBack)
155
+ ? (_c = (_b = currentAction === null || currentAction === void 0 ? void 0 : currentAction.settings) === null || _b === void 0 ? void 0 : _b.goBack) === null || _c === void 0 ? void 0 : _c.call(_b)
156
+ : setShowAuthFlow(false);
157
+ }, copykey: 'dyn_embedded_authenticator.skip', children: t('dyn_embedded_authenticator.skip') })), (currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) === 'helpSession' &&
158
+ (supportUrls || supportEmail) && (jsx("div", { className: 'embedded-auth-choice__support-links', children: jsx(SupportLinks, { supportEmail: supportEmail, supportUrls: supportUrls }) }))] })] }));
149
159
  };
150
160
 
151
161
  export { EmbeddedAuthChoice };
@@ -113,7 +113,7 @@ const EmbeddedAuthChoiceCards = ({ currentAction, supportedAuthenticators, }) =>
113
113
  description: t('dyn_embedded_authenticator.passkey.description'),
114
114
  descriptionKey: 'dyn_embedded_authenticator.passkey.description',
115
115
  icon: (jsxRuntime.jsx(PasskeyDeviceIcon.PasskeyDeviceIcon, { defaultIcon: jsxRuntime.jsx(androidTouchId.ReactComponent, { "data-testid": 'default-icon' }) })),
116
- titleKey: currentAction === 'reveal'
116
+ titleKey: (currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) === 'reveal'
117
117
  ? 'dyn_embedded_authenticator.passkey.reveal_title'
118
118
  : 'dyn_embedded_authenticator.passkey.title',
119
119
  },
@@ -109,7 +109,7 @@ const EmbeddedAuthChoiceCards = ({ currentAction, supportedAuthenticators, }) =>
109
109
  description: t('dyn_embedded_authenticator.passkey.description'),
110
110
  descriptionKey: 'dyn_embedded_authenticator.passkey.description',
111
111
  icon: (jsx(PasskeyDeviceIcon, { defaultIcon: jsx(SvgAndroidTouchId, { "data-testid": 'default-icon' }) })),
112
- titleKey: currentAction === 'reveal'
112
+ titleKey: (currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) === 'reveal'
113
113
  ? 'dyn_embedded_authenticator.passkey.reveal_title'
114
114
  : 'dyn_embedded_authenticator.passkey.title',
115
115
  },
@@ -120,13 +120,21 @@ const PasskeyBundleRecovery = ({ authenticatorType, currentAction, }) => {
120
120
  authenticatorType === 'email' &&
121
121
  dynamicEvents.dynamicEvents.emit('passkeyRecoveryCompleted', primaryWallet);
122
122
  setTimeout(() => {
123
+ const goBack = () => {
124
+ var _a, _b, _c;
125
+ ((_a = currentAction === null || currentAction === void 0 ? void 0 : currentAction.settings) === null || _a === void 0 ? void 0 : _a.goBack)
126
+ ? (_c = (_b = currentAction === null || currentAction === void 0 ? void 0 : currentAction.settings) === null || _b === void 0 ? void 0 : _b.goBack) === null || _c === void 0 ? void 0 : _c.call(_b)
127
+ : setShowAuthFlow(false);
128
+ };
123
129
  if (authenticatorType === 'passkey') {
124
- return setView('passkey-recovery-complete');
130
+ return setView('passkey-recovery-complete', {
131
+ goBack: () => goBack(),
132
+ });
125
133
  }
126
- if (currentAction === 'reveal') {
134
+ if ((currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) === 'reveal') {
127
135
  return;
128
136
  }
129
- setShowAuthFlow(false);
137
+ goBack();
130
138
  }, 2000);
131
139
  }));
132
140
  /**
@@ -116,13 +116,21 @@ const PasskeyBundleRecovery = ({ authenticatorType, currentAction, }) => {
116
116
  authenticatorType === 'email' &&
117
117
  dynamicEvents.emit('passkeyRecoveryCompleted', primaryWallet);
118
118
  setTimeout(() => {
119
+ const goBack = () => {
120
+ var _a, _b, _c;
121
+ ((_a = currentAction === null || currentAction === void 0 ? void 0 : currentAction.settings) === null || _a === void 0 ? void 0 : _a.goBack)
122
+ ? (_c = (_b = currentAction === null || currentAction === void 0 ? void 0 : currentAction.settings) === null || _b === void 0 ? void 0 : _b.goBack) === null || _c === void 0 ? void 0 : _c.call(_b)
123
+ : setShowAuthFlow(false);
124
+ };
119
125
  if (authenticatorType === 'passkey') {
120
- return setView('passkey-recovery-complete');
126
+ return setView('passkey-recovery-complete', {
127
+ goBack: () => goBack(),
128
+ });
121
129
  }
122
- if (currentAction === 'reveal') {
130
+ if ((currentAction === null || currentAction === void 0 ? void 0 : currentAction.type) === 'reveal') {
123
131
  return;
124
132
  }
125
- setShowAuthFlow(false);
133
+ goBack();
126
134
  }, 2000);
127
135
  }));
128
136
  /**
@@ -93,8 +93,8 @@ require('../../../../store/state/tokenBalances.cjs');
93
93
  require('../../../../shared/utils/functions/getInitialUrl/getInitialUrl.cjs');
94
94
  var useInternalDynamicContext = require('../../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.cjs');
95
95
 
96
- const PasskeyCompleteRecovery = () => {
97
- const { primaryWallet, environmentId, user, setShowAuthFlow, setPasskeySuccessPopup, } = useInternalDynamicContext.useInternalDynamicContext();
96
+ const PasskeyCompleteRecovery = ({ goBack, }) => {
97
+ const { primaryWallet, environmentId, user, setPasskeySuccessPopup } = useInternalDynamicContext.useInternalDynamicContext();
98
98
  const { isTurnkeyWalletWithoutAuthenticator } = useIsTurnkeyWallet.useIsTurnkeyWallet();
99
99
  const { getEOAWallet } = useSmartWallets.useSmartWallets();
100
100
  const { t } = reactI18next.useTranslation();
@@ -110,7 +110,7 @@ const PasskeyCompleteRecovery = () => {
110
110
  throw new utils.DynamicError('Error completing passkey recovery');
111
111
  }
112
112
  dynamicEvents.dynamicEvents.emit('passkeyRecoveryCompleted', primaryWallet);
113
- setShowAuthFlow(false);
113
+ goBack();
114
114
  setPasskeySuccessPopup(PasskeyCreatedSuccessBanner.PasskeySuccessEnum.CREATED);
115
115
  }), {
116
116
  onFailure: (err) => {
@@ -1,2 +1,5 @@
1
1
  import { FC } from 'react';
2
- export declare const PasskeyCompleteRecovery: FC;
2
+ export interface PasskeyCompleteRecoveryProps {
3
+ goBack: () => void;
4
+ }
5
+ export declare const PasskeyCompleteRecovery: FC<PasskeyCompleteRecoveryProps>;
@@ -89,8 +89,8 @@ import '../../../../store/state/tokenBalances.js';
89
89
  import '../../../../shared/utils/functions/getInitialUrl/getInitialUrl.js';
90
90
  import { useInternalDynamicContext } from '../../../../context/DynamicContext/useDynamicContext/useInternalDynamicContext.js';
91
91
 
92
- const PasskeyCompleteRecovery = () => {
93
- const { primaryWallet, environmentId, user, setShowAuthFlow, setPasskeySuccessPopup, } = useInternalDynamicContext();
92
+ const PasskeyCompleteRecovery = ({ goBack, }) => {
93
+ const { primaryWallet, environmentId, user, setPasskeySuccessPopup } = useInternalDynamicContext();
94
94
  const { isTurnkeyWalletWithoutAuthenticator } = useIsTurnkeyWallet();
95
95
  const { getEOAWallet } = useSmartWallets();
96
96
  const { t } = useTranslation();
@@ -106,7 +106,7 @@ const PasskeyCompleteRecovery = () => {
106
106
  throw new DynamicError('Error completing passkey recovery');
107
107
  }
108
108
  dynamicEvents.emit('passkeyRecoveryCompleted', primaryWallet);
109
- setShowAuthFlow(false);
109
+ goBack();
110
110
  setPasskeySuccessPopup(PasskeySuccessEnum.CREATED);
111
111
  }), {
112
112
  onFailure: (err) => {
@@ -55,7 +55,7 @@ export declare const viewToComponentMap: {
55
55
  'passkey-new-domain-detected': import("react").FC;
56
56
  'passkey-recovery-add-email': import("react").FC<import("./Passkey/PasskeyRecovery/AddRecoveryEmail/AddRecoveryEmail").AddRecoveryEmailProps>;
57
57
  'passkey-recovery-bundle': import("react").FC<import("./Passkey/PasskeyRecovery/BundleValidation/PasskeyBundleRecovery").PasskeyBundleValidationProps>;
58
- 'passkey-recovery-complete': import("react").FC;
58
+ 'passkey-recovery-complete': import("react").FC<import("./Passkey/PasskeyRecovery/CompleteRecovery/PasskeyCompleteRecovery").PasskeyCompleteRecoveryProps>;
59
59
  'passkey-recovery-start': import("react").FC<import("./Passkey/PasskeyRecovery/InitRecovery/PasskeyInitRecovery").PasskeyInitRecoveryProps>;
60
60
  'pending-connect': () => JSX.Element;
61
61
  'pending-signature': () => JSX.Element | null;
@@ -153,7 +153,9 @@ const SettingsView = () => {
153
153
  const handleExportClick = (recoveryPhrase) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
154
154
  if (!isSessionKeyCompatible) {
155
155
  if (yield shouldInitRecovery()) {
156
- yield initPasskeyRecoveryProcess(undefined, 'reveal');
156
+ yield initPasskeyRecoveryProcess(undefined, {
157
+ type: 'reveal',
158
+ });
157
159
  }
158
160
  }
159
161
  return initExportProcess(recoveryPhrase);
@@ -149,7 +149,9 @@ const SettingsView = () => {
149
149
  const handleExportClick = (recoveryPhrase) => __awaiter(void 0, void 0, void 0, function* () {
150
150
  if (!isSessionKeyCompatible) {
151
151
  if (yield shouldInitRecovery()) {
152
- yield initPasskeyRecoveryProcess(undefined, 'reveal');
152
+ yield initPasskeyRecoveryProcess(undefined, {
153
+ type: 'reveal',
154
+ });
153
155
  }
154
156
  }
155
157
  return initExportProcess(recoveryPhrase);