@dynamic-labs/legacy-embedded-wallet-migration 5.6.1 → 5.8.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,32 @@
1
1
 
2
+ ## [5.8.0](https://github.com/dynamic-labs/dynamic-auth/compare/v5.7.0...v5.8.0) (2026-09-09)
3
+
4
+
5
+ ### Features
6
+
7
+ * **solana-core:** standalone sponsored ATA creation ([#12365](https://github.com/dynamic-labs/dynamic-auth/issues/12365)) ([ac2e776](https://github.com/dynamic-labs/dynamic-auth/commit/ac2e7769fcf91c868e961a227b8acb6347bf3f13))
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * do not report wallets installed from a provider selection router ([#12340](https://github.com/dynamic-labs/dynamic-auth/issues/12340)) ([dac5546](https://github.com/dynamic-labs/dynamic-auth/commit/dac5546edf6004c37bd84dd2089d94952949230b))
13
+ * **screening:** soften the blocked-wallet copy to be provider-neutral ([#12358](https://github.com/dynamic-labs/dynamic-auth/issues/12358)) ([b4854d8](https://github.com/dynamic-labs/dynamic-auth/commit/b4854d88fa67f684be0e133edd5fd4a4bf5c7f37))
14
+ * show transaction amount when simulation returns no transfers ([#12355](https://github.com/dynamic-labs/dynamic-auth/issues/12355)) ([bfaf337](https://github.com/dynamic-labs/dynamic-auth/commit/bfaf337e5350970f71255baff065e0cdbccdc7ca))
15
+
16
+ ## [5.7.0](https://github.com/dynamic-labs/dynamic-auth/compare/v5.6.1...v5.7.0) (2026-09-08)
17
+
18
+
19
+ ### Features
20
+
21
+ * **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))
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * **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))
27
+ * **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))
28
+ * **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))
29
+
2
30
  ### [5.6.1](https://github.com/dynamic-labs/dynamic-auth/compare/v5.6.0...v5.6.1) (2026-09-01)
3
31
 
4
32
 
package/package.js CHANGED
@@ -1,4 +1,4 @@
1
1
  'use client'
2
- var version = "5.6.1";
2
+ var version = "5.8.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.1",
3
+ "version": "5.8.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.1",
21
- "@dynamic-labs/sdk-api-core": "0.12.0",
22
- "@dynamic-labs/utils": "5.6.1",
23
- "@dynamic-labs/wallet-connector-core": "5.6.1"
20
+ "@dynamic-labs/assert-package-version": "5.8.0",
21
+ "@dynamic-labs/sdk-api-core": "0.32.0",
22
+ "@dynamic-labs/utils": "5.8.0",
23
+ "@dynamic-labs/wallet-connector-core": "5.8.0"
24
24
  },
25
25
  "peerDependencies": {
26
- "@dynamic-labs/sdk-react-core": "5.6.1",
26
+ "@dynamic-labs/sdk-react-core": "5.8.0",
27
27
  "react": ">=18.0.0 <20.0.0",
28
28
  "react-i18next": ">=13.0.0",
29
- "@dynamic-labs/types": "5.6.1"
29
+ "@dynamic-labs/types": "5.8.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
  };