@dynamic-labs/sdk-react-core 0.18.0-RC.14 → 0.18.0-RC.15

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 (84) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +9 -9
  5. package/src/index.cjs +2 -0
  6. package/src/index.js +1 -0
  7. package/src/lib/Main.cjs +45 -6
  8. package/src/lib/Main.js +45 -6
  9. package/src/lib/assets/no-wallet-found.cjs +8 -8
  10. package/src/lib/assets/no-wallet-found.js +8 -8
  11. package/src/lib/components/PoweredByDynamic/PoweredByDynamic.cjs +8 -1
  12. package/src/lib/components/PoweredByDynamic/PoweredByDynamic.js +8 -1
  13. package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.cjs +1 -1
  14. package/src/lib/components/SendBalancePageLayout/SendBalancePageLayout.js +1 -1
  15. package/src/lib/components/Toolkit/Toolkit.cjs +3 -3
  16. package/src/lib/components/Toolkit/Toolkit.js +3 -3
  17. package/src/lib/components/Toolkit/components/MultiWalletSwitch.cjs +18 -0
  18. package/src/lib/components/Toolkit/components/MultiWalletSwitch.d.ts +8 -0
  19. package/src/lib/components/Toolkit/components/MultiWalletSwitch.js +14 -0
  20. package/src/lib/components/Toolkit/components/index.d.ts +1 -1
  21. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.cjs +1 -1
  22. package/src/lib/components/TransactionConfirmationPageLayout/TransactionConfirmationPageLayout.js +1 -1
  23. package/src/lib/components/TransactionStatusLayout/TransactionStatusLayout.cjs +1 -1
  24. package/src/lib/components/TransactionStatusLayout/TransactionStatusLayout.js +1 -1
  25. package/src/lib/context/DynamicContext/DynamicContext.cjs +42 -12
  26. package/src/lib/context/DynamicContext/DynamicContext.d.ts +5 -1
  27. package/src/lib/context/DynamicContext/DynamicContext.js +43 -14
  28. package/src/lib/context/DynamicContext/helpers.cjs +5 -4
  29. package/src/lib/context/DynamicContext/helpers.d.ts +3 -1
  30. package/src/lib/context/DynamicContext/helpers.js +5 -4
  31. package/src/lib/context/DynamicContext/useCustomerCallbacks/types.d.ts +1 -0
  32. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.cjs +1 -1
  33. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.d.ts +2 -2
  34. package/src/lib/context/DynamicContext/useCustomerCallbacks/useCustomerCallbacks.js +1 -1
  35. package/src/lib/shared/types/index.d.ts +1 -0
  36. package/src/lib/shared/utils/classes/storage/localStorage.cjs +36 -24
  37. package/src/lib/shared/utils/classes/storage/localStorage.d.ts +16 -3
  38. package/src/lib/shared/utils/classes/storage/localStorage.js +37 -25
  39. package/src/lib/shared/utils/hooks/index.d.ts +1 -0
  40. package/src/lib/shared/utils/hooks/useEffectOnce/index.d.ts +1 -0
  41. package/src/lib/shared/utils/hooks/useEffectOnce/useEffectOnce.cjs +27 -0
  42. package/src/lib/shared/utils/hooks/useEffectOnce/useEffectOnce.d.ts +17 -0
  43. package/src/lib/shared/utils/hooks/useEffectOnce/useEffectOnce.js +23 -0
  44. package/src/lib/styles/index.shadow.cjs +1 -1
  45. package/src/lib/styles/index.shadow.js +1 -1
  46. package/src/lib/utils/functions/getAuthToken/getAuthToken.cjs +2 -1
  47. package/src/lib/utils/functions/getAuthToken/getAuthToken.d.ts +1 -1
  48. package/src/lib/utils/functions/getAuthToken/getAuthToken.js +2 -1
  49. package/src/lib/utils/functions/storeAuthToken/index.cjs +1 -3
  50. package/src/lib/utils/functions/storeAuthToken/index.js +1 -3
  51. package/src/lib/utils/hooks/index.d.ts +2 -0
  52. package/src/lib/utils/hooks/multiWallet/useMultiWallet/index.d.ts +1 -0
  53. package/src/lib/utils/hooks/multiWallet/useMultiWallet/useMultiWallet.cjs +17 -0
  54. package/src/lib/utils/hooks/multiWallet/useMultiWallet/useMultiWallet.d.ts +8 -0
  55. package/src/lib/utils/hooks/multiWallet/useMultiWallet/useMultiWallet.js +13 -0
  56. package/src/lib/utils/hooks/useApplyWalletConnectorNetwork/useApplyWalletConnectorNetwork.cjs +29 -0
  57. package/src/lib/utils/hooks/useApplyWalletConnectorNetwork/useApplyWalletConnectorNetwork.d.ts +5 -0
  58. package/src/lib/utils/hooks/useApplyWalletConnectorNetwork/useApplyWalletConnectorNetwork.js +25 -0
  59. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +20 -5
  60. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.d.ts +5 -2
  61. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +20 -5
  62. package/src/lib/utils/hooks/useConnectedAccountWallet/useConnectedAccountWallet.cjs +11 -18
  63. package/src/lib/utils/hooks/useConnectedAccountWallet/useConnectedAccountWallet.js +11 -18
  64. package/src/lib/utils/hooks/useEventListener/index.d.ts +1 -0
  65. package/src/lib/utils/hooks/useEventListener/useEventListener.cjs +25 -0
  66. package/src/lib/utils/hooks/useEventListener/useEventListener.d.ts +1 -0
  67. package/src/lib/utils/hooks/useEventListener/useEventListener.js +21 -0
  68. package/src/lib/utils/hooks/usePromise/usePromise.cjs +71 -18
  69. package/src/lib/utils/hooks/usePromise/usePromise.d.ts +14 -0
  70. package/src/lib/utils/hooks/usePromise/usePromise.js +72 -19
  71. package/src/lib/views/EmailConfirmationWaitingView/EmailConfirmationWaitingView.cjs +1 -1
  72. package/src/lib/views/EmailConfirmationWaitingView/EmailConfirmationWaitingView.js +1 -1
  73. package/src/lib/views/NetworkNotSupported/NetworkNotSupported.cjs +9 -8
  74. package/src/lib/views/NetworkNotSupported/NetworkNotSupported.js +9 -8
  75. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs +5 -9
  76. package/src/lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js +5 -9
  77. package/src/lib/views/WalletList/SearchNotFoundMessage/SearchNotFoundMessage.cjs +2 -1
  78. package/src/lib/views/WalletList/SearchNotFoundMessage/SearchNotFoundMessage.d.ts +2 -2
  79. package/src/lib/views/WalletList/SearchNotFoundMessage/SearchNotFoundMessage.js +2 -1
  80. package/src/lib/views/WalletList/WalletList.cjs +1 -1
  81. package/src/lib/views/WalletList/WalletList.js +1 -1
  82. package/src/lib/components/Toolkit/components/BrandStyleSwitch.cjs +0 -22
  83. package/src/lib/components/Toolkit/components/BrandStyleSwitch.d.ts +0 -2
  84. package/src/lib/components/Toolkit/components/BrandStyleSwitch.js +0 -18
package/CHANGELOG.md CHANGED
@@ -1,4 +1,24 @@
1
1
 
