@dynamic-labs/sdk-react-core 4.9.1-preview.0 → 4.9.2-preview.0

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 (66) hide show
  1. package/CHANGELOG.md +13 -2
  2. package/package.cjs +1 -1
  3. package/package.js +1 -1
  4. package/package.json +11 -11
  5. package/src/index.cjs +2 -0
  6. package/src/index.d.ts +4 -3
  7. package/src/index.js +1 -0
  8. package/src/lib/components/NetworkPicker/components/NetworkDropdown/NetworkDropdown.cjs +11 -2
  9. package/src/lib/components/NetworkPicker/components/NetworkDropdown/NetworkDropdown.js +11 -2
  10. package/src/lib/components/UserProfile/parts/UserProfileSocialAccount/UserProfileSocialAccount.cjs +10 -4
  11. package/src/lib/components/UserProfile/parts/UserProfileSocialAccount/UserProfileSocialAccount.js +10 -4
  12. package/src/lib/context/DynamicContext/DynamicContext.cjs +1 -3
  13. package/src/lib/context/DynamicContext/DynamicContext.js +2 -4
  14. package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/useShowAuthFlow.cjs +1 -1
  15. package/src/lib/context/DynamicContext/hooks/useShowAuthFlow/useShowAuthFlow.js +1 -1
  16. package/src/lib/context/DynamicContext/types/IDynamicContext.d.ts +2 -3
  17. package/src/lib/context/DynamicContext/types/SettingsOverrides.d.ts +12 -5
  18. package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.cjs +18 -1
  19. package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.d.ts +2 -2
  20. package/src/lib/context/OnrampContext/useEnabledOnrampProviders/useEnabledOnrampProviders.js +19 -2
  21. package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.cjs +6 -6
  22. package/src/lib/context/SocialRedirectContext/hooks/useRedirectSocialHandler/useRedirectSocialHandler.js +6 -6
  23. package/src/lib/utils/functions/findWalletOptionFor/findWalletOptionFor.cjs +1 -1
  24. package/src/lib/utils/functions/findWalletOptionFor/findWalletOptionFor.js +1 -1
  25. package/src/lib/utils/functions/generateMessages/index.cjs +19 -9
  26. package/src/lib/utils/functions/generateMessages/index.js +19 -9
  27. package/src/lib/utils/functions/index.d.ts +0 -1
  28. package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.cjs +31 -18
  29. package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.d.ts +3 -0
  30. package/src/lib/utils/functions/onrampConfigurationToOnrampOption/onrampConfigurationToOnrampOption.js +31 -18
  31. package/src/lib/utils/functions/onrampProviders/coinbase.cjs +55 -0
  32. package/src/lib/utils/functions/onrampProviders/coinbase.d.ts +15 -0
  33. package/src/lib/utils/functions/onrampProviders/coinbase.js +50 -0
  34. package/src/lib/utils/functions/onrampProviders/index.cjs +24 -0
  35. package/src/lib/utils/functions/onrampProviders/index.d.ts +11 -0
  36. package/src/lib/utils/functions/onrampProviders/index.js +19 -0
  37. package/src/lib/utils/functions/openOnrampPopup.cjs +8 -5
  38. package/src/lib/utils/functions/openOnrampPopup.d.ts +4 -2
  39. package/src/lib/utils/functions/openOnrampPopup.js +8 -5
  40. package/src/lib/utils/functions/socialStorage/socialStorage.d.ts +2 -0
  41. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +2 -2
  42. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +2 -2
  43. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.cjs +2 -0
  44. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.d.ts +2 -1
  45. package/src/lib/utils/hooks/useEmbeddedWallet/useEmbeddedWallet.js +2 -0
  46. package/src/lib/utils/hooks/useGlobalLoading/useGlobalLoading.cjs +1 -7
  47. package/src/lib/utils/hooks/useGlobalLoading/useGlobalLoading.js +1 -7
  48. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +5 -1
  49. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.d.ts +5 -1
  50. package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +5 -1
  51. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.cjs +2 -1
  52. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.d.ts +2 -1
  53. package/src/lib/utils/hooks/useSocialAuth/useSocialAuth.js +2 -1
  54. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +8 -2
  55. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +9 -3
  56. package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.cjs +4 -0
  57. package/src/lib/utils/hooks/useWalletItemActions/useHandleWalletItem/useHandleWalletItem.js +4 -0
  58. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.cjs +5 -7
  59. package/src/lib/widgets/DynamicEmbeddedWidget/DynamicEmbeddedAuthFlow/DynamicEmbeddedAuthFlow.js +5 -7
  60. package/src/lib/widgets/OnrampWidget/OnrampWidget.cjs +11 -2
  61. package/src/lib/widgets/OnrampWidget/OnrampWidget.d.ts +4 -0
  62. package/src/lib/widgets/OnrampWidget/OnrampWidget.js +11 -2
  63. package/src/lib/utils/functions/coinbaseOnramp/formatCoinbaseOnrampUrl.cjs +0 -27
  64. package/src/lib/utils/functions/coinbaseOnramp/formatCoinbaseOnrampUrl.d.ts +0 -2
  65. package/src/lib/utils/functions/coinbaseOnramp/formatCoinbaseOnrampUrl.js +0 -23
  66. package/src/lib/utils/functions/coinbaseOnramp/index.d.ts +0 -1
package/CHANGELOG.md CHANGED
@@ -1,11 +1,22 @@
1
1
 
