@digitaldefiance/express-suite-react-components 4.27.0 → 4.27.2
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/package.json +1 -1
- package/src/contexts/AuthProvider.d.ts +27 -0
- package/src/contexts/AuthProvider.d.ts.map +1 -1
- package/src/contexts/AuthProvider.js +3 -0
- package/src/wrappers/LoginFormWrapper.d.ts.map +1 -1
- package/src/wrappers/LoginFormWrapper.js +4 -5
- package/src/wrappers/RegisterFormWrapper.d.ts +12 -0
- package/src/wrappers/RegisterFormWrapper.d.ts.map +1 -1
- package/src/wrappers/RegisterFormWrapper.js +10 -3
- package/src/wrappers/UserSettingsFormWrapper.d.ts +21 -0
- package/src/wrappers/UserSettingsFormWrapper.d.ts.map +1 -1
- package/src/wrappers/UserSettingsFormWrapper.js +67 -3
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@digitaldefiance/express-suite-react-components",
|
|
3
|
-
"version": "4.27.
|
|
3
|
+
"version": "4.27.2",
|
|
4
4
|
"homepage": "https://github.com/Digital-Defiance/react-components",
|
|
5
5
|
"description": "React MUI components for Digital Defiance Express Suite",
|
|
6
6
|
"repository": {
|
|
@@ -140,6 +140,33 @@ export interface AuthContextData {
|
|
|
140
140
|
wallet?: Wallet;
|
|
141
141
|
walletExpirationSeconds: number;
|
|
142
142
|
verifyToken: (token: string) => Promise<boolean>;
|
|
143
|
+
/**
|
|
144
|
+
* Initiates TOTP setup for the authenticated user.
|
|
145
|
+
* Returns the provisioning URI and raw base32 secret on success.
|
|
146
|
+
*/
|
|
147
|
+
setupTotp: () => Promise<{
|
|
148
|
+
provisioningUri: string;
|
|
149
|
+
secret: string;
|
|
150
|
+
} | {
|
|
151
|
+
error: string;
|
|
152
|
+
}>;
|
|
153
|
+
/**
|
|
154
|
+
* Confirms TOTP setup with a 6-digit code.
|
|
155
|
+
*/
|
|
156
|
+
confirmTotp: (code: string) => Promise<{
|
|
157
|
+
success: boolean;
|
|
158
|
+
} | {
|
|
159
|
+
error: string;
|
|
160
|
+
}>;
|
|
161
|
+
/**
|
|
162
|
+
* Completes TOTP login by verifying a 6-digit code against a pending TOTP token.
|
|
163
|
+
*/
|
|
164
|
+
verifyTotpLogin: (pendingTotpToken: string, code: string) => Promise<{
|
|
165
|
+
token: string;
|
|
166
|
+
user: IRequestUserDTO;
|
|
167
|
+
} | {
|
|
168
|
+
error: string;
|
|
169
|
+
}>;
|
|
143
170
|
}
|
|
144
171
|
export type AuthProviderProps = {
|
|
145
172
|
children: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/contexts/AuthProvider.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AuthProvider.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/contexts/AuthProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -441,6 +441,9 @@ const AuthProviderInner = ({ children, baseUrl, constants, eciesConfig, onLogout
|
|
|
441
441
|
setUserSetting: setUserSettingAndUpdateSettings,
|
|
442
442
|
setWallet,
|
|
443
443
|
setWalletExpirationSeconds,
|
|
444
|
+
setupTotp: () => authService.setupTotp(),
|
|
445
|
+
confirmTotp: (code) => authService.confirmTotp(code),
|
|
446
|
+
verifyTotpLogin: (pendingTotpToken, code) => authService.verifyTotpLogin(pendingTotpToken, code),
|
|
444
447
|
token,
|
|
445
448
|
user: frontendUser,
|
|
446
449
|
userData: user,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LoginFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/LoginFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAGrC,OAAO,EAAE,eAAe,EAA8C,MAAM,iCAAiC,CAAC;AAC9G,OAAO,EAA8B,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIrF,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3D;;;;OAIG;IACH,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,KACrB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,eAAe,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,
|
|
1
|
+
{"version":3,"file":"LoginFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/LoginFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAY,MAAM,OAAO,CAAC;AAGrC,OAAO,EAAE,eAAe,EAA8C,MAAM,iCAAiC,CAAC;AAC9G,OAAO,EAA8B,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAIrF,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3D;;;;OAIG;IACH,YAAY,CAAC,EAAE,CACb,IAAI,EAAE,MAAM,EACZ,gBAAgB,EAAE,MAAM,KACrB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,eAAe,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC5E;AAED,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAkFtD,CAAC"}
|
|
@@ -10,7 +10,7 @@ const LoginForm_1 = require("../components/LoginForm");
|
|
|
10
10
|
const TotpVerificationForm_1 = require("../components/TotpVerificationForm");
|
|
11
11
|
const contexts_1 = require("../contexts");
|
|
12
12
|
const LoginFormWrapper = ({ onSuccess, redirectTo, componentProps = {}, onVerifyTotp, }) => {
|
|
13
|
-
const { directLogin, passwordLogin } = (0, contexts_1.useAuth)();
|
|
13
|
+
const { directLogin, passwordLogin, verifyTotpLogin } = (0, contexts_1.useAuth)();
|
|
14
14
|
const navigate = (0, react_router_dom_1.useNavigate)();
|
|
15
15
|
const { routes } = (0, contexts_1.useSuiteConfig)();
|
|
16
16
|
const [pendingTotpToken, setPendingTotpToken] = (0, react_1.useState)(null);
|
|
@@ -50,10 +50,9 @@ const LoginFormWrapper = ({ onSuccess, redirectTo, componentProps = {}, onVerify
|
|
|
50
50
|
}
|
|
51
51
|
};
|
|
52
52
|
const handleTotpSubmit = async (code, token) => {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
const result = await onVerifyTotp(code, token);
|
|
53
|
+
// Use the explicitly provided callback, or fall back to verifyTotpLogin from AuthContext
|
|
54
|
+
const verifyFn = onVerifyTotp ?? ((c, t) => verifyTotpLogin(t, c));
|
|
55
|
+
const result = await verifyFn(code, token);
|
|
57
56
|
if ('error' in result) {
|
|
58
57
|
return result;
|
|
59
58
|
}
|
|
@@ -2,6 +2,18 @@ import { FC } from 'react';
|
|
|
2
2
|
import { RegisterFormProps } from '../components/RegisterForm';
|
|
3
3
|
export interface RegisterFormWrapperProps {
|
|
4
4
|
onSuccess?: () => void;
|
|
5
|
+
/**
|
|
6
|
+
* When true, offer the TOTP setup step after successful registration.
|
|
7
|
+
* Typically sourced from window.APP_CONFIG.totpAvailable.
|
|
8
|
+
* Defaults to false.
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This requires the registration endpoint to return a session token
|
|
11
|
+
* so the user is authenticated when the TOTP setup call is made. If
|
|
12
|
+
* registration does not issue a token (the default in this suite), leave
|
|
13
|
+
* this false and direct users to enable TOTP from their settings page
|
|
14
|
+
* after logging in.
|
|
15
|
+
*/
|
|
16
|
+
enableTotpSetup?: boolean;
|
|
5
17
|
componentProps?: Partial<Omit<RegisterFormProps, 'onSubmit' | 'timezones' | 'getInitialTimezone'>>;
|
|
6
18
|
}
|
|
7
19
|
export declare const RegisterFormWrapper: FC<RegisterFormWrapperProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RegisterFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/RegisterFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAEL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CACtB,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,WAAW,GAAG,oBAAoB,CAAC,CACzE,CAAC;CACH;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,
|
|
1
|
+
{"version":3,"file":"RegisterFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/RegisterFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAC3B,OAAO,EAEL,iBAAiB,EAElB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;;;;;;;;OAUG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE,OAAO,CACtB,IAAI,CAAC,iBAAiB,EAAE,UAAU,GAAG,WAAW,GAAG,oBAAoB,CAAC,CACzE,CAAC;CACH;AAED,eAAO,MAAM,mBAAmB,EAAE,EAAE,CAAC,wBAAwB,CAwD5D,CAAC"}
|
|
@@ -4,8 +4,8 @@ exports.RegisterFormWrapper = void 0;
|
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const RegisterForm_1 = require("../components/RegisterForm");
|
|
6
6
|
const contexts_1 = require("../contexts");
|
|
7
|
-
const RegisterFormWrapper = ({ onSuccess, componentProps = {}, }) => {
|
|
8
|
-
const { register } = (0, contexts_1.useAuth)();
|
|
7
|
+
const RegisterFormWrapper = ({ onSuccess, enableTotpSetup = false, componentProps = {}, }) => {
|
|
8
|
+
const { register, setupTotp, confirmTotp } = (0, contexts_1.useAuth)();
|
|
9
9
|
const { timezones } = (0, contexts_1.useSuiteConfig)();
|
|
10
10
|
const handleSubmit = async (values) => {
|
|
11
11
|
const result = await register(values.username, values.email, values.timezone || 'UTC', values.password, values.mnemonic, values.displayName);
|
|
@@ -27,6 +27,13 @@ const RegisterFormWrapper = ({ onSuccess, componentProps = {}, }) => {
|
|
|
27
27
|
'America/Los_Angeles',
|
|
28
28
|
'Europe/London',
|
|
29
29
|
];
|
|
30
|
-
|
|
30
|
+
const totpProps = enableTotpSetup
|
|
31
|
+
? {
|
|
32
|
+
enableTotpSetup: true,
|
|
33
|
+
onTotpSetup: setupTotp,
|
|
34
|
+
onTotpConfirm: confirmTotp,
|
|
35
|
+
}
|
|
36
|
+
: {};
|
|
37
|
+
return ((0, jsx_runtime_1.jsx)(RegisterForm_1.RegisterForm, { onSubmit: handleSubmit, timezones: defaultTimezones, getInitialTimezone: () => Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC', ...totpProps, ...componentProps }));
|
|
31
38
|
};
|
|
32
39
|
exports.RegisterFormWrapper = RegisterFormWrapper;
|
|
@@ -1,7 +1,28 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
2
|
import { UserSettingsFormProps } from '../components/UserSettingsForm';
|
|
3
|
+
import { IConstants } from '@digitaldefiance/suite-core-lib';
|
|
4
|
+
import { IECIESConfig } from '@digitaldefiance/ecies-lib';
|
|
3
5
|
export interface UserSettingsFormWrapperProps {
|
|
4
6
|
onSuccess?: () => void;
|
|
7
|
+
/**
|
|
8
|
+
* Constants for AuthService (required for TOTP methods).
|
|
9
|
+
* If not provided, TOTP callbacks will not be wired up.
|
|
10
|
+
*/
|
|
11
|
+
constants?: IConstants;
|
|
12
|
+
/**
|
|
13
|
+
* ECIES config for AuthService (required for TOTP methods).
|
|
14
|
+
* If not provided, TOTP callbacks will not be wired up.
|
|
15
|
+
*/
|
|
16
|
+
eciesConfig?: IECIESConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Email domain for AuthService (required for TOTP methods).
|
|
19
|
+
*/
|
|
20
|
+
emailDomain?: string;
|
|
21
|
+
/**
|
|
22
|
+
* When false (default), TOTP management controls are not shown.
|
|
23
|
+
* Set to true when TOTP_AVAILABLE is enabled in the server environment.
|
|
24
|
+
*/
|
|
25
|
+
totpAvailable?: boolean;
|
|
5
26
|
componentProps?: Partial<Omit<UserSettingsFormProps, 'initialValues' | 'onSubmit' | 'languages'>>;
|
|
6
27
|
}
|
|
7
28
|
export declare const UserSettingsFormWrapper: FC<UserSettingsFormWrapperProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserSettingsFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/UserSettingsFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"UserSettingsFormWrapper.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-express-suite-react-components/src/wrappers/UserSettingsFormWrapper.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAA6C,MAAM,OAAO,CAAC;AACtE,OAAO,EAA4C,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAGjH,OAAO,EAA2B,UAAU,EAAsB,MAAM,iCAAiC,CAAC;AAG1G,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,WAAW,4BAA4B;IAC3C,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB;;;OAGG;IACH,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,eAAe,GAAG,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC;CACnG;AAED,eAAO,MAAM,uBAAuB,EAAE,EAAE,CAAC,4BAA4B,CAqGpE,CAAC"}
|
|
@@ -2,13 +2,38 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UserSettingsFormWrapper = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
5
6
|
const UserSettingsForm_1 = require("../components/UserSettingsForm");
|
|
6
7
|
const contexts_1 = require("../contexts");
|
|
7
8
|
const hooks_1 = require("../hooks");
|
|
8
9
|
const suite_core_lib_1 = require("@digitaldefiance/suite-core-lib");
|
|
9
|
-
const
|
|
10
|
+
const authService_1 = require("../services/authService");
|
|
11
|
+
const authenticatedApi_1 = require("../services/authenticatedApi");
|
|
12
|
+
const UserSettingsFormWrapper = ({ onSuccess, constants, eciesConfig, emailDomain = '', totpAvailable = false, componentProps = {}, }) => {
|
|
10
13
|
const { settings, updateSettings } = (0, hooks_1.useUserSettingsPublic)();
|
|
11
|
-
const { languages } = (0, contexts_1.useSuiteConfig)();
|
|
14
|
+
const { languages, baseUrl } = (0, contexts_1.useSuiteConfig)();
|
|
15
|
+
const { isAuthenticated } = (0, contexts_1.useAuth)();
|
|
16
|
+
// Fetch totpEnabled from the settings API
|
|
17
|
+
const [totpEnabled, setTotpEnabled] = (0, react_1.useState)(undefined);
|
|
18
|
+
const authenticatedApi = (0, react_1.useMemo)(() => (0, authenticatedApi_1.createAuthenticatedApiClient)(baseUrl), [baseUrl]);
|
|
19
|
+
const authService = (0, react_1.useMemo)(() => {
|
|
20
|
+
if (!constants || !eciesConfig)
|
|
21
|
+
return null;
|
|
22
|
+
return (0, authService_1.createAuthService)(constants, baseUrl, eciesConfig, emailDomain);
|
|
23
|
+
}, [constants, eciesConfig, baseUrl, emailDomain]);
|
|
24
|
+
// Fetch totpEnabled from GET /user/settings
|
|
25
|
+
(0, react_1.useEffect)(() => {
|
|
26
|
+
if (!isAuthenticated)
|
|
27
|
+
return;
|
|
28
|
+
authenticatedApi
|
|
29
|
+
.get('/user/settings')
|
|
30
|
+
.then((res) => {
|
|
31
|
+
setTotpEnabled(res.data?.settings?.totpEnabled ?? false);
|
|
32
|
+
})
|
|
33
|
+
.catch(() => {
|
|
34
|
+
// If the endpoint fails, leave totpEnabled undefined (no TOTP controls shown)
|
|
35
|
+
});
|
|
36
|
+
}, [isAuthenticated, authenticatedApi]);
|
|
12
37
|
const handleSubmit = async (values) => {
|
|
13
38
|
const result = await updateSettings(values);
|
|
14
39
|
if ('success' in result && result.success && onSuccess) {
|
|
@@ -16,11 +41,50 @@ const UserSettingsFormWrapper = ({ onSuccess, componentProps = {}, }) => {
|
|
|
16
41
|
}
|
|
17
42
|
return result;
|
|
18
43
|
};
|
|
44
|
+
// TOTP callbacks — only wired when authService is available
|
|
45
|
+
const handleTotpSetup = (0, react_1.useCallback)(async () => {
|
|
46
|
+
if (!authService)
|
|
47
|
+
return { error: 'AuthService not configured' };
|
|
48
|
+
return authService.setupTotp();
|
|
49
|
+
}, [authService]);
|
|
50
|
+
const handleTotpConfirm = (0, react_1.useCallback)(async (code) => {
|
|
51
|
+
if (!authService)
|
|
52
|
+
return { error: 'AuthService not configured' };
|
|
53
|
+
const result = await authService.confirmTotp(code);
|
|
54
|
+
if ('success' in result && result.success) {
|
|
55
|
+
setTotpEnabled(true);
|
|
56
|
+
}
|
|
57
|
+
return result;
|
|
58
|
+
}, [authService]);
|
|
59
|
+
const handleTotpDisable = (0, react_1.useCallback)(async (code) => {
|
|
60
|
+
if (!authService)
|
|
61
|
+
return { error: 'AuthService not configured' };
|
|
62
|
+
const result = await authService.disableTotp(code);
|
|
63
|
+
if ('success' in result && result.success) {
|
|
64
|
+
setTotpEnabled(false);
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}, [authService]);
|
|
68
|
+
const handleTotpReset = (0, react_1.useCallback)(async (code) => {
|
|
69
|
+
if (!authService)
|
|
70
|
+
return { error: 'AuthService not configured' };
|
|
71
|
+
return authService.resetTotp(code);
|
|
72
|
+
}, [authService]);
|
|
19
73
|
// Only show loading on initial load, not during updates
|
|
20
74
|
// Once we have settings, keep showing the form even during updates
|
|
21
75
|
if (!settings) {
|
|
22
76
|
return (0, jsx_runtime_1.jsxs)("div", { children: [(0, suite_core_lib_1.getSuiteCoreTranslation)(suite_core_lib_1.SuiteCoreStringKey.Common_Loading), "..."] });
|
|
23
77
|
}
|
|
24
|
-
|
|
78
|
+
// Only pass TOTP props when totpAvailable is true, authService is available, and totpEnabled has been fetched
|
|
79
|
+
const totpProps = totpAvailable && authService && totpEnabled !== undefined
|
|
80
|
+
? {
|
|
81
|
+
totpEnabled,
|
|
82
|
+
onTotpSetup: handleTotpSetup,
|
|
83
|
+
onTotpConfirm: handleTotpConfirm,
|
|
84
|
+
onTotpDisable: handleTotpDisable,
|
|
85
|
+
onTotpReset: handleTotpReset,
|
|
86
|
+
}
|
|
87
|
+
: {};
|
|
88
|
+
return ((0, jsx_runtime_1.jsx)(UserSettingsForm_1.UserSettingsForm, { initialValues: settings, onSubmit: handleSubmit, languages: languages, ...totpProps, ...componentProps }));
|
|
25
89
|
};
|
|
26
90
|
exports.UserSettingsFormWrapper = UserSettingsFormWrapper;
|