2
+ ## [0.18.0-RC.15](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.14...v0.18.0-RC.15) (2023-07-18)
3
+
4
+
5
+ ### Features
6
+
7
+ * add `updateConnectedWalletById` function, add `network` property to connectedWallets ([#2666](https://github.com/dynamic-labs/DynamicAuth/issues/2666)) ([3c50abf](https://github.com/dynamic-labs/DynamicAuth/commit/3c50abf964a2807c6e1af9fceeb1ca259785a21f))
8
+ * add magic to ethereum-all package ([#2576](https://github.com/dynamic-labs/DynamicAuth/issues/2576)) ([7676ef2](https://github.com/dynamic-labs/DynamicAuth/commit/7676ef2883b30adf2c1b521d7c1848248ceadb24))
9
+ * allow switching between multiwallet and single wallet on demo ([#2596](https://github.com/dynamic-labs/DynamicAuth/issues/2596)) ([dae87c1](https://github.com/dynamic-labs/DynamicAuth/commit/dae87c12d2f1be64c2ca1f232ffdf2da998b1c1e))
10
+ * clear values from LS that cannot be parsed ([#2542](https://github.com/dynamic-labs/DynamicAuth/issues/2542)) ([41faf5d](https://github.com/dynamic-labs/DynamicAuth/commit/41faf5dbc07937685b4d89f87ae040021c5fee00))
11
+ * **QNTM-82:** should not go back to "get started" view if one wallet already connected ([#2653](https://github.com/dynamic-labs/DynamicAuth/issues/2653)) ([004db41](https://github.com/dynamic-labs/DynamicAuth/commit/004db410eb11af9ba105058df4958f20633a3002))
12
+
13
+
14
+ ### Bug Fixes
15
+
16
+ * **bridge:** update the wallets to connect when unlinking ([#2604](https://github.com/dynamic-labs/DynamicAuth/issues/2604)) ([4739306](https://github.com/dynamic-labs/DynamicAuth/commit/4739306c2d742e961281747427821af7c36b6cc2))
17
+ * network picker is broken in network switch view ([#2612](https://github.com/dynamic-labs/DynamicAuth/issues/2612)) ([c514ba4](https://github.com/dynamic-labs/DynamicAuth/commit/c514ba4f931c243bdd60329db7ed1691fc36819c))
18
+ * search not found icon in wrong color in dark mode ([#2656](https://github.com/dynamic-labs/DynamicAuth/issues/2656)) ([a4db736](https://github.com/dynamic-labs/DynamicAuth/commit/a4db736b8659567330dd857792cc12b17ce9d851))
19
+ * use dynamicauth.com for api requests ([#2649](https://github.com/dynamic-labs/DynamicAuth/issues/2649)) ([acae0af](https://github.com/dynamic-labs/DynamicAuth/commit/acae0afc2a18c41fa61b2c487ff1ceb46c5d9a1f))
20
+ * wallet should be disconnected when NetworkNotSupported view is ignored in connect-only mode ([#2658](https://github.com/dynamic-labs/DynamicAuth/issues/2658)) ([f3565cf](https://github.com/dynamic-labs/DynamicAuth/commit/f3565cf09a1ddcc671b596bbe23c68d35afc81b5))
21
+
2
22
  ## [0.18.0-RC.14](https://github.com/dynamic-labs/DynamicAuth/compare/v0.18.0-RC.13...v0.18.0-RC.14) (2023-07-11)
3
23
 
4
24
 
package/package.cjs CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var version = "0.18.0-RC.14";
5
+ var version = "0.18.0-RC.15";
6
6
  var dependencies = {
7
7
  "react-focus-lock": "2.9.2",
8
8
  "@dynamic-labs/iconic": "0.1.23",
9
- "@dynamic-labs/sdk-api": "0.0.228",
9
+ "@dynamic-labs/sdk-api": "0.0.237",
10
10
  "@hcaptcha/react-hcaptcha": "1.4.4",
11
11
  "country-list": "2.3.0",
12
12
  yup: "0.32.11",
package/package.js CHANGED
@@ -1,8 +1,8 @@
1
- var version = "0.18.0-RC.14";
1
+ var version = "0.18.0-RC.15";
2
2
  var dependencies = {
3
3
  "react-focus-lock": "2.9.2",
4
4
  "@dynamic-labs/iconic": "0.1.23",
5
- "@dynamic-labs/sdk-api": "0.0.228",
5
+ "@dynamic-labs/sdk-api": "0.0.237",
6
6
  "@hcaptcha/react-hcaptcha": "1.4.4",
7
7
  "country-list": "2.3.0",
8
8
  yup: "0.32.11",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "0.18.0-RC.14",
3
+ "version": "0.18.0-RC.15",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/dynamic-labs/DynamicAuth.git",
@@ -9,20 +9,20 @@
9
9
  "dependencies": {
10
10
  "react-focus-lock": "2.9.2",
11
11
  "@dynamic-labs/iconic": "0.1.23",
12
- "@dynamic-labs/sdk-api": "0.0.228",
12
+ "@dynamic-labs/sdk-api": "0.0.237",
13
13
  "@hcaptcha/react-hcaptcha": "1.4.4",
14
14
  "country-list": "2.3.0",
15
15
  "yup": "0.32.11",
16
16
  "formik": "2.2.9",
17
17
  "qrcode": "1.5.1",
18
18
  "ethers": "5.7.2",
19
- "@dynamic-labs/logger": "0.18.0-RC.14",
20
- "@dynamic-labs/multi-wallet": "0.18.0-RC.14",
21
- "@dynamic-labs/rpc-providers": "0.18.0-RC.14",
22
- "@dynamic-labs/types": "0.18.0-RC.14",
23
- "@dynamic-labs/utils": "0.18.0-RC.14",
24
- "@dynamic-labs/wallet-book": "0.18.0-RC.14",
25
- "@dynamic-labs/wallet-connector-core": "0.18.0-RC.14"
19
+ "@dynamic-labs/logger": "0.18.0-RC.15",
20
+ "@dynamic-labs/multi-wallet": "0.18.0-RC.15",
21
+ "@dynamic-labs/rpc-providers": "0.18.0-RC.15",
22
+ "@dynamic-labs/types": "0.18.0-RC.15",
23
+ "@dynamic-labs/utils": "0.18.0-RC.15",
24
+ "@dynamic-labs/wallet-book": "0.18.0-RC.15",
25
+ "@dynamic-labs/wallet-connector-core": "0.18.0-RC.15"
26
26
  },
27
27
  "devDependencies": {
28
28
  "semver": "7.3.8"
package/src/index.cjs CHANGED
@@ -38,6 +38,7 @@ var index$1 = require('./lib/shared/utils/hooks/useOnClickOutside/index.cjs');
38
38
  var usePreventPageScroll = require('./lib/shared/utils/hooks/usePreventPageScroll/usePreventPageScroll.cjs');
39
39
  var useGlobalLoading = require('./lib/shared/utils/hooks/useGlobalLoading/useGlobalLoading.cjs');
40
40
  var useMediaQuery = require('./lib/shared/utils/hooks/useMediaQuery/useMediaQuery.cjs');
41
+ var useEffectOnce = require('./lib/shared/utils/hooks/useEffectOnce/useEffectOnce.cjs');
41
42
  var localStorage = require('./lib/shared/utils/classes/storage/localStorage.cjs');
42
43
  var PhantomLedgerIcon = require('./lib/shared/assets/wallets/PhantomLedgerIcon/PhantomLedgerIcon.cjs');
43
44
  var stroke = require('./lib/shared/assets/stroke.cjs');
@@ -163,6 +164,7 @@ exports.useOnClickOutside = index$1.useOnClickOutside;
163
164
  exports.usePreventPageScroll = usePreventPageScroll.usePreventPageScroll;
164
165
  exports.useGlobalLoading = useGlobalLoading.useGlobalLoading;
165
166
  exports.useMediaQuery = useMediaQuery.useMediaQuery;
167
+ exports.useEffectOnce = useEffectOnce.useEffectOnce;
166
168
  exports.LocalStorage = localStorage.LocalStorage;
167
169
  exports.PhantomLedgerIcon = PhantomLedgerIcon.PhantomLedgerIcon;
168
170
  exports.ArrowIcon = stroke.ReactComponent;
package/src/index.js CHANGED
@@ -34,6 +34,7 @@ export { useOnClickOutside } from './lib/shared/utils/hooks/useOnClickOutside/in
34
34
  export { usePreventPageScroll } from './lib/shared/utils/hooks/usePreventPageScroll/usePreventPageScroll.js';
35
35
  export { useGlobalLoading } from './lib/shared/utils/hooks/useGlobalLoading/useGlobalLoading.js';
36
36
  export { useMediaQuery } from './lib/shared/utils/hooks/useMediaQuery/useMediaQuery.js';
37
+ export { useEffectOnce } from './lib/shared/utils/hooks/useEffectOnce/useEffectOnce.js';
37
38
  export { LocalStorage } from './lib/shared/utils/classes/storage/localStorage.js';
38
39
  export { PhantomLedgerIcon } from './lib/shared/assets/wallets/PhantomLedgerIcon/PhantomLedgerIcon.js';
39
40
  export { ReactComponent as ArrowIcon } from './lib/shared/assets/stroke.js';
package/src/lib/Main.cjs CHANGED
@@ -21,6 +21,7 @@ var usePreventPageScroll = require('./shared/utils/hooks/usePreventPageScroll/us
21
21
  var index$1 = require('./shared/consts/index.cjs');
22
22
  var useInternalDynamicContext = require('./context/DynamicContext/useInternalDynamicContext.cjs');
23
23
  require('@dynamic-labs/multi-wallet');
24
+ var isSupportedNetwork = require('./utils/functions/isSupportedNetwork/isSupportedNetwork.cjs');
24
25
  require('./components/ShadowDOM/ShadowDOM.cjs');
25
26
  require('./context/ThemeContext/ThemeContext.cjs');
26
27
  var Portal = require('./components/Portal/Portal.cjs');
@@ -38,6 +39,7 @@ require('./components/Transition/OpacityTransition/OpacityTransition.cjs');
38
39
  require('./components/Alert/Alert.cjs');
39
40
  var useWalletItemActions = require('./utils/hooks/useWalletItemActions/useWalletItemActions.cjs');
40
41
  require('./utils/hooks/useUserUpdateRequest/useUserUpdateRequest.cjs');
42
+ var isConnectOnly = require('./utils/hooks/authenticationHooks/helpers/isConnectOnly.cjs');
41
43
  require('./components/Popper/Popper/Popper.cjs');
42
44
  var PopperContext = require('./components/Popper/PopperContext/PopperContext.cjs');
43
45
  require('formik');
@@ -51,7 +53,7 @@ var viewToComponentMap = require('./views/viewToComponentMap.cjs');
51
53
  require('./main.global.cjs');
52
54
 
53
55
  const Main = () => {
54
- const { selectedWalletConnector, linkedWallets, isProjectSettingsLoading, projectSettings, setShowAuthFlow, showAuthFlow, wallets, clearStatesOnBackClick, user, } = useInternalDynamicContext.useInternalDynamicContext();
56
+ const { selectedWalletConnector, linkedWallets, isProjectSettingsLoading, projectSettings, setShowAuthFlow, showAuthFlow, wallets, clearStatesOnBackClick, user, unlinkConnectedWallet, authMode, connectedWallets, } = useInternalDynamicContext.useInternalDynamicContext();
55
57
  const { view, goToInitialView } = ViewContext.useViewContext();
56
58
  const { setDeniedAddress, setDeniedOauthProvider } = AccessDeniedContext.useAccessDeniedContext();
57
59
  usePreventPageScroll.usePreventPageScroll(showAuthFlow);
@@ -61,10 +63,44 @@ const Main = () => {
61
63
  setDeniedOauthProvider(undefined);
62
64
  clearStatesOnBackClick();
63
65
  };
64
- const handleOnPortalUnmount = React.useCallback(
65
- // IMPORTANT: we need to reset the view because we reset state that the view depends on
66
- // so if the previous view renders when the user reopens the widget, it will crash
67
- () => {
66
+ const handleOnPortalExiting = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
67
+ // In the connect only mode (default and bridge)
68
+ // We want to disconnect wallet when users closes `network not supported` view
69
+ // without updating network in wallet
70
+ // We use onExiting instead onUnmount to avoid jump effect in inline widget
71
+ if (isConnectOnly.isConnectOnly(user, authMode)) {
72
+ const viewsToDisconnectWalletOnClose = [
73
+ 'network-not-supported',
74
+ 'network-not-supported-manual',
75
+ ];
76
+ if (viewsToDisconnectWalletOnClose.includes(view)) {
77
+ if (!selectedWalletConnector) {
78
+ return;
79
+ }
80
+ const walletByConnectorName = connectedWallets.find((connectedWallet) => connectedWallet.connector.name === selectedWalletConnector.name);
81
+ if (!walletByConnectorName) {
82
+ return;
83
+ }
84
+ // Validate the network
85
+ if (!isSupportedNetwork.isSupportedNetwork({
86
+ network: yield walletByConnectorName.connector.getNetwork(),
87
+ walletConnector: walletByConnectorName.connector,
88
+ })) {
89
+ unlinkConnectedWallet(walletByConnectorName.id);
90
+ }
91
+ }
92
+ }
93
+ }), [
94
+ selectedWalletConnector,
95
+ authMode,
96
+ connectedWallets,
97
+ unlinkConnectedWallet,
98
+ user,
99
+ view,
100
+ ]);
101
+ const handleOnPortalUnmount = React.useCallback(() => {
102
+ // IMPORTANT: we need to reset the view because we reset state that the view depends on
103
+ // so if the previous view renders when the user reopens the widget, it will crash
68
104
  goToInitialView();
69
105
  }, [goToInitialView]);
70
106
  useVerifyOnAwaitingSignature.useVerifyOnAwaitingSignature();
@@ -105,8 +141,11 @@ const Main = () => {
105
141
  }, [wallets]);
106
142
  const showDynamicAuth = showAuthFlow && !isProjectSettingsLoading;
107
143
  return (jsxRuntime.jsx(SocialRedirectContext.SocialRedirectContextProvider, { children: jsxRuntime.jsx(index.FooterAnimationContextProvider, { children: jsxRuntime.jsx(Portal.Portal, Object.assign({ zIndex: index$1.authModalZIndex, isShown: showDynamicAuth, handleClose: handleClose, withBackdrop: true, transitionEvents: {
144
+ onExiting: handleOnPortalExiting,
108
145
  onUnmount: handleOnPortalUnmount,
109
- } }, { children: jsxRuntime.jsx(PopperContext.PopperProvider, { children: jsxRuntime.jsx(DynamicAuthLayout.DynamicAuthLayout, Object.assign({ transitionProps: { isShown: showDynamicAuth }, onClose: handleClose, projectSettings: projectSettings, walletConnector: selectedWalletConnector }, { children: viewToComponentMap.viewToComponentMap[view] })) }) })) }) }));
146
+ } }, { children: jsxRuntime.jsx(PopperContext.PopperProvider, { children: jsxRuntime.jsx(DynamicAuthLayout.DynamicAuthLayout, Object.assign({ transitionProps: {
147
+ isShown: showDynamicAuth,
148
+ }, onClose: handleClose, projectSettings: projectSettings, walletConnector: selectedWalletConnector }, { children: viewToComponentMap.viewToComponentMap[view] })) }) })) }) }));
110
149
  };
111
150
 
112
151
  exports.Main = Main;
package/src/lib/Main.js CHANGED
@@ -17,6 +17,7 @@ import { usePreventPageScroll } from './shared/utils/hooks/usePreventPageScroll/
17
17
  import { authModalZIndex } from './shared/consts/index.js';
18
18
  import { useInternalDynamicContext } from './context/DynamicContext/useInternalDynamicContext.js';
19
19
  import '@dynamic-labs/multi-wallet';
20
+ import { isSupportedNetwork } from './utils/functions/isSupportedNetwork/isSupportedNetwork.js';
20
21
  import './components/ShadowDOM/ShadowDOM.js';
21
22
  import './context/ThemeContext/ThemeContext.js';
22
23
  import { Portal } from './components/Portal/Portal.js';
@@ -34,6 +35,7 @@ import './components/Transition/OpacityTransition/OpacityTransition.js';
34
35
  import './components/Alert/Alert.js';
35
36
  import { useWalletItemActions } from './utils/hooks/useWalletItemActions/useWalletItemActions.js';
36
37
  import './utils/hooks/useUserUpdateRequest/useUserUpdateRequest.js';
38
+ import { isConnectOnly } from './utils/hooks/authenticationHooks/helpers/isConnectOnly.js';
37
39
  import './components/Popper/Popper/Popper.js';
38
40
  import { PopperProvider } from './components/Popper/PopperContext/PopperContext.js';
39
41
  import 'formik';
@@ -47,7 +49,7 @@ import { viewToComponentMap } from './views/viewToComponentMap.js';
47
49
  import './main.global.js';
48
50
 
49
51
  const Main = () => {
50
- const { selectedWalletConnector, linkedWallets, isProjectSettingsLoading, projectSettings, setShowAuthFlow, showAuthFlow, wallets, clearStatesOnBackClick, user, } = useInternalDynamicContext();
52
+ const { selectedWalletConnector, linkedWallets, isProjectSettingsLoading, projectSettings, setShowAuthFlow, showAuthFlow, wallets, clearStatesOnBackClick, user, unlinkConnectedWallet, authMode, connectedWallets, } = useInternalDynamicContext();
51
53
  const { view, goToInitialView } = useViewContext();
52
54
  const { setDeniedAddress, setDeniedOauthProvider } = useAccessDeniedContext();
53
55
  usePreventPageScroll(showAuthFlow);
@@ -57,10 +59,44 @@ const Main = () => {
57
59
  setDeniedOauthProvider(undefined);
58
60
  clearStatesOnBackClick();
59
61
  };
60
- const handleOnPortalUnmount = useCallback(
61
- // IMPORTANT: we need to reset the view because we reset state that the view depends on
62
- // so if the previous view renders when the user reopens the widget, it will crash
63
- () => {
62
+ const handleOnPortalExiting = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
63
+ // In the connect only mode (default and bridge)
64
+ // We want to disconnect wallet when users closes `network not supported` view
65
+ // without updating network in wallet
66
+ // We use onExiting instead onUnmount to avoid jump effect in inline widget
67
+ if (isConnectOnly(user, authMode)) {
68
+ const viewsToDisconnectWalletOnClose = [
69
+ 'network-not-supported',
70
+ 'network-not-supported-manual',
71
+ ];
72
+ if (viewsToDisconnectWalletOnClose.includes(view)) {
73
+ if (!selectedWalletConnector) {
74
+ return;
75
+ }
76
+ const walletByConnectorName = connectedWallets.find((connectedWallet) => connectedWallet.connector.name === selectedWalletConnector.name);
77
+ if (!walletByConnectorName) {
78
+ return;
79
+ }
80
+ // Validate the network
81
+ if (!isSupportedNetwork({
82
+ network: yield walletByConnectorName.connector.getNetwork(),
83
+ walletConnector: walletByConnectorName.connector,
84
+ })) {
85
+ unlinkConnectedWallet(walletByConnectorName.id);
86
+ }
87
+ }
88
+ }
89
+ }), [
90
+ selectedWalletConnector,
91
+ authMode,
92
+ connectedWallets,
93
+ unlinkConnectedWallet,
94
+ user,
95
+ view,
96
+ ]);
97
+ const handleOnPortalUnmount = useCallback(() => {
98
+ // IMPORTANT: we need to reset the view because we reset state that the view depends on
99
+ // so if the previous view renders when the user reopens the widget, it will crash
64
100
  goToInitialView();
65
101
  }, [goToInitialView]);
66
102
  useVerifyOnAwaitingSignature();
@@ -101,8 +137,11 @@ const Main = () => {
101
137
  }, [wallets]);
102
138
  const showDynamicAuth = showAuthFlow && !isProjectSettingsLoading;
103
139
  return (jsx(SocialRedirectContextProvider, { children: jsx(FooterAnimationContextProvider, { children: jsx(Portal, Object.assign({ zIndex: authModalZIndex, isShown: showDynamicAuth, handleClose: handleClose, withBackdrop: true, transitionEvents: {
140
+ onExiting: handleOnPortalExiting,
104
141
  onUnmount: handleOnPortalUnmount,
105
- } }, { children: jsx(PopperProvider, { children: jsx(DynamicAuthLayout, Object.assign({ transitionProps: { isShown: showDynamicAuth }, onClose: handleClose, projectSettings: projectSettings, walletConnector: selectedWalletConnector }, { children: viewToComponentMap[view] })) }) })) }) }));
142
+ } }, { children: jsx(PopperProvider, { children: jsx(DynamicAuthLayout, Object.assign({ transitionProps: {
143
+ isShown: showDynamicAuth,
144
+ }, onClose: handleClose, projectSettings: projectSettings, walletConnector: selectedWalletConnector }, { children: viewToComponentMap[view] })) }) })) }) }));
106
145
  };
107
146
 
108
147
  export { Main, Main as default };
@@ -46,29 +46,29 @@ var SvgNoWalletFound = function SvgNoWalletFound(_ref) {
46
46
  fillRule: "evenodd",
47
47
  clipRule: "evenodd",
48
48
  d: "M99.064 34.016c-6.654 0-12.048 5.394-12.048 12.048 0 6.653 5.394 12.047 12.048 12.047 6.653 0 12.047-5.394 12.047-12.047 0-6.654-5.394-12.048-12.047-12.048ZM83 46.064C83 37.192 90.192 30 99.064 30c8.871 0 16.063 7.192 16.063 16.064 0 3.712-1.259 7.13-3.373 9.85l8.658 8.658a2.008 2.008 0 0 1-2.84 2.84l-8.658-8.658a15.994 15.994 0 0 1-9.85 3.373C90.192 62.127 83 54.935 83 46.064Z",
49
- fill: "#16254D",
50
- fillOpacity: 0.07
49
+ fill: "currentColor",
50
+ fillOpacity: 0.35
51
51
  })), _rect || (_rect = /*#__PURE__*/React__namespace.createElement("rect", {
52
52
  y: 8,
53
53
  width: 121,
54
54
  height: 16,
55
55
  rx: 4,
56
- fill: "#16254D",
57
- fillOpacity: 0.05
56
+ fill: "currentColor",
57
+ fillOpacity: 0.3
58
58
  })), _rect2 || (_rect2 = /*#__PURE__*/React__namespace.createElement("rect", {
59
59
  y: 30,
60
60
  width: 75,
61
61
  height: 16,
62
62
  rx: 4,
63
- fill: "#16254D",
64
- fillOpacity: 0.05
63
+ fill: "currentColor",
64
+ fillOpacity: 0.3
65
65
  })), _rect3 || (_rect3 = /*#__PURE__*/React__namespace.createElement("rect", {
66
66
  y: 52,
67
67
  width: 75,
68
68
  height: 16,
69
69
  rx: 4,
70
- fill: "#16254D",
71
- fillOpacity: 0.05
70
+ fill: "currentColor",
71
+ fillOpacity: 0.3
72
72
  })));
