@dynamic-labs/sdk-react-core 4.60.0 → 4.61.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 (64) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/package.cjs +4 -4
  3. package/package.js +4 -4
  4. package/package.json +15 -15
  5. package/src/index.cjs +4 -4
  6. package/src/index.d.ts +1 -1
  7. package/src/index.js +2 -2
  8. package/src/lib/layout/DynamicAuthLayout/Header/header.cjs +2 -1
  9. package/src/lib/layout/DynamicAuthLayout/Header/header.js +2 -1
  10. package/src/lib/shared/assets/error-circle-x.cjs +54 -0
  11. package/src/lib/shared/assets/error-circle-x.js +30 -0
  12. package/src/lib/shared/assets/index.d.ts +1 -0
  13. package/src/lib/shared/types/dynamicHandlers.d.ts +64 -0
  14. package/src/lib/shared/utils/functions/chain/getChainIcon.cjs +1 -0
  15. package/src/lib/shared/utils/functions/chain/getChainIcon.js +2 -1
  16. package/src/lib/styles/index.shadow.cjs +1 -1
  17. package/src/lib/styles/index.shadow.js +1 -1
  18. package/src/lib/utils/hooks/index.d.ts +3 -1
  19. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs +18 -16
  20. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.d.ts +4 -8
  21. package/src/lib/utils/hooks/useDynamicWaas/useDynamicWaas.js +18 -16
  22. package/src/lib/utils/hooks/useGetWalletPassword/index.d.ts +2 -0
  23. package/src/lib/utils/hooks/useGetWalletPassword/useGetWalletPassword.cjs +130 -0
  24. package/src/lib/utils/hooks/useGetWalletPassword/useGetWalletPassword.d.ts +6 -0
  25. package/src/lib/utils/hooks/useGetWalletPassword/useGetWalletPassword.js +126 -0
  26. package/src/lib/utils/hooks/useSetWalletConnectorFetchers/useSetWalletConnectorFetchers.cjs +7 -2
  27. package/src/lib/utils/hooks/useSetWalletConnectorFetchers/useSetWalletConnectorFetchers.js +7 -2
  28. package/src/lib/utils/hooks/useSetupPassword/useSetupPassword.cjs +87 -0
  29. package/src/lib/utils/hooks/useSetupPassword/useSetupPassword.d.ts +3 -0
  30. package/src/lib/utils/hooks/useSetupPassword/useSetupPassword.js +88 -1
  31. package/src/lib/utils/hooks/useSmartWallets/useSmartWallets.cjs +1 -1
  32. package/src/lib/utils/hooks/useSmartWallets/useSmartWallets.js +1 -1
  33. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.cjs +1 -1
  34. package/src/lib/utils/hooks/useSyncDynamicWaas/useSyncDynamicWaas.js +1 -1
  35. package/src/lib/utils/hooks/useUserAuth/useUserAuth.cjs +12 -4
  36. package/src/lib/utils/hooks/useUserAuth/useUserAuth.js +12 -4
  37. package/src/lib/utils/hooks/useWalletBackup/useWalletBackup.cjs +1 -1
  38. package/src/lib/utils/hooks/useWalletBackup/useWalletBackup.js +1 -1
  39. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.cjs +1 -1
  40. package/src/lib/utils/hooks/useWalletDelegation/useWalletDelegation.js +1 -1
  41. package/src/lib/utils/hooks/useWalletPassword/index.d.ts +1 -0
  42. package/src/lib/utils/hooks/useWalletPassword/useWalletPassword.cjs +152 -0
  43. package/src/lib/utils/hooks/useWalletPassword/useWalletPassword.d.ts +30 -0
  44. package/src/lib/utils/hooks/useWalletPassword/useWalletPassword.js +148 -0
  45. package/src/lib/views/UnlockWalletView/UnlockWalletView.cjs +32 -1
  46. package/src/lib/views/UnlockWalletView/UnlockWalletView.js +32 -1
  47. package/src/lib/widgets/DynamicWidget/components/DynamicWidgetViews/mapViewToComponent.cjs +2 -2
  48. package/src/lib/widgets/DynamicWidget/components/DynamicWidgetViews/mapViewToComponent.js +2 -2
  49. package/src/lib/widgets/DynamicWidget/views/AccountAndSecuritySettingsView/MfaSection/MfaSection.cjs +11 -14
  50. package/src/lib/widgets/DynamicWidget/views/AccountAndSecuritySettingsView/MfaSection/MfaSection.js +11 -14
  51. package/src/lib/widgets/DynamicWidget/views/EnterPasswordView/EnterPasswordView.cjs +15 -5
  52. package/src/lib/widgets/DynamicWidget/views/EnterPasswordView/EnterPasswordView.js +15 -5
  53. package/src/lib/widgets/DynamicWidget/views/SetupPasswordKnowledgeCheckView/SetupPasswordKnowledgeCheckView.cjs +7 -15
  54. package/src/lib/widgets/DynamicWidget/views/SetupPasswordKnowledgeCheckView/SetupPasswordKnowledgeCheckView.d.ts +0 -1
  55. package/src/lib/widgets/DynamicWidget/views/SetupPasswordKnowledgeCheckView/SetupPasswordKnowledgeCheckView.js +7 -15
  56. package/src/lib/widgets/DynamicWidget/views/SetupPasswordTermsView/SetupPasswordTermsView.cjs +9 -2
  57. package/src/lib/widgets/DynamicWidget/views/SetupPasswordTermsView/SetupPasswordTermsView.d.ts +1 -1
  58. package/src/lib/widgets/DynamicWidget/views/SetupPasswordTermsView/SetupPasswordTermsView.js +9 -2
  59. package/src/lib/widgets/DynamicWidget/views/SetupPasswordView/SetupPasswordView.cjs +13 -8
  60. package/src/lib/widgets/DynamicWidget/views/SetupPasswordView/SetupPasswordView.js +13 -8
  61. package/src/lib/utils/hooks/useGetPasswordForSigning/index.d.ts +0 -2
  62. package/src/lib/utils/hooks/useGetPasswordForSigning/useGetPasswordForSigning.cjs +0 -16
  63. package/src/lib/utils/hooks/useGetPasswordForSigning/useGetPasswordForSigning.d.ts +0 -5
  64. package/src/lib/utils/hooks/useGetPasswordForSigning/useGetPasswordForSigning.js +0 -12
