@dynamic-labs/sdk-react-core 1.0.0-alpha.6 → 1.0.0-alpha.7

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 (76) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/package.cjs +2 -2
  3. package/package.js +2 -2
  4. package/package.json +10 -10
  5. package/src/index.cjs +4 -2
  6. package/src/index.d.ts +1 -1
  7. package/src/index.js +2 -1
  8. package/src/lib/Main.cjs +18 -21
  9. package/src/lib/Main.js +18 -21
  10. package/src/lib/components/NeedHelpSection/NeedHelpSection.cjs +84 -5
  11. package/src/lib/components/NeedHelpSection/NeedHelpSection.js +85 -6
  12. package/src/lib/components/NetworkPicker/NetworkPicker.cjs +8 -6
  13. package/src/lib/components/NetworkPicker/NetworkPicker.d.ts +2 -1
  14. package/src/lib/components/NetworkPicker/NetworkPicker.js +8 -6
  15. package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -4
  16. package/src/lib/context/DynamicContext/DynamicContext.js +1 -4
  17. package/src/lib/context/DynamicContext/types/index.d.ts +0 -1
  18. package/src/lib/data/api.cjs +2 -1
  19. package/src/lib/data/api.js +2 -1
  20. package/src/lib/layout/DynamicAuthLayout/Header/header.cjs +9 -11
  21. package/src/lib/layout/DynamicAuthLayout/Header/header.js +10 -12
  22. package/src/lib/locale/en/translation.cjs +7 -3
  23. package/src/lib/locale/en/translation.d.ts +6 -2
  24. package/src/lib/locale/en/translation.js +7 -3
  25. package/src/lib/modals/SignMessageConfirmationModal/getProperErrorMessage.cjs +1 -1
  26. package/src/lib/modals/SignMessageConfirmationModal/getProperErrorMessage.js +1 -1
  27. package/src/lib/styles/index.shadow.cjs +1 -1
  28. package/src/lib/styles/index.shadow.js +1 -1
  29. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.cjs +1 -1
  30. package/src/lib/utils/functions/findTurnkeyWallet/findTurnkeyWallet.js +1 -1
  31. package/src/lib/utils/hooks/index.d.ts +1 -0
  32. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.cjs +1 -6
  33. package/src/lib/utils/hooks/multiWallet/useSyncPrimaryWallet/useSyncPrimaryWallet.js +1 -6
  34. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.cjs +3 -0
  35. package/src/lib/utils/hooks/useConnectWallet/useConnectWallet.js +3 -0
  36. package/src/lib/utils/hooks/useConnectedWalletsNetworkValidation/useConnectedWalletsNetworkValidation.cjs +7 -8
  37. package/src/lib/utils/hooks/useConnectedWalletsNetworkValidation/useConnectedWalletsNetworkValidation.js +7 -8
  38. package/src/lib/utils/hooks/useEventListener/useEventListener.cjs +2 -1
  39. package/src/lib/utils/hooks/useEventListener/useEventListener.js +2 -1
  40. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.cjs +9 -5
  41. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.d.ts +0 -1
  42. package/src/lib/utils/hooks/useWalletConnectors/useWalletConnectors.js +10 -6
  43. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.cjs +20 -21
  44. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.d.ts +1 -2
  45. package/src/lib/utils/hooks/useWalletEventListeners/useWalletEventListeners.js +20 -21
  46. package/src/lib/utils/hooks/useWalletsConnectionState/useWalletsConnectionState.cjs +32 -9
  47. package/src/lib/utils/hooks/useWalletsConnectionState/useWalletsConnectionState.d.ts +0 -1
  48. package/src/lib/utils/hooks/useWalletsConnectionState/useWalletsConnectionState.js +33 -10
  49. package/src/lib/views/CollectUserDataView/CollectUserDataView.cjs +1 -1
  50. package/src/lib/views/CollectUserDataView/CollectUserDataView.js +1 -1
  51. package/src/lib/views/NetworkNotSupported/NetworkNotSupported.cjs +6 -3
  52. package/src/lib/views/NetworkNotSupported/NetworkNotSupported.js +6 -3
  53. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.cjs +1 -1
  54. package/src/lib/views/Passkey/PasskeyIntroView/PasskeyIntroView.js +1 -1
  55. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.cjs +1 -1
  56. package/src/lib/views/Passkey/utils/passkeyRecovery/passkeyRecovery.js +1 -1
  57. package/src/lib/views/QrCodeView/QrCodeContainer/QrCodeContainer.cjs +1 -1
  58. package/src/lib/views/QrCodeView/QrCodeContainer/QrCodeContainer.js +1 -1
  59. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.cjs +11 -1
  60. package/src/lib/views/TransactionConfirmationView/TransactionConfirmationView.js +11 -1
  61. package/src/lib/views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs +3 -0
  62. package/src/lib/views/TransactionConfirmationView/helpers/transactionErrorMessage.js +4 -1
  63. package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.cjs +3 -3
  64. package/src/lib/widgets/DynamicWidget/components/ActiveWalletInformation/ActiveWalletInformation.js +3 -3
  65. package/src/lib/widgets/DynamicWidget/components/DynamicNav/DynamicNav.cjs +2 -2
  66. package/src/lib/widgets/DynamicWidget/components/DynamicNav/DynamicNav.js +2 -2
  67. package/src/lib/widgets/DynamicWidget/components/EmailOTPConnectorPendingSignModalContent/EmailOTPConnectorPendingSignModalContent.cjs +1 -2
  68. package/src/lib/widgets/DynamicWidget/components/EmailOTPConnectorPendingSignModalContent/EmailOTPConnectorPendingSignModalContent.js +1 -2
  69. package/src/lib/widgets/DynamicWidget/components/Wallet/Wallet.cjs +1 -2
  70. package/src/lib/widgets/DynamicWidget/components/Wallet/Wallet.js +1 -2
  71. package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/SwitchOrUseActiveAccountView/SwitchOrUseActiveAccountView.cjs +1 -3
  72. package/src/lib/widgets/DynamicWidget/prompts/PendingAccountSwitchModal/SwitchOrUseActiveAccountView/SwitchOrUseActiveAccountView.js +1 -3
  73. package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.cjs +1 -1
  74. package/src/lib/widgets/DynamicWidget/prompts/QrCodeModalView/QrCodeModalView.js +1 -1
  75. package/src/lib/widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs +16 -6
  76. package/src/lib/widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js +16 -6
@@ -68,7 +68,7 @@ var UserAddress = require('../../components/UserAddress/UserAddress.cjs');
68
68
  var SelectNetworkButton = require('../../components/SelectNetworkButton/SelectNetworkButton.cjs');
69
69
 
70
70
  const NetworkNotSupported = () => {
71
- const { network, onboardingImageUrl, selectedWalletConnector: walletConnector, connectedWallets, primaryWallet, isFullyConnected, setShowAuthFlow, bridgeChainsToConnect, } = useInternalDynamicContext.useInternalDynamicContext();
71
+ const { onboardingImageUrl, selectedWalletConnector: walletConnector, connectedWallets, primaryWallet, isFullyConnected, setShowAuthFlow, bridgeChainsToConnect, } = useInternalDynamicContext.useInternalDynamicContext();
72
72
  const { t } = reactI18next.useTranslation();
73
73
  // Refresh selectedWalletConnector network when primaryWallet or connectedWallets updates
74
74
  const { data: walletConnectorNetwork } = usePromise.usePromise(() => walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.getNetwork(), { deps: [primaryWallet, walletConnector, connectedWallets] });
@@ -108,10 +108,13 @@ const NetworkNotSupported = () => {
108
108
  }
109
109
  });
110
110
  const evmNetworks = walletConnector.evmNetworks || [];