73
73
  };
74
74
 
@@ -22,29 +22,29 @@ var SvgNoWalletFound = function SvgNoWalletFound(_ref) {
22
22
  fillRule: "evenodd",
23
23
  clipRule: "evenodd",
24
24
  d: "M99.064 34.016c-6.654 0-12.048 5.394-12.048 12.048 0 6.653 5.394 12.047 12.048 12.047 6.653 0 12.047-5.394 12.047-12.047 0-6.654-5.394-12.048-12.047-12.048ZM83 46.064C83 37.192 90.192 30 99.064 30c8.871 0 16.063 7.192 16.063 16.064 0 3.712-1.259 7.13-3.373 9.85l8.658 8.658a2.008 2.008 0 0 1-2.84 2.84l-8.658-8.658a15.994 15.994 0 0 1-9.85 3.373C90.192 62.127 83 54.935 83 46.064Z",
25
- fill: "#16254D",
26
- fillOpacity: 0.07
25
+ fill: "currentColor",
26
+ fillOpacity: 0.35
27
27
  })), _rect || (_rect = /*#__PURE__*/React.createElement("rect", {
28
28
  y: 8,
29
29
  width: 121,
30
30
  height: 16,
31
31
  rx: 4,
32
- fill: "#16254D",
33
- fillOpacity: 0.05
32
+ fill: "currentColor",
33
+ fillOpacity: 0.3
34
34
  })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement("rect", {
35
35
  y: 30,
36
36
  width: 75,
37
37
  height: 16,
38
38
  rx: 4,
39
- fill: "#16254D",
40
- fillOpacity: 0.05
39
+ fill: "currentColor",
40
+ fillOpacity: 0.3
41
41
  })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement("rect", {
42
42
  y: 52,
43
43
  width: 75,
44
44
  height: 16,
45
45
  rx: 4,
46
- fill: "#16254D",
47
- fillOpacity: 0.05
46
+ fill: "currentColor",
47
+ fillOpacity: 0.3
48
48
  })));
