@dynamic-labs/sdk-react-core 3.0.0-alpha.38 → 3.0.0-alpha.39
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 +7 -0
- package/package.cjs +1 -1
- package/package.js +1 -1
- package/package.json +11 -11
- package/src/lib/components/UserProfile/UserProfile.cjs +1 -1
- package/src/lib/components/UserProfile/UserProfile.js +1 -1
- package/src/lib/locale/en/translation.cjs +16 -0
- package/src/lib/locale/en/translation.d.ts +16 -0
- package/src/lib/locale/en/translation.js +16 -0
- package/src/lib/shared/assets/authenticator.cjs +54 -0
- package/src/lib/shared/assets/authenticator.js +30 -0
- package/src/lib/shared/assets/index.d.ts +2 -0
- package/src/lib/shared/assets/shield.cjs +59 -0
- package/src/lib/shared/assets/shield.js +35 -0
- package/src/lib/styles/index.shadow.cjs +1 -1
- package/src/lib/styles/index.shadow.js +1 -1
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.cjs +1 -1
- package/src/lib/utils/hooks/useSocialAccounts/useSocialAccounts.js +1 -1
- package/src/lib/views/FarcasterQrCodeView/FarcasterQrCodeView.cjs +1 -1
- package/src/lib/views/FarcasterQrCodeView/FarcasterQrCodeView.js +1 -1
- package/src/lib/views/LoginView/sections/SocialSignInSection/DynamicSocialSignIn/DynamicSocialSignIn.cjs +1 -1
- package/src/lib/views/LoginView/sections/SocialSignInSection/DynamicSocialSignIn/DynamicSocialSignIn.js +1 -1
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetViews/DynamicWidgetViews.cjs +2 -0
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetViews/DynamicWidgetViews.js +2 -0
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetWallets/DynamicWidgetWallets.cjs +1 -1
- package/src/lib/widgets/DynamicWidget/components/DynamicWidgetWallets/DynamicWidgetWallets.js +1 -1
- package/src/lib/widgets/DynamicWidget/context/DynamicWidgetContext.cjs +6 -2
- package/src/lib/widgets/DynamicWidget/context/DynamicWidgetContext.js +6 -2
- package/src/lib/widgets/DynamicWidget/context/DynamicWidgetContext.types.d.ts +3 -1
- package/src/lib/widgets/DynamicWidget/views/ManageMfaWidgetView/ManageMfaWidgetView.cjs +128 -0
- package/src/lib/widgets/DynamicWidget/views/ManageMfaWidgetView/ManageMfaWidgetView.d.ts +4 -0
- package/src/lib/widgets/DynamicWidget/views/ManageMfaWidgetView/ManageMfaWidgetView.js +123 -0
- package/src/lib/widgets/DynamicWidget/views/ManageMfaWidgetView/components/UserDeviceTile.cjs +109 -0
- package/src/lib/widgets/DynamicWidget/views/ManageMfaWidgetView/components/UserDeviceTile.d.ts +8 -0
- package/src/lib/widgets/DynamicWidget/views/ManageMfaWidgetView/components/UserDeviceTile.js +105 -0
- package/src/lib/widgets/DynamicWidget/views/ManageMfaWidgetView/components/index.d.ts +1 -0
- package/src/lib/widgets/DynamicWidget/views/ManageMfaWidgetView/index.d.ts +1 -0
- package/src/lib/widgets/DynamicWidget/views/SettingsView/SettingsView.cjs +14 -12
- package/src/lib/widgets/DynamicWidget/views/SettingsView/SettingsView.js +14 -12
|
@@ -96,7 +96,7 @@ var useInternalDynamicContext = require('../../../context/DynamicContext/useDyna
|
|
|
96
96
|
|
|
97
97
|
// Hook exposed to customers and used internally to handle social account linking
|
|
98
98
|
const useSocialAccounts = ({ sessionTimeout } = {
|
|
99
|
-
sessionTimeout:
|
|
99
|
+
sessionTimeout: 20000,
|
|
100
100
|
}) => {
|
|
101
101
|
var _a;
|
|
102
102
|
const { environmentId, user, projectSettings } = useInternalDynamicContext.useInternalDynamicContext();
|
|
@@ -92,7 +92,7 @@ import { useInternalDynamicContext } from '../../../context/DynamicContext/useDy
|
|
|
92
92
|
|
|
93
93
|
// Hook exposed to customers and used internally to handle social account linking
|
|
94
94
|
const useSocialAccounts = ({ sessionTimeout } = {
|
|
95
|
-
sessionTimeout:
|
|
95
|
+
sessionTimeout: 20000,
|
|
96
96
|
}) => {
|
|
97
97
|
var _a;
|
|
98
98
|
const { environmentId, user, projectSettings } = useInternalDynamicContext();
|
|
@@ -32,7 +32,7 @@ const FarcasterQrCodeView = () => {
|
|
|
32
32
|
const { connectSocialAccount } = useSocialAuth.useSocialAuth({
|
|
33
33
|
onError: () => setError('Something went wrong'),
|
|
34
34
|
onFarcasterUrl: (url) => setUrl(url),
|
|
35
|
-
sessionTimeout:
|
|
35
|
+
sessionTimeout: 20000,
|
|
36
36
|
});
|
|
37
37
|
useEffectOnce.useEffectOnce(() => {
|
|
38
38
|
connectSocialAccount({
|
|
@@ -28,7 +28,7 @@ const FarcasterQrCodeView = () => {
|
|
|
28
28
|
const { connectSocialAccount } = useSocialAuth({
|
|
29
29
|
onError: () => setError('Something went wrong'),
|
|
30
30
|
onFarcasterUrl: (url) => setUrl(url),
|
|
31
|
-
sessionTimeout:
|
|
31
|
+
sessionTimeout: 20000,
|
|
32
32
|
});
|
|
33
33
|
useEffectOnce(() => {
|
|
34
34
|
connectSocialAccount({
|
|
@@ -104,7 +104,7 @@ const DynamicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLa
|
|
|
104
104
|
onSettled: () => {
|
|
105
105
|
setSocialProvider(undefined);
|
|
106
106
|
},
|
|
107
|
-
sessionTimeout:
|
|
107
|
+
sessionTimeout: 20000,
|
|
108
108
|
});
|
|
109
109
|
const onSelectProvider = (provider) => {
|
|
110
110
|
var _a;
|
|
@@ -100,7 +100,7 @@ const DynamicSocialSignIn = ({ defaultProvider, numOfItemsToDisplay, collapsedLa
|
|
|
100
100
|
onSettled: () => {
|
|
101
101
|
setSocialProvider(undefined);
|
|
102
102
|
},
|
|
103
|
-
sessionTimeout:
|
|
103
|
+
sessionTimeout: 20000,
|
|
104
104
|
});
|
|
105
105
|
const onSelectProvider = (provider) => {
|
|
106
106
|
var _a;
|
|
@@ -11,9 +11,11 @@ var EditProfileView = require('../../views/EditProfileView/EditProfileView.cjs')
|
|
|
11
11
|
var SendBalanceWidgetView = require('../../views/SendBalanceWidgetView/SendBalanceWidgetView.cjs');
|
|
12
12
|
var ManagePasskeysWidgetView = require('../../views/ManagePasskeysWidgetView/ManagePasskeysWidgetView.cjs');
|
|
13
13
|
var SettingsView = require('../../views/SettingsView/SettingsView.cjs');
|
|
14
|
+
var ManageMfaWidgetView = require('../../views/ManageMfaWidgetView/ManageMfaWidgetView.cjs');
|
|
14
15
|
|
|
15
16
|
const mapViewToComponent = {
|
|
16
17
|
'edit-profile': EditProfileView.EditProfileView,
|
|
18
|
+
'manage-mfa': ManageMfaWidgetView.ManageMfaWidgetView,
|
|
17
19
|
'manage-passkeys': ManagePasskeysWidgetView.ManagePasskeysWidgetView,
|
|
18
20
|
profile: ProfileView.ProfileView,
|
|
19
21
|
'send-balance': SendBalanceWidgetView.SendBalanceWidgetView,
|
|
@@ -7,9 +7,11 @@ import { EditProfileView } from '../../views/EditProfileView/EditProfileView.js'
|
|
|
7
7
|
import { SendBalanceWidgetView } from '../../views/SendBalanceWidgetView/SendBalanceWidgetView.js';
|
|
8
8
|
import { ManagePasskeysWidgetView } from '../../views/ManagePasskeysWidgetView/ManagePasskeysWidgetView.js';
|
|
9
9
|
import { SettingsView } from '../../views/SettingsView/SettingsView.js';
|
|
10
|
+
import { ManageMfaWidgetView } from '../../views/ManageMfaWidgetView/ManageMfaWidgetView.js';
|
|
10
11
|
|
|
11
12
|
const mapViewToComponent = {
|
|
12
13
|
'edit-profile': EditProfileView,
|
|
14
|
+
'manage-mfa': ManageMfaWidgetView,
|
|
13
15
|
'manage-passkeys': ManagePasskeysWidgetView,
|
|
14
16
|
profile: ProfileView,
|
|
15
17
|
'send-balance': SendBalanceWidgetView,
|
package/src/lib/widgets/DynamicWidget/components/DynamicWidgetWallets/DynamicWidgetWallets.cjs
CHANGED
|
@@ -73,12 +73,12 @@ require('../../../../components/Input/Input.cjs');
|
|
|
73
73
|
require('../../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
|
|
74
74
|
require('../../../../context/PasskeyContext/PasskeyContext.cjs');
|
|
75
75
|
require('../../views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
|
|
76
|
+
require('../../../../components/MenuList/Dropdown/Dropdown.cjs');
|
|
76
77
|
require('../../../../../polyfills.cjs');
|
|
77
78
|
require('../../../../context/ErrorBoundary/ErrorBoundaryBase.cjs');
|
|
78
79
|
require('../../../../context/ErrorBoundary/ErrorBoundaryContext.cjs');
|
|
79
80
|
require('../../../DynamicBridgeWidget/context/DynamicBridgeWidgetContext/DynamicBridgeWidgetContext.cjs');
|
|
80
81
|
require('../DynamicWidgetCard/DynamicWidgetCard.cjs');
|
|
81
|
-
require('../../../../components/MenuList/Dropdown/Dropdown.cjs');
|
|
82
82
|
require('../../../../components/IsBrowser/IsBrowser.cjs');
|
|
83
83
|
require('../../../../context/WidgetRegistry/WidgetRegistryContextProvider.cjs');
|
|
84
84
|
require('../../../../context/FundingContext/FundingContext.cjs');
|
package/src/lib/widgets/DynamicWidget/components/DynamicWidgetWallets/DynamicWidgetWallets.js
CHANGED
|
@@ -69,12 +69,12 @@ import '../../../../components/Input/Input.js';
|
|
|
69
69
|
import '../../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
|
|
70
70
|
import '../../../../context/PasskeyContext/PasskeyContext.js';
|
|
71
71
|
import '../../views/ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
|
|
72
|
+
import '../../../../components/MenuList/Dropdown/Dropdown.js';
|
|
72
73
|
import '../../../../../polyfills.js';
|
|
73
74
|
import '../../../../context/ErrorBoundary/ErrorBoundaryBase.js';
|
|
74
75
|
import '../../../../context/ErrorBoundary/ErrorBoundaryContext.js';
|
|
75
76
|
import '../../../DynamicBridgeWidget/context/DynamicBridgeWidgetContext/DynamicBridgeWidgetContext.js';
|
|
76
77
|
import '../DynamicWidgetCard/DynamicWidgetCard.js';
|
|
77
|
-
import '../../../../components/MenuList/Dropdown/Dropdown.js';
|
|
78
78
|
import '../../../../components/IsBrowser/IsBrowser.js';
|
|
79
79
|
import '../../../../context/WidgetRegistry/WidgetRegistryContextProvider.js';
|
|
80
80
|
import '../../../../context/FundingContext/FundingContext.js';
|
|
@@ -104,9 +104,13 @@ const DynamicWidgetContextProvider = ({ children, }) => {
|
|
|
104
104
|
setDynamicWidgetView('wallets');
|
|
105
105
|
}, [isKYCEnabled, multiWallet]);
|
|
106
106
|
const overridenWidgetView = React.useMemo(() => {
|
|
107
|
-
if (dynamicWidgetView === 'manage-passkeys'
|
|
107
|
+
if (dynamicWidgetView === 'manage-passkeys' ||
|
|
108
|
+
dynamicWidgetView === 'manage-mfa')
|
|
108
109
|
return 'settings';
|
|
109
|
-
if (!isKYCEnabled &&
|
|
110
|
+
if (!isKYCEnabled &&
|
|
111
|
+
!multiWallet &&
|
|
112
|
+
dynamicWidgetView !== 'settings' &&
|
|
113
|
+
dynamicWidgetView !== 'profile')
|
|
110
114
|
return 'wallets';
|
|
111
115
|
if (dynamicWidgetView === 'edit-profile')
|
|
112
116
|
return 'profile';
|
|
@@ -100,9 +100,13 @@ const DynamicWidgetContextProvider = ({ children, }) => {
|
|
|
100
100
|
setDynamicWidgetView('wallets');
|
|
101
101
|
}, [isKYCEnabled, multiWallet]);
|
|
102
102
|
const overridenWidgetView = useMemo(() => {
|
|
103
|
-
if (dynamicWidgetView === 'manage-passkeys'
|
|
103
|
+
if (dynamicWidgetView === 'manage-passkeys' ||
|
|
104
|
+
dynamicWidgetView === 'manage-mfa')
|
|
104
105
|
return 'settings';
|
|
105
|
-
if (!isKYCEnabled &&
|
|
106
|
+
if (!isKYCEnabled &&
|
|
107
|
+
!multiWallet &&
|
|
108
|
+
dynamicWidgetView !== 'settings' &&
|
|
109
|
+
dynamicWidgetView !== 'profile')
|
|
106
110
|
return 'wallets';
|
|
107
111
|
if (dynamicWidgetView === 'edit-profile')
|
|
108
112
|
return 'profile';
|
|
@@ -14,7 +14,9 @@ export interface WidgetContextProps {
|
|
|
14
14
|
export declare const DynamicSettingsViews: readonly ["settings"];
|
|
15
15
|
export type DynamicSettingsType = typeof DynamicSettingsViews[number];
|
|
16
16
|
export declare const DynamicPasskeyWidgetViews: readonly ["manage-passkeys"];
|
|
17
|
+
export declare const DynamicMfaWidgetViews: readonly ["manage-mfa"];
|
|
17
18
|
export type DynamicPasskeyWidgetViewsType = typeof DynamicPasskeyWidgetViews[number];
|
|
19
|
+
export type DynamicMfaWidgetViewsType = typeof DynamicMfaWidgetViews[number];
|
|
18
20
|
export declare const DynamicTransactionsWidgetViews: readonly ["send-balance"];
|
|
19
21
|
export type DynamicTransactionsWidgetViewsType = typeof DynamicTransactionsWidgetViews[number];
|
|
20
|
-
export type DynamicWidgetViews = 'wallets' | 'profile' | 'edit-profile' | DynamicTransactionsWidgetViewsType | DynamicPasskeyWidgetViewsType | DynamicSettingsType;
|
|
22
|
+
export type DynamicWidgetViews = 'wallets' | 'profile' | 'edit-profile' | DynamicTransactionsWidgetViewsType | DynamicPasskeyWidgetViewsType | DynamicMfaWidgetViewsType | DynamicSettingsType;
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var _tslib = require('../../../../../../_virtual/_tslib.cjs');
|
|
7
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
var React = require('react');
|
|
9
|
+
var reactI18next = require('react-i18next');
|
|
10
|
+
var DynamicWidgetContext = require('../../context/DynamicWidgetContext.cjs');
|
|
11
|
+
require('../../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
|
|
12
|
+
require('../../../../components/Alert/Alert.cjs');
|
|
13
|
+
var useDynamicEvents = require('../../../../utils/hooks/events/useDynamicEvents/useDynamicEvents.cjs');
|
|
14
|
+
require('@dynamic-labs/utils');
|
|
15
|
+
require('../../../../context/DynamicContext/DynamicContext.cjs');
|
|
16
|
+
require('@dynamic-labs/sdk-api-core');
|
|
17
|
+
require('../../../../shared/logger.cjs');
|
|
18
|
+
require('@dynamic-labs/iconic');
|
|
19
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
20
|
+
require('../../../../context/ViewContext/ViewContext.cjs');
|
|
21
|
+
var add = require('../../../../shared/assets/add.cjs');
|
|
22
|
+
var chevronLeft = require('../../../../shared/assets/chevron-left.cjs');
|
|
23
|
+
require('@dynamic-labs/wallet-book');
|
|
24
|
+
require('../../../../utils/constants/colors.cjs');
|
|
25
|
+
require('../../../../utils/constants/values.cjs');
|
|
26
|
+
require('../../../../shared/utils/classes/storage/localStorage.cjs');
|
|
27
|
+
require('../../../../shared/utils/classes/storage/sessionStorage.cjs');
|
|
28
|
+
var useEffectOnce = require('../../../../shared/utils/hooks/useEffectOnce/useEffectOnce.cjs');
|
|
29
|
+
require('../../../../shared/consts/index.cjs');
|
|
30
|
+
require('../../../../context/CaptchaContext/CaptchaContext.cjs');
|
|
31
|
+
require('../../../../context/ErrorContext/ErrorContext.cjs');
|
|
32
|
+
require('@dynamic-labs/multi-wallet');
|
|
33
|
+
require('react-international-phone');
|
|
34
|
+
require('../../../../config/ApiEndpoint.cjs');
|
|
35
|
+
require('@dynamic-labs/store');
|
|
36
|
+
require('../../../../locale/locale.cjs');
|
|
37
|
+
require('../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
|
|
38
|
+
require('../../../../context/AccountExistsContext/AccountExistsContext.cjs');
|
|
39
|
+
require('../../../../context/UserWalletsContext/UserWalletsContext.cjs');
|
|
40
|
+
require('../../../../events/dynamicEvents.cjs');
|
|
41
|
+
require('../../../../context/VerificationContext/VerificationContext.cjs');
|
|
42
|
+
require('react-dom');
|
|
43
|
+
require('../../../../context/WalletContext/WalletContext.cjs');
|
|
44
|
+
require('../../../../utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.cjs');
|
|
45
|
+
require('../../../../context/ThemeContext/ThemeContext.cjs');
|
|
46
|
+
require('../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
|
|
47
|
+
require('@dynamic-labs/types');
|
|
48
|
+
require('../../../../context/LoadingContext/LoadingContext.cjs');
|
|
49
|
+
require('yup');
|
|
50
|
+
require('../../../../context/MockContext/MockContext.cjs');
|
|
51
|
+
require('../../../../views/CollectUserDataView/useFields.cjs');
|
|
52
|
+
require('../../../../context/FieldsStateContext/FieldsStateContext.cjs');
|
|
53
|
+
require('../../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
|
|
54
|
+
require('@dynamic-labs/rpc-providers');
|
|
55
|
+
var Typography = require('../../../../components/Typography/Typography.cjs');
|
|
56
|
+
require('../../../../context/FooterAnimationContext/index.cjs');
|
|
57
|
+
require('../../../../components/ShadowDOM/ShadowDOM.cjs');
|
|
58
|
+
require('../../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
|
|
59
|
+
require('../../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
|
|
60
|
+
require('../../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
|
|
61
|
+
require('../../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
|
|
62
|
+
require('../../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
|
|
63
|
+
require('../../../../context/WalletGroupContext/WalletGroupContext.cjs');
|
|
64
|
+
require('../../components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
|
|
65
|
+
require('react-focus-lock');
|
|
66
|
+
var IconButton = require('../../../../components/IconButton/IconButton.cjs');
|
|
67
|
+
require('../../../../components/MenuList/Dropdown/Dropdown.cjs');
|
|
68
|
+
var TypographyButton = require('../../../../components/TypographyButton/TypographyButton.cjs');
|
|
69
|
+
require('formik');
|
|
70
|
+
require('../../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
|
|
71
|
+
var ModalHeader = require('../../../../components/ModalHeader/ModalHeader.cjs');
|
|
72
|
+
require('../../../../components/Input/Input.cjs');
|
|
73
|
+
require('../../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
|
|
74
|
+
require('../../../../context/PasskeyContext/PasskeyContext.cjs');
|
|
75
|
+
require('../ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
|
|
76
|
+
var UserDeviceTile = require('./components/UserDeviceTile.cjs');
|
|
77
|
+
require('../../../../../polyfills.cjs');
|
|
78
|
+
require('../../../../context/ErrorBoundary/ErrorBoundaryBase.cjs');
|
|
79
|
+
require('../../../../context/ErrorBoundary/ErrorBoundaryContext.cjs');
|
|
80
|
+
require('../../../DynamicBridgeWidget/context/DynamicBridgeWidgetContext/DynamicBridgeWidgetContext.cjs');
|
|
81
|
+
require('../../components/DynamicWidgetCard/DynamicWidgetCard.cjs');
|
|
82
|
+
require('../../../../components/IsBrowser/IsBrowser.cjs');
|
|
83
|
+
require('../../../../context/WidgetRegistry/WidgetRegistryContextProvider.cjs');
|
|
84
|
+
require('../../../../context/FundingContext/FundingContext.cjs');
|
|
85
|
+
require('../../../../components/Popper/Popper/Popper.cjs');
|
|
86
|
+
require('../../../../components/Popper/PopperContext/PopperContext.cjs');
|
|
87
|
+
require('../../../../views/WalletList/WalletList.cjs');
|
|
88
|
+
require('../../../DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
|
|
89
|
+
require('@hcaptcha/react-hcaptcha');
|
|
90
|
+
var useMfa = require('../../../../utils/hooks/useMfa/useMfa.cjs');
|
|
91
|
+
require('../../../../context/IpConfigurationContext/IpConfigurationContext.cjs');
|
|
92
|
+
require('../../../../context/SendBalanceContext/SendBalanceContext.cjs');
|
|
93
|
+
require('../../../../context/ConnectWithOtpContext/ConnectWithOtpContext.cjs');
|
|
94
|
+
require('../../../../context/ConnectWithOtpContext/constants.cjs');
|
|
95
|
+
require('../../../../context/ReinitializeContext/ReinitializeContextProvider.cjs');
|
|
96
|
+
var useDynamicModals = require('../../../../utils/hooks/useDynamicModals/useDynamicModals.cjs');
|
|
97
|
+
require('../../../../components/InlineWidget/InlineWidget.cjs');
|
|
98
|
+
require('qrcode');
|
|
99
|
+
|
|
100
|
+
const sortDevicesByDefault = (a, b) => a._default === b._default ? 0 : a._default ? -1 : 1;
|
|
101
|
+
const ManageMfaWidgetView = () => {
|
|
102
|
+
const [userDevices, setUserDevices] = React.useState([]);
|
|
103
|
+
const { setDynamicWidgetView } = DynamicWidgetContext.useWidgetContext();
|
|
104
|
+
const { setShowMfaQRCode } = useDynamicModals.useDynamicModals();
|
|
105
|
+
const { getUserDevices, deleteUserDevice } = useMfa.useMfa();
|
|
106
|
+
const { t } = reactI18next.useTranslation();
|
|
107
|
+
const getDevices = React.useCallback(() => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
108
|
+
const devices = yield getUserDevices();
|
|
109
|
+
// set the user devices with the default device first
|
|
110
|
+
setUserDevices(devices.sort(sortDevicesByDefault));
|
|
111
|
+
}), [getUserDevices]);
|
|
112
|
+
// re-fetch devices when a new device is added
|
|
113
|
+
useDynamicEvents.useDynamicEvents('mfaCompletionSuccess', () => getDevices());
|
|
114
|
+
// delete device and then re-fetch devices
|
|
115
|
+
const deleteDevice = (id) => _tslib.__awaiter(void 0, void 0, void 0, function* () {
|
|
116
|
+
yield deleteUserDevice(id);
|
|
117
|
+
getDevices();
|
|
118
|
+
});
|
|
119
|
+
// load devices on initial page load
|
|
120
|
+
useEffectOnce.useEffectOnce(() => {
|
|
121
|
+
getDevices();
|
|
122
|
+
});
|
|
123
|
+
const backButton = (jsxRuntime.jsx(IconButton.IconButton, { type: 'button', onClick: () => setDynamicWidgetView('settings'), "data-testid": 'back-button', children: jsxRuntime.jsx(chevronLeft.ReactComponent, {}) }));
|
|
124
|
+
return (jsxRuntime.jsxs("div", { className: 'manage-mfa-widget-view', children: [jsxRuntime.jsx(ModalHeader.ModalHeader, { leading: backButton, children: jsxRuntime.jsx("div", { className: 'send-balance-page-layout__header-content', children: jsxRuntime.jsx(Typography.Typography, { variant: 'title', color: 'primary', copykey: 'dyn_manage_mfa.title', children: t('dyn_manage_mfa.title') }) }) }), jsxRuntime.jsx("div", { className: 'manage-mfa-widget-view__description-container', children: jsxRuntime.jsx(Typography.Typography, { className: 'manage-mfa-widget-view__description-container__text', variant: 'body_small', color: 'secondary', copykey: 'dyn_manage_mfa.description', children: t('dyn_manage_mfa.description') }) }), jsxRuntime.jsxs("div", { className: 'manage-mfa-widget-view__scroll-container', children: [userDevices.length === 0 && (jsxRuntime.jsx(Typography.Typography, { className: 'manage-mfa-widget-view__no-devices', variant: 'body_normal', color: 'secondary', copykey: 'dyn_manage_mfa.no_devices', children: t('dyn_manage_mfa.no_devices') })), userDevices.map((device, index) => (jsxRuntime.jsx(UserDeviceTile.UserDeviceTile, { userDevice: device, index: index, deleteDevice: deleteDevice }, device.id)))] }), jsxRuntime.jsx("div", { className: 'manage-mfa-widget-view__add-mfa-button-container', children: jsxRuntime.jsx(TypographyButton.TypographyButton, { buttonClassName: 'manage-mfa-widget-view__add-mfa-button-container__button', onClick: () => setShowMfaQRCode(true), copykey: 'dyn_manage_mfa.add_mfa_button', startSlot: jsxRuntime.jsx(add.ReactComponent, {}), children: t('dyn_manage_mfa.add_mfa_button') }) })] }));
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
exports.ManageMfaWidgetView = ManageMfaWidgetView;
|
|
128
|
+
exports.sortDevicesByDefault = sortDevicesByDefault;
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
import { __awaiter } from '../../../../../../_virtual/_tslib.js';
|
|
3
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
4
|
+
import { useState, useCallback } from 'react';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
6
|
+
import { useWidgetContext } from '../../context/DynamicWidgetContext.js';
|
|
7
|
+
import '../../../../components/Accordion/components/AccordionItem/AccordionItem.js';
|
|
8
|
+
import '../../../../components/Alert/Alert.js';
|
|
9
|
+
import { useDynamicEvents } from '../../../../utils/hooks/events/useDynamicEvents/useDynamicEvents.js';
|
|
10
|
+
import '@dynamic-labs/utils';
|
|
11
|
+
import '../../../../context/DynamicContext/DynamicContext.js';
|
|
12
|
+
import '@dynamic-labs/sdk-api-core';
|
|
13
|
+
import '../../../../shared/logger.js';
|
|
14
|
+
import '@dynamic-labs/iconic';
|
|
15
|
+
import '@dynamic-labs/wallet-connector-core';
|
|
16
|
+
import '../../../../context/ViewContext/ViewContext.js';
|
|
17
|
+
import { ReactComponent as SvgAdd } from '../../../../shared/assets/add.js';
|
|
18
|
+
import { ReactComponent as SvgChevronLeft } from '../../../../shared/assets/chevron-left.js';
|
|
19
|
+
import '@dynamic-labs/wallet-book';
|
|
20
|
+
import '../../../../utils/constants/colors.js';
|
|
21
|
+
import '../../../../utils/constants/values.js';
|
|
22
|
+
import '../../../../shared/utils/classes/storage/localStorage.js';
|
|
23
|
+
import '../../../../shared/utils/classes/storage/sessionStorage.js';
|
|
24
|
+
import { useEffectOnce } from '../../../../shared/utils/hooks/useEffectOnce/useEffectOnce.js';
|
|
25
|
+
import '../../../../shared/consts/index.js';
|
|
26
|
+
import '../../../../context/CaptchaContext/CaptchaContext.js';
|
|
27
|
+
import '../../../../context/ErrorContext/ErrorContext.js';
|
|
28
|
+
import '@dynamic-labs/multi-wallet';
|
|
29
|
+
import 'react-international-phone';
|
|
30
|
+
import '../../../../config/ApiEndpoint.js';
|
|
31
|
+
import '@dynamic-labs/store';
|
|
32
|
+
import '../../../../locale/locale.js';
|
|
33
|
+
import '../../../../context/AccessDeniedContext/AccessDeniedContext.js';
|
|
34
|
+
import '../../../../context/AccountExistsContext/AccountExistsContext.js';
|
|
35
|
+
import '../../../../context/UserWalletsContext/UserWalletsContext.js';
|
|
36
|
+
import '../../../../events/dynamicEvents.js';
|
|
37
|
+
import '../../../../context/VerificationContext/VerificationContext.js';
|
|
38
|
+
import 'react-dom';
|
|
39
|
+
import '../../../../context/WalletContext/WalletContext.js';
|
|
40
|
+
import '../../../../utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.js';
|
|
41
|
+
import '../../../../context/ThemeContext/ThemeContext.js';
|
|
42
|
+
import '../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/userFieldsSchema.js';
|
|
43
|
+
import '@dynamic-labs/types';
|
|
44
|
+
import '../../../../context/LoadingContext/LoadingContext.js';
|
|
45
|
+
import 'yup';
|
|
46
|
+
import '../../../../context/MockContext/MockContext.js';
|
|
47
|
+
import '../../../../views/CollectUserDataView/useFields.js';
|
|
48
|
+
import '../../../../context/FieldsStateContext/FieldsStateContext.js';
|
|
49
|
+
import '../../../../context/UserFieldEditorContext/UserFieldEditorContext.js';
|
|
50
|
+
import '@dynamic-labs/rpc-providers';
|
|
51
|
+
import { Typography } from '../../../../components/Typography/Typography.js';
|
|
52
|
+
import '../../../../context/FooterAnimationContext/index.js';
|
|
53
|
+
import '../../../../components/ShadowDOM/ShadowDOM.js';
|
|
54
|
+
import '../../../../components/Transition/ZoomTransition/ZoomTransition.js';
|
|
55
|
+
import '../../../../components/Transition/SlideInUpTransition/SlideInUpTransition.js';
|
|
56
|
+
import '../../../../components/Transition/OpacityTransition/OpacityTransition.js';
|
|
57
|
+
import '../../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.js';
|
|
58
|
+
import '../../../../context/SocialRedirectContext/SocialRedirectContext.js';
|
|
59
|
+
import '../../../../context/WalletGroupContext/WalletGroupContext.js';
|
|
60
|
+
import '../../components/DynamicWidgetHeader/DynamicWidgetHeader.js';
|
|
61
|
+
import 'react-focus-lock';
|
|
62
|
+
import { IconButton } from '../../../../components/IconButton/IconButton.js';
|
|
63
|
+
import '../../../../components/MenuList/Dropdown/Dropdown.js';
|
|
64
|
+
import { TypographyButton } from '../../../../components/TypographyButton/TypographyButton.js';
|
|
65
|
+
import 'formik';
|
|
66
|
+
import '../../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.js';
|
|
67
|
+
import { ModalHeader } from '../../../../components/ModalHeader/ModalHeader.js';
|
|
68
|
+
import '../../../../components/Input/Input.js';
|
|
69
|
+
import '../../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.js';
|
|
70
|
+
import '../../../../context/PasskeyContext/PasskeyContext.js';
|
|
71
|
+
import '../ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.js';
|
|
72
|
+
import { UserDeviceTile } from './components/UserDeviceTile.js';
|
|
73
|
+
import '../../../../../polyfills.js';
|
|
74
|
+
import '../../../../context/ErrorBoundary/ErrorBoundaryBase.js';
|
|
75
|
+
import '../../../../context/ErrorBoundary/ErrorBoundaryContext.js';
|
|
76
|
+
import '../../../DynamicBridgeWidget/context/DynamicBridgeWidgetContext/DynamicBridgeWidgetContext.js';
|
|
77
|
+
import '../../components/DynamicWidgetCard/DynamicWidgetCard.js';
|
|
78
|
+
import '../../../../components/IsBrowser/IsBrowser.js';
|
|
79
|
+
import '../../../../context/WidgetRegistry/WidgetRegistryContextProvider.js';
|
|
80
|
+
import '../../../../context/FundingContext/FundingContext.js';
|
|
81
|
+
import '../../../../components/Popper/Popper/Popper.js';
|
|
82
|
+
import '../../../../components/Popper/PopperContext/PopperContext.js';
|
|
83
|
+
import '../../../../views/WalletList/WalletList.js';
|
|
84
|
+
import '../../../DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.js';
|
|
85
|
+
import '@hcaptcha/react-hcaptcha';
|
|
86
|
+
import { useMfa } from '../../../../utils/hooks/useMfa/useMfa.js';
|
|
87
|
+
import '../../../../context/IpConfigurationContext/IpConfigurationContext.js';
|
|
88
|
+
import '../../../../context/SendBalanceContext/SendBalanceContext.js';
|
|
89
|
+
import '../../../../context/ConnectWithOtpContext/ConnectWithOtpContext.js';
|
|
90
|
+
import '../../../../context/ConnectWithOtpContext/constants.js';
|
|
91
|
+
import '../../../../context/ReinitializeContext/ReinitializeContextProvider.js';
|
|
92
|
+
import { useDynamicModals } from '../../../../utils/hooks/useDynamicModals/useDynamicModals.js';
|
|
93
|
+
import '../../../../components/InlineWidget/InlineWidget.js';
|
|
94
|
+
import 'qrcode';
|
|
95
|
+
|
|
96
|
+
const sortDevicesByDefault = (a, b) => a._default === b._default ? 0 : a._default ? -1 : 1;
|
|
97
|
+
const ManageMfaWidgetView = () => {
|
|
98
|
+
const [userDevices, setUserDevices] = useState([]);
|
|
99
|
+
const { setDynamicWidgetView } = useWidgetContext();
|
|
100
|
+
const { setShowMfaQRCode } = useDynamicModals();
|
|
101
|
+
const { getUserDevices, deleteUserDevice } = useMfa();
|
|
102
|
+
const { t } = useTranslation();
|
|
103
|
+
const getDevices = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
104
|
+
const devices = yield getUserDevices();
|
|
105
|
+
// set the user devices with the default device first
|
|
106
|
+
setUserDevices(devices.sort(sortDevicesByDefault));
|
|
107
|
+
}), [getUserDevices]);
|
|
108
|
+
// re-fetch devices when a new device is added
|
|
109
|
+
useDynamicEvents('mfaCompletionSuccess', () => getDevices());
|
|
110
|
+
// delete device and then re-fetch devices
|
|
111
|
+
const deleteDevice = (id) => __awaiter(void 0, void 0, void 0, function* () {
|
|
112
|
+
yield deleteUserDevice(id);
|
|
113
|
+
getDevices();
|
|
114
|
+
});
|
|
115
|
+
// load devices on initial page load
|
|
116
|
+
useEffectOnce(() => {
|
|
117
|
+
getDevices();
|
|
118
|
+
});
|
|
119
|
+
const backButton = (jsx(IconButton, { type: 'button', onClick: () => setDynamicWidgetView('settings'), "data-testid": 'back-button', children: jsx(SvgChevronLeft, {}) }));
|
|
120
|
+
return (jsxs("div", { className: 'manage-mfa-widget-view', children: [jsx(ModalHeader, { leading: backButton, children: jsx("div", { className: 'send-balance-page-layout__header-content', children: jsx(Typography, { variant: 'title', color: 'primary', copykey: 'dyn_manage_mfa.title', children: t('dyn_manage_mfa.title') }) }) }), jsx("div", { className: 'manage-mfa-widget-view__description-container', children: jsx(Typography, { className: 'manage-mfa-widget-view__description-container__text', variant: 'body_small', color: 'secondary', copykey: 'dyn_manage_mfa.description', children: t('dyn_manage_mfa.description') }) }), jsxs("div", { className: 'manage-mfa-widget-view__scroll-container', children: [userDevices.length === 0 && (jsx(Typography, { className: 'manage-mfa-widget-view__no-devices', variant: 'body_normal', color: 'secondary', copykey: 'dyn_manage_mfa.no_devices', children: t('dyn_manage_mfa.no_devices') })), userDevices.map((device, index) => (jsx(UserDeviceTile, { userDevice: device, index: index, deleteDevice: deleteDevice }, device.id)))] }), jsx("div", { className: 'manage-mfa-widget-view__add-mfa-button-container', children: jsx(TypographyButton, { buttonClassName: 'manage-mfa-widget-view__add-mfa-button-container__button', onClick: () => setShowMfaQRCode(true), copykey: 'dyn_manage_mfa.add_mfa_button', startSlot: jsx(SvgAdd, {}), children: t('dyn_manage_mfa.add_mfa_button') }) })] }));
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
export { ManageMfaWidgetView, sortDevicesByDefault };
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
'use strict';
|
|
3
|
+
|
|
4
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
5
|
+
|
|
6
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
+
var DotsMenu = require('../../../components/DotsMenu/DotsMenu.cjs');
|
|
8
|
+
require('@dynamic-labs/sdk-api-core');
|
|
9
|
+
require('@dynamic-labs/utils');
|
|
10
|
+
require('@dynamic-labs/wallet-connector-core');
|
|
11
|
+
require('../../../../../shared/logger.cjs');
|
|
12
|
+
require('@dynamic-labs/iconic');
|
|
13
|
+
require('../../../../../context/ViewContext/ViewContext.cjs');
|
|
14
|
+
require('react');
|
|
15
|
+
var authenticator = require('../../../../../shared/assets/authenticator.cjs');
|
|
16
|
+
require('@dynamic-labs/wallet-book');
|
|
17
|
+
require('../../../../../utils/constants/colors.cjs');
|
|
18
|
+
require('../../../../../utils/constants/values.cjs');
|
|
19
|
+
require('../../../../../shared/utils/classes/storage/localStorage.cjs');
|
|
20
|
+
require('../../../../../shared/utils/classes/storage/sessionStorage.cjs');
|
|
21
|
+
require('../../../../../shared/consts/index.cjs');
|
|
22
|
+
var getTimeSince = require('../../../helpers/getTimeSince.cjs');
|
|
23
|
+
require('../../../../../components/Accordion/components/AccordionItem/AccordionItem.cjs');
|
|
24
|
+
require('../../../../../components/Alert/Alert.cjs');
|
|
25
|
+
require('../../../../../events/dynamicEvents.cjs');
|
|
26
|
+
require('../../../../../../../_virtual/_tslib.cjs');
|
|
27
|
+
require('../../../../../context/DynamicContext/DynamicContext.cjs');
|
|
28
|
+
require('../../../../../context/CaptchaContext/CaptchaContext.cjs');
|
|
29
|
+
require('../../../../../context/ErrorContext/ErrorContext.cjs');
|
|
30
|
+
require('@dynamic-labs/multi-wallet');
|
|
31
|
+
require('react-international-phone');
|
|
32
|
+
require('../../../../../config/ApiEndpoint.cjs');
|
|
33
|
+
require('@dynamic-labs/store');
|
|
34
|
+
require('../../../../../locale/locale.cjs');
|
|
35
|
+
require('../../../../../context/AccessDeniedContext/AccessDeniedContext.cjs');
|
|
36
|
+
require('../../../../../context/AccountExistsContext/AccountExistsContext.cjs');
|
|
37
|
+
require('../../../../../context/UserWalletsContext/UserWalletsContext.cjs');
|
|
38
|
+
require('../../../../../context/VerificationContext/VerificationContext.cjs');
|
|
39
|
+
require('react-dom');
|
|
40
|
+
require('../../../../../context/WalletContext/WalletContext.cjs');
|
|
41
|
+
require('../../../../../utils/hooks/useEmbeddedWallet/useSecureEnclaveEmbeddedWallet/constants.cjs');
|
|
42
|
+
require('../../../../../context/ThemeContext/ThemeContext.cjs');
|
|
43
|
+
require('../../../../../utils/hooks/useUserUpdateRequest/useUpdateUser/userFieldsSchema.cjs');
|
|
44
|
+
require('@dynamic-labs/types');
|
|
45
|
+
require('../../../../../context/LoadingContext/LoadingContext.cjs');
|
|
46
|
+
require('yup');
|
|
47
|
+
require('../../../../../context/MockContext/MockContext.cjs');
|
|
48
|
+
require('../../../../../views/CollectUserDataView/useFields.cjs');
|
|
49
|
+
require('../../../../../context/FieldsStateContext/FieldsStateContext.cjs');
|
|
50
|
+
require('../../../../../context/UserFieldEditorContext/UserFieldEditorContext.cjs');
|
|
51
|
+
require('@dynamic-labs/rpc-providers');
|
|
52
|
+
require('react-i18next');
|
|
53
|
+
var Typography = require('../../../../../components/Typography/Typography.cjs');
|
|
54
|
+
require('../../../../../context/FooterAnimationContext/index.cjs');
|
|
55
|
+
require('../../../../../components/ShadowDOM/ShadowDOM.cjs');
|
|
56
|
+
require('../../../../../components/Transition/ZoomTransition/ZoomTransition.cjs');
|
|
57
|
+
require('../../../../../components/Transition/SlideInUpTransition/SlideInUpTransition.cjs');
|
|
58
|
+
require('../../../../../components/Transition/OpacityTransition/OpacityTransition.cjs');
|
|
59
|
+
require('../../../../../components/OverlayCard/OverlayCardTarget/OverlayCardTarget.cjs');
|
|
60
|
+
require('../../../../../context/SocialRedirectContext/SocialRedirectContext.cjs');
|
|
61
|
+
require('../../../../../context/WalletGroupContext/WalletGroupContext.cjs');
|
|
62
|
+
require('../../../components/DynamicWidgetHeader/DynamicWidgetHeader.cjs');
|
|
63
|
+
require('react-focus-lock');
|
|
64
|
+
require('../../../context/DynamicWidgetContext.cjs');
|
|
65
|
+
require('formik');
|
|
66
|
+
require('../../../../../views/TransactionConfirmationView/helpers/transactionErrorMessage.cjs');
|
|
67
|
+
require('../../../../../components/IconButton/IconButton.cjs');
|
|
68
|
+
require('../../../../../components/Input/Input.cjs');
|
|
69
|
+
require('../../../../../components/PasskeyCreatedSuccessBanner/PasskeyCreatedSuccessBanner.cjs');
|
|
70
|
+
require('../../../../../context/PasskeyContext/PasskeyContext.cjs');
|
|
71
|
+
require('../../ManagePasskeysWidgetView/PasskeyCard/PasskeyCard.cjs');
|
|
72
|
+
require('../../../../../../polyfills.cjs');
|
|
73
|
+
require('../../../../../context/ErrorBoundary/ErrorBoundaryBase.cjs');
|
|
74
|
+
require('../../../../../context/ErrorBoundary/ErrorBoundaryContext.cjs');
|
|
75
|
+
require('../../../../DynamicBridgeWidget/context/DynamicBridgeWidgetContext/DynamicBridgeWidgetContext.cjs');
|
|
76
|
+
require('../../../components/DynamicWidgetCard/DynamicWidgetCard.cjs');
|
|
77
|
+
require('../../../../../components/IsBrowser/IsBrowser.cjs');
|
|
78
|
+
require('../../../../../components/MenuList/Dropdown/Dropdown.cjs');
|
|
79
|
+
require('../../../../../context/WidgetRegistry/WidgetRegistryContextProvider.cjs');
|
|
80
|
+
require('../../../../../context/FundingContext/FundingContext.cjs');
|
|
81
|
+
require('../../../../../components/Popper/Popper/Popper.cjs');
|
|
82
|
+
require('../../../../../components/Popper/PopperContext/PopperContext.cjs');
|
|
83
|
+
require('../../../../../views/WalletList/WalletList.cjs');
|
|
84
|
+
require('../../../../DynamicBridgeWidget/views/WalletsView/components/SecondaryWallets/SecondaryWallets.cjs');
|
|
85
|
+
require('@hcaptcha/react-hcaptcha');
|
|
86
|
+
require('../../../../../context/IpConfigurationContext/IpConfigurationContext.cjs');
|
|
87
|
+
require('../../../../../context/SendBalanceContext/SendBalanceContext.cjs');
|
|
88
|
+
require('../../../../../context/ConnectWithOtpContext/ConnectWithOtpContext.cjs');
|
|
89
|
+
require('../../../../../context/ConnectWithOtpContext/constants.cjs');
|
|
90
|
+
require('../../../../../context/ReinitializeContext/ReinitializeContextProvider.cjs');
|
|
91
|
+
require('../../../../../components/InlineWidget/InlineWidget.cjs');
|
|
92
|
+
require('qrcode');
|
|
93
|
+
|
|
94
|
+
const UserDeviceTile = ({ userDevice, index, deleteDevice, }) => {
|
|
95
|
+
const optionsMenu = [
|
|
96
|
+
{
|
|
97
|
+
Icon: null,
|
|
98
|
+
callback: () => deleteDevice(userDevice.id),
|
|
99
|
+
text: 'Delete',
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
const timeSinceCreated = userDevice.createdAt && getTimeSince.getTimeSince(new Date(userDevice.createdAt));
|
|
103
|
+
return (jsxRuntime.jsxs("div", { className: 'manage-mfa-widget-view__list-tile', children: [jsxRuntime.jsx(authenticator.ReactComponent, { className: 'manage-mfa-widget-view__list-tile__icon' }), jsxRuntime.jsxs("div", { className: 'manage-mfa-widget-view__list-tile__details', children: [jsxRuntime.jsxs(Typography.Typography, { variant: 'body_normal', color: 'primary', children: ["Authenticator App ", index + 1] }), timeSinceCreated && (jsxRuntime.jsxs(Typography.Typography, { variant: 'body_small', color: 'secondary', children: ["Created ", timeSinceCreated.value, " ", timeSinceCreated.unit, " ago"] }))] }), jsxRuntime.jsx("div", { style: {
|
|
104
|
+
cursor: 'pointer',
|
|
105
|
+
display: 'flex',
|
|
106
|
+
}, children: jsxRuntime.jsx(DotsMenu.DotsMenu, { direction: 'left', "data-testid": 'dots-menu', options: optionsMenu, buttonClassName: 'manage-mfa-widget-view__list-tile__dots-menu', buttonClassNameWithOpenMenu: 'manage-mfa-widget-view__list-tile__dots-menu' }) })] }, userDevice.id));
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
exports.UserDeviceTile = UserDeviceTile;
|
package/src/lib/widgets/DynamicWidget/views/ManageMfaWidgetView/components/UserDeviceTile.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { MFADevice } from '@dynamic-labs/sdk-api-core';
|
|
3
|
+
export type UserDeviceTileProps = {
|
|
4
|
+
userDevice: MFADevice;
|
|
5
|
+
index: number;
|
|
6
|
+
deleteDevice: (id: string) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const UserDeviceTile: ({ userDevice, index, deleteDevice, }: UserDeviceTileProps) => JSX.Element;
|