@micha.bigler/ui-core-micha 1.4.8 → 1.4.9
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/dist/components/LoginForm.js +1 -1
- package/dist/components/MfaLoginComponent.js +2 -2
- package/dist/components/SocialLoginButtons.js +1 -1
- package/package.json +1 -1
- package/src/components/LoginForm.jsx +2 -2
- package/src/components/MfaLoginComponent.jsx +10 -1
- package/src/components/SocialLoginButtons.jsx +1 -1
|
@@ -18,6 +18,6 @@ disabled = false, }) => {
|
|
|
18
18
|
const supportsPasskey = !!onPasskeyLogin &&
|
|
19
19
|
typeof window !== 'undefined' &&
|
|
20
20
|
!!window.PublicKeyCredential;
|
|
21
|
-
return (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 3 }, children: [error && (_jsx(Typography, { color: "error", gutterBottom: true, children: error })), supportsPasskey && (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "contained", fullWidth: true, type: "button", onClick: onPasskeyLogin, disabled: disabled, children: t('Auth.LOGIN_USE_PASSKEY_BUTTON') }), _jsx(Divider, { sx: { my: 2 }, children: t('Auth.LOGIN_OR') })] })), _jsxs(Box, { component: "form", onSubmit: handleSubmit, sx: { display: 'flex', flexDirection: 'column', gap: 2 }, children: [_jsx(TextField, { label: t('Auth.EMAIL_LABEL'), type: "email", required: true, fullWidth: true, value: identifier, onChange: (e) => setIdentifier(e.target.value), disabled: disabled }), _jsx(TextField, { label: t('Auth.LOGIN_PASSWORD_LABEL'), type: "password", required: true, fullWidth: true, value: password, onChange: (e) => setPassword(e.target.value), disabled: disabled }), _jsx(Button, { type: "submit", variant: "contained", fullWidth: true, disabled: disabled, children: t('Auth.LOGIN_SUBMIT') })] }), _jsxs(Box, {
|
|
21
|
+
return (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 3 }, children: [error && (_jsx(Typography, { color: "error", gutterBottom: true, children: error })), supportsPasskey && (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "contained", fullWidth: true, type: "button", onClick: onPasskeyLogin, disabled: disabled, children: t('Auth.LOGIN_USE_PASSKEY_BUTTON') }), _jsx(Divider, { sx: { my: 2 }, children: t('Auth.LOGIN_OR') })] })), _jsxs(Box, { component: "form", onSubmit: handleSubmit, sx: { display: 'flex', flexDirection: 'column', gap: 2 }, children: [_jsx(TextField, { label: t('Auth.EMAIL_LABEL'), type: "email", required: true, fullWidth: true, value: identifier, onChange: (e) => setIdentifier(e.target.value), disabled: disabled }), _jsx(TextField, { label: t('Auth.LOGIN_PASSWORD_LABEL'), type: "password", required: true, fullWidth: true, value: password, onChange: (e) => setPassword(e.target.value), disabled: disabled }), _jsx(Button, { type: "submit", variant: "contained", fullWidth: true, disabled: disabled, children: t('Auth.LOGIN_SUBMIT') })] }), _jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 3 }, children: [_jsx(Divider, { children: t('Auth.LOGIN_OR') }), _jsx(SocialLoginButtons, { onProviderClick: onSocialLogin })] }), _jsxs(Box, { children: [_jsx(Typography, { variant: "subtitle2", sx: { mb: 1 }, children: t('Auth.LOGIN_ACCOUNT_RECOVERY_TITLE') }), _jsxs(Box, { sx: { display: 'flex', gap: 1, flexWrap: 'wrap' }, children: [onSignUp && (_jsx(Button, { type: "button", variant: "outlined", onClick: onSignUp, disabled: disabled, children: t('Auth.LOGIN_SIGNUP_BUTTON') })), _jsx(Button, { type: "button", variant: "outlined", onClick: onForgotPassword, disabled: disabled, children: t('Auth.LOGIN_FORGOT_PASSWORD_BUTTON') })] })] })] }));
|
|
22
22
|
};
|
|
23
23
|
export default LoginForm;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// src/auth/components/MfaLoginComponent.jsx
|
|
3
3
|
import React, { useState } from 'react';
|
|
4
|
-
import { Box, Typography, TextField, Button, Stack, Alert, } from '@mui/material';
|
|
4
|
+
import { Box, Typography, TextField, Button, Stack, Alert, Divider, } from '@mui/material';
|
|
5
5
|
import { useTranslation } from 'react-i18next';
|
|
6
6
|
import { authApi } from '../auth/authApi';
|
|
7
7
|
const MfaLoginComponent = ({ availableTypes, identifier, onSuccess, onCancel }) => {
|
|
@@ -67,6 +67,6 @@ const MfaLoginComponent = ({ availableTypes, identifier, onSuccess, onCancel })
|
|
|
67
67
|
setSubmitting(false);
|
|
68
68
|
}
|
|
69
69
|
};
|
|
70
|
-
return (_jsxs(Box, { children: [_jsx(Typography, { variant: "body2", sx: { mb: 2 }, children: t('Auth.MFA_SUBTITLE', 'Please confirm your login using one of the available methods.') }), errorKey && (_jsx(Alert, { severity: "error", sx: { mb: 2 }, children: t(errorKey) })), infoKey && (_jsx(Alert, { severity: "info", sx: { mb: 2 }, children: t(infoKey) })), _jsxs(Stack, { spacing: 2, children: [supportsWebauthn && (_jsx(Button, { variant: "contained", fullWidth: true, onClick: handlePasskey, disabled: submitting || helpRequested, children: t('Auth.
|
|
70
|
+
return (_jsxs(Box, { children: [_jsx(Typography, { variant: "body2", sx: { mb: 2 }, children: t('Auth.MFA_SUBTITLE', 'Please confirm your login using one of the available methods.') }), errorKey && (_jsx(Alert, { severity: "error", sx: { mb: 2 }, children: t(errorKey) })), infoKey && (_jsx(Alert, { severity: "info", sx: { mb: 2 }, children: t(infoKey) })), _jsxs(Stack, { spacing: 2, children: [supportsWebauthn && (_jsx(Button, { variant: "contained", fullWidth: true, onClick: handlePasskey, disabled: submitting || helpRequested, children: t('Auth.LOGIN_USE_PASSKEY_BUTTON', 'Use passkey / security key') })), _jsx(Divider, { sx: { my: 2 }, children: t('Auth.LOGIN_OR') }), supportsTotpOrRecovery && (_jsxs(Box, { component: "form", onSubmit: handleSubmitCode, children: [_jsx(TextField, { label: t('Auth.MFA_CODE_LABEL', 'Authenticator code (or recovery code)'), value: code, onChange: (e) => setCode(e.target.value), fullWidth: true, disabled: submitting || helpRequested, autoComplete: "one-time-code", sx: { mb: 2 } }), _jsx(Button, { type: "submit", variant: "contained", fullWidth: true, disabled: submitting || !code.trim() || helpRequested, children: t('Auth.MFA_VERIFY', 'Verify') })] })), _jsx(Divider, { sx: { my: 2 }, children: t('Auth.LOGIN_OR') }), _jsxs(Stack, { direction: "row", spacing: 1, sx: { mt: 1 }, children: [_jsx(Button, { fullWidth: true, size: "small", variant: "outlined", onClick: onCancel, disabled: submitting, children: t('Auth.MFA_BACK_TO_LOGIN', 'Back to login') }), _jsx(Button, { fullWidth: true, size: "small", variant: "outlined", color: "secondary", onClick: handleNeedHelp, disabled: submitting || helpRequested, children: t('Auth.MFA_NEED_HELP', "I can't use any of these methods") })] })] })] }));
|
|
71
71
|
};
|
|
72
72
|
export default MfaLoginComponent;
|
|
@@ -15,7 +15,7 @@ const SocialLoginButtons = ({ onProviderClick }) => {
|
|
|
15
15
|
onProviderClick(provider);
|
|
16
16
|
}
|
|
17
17
|
};
|
|
18
|
-
return (_jsxs(Stack, { spacing: 1.5,
|
|
18
|
+
return (_jsxs(Stack, { spacing: 1.5, children: [_jsx(Button, { variant: "outlined", fullWidth: true, onClick: () => handleClick(SOCIAL_PROVIDERS.google), startIcon: _jsx(Box, { sx: {
|
|
19
19
|
width: 24,
|
|
20
20
|
height: 24,
|
|
21
21
|
borderRadius: '50%',
|
package/package.json
CHANGED
|
@@ -101,8 +101,8 @@ const LoginForm = ({
|
|
|
101
101
|
</Box>
|
|
102
102
|
|
|
103
103
|
{/* Other ways to sign in */}
|
|
104
|
-
|
|
105
|
-
<Divider
|
|
104
|
+
<Box sx={{ display: 'flex', flexDirection: 'column', gap: 3 }}>
|
|
105
|
+
<Divider>
|
|
106
106
|
{t('Auth.LOGIN_OR')}
|
|
107
107
|
</Divider>
|
|
108
108
|
<SocialLoginButtons onProviderClick={onSocialLogin} />
|
|
@@ -7,6 +7,7 @@ import {
|
|
|
7
7
|
Button,
|
|
8
8
|
Stack,
|
|
9
9
|
Alert,
|
|
10
|
+
Divider,
|
|
10
11
|
} from '@mui/material';
|
|
11
12
|
import { useTranslation } from 'react-i18next';
|
|
12
13
|
import { authApi } from '../auth/authApi';
|
|
@@ -106,10 +107,14 @@ const MfaLoginComponent = ({ availableTypes, identifier, onSuccess, onCancel })
|
|
|
106
107
|
onClick={handlePasskey}
|
|
107
108
|
disabled={submitting || helpRequested}
|
|
108
109
|
>
|
|
109
|
-
{t('Auth.
|
|
110
|
+
{t('Auth.LOGIN_USE_PASSKEY_BUTTON', 'Use passkey / security key')}
|
|
110
111
|
</Button>
|
|
111
112
|
)}
|
|
112
113
|
|
|
114
|
+
<Divider sx={{ my: 2 }}>
|
|
115
|
+
{t('Auth.LOGIN_OR')}
|
|
116
|
+
</Divider>
|
|
117
|
+
|
|
113
118
|
{supportsTotpOrRecovery && (
|
|
114
119
|
<Box component="form" onSubmit={handleSubmitCode}>
|
|
115
120
|
<TextField
|
|
@@ -135,6 +140,10 @@ const MfaLoginComponent = ({ availableTypes, identifier, onSuccess, onCancel })
|
|
|
135
140
|
</Box>
|
|
136
141
|
)}
|
|
137
142
|
|
|
143
|
+
<Divider sx={{ my: 2 }}>
|
|
144
|
+
{t('Auth.LOGIN_OR')}
|
|
145
|
+
</Divider>
|
|
146
|
+
|
|
138
147
|
|
|
139
148
|
|
|
140
149
|
<Stack direction="row" spacing={1} sx={{ mt: 1 }}>
|