49
49
  };
50
50
 
@@ -7,12 +7,19 @@ var classNames = require('../../utils/functions/classNames/classNames.cjs');
7
7
  var Typography = require('../Typography/Typography.cjs');
8
8
  require('react');
9
9
  var dynamicLogo = require('../../assets/dynamic-logo.cjs');
10
+ var useInternalDynamicContext = require('../../context/DynamicContext/useInternalDynamicContext.cjs');
10
11
 
11
12
  const URL = 'https://dynamic.xyz';
12
13
  const alignClassNames = {
13
14
  center: 'powered-by-dynamic--center',
14
15
  right: 'powered-by-dynamic--right',
15
16
  };
16
- const PoweredByDynamic = ({ align = 'center', classNameLogo, classNameRoot, classNameText, }) => (jsxRuntime.jsxs("a", Object.assign({ target: '_blank', href: URL, className: classNames.classNames('powered-by-dynamic', alignClassNames[align], classNameRoot), rel: 'noreferrer' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ as: 'span', color: 'secondary', weight: 'regular', variant: 'body_mini', className: classNames.classNames('powered-by-dynamic__text', classNameText) }, { children: "Powered by" })), jsxRuntime.jsx(dynamicLogo.ReactComponent, { className: classNames.classNames('powered-by-dynamic__logo', classNameLogo) })] })));
17
+ const PoweredByDynamic = ({ align = 'center', classNameLogo, classNameRoot, classNameText, }) => {
18
+ const { projectSettings } = useInternalDynamicContext.useInternalDynamicContext();
19
+ if ((projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.displayDynamicMessaging) === false) {
20
+ return null;
21
+ }
22
+ return (jsxRuntime.jsxs("a", Object.assign({ target: '_blank', href: URL, className: classNames.classNames('powered-by-dynamic', alignClassNames[align], classNameRoot), rel: 'noreferrer' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ as: 'span', color: 'secondary', weight: 'regular', variant: 'body_mini', className: classNames.classNames('powered-by-dynamic__text', classNameText) }, { children: "Powered by" })), jsxRuntime.jsx(dynamicLogo.ReactComponent, { className: classNames.classNames('powered-by-dynamic__logo', classNameLogo) })] })));
23
+ };
17
24
 
