@dynamic-labs/legacy-embedded-wallet-migration 5.6.0 → 5.7.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.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,25 @@
1
1
 
2
+ ## [5.7.0](https://github.com/dynamic-labs/dynamic-auth/compare/v5.6.1...v5.7.0) (2026-09-08)
3
+
4
+
5
+ ### Features
6
+
7
+ * **social:** add gemini social provider ([#12292](https://github.com/dynamic-labs/dynamic-auth/issues/12292)) ([fa72cb0](https://github.com/dynamic-labs/dynamic-auth/commit/fa72cb09f678506a5f34188eb7d62415bcb7073b))
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * **locale:** add missing dyn_upgrade_wallet.no_legacy_wallets and .close keys ([#12350](https://github.com/dynamic-labs/dynamic-auth/issues/12350)) ([50da3fa](https://github.com/dynamic-labs/dynamic-auth/commit/50da3fa3078de4ecbd88031a3e533a4ff6ced89b))
13
+ * **sdk-react-core:** expose SDK i18next instance for extension packages ([#12351](https://github.com/dynamic-labs/dynamic-auth/issues/12351)) ([f3d95b1](https://github.com/dynamic-labs/dynamic-auth/commit/f3d95b1bb1c30114d32d93dec4e9c2455ab4fdbb))
14
+ * **sdk-react-core:** publish ./icons and ./components subpath exports ([#12334](https://github.com/dynamic-labs/dynamic-auth/issues/12334)) ([519487c](https://github.com/dynamic-labs/dynamic-auth/commit/519487cf5f4f7abe895a125c5bf38800cae04bb5))
15
+
16
+ ### [5.6.1](https://github.com/dynamic-labs/dynamic-auth/compare/v5.6.0...v5.6.1) (2026-09-01)
17
+
18
+
19
+ ### Bug Fixes
20
+
21
+ * **sdk-react-core:** drop legacy-client dependency by moving SdkWebViewLoadState to types ([#12314](https://github.com/dynamic-labs/dynamic-auth/issues/12314)) ([8ae0110](https://github.com/dynamic-labs/dynamic-auth/commit/8ae011056604ec28de9daa5ab37c5ec2b6c378bb))
22
+
2
23
  ## [5.6.0](https://github.com/dynamic-labs/dynamic-auth/compare/v5.5.0...v5.6.0) (2026-09-01)
3
24
 
4
25
 
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "5.6.0";
2
+ var version = "5.7.0";
3
3
 
4
4
  export { version };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dynamic-labs/legacy-embedded-wallet-migration",
3
- "version": "5.6.0",
3
+ "version": "5.7.0",
4
4
  "license": "MIT",
5
5
  "main": "./src/index.js",
6
6
  "module": "./src/index.js",
@@ -17,15 +17,15 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@dynamic-labs-sdk/client": "1.31.0",
20
- "@dynamic-labs/assert-package-version": "5.6.0",
21
- "@dynamic-labs/sdk-api-core": "0.12.0",
22
- "@dynamic-labs/utils": "5.6.0",
23
- "@dynamic-labs/wallet-connector-core": "5.6.0"
20
+ "@dynamic-labs/assert-package-version": "5.7.0",
21
+ "@dynamic-labs/sdk-api-core": "0.32.0",
22
+ "@dynamic-labs/utils": "5.7.0",
23
+ "@dynamic-labs/wallet-connector-core": "5.7.0"
24
24
  },
25
25
  "peerDependencies": {
26
- "@dynamic-labs/sdk-react-core": "5.6.0",
26
+ "@dynamic-labs/sdk-react-core": "5.7.0",
27
27
  "react": ">=18.0.0 <20.0.0",
28
28
  "react-i18next": ">=13.0.0",
29
- "@dynamic-labs/types": "5.6.0"
29
+ "@dynamic-labs/types": "5.7.0"
30
30
  }
31
31
  }
@@ -1,6 +1,7 @@
1
1
  'use client'
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import { useTranslation } from 'react-i18next';
4
+ import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
4
5
  import { IconButton, ModalHeader, Typography, TypographyButton } from '@dynamic-labs/sdk-react-core/components';
5
6
  import { CloseIcon, SparklesIcon } from '@dynamic-labs/sdk-react-core/icons';
6
7
 
@@ -36,7 +37,8 @@ const messageStyle = {
36
37
  };
37
38
  const actionsStyle = { maxWidth: 340, width: '100%' };
38
39
  const AccountUpgradedView = ({ onFinish, }) => {
39
- const { t } = useTranslation();
40
+ const { i18nSDKInstance } = useDynamicContext();
41
+ const { t } = useTranslation('translation', { i18n: i18nSDKInstance });
40
42
  const closeButton = (jsx(IconButton, { onClick: onFinish, type: 'button', children: jsx(CloseIcon, {}) }));
41
43
  return (jsxs(Fragment, { children: [jsx(ModalHeader, { trailing: closeButton, displayBorder: true, children: jsx(Typography, { variant: 'title', color: 'primary', children: t('dyn_account_upgraded.title') }) }), jsxs("div", { style: containerStyle, children: [jsxs("div", { style: contentStyle, children: [jsx("div", { style: iconBackgroundStyle, children: jsx(SparklesIcon, { style: iconStyle }) }), jsx("div", { style: messageStyle, children: jsx(Typography, { variant: 'body_normal', color: 'primary', style: { textAlign: 'center' }, children: t('dyn_account_upgraded.message') }) })] }), jsx("div", { style: actionsStyle, children: jsx(TypographyButton, { onClick: onFinish, buttonVariant: 'brand-primary', expanded: true, buttonPadding: 'large', typographyProps: { color: 'white' }, dataTestId: 'account-upgraded-continue-button', children: t('dyn_account_upgraded.continue_button') }) })] })] }));
42
44
  };
@@ -1,6 +1,7 @@
1
1
  'use client'
2
2
  import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import { useTranslation } from 'react-i18next';
4
+ import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
4
5
  import { ModalHeader, Typography, TypographyButton } from '@dynamic-labs/sdk-react-core/components';
5
6
  import { UpgradeIcon } from '@dynamic-labs/sdk-react-core/icons';
6
7
 
@@ -54,7 +55,8 @@ const actionsStyle = {
54
55
  };
55
56
  const shortenAddress = (address) => `${address.slice(0, 6)}...${address.slice(-4)}`;
56
57
  const WaasUpgradeView = ({ wallets, onContinue, onCancel, isLoading = false, }) => {
57
- const { t } = useTranslation();
58
+ const { i18nSDKInstance } = useDynamicContext();
59
+ const { t } = useTranslation('translation', { i18n: i18nSDKInstance });
58
60
  const hasWallets = wallets.length > 0;
59
61
  return (jsxs("div", { style: containerStyle, children: [jsx(ModalHeader, { children: jsx(Typography, { as: 'h1', variant: 'title', color: 'primary', children: t('dyn_upgrade_wallet.title') }) }), jsxs("div", { style: contentStyle, children: [jsx("div", { style: illustrationStyle, children: jsx(UpgradeIcon, {}) }), jsx(Typography, { as: 'p', variant: 'body_normal', color: 'primary', style: descriptionStyle, children: t('dyn_upgrade_wallet.description') }), hasWallets ? (jsxs("div", { style: walletsSectionStyle, children: [jsx(Typography, { color: 'primary', children: t('dyn_upgrade_wallet.eligible_wallets') }), jsx("div", { style: walletsListStyle, "data-testid": 'waas-upgrade-view-wallets-list', children: wallets.map((wallet) => (jsxs("div", { style: walletItemStyle, "data-testid": 'waas-upgrade-view-wallet-item', children: [jsx(Typography, { color: 'primary', children: wallet.chain }), jsx(Typography, { color: 'primary', children: shortenAddress(wallet.address) })] }, wallet.id))) })] })) : (jsx(Typography, { color: 'secondary', style: descriptionStyle, copykey: 'dyn_upgrade_wallet.no_legacy_wallets', "data-testid": 'waas-upgrade-view-no-legacy-wallets', children: t('dyn_upgrade_wallet.no_legacy_wallets') })), jsx("div", { style: actionsStyle, children: hasWallets ? (jsx(TypographyButton, { buttonVariant: 'brand-primary', onClick: onContinue, disabled: isLoading, loading: isLoading, copykey: 'dyn_upgrade_wallet.upgrade', typographyProps: { color: 'inherit' }, dataTestId: 'waas-upgrade-view-continue-button', children: t('dyn_upgrade_wallet.upgrade') })) : (jsx(TypographyButton, { buttonVariant: 'tertiary', onClick: onCancel, dataTestId: 'waas-upgrade-view-close-button', children: t('dyn_upgrade_wallet.close') })) })] })] }));
60
62
  };
@@ -3,6 +3,7 @@ import { __awaiter } from '../../../../_virtual/_tslib.js';
3
3
  import { jsxs, jsx } from 'react/jsx-runtime';
4
4
  import { useState } from 'react';
5
5
  import { useTranslation } from 'react-i18next';
6
+ import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
6
7
  import { ModalHeader, Typography, ErrorContainer, Textarea, TypographyButton } from '@dynamic-labs/sdk-react-core/components';
7
8
  import { LegacyEmbeddedWalletExport } from '../LegacyEmbeddedWalletExport/LegacyEmbeddedWalletExport.js';
8
9
 
@@ -70,7 +71,8 @@ const getStepIndicatorStyle = (current, completed) => {
70
71
  return Object.assign(Object.assign({}, baseStepIndicatorStyle), { background: 'transparent', borderColor: 'var(--dynamic-border-color)', color: 'var(--dynamic-text-secondary)' });
71
72
  };
72
73
  const WalletUpgradeFlowView = ({ wallets, onUpgrade, onFinish, }) => {
73
- const { t } = useTranslation();
74
+ const { i18nSDKInstance } = useDynamicContext();
75
+ const { t } = useTranslation('translation', { i18n: i18nSDKInstance });
74
76
  const [currentIndex, setCurrentIndex] = useState(0);
75
77
  const [privateKeyInput, setPrivateKeyInput] = useState('');
76
78
  const [isUpgrading, setIsUpgrading] = useState(false);
@@ -1,6 +1,7 @@
1
1
  'use client'
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import { useTranslation } from 'react-i18next';
4
+ import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
4
5
  import { IconButton, ModalHeader, Typography, EmailForm } from '@dynamic-labs/sdk-react-core/components';
5
6
  import { CloseIcon } from '@dynamic-labs/sdk-react-core/icons';
6
7
 
@@ -13,7 +14,8 @@ const containerStyle = {
13
14
  };
14
15
  const descriptionStyle = { maxWidth: 360 };
15
16
  const LegacyAddRecoveryEmailView = ({ onSubmit, onCancel, defaultEmail, isSubmitting, errorMessage }) => {
16
- const { t } = useTranslation();
17
+ const { i18nSDKInstance } = useDynamicContext();
18
+ const { t } = useTranslation('translation', { i18n: i18nSDKInstance });
17
19
  const closeButton = (jsx(IconButton, { onClick: onCancel, type: 'button', children: jsx(CloseIcon, {}) }));
18
20
  return (jsxs(Fragment, { children: [jsx(ModalHeader, { trailing: closeButton, children: jsx(Typography, { variant: 'title', color: 'primary', children: t('dyn_passkey_recovery.add_email.title') }) }), jsxs("div", { style: containerStyle, children: [jsx(Typography, { variant: 'body_normal', color: 'secondary', style: descriptionStyle, children: t('dyn_passkey_recovery.add_email.description') }), errorMessage && (jsx(Typography, { variant: 'body_small', color: 'error-1', children: errorMessage })), jsx(EmailForm, { onSubmit: onSubmit, isLoading: Boolean(isSubmitting), currentEmail: defaultEmail, buttonCopyKey: EMAIL_SUBMIT_COPY_KEY })] })] }));
19
21
  };
@@ -1,6 +1,7 @@
1
1
  'use client'
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import { useTranslation } from 'react-i18next';
4
+ import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
4
5
  import { IconButton, ModalHeader, Typography, TypographyButton } from '@dynamic-labs/sdk-react-core/components';
5
6
  import { CloseIcon } from '@dynamic-labs/sdk-react-core/icons';
6
7
 
@@ -19,7 +20,8 @@ const buttonGroupStyle = {
19
20
  // usePasskeyRecovery hook integration. For now this view renders one button
20
21
  // per supported authenticator so the step machine can be exercised.
21
22
  const LegacyEmbeddedAuthChoiceView = ({ supportedAuthenticators, onSelect, onCancel, isSubmitting }) => {
22
- const { t } = useTranslation();
23
+ const { i18nSDKInstance } = useDynamicContext();
24
+ const { t } = useTranslation('translation', { i18n: i18nSDKInstance });
23
25
  const closeButton = (jsx(IconButton, { onClick: onCancel, type: 'button', children: jsx(CloseIcon, {}) }));
24
26
  return (jsxs(Fragment, { children: [jsx(ModalHeader, { trailing: closeButton, children: jsx(Typography, { variant: 'title', color: 'primary', children: t('dyn_embedded_authenticator.title') }) }), jsxs("div", { style: containerStyle, children: [jsx(Typography, { variant: 'body_normal', color: 'secondary', children: t('dyn_embedded_authenticator.description') }), jsx("div", { style: buttonGroupStyle, children: supportedAuthenticators.map((authenticatorType) => (jsx(TypographyButton, { dataTestId: `legacy-auth-choice-${authenticatorType}`, onClick: () => onSelect(authenticatorType), buttonVariant: 'brand-primary', expanded: true, disabled: isSubmitting, typographyProps: { color: 'white' }, children: authenticatorType === 'passkey'
25
27
  ? t('dyn_embedded_authenticator.passkey.title')
@@ -2,6 +2,7 @@
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import { useState } from 'react';
4
4
  import { useTranslation } from 'react-i18next';
5
+ import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
5
6
  import { IconButton, ModalHeader, Typography, Input, TypographyButton } from '@dynamic-labs/sdk-react-core/components';
6
7
  import { CloseIcon } from '@dynamic-labs/sdk-react-core/icons';
7
8
 
@@ -19,7 +20,8 @@ const isValidBundle = (bundle) => bundle.length >= BUNDLE_MIN_LENGTH &&
19
20
  bundle.length < BUNDLE_MAX_LENGTH &&
20
21
  bundleRegex.test(bundle);
21
22
  const LegacyPasskeyBundleRecoveryView = ({ email, onSubmit, onResend, onCancel, isSubmitting, errorMessage }) => {
22
- const { t } = useTranslation();
23
+ const { i18nSDKInstance } = useDynamicContext();
24
+ const { t } = useTranslation('translation', { i18n: i18nSDKInstance });
23
25
  const [bundleInput, setBundleInput] = useState('');
24
26
  const closeButton = (jsx(IconButton, { onClick: onCancel, type: 'button', children: jsx(CloseIcon, {}) }));
25
27
  const handleBundleChange = (event) => {
@@ -1,6 +1,7 @@
1
1
  'use client'
2
2
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
3
3
  import { useTranslation } from 'react-i18next';
4
+ import { useDynamicContext } from '@dynamic-labs/sdk-react-core';
4
5
  import { IconButton, ModalHeader, Typography, TypographyButton } from '@dynamic-labs/sdk-react-core/components';
5
6
  import { CloseIcon } from '@dynamic-labs/sdk-react-core/icons';
6
7
 
@@ -14,7 +15,8 @@ const containerStyle = {
14
15
  // usePasskeyRecovery hook integration. For now this view exposes the modal
15
16
  // header + submit hook so the step machine can be exercised.
16
17
  const LegacyPasskeyCompleteRecoveryView = ({ onSubmit, onCancel, isSubmitting, errorMessage }) => {
17
- const { t } = useTranslation();
18
+ const { i18nSDKInstance } = useDynamicContext();
19
+ const { t } = useTranslation('translation', { i18n: i18nSDKInstance });
18
20
  const closeButton = (jsx(IconButton, { onClick: onCancel, type: 'button', children: jsx(CloseIcon, {}) }));
19
21
  return (jsxs(Fragment, { children: [jsx(ModalHeader, { trailing: closeButton, children: jsx(Typography, { variant: 'title', color: 'primary', children: t('dyn_passkey_recovery.complete.title') }) }), jsxs("div", { style: containerStyle, children: [jsx(Typography, { variant: 'body_normal', color: 'secondary', children: t('dyn_passkey_recovery.complete.description') }), errorMessage && (jsx(Typography, { variant: 'body_small', color: 'error-1', children: errorMessage })), jsx(TypographyButton, { dataTestId: 'legacy-passkey-complete-submit', onClick: () => onSubmit(), buttonVariant: 'brand-primary', expanded: true, disabled: isSubmitting, typographyProps: { color: 'white' }, children: t('dyn_passkey_recovery.complete.complete_button') })] })] }));
20
22
  };