package/CHANGELOG.md CHANGED
@@ -1,4 +1,34 @@
1
1
 
2
+ ## [4.61.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.60.1...v4.61.0) (2026-02-10)
3
+
4
+
5
+ ### Features
6
+
7
+ * add unlockWallet and getWalletRecoveryState to WaaS ([#10407](https://github.com/dynamic-labs/dynamic-auth/issues/10407)) ([e0d1a28](https://github.com/dynamic-labs/dynamic-auth/commit/e0d1a2830f36eee6c6e84737011e8cf59966122d))
8
+ * add useWalletPassword hook for waas wallet password management ([#10399](https://github.com/dynamic-labs/dynamic-auth/issues/10399)) ([508835f](https://github.com/dynamic-labs/dynamic-auth/commit/508835fb0f4f17b7353a4378f4c254e02f0a46ff))
9
+ * add WaaS unlock and recovery UI to mobile demo ([#10408](https://github.com/dynamic-labs/dynamic-auth/issues/10408)) ([94cdb88](https://github.com/dynamic-labs/dynamic-auth/commit/94cdb882fca3c34d157b42d5208f56812008c43b))
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * bump axios to fix high vulnerability ([#10406](https://github.com/dynamic-labs/dynamic-auth/issues/10406)) ([303e2dc](https://github.com/dynamic-labs/dynamic-auth/commit/303e2dcf1e7e8ecad4caf2d74e805ee427c1d00e))
15
+ * patch node-forge CVE-2025-12816 in global-wallet ([#10401](https://github.com/dynamic-labs/dynamic-auth/issues/10401)) ([46e6eb2](https://github.com/dynamic-labs/dynamic-auth/commit/46e6eb28a0add0052299eaa4ac2dcbe8b1faa98c))
16
+
17
+ ### [4.60.1](https://github.com/dynamic-labs/dynamic-auth/compare/v4.60.0...v4.60.1) (2026-02-09)
18
+
19
+
20
+ ### Features
21
+
22
+ * add WAAS password handlers to DynamicContextProvider settings ([#10360](https://github.com/dynamic-labs/dynamic-auth/issues/10360)) ([5fc3fa7](https://github.com/dynamic-labs/dynamic-auth/commit/5fc3fa7148c53b64d36672be2d1ae629cb9cdaf8))
23
+ * improve password handling and UI for wallet protection ([#10386](https://github.com/dynamic-labs/dynamic-auth/issues/10386)) ([d27936e](https://github.com/dynamic-labs/dynamic-auth/commit/d27936e5bea37facceefccc0f2507d25a775ad33))
24
+ * pass authToken to wallet recovery operations ([#10379](https://github.com/dynamic-labs/dynamic-auth/issues/10379)) ([294efc7](https://github.com/dynamic-labs/dynamic-auth/commit/294efc7ab5816f63b7e5cc49a150cf9d34d300af))
25
+
26
+
27
+ ### Bug Fixes
28
+
29
+ * override fast-xml-parser to 5.3.4 for CVE-2026-25128 ([#10381](https://github.com/dynamic-labs/dynamic-auth/issues/10381)) ([7fb4c22](https://github.com/dynamic-labs/dynamic-auth/commit/7fb4c221252b84bf38bbdab0b37b8f9a981ebe1a))
30
+ * unlock wallet view error handling and password error UI ([#10388](https://github.com/dynamic-labs/dynamic-auth/issues/10388)) ([5ffc8e1](https://github.com/dynamic-labs/dynamic-auth/commit/5ffc8e1e6dd0d7f32bb94c37ce3674be949f010b))
31
+
2
32
  ## [4.60.0](https://github.com/dynamic-labs/dynamic-auth/compare/v4.59.2...v4.60.0) (2026-02-05)
3
33
 
4
34
 
package/package.cjs CHANGED
@@ -3,11 +3,11 @@
3
3
 
4
4
  Object.defineProperty(exports, '__esModule', { value: true });
5
5
 
6
- var version = "4.60.0";
6
+ var version = "4.61.0";
7
7
  var dependencies = {
8
- "@dynamic-labs/sdk-api-core": "0.0.860",
9
- "@dynamic-labs-sdk/client": "0.4.0",
10
- "@dynamic-labs-wallet/browser-wallet-client": "0.0.259",
8
+ "@dynamic-labs/sdk-api-core": "0.0.864",
9
+ "@dynamic-labs-sdk/client": "0.8.0",
10
+ "@dynamic-labs-wallet/browser-wallet-client": "0.0.260",
11
11
  "@hcaptcha/react-hcaptcha": "1.4.4",
12
12
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
13
13
  "country-list": "2.3.0",
package/package.js CHANGED
@@ -1,9 +1,9 @@
1
1
  'use client'
2
- var version = "4.60.0";
2
+ var version = "4.61.0";
3
3
  var dependencies = {
4
- "@dynamic-labs/sdk-api-core": "0.0.860",
5
- "@dynamic-labs-sdk/client": "0.4.0",
6
- "@dynamic-labs-wallet/browser-wallet-client": "0.0.259",
4
+ "@dynamic-labs/sdk-api-core": "0.0.864",
5
+ "@dynamic-labs-sdk/client": "0.8.0",
6
+ "@dynamic-labs-wallet/browser-wallet-client": "0.0.260",
7
7
  "@hcaptcha/react-hcaptcha": "1.4.4",
8
8
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
9
9
  "country-list": "2.3.0",
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@dynamic-labs/sdk-react-core",
3
- "version": "4.60.0",
3
+ "version": "4.61.0",
4
4
  "dependencies": {
5
- "@dynamic-labs/sdk-api-core": "0.0.860",
6
- "@dynamic-labs-sdk/client": "0.4.0",
7
- "@dynamic-labs-wallet/browser-wallet-client": "0.0.259",
5
+ "@dynamic-labs/sdk-api-core": "0.0.864",
6
+ "@dynamic-labs-sdk/client": "0.8.0",
7
+ "@dynamic-labs-wallet/browser-wallet-client": "0.0.260",
8
8
  "@hcaptcha/react-hcaptcha": "1.4.4",
9
9
  "@thumbmarkjs/thumbmarkjs": "0.16.0",
10
10
  "country-list": "2.3.0",
@@ -16,17 +16,17 @@
16
16
  "yup": "0.32.11",
17
17
  "react-international-phone": "4.5.0",
18
18
  "bs58": "5.0.0",
19
- "@dynamic-labs/assert-package-version": "4.60.0",
20
- "@dynamic-labs/iconic": "4.60.0",
21
- "@dynamic-labs/locale": "4.60.0",
22
- "@dynamic-labs/logger": "4.60.0",
23
- "@dynamic-labs/multi-wallet": "4.60.0",
24
- "@dynamic-labs/rpc-providers": "4.60.0",
25
- "@dynamic-labs/store": "4.60.0",
26
- "@dynamic-labs/types": "4.60.0",
27
- "@dynamic-labs/utils": "4.60.0",
28
- "@dynamic-labs/wallet-book": "4.60.0",
29
- "@dynamic-labs/wallet-connector-core": "4.60.0",
19
+ "@dynamic-labs/assert-package-version": "4.61.0",
20
+ "@dynamic-labs/iconic": "4.61.0",
21
+ "@dynamic-labs/locale": "4.61.0",
22
+ "@dynamic-labs/logger": "4.61.0",
23
+ "@dynamic-labs/multi-wallet": "4.61.0",
24
+ "@dynamic-labs/rpc-providers": "4.61.0",
25
+ "@dynamic-labs/store": "4.61.0",
26
+ "@dynamic-labs/types": "4.61.0",
27
+ "@dynamic-labs/utils": "4.61.0",
28
+ "@dynamic-labs/wallet-book": "4.61.0",
29
+ "@dynamic-labs/wallet-connector-core": "4.61.0",
30
30
  "eventemitter3": "5.0.1"
31
31
  },
32
32
  "devDependencies": {
package/src/index.cjs CHANGED
@@ -155,9 +155,9 @@ var PendingSignatureView = require('./lib/views/PendingSignatureView/PendingSign
155
155
  var QrCodeView = require('./lib/views/QrCodeView/QrCodeView.cjs');
156
156
  var WalletList = require('./lib/views/WalletList/WalletList.cjs');
157
157
  var NetworkNotSupportedSwitchManual = require('./lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.cjs');
158
+ var useDynamicWaas = require('./lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs');
158
159
  var viewToComponentMap = require('./lib/views/viewToComponentMap.cjs');
159
160
  require('./lib/store/state/connectorsInitializing/connectorsInitializing.cjs');
160
- var useDynamicWaas = require('./lib/utils/hooks/useDynamicWaas/useDynamicWaas.cjs');
161
161
  var useGetMfaToken = require('./lib/utils/hooks/useGetMfaToken/useGetMfaToken.cjs');
162
162
  var useDynamicModals = require('./lib/utils/hooks/useDynamicModals/useDynamicModals.cjs');
163
163
  var useMfa = require('./lib/utils/hooks/useMfa/useMfa.cjs');
@@ -184,7 +184,7 @@ var usePromptMfaAuth = require('./lib/utils/hooks/usePromptMfaAuth/usePromptMfaA
184
184
  var useUpgradeToDynamicWaasFlow = require('./lib/utils/hooks/useUpgradeToDynamicWaasFlow/useUpgradeToDynamicWaasFlow.cjs');
185
185
  var useIsMfaRequiredForAction = require('./lib/utils/hooks/useIsMfaRequiredForAction/useIsMfaRequiredForAction.cjs');
186
186
  var useRefreshAuth = require('./lib/utils/hooks/useRefreshAuth/useRefreshAuth.cjs');
187
- var useGetPasswordForSigning = require('./lib/utils/hooks/useGetPasswordForSigning/useGetPasswordForSigning.cjs');
187
+ var useGetWalletPassword = require('./lib/utils/hooks/useGetWalletPassword/useGetWalletPassword.cjs');
188
188
  var DynamicConnectButton = require('./lib/components/DynamicConnectButton/DynamicConnectButton.cjs');
189
189
  require('./lib/components/InlineWidget/InlineWidget.cjs');
190
190
  var IsBrowser = require('./lib/components/IsBrowser/IsBrowser.cjs');
@@ -315,8 +315,8 @@ exports.PendingSignatureView = PendingSignatureView.PendingSignatureView;
315
315
  exports.QrCodeView = QrCodeView.QrCodeView;
316
316
  exports.WalletList = WalletList.WalletList;
317
317
  exports.NetworkNotSupportedSwitchManual = NetworkNotSupportedSwitchManual.NetworkNotSupportedSwitchManual;
318
- exports.viewToComponentMap = viewToComponentMap.viewToComponentMap;
319
318
  exports.useDynamicWaas = useDynamicWaas.useDynamicWaas;
319
+ exports.viewToComponentMap = viewToComponentMap.viewToComponentMap;
320
320
  exports.useGetMfaToken = useGetMfaToken.useGetMfaToken;
321
321
  exports.useDynamicModals = useDynamicModals.useDynamicModals;
322
322
  exports.useMfa = useMfa.useMfa;
@@ -346,7 +346,7 @@ exports.usePromptMfaAuth = usePromptMfaAuth.usePromptMfaAuth;
346
346
  exports.useUpgradeToDynamicWaasFlow = useUpgradeToDynamicWaasFlow.useUpgradeToDynamicWaasFlow;
347
347
  exports.useIsMfaRequiredForAction = useIsMfaRequiredForAction.useIsMfaRequiredForAction;
348
348
  exports.useRefreshAuth = useRefreshAuth.useRefreshAuth;
349
- exports.useGetPasswordForSigning = useGetPasswordForSigning.useGetPasswordForSigning;
349
+ exports.useGetWalletPassword = useGetWalletPassword.useGetWalletPassword;
350
350
  exports.DynamicConnectButton = DynamicConnectButton.DynamicConnectButton;
351
351
  exports.IsBrowser = IsBrowser.IsBrowser;
352
352
  exports.DynamicBridgeWidget = DynamicBridgeWidget.DynamicBridgeWidget;
package/src/index.d.ts CHANGED
@@ -123,7 +123,7 @@ export { FilterAndSortWallets, FilterBridgeChainsName, FilterChain, FilterWallet
123
123
  export {
124
124
  /** @deprecated */
125
125
  DynamicWidgetContextProvider, } from './lib/widgets/DynamicWidget/context';
126
- export { useWalletItemActions, useAuthenticateConnectedUser, useSocialAccounts, useEmbeddedWallet, useEmbeddedWalletAuthenticator, usePasskeyRecovery, useEmbeddedReveal, useIsLoggedIn, useDynamicModals, useMfa, useTokenBalances, useMultichainTokenBalances, useSwitchWallet, useRpcProviders, useRefreshUser, useRefreshAuth, useWalletOptions, useSmartWallets, EmbeddedWalletVersion, useTelegramLogin, useUpgradeEmbeddedWallet, useEVMTransactionSimulation, useSVMTransactionSimulation, useDeleteUserAccount, useDynamicWaas, useGetPasskeys, useDeletePasskey, useRegisterPasskey, useAuthenticatePasskeyMFA, useGetUserMfaMethods, usePromptMfaAuth, useUpgradeToDynamicWaasFlow, useGetMfaToken, useGetPasswordForSigning, useIsMfaRequiredForAction, useWalletDelegation, useWalletBackup, useBackupWallets, isWalletBackedUp, CloudBackupProvider, useExchangeAccounts, } from './lib/utils/hooks';
126
+ export { useWalletItemActions, useAuthenticateConnectedUser, useSocialAccounts, useEmbeddedWallet, useEmbeddedWalletAuthenticator, usePasskeyRecovery, useEmbeddedReveal, useIsLoggedIn, useDynamicModals, useMfa, useTokenBalances, useMultichainTokenBalances, useSwitchWallet, useRpcProviders, useRefreshUser, useRefreshAuth, useWalletOptions, useSmartWallets, EmbeddedWalletVersion, useTelegramLogin, useUpgradeEmbeddedWallet, useEVMTransactionSimulation, useSVMTransactionSimulation, useDeleteUserAccount, useDynamicWaas, useGetPasskeys, useDeletePasskey, useRegisterPasskey, useAuthenticatePasskeyMFA, useGetUserMfaMethods, usePromptMfaAuth, useUpgradeToDynamicWaasFlow, useGetMfaToken, useGetWalletPassword, useIsMfaRequiredForAction, useWalletDelegation, useWalletBackup, useBackupWallets, isWalletBackedUp, CloudBackupProvider, useExchangeAccounts, } from './lib/utils/hooks';
127
127
  export {
128
128
  /** @deprecated use useOnramp instead */
129
129
  useFunding, } from './lib/utils/hooks/useFunding';
package/src/index.js CHANGED
@@ -151,9 +151,9 @@ export { PendingSignatureView } from './lib/views/PendingSignatureView/PendingSi
151
151
  export { QrCodeView } from './lib/views/QrCodeView/QrCodeView.js';
152
152
  export { WalletList } from './lib/views/WalletList/WalletList.js';
153
153
  export { NetworkNotSupportedSwitchManual } from './lib/views/NetworkNotSupportedSwitchManual/NetworkNotSupportedSwitchManual.js';
154
+ export { useDynamicWaas } from './lib/utils/hooks/useDynamicWaas/useDynamicWaas.js';
154
155
  export { viewToComponentMap } from './lib/views/viewToComponentMap.js';
155
156
  import './lib/store/state/connectorsInitializing/connectorsInitializing.js';
156
- export { useDynamicWaas } from './lib/utils/hooks/useDynamicWaas/useDynamicWaas.js';
157
157
  export { useGetMfaToken } from './lib/utils/hooks/useGetMfaToken/useGetMfaToken.js';
158
158
  export { useDynamicModals } from './lib/utils/hooks/useDynamicModals/useDynamicModals.js';
159
159
  export { useMfa } from './lib/utils/hooks/useMfa/useMfa.js';
@@ -180,7 +180,7 @@ export { usePromptMfaAuth } from './lib/utils/hooks/usePromptMfaAuth/usePromptMf
180
180
  export { useUpgradeToDynamicWaasFlow } from './lib/utils/hooks/useUpgradeToDynamicWaasFlow/useUpgradeToDynamicWaasFlow.js';
181
181
  export { useIsMfaRequiredForAction } from './lib/utils/hooks/useIsMfaRequiredForAction/useIsMfaRequiredForAction.js';
182
182
  export { useRefreshAuth } from './lib/utils/hooks/useRefreshAuth/useRefreshAuth.js';
183
- export { useGetPasswordForSigning } from './lib/utils/hooks/useGetPasswordForSigning/useGetPasswordForSigning.js';
183
+ export { useGetWalletPassword } from './lib/utils/hooks/useGetWalletPassword/useGetWalletPassword.js';
184
184
  export { DynamicConnectButton } from './lib/components/DynamicConnectButton/DynamicConnectButton.js';
185
185
  import './lib/components/InlineWidget/InlineWidget.js';
186
186
  export { IsBrowser } from './lib/components/IsBrowser/IsBrowser.js';
@@ -130,7 +130,8 @@ const Header = ({ onClose: handleClose, heading, projectSettings, copykey, descr
130
130
  const closeButton = showCloseButton && handleClose && (jsxRuntime.jsx(IconButton.IconButton, { onClick: handleClose, type: 'button', id: 'close-button', "data-testid": 'close-button', className: 'layout-header__icon', children: jsxRuntime.jsx(close.ReactComponent, {}) }));
131
131
  const infoButton = showHelpContent && (jsxRuntime.jsx(Tooltip.Tooltip, { content: 'Need some help?', className: 'layout-header__tooltip', children: jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: () => setIsFooterExpanded(!isFooterExpanded), "data-testid": 'info-button', className: 'layout-header__icon', children: isWalletListTypeView ? jsxRuntime.jsx(questionMark.ReactComponent, {}) : jsxRuntime.jsx(footerInfoIcon.ReactComponent, {}) }) }, 'info-button'));
132
132
  const leadingButtons = [];
133
- if (canGoBack) {
133
+ const showBackButton = canGoBack && view.type !== 'unlock-wallet';
134
+ if (showBackButton) {
134
135
  leadingButtons.push(jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: handleBackClick, "data-testid": 'back-button', className: 'layout-header__icon', children: jsxRuntime.jsx(arrowLeft.ReactComponent, {}) }, 'back-button'));
135
136
  }
136
137
  // if has close button and info button, info button should be on the right
@@ -126,7 +126,8 @@ const Header = ({ onClose: handleClose, heading, projectSettings, copykey, descr
126
126
  const closeButton = showCloseButton && handleClose && (jsx(IconButton, { onClick: handleClose, type: 'button', id: 'close-button', "data-testid": 'close-button', className: 'layout-header__icon', children: jsx(SvgClose, {}) }));
127
127
  const infoButton = showHelpContent && (jsx(Tooltip, { content: 'Need some help?', className: 'layout-header__tooltip', children: jsx(IconButton, { type: 'button', onClick: () => setIsFooterExpanded(!isFooterExpanded), "data-testid": 'info-button', className: 'layout-header__icon', children: isWalletListTypeView ? jsx(SvgQuestionMark, {}) : jsx(SvgFooterInfoIcon, {}) }) }, 'info-button'));
128
128
  const leadingButtons = [];
129
- if (canGoBack) {
129
+ const showBackButton = canGoBack && view.type !== 'unlock-wallet';
130
+ if (showBackButton) {
130
131
  leadingButtons.push(jsx(IconButton, { type: 'button', onClick: handleBackClick, "data-testid": 'back-button', className: 'layout-header__icon', children: jsx(SvgArrowLeft, {}) }, 'back-button'));
131
132
  }
132
133
  // if has close button and info button, info button should be on the right
@@ -0,0 +1,54 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var React = require('react');
7
+
8
+ function _interopNamespace(e) {
9
+ if (e && e.__esModule) return e;
10
+ var n = Object.create(null);
11
+ if (e) {
12
+ Object.keys(e).forEach(function (k) {
13
+ if (k !== 'default') {
14
+ var d = Object.getOwnPropertyDescriptor(e, k);
15
+ Object.defineProperty(n, k, d.get ? d : {
16
+ enumerable: true,
17
+ get: function () { return e[k]; }
18
+ });
19
+ }
20
+ });
21
+ }
22
+ n["default"] = e;
23
+ return Object.freeze(n);
24
+ }
25
+
26
+ var React__namespace = /*#__PURE__*/_interopNamespace(React);
27
+
28
+ var _path;
29
+ var _excluded = ["title", "titleId"];
30
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
31
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
32
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
33
+ var SvgErrorCircleX = function SvgErrorCircleX(_ref) {
34
+ var title = _ref.title,
35
+ titleId = _ref.titleId,
36
+ props = _objectWithoutProperties(_ref, _excluded);
37
+ return /*#__PURE__*/React__namespace.createElement("svg", _extends({
38
+ width: 17,
39
+ height: 17,
40
+ viewBox: "0 0 17 17",
41
+ fill: "none",
42
+ xmlns: "http://www.w3.org/2000/svg",
43
+ "aria-labelledby": titleId
44
+ }, props), title ? /*#__PURE__*/React__namespace.createElement("title", {
45
+ id: titleId
46
+ }, title) : null, _path || (_path = /*#__PURE__*/React__namespace.createElement("path", {
47
+ fillRule: "evenodd",
48
+ clipRule: "evenodd",
49
+ d: "M8.333 1.667a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333ZM0 8.333a8.333 8.333 0 1 1 16.667 0A8.333 8.333 0 0 1 0 8.333Zm6.077-2.256a.833.833 0 0 1 1.179 0l1.077 1.078 1.078-1.078a.833.833 0 0 1 1.178 1.179L9.512 8.333l1.077 1.078a.833.833 0 0 1-1.178 1.178L8.333 9.512l-1.077 1.077a.833.833 0 0 1-1.179-1.178l1.078-1.078-1.078-1.077a.833.833 0 0 1 0-1.179Z",
50
+ fill: "currentColor"
51
+ })));
52
+ };
53
+
54
+ exports.ReactComponent = SvgErrorCircleX;
@@ -0,0 +1,30 @@
1
+ 'use client'
2
+ import * as React from 'react';
3
+
4
+ var _path;
5
+ var _excluded = ["title", "titleId"];
6
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
7
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var s = Object.getOwnPropertySymbols(e); for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
8
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (e.includes(n)) continue; t[n] = r[n]; } return t; }
9
+ var SvgErrorCircleX = function SvgErrorCircleX(_ref) {
10
+ var title = _ref.title,
11
+ titleId = _ref.titleId,
12
+ props = _objectWithoutProperties(_ref, _excluded);
13
+ return /*#__PURE__*/React.createElement("svg", _extends({
14
+ width: 17,
15
+ height: 17,
16
+ viewBox: "0 0 17 17",
17
+ fill: "none",
18
+ xmlns: "http://www.w3.org/2000/svg",
19
+ "aria-labelledby": titleId
20
+ }, props), title ? /*#__PURE__*/React.createElement("title", {
21
+ id: titleId
22
+ }, title) : null, _path || (_path = /*#__PURE__*/React.createElement("path", {
23
+ fillRule: "evenodd",
24
+ clipRule: "evenodd",
25
+ d: "M8.333 1.667a6.667 6.667 0 1 0 0 13.333 6.667 6.667 0 0 0 0-13.333ZM0 8.333a8.333 8.333 0 1 1 16.667 0A8.333 8.333 0 0 1 0 8.333Zm6.077-2.256a.833.833 0 0 1 1.179 0l1.077 1.078 1.078-1.078a.833.833 0 0 1 1.178 1.179L9.512 8.333l1.077 1.078a.833.833 0 0 1-1.178 1.178L8.333 9.512l-1.077 1.077a.833.833 0 0 1-1.179-1.178l1.078-1.078-1.078-1.077a.833.833 0 0 1 0-1.179Z",
26
+ fill: "currentColor"
27
+ })));
28
+ };
29
+
30
+ export { SvgErrorCircleX as ReactComponent };
@@ -44,6 +44,7 @@ export { ReactComponent as DownloadIcon } from './download.svg';
44
44
  export { ReactComponent as DynamicLogoIcon } from './dynamic-logo.svg';
45
45
  export { ReactComponent as DynamicRoundLogoIcon } from './dynamic-round-logo.svg';
46
46
  export { ReactComponent as EmbeddedWalletIcon } from './embedded-wallet-icon.svg';
47
+ export { ReactComponent as ErrorCircleXIcon } from './error-circle-x.svg';
47
48
  export { ReactComponent as ErrorIcon } from './error.svg';
48
49
  export { ReactComponent as ExclamationCircleIcon } from './exclamation-circle.svg';
49
50
  export { ReactComponent as ExclamationIcon } from './exclamation.svg';
@@ -12,6 +12,44 @@ export type UserOnboardingFieldResponse = {
12
12
  value: string;
13
13
  isCustom: boolean;
14
14
  };
15
+ /**
16
+ * Custom password provider for WAAS embedded wallets.
17
+ *
18
+ * This function is called when operations require access to the encrypted user share.
19
+ * The password is used to decrypt the user's keyshare, which is needed for:
20
+ * - Signing transactions/messages
21
+ * - Exporting private keys
22
+ * - Wallet delegation
23
+ * - Re-sharing keyshares
24
+ * - Any operation requiring the decrypted user share
25
+ *
26
+ * If not provided, the default UI unlock wallet modal will be shown.
27
+ *
28
+ * @param accountAddress - The wallet address that needs unlocking
29
+ * @param chainName - The chain name (e.g., 'EVM', 'SOL', 'BTC')
30
+ * @returns The password string to decrypt the user share, or undefined to fail the operation
31
+ *
32
+ * Note: Only called when wallet is locked. If already unlocked, this handler is not invoked.
33
+ * Runtime calls to walletConnector.setGetWalletPasswordFunction() will override this handler.
34
+ */
35
+ export type GetWalletPasswordFn = (props: {
36
+ accountAddress: string;
37
+ chainName: string;
38
+ }) => Promise<string | undefined>;
39
+ /**
40
+ * Custom password setup function for WAAS embedded wallet creation.
41
+ *
42
+ * This function is called during wallet creation when passcodeRequired is enabled.
43
+ * The password provided will be used to encrypt the user's keyshare before backup.
44
+ * This is typically called during the auto-create process if "create on sign up" is enabled.
45
+ *
46
+ * If not provided, the default UI password setup modal will be shown.
47
+ *
48
+ * @returns The new password string to encrypt the user share, or undefined to create without password
49
+ *
50
+ * Note: Only called when passcodeRequired is true in project settings.
51
+ */
52
+ export type SetupWalletPasswordFn = () => Promise<string | undefined>;
15
53
  /**
16
54
  * Handlers supported by dynamic. They always return a promise
17
55
  */
@@ -20,4 +58,30 @@ export type DynamicHandlers = {
20
58
  user: UserProfile;
21
59
  }) => Promise<void>;
22
60
  handleConnectedWallet?: HandleConnectedWallet;
61
+ /**
62
+ * Custom password provider for WAAS embedded wallets.
63
+ *
64
+ * Called when operations require decrypting the user's keyshare for:
65
+ * - Signing transactions/messages
66
+ * - Exporting private keys
67
+ * - Wallet delegation
68
+ * - Re-sharing keyshares
69
+ *
70
+ * The password is used to decrypt the encrypted user share stored in backup.
71
+ *
72
+ * @param accountAddress - The wallet address that needs unlocking
73
+ * @param chainName - The chain name (e.g., 'EVM', 'SOL', 'BTC')
74
+ * @returns The password string, or undefined to fail the operation
75
+ */
76
+ getWalletPassword?: GetWalletPasswordFn;
77
+ /**
78
+ * Custom password setup function for WAAS embedded wallet creation.
79
+ *
80
+ * Called during wallet creation when passcodeRequired is enabled to encrypt
81
+ * the user's keyshare before backup. Typically invoked during auto-create
82
+ * process if "create on sign up" is enabled.
83
+ *
84
+ * @returns The new password string to encrypt the user share, or undefined to create without password
85
+ */
86
+ setupWalletPassword?: SetupWalletPasswordFn;
23
87
  };
@@ -21,6 +21,7 @@ const chainIconMap = {
21
21
  solana: iconic.SolanaIcon,
22
22
  spark: iconic.SparkIcon,
23
23
  starknet: iconic.StarknetIcon,
24
+ stellar: iconic.StellarIcon,
24
25
  sui: iconic.SuiIcon,
25
26
  ton: iconic.TonIcon,
26
27
  tron: iconic.TronIcon,
@@ -1,5 +1,5 @@
1
1
  'use client'
2
- import { AlgorandIcon, AptosIcon, BitcoinIcon, CosmosIcon, EclipseIcon, EthereumIcon, FlowIcon, SolanaIcon, SparkIcon, StarknetIcon, SuiIcon, TonIcon, TronIcon } from '@dynamic-labs/iconic';
2
+ import { AlgorandIcon, AptosIcon, BitcoinIcon, CosmosIcon, EclipseIcon, EthereumIcon, FlowIcon, SolanaIcon, SparkIcon, StarknetIcon, StellarIcon, SuiIcon, TonIcon, TronIcon } from '@dynamic-labs/iconic';
3
3
  import { getChainInfo } from '@dynamic-labs/wallet-connector-core';
4
4
  import 'react';
5
5
  import { ReactComponent as SvgError } from '../../../assets/error.js';
@@ -17,6 +17,7 @@ const chainIconMap = {
17
17
  solana: SolanaIcon,
18
18
  spark: SparkIcon,
19
19
  starknet: StarknetIcon,
20
+ stellar: StellarIcon,
20
21
  sui: SuiIcon,
21
22
  ton: TonIcon,
22
23
  tron: TronIcon,