18
25
  exports.PoweredByDynamic = PoweredByDynamic;
@@ -3,12 +3,19 @@ import { classNames } from '../../utils/functions/classNames/classNames.js';
3
3
  import { Typography } from '../Typography/Typography.js';
4
4
  import 'react';
5
5
  import { ReactComponent as SvgDynamicLogo } from '../../assets/dynamic-logo.js';
6
+ import { useInternalDynamicContext } from '../../context/DynamicContext/useInternalDynamicContext.js';
6
7
 
7
8
  const URL = 'https://dynamic.xyz';
8
9
  const alignClassNames = {
9
10
  center: 'powered-by-dynamic--center',
10
11
  right: 'powered-by-dynamic--right',
11
12
  };
12
- const PoweredByDynamic = ({ align = 'center', classNameLogo, classNameRoot, classNameText, }) => (jsxs("a", Object.assign({ target: '_blank', href: URL, className: classNames('powered-by-dynamic', alignClassNames[align], classNameRoot), rel: 'noreferrer' }, { children: [jsx(Typography, Object.assign({ as: 'span', color: 'secondary', weight: 'regular', variant: 'body_mini', className: classNames('powered-by-dynamic__text', classNameText) }, { children: "Powered by" })), jsx(SvgDynamicLogo, { className: classNames('powered-by-dynamic__logo', classNameLogo) })] })));
13
+ const PoweredByDynamic = ({ align = 'center', classNameLogo, classNameRoot, classNameText, }) => {
14
+ const { projectSettings } = useInternalDynamicContext();
15
+ if ((projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.sdk.displayDynamicMessaging) === false) {
16
+ return null;
17
+ }
18
+ return (jsxs("a", Object.assign({ target: '_blank', href: URL, className: classNames('powered-by-dynamic', alignClassNames[align], classNameRoot), rel: 'noreferrer' }, { children: [jsx(Typography, Object.assign({ as: 'span', color: 'secondary', weight: 'regular', variant: 'body_mini', className: classNames('powered-by-dynamic__text', classNameText) }, { children: "Powered by" })), jsx(SvgDynamicLogo, { className: classNames('powered-by-dynamic__logo', classNameLogo) })] })));
19
+ };
13
20
 
14
21
  export { PoweredByDynamic };
@@ -45,7 +45,7 @@ const SendBalancePageLayout = ({ error, walletAddress, onClickClose, onClickBack
45
45
  return;
46
46
  return parseFloat(balance);
47
47
  }, [balance]);
48
- return (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, Object.assign({ leading: backButton, trailing: closeButton }, { children: jsxRuntime.jsxs("div", Object.assign({ className: 'send-balance-page-layout__header-content' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ variant: 'body_normal', color: 'primary', as: 'p' }, { children: "Send from" })), walletName && (jsxRuntime.jsx(Icon.Icon, Object.assign({ size: 'small' }, { children: jsxRuntime.jsx(walletBook.WalletIcon, { walletName: walletName }) }))), jsxRuntime.jsx(Typography.Typography, Object.assign({ variant: 'body_normal', color: 'primary', as: 'p' }, { children: shortenWalletAddress.shortenWalletAddress(walletAddress, 3, 3) }))] })) })), jsxRuntime.jsxs("div", Object.assign({ className: 'send-balance-page-layout__body' }, { children: [jsxRuntime.jsx(AnimatePresence.AnimatePresence, Object.assign({ animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}) }, { children: error && (jsxRuntime.jsx("div", Object.assign({ className: 'send-balance-page-layout__error' }, { children: jsxRuntime.jsx(Alert.Alert, Object.assign({ icon: 'error', variant: 'error' }, { children: error })) }))) })), networkName && networkIcon && (jsxRuntime.jsx("div", Object.assign({ className: 'send-balance-page-layout__network-container' }, { children: jsxRuntime.jsx(Chip.Chip, Object.assign({ icon: networkIcon }, { children: networkName })) }))), jsxRuntime.jsxs("div", Object.assign({ className: 'send-balance-page-layout__balance-container' }, { children: [jsxRuntime.jsx(FormFieldLabel.FormFieldLabel, Object.assign({ divider: true }, { children: "Token" })), jsxRuntime.jsx(TokenBalanceCard.TokenBalanceCard, { chain: chain, currencySymbol: currencySymbol, balance: balance })] })), jsxRuntime.jsx(SendBalanceForm.SendBalanceForm, { onSubmit: onSubmit, initialValues: initialValues, balance: balanceNumber }), displayPoweredByDynamicFooter && (jsxRuntime.jsx("div", Object.assign({ className: 'send-balance-page-layout__footer' }, { children: jsxRuntime.jsx(PoweredByDynamic.PoweredByDynamic, {}) })))] }))] }));
48
+ return (jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, Object.assign({ leading: backButton, trailing: closeButton }, { children: jsxRuntime.jsxs("div", Object.assign({ className: 'send-balance-page-layout__header-content' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ variant: 'body_normal', color: 'primary', as: 'p' }, { children: "Send from" })), walletName && (jsxRuntime.jsx(Icon.Icon, Object.assign({ size: 'small' }, { children: jsxRuntime.jsx(walletBook.WalletIcon, { walletName: walletName }) }))), jsxRuntime.jsx(Typography.Typography, Object.assign({ variant: 'body_normal', color: 'primary', as: 'p' }, { children: shortenWalletAddress.shortenWalletAddress(walletAddress, 3, 3) }))] })) })), jsxRuntime.jsxs("div", Object.assign({ className: 'send-balance-page-layout__body' }, { children: [jsxRuntime.jsx(AnimatePresence.AnimatePresence, Object.assign({ animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}) }, { children: error && (jsxRuntime.jsx("div", Object.assign({ className: 'send-balance-page-layout__error' }, { children: jsxRuntime.jsx(Alert.Alert, Object.assign({ icon: 'error', variant: 'error' }, { children: error })) }))) })), networkName && networkIcon && (jsxRuntime.jsx("div", Object.assign({ className: 'send-balance-page-layout__network-container' }, { children: jsxRuntime.jsx(Chip.Chip, Object.assign({ icon: networkIcon }, { children: networkName })) }))), jsxRuntime.jsxs("div", Object.assign({ className: 'send-balance-page-layout__balance-container' }, { children: [jsxRuntime.jsx(FormFieldLabel.FormFieldLabel, Object.assign({ divider: true }, { children: "Token" })), jsxRuntime.jsx(TokenBalanceCard.TokenBalanceCard, { chain: chain, currencySymbol: currencySymbol, balance: balance })] })), jsxRuntime.jsx(SendBalanceForm.SendBalanceForm, { onSubmit: onSubmit, initialValues: initialValues, balance: balanceNumber }), displayPoweredByDynamicFooter && (jsxRuntime.jsx(PoweredByDynamic.PoweredByDynamic, { classNameRoot: 'send-balance-page-layout__footer' }))] }))] }));
49
49
  };
