@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 +28 -0
- package/package.js +1 -1
- package/package.json +7 -7
- package/src/lib/ui/AccountUpgradedView/AccountUpgradedView.js +3 -1
- package/src/lib/ui/WaasUpgradeView/WaasUpgradeView.js +3 -1
- package/src/lib/ui/WalletUpgradeFlowView/WalletUpgradeFlowView.js +3 -1
- package/src/lib/ui/recovery/LegacyAddRecoveryEmailView/LegacyAddRecoveryEmailView.js +3 -1
- package/src/lib/ui/recovery/LegacyEmbeddedAuthChoiceView/LegacyEmbeddedAuthChoiceView.js +3 -1
- package/src/lib/ui/recovery/LegacyPasskeyBundleRecoveryView/LegacyPasskeyBundleRecoveryView.js +3 -1
- package/src/lib/ui/recovery/LegacyPasskeyCompleteRecoveryView/LegacyPasskeyCompleteRecoveryView.js +3 -1
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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/legacy-embedded-wallet-migration",
|
|
3
|
-
"version": "5.
|
|
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.
|
|
21
|
-
"@dynamic-labs/sdk-api-core": "0.
|
|
22
|
-
"@dynamic-labs/utils": "5.
|
|
23
|
-
"@dynamic-labs/wallet-connector-core": "5.
|
|
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.
|
|
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.
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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 {
|
|
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')
|
package/src/lib/ui/recovery/LegacyPasskeyBundleRecoveryView/LegacyPasskeyBundleRecoveryView.js
CHANGED
|
@@ -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 {
|
|
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) => {
|
package/src/lib/ui/recovery/LegacyPasskeyCompleteRecoveryView/LegacyPasskeyCompleteRecoveryView.js
CHANGED
|
@@ -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 {
|
|
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
|
};
|