111
- const _isSupportedNetwork = isSupportedNetwork.isSupportedNetwork({ network, walletConnector });
111
+ const _isSupportedNetwork = isSupportedNetwork.isSupportedNetwork({
112
+ network: walletConnectorNetwork,
113
+ walletConnector,
114
+ });
112
115
  return (jsxRuntime.jsxs("div", { className: 'network-not-supported', "data-testid": 'network-not-supported', children: [onboardingImageUrl && (jsxRuntime.jsx("img", { className: 'network-not-supported__main-img', src: onboardingImageUrl, alt: 'onboarding' })), !_isSupportedNetwork && (jsxRuntime.jsx(ErrorContainer.ErrorContainer, { variant: 'info', withIcon: false, className: 'network-not-supported__error--not-supported', children: t('dyn_network_not_supported.warning_message') })), jsxRuntime.jsxs("div", { className: classNames.classNames('network-not-supported__content-container', {
113
116
  'network-not-supported__content-container--error': !_isSupportedNetwork,
114
- }), children: [jsxRuntime.jsx("div", { className: 'network-not-supported__img-container', children: jsxRuntime.jsx(walletBook.WalletIcon, { style: { height: 64, width: 64 }, walletKey: walletConnector.key }) }), jsxRuntime.jsx(UserAddress.UserAddress, { walletConnector: walletConnector }), jsxRuntime.jsx("div", { className: 'network-not-supported__network-container', children: evmNetworks.length > 1 && (jsxRuntime.jsx(NetworkPicker.NetworkPicker, { evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) }), jsxRuntime.jsx("div", { className: 'network-not-supported__welcome-container', children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_network_not_supported.subtitle') }) }), evmNetworks.length === 1 && (jsxRuntime.jsx(SelectNetworkButton.SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] })] }));
117
+ }), children: [jsxRuntime.jsx("div", { className: 'network-not-supported__img-container', children: jsxRuntime.jsx(walletBook.WalletIcon, { style: { height: 64, width: 64 }, walletKey: walletConnector.key }) }), jsxRuntime.jsx(UserAddress.UserAddress, { walletConnector: walletConnector }), jsxRuntime.jsx("div", { className: 'network-not-supported__network-container', children: evmNetworks.length > 1 && (jsxRuntime.jsx(NetworkPicker.NetworkPicker, { currentNetwork: walletConnectorNetwork, evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) }), jsxRuntime.jsx("div", { className: 'network-not-supported__welcome-container', children: jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_network_not_supported.subtitle') }) }), evmNetworks.length === 1 && (jsxRuntime.jsx(SelectNetworkButton.SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] })] }));
115
118
  };
116
119
 
117
120
  exports.NetworkNotSupported = NetworkNotSupported;
@@ -64,7 +64,7 @@ import { UserAddress } from '../../components/UserAddress/UserAddress.js';
64
64
  import { SelectNetworkButton } from '../../components/SelectNetworkButton/SelectNetworkButton.js';
65
65
 
66
66
  const NetworkNotSupported = () => {
67
- const { network, onboardingImageUrl, selectedWalletConnector: walletConnector, connectedWallets, primaryWallet, isFullyConnected, setShowAuthFlow, bridgeChainsToConnect, } = useInternalDynamicContext();
67
+ const { onboardingImageUrl, selectedWalletConnector: walletConnector, connectedWallets, primaryWallet, isFullyConnected, setShowAuthFlow, bridgeChainsToConnect, } = useInternalDynamicContext();
68
68
  const { t } = useTranslation();
69
69
  // Refresh selectedWalletConnector network when primaryWallet or connectedWallets updates
70
70
  const { data: walletConnectorNetwork } = usePromise(() => walletConnector === null || walletConnector === void 0 ? void 0 : walletConnector.getNetwork(), { deps: [primaryWallet, walletConnector, connectedWallets] });
@@ -104,10 +104,13 @@ const NetworkNotSupported = () => {
104
104
  }
105
105
  });
106
106
  const evmNetworks = walletConnector.evmNetworks || [];
107
- const _isSupportedNetwork = isSupportedNetwork({ network, walletConnector });
107
+ const _isSupportedNetwork = isSupportedNetwork({
108
+ network: walletConnectorNetwork,
109
+ walletConnector,
110
+ });
108
111
  return (jsxs("div", { className: 'network-not-supported', "data-testid": 'network-not-supported', children: [onboardingImageUrl && (jsx("img", { className: 'network-not-supported__main-img', src: onboardingImageUrl, alt: 'onboarding' })), !_isSupportedNetwork && (jsx(ErrorContainer, { variant: 'info', withIcon: false, className: 'network-not-supported__error--not-supported', children: t('dyn_network_not_supported.warning_message') })), jsxs("div", { className: classNames('network-not-supported__content-container', {
109
112
  'network-not-supported__content-container--error': !_isSupportedNetwork,
110
- }), children: [jsx("div", { className: 'network-not-supported__img-container', children: jsx(WalletIcon, { style: { height: 64, width: 64 }, walletKey: walletConnector.key }) }), jsx(UserAddress, { walletConnector: walletConnector }), jsx("div", { className: 'network-not-supported__network-container', children: evmNetworks.length > 1 && (jsx(NetworkPicker, { evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) }), jsx("div", { className: 'network-not-supported__welcome-container', children: jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_network_not_supported.subtitle') }) }), evmNetworks.length === 1 && (jsx(SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] })] }));
113
+ }), children: [jsx("div", { className: 'network-not-supported__img-container', children: jsx(WalletIcon, { style: { height: 64, width: 64 }, walletKey: walletConnector.key }) }), jsx(UserAddress, { walletConnector: walletConnector }), jsx("div", { className: 'network-not-supported__network-container', children: evmNetworks.length > 1 && (jsx(NetworkPicker, { currentNetwork: walletConnectorNetwork, evmNetworks: evmNetworks, connector: walletConnector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, showNetworkName: true, buttonClassName: 'network-not-supported__network-picker-button', mainClassName: 'network-not-supported__network-picker' })) }), jsx("div", { className: 'network-not-supported__welcome-container', children: jsx(Typography, { variant: 'body_normal', weight: 'regular', color: 'secondary', children: t('dyn_network_not_supported.subtitle') }) }), evmNetworks.length === 1 && (jsx(SelectNetworkButton, { onClick: onSelectNetworkButtonClick, networkId: evmNetworks[0].networkId, networkName: evmNetworks[0].vanityName || evmNetworks[0].name, networkIconUrl: evmNetworks[0].iconUrls[0] }))] })] }));
111
114
  };
112
115
 
113
116
  export { NetworkNotSupported };
@@ -116,7 +116,7 @@ const PasskeyIntroView = ({ createEmbeddedWalletMutation = createEmbeddedWalletW
116
116
  index$1.storeAuthToken(jwt);
117
117
  setUser(createUserProfile.createUserProfile(decodedJwt));
118
118
  setShowAuthFlow(false);
119
- const turnkeyVerifiedCredentials = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.find(({ walletName }) => walletName === 'turnkey');
119
+ const turnkeyVerifiedCredentials = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
120
120
  setCallback('embeddedWalletCreated', {
121
121
  email: (turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.email) || '',
122
122
  verifiedCredential: turnkeyVerifiedCredentials,
@@ -112,7 +112,7 @@ const PasskeyIntroView = ({ createEmbeddedWalletMutation = createEmbeddedWalletW
112
112
  storeAuthToken(jwt);
113
113
  setUser(createUserProfile(decodedJwt));
114
114
  setShowAuthFlow(false);
115
- const turnkeyVerifiedCredentials = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.find(({ walletName }) => walletName === 'turnkey');
115
+ const turnkeyVerifiedCredentials = (_a = decodedJwt === null || decodedJwt === void 0 ? void 0 : decodedJwt.verifiedCredentials) === null || _a === void 0 ? void 0 : _a.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'));
116
116
  setCallback('embeddedWalletCreated', {
117
117
  email: (turnkeyVerifiedCredentials === null || turnkeyVerifiedCredentials === void 0 ? void 0 : turnkeyVerifiedCredentials.email) || '',
118
118
  verifiedCredential: turnkeyVerifiedCredentials,
@@ -95,7 +95,7 @@ const completePasskeyRecovery = ({ authToken, userEmail, environmentId, wallet,
95
95
  }
96
96
  const connector = wallet.connector;
97
97
  connector.setEmail(userEmail);
98
- const organizationId = (_f = (_e = (_d = decodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === 'turnkey')) === null || _e === void 0 ? void 0 : _e.walletProperties) === null || _f === void 0 ? void 0 : _f.turnkeySubOrganizationId;
98
+ const organizationId = (_f = (_e = (_d = decodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'))) === null || _e === void 0 ? void 0 : _e.walletProperties) === null || _f === void 0 ? void 0 : _f.turnkeySubOrganizationId;
99
99
  if (!organizationId) {
100
100
  throw new utils.DynamicError('Invalid token!');
101
101
  }
@@ -91,7 +91,7 @@ const completePasskeyRecovery = ({ authToken, userEmail, environmentId, wallet,
91
91
  }
92
92
  const connector = wallet.connector;
93
93
  connector.setEmail(userEmail);
94
- const organizationId = (_f = (_e = (_d = decodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === 'turnkey')) === null || _e === void 0 ? void 0 : _e.walletProperties) === null || _f === void 0 ? void 0 : _f.turnkeySubOrganizationId;
94
+ const organizationId = (_f = (_e = (_d = decodedJwt.verifiedCredentials) === null || _d === void 0 ? void 0 : _d.find(({ walletName }) => walletName === null || walletName === void 0 ? void 0 : walletName.startsWith('turnkey'))) === null || _e === void 0 ? void 0 : _e.walletProperties) === null || _f === void 0 ? void 0 : _f.turnkeySubOrganizationId;
95
95
  if (!organizationId) {
96
96
  throw new DynamicError('Invalid token!');
97
97
  }
@@ -60,10 +60,10 @@ require('../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCa
60
60
  var CopyButton = require('../../../components/CopyButton/CopyButton.cjs');
61
61
  require('../../../components/InlineWidget/InlineWidget.cjs');
62
62
  require('../../../components/MenuList/Dropdown/Dropdown.cjs');
63
+ var TextButton = require('../../../components/TextButton/TextButton.cjs');
63
64
  require('../../../components/Popper/Popper/Popper.cjs');
64
65
  require('../../../components/Popper/PopperContext/PopperContext.cjs');
65
66
  require('react-focus-lock');
66
- var TextButton = require('../../../components/TextButton/TextButton.cjs');
67
67
 
68
68
  const QrCodeContainer = ({ accentColor, walletKey, walletName, qrcodeValue, Icon: WalletIcon, showCopyToClipboardButton = false, desktopUri, showQrCodeMessage, }) => (jsxRuntime.jsxs("div", { className: classNames.classNames('qrcode-container__container', {
69
69
  'qrcode-container__container--message': showQrCodeMessage,
@@ -56,10 +56,10 @@ import '../../../widgets/DynamicWidget/views/ManagePasskeysWidgetView/PasskeyCar
56
56
  import { CopyButton } from '../../../components/CopyButton/CopyButton.js';
57
57
  import '../../../components/InlineWidget/InlineWidget.js';
58
58
  import '../../../components/MenuList/Dropdown/Dropdown.js';
59
+ import { TextButton } from '../../../components/TextButton/TextButton.js';
59
60
  import '../../../components/Popper/Popper/Popper.js';
60
61
  import '../../../components/Popper/PopperContext/PopperContext.js';
61
62
  import 'react-focus-lock';
62
- import { TextButton } from '../../../components/TextButton/TextButton.js';
63
63
 
64
64
  const QrCodeContainer = ({ accentColor, walletKey, walletName, qrcodeValue, Icon: WalletIcon, showCopyToClipboardButton = false, desktopUri, showQrCodeMessage, }) => (jsxs("div", { className: classNames('qrcode-container__container', {
65
65
  'qrcode-container__container--message': showQrCodeMessage,
@@ -155,6 +155,8 @@ const TransactionConfirmationView = ({ transaction, mutation, onError, onSuccess
155
155
  return total > balance;
156
156
  }, [balance, total]);
157
157
  const alert = React.useMemo(() => {
158
+ if (isTransactionLoading || Boolean(errorMessage))
159
+ return null;
158
160
  if (utils.TransactionGasCannotBeSponsoredError.isInstance(transactionError)) {
159
161
  return (jsxRuntime.jsx(Alert.Alert, { icon: 'error', variant: 'error', children: t('dyn_send_transaction.error_message.gas_not_sponsored') }));
160
162
  }
@@ -166,7 +168,15 @@ const TransactionConfirmationView = ({ transaction, mutation, onError, onSuccess
166
168
  amountLeft,
167
169
  currencySymbol,
168
170
  }) }));
169
- }, [currencySymbol, hasInsufficientFunds, missingFunds, t, transactionError]);
171
+ }, [
172
+ currencySymbol,
173
+ hasInsufficientFunds,
174
+ missingFunds,
175
+ t,
176
+ transactionError,
177
+ isTransactionLoading,
178
+ errorMessage,
179
+ ]);
170
180
  return (jsxRuntime.jsxs(TransactionConfirmationPageLayout.TransactionConfirmationPageLayout, { onClickBack: onClickBack, onClickClose: onClickClose, title: title, appOrigin: appOrigin, appName: appName, appLogoUrl: appLogoUrl, isLoading: isLoading, onClickSend: () => send(), displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, disableSendButton: isTransactionLoading || hasInsufficientFunds, error: errorMessage, alert: alert, children: [jsxRuntime.jsx(TransactionRow.TransactionRow, { label: t('dyn_send_transaction.confirmation.data.from'), isLoading: isTransactionFromAddressLoading, title: transactionFromAddress, children: shortenWalletAddress.shortenWalletAddress(transactionFromAddress, 4, 4) }), jsxRuntime.jsx(TransactionRow.TransactionRow, { label: t('dyn_send_transaction.confirmation.data.to'), isLoading: isTransactionToAddressLoading, title: transactionToAddress, children: transactionToAddress &&
171
181
  shortenWalletAddress.shortenWalletAddress(transactionToAddress, 4, 4) }), jsxRuntime.jsx(TransactionRow.TransactionRow, { label: t('dyn_send_transaction.confirmation.data.amount'), isLoading: isTransactionValueLoading, isEmpty: !transactionValue, title: transactionValue ? formatBigNumber.formatBigNumber(transactionValue) : undefined, suffix: currencySymbol, icon: chainIcon, dataTestId: 'transaction-amount', children: transactionValue ? formatBigNumber.formatBigNumber(transactionValue, 10) : 0 }), !isGasSponsored && (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(TransactionRow.TransactionRow, { label: isGasEstimated
172
182
  ? t('dyn_send_transaction.confirmation.data.gas_estimate')
@@ -151,6 +151,8 @@ const TransactionConfirmationView = ({ transaction, mutation, onError, onSuccess
151
151
  return total > balance;
152
152
  }, [balance, total]);
153
153
  const alert = useMemo(() => {
154
+ if (isTransactionLoading || Boolean(errorMessage))
155
+ return null;
154
156
  if (TransactionGasCannotBeSponsoredError.isInstance(transactionError)) {
155
157
  return (jsx(Alert, { icon: 'error', variant: 'error', children: t('dyn_send_transaction.error_message.gas_not_sponsored') }));
156
158
  }
@@ -162,7 +164,15 @@ const TransactionConfirmationView = ({ transaction, mutation, onError, onSuccess
162
164
  amountLeft,
163
165
  currencySymbol,
164
166
  }) }));
165
- }, [currencySymbol, hasInsufficientFunds, missingFunds, t, transactionError]);
167
+ }, [
168
+ currencySymbol,
169
+ hasInsufficientFunds,
170
+ missingFunds,
171
+ t,
172
+ transactionError,
173
+ isTransactionLoading,
174
+ errorMessage,
175
+ ]);
166
176
  return (jsxs(TransactionConfirmationPageLayout, { onClickBack: onClickBack, onClickClose: onClickClose, title: title, appOrigin: appOrigin, appName: appName, appLogoUrl: appLogoUrl, isLoading: isLoading, onClickSend: () => send(), displayPoweredByDynamicFooter: displayPoweredByDynamicFooter, disableSendButton: isTransactionLoading || hasInsufficientFunds, error: errorMessage, alert: alert, children: [jsx(TransactionRow, { label: t('dyn_send_transaction.confirmation.data.from'), isLoading: isTransactionFromAddressLoading, title: transactionFromAddress, children: shortenWalletAddress(transactionFromAddress, 4, 4) }), jsx(TransactionRow, { label: t('dyn_send_transaction.confirmation.data.to'), isLoading: isTransactionToAddressLoading, title: transactionToAddress, children: transactionToAddress &&
167
177
  shortenWalletAddress(transactionToAddress, 4, 4) }), jsx(TransactionRow, { label: t('dyn_send_transaction.confirmation.data.amount'), isLoading: isTransactionValueLoading, isEmpty: !transactionValue, title: transactionValue ? formatBigNumber(transactionValue) : undefined, suffix: currencySymbol, icon: chainIcon, dataTestId: 'transaction-amount', children: transactionValue ? formatBigNumber(transactionValue, 10) : 0 }), !isGasSponsored && (jsxs(Fragment, { children: [jsx(TransactionRow, { label: isGasEstimated
168
178
  ? t('dyn_send_transaction.confirmation.data.gas_estimate')
@@ -31,6 +31,9 @@ const transactionErrorMessage = (error) => {
31
31
  if (utils.TransactionGasCannotBeSponsoredError.isInstance(error)) {
32
32
  return;
33
33
  }
34
+ if (utils.InsufficientFundsError.isInstance(error)) {
35
+ return errorCodesMapping.INSUFFICIENT_FUNDS;
36
+ }
34
37
  const { code } = error;
35
38
  const defaultMessage = 'Something went wrong.';
36
39
  // turnkey request errors
@@ -1,4 +1,4 @@
1
- import { TransactionGasCannotBeSponsoredError } from '@dynamic-labs/utils';
1
+ import { TransactionGasCannotBeSponsoredError, InsufficientFundsError } from '@dynamic-labs/utils';
2
2
  import '@dynamic-labs/sdk-api';
3
3
  import { logger } from '../../../shared/logger.js';
4
4
  import '@dynamic-labs/iconic';
@@ -27,6 +27,9 @@ const transactionErrorMessage = (error) => {
27
27
  if (TransactionGasCannotBeSponsoredError.isInstance(error)) {
28
28
  return;
29
29
  }
30
+ if (InsufficientFundsError.isInstance(error)) {
31
+ return errorCodesMapping.INSUFFICIENT_FUNDS;
32
+ }
30
33
  const { code } = error;
31
34
  const defaultMessage = 'Something went wrong.';
32
35
  // turnkey request errors
@@ -93,8 +93,8 @@ const ActiveWalletInformation = () => {
93
93
  {
94
94
  Icon: null,
95
95
  callback: () => setDynamicWidgetView('manage-passkeys'),
96
- hide: !(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name) ||
97
- walletConnectorCore.normalizeWalletName(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name) !== 'turnkey',
96
+ hide: !((primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name) &&
97
+ walletConnectorCore.normalizeWalletName(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name).startsWith('turnkey')),
98
98
  text: 'My passkeys',
99
99
  },
100
100
  {
@@ -115,7 +115,7 @@ const ActiveWalletInformation = () => {
115
115
  [];
116
116
  return (jsxRuntime.jsxs("div", { className: 'active-wallet-information-container', "data-testid": 'active-wallet-information', children: [jsxRuntime.jsxs("div", { className: 'active-wallet-information', children: [jsxRuntime.jsxs("div", { className: 'active-wallet-information__header', children: [jsxRuntime.jsx("div", { className: 'active-wallet-information__avatar--centered', children: (nameService === null || nameService === void 0 ? void 0 : nameService.avatar) ? (jsxRuntime.jsx("div", { className: 'active-wallet-information__avatar', children: jsxRuntime.jsx("img", { src: nameService === null || nameService === void 0 ? void 0 : nameService.avatar, alt: '' }) })) : (jsxRuntime.jsx("div", { className: 'active-wallet-information__wallet-img', children: jsxRuntime.jsx(AuthProviderIcon.AuthProviderIcon, { jwt: authToken, iconSize: ICON_SIZE, showStatus: true }) })) }), jsxRuntime.jsxs("div", { className: 'active-wallet-information__details', children: [jsxRuntime.jsxs("div", { className: classNames.classNames('active-wallet-information__actions-container', {
117
117
  'active-wallet-information__actions-container--centered': !(nameService === null || nameService === void 0 ? void 0 : nameService.name),
118
- }), children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Typography.Typography, { className: 'active-wallet-information__handle', color: 'primary', variant: 'body_normal', children: nameService === null || nameService === void 0 ? void 0 : nameService.name }), jsxRuntime.jsx(Typography.Typography, { className: 'active-wallet-information__address', weight: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'regular' : 'medium', variant: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'body_small' : 'body_normal', color: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'secondary' : 'primary', children: shortenWalletAddress.shortenWalletAddress(address, 4, 4) })] }), jsxRuntime.jsx(DotsMenu.DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'active-wallet-information__dots-menu', buttonClassNameWithOpenMenu: 'active-wallet-information__dots-menu' })] }), jsxRuntime.jsx(NetworkPicker.NetworkPicker, { connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'active-wallet-information__network-picker', buttonClassName: 'active-wallet-information__network-picker-button', evmNetworks: evmNetworks, showNetworkName: true })] })] }), testnet && (jsxRuntime.jsx(Alert.Alert, { variant: 'warning', children: t('dyn_active_wallet_info.testnet_warning') }))] }), jsxRuntime.jsxs("div", { className: 'balance-container', children: [jsxRuntime.jsx(Typography.Typography, { color: 'secondary', variant: 'body_small', children: "Balance" }), primaryWallet && (jsxRuntime.jsx(Balance.Balance, { className: 'balance-container__balance', connector: primaryWallet.connector, address: primaryWallet.address, network: network }))] })] }));
118
+ }), children: [jsxRuntime.jsxs("div", { children: [jsxRuntime.jsx(Typography.Typography, { className: 'active-wallet-information__handle', color: 'primary', variant: 'body_normal', children: nameService === null || nameService === void 0 ? void 0 : nameService.name }), jsxRuntime.jsx(Typography.Typography, { className: 'active-wallet-information__address', weight: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'regular' : 'medium', variant: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'body_small' : 'body_normal', color: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'secondary' : 'primary', children: shortenWalletAddress.shortenWalletAddress(address, 4, 4) })] }), jsxRuntime.jsx(DotsMenu.DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'active-wallet-information__dots-menu', buttonClassNameWithOpenMenu: 'active-wallet-information__dots-menu' })] }), jsxRuntime.jsx(NetworkPicker.NetworkPicker, { currentNetwork: network, connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'active-wallet-information__network-picker', buttonClassName: 'active-wallet-information__network-picker-button', evmNetworks: evmNetworks, showNetworkName: true })] })] }), testnet && (jsxRuntime.jsx(Alert.Alert, { variant: 'warning', children: t('dyn_active_wallet_info.testnet_warning') }))] }), jsxRuntime.jsxs("div", { className: 'balance-container', children: [jsxRuntime.jsx(Typography.Typography, { color: 'secondary', variant: 'body_small', children: "Balance" }), primaryWallet && (jsxRuntime.jsx(Balance.Balance, { className: 'balance-container__balance', connector: primaryWallet.connector, address: primaryWallet.address, network: network }))] })] }));
119
119
  };
120
120
 
121
121
  exports.ActiveWalletInformation = ActiveWalletInformation;
@@ -89,8 +89,8 @@ const ActiveWalletInformation = () => {
89
89
  {
90
90
  Icon: null,
91
91
  callback: () => setDynamicWidgetView('manage-passkeys'),
92
- hide: !(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name) ||
93
- normalizeWalletName(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name) !== 'turnkey',
92
+ hide: !((primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name) &&
93
+ normalizeWalletName(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector.name).startsWith('turnkey')),
94
94
  text: 'My passkeys',
95
95
  },
96
96
  {
@@ -111,7 +111,7 @@ const ActiveWalletInformation = () => {
111
111
  [];
112
112
  return (jsxs("div", { className: 'active-wallet-information-container', "data-testid": 'active-wallet-information', children: [jsxs("div", { className: 'active-wallet-information', children: [jsxs("div", { className: 'active-wallet-information__header', children: [jsx("div", { className: 'active-wallet-information__avatar--centered', children: (nameService === null || nameService === void 0 ? void 0 : nameService.avatar) ? (jsx("div", { className: 'active-wallet-information__avatar', children: jsx("img", { src: nameService === null || nameService === void 0 ? void 0 : nameService.avatar, alt: '' }) })) : (jsx("div", { className: 'active-wallet-information__wallet-img', children: jsx(AuthProviderIcon, { jwt: authToken, iconSize: ICON_SIZE, showStatus: true }) })) }), jsxs("div", { className: 'active-wallet-information__details', children: [jsxs("div", { className: classNames('active-wallet-information__actions-container', {
113
113
  'active-wallet-information__actions-container--centered': !(nameService === null || nameService === void 0 ? void 0 : nameService.name),
114
- }), children: [jsxs("div", { children: [jsx(Typography, { className: 'active-wallet-information__handle', color: 'primary', variant: 'body_normal', children: nameService === null || nameService === void 0 ? void 0 : nameService.name }), jsx(Typography, { className: 'active-wallet-information__address', weight: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'regular' : 'medium', variant: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'body_small' : 'body_normal', color: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'secondary' : 'primary', children: shortenWalletAddress(address, 4, 4) })] }), jsx(DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'active-wallet-information__dots-menu', buttonClassNameWithOpenMenu: 'active-wallet-information__dots-menu' })] }), jsx(NetworkPicker, { connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'active-wallet-information__network-picker', buttonClassName: 'active-wallet-information__network-picker-button', evmNetworks: evmNetworks, showNetworkName: true })] })] }), testnet && (jsx(Alert, { variant: 'warning', children: t('dyn_active_wallet_info.testnet_warning') }))] }), jsxs("div", { className: 'balance-container', children: [jsx(Typography, { color: 'secondary', variant: 'body_small', children: "Balance" }), primaryWallet && (jsx(Balance, { className: 'balance-container__balance', connector: primaryWallet.connector, address: primaryWallet.address, network: network }))] })] }));
114
+ }), children: [jsxs("div", { children: [jsx(Typography, { className: 'active-wallet-information__handle', color: 'primary', variant: 'body_normal', children: nameService === null || nameService === void 0 ? void 0 : nameService.name }), jsx(Typography, { className: 'active-wallet-information__address', weight: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'regular' : 'medium', variant: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'body_small' : 'body_normal', color: (nameService === null || nameService === void 0 ? void 0 : nameService.name) ? 'secondary' : 'primary', children: shortenWalletAddress(address, 4, 4) })] }), jsx(DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'active-wallet-information__dots-menu', buttonClassNameWithOpenMenu: 'active-wallet-information__dots-menu' })] }), jsx(NetworkPicker, { currentNetwork: network, connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'active-wallet-information__network-picker', buttonClassName: 'active-wallet-information__network-picker-button', evmNetworks: evmNetworks, showNetworkName: true })] })] }), testnet && (jsx(Alert, { variant: 'warning', children: t('dyn_active_wallet_info.testnet_warning') }))] }), jsxs("div", { className: 'balance-container', children: [jsx(Typography, { color: 'secondary', variant: 'body_small', children: "Balance" }), primaryWallet && (jsx(Balance, { className: 'balance-container__balance', connector: primaryWallet.connector, address: primaryWallet.address, network: network }))] })] }));
115
115
  };
116
116
 
117
117
  export { ActiveWalletInformation };
@@ -62,7 +62,7 @@ require('react-focus-lock');
62
62
 
63
63
  const DynamicNav = () => {
64
64
  const [isNetworkPickerOpen, setIsNetworkPickerOpen] = React.useState(false);
65
- const { primaryWallet, projectSettings } = useInternalDynamicContext.useInternalDynamicContext();
65
+ const { primaryWallet, projectSettings, network } = useInternalDynamicContext.useInternalDynamicContext();
66
66
  const { inlineControlsRef } = DynamicWidgetContext.useWidgetContext();
67
67
  const evmNetworks = ((primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) &&
68
68
  primaryWallet.connector.evmNetworks) ||
@@ -70,7 +70,7 @@ const DynamicNav = () => {
70
70
  if (!projectSettings)
71
71
  return null;
72
72
  const shouldHideNetwork = projectSettings.sdk.hideNetworkInDynamicWidget;
73
- return (jsxRuntime.jsx(IsBrowser.IsBrowser, { children: jsxRuntime.jsxs("div", { ref: inlineControlsRef, "data-testid": 'DynamicNav', className: 'dynamic-widget-inline-controls', children: [!shouldHideNetwork && primaryWallet && (jsxRuntime.jsx(PopperContext.PopperProvider, { children: jsxRuntime.jsx(NetworkPicker.NetworkPicker, { connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, showNetworkName: true, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'dynamic-widget-inline-controls__network-picker-main', buttonClassName: 'dynamic-widget-inline-controls__network-picker', listClassName: 'dynamic-widget-inline-controls__network-picker-list', checkboxClassName: 'dynamic-widget-inline-controls__network-picker-checkbox', evmNetworks: evmNetworks }) })), jsxRuntime.jsx("div", { className: 'dynamic-widget-inline-controls__account-control-container', children: jsxRuntime.jsx(AccountControl.AccountControl, { className: 'dynamic-widget-inline-controls__account-control' }) })] }) }));
73
+ return (jsxRuntime.jsx(IsBrowser.IsBrowser, { children: jsxRuntime.jsxs("div", { ref: inlineControlsRef, "data-testid": 'DynamicNav', className: 'dynamic-widget-inline-controls', children: [!shouldHideNetwork && primaryWallet && (jsxRuntime.jsx(PopperContext.PopperProvider, { children: jsxRuntime.jsx(NetworkPicker.NetworkPicker, { currentNetwork: network, connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, showNetworkName: true, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'dynamic-widget-inline-controls__network-picker-main', buttonClassName: 'dynamic-widget-inline-controls__network-picker', listClassName: 'dynamic-widget-inline-controls__network-picker-list', checkboxClassName: 'dynamic-widget-inline-controls__network-picker-checkbox', evmNetworks: evmNetworks }) })), jsxRuntime.jsx("div", { className: 'dynamic-widget-inline-controls__account-control-container', children: jsxRuntime.jsx(AccountControl.AccountControl, { className: 'dynamic-widget-inline-controls__account-control' }) })] }) }));
74
74
  };
75
75
  const ShadowedDynamicNav = () => (jsxRuntime.jsx(ShadowDOM.ShadowDOM, { children: jsxRuntime.jsx(DynamicNav, {}) }));
76
76
 
@@ -58,7 +58,7 @@ import 'react-focus-lock';
58
58
 
59
59
  const DynamicNav = () => {
60
60
  const [isNetworkPickerOpen, setIsNetworkPickerOpen] = useState(false);
61
- const { primaryWallet, projectSettings } = useInternalDynamicContext();
61
+ const { primaryWallet, projectSettings, network } = useInternalDynamicContext();
62
62
  const { inlineControlsRef } = useWidgetContext();
63
63
  const evmNetworks = ((primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector) &&
64
64
  primaryWallet.connector.evmNetworks) ||
@@ -66,7 +66,7 @@ const DynamicNav = () => {
66
66
  if (!projectSettings)
67
67
  return null;
68
68
  const shouldHideNetwork = projectSettings.sdk.hideNetworkInDynamicWidget;
69
- return (jsx(IsBrowser, { children: jsxs("div", { ref: inlineControlsRef, "data-testid": 'DynamicNav', className: 'dynamic-widget-inline-controls', children: [!shouldHideNetwork && primaryWallet && (jsx(PopperProvider, { children: jsx(NetworkPicker, { connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, showNetworkName: true, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'dynamic-widget-inline-controls__network-picker-main', buttonClassName: 'dynamic-widget-inline-controls__network-picker', listClassName: 'dynamic-widget-inline-controls__network-picker-list', checkboxClassName: 'dynamic-widget-inline-controls__network-picker-checkbox', evmNetworks: evmNetworks }) })), jsx("div", { className: 'dynamic-widget-inline-controls__account-control-container', children: jsx(AccountControl, { className: 'dynamic-widget-inline-controls__account-control' }) })] }) }));
69
+ return (jsx(IsBrowser, { children: jsxs("div", { ref: inlineControlsRef, "data-testid": 'DynamicNav', className: 'dynamic-widget-inline-controls', children: [!shouldHideNetwork && primaryWallet && (jsx(PopperProvider, { children: jsx(NetworkPicker, { currentNetwork: network, connector: primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.connector, showNetworkName: true, isNetworkPickerOpen: isNetworkPickerOpen, setIsNetworkPickerOpen: setIsNetworkPickerOpen, mainClassName: 'dynamic-widget-inline-controls__network-picker-main', buttonClassName: 'dynamic-widget-inline-controls__network-picker', listClassName: 'dynamic-widget-inline-controls__network-picker-list', checkboxClassName: 'dynamic-widget-inline-controls__network-picker-checkbox', evmNetworks: evmNetworks }) })), jsx("div", { className: 'dynamic-widget-inline-controls__account-control-container', children: jsx(AccountControl, { className: 'dynamic-widget-inline-controls__account-control' }) })] }) }));
70
70
  };
71
71
  const ShadowedDynamicNav = () => (jsx(ShadowDOM, { children: jsx(DynamicNav, {}) }));
72
72
 
@@ -61,7 +61,7 @@ require('../../../../components/Popper/PopperContext/PopperContext.cjs');
61
61
  require('react-focus-lock');
62
62
 
63
63
  const EmailOTPConnectorPendingSignModalContent = ({ walletConnector }) => {
64
- const { setSelectedWalletWithAction, selectedWalletWithAction, setPrimaryWalletId, setMultiWalletWidgetState, computeConnectedStateForWallets, } = useInternalDynamicContext.useInternalDynamicContext();
64
+ const { setSelectedWalletWithAction, selectedWalletWithAction, setPrimaryWalletId, setMultiWalletWidgetState, } = useInternalDynamicContext.useInternalDynamicContext();
65
65
  const [error, setError] = React.useState();
66
66
  const { email } = walletConnector;
67
67
  if (!email) {
@@ -73,7 +73,6 @@ const EmailOTPConnectorPendingSignModalContent = ({ walletConnector }) => {
73
73
  if (!selectedWalletWithAction) {
74
74
  return;
75
75
  }
76
- yield computeConnectedStateForWallets();
77
76
  setMultiWalletWidgetState('idle');
78
77
  setSelectedWalletWithAction(null);
79
78
  setPrimaryWalletId(selectedWalletWithAction.wallet.id);
@@ -57,7 +57,7 @@ import '../../../../components/Popper/PopperContext/PopperContext.js';
57
57
  import 'react-focus-lock';
58
58
 
59
59
  const EmailOTPConnectorPendingSignModalContent = ({ walletConnector }) => {
60
- const { setSelectedWalletWithAction, selectedWalletWithAction, setPrimaryWalletId, setMultiWalletWidgetState, computeConnectedStateForWallets, } = useInternalDynamicContext();
60
+ const { setSelectedWalletWithAction, selectedWalletWithAction, setPrimaryWalletId, setMultiWalletWidgetState, } = useInternalDynamicContext();
61
61
  const [error, setError] = useState();
62
62
  const { email } = walletConnector;
63
63
  if (!email) {
@@ -69,7 +69,6 @@ const EmailOTPConnectorPendingSignModalContent = ({ walletConnector }) => {
69
69
  if (!selectedWalletWithAction) {
70
70
  return;
71
71
  }
72
- yield computeConnectedStateForWallets();
73
72
  setMultiWalletWidgetState('idle');
74
73
  setSelectedWalletWithAction(null);
75
74
  setPrimaryWalletId(selectedWalletWithAction.wallet.id);
@@ -69,7 +69,7 @@ require('react-focus-lock');
69
69
  const Wallet = ({ wallet, ens }) => {
70
70
  var _a;
71
71
  const { id: walletId, connector, address } = wallet;
72
- const { computeConnectedStateForWallets, setPrimaryWallet, setSelectedWalletConnectorKey, setShowWidgetStatePopup, setSelectedWalletWithAction, authToken, primaryWallet, user, projectSettings, authMode, } = useInternalDynamicContext.useInternalDynamicContext();
72
+ const { setPrimaryWallet, setSelectedWalletConnectorKey, setShowWidgetStatePopup, setSelectedWalletWithAction, authToken, primaryWallet, user, projectSettings, authMode, } = useInternalDynamicContext.useInternalDynamicContext();
73
73
  const email = (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials.find((verifiedCredential) => verifiedCredential.format === 'email')) === null || _a === void 0 ? void 0 : _a.email;
74
74
  const iconSize = 20;
75
75
  const options = [
@@ -118,7 +118,6 @@ const Wallet = ({ wallet, ens }) => {
118
118
  setShowWidgetStatePopup(true);
119
119
  setSelectedWalletWithAction({ action: 'select', wallet });
120
120
  setPrimaryWallet(walletId);
121
- computeConnectedStateForWallets();
122
121
  setSelectedWalletConnectorKey(connector.key);
123
122
  });
124
123
  return (jsxRuntime.jsxs("div", { className: 'wallet__container', "data-testid": 'wallet', children: [jsxRuntime.jsxs("div", { className: 'wallet__row', children: [jsxRuntime.jsx("div", { className: 'wallet__icon-container', children: jsxRuntime.jsx(AuthProviderIcon.AuthProviderIcon, { iconSize: iconSize, jwt: authToken, wallet: wallet, showStatus: true }) }), (ens === null || ens === void 0 ? void 0 : ens.name) ? (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx(Typography.Typography, { className: 'wallet__ens-name', variant: 'body_small', color: 'primary', truncate: true, children: ens === null || ens === void 0 ? void 0 : ens.name }), jsxRuntime.jsx("div", { className: 'wallet__row__seperator' }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_mini', color: 'secondary', children: shortenWalletAddress.shortenWalletAddress(address, 3, 3) })] })) : (jsxRuntime.jsx(Typography.Typography, { variant: 'body_small', color: 'primary', children: shortenWalletAddress.shortenWalletAddress(address, 4, 4) }))] }), jsxRuntime.jsx(DotsMenu.DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'wallet__menu', direction: 'left' })] }));
@@ -65,7 +65,7 @@ import 'react-focus-lock';
65
65
  const Wallet = ({ wallet, ens }) => {
66
66
  var _a;
67
67
  const { id: walletId, connector, address } = wallet;
68
- const { computeConnectedStateForWallets, setPrimaryWallet, setSelectedWalletConnectorKey, setShowWidgetStatePopup, setSelectedWalletWithAction, authToken, primaryWallet, user, projectSettings, authMode, } = useInternalDynamicContext();
68
+ const { setPrimaryWallet, setSelectedWalletConnectorKey, setShowWidgetStatePopup, setSelectedWalletWithAction, authToken, primaryWallet, user, projectSettings, authMode, } = useInternalDynamicContext();
69
69
  const email = (_a = user === null || user === void 0 ? void 0 : user.verifiedCredentials.find((verifiedCredential) => verifiedCredential.format === 'email')) === null || _a === void 0 ? void 0 : _a.email;
70
70
  const iconSize = 20;
71
71
  const options = [
@@ -114,7 +114,6 @@ const Wallet = ({ wallet, ens }) => {
114
114
  setShowWidgetStatePopup(true);
115
115
  setSelectedWalletWithAction({ action: 'select', wallet });
116
116
  setPrimaryWallet(walletId);
117
- computeConnectedStateForWallets();
118
117
  setSelectedWalletConnectorKey(connector.key);
119
118
  });
120
119
  return (jsxs("div", { className: 'wallet__container', "data-testid": 'wallet', children: [jsxs("div", { className: 'wallet__row', children: [jsx("div", { className: 'wallet__icon-container', children: jsx(AuthProviderIcon, { iconSize: iconSize, jwt: authToken, wallet: wallet, showStatus: true }) }), (ens === null || ens === void 0 ? void 0 : ens.name) ? (jsxs(Fragment, { children: [jsx(Typography, { className: 'wallet__ens-name', variant: 'body_small', color: 'primary', truncate: true, children: ens === null || ens === void 0 ? void 0 : ens.name }), jsx("div", { className: 'wallet__row__seperator' }), jsx(Typography, { variant: 'body_mini', color: 'secondary', children: shortenWalletAddress(address, 3, 3) })] })) : (jsx(Typography, { variant: 'body_small', color: 'primary', children: shortenWalletAddress(address, 4, 4) }))] }), jsx(DotsMenu, { "data-testid": 'dots-menu', options: options, buttonClassName: 'wallet__menu', direction: 'left' })] }));
@@ -64,7 +64,7 @@ require('../../../../../components/Popper/PopperContext/PopperContext.cjs');
64
64
  require('react-focus-lock');
65
65
 
66
66
  const SwitchOrUseActiveAccountView = ({ connectedWallet, selectedWalletToSwitchTo, }) => {
67
- const { setSelectedWalletWithAction, setSelectedWalletConnectorKey, computeConnectedStateForWallets, setPrimaryWallet, } = useInternalDynamicContext.useInternalDynamicContext();
67
+ const { setSelectedWalletWithAction, setSelectedWalletConnectorKey, setPrimaryWallet, } = useInternalDynamicContext.useInternalDynamicContext();
68
68
  const onUseActiveWalletClick = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
69
69
  var _a, _b;
70
70
  if (!connectedWallet) {
@@ -75,13 +75,11 @@ const SwitchOrUseActiveAccountView = ({ connectedWallet, selectedWalletToSwitchT
75
75
  }
76
76
  setSelectedWalletWithAction({ action: 'select', wallet: connectedWallet });
77
77
  setPrimaryWallet(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.id);
78
- computeConnectedStateForWallets();
79
78
  setSelectedWalletConnectorKey(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.connector.key);
80
79
  }), [
81
80
  connectedWallet,
82
81
  setSelectedWalletWithAction,
83
82
  setPrimaryWallet,
84
- computeConnectedStateForWallets,
85
83
  setSelectedWalletConnectorKey,
86
84
  ]);
87
85
  return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsxs(Typography.Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: ["Wallet", ' ', jsxRuntime.jsx(Typography.Typography, { as: 'span', weight: 'medium', color: 'primary', children: shortenWalletAddress.shortenWalletAddress(selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.address, 3, 3) }), ' ', "is not active in ", selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.name, ". To make active, open your ", selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.name, " wallet and switch to this account."] }), jsxRuntime.jsx(Divider.Divider, { fullWidth: true, text: 'Or' }), jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', children: "Use your active wallet" }), jsxRuntime.jsxs(Button.Button, { buttonClassName: 'default-prompt-modal__button', expanded: true, type: 'button', buttonPadding: 'medium', typographyProps: { variant: 'button_secondary' }, onClick: onUseActiveWalletClick, dataTestId: 'use-active-wallet-button', children: ["Select", ' ', jsxRuntime.jsx(Icon.Icon, { size: 'xsmall', children: jsxRuntime.jsx(walletBook.WalletIcon, { walletKey: selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.key }) }), ' ', shortenWalletAddress.shortenWalletAddress(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.address, 3, 3)] })] }));
@@ -60,7 +60,7 @@ import '../../../../../components/Popper/PopperContext/PopperContext.js';
60
60
  import 'react-focus-lock';
61
61
 
62
62
  const SwitchOrUseActiveAccountView = ({ connectedWallet, selectedWalletToSwitchTo, }) => {
63
- const { setSelectedWalletWithAction, setSelectedWalletConnectorKey, computeConnectedStateForWallets, setPrimaryWallet, } = useInternalDynamicContext();
63
+ const { setSelectedWalletWithAction, setSelectedWalletConnectorKey, setPrimaryWallet, } = useInternalDynamicContext();
64
64
  const onUseActiveWalletClick = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
65
65
  var _a, _b;
66
66
  if (!connectedWallet) {
@@ -71,13 +71,11 @@ const SwitchOrUseActiveAccountView = ({ connectedWallet, selectedWalletToSwitchT
71
71
  }
72
72
  setSelectedWalletWithAction({ action: 'select', wallet: connectedWallet });
73
73
  setPrimaryWallet(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.id);
74
- computeConnectedStateForWallets();
75
74
  setSelectedWalletConnectorKey(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.connector.key);
76
75
  }), [
77
76
  connectedWallet,
78
77
  setSelectedWalletWithAction,
79
78
  setPrimaryWallet,
80
- computeConnectedStateForWallets,
81
79
  setSelectedWalletConnectorKey,
82
80
  ]);
83
81
  return (jsxs(Fragment, { children: [jsxs(Typography, { variant: 'body_normal', color: 'secondary', weight: 'regular', "data-testid": 'content', children: ["Wallet", ' ', jsx(Typography, { as: 'span', weight: 'medium', color: 'primary', children: shortenWalletAddress(selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.address, 3, 3) }), ' ', "is not active in ", selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.name, ". To make active, open your ", selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.name, " wallet and switch to this account."] }), jsx(Divider, { fullWidth: true, text: 'Or' }), jsx(Typography, { variant: 'body_normal', color: 'primary', children: "Use your active wallet" }), jsxs(Button, { buttonClassName: 'default-prompt-modal__button', expanded: true, type: 'button', buttonPadding: 'medium', typographyProps: { variant: 'button_secondary' }, onClick: onUseActiveWalletClick, dataTestId: 'use-active-wallet-button', children: ["Select", ' ', jsx(Icon, { size: 'xsmall', children: jsx(WalletIcon, { walletKey: selectedWalletToSwitchTo === null || selectedWalletToSwitchTo === void 0 ? void 0 : selectedWalletToSwitchTo.connector.key }) }), ' ', shortenWalletAddress(connectedWallet === null || connectedWallet === void 0 ? void 0 : connectedWallet.address, 3, 3)] })] }));
@@ -60,10 +60,10 @@ require('../../views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
60
60
  var CopyButton = require('../../../../components/CopyButton/CopyButton.cjs');
61
61
  require('../../../../components/InlineWidget/InlineWidget.cjs');
62
62
  require('../../../../components/MenuList/Dropdown/Dropdown.cjs');
63
+ var TextButton = require('../../../../components/TextButton/TextButton.cjs');
63
64
  require('../../../../components/Popper/Popper/Popper.cjs');
64
65
  require('../../../../components/Popper/PopperContext/PopperContext.cjs');
65
66
  require('react-focus-lock');
66
- var TextButton = require('../../../../components/TextButton/TextButton.cjs');
67
67
 
68
68
  const QrCodeModalView = ({ walletId }) => {
69
69
  var _a, _b;
@@ -56,10 +56,10 @@ import '../../views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
56
56
  import { CopyButton } from '../../../../components/CopyButton/CopyButton.js';
57
57
  import '../../../../components/InlineWidget/InlineWidget.js';
58
58
  import '../../../../components/MenuList/Dropdown/Dropdown.js';
59
+ import { TextButton } from '../../../../components/TextButton/TextButton.js';
59
60
  import '../../../../components/Popper/Popper/Popper.js';
60
61
  import '../../../../components/Popper/PopperContext/PopperContext.js';
61
62
  import 'react-focus-lock';
62
- import { TextButton } from '../../../../components/TextButton/TextButton.js';
63
63
 
64
64
  const QrCodeModalView = ({ walletId }) => {
65
65
  var _a, _b;
@@ -3,9 +3,10 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var jsxRuntime = require('react/jsx-runtime');
6
+ var React = require('react');
6
7
  var reactI18next = require('react-i18next');
7
8
  var iconic = require('@dynamic-labs/iconic');
8
- require('react');
9
+ var classNames = require('../../../../../utils/functions/classNames/classNames.cjs');
9
10
  require('@dynamic-labs/utils');
10
11
  require('@dynamic-labs/sdk-api');
11
12
  require('../../../../../config/ApiEndpoint.cjs');
@@ -71,6 +72,7 @@ const mapPasskeyProviderToIcon = {
71
72
  };
72
73
  const PasskeyCard = ({ passkey }) => {
73
74
  const { t } = reactI18next.useTranslation();
75
+ const [showTooltip, setShowTooltip] = React.useState(false);
74
76
  const { value: timeSinceValue, unit: timeSinceUnit } = getTimeSince.getTimeSince(passkey.createdAt);
75
77
  const PasskeyProviderIcon = () => {
76
78
  if (!passkey.userAgent)
@@ -88,11 +90,19 @@ const PasskeyCard = ({ passkey }) => {
88
90
  return null;
89
91
  return t(`dyn_manage_passkeys.passkey_providers.${provider}`);
90
92
  };
91
- return (jsxRuntime.jsxs("div", { className: 'passkey-card', children: [jsxRuntime.jsxs("div", { className: 'passkey-card__info', children: [jsxRuntime.jsx("div", { className: 'passkey-card__info__icon', children: jsxRuntime.jsx(PasskeyProviderIcon, {}) }), jsxRuntime.jsxs("div", { className: 'passkey-card__info__text', children: [jsxRuntime.jsx(Typography.Typography, { variant: 'body_normal', color: 'primary', children: shortenEmail.shortenEmail(passkey.alias, {
92
- breakpoint: 12,
93
- cutEnd: 4,
94
- cutStart: 4,
95
- }) }), getPasskeyProviderName() && (jsxRuntime.jsxs(Typography.Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_manage_passkeys.passkey_from'), " ", getPasskeyProviderName()] }))] })] }), jsxRuntime.jsx("div", { className: 'passkey-card__date', children: jsxRuntime.jsxs(Typography.Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_time_since.created'), ' ', `${timeSinceValue} ${timeSinceUnit} ${t('dyn_time_since.ago')}`] }) })] }));
93
+ const handleShowTooltip = () => {
94
+ setShowTooltip(true);
95
+ setTimeout(() => {
96
+ setShowTooltip(false);
97
+ }, 2000);
98
+ };
99
+ return (jsxRuntime.jsxs("div", { className: 'passkey-card', children: [jsxRuntime.jsxs("div", { className: 'passkey-card__info', children: [jsxRuntime.jsx("div", { className: 'passkey-card__info__icon', "data-testId": 'provider-icon', children: jsxRuntime.jsx(PasskeyProviderIcon, {}) }), jsxRuntime.jsxs("div", { className: 'passkey-card__info__text', children: [jsxRuntime.jsxs(Typography.Typography, { "data-testid": 'passkey-alias', variant: 'body_normal', color: 'primary', title: passkey.alias, onClick: handleShowTooltip, children: [shortenEmail.shortenEmail(passkey.alias, {
100
+ breakpoint: 12,
101
+ cutEnd: 4,
102
+ cutStart: 4,
103
+ }), jsxRuntime.jsx("p", { className: classNames.classNames('passkey-card__info__tooltip', {
104
+ 'passkey-card__info__tooltip--visible': showTooltip,
105
+ }), children: passkey.alias })] }), getPasskeyProviderName() && (jsxRuntime.jsxs(Typography.Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_manage_passkeys.passkey_from'), " ", getPasskeyProviderName()] }))] })] }), jsxRuntime.jsx("div", { className: 'passkey-card__date', children: jsxRuntime.jsxs(Typography.Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_time_since.created'), ' ', `${timeSinceValue} ${timeSinceUnit} ${t('dyn_time_since.ago')}`] }) })] }));
96
106
  };
97
107
 
98
108
  exports.PasskeyCard = PasskeyCard;
@@ -1,7 +1,8 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useState } from 'react';
2
3
  import { useTranslation } from 'react-i18next';
3
4
  import { AndroidIcon, BraveIcon, ChromeIcon, EdgeIcon, FirefoxIcon, AppleIcon, OperaIcon, SafariIcon } from '@dynamic-labs/iconic';
4
- import 'react';
5
+ import { classNames } from '../../../../../utils/functions/classNames/classNames.js';
5
6
  import '@dynamic-labs/utils';
6
7
  import '@dynamic-labs/sdk-api';
7
8
  import '../../../../../config/ApiEndpoint.js';
@@ -67,6 +68,7 @@ const mapPasskeyProviderToIcon = {
67
68
  };
68
69
  const PasskeyCard = ({ passkey }) => {
69
70
  const { t } = useTranslation();
71
+ const [showTooltip, setShowTooltip] = useState(false);
70
72
  const { value: timeSinceValue, unit: timeSinceUnit } = getTimeSince(passkey.createdAt);
71
73
  const PasskeyProviderIcon = () => {
72
74
  if (!passkey.userAgent)
@@ -84,11 +86,19 @@ const PasskeyCard = ({ passkey }) => {
84
86
  return null;
85
87
  return t(`dyn_manage_passkeys.passkey_providers.${provider}`);
86
88
  };
87
- return (jsxs("div", { className: 'passkey-card', children: [jsxs("div", { className: 'passkey-card__info', children: [jsx("div", { className: 'passkey-card__info__icon', children: jsx(PasskeyProviderIcon, {}) }), jsxs("div", { className: 'passkey-card__info__text', children: [jsx(Typography, { variant: 'body_normal', color: 'primary', children: shortenEmail(passkey.alias, {
88
- breakpoint: 12,
89
- cutEnd: 4,
90
- cutStart: 4,
91
- }) }), getPasskeyProviderName() && (jsxs(Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_manage_passkeys.passkey_from'), " ", getPasskeyProviderName()] }))] })] }), jsx("div", { className: 'passkey-card__date', children: jsxs(Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_time_since.created'), ' ', `${timeSinceValue} ${timeSinceUnit} ${t('dyn_time_since.ago')}`] }) })] }));
89
+ const handleShowTooltip = () => {
90
+ setShowTooltip(true);
91
+ setTimeout(() => {
92
+ setShowTooltip(false);
93
+ }, 2000);
94
+ };
95
+ return (jsxs("div", { className: 'passkey-card', children: [jsxs("div", { className: 'passkey-card__info', children: [jsx("div", { className: 'passkey-card__info__icon', "data-testId": 'provider-icon', children: jsx(PasskeyProviderIcon, {}) }), jsxs("div", { className: 'passkey-card__info__text', children: [jsxs(Typography, { "data-testid": 'passkey-alias', variant: 'body_normal', color: 'primary', title: passkey.alias, onClick: handleShowTooltip, children: [shortenEmail(passkey.alias, {
96
+ breakpoint: 12,
97
+ cutEnd: 4,
98
+ cutStart: 4,
99
+ }), jsx("p", { className: classNames('passkey-card__info__tooltip', {
100
+ 'passkey-card__info__tooltip--visible': showTooltip,
101
+ }), children: passkey.alias })] }), getPasskeyProviderName() && (jsxs(Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_manage_passkeys.passkey_from'), " ", getPasskeyProviderName()] }))] })] }), jsx("div", { className: 'passkey-card__date', children: jsxs(Typography, { variant: 'body_small', color: 'secondary', children: [t('dyn_time_since.created'), ' ', `${timeSinceValue} ${timeSinceUnit} ${t('dyn_time_since.ago')}`] }) })] }));
92
102
  };
93
103
 
94
104
  export { PasskeyCard };