50
50
 
51
51
  exports.SendBalancePageLayout = SendBalancePageLayout;
@@ -41,7 +41,7 @@ const SendBalancePageLayout = ({ error, walletAddress, onClickClose, onClickBack
41
41
  return;
42
42
  return parseFloat(balance);
43
43
  }, [balance]);
44
- return (jsxs("div", { children: [jsx(ModalHeader, Object.assign({ leading: backButton, trailing: closeButton }, { children: jsxs("div", Object.assign({ className: 'send-balance-page-layout__header-content' }, { children: [jsx(Typography, Object.assign({ variant: 'body_normal', color: 'primary', as: 'p' }, { children: "Send from" })), walletName && (jsx(Icon, Object.assign({ size: 'small' }, { children: jsx(WalletIcon, { walletName: walletName }) }))), jsx(Typography, Object.assign({ variant: 'body_normal', color: 'primary', as: 'p' }, { children: shortenWalletAddress(walletAddress, 3, 3) }))] })) })), jsxs("div", Object.assign({ className: 'send-balance-page-layout__body' }, { children: [jsx(AnimatePresence, Object.assign({ animationComponent: jsx(VerticalDrawerTransition, {}) }, { children: error && (jsx("div", Object.assign({ className: 'send-balance-page-layout__error' }, { children: jsx(Alert, Object.assign({ icon: 'error', variant: 'error' }, { children: error })) }))) })), networkName && networkIcon && (jsx("div", Object.assign({ className: 'send-balance-page-layout__network-container' }, { children: jsx(Chip, Object.assign({ icon: networkIcon }, { children: networkName })) }))), jsxs("div", Object.assign({ className: 'send-balance-page-layout__balance-container' }, { children: [jsx(FormFieldLabel, Object.assign({ divider: true }, { children: "Token" })), jsx(TokenBalanceCard, { chain: chain, currencySymbol: currencySymbol, balance: balance })] })), jsx(SendBalanceForm, { onSubmit: onSubmit, initialValues: initialValues, balance: balanceNumber }), displayPoweredByDynamicFooter && (jsx("div", Object.assign({ className: 'send-balance-page-layout__footer' }, { children: jsx(PoweredByDynamic, {}) })))] }))] }));
44
+ return (jsxs("div", { children: [jsx(ModalHeader, Object.assign({ leading: backButton, trailing: closeButton }, { children: jsxs("div", Object.assign({ className: 'send-balance-page-layout__header-content' }, { children: [jsx(Typography, Object.assign({ variant: 'body_normal', color: 'primary', as: 'p' }, { children: "Send from" })), walletName && (jsx(Icon, Object.assign({ size: 'small' }, { children: jsx(WalletIcon, { walletName: walletName }) }))), jsx(Typography, Object.assign({ variant: 'body_normal', color: 'primary', as: 'p' }, { children: shortenWalletAddress(walletAddress, 3, 3) }))] })) })), jsxs("div", Object.assign({ className: 'send-balance-page-layout__body' }, { children: [jsx(AnimatePresence, Object.assign({ animationComponent: jsx(VerticalDrawerTransition, {}) }, { children: error && (jsx("div", Object.assign({ className: 'send-balance-page-layout__error' }, { children: jsx(Alert, Object.assign({ icon: 'error', variant: 'error' }, { children: error })) }))) })), networkName && networkIcon && (jsx("div", Object.assign({ className: 'send-balance-page-layout__network-container' }, { children: jsx(Chip, Object.assign({ icon: networkIcon }, { children: networkName })) }))), jsxs("div", Object.assign({ className: 'send-balance-page-layout__balance-container' }, { children: [jsx(FormFieldLabel, Object.assign({ divider: true }, { children: "Token" })), jsx(TokenBalanceCard, { chain: chain, currencySymbol: currencySymbol, balance: balance })] })), jsx(SendBalanceForm, { onSubmit: onSubmit, initialValues: initialValues, balance: balanceNumber }), displayPoweredByDynamicFooter && (jsx(PoweredByDynamic, { classNameRoot: 'send-balance-page-layout__footer' }))] }))] }));
45
45
  };
46
46
 
47
47
  export { SendBalancePageLayout };
@@ -21,15 +21,15 @@ require('@dynamic-labs/multi-wallet');
21
21
  var isEmailProviderEnabled = require('../../utils/functions/isEmailProviderEnabled/isEmailProviderEnabled.cjs');
22
22
  var ShadowDOM = require('../ShadowDOM/ShadowDOM.cjs');
23
23
  var ThemeSwitch = require('./components/ThemeSwitch.cjs');
24
- var BrandStyleSwitch = require('./components/BrandStyleSwitch.cjs');
25
24
  var PrimaryColorInput = require('./components/PrimaryColorInput.cjs');
26
25
  var AuthModeSwitch = require('./components/AuthModeSwitch.cjs');
27
26
  var LoginWithEmailSwitch = require('./components/LoginWithEmailSwitch.cjs');
28
27
  var LoginWithEmailViewDisplayPriorityOrderSwitch = require('./components/LoginWithEmailViewDisplayPriorityOrderSwitch.cjs');
29
28
  var TemplateSelect = require('./components/TemplateSelect.cjs');
29
+ var MultiWalletSwitch = require('./components/MultiWalletSwitch.cjs');
30
30
 
31
31
  const Toolkit = () => {
32
- const { projectSettings, user, showAuthFlow, showDynamicUserProfile, toolkitEnabled, authMode, setAuthMode, } = useInternalDynamicContext.useInternalDynamicContext();
32
+ const { projectSettings, user, showAuthFlow, showDynamicUserProfile, toolkitEnabled, authMode, setAuthMode, multiWallet, setMultiWallet, } = useInternalDynamicContext.useInternalDynamicContext();
33
33
  const isToolkitVisible = React.useMemo(() => {
34
34
  if (!toolkitEnabled)
35
35
  return false;
@@ -37,7 +37,7 @@ const Toolkit = () => {
37
37
  }, [showAuthFlow, showDynamicUserProfile, toolkitEnabled]);
38
38
  if (!isToolkitVisible)
39
39
  return null;
40
- return (jsxRuntime.jsx(ShadowDOM.ShadowDOM, Object.assign({ dataTestId: 'toolkit-shadowdom', className: 'toolkit-shadowdom', zIndex: index.toolkitZIndex }, { children: jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__container' }, { children: [jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Theme" })), jsxRuntime.jsx(ThemeSwitch.ThemeSwitch, {})] })), jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Template" })), jsxRuntime.jsx(TemplateSelect.TemplateSelect, {})] })), jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Brand" })), jsxRuntime.jsx(BrandStyleSwitch.BrandStyleSwitch, {})] })), jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Primary Color" })), jsxRuntime.jsx(PrimaryColorInput.PrimaryColorInput, {})] })), jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Auth mode" })), jsxRuntime.jsx(AuthModeSwitch.AuthModeSwitch, { authMode: authMode, setAuthMode: setAuthMode })] })), isEmailProviderEnabled.isEmailProviderEnabled((projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) || []) && !user && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Log in with Email" })), jsxRuntime.jsx(LoginWithEmailSwitch.LoginWithEmailSwitch, {})] })), jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Email vs Wallet priority" })), jsxRuntime.jsx(LoginWithEmailViewDisplayPriorityOrderSwitch.LoginWithEmailViewDisplayPriorityOrderSwitch, {})] }))] }))] })) })));
40
+ return (jsxRuntime.jsx(ShadowDOM.ShadowDOM, Object.assign({ dataTestId: 'toolkit-shadowdom', className: 'toolkit-shadowdom', zIndex: index.toolkitZIndex }, { children: jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__container' }, { children: [jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Theme" })), jsxRuntime.jsx(ThemeSwitch.ThemeSwitch, {})] })), jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Template" })), jsxRuntime.jsx(TemplateSelect.TemplateSelect, {})] })), jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Primary Color" })), jsxRuntime.jsx(PrimaryColorInput.PrimaryColorInput, {})] })), !user && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Auth mode" })), jsxRuntime.jsx(AuthModeSwitch.AuthModeSwitch, { authMode: authMode, setAuthMode: setAuthMode })] })), jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Multi Wallet" })), jsxRuntime.jsx(MultiWalletSwitch.MultiWalletSwitch, { multiWallet: multiWallet && authMode === 'connect-and-sign', disabled: authMode === 'connect-only', setMultiWallet: setMultiWallet })] }))] })), isEmailProviderEnabled.isEmailProviderEnabled((projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) || []) && !user && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Log in with Email" })), jsxRuntime.jsx(LoginWithEmailSwitch.LoginWithEmailSwitch, {})] })), jsxRuntime.jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Email vs Wallet priority" })), jsxRuntime.jsx(LoginWithEmailViewDisplayPriorityOrderSwitch.LoginWithEmailViewDisplayPriorityOrderSwitch, {})] }))] }))] })) })));
41
41
  };
42
42
 
43
43
  exports.Toolkit = Toolkit;
@@ -17,15 +17,15 @@ import '@dynamic-labs/multi-wallet';
17
17
  import { isEmailProviderEnabled } from '../../utils/functions/isEmailProviderEnabled/isEmailProviderEnabled.js';
18
18
  import { ShadowDOM } from '../ShadowDOM/ShadowDOM.js';
19
19
  import { ThemeSwitch } from './components/ThemeSwitch.js';
20
- import { BrandStyleSwitch } from './components/BrandStyleSwitch.js';
21
20
  import { PrimaryColorInput } from './components/PrimaryColorInput.js';
22
21
  import { AuthModeSwitch } from './components/AuthModeSwitch.js';
23
22
  import { LoginWithEmailSwitch } from './components/LoginWithEmailSwitch.js';
24
23
  import { LoginWithEmailViewDisplayPriorityOrderSwitch } from './components/LoginWithEmailViewDisplayPriorityOrderSwitch.js';
25
24
  import { TemplateSelect } from './components/TemplateSelect.js';
25
+ import { MultiWalletSwitch } from './components/MultiWalletSwitch.js';
26
26
 
27
27
  const Toolkit = () => {
28
- const { projectSettings, user, showAuthFlow, showDynamicUserProfile, toolkitEnabled, authMode, setAuthMode, } = useInternalDynamicContext();
28
+ const { projectSettings, user, showAuthFlow, showDynamicUserProfile, toolkitEnabled, authMode, setAuthMode, multiWallet, setMultiWallet, } = useInternalDynamicContext();
29
29
  const isToolkitVisible = useMemo(() => {
30
30
  if (!toolkitEnabled)
31
31
  return false;
@@ -33,7 +33,7 @@ const Toolkit = () => {
33
33
  }, [showAuthFlow, showDynamicUserProfile, toolkitEnabled]);
34
34
  if (!isToolkitVisible)
35
35
  return null;
36
- return (jsx(ShadowDOM, Object.assign({ dataTestId: 'toolkit-shadowdom', className: 'toolkit-shadowdom', zIndex: toolkitZIndex }, { children: jsxs("div", Object.assign({ className: 'toolkit__container' }, { children: [jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Theme" })), jsx(ThemeSwitch, {})] })), jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Template" })), jsx(TemplateSelect, {})] })), jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Brand" })), jsx(BrandStyleSwitch, {})] })), jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Primary Color" })), jsx(PrimaryColorInput, {})] })), jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Auth mode" })), jsx(AuthModeSwitch, { authMode: authMode, setAuthMode: setAuthMode })] })), isEmailProviderEnabled((projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) || []) && !user && (jsxs(Fragment, { children: [jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Log in with Email" })), jsx(LoginWithEmailSwitch, {})] })), jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Email vs Wallet priority" })), jsx(LoginWithEmailViewDisplayPriorityOrderSwitch, {})] }))] }))] })) })));
36
+ return (jsx(ShadowDOM, Object.assign({ dataTestId: 'toolkit-shadowdom', className: 'toolkit-shadowdom', zIndex: toolkitZIndex }, { children: jsxs("div", Object.assign({ className: 'toolkit__container' }, { children: [jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Theme" })), jsx(ThemeSwitch, {})] })), jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Template" })), jsx(TemplateSelect, {})] })), jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Primary Color" })), jsx(PrimaryColorInput, {})] })), !user && (jsxs(Fragment, { children: [jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Auth mode" })), jsx(AuthModeSwitch, { authMode: authMode, setAuthMode: setAuthMode })] })), jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Multi Wallet" })), jsx(MultiWalletSwitch, { multiWallet: multiWallet && authMode === 'connect-and-sign', disabled: authMode === 'connect-only', setMultiWallet: setMultiWallet })] }))] })), isEmailProviderEnabled((projectSettings === null || projectSettings === void 0 ? void 0 : projectSettings.providers) || []) && !user && (jsxs(Fragment, { children: [jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Log in with Email" })), jsx(LoginWithEmailSwitch, {})] })), jsxs("div", Object.assign({ className: 'toolkit__switcher' }, { children: [jsx(Typography, Object.assign({ className: 'switcher__copy', as: 'h2', variant: 'body_normal' }, { children: "Email vs Wallet priority" })), jsx(LoginWithEmailViewDisplayPriorityOrderSwitch, {})] }))] }))] })) })));
37
37
  };
38
38
 
39
39
  export { Toolkit };
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var Switch = require('../../Switch/Switch.cjs');
7
+
8
+ const MultiWalletSwitch = ({ multiWallet, setMultiWallet, disabled, }) => (jsxRuntime.jsx(Switch.Switch, { disabled: disabled, firstButton: {
9
+ active: multiWallet,
10
+ handleButtonClick: () => setMultiWallet(true),
11
+ name: 'True',
12
+ }, secondButton: {
13
+ active: !multiWallet,
14
+ handleButtonClick: () => setMultiWallet(false),
15
+ name: 'False',
16
+ } }));
17
+
18
+ exports.MultiWalletSwitch = MultiWalletSwitch;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ type Props = {
3
+ multiWallet: boolean;
4
+ setMultiWallet: (multiWallet: boolean) => void;
5
+ disabled: boolean;
6
+ };
7
+ export declare const MultiWalletSwitch: ({ multiWallet, setMultiWallet, disabled, }: Props) => JSX.Element;
8
+ export {};
@@ -0,0 +1,14 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { Switch } from '../../Switch/Switch.js';
3
+
4
+ const MultiWalletSwitch = ({ multiWallet, setMultiWallet, disabled, }) => (jsx(Switch, { disabled: disabled, firstButton: {
5
+ active: multiWallet,
6
+ handleButtonClick: () => setMultiWallet(true),
7
+ name: 'True',
8
+ }, secondButton: {
9
+ active: !multiWallet,
10
+ handleButtonClick: () => setMultiWallet(false),
11
+ name: 'False',
12
+ } }));
13
+
14
+ export { MultiWalletSwitch };
@@ -1,7 +1,7 @@
1
1
  export { ThemeSwitch } from './ThemeSwitch';