2
- ### [4.9.1-preview.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.9.0...v4.9.1-preview.0) (2025-03-07)
2
+ ### [4.9.2-preview.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.9.1...v4.9.2-preview.0) (2025-03-11)
3
+
4
+ ### [4.9.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.9.0...v4.9.1) (2025-03-11)
5
+
6
+
7
+ ### Features
8
+
9
+ * waas svm connector ([#8191](https://github.com/dynamic-labs/dynamic-auth/issues/8191)) ([049a360](https://github.com/dynamic-labs/dynamic-auth/commit/049a360642d6aa2122676c7a29d36a7baef9e49b))
3
10
 
4
11
 
5
12
  ### Bug Fixes
6
13
 
7
14
  * 7702 on sepolia ([#8242](https://github.com/dynamic-labs/dynamic-auth/issues/8242)) ([8e1c63f](https://github.com/dynamic-labs/dynamic-auth/commit/8e1c63f240024f419e12787636dd2ebaacf8da94))
8
- * embedded widget race condition that would show both embedded and non-embedded widgets at the same time ([8a52778](https://github.com/dynamic-labs/dynamic-auth/commit/8a5277888489e03871532331760c197aa6216495))
15
+ * close auth flow when promptExport enabled but createWallet is false ([#8239](https://github.com/dynamic-labs/dynamic-auth/issues/8239)) ([f82429f](https://github.com/dynamic-labs/dynamic-auth/commit/f82429f85e729a76c2516f0db112033fdd2a36d5))
16
+ * fix solana genesis hashes bug that was causing a breaking change ([#8250](https://github.com/dynamic-labs/dynamic-auth/issues/8250)) ([731c93b](https://github.com/dynamic-labs/dynamic-auth/commit/731c93bea4b8b95caa8cc665f2ecb53f9948ef8e))
17
+ * move setup-inside-iframe utility method to the utils package ([#8256](https://github.com/dynamic-labs/dynamic-auth/issues/8256)) ([d34eb6d](https://github.com/dynamic-labs/dynamic-auth/commit/d34eb6d211baecb496b84fefaee8179a5fb1b52a))
18
+ * **QNTM-2952:** support headless social sign in ([#8226](https://github.com/dynamic-labs/dynamic-auth/issues/8226)) ([0c3082d](https://github.com/dynamic-labs/dynamic-auth/commit/0c3082d593c633519c9eed20be15186f18f65c09))
19
+ * sign message with trust wallet on solana ([#8249](https://github.com/dynamic-labs/dynamic-auth/issues/8249)) ([99a7917](https://github.com/dynamic-labs/dynamic-auth/commit/99a791796f7d2c83b9f18e45367aa9689c67869d))
9
20
 
10
21
  ## [4.9.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.8.6...v4.9.0) (2025-03-07)
11
22
 
package/package.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.9.1-preview.0";
6
+ var version = "4.9.2-preview.0";
7
7
  var dependencies = {
8
8
  "@dynamic-labs/sdk-api-core": "0.0.638",
9
9
  "@hcaptcha/react-hcaptcha": "1.4.4",
package/package.js CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client'
2
- var version = "4.9.1-preview.0";
2
+ var version = "4.9.2-preview.0";
3
3
  var dependencies = {
4
4
  "@dynamic-labs/sdk-api-core": "0.0.638",
5
5
  "@hcaptcha/react-hcaptcha": "1.4.4",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "4.9.1-preview.0",
3
+ "version": "4.9.2-preview.0",
4
4
  "dependencies": {
5
5
  "@dynamic-labs/sdk-api-core": "0.0.638",
6
6
  "@hcaptcha/react-hcaptcha": "1.4.4",
@@ -14,16 +14,16 @@
14
14
  "yup": "0.32.11",
15
15
  "react-international-phone": "4.2.5",
16
16
  "bs58": "5.0.0",
17
- "@dynamic-labs/assert-package-version": "4.9.1-preview.0",
18
- "@dynamic-labs/iconic": "4.9.1-preview.0",
19
- "@dynamic-labs/logger": "4.9.1-preview.0",
20
- "@dynamic-labs/multi-wallet": "4.9.1-preview.0",
21
- "@dynamic-labs/rpc-providers": "4.9.1-preview.0",
22
- "@dynamic-labs/store": "4.9.1-preview.0",
23
- "@dynamic-labs/types": "4.9.1-preview.0",
24
- "@dynamic-labs/utils": "4.9.1-preview.0",
25
- "@dynamic-labs/wallet-book": "4.9.1-preview.0",
26
- "@dynamic-labs/wallet-connector-core": "4.9.1-preview.0",
17
+ "@dynamic-labs/assert-package-version": "4.9.2-preview.0",
18
+ "@dynamic-labs/iconic": "4.9.2-preview.0",
19
+ "@dynamic-labs/logger": "4.9.2-preview.0",
20
+ "@dynamic-labs/multi-wallet": "4.9.2-preview.0",
21
+ "@dynamic-labs/rpc-providers": "4.9.2-preview.0",
22
+ "@dynamic-labs/store": "4.9.2-preview.0",
23
+ "@dynamic-labs/types": "4.9.2-preview.0",
24
+ "@dynamic-labs/utils": "4.9.2-preview.0",
25
+ "@dynamic-labs/wallet-book": "4.9.2-preview.0",
26
+ "@dynamic-labs/wallet-connector-core": "4.9.2-preview.0",
27
27
  "eventemitter3": "5.0.1"
28
28
  },
29
29
  "devDependencies": {
package/src/index.cjs CHANGED
@@ -177,6 +177,7 @@ var getNetwork = require('./lib/utils/functions/getNetwork/getNetwork.cjs');
177
177
  var useFunding = require('./lib/utils/hooks/useFunding/useFunding.cjs');
178
178
  var useOnramp = require('./lib/utils/hooks/useOnramp/useOnramp.cjs');
179
179
  var useOpenFundingOptions = require('./lib/utils/hooks/useOpenFundingOptions/useOpenFundingOptions.cjs');
180
+ var coinbase = require('./lib/utils/functions/onrampProviders/coinbase.cjs');
180
181
  var SendBalanceContext = require('./lib/context/SendBalanceContext/SendBalanceContext.cjs');
181
182
  require('./lib/context/ConnectWithOtpContext/ConnectWithOtpContext.cjs');
182
183
  require('./lib/context/ConnectWithOtpContext/constants.cjs');
@@ -305,6 +306,7 @@ exports.getNetwork = getNetwork.getNetwork;
305
306
  exports.useFunding = useFunding.useFunding;
306
307
  exports.useOnramp = useOnramp.useOnramp;
307
308
  exports.useOpenFundingOptions = useOpenFundingOptions.useOpenFundingOptions;
309
+ exports.formatCoinbaseOnrampUrl = coinbase.formatCoinbaseOnrampUrl;
308
310
  exports.useSendBalance = SendBalanceContext.useSendBalance;
309
311
  exports.useConnectWithOtp = useConnectWithOtp.useConnectWithOtp;
310
312
  exports.useSwitchNetwork = useSwitchNetwork.useSwitchNetwork;
package/src/index.d.ts CHANGED
@@ -92,9 +92,9 @@ export {
92
92
  MockContextProvider, } from './lib/context/MockContext';
93
93
  export { getDefaultColor, getThemeConfig, themesData, } from './lib/context/ThemeContext/themesData';
94
94
  /** @deprecated */
95
- export {
95
+ export type {
96
96
  /** @deprecated */
97
- type ViewType, } from './lib/context/ViewContext';
97
+ ViewType, } from './lib/context/ViewContext';
98
98
  export type { NotSupportedError, SandboxMaximumThresholdReachedError, NoAccessError, ChainalysisError, EmailAlreadyExistsError, UsernameAlreadyExistsError, SocialAccountAlreadyExistsError, WalletNotDeployedError, WalletUsedError, EmailVerificationError, AccountExistsError, InvalidPhoneNumberError, } from '@dynamic-labs/utils';
99
99
  export type { WalletConnector, Chain, } from '@dynamic-labs/wallet-connector-core';
100
100
  export type { EvmNetwork, PhoneData, OtpDestination, UserProfile,
@@ -103,7 +103,7 @@ AuthOptions as AuthOption, AuthOptions,
103
103
  /** @deprecated use AuthMethod instead */
104
104
  AuthMethod as AuthType, AuthMethod, } from '@dynamic-labs/types';
105
105
  export { publicDynamicEvents as dynamicEvents } from './lib/events/dynamicEvents';
106
- export { type UserWalletsChangedParams } from './lib/events';
106
+ export type { UserWalletsChangedParams } from './lib/events';
107
107
  export { mergeNetworks } from './lib/utils/functions/mergeNetworks';
108
108
  export { overrideNetworkRpcUrl } from './lib/utils/functions/overrideNetworkRpcUrl';
109
109
  export {
@@ -121,6 +121,7 @@ useFunding, } from './lib/utils/hooks/useFunding';
121
121
  export { useOnramp } from './lib/utils/hooks/useOnramp';
122
122
  export { useOpenFundingOptions } from './lib/utils/hooks/useOpenFundingOptions';
123
123
  export { useFundWithWallet } from './lib/utils/hooks/useFundWithWallet';
124
+ export { formatCoinbaseOnrampUrl } from './lib/utils/functions/onrampProviders';
124
125
  export { useUserUpdateRequest, useWalletConnectorEvent, } from './lib/utils/hooks';
125
126
  export { type VerifyOtp, useOtpVerificationRequest, } from './lib/utils/hooks/authenticationHooks/';
126
127
  export type { UpdateUserFieldsArg } from './lib/utils/hooks/';
package/src/index.js CHANGED
@@ -173,6 +173,7 @@ export { getNetwork } from './lib/utils/functions/getNetwork/getNetwork.js';
173
173
  export { useFunding } from './lib/utils/hooks/useFunding/useFunding.js';
174
174
  export { useOnramp } from './lib/utils/hooks/useOnramp/useOnramp.js';
175
175
  export { useOpenFundingOptions } from './lib/utils/hooks/useOpenFundingOptions/useOpenFundingOptions.js';
176
+ export { formatCoinbaseOnrampUrl } from './lib/utils/functions/onrampProviders/coinbase.js';
176
177
  export { useSendBalance } from './lib/context/SendBalanceContext/SendBalanceContext.js';
177
178
  import './lib/context/ConnectWithOtpContext/ConnectWithOtpContext.js';
178
179
  import './lib/context/ConnectWithOtpContext/constants.js';
@@ -6,14 +6,15 @@ Object.defineProperty(exports, '__esModule', { value: true });
6
6
  var _tslib = require('../../../../../../_virtual/_tslib.cjs');
7
7
  var jsxRuntime = require('react/jsx-runtime');
8
8
  var React = require('react');
9
+ var walletConnectorCore = require('@dynamic-labs/wallet-connector-core');
9
10
  require('../../../MenuList/Dropdown/Dropdown.cjs');
10
11
  var MenuList = require('../../../MenuList/MenuList/MenuList.cjs');
11
12
  var NetworkAction = require('../NetworkAction/NetworkAction.cjs');
12
13
  var isNetworkUnsupported = require('../../../../utils/functions/isNetworkUnsupported/isNetworkUnsupported.cjs');
14
+ var usePromise = require('../../../../utils/hooks/usePromise/usePromise.cjs');
13
15
  require('@dynamic-labs/sdk-api-core');
14
16
  var logger = require('../../../../shared/logger.cjs');
15
17
  require('@dynamic-labs/iconic');
16
- require('@dynamic-labs/wallet-connector-core');
17
18
  require('../../../../context/ViewContext/ViewContext.cjs');
18
19
  require('@dynamic-labs/wallet-book');
19
20
  require('@dynamic-labs/utils');
@@ -23,6 +24,13 @@ require('../../../../shared/consts/index.cjs');
23
24
 
24
25
  const NetworkDropdown = ({ anchorRef, connector, customCallbackOnSuccess, setIsNetworkPickerOpen, isNetworkPickerOpen, currentNetwork, className, checkboxClassName, }) => {
25
26
  const [newNetworkId, setNewNetworkId] = React.useState(undefined);
27
+ const { data: wcSupportedWalletNetworks } = usePromise.usePromise(() => walletConnectorCore.isWalletConnectConnector(connector)
28
+ ? connector === null || connector === void 0 ? void 0 : connector.getSupportedNetworks()
29
+ : Promise.resolve(undefined), {
30
+ deps: [connector, isNetworkPickerOpen],
31
+ enabled: connector.isWalletConnect,
32
+ initialData: undefined,
33
+ });
26
34
  if (!connector) {
27
35
  return null;
28
36
  }
@@ -52,7 +60,8 @@ const NetworkDropdown = ({ anchorRef, connector, customCallbackOnSuccess, setIsN
52
60
  return (jsxRuntime.jsx(MenuList.MenuList, { className: className, isOpen: isNetworkPickerOpen, onClickClose: () => setIsNetworkPickerOpen(false), popperProps: {
53
61
  anchorOrigin: 'bottom-left',
54
62
  anchorRef,
55
- }, mobileTitle: 'Select network', children: enabledNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsxRuntime.jsx(NetworkAction.NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: currentNetwork, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId }, networkId))) }));
63
+ }, mobileTitle: 'Select network', children: enabledNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsxRuntime.jsx(NetworkAction.NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: currentNetwork, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId, notSupported: wcSupportedWalletNetworks &&
64
+ !wcSupportedWalletNetworks.includes(`${networkId}`) }, networkId))) }));
56
65
  };
57
66
 
58
67
  exports.NetworkDropdown = NetworkDropdown;
@@ -2,14 +2,15 @@
2
2
  import { __awaiter } from '../../../../../../_virtual/_tslib.js';
3
3
  import { jsx } from 'react/jsx-runtime';
4
4
  import { useState } from 'react';
5
+ import { isWalletConnectConnector } from '@dynamic-labs/wallet-connector-core';
5
6
  import '../../../MenuList/Dropdown/Dropdown.js';
6
7
  import { MenuList } from '../../../MenuList/MenuList/MenuList.js';
7
8
  import { NetworkAction } from '../NetworkAction/NetworkAction.js';
8
9
  import { isNetworkUnsupported } from '../../../../utils/functions/isNetworkUnsupported/isNetworkUnsupported.js';
10
+ import { usePromise } from '../../../../utils/hooks/usePromise/usePromise.js';
9
11
  import '@dynamic-labs/sdk-api-core';
10
12
  import { logger } from '../../../../shared/logger.js';
11
13
  import '@dynamic-labs/iconic';
12
- import '@dynamic-labs/wallet-connector-core';
13
14
  import '../../../../context/ViewContext/ViewContext.js';
14
15
  import '@dynamic-labs/wallet-book';
15
16
  import '@dynamic-labs/utils';
@@ -19,6 +20,13 @@ import '../../../../shared/consts/index.js';
19
20
 
20
21
  const NetworkDropdown = ({ anchorRef, connector, customCallbackOnSuccess, setIsNetworkPickerOpen, isNetworkPickerOpen, currentNetwork, className, checkboxClassName, }) => {
21
22
  const [newNetworkId, setNewNetworkId] = useState(undefined);
23
+ const { data: wcSupportedWalletNetworks } = usePromise(() => isWalletConnectConnector(connector)
24
+ ? connector === null || connector === void 0 ? void 0 : connector.getSupportedNetworks()
25
+ : Promise.resolve(undefined), {
26
+ deps: [connector, isNetworkPickerOpen],
27
+ enabled: connector.isWalletConnect,
28
+ initialData: undefined,
29
+ });
22
30
  if (!connector) {
23
31
  return null;
24
32
  }
@@ -48,7 +56,8 @@ const NetworkDropdown = ({ anchorRef, connector, customCallbackOnSuccess, setIsN
48
56
  return (jsx(MenuList, { className: className, isOpen: isNetworkPickerOpen, onClickClose: () => setIsNetworkPickerOpen(false), popperProps: {
49
57
  anchorOrigin: 'bottom-left',
50
58
  anchorRef,
51
- }, mobileTitle: 'Select network', children: enabledNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsx(NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: currentNetwork, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId }, networkId))) }));
59
+ }, mobileTitle: 'Select network', children: enabledNetworks.map(({ name, networkId, vanityName, iconUrls }) => (jsx(NetworkAction, { iconUrl: iconUrls === null || iconUrls === void 0 ? void 0 : iconUrls[0], networkId: networkId, networkName: vanityName || name, network: currentNetwork, onClick: handleNetworkChange, checkboxClassName: checkboxClassName, newNetworkId: newNetworkId, notSupported: wcSupportedWalletNetworks &&
60
+ !wcSupportedWalletNetworks.includes(`${networkId}`) }, networkId))) }));
52
61
  };
53
62
 
54
63
  export { NetworkDropdown };
@@ -4,11 +4,11 @@
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
6
  var jsxRuntime = require('react/jsx-runtime');
7
+ var React = require('react');
7
8
  var iconic = require('@dynamic-labs/iconic');
8
9
  require('@dynamic-labs/utils');
9
10
  require('../../../Accordion/components/AccordionItem/AccordionItem.cjs');
10
11
  require('../../../Alert/Alert.cjs');
11
- require('react');
12
12
  require('../../../../events/dynamicEvents.cjs');
13
13
  require('../../../../../../_virtual/_tslib.cjs');
14
14
  require('../../../../context/DynamicContext/DynamicContext.cjs');
@@ -115,9 +115,15 @@ const UserProfileSocialAccount = ({ provider, }) => {
115
115
  const isActiveCredential = !primaryWallet &&
116
116
  connectedAccountInfo &&
117
117
  (connectedAccountInfo === null || connectedAccountInfo === void 0 ? void 0 : connectedAccountInfo.id) === (user === null || user === void 0 ? void 0 : user.lastVerifiedCredentialId);
118
- const renderButton = () => (jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonClassName: 'user-profile-social-account__button', buttonVariant: 'secondary', buttonPadding: 'none', onClick: () => isProviderLinked
119
- ? unlinkSocialAccount(provider)
120
- : linkSocialAccount(provider), loading: isProcessing, dataTestId: `social-account-${isProviderLinked ? 'disconnect' : 'connect'}-button`, typographyProps: {
118
+ const handleSocialAccountButton = React.useCallback(() => {
119
+ if (isProviderLinked) {
120
+ unlinkSocialAccount(provider);
121
+ }
122
+ else {
123
+ linkSocialAccount(provider, { showWidgetAfterConnection: true });
124
+ }
125
+ }, [isProviderLinked, linkSocialAccount, provider, unlinkSocialAccount]);
126
+ const renderButton = () => (jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonClassName: 'user-profile-social-account__button', buttonVariant: 'secondary', buttonPadding: 'none', onClick: handleSocialAccountButton, loading: isProcessing, dataTestId: `social-account-${isProviderLinked ? 'disconnect' : 'connect'}-button`, typographyProps: {
121
127
  color: 'secondary',
122
128
  variant: 'button_tertiary',
123
129
  }, startSlot:
@@ -1,10 +1,10 @@
1
1
  'use client'
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
+ import { useCallback } from 'react';
3
4
  import { SocialIcon } from '@dynamic-labs/iconic';
4
5
  import '@dynamic-labs/utils';
5
6
  import '../../../Accordion/components/AccordionItem/AccordionItem.js';
6
7
  import '../../../Alert/Alert.js';
7
- import 'react';
8
8
  import '../../../../events/dynamicEvents.js';
9
9
  import '../../../../../../_virtual/_tslib.js';
10
10
  import '../../../../context/DynamicContext/DynamicContext.js';
@@ -111,9 +111,15 @@ const UserProfileSocialAccount = ({ provider, }) => {
111
111
  const isActiveCredential = !primaryWallet &&
112
112
  connectedAccountInfo &&
113
113
  (connectedAccountInfo === null || connectedAccountInfo === void 0 ? void 0 : connectedAccountInfo.id) === (user === null || user === void 0 ? void 0 : user.lastVerifiedCredentialId);
114
- const renderButton = () => (jsx(TypographyButton, { buttonClassName: 'user-profile-social-account__button', buttonVariant: 'secondary', buttonPadding: 'none', onClick: () => isProviderLinked
115
- ? unlinkSocialAccount(provider)
116
- : linkSocialAccount(provider), loading: isProcessing, dataTestId: `social-account-${isProviderLinked ? 'disconnect' : 'connect'}-button`, typographyProps: {
114
+ const handleSocialAccountButton = useCallback(() => {
115
+ if (isProviderLinked) {
116
+ unlinkSocialAccount(provider);
117
+ }
118
+ else {
119
+ linkSocialAccount(provider, { showWidgetAfterConnection: true });
120
+ }
121
+ }, [isProviderLinked, linkSocialAccount, provider, unlinkSocialAccount]);
122
+ const renderButton = () => (jsx(TypographyButton, { buttonClassName: 'user-profile-social-account__button', buttonVariant: 'secondary', buttonPadding: 'none', onClick: handleSocialAccountButton, loading: isProcessing, dataTestId: `social-account-${isProviderLinked ? 'disconnect' : 'connect'}-button`, typographyProps: {
117
123
  color: 'secondary',
118
124
  variant: 'button_tertiary',
119
125
  }, startSlot:
@@ -291,7 +291,7 @@ const InnerDynamicContextProvider = (props) => {
291
291
  // which are only available further down and have would have circular dependencies
292
292
  const [requiredWalletsConnected, setRequiredWalletsConnected] = React.useState(false);
293
293
  const isUserAuthenticated = Boolean(authMode === 'connect-and-sign' ? user$1 : requiredWalletsConnected);
294
- const [isRenderingEmbeddedAuthFlow, setIsRenderingEmbeddedAuthFlow] = React.useState(false);
294
+ const isRenderingEmbeddedAuthFlow = React.useRef(false);
295
295
  const [showAuthFlow, setShowAuthFlow] = useShowAuthFlow.useShowAuthFlow({
296
296
  isAuthenticated: isUserAuthenticated,
297
297
  isMultiWalletEnabled: multiWallet,
@@ -560,7 +560,6 @@ const InnerDynamicContextProvider = (props) => {
560
560
  setBridgeOnboardingCompleted,
561
561
  setCallback,
562
562
  setDesktopUri,
563
- setIsRenderingEmbeddedAuthFlow,
564
563
  setIsSingleWalletAccount,
565
564
  setLegacyIsVerifying,
566
565
  setLogInWithEmail,
@@ -637,7 +636,6 @@ const InnerDynamicContextProvider = (props) => {
637
636
  handlers,
638
637
  i18nSDKInstance,
639
638
  isBridgeFlow,
640
- isRenderingEmbeddedAuthFlow,
641
639
  isSingleWalletAccount,
642
640
  legacyIsVerifying,
643
641
  linkedWallets,
@@ -1,7 +1,7 @@
1
1
  'use client'
2
2
  import { __awaiter } from '../../../../_virtual/_tslib.js';
3
3
  import { jsx, jsxs } from 'react/jsx-runtime';
4
- import { createContext, useState, useMemo, useEffect, useCallback } from 'react';
4
+ import { createContext, useState, useMemo, useRef, useEffect, useCallback } from 'react';
5
5
  import { I18nextProvider } from 'react-i18next';
6
6
  import { getIconicSpriteUrl } from '@dynamic-labs/iconic';
7
7
  import { Logger } from '@dynamic-labs/logger';
@@ -287,7 +287,7 @@ const InnerDynamicContextProvider = (props) => {
287
287
  // which are only available further down and have would have circular dependencies
288
288
  const [requiredWalletsConnected, setRequiredWalletsConnected] = useState(false);
289
289
  const isUserAuthenticated = Boolean(authMode === 'connect-and-sign' ? user : requiredWalletsConnected);
290
- const [isRenderingEmbeddedAuthFlow, setIsRenderingEmbeddedAuthFlow] = useState(false);
290
+ const isRenderingEmbeddedAuthFlow = useRef(false);
291
291
  const [showAuthFlow, setShowAuthFlow] = useShowAuthFlow({
292
292
  isAuthenticated: isUserAuthenticated,
293
293
  isMultiWalletEnabled: multiWallet,
@@ -556,7 +556,6 @@ const InnerDynamicContextProvider = (props) => {
556
556
  setBridgeOnboardingCompleted,
557
557
  setCallback,
558
558
  setDesktopUri,
559
- setIsRenderingEmbeddedAuthFlow,
560
559
  setIsSingleWalletAccount,
561
560
  setLegacyIsVerifying,
562
561
  setLogInWithEmail,
@@ -633,7 +632,6 @@ const InnerDynamicContextProvider = (props) => {
633
632
  handlers,
634
633
  i18nSDKInstance,
635
634
  isBridgeFlow,
636
- isRenderingEmbeddedAuthFlow,
637
635
  isSingleWalletAccount,
638
636
  legacyIsVerifying,
639
637
  linkedWallets,
@@ -43,7 +43,7 @@ const useShowAuthFlow = ({ isAuthenticated, isRenderingEmbeddedAuthFlow, isMulti
43
43
  dynamicEvents.dynamicEvents.emit('authFlowClose');
44
44
  }
45
45
  if (value) {
46
- if (ignoreIfIsEmbeddedWidget && isRenderingEmbeddedAuthFlow)
46
+ if (ignoreIfIsEmbeddedWidget && isRenderingEmbeddedAuthFlow.current)
47
47
  return;
48
48
  if (performMultiWalletChecks && isAuthenticated) {
49
49
  if (!isMultiWalletEnabled) {
@@ -39,7 +39,7 @@ const useShowAuthFlow = ({ isAuthenticated, isRenderingEmbeddedAuthFlow, isMulti
39
39
  dynamicEvents.emit('authFlowClose');
40
40
  }
41
41
  if (value) {
42
- if (ignoreIfIsEmbeddedWidget && isRenderingEmbeddedAuthFlow)
42
+ if (ignoreIfIsEmbeddedWidget && isRenderingEmbeddedAuthFlow.current)
43
43
  return;
44
44
  if (performMultiWalletChecks && isAuthenticated) {
45
45
  if (!isMultiWalletEnabled) {
@@ -1,4 +1,4 @@
1
- import { Dispatch, ReactNode, SetStateAction } from 'react';
1
+ import { Dispatch, MutableRefObject, ReactNode, SetStateAction } from 'react';
2
2
  import { changeLanguage } from 'i18next';
3
3
  import { CountryIso2 } from 'react-international-phone';
4
4
  import { NameServiceData, ProjectSettings } from '@dynamic-labs/sdk-api-core';
@@ -64,7 +64,7 @@ export interface IDynamicContext {
64
64
  handlers?: DynamicHandlers;
65
65
  isBridgeFlow: boolean;
66
66
  /** Whether there is an instance of DynamicEmbeddedAuthFlow being rendered */
67
- isRenderingEmbeddedAuthFlow: boolean;
67
+ isRenderingEmbeddedAuthFlow: MutableRefObject<boolean>;
68
68
  isSingleWalletAccount: boolean;
69
69
  /**
70
70
  * Legacy boolean flag used in useVerifyOnAwaitingSignature. Used to be called "isVerifying"
@@ -80,7 +80,6 @@ export interface IDynamicContext {
80
80
  loginWithEmail: boolean;
81
81
  selectedTabIndex: number;
82
82
  selectedTabSettings: WalletListViewTabItem | undefined;
83
- setIsRenderingEmbeddedAuthFlow: Dispatch<SetStateAction<boolean>>;
84
83
  tabsItems: WalletListViewTabItem[] | undefined;
85
84
  setSelectedTabIndex: Dispatch<SetStateAction<number>>;
86
85
  multiAsset: boolean;
@@ -28,16 +28,23 @@ export type OnrampOption = {
28
28
  */
29
29
  id: string;
30
30
  /**
31
- * (optional) The iframe URL of the onramp provider to be displayed in UI
32
- * If provided, the SDK will use this iframe URL to display the onramp provider in the UI
33
- * and will ignore the `onClick` handler
31
+ * The URL of the onramp provider
32
+ * For iframe mode, this is displayed directly in the UI
33
+ * For popup mode, this is opened in a new window when the provider is selected
34
34
  * Example: "https://widget.coinbase.com/iframe/onramp?apiKey=YOUR_API_KEY&walletAddress=YOUR_WALLET_ADDRESS"
35
35
  */
36
- iframeUrl?: string;
36
+ url?: string;
37
+ /**
38
+ * The display mode for the onramp provider
39
+ * 'iframe' - The provider will be displayed in an iframe within the UI
40
+ * 'popup' - The provider will be opened in a new window when selected
41
+ * @default 'iframe'
42
+ */
43
+ openMode?: 'iframe' | 'popup';
37
44
  /**
38
45
  * The onClick handler for when the onramp provider is selected
39
46
  * takes the primary wallet as an argument
40
- * It will be ignored if `iframeUrl` is provided
47
+ * It will be ignored if in iframe mode with a URL provided
41
48
  */
42
49
  onClick: ({ wallet }: {
43
50
  wallet: Wallet;
@@ -10,6 +10,7 @@ var sdkApiCore = require('@dynamic-labs/sdk-api-core');
10
10
  var getWalletAdditionalAddressByType = require('../../../utils/functions/getWalletAdditionalAddressByType/getWalletAdditionalAddressByType.cjs');
11
11
  var usePromise = require('../../../utils/hooks/usePromise/usePromise.cjs');
12
12
  var onramp = require('../../../data/api/onramp/onramp.cjs');
13
+ var coinbase = require('../../../utils/functions/onrampProviders/coinbase.cjs');
13
14
 
14
15
  const useEnabledOnrampProviders = ({ primaryWallet, network, environmentId, projectSettingsOnramps, target, }) => {
15
16
  var _a;
@@ -20,6 +21,10 @@ const useEnabledOnrampProviders = ({ primaryWallet, network, environmentId, proj
20
21
  walletConnectorCore.isBitcoinConnector(primaryWallet.connector) &&
21
22
  getWalletAdditionalAddressByType.getWalletAdditionalAddressByType(sdkApiCore.WalletAddressType.Payment, primaryWallet);
22
23
  const chainHasNetwork = network && chainName === 'evm';
24
+ const nonTestnetNetworks = primaryWallet
25
+ ? coinbase.getEnabledNonTestnetNetworks(primaryWallet)
26
+ : [];
27
+ const hasNonTestnetNetworks = nonTestnetNetworks.length > 0;
23
28
  const { data: onrampProviders } = usePromise.usePromise(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
24
29
  if (!chainName || !(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address))
25
30
  return [];
@@ -42,7 +47,19 @@ const useEnabledOnrampProviders = ({ primaryWallet, network, environmentId, proj
42
47
  enabled: Boolean(projectSettingsOnramps === null || projectSettingsOnramps === void 0 ? void 0 : projectSettingsOnramps.length),
43
48
  initialData: [],
44
49
  });
45
- return React.useMemo(() => onrampProviders.filter((p) => projectSettingsOnramps === null || projectSettingsOnramps === void 0 ? void 0 : projectSettingsOnramps.includes(p.provider)), [onrampProviders, projectSettingsOnramps]);
50
+ return React.useMemo(() => {
51
+ const filteredProviders = onrampProviders
52
+ .filter((p) => projectSettingsOnramps === null || projectSettingsOnramps === void 0 ? void 0 : projectSettingsOnramps.includes(p.provider))
53
+ .filter((p) => {
54
+ // Only apply network filtering to Coinbase
55
+ if (p.provider === sdkApiCore.ProviderEnum.CoinbaseOnramp) {
56
+ return hasNonTestnetNetworks;
57
+ }
58
+ // Always show other providers (like Banxa)
59
+ return true;
60
+ });
61
+ return filteredProviders;
62
+ }, [onrampProviders, projectSettingsOnramps, hasNonTestnetNetworks]);
46
63
  };
47
64
 
48
65
  exports.useEnabledOnrampProviders = useEnabledOnrampProviders;
@@ -1,5 +1,5 @@
1
- import { Wallet } from '@dynamic-labs/wallet-connector-core';
2
- import { OnrampConfiguration, OnrampProviders } from '@dynamic-labs/sdk-api-core';
1
+ import { type Wallet } from '@dynamic-labs/wallet-connector-core';
2
+ import { type OnrampConfiguration, type OnrampProviders } from '@dynamic-labs/sdk-api-core';
3
3
  export type EnabledOnrampProvidersTarget = {
4
4
  address?: string;
5
5
  token?: string;
@@ -2,10 +2,11 @@
2
2
  import { __awaiter } from '../../../../../_virtual/_tslib.js';
3
3
  import { useMemo } from 'react';
4
4
  import { getChainInfo, isBitcoinConnector } from '@dynamic-labs/wallet-connector-core';
5
- import { WalletAddressType } from '@dynamic-labs/sdk-api-core';
5
+ import { WalletAddressType, ProviderEnum } from '@dynamic-labs/sdk-api-core';
6
6
  import { getWalletAdditionalAddressByType } from '../../../utils/functions/getWalletAdditionalAddressByType/getWalletAdditionalAddressByType.js';
7
7
  import { usePromise } from '../../../utils/hooks/usePromise/usePromise.js';
8
8
  import { getOnrampProviders } from '../../../data/api/onramp/onramp.js';
9
+ import { getEnabledNonTestnetNetworks } from '../../../utils/functions/onrampProviders/coinbase.js';
9
10
 
10
11
  const useEnabledOnrampProviders = ({ primaryWallet, network, environmentId, projectSettingsOnramps, target, }) => {
11
12
  var _a;
@@ -16,6 +17,10 @@ const useEnabledOnrampProviders = ({ primaryWallet, network, environmentId, proj
16
17
  isBitcoinConnector(primaryWallet.connector) &&
17
18
  getWalletAdditionalAddressByType(WalletAddressType.Payment, primaryWallet);
18
19
  const chainHasNetwork = network && chainName === 'evm';
20
+ const nonTestnetNetworks = primaryWallet
21
+ ? getEnabledNonTestnetNetworks(primaryWallet)
22
+ : [];
23
+ const hasNonTestnetNetworks = nonTestnetNetworks.length > 0;
19
24
  const { data: onrampProviders } = usePromise(() => __awaiter(void 0, void 0, void 0, function* () {
20
25
  if (!chainName || !(primaryWallet === null || primaryWallet === void 0 ? void 0 : primaryWallet.address))
21
26
  return [];
@@ -38,7 +43,19 @@ const useEnabledOnrampProviders = ({ primaryWallet, network, environmentId, proj
38
43
  enabled: Boolean(projectSettingsOnramps === null || projectSettingsOnramps === void 0 ? void 0 : projectSettingsOnramps.length),
39
44
  initialData: [],
40
45
  });
41
- return useMemo(() => onrampProviders.filter((p) => projectSettingsOnramps === null || projectSettingsOnramps === void 0 ? void 0 : projectSettingsOnramps.includes(p.provider)), [onrampProviders, projectSettingsOnramps]);
46
+ return useMemo(() => {
47
+ const filteredProviders = onrampProviders
48
+ .filter((p) => projectSettingsOnramps === null || projectSettingsOnramps === void 0 ? void 0 : projectSettingsOnramps.includes(p.provider))
49
+ .filter((p) => {
50
+ // Only apply network filtering to Coinbase
51
+ if (p.provider === ProviderEnum.CoinbaseOnramp) {
52
+ return hasNonTestnetNetworks;
53
+ }
54
+ // Always show other providers (like Banxa)
55
+ return true;
56
+ });
57
+ return filteredProviders;
58
+ }, [onrampProviders, projectSettingsOnramps, hasNonTestnetNetworks]);
42
59
  };
43
60
 
44
61
  export { useEnabledOnrampProviders };
@@ -112,7 +112,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
112
112
  setSocialProvider(socialSignInProvider);
113
113
  clearStackAndPush('social-redirect-view');
114
114
  // Only open the auth flow when the embedded widget is not rendered
115
- if (!isRenderingEmbeddedAuthFlow) {
115
+ if (!isRenderingEmbeddedAuthFlow.current) {
116
116
  setShowAuthFlow(true);
117
117
  }
118
118
  }, [
@@ -121,10 +121,6 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
121
121
  isRenderingEmbeddedAuthFlow,
122
122
  setShowAuthFlow,
123
123
  ]);
124
- const updateInterfaceStateForLink = React.useCallback(() => {
125
- setDynamicWidgetView('profile');
126
- setShowDynamicUserProfile(true);
127
- }, [setDynamicWidgetView, setShowDynamicUserProfile]);
128
124
  useEffectOnce.useEffectOnce(() => {
129
125
  // Do not run on server side
130
126
  if (isSSR.isSSR())
@@ -161,7 +157,11 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
161
157
  logger.logger.error(new utils.DynamicError('User not logged in'));
162
158
  return;
163
159
  }
164
- updateInterfaceStateForLink();
160
+ // Link was called from the widget, so show the profile on redirect
161
+ if (socialStorageItem.showWidgetAfterConnection) {
162
+ setDynamicWidgetView('profile');
163
+ setShowDynamicUserProfile(true);
164
+ }
165
165
  }
166
166
  yield completeConnection({
167
167
  authCode: socialStorageItem.code,
@@ -108,7 +108,7 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
108
108
  setSocialProvider(socialSignInProvider);
109
109
  clearStackAndPush('social-redirect-view');
110
110
  // Only open the auth flow when the embedded widget is not rendered
111
- if (!isRenderingEmbeddedAuthFlow) {
111
+ if (!isRenderingEmbeddedAuthFlow.current) {
112
112
  setShowAuthFlow(true);
113
113
  }
114
114
  }, [
@@ -117,10 +117,6 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
117
117
  isRenderingEmbeddedAuthFlow,
118
118
  setShowAuthFlow,
119
119
  ]);
120
- const updateInterfaceStateForLink = useCallback(() => {
121
- setDynamicWidgetView('profile');
122
- setShowDynamicUserProfile(true);
123
- }, [setDynamicWidgetView, setShowDynamicUserProfile]);
124
120
  useEffectOnce(() => {
125
121
  // Do not run on server side
126
122
  if (isSSR())
@@ -157,7 +153,11 @@ const useRedirectSocialHandler = ({ setSocialProvider, }) => {
157
153
  logger.error(new DynamicError('User not logged in'));
158
154
  return;
159
155
  }
160
- updateInterfaceStateForLink();
156
+ // Link was called from the widget, so show the profile on redirect
157
+ if (socialStorageItem.showWidgetAfterConnection) {
158
+ setDynamicWidgetView('profile');
159
+ setShowDynamicUserProfile(true);
160
+ }
161
161
  }
162
162
  yield completeConnection({
163
163
  authCode: socialStorageItem.code,
@@ -8,7 +8,7 @@ var compareChains = require('../compareChains/compareChains.cjs');
8
8
 
9
9
  const findWalletOptionFor = (account, walletOptions) => {
10
10
  const { walletName } = account;
11
- if (walletName === 'turnkeyhd') {
11
+ if (walletName === 'turnkeyhd' || walletName === 'dynamicwaas') {
12
12
  const chain = account.chain
13
13
  ? values.VerifiedCredentialNameToChainEnum[account.chain]
14
14
  : undefined;
@@ -4,7 +4,7 @@ import { compareChains } from '../compareChains/compareChains.js';
4
4
 
5
5
  const findWalletOptionFor = (account, walletOptions) => {
6
6
  const { walletName } = account;
7
- if (walletName === 'turnkeyhd') {
7
+ if (walletName === 'turnkeyhd' || walletName === 'dynamicwaas') {
8
8
  const chain = account.chain
9
9
  ? VerifiedCredentialNameToChainEnum[account.chain]
10
10
  : undefined;