2
- export { BrandStyleSwitch } from './BrandStyleSwitch';
3
2
  export { PrimaryColorInput } from './PrimaryColorInput';
4
3
  export { AuthModeSwitch } from './AuthModeSwitch';
5
4
  export { LoginWithEmailSwitch } from './LoginWithEmailSwitch';
6
5
  export { LoginWithEmailViewDisplayPriorityOrderSwitch } from './LoginWithEmailViewDisplayPriorityOrderSwitch';
7
6
  export { TemplateSelect } from './TemplateSelect';
7
+ export { MultiWalletSwitch } from './MultiWalletSwitch';
@@ -36,7 +36,7 @@ var PoweredByDynamic = require('../PoweredByDynamic/PoweredByDynamic.cjs');
36
36
  const TransactionConfirmationPageLayout = ({ onClickClose, isLoading, onClickBack, title, error, appOrigin, appLogoUrl, appName, onClickSend, disableSendButton, displayPoweredByDynamicFooter = false, warningMessage, children, }) => {
37
37
  const closeButton = onClickClose && (jsxRuntime.jsx(IconButton.IconButton, Object.assign({ type: 'button', onClick: onClickClose, "data-testid": 'close', disabled: isLoading }, { children: jsxRuntime.jsx(close.ReactComponent, {}) })));
38
38
  const backButton = onClickBack && (jsxRuntime.jsx(IconButton.IconButton, Object.assign({ type: 'button', onClick: onClickBack, "data-testid": 'back-button' }, { children: jsxRuntime.jsx(chevronLeft.ReactComponent, {}) })));
39
- return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, Object.assign({ trailing: closeButton, leading: backButton, alignContent: 'bottom' }, { children: jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: (props) => (jsxRuntime.jsx(Icon.Icon, Object.assign({ color: 'brand-primary' }, { children: jsxRuntime.jsx(signCircle.ReactComponent, Object.assign({}, props)) }))), iconSize: 64, isSpinning: true }) })), jsxRuntime.jsxs("div", Object.assign({ className: 'transaction-confirmation__body' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ variant: 'title', color: 'primary', className: 'transaction-confirmation__title' }, { children: title })), jsxRuntime.jsx(AnimatePresence.AnimatePresence, Object.assign({ animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}) }, { children: error && (jsxRuntime.jsx("div", Object.assign({ className: 'transaction-confirmation__error' }, { children: jsxRuntime.jsx(Alert.Alert, Object.assign({ icon: 'error', variant: 'error' }, { children: error })) }))) })), jsxRuntime.jsxs("div", Object.assign({ className: 'transaction-confirmation__content' }, { children: [jsxRuntime.jsx("div", Object.assign({ className: 'transaction-confirmation__app-origin-tile' }, { children: jsxRuntime.jsx(AppOriginTile.AppOriginTile, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: appOrigin }) })), jsxRuntime.jsx("div", Object.assign({ className: 'transaction-confirmation__rows' }, { children: children }))] })), jsxRuntime.jsx(AnimatePresence.AnimatePresence, Object.assign({ animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}) }, { children: warningMessage && (jsxRuntime.jsx("div", Object.assign({ className: 'transaction-confirmation__warning' }, { children: jsxRuntime.jsx(Alert.Alert, Object.assign({ icon: 'error', variant: 'warning', contentDataTestId: 'warning_content' }, { children: warningMessage })) }))) })), jsxRuntime.jsxs("div", Object.assign({ className: 'transaction-confirmation__actions' }, { children: [onClickClose && (jsxRuntime.jsx(Button.Button, Object.assign({ buttonVariant: 'secondary', onClick: onClickClose, expanded: true, buttonPadding: 'large', buttonRounded: 'default', disabled: isLoading }, { children: "Cancel" }))), jsxRuntime.jsx(Button.Button, Object.assign({ buttonVariant: 'primary', buttonPadding: 'large', onClick: onClickSend, expanded: true, buttonRounded: 'default', loading: isLoading, disabled: disableSendButton }, { children: "Send" }))] })), displayPoweredByDynamicFooter && (jsxRuntime.jsx("div", Object.assign({ className: 'transaction-confirmation__footer' }, { children: jsxRuntime.jsx(PoweredByDynamic.PoweredByDynamic, {}) })))] }))] }));
39
+ return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(ModalHeader.ModalHeader, Object.assign({ trailing: closeButton, leading: backButton, alignContent: 'bottom' }, { children: jsxRuntime.jsx(IconWithSpinner.IconWithSpinner, { Icon: (props) => (jsxRuntime.jsx(Icon.Icon, Object.assign({ color: 'brand-primary' }, { children: jsxRuntime.jsx(signCircle.ReactComponent, Object.assign({}, props)) }))), iconSize: 64, isSpinning: true }) })), jsxRuntime.jsxs("div", Object.assign({ className: 'transaction-confirmation__body' }, { children: [jsxRuntime.jsx(Typography.Typography, Object.assign({ variant: 'title', color: 'primary', className: 'transaction-confirmation__title' }, { children: title })), jsxRuntime.jsx(AnimatePresence.AnimatePresence, Object.assign({ animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}) }, { children: error && (jsxRuntime.jsx("div", Object.assign({ className: 'transaction-confirmation__error' }, { children: jsxRuntime.jsx(Alert.Alert, Object.assign({ icon: 'error', variant: 'error' }, { children: error })) }))) })), jsxRuntime.jsxs("div", Object.assign({ className: 'transaction-confirmation__content' }, { children: [jsxRuntime.jsx("div", Object.assign({ className: 'transaction-confirmation__app-origin-tile' }, { children: jsxRuntime.jsx(AppOriginTile.AppOriginTile, { appLogoUrl: appLogoUrl, appName: appName, appOrigin: appOrigin }) })), jsxRuntime.jsx("div", Object.assign({ className: 'transaction-confirmation__rows' }, { children: children }))] })), jsxRuntime.jsx(AnimatePresence.AnimatePresence, Object.assign({ animationComponent: jsxRuntime.jsx(VerticalDrawerTransition.VerticalDrawerTransition, {}) }, { children: warningMessage && (jsxRuntime.jsx("div", Object.assign({ className: 'transaction-confirmation__warning' }, { children: jsxRuntime.jsx(Alert.Alert, Object.assign({ icon: 'error', variant: 'warning', contentDataTestId: 'warning_content' }, { children: warningMessage })) }))) })), jsxRuntime.jsxs("div", Object.assign({ className: 'transaction-confirmation__actions' }, { children: [onClickClose && (jsxRuntime.jsx(Button.Button, Object.assign({ buttonVariant: 'secondary', onClick: onClickClose, expanded: true, buttonPadding: 'large', buttonRounded: 'default', disabled: isLoading }, { children: "Cancel" }))), jsxRuntime.jsx(Button.Button, Object.assign({ buttonVariant: 'primary', buttonPadding: 'large', onClick: onClickSend, expanded: true, buttonRounded: 'default', loading: isLoading, disabled: disableSendButton }, { children: "Send" }))] })), displayPoweredByDynamicFooter && (jsxRuntime.jsx(PoweredByDynamic.PoweredByDynamic, { classNameRoot: 'transaction-confirmation__footer' }))] }))] }));
40
40
  };
41
41
 
42
42
  exports.TransactionConfirmationPageLayout = TransactionConfirmationPageLayout;