@micha.bigler/ui-core-micha 2.2.1 → 2.2.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/dist/i18n/authTranslations.js +70 -4
- package/dist/pages/SignUpPage.js +11 -29
- package/package.json +1 -1
- package/src/i18n/authTranslations.ts +70 -4
- package/src/pages/SignUpPage.jsx +17 -46
|
@@ -295,10 +295,76 @@ export const authTranslations = {
|
|
|
295
295
|
"sw": "Tafadhali ingiza anwani ya barua pepe."
|
|
296
296
|
},
|
|
297
297
|
"Auth.PAGE_SIGNUP_SUBTITLE": {
|
|
298
|
-
"de": "
|
|
299
|
-
"fr": "
|
|
300
|
-
"en": "
|
|
301
|
-
"sw": "
|
|
298
|
+
"de": "Wählen Sie eine Registrierungsart und geben Sie die benötigten Angaben ein.",
|
|
299
|
+
"fr": "Choisissez une méthode d'inscription et saisissez les informations requises.",
|
|
300
|
+
"en": "Choose a sign-up method and enter the required details.",
|
|
301
|
+
"sw": "Chagua njia ya kujisajili na uingize taarifa zinazohitajika."
|
|
302
|
+
},
|
|
303
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_ACCESS_CODE": {
|
|
304
|
+
"de": "Geben Sie Ihre E-Mail-Adresse und den erhaltenen Zugangscode ein.",
|
|
305
|
+
"fr": "Saisissez votre adresse e-mail et le code d'accès reçu.",
|
|
306
|
+
"en": "Enter your email address and the access code you received.",
|
|
307
|
+
"sw": "Ingiza anwani yako ya barua pepe na msimbo wa ufikiaji uliopokea."
|
|
308
|
+
},
|
|
309
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_OPEN": {
|
|
310
|
+
"de": "Geben Sie Ihre E-Mail-Adresse ein, um sich direkt zu registrieren.",
|
|
311
|
+
"fr": "Saisissez votre adresse e-mail pour vous inscrire directement.",
|
|
312
|
+
"en": "Enter your email address to sign up directly.",
|
|
313
|
+
"sw": "Ingiza anwani yako ya barua pepe ili kujisajili moja kwa moja."
|
|
314
|
+
},
|
|
315
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_EMAIL_DOMAIN": {
|
|
316
|
+
"de": "Verwenden Sie eine E-Mail-Adresse aus einer freigegebenen Domain.",
|
|
317
|
+
"fr": "Utilisez une adresse e-mail provenant d'un domaine autorisé.",
|
|
318
|
+
"en": "Use an email address from an approved domain.",
|
|
319
|
+
"sw": "Tumia anwani ya barua pepe kutoka kwenye domeni iliyoidhinishwa."
|
|
320
|
+
},
|
|
321
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_QR": {
|
|
322
|
+
"de": "Öffnen Sie diese Seite über einen gültigen QR-Link und geben Sie dann Ihre E-Mail-Adresse ein.",
|
|
323
|
+
"fr": "Ouvrez cette page via un lien QR valide, puis saisissez votre adresse e-mail.",
|
|
324
|
+
"en": "Open this page from a valid QR link, then enter your email address.",
|
|
325
|
+
"sw": "Fungua ukurasa huu kupitia kiungo halali cha QR, kisha ingiza anwani yako ya barua pepe."
|
|
326
|
+
},
|
|
327
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_QR_READY": {
|
|
328
|
+
"de": "Geben Sie Ihre E-Mail-Adresse ein, um die Registrierung mit diesem QR-Link abzuschließen.",
|
|
329
|
+
"fr": "Saisissez votre adresse e-mail pour terminer l'inscription avec ce lien QR.",
|
|
330
|
+
"en": "Enter your email address to complete sign-up with this QR link.",
|
|
331
|
+
"sw": "Ingiza anwani yako ya barua pepe ili kukamilisha kujisajili kwa kutumia kiungo hiki cha QR."
|
|
332
|
+
},
|
|
333
|
+
"Auth.SIGNUP_ACCESS_CODE_TAB": {
|
|
334
|
+
"de": "Mit Zugangscode",
|
|
335
|
+
"fr": "Avec code d'accès",
|
|
336
|
+
"en": "With access code",
|
|
337
|
+
"sw": "Kwa msimbo wa ufikiaji"
|
|
338
|
+
},
|
|
339
|
+
"Auth.SIGNUP_OPEN_TAB": {
|
|
340
|
+
"de": "Direkte Registrierung",
|
|
341
|
+
"fr": "Inscription directe",
|
|
342
|
+
"en": "Direct sign-up",
|
|
343
|
+
"sw": "Kujisajili moja kwa moja"
|
|
344
|
+
},
|
|
345
|
+
"Auth.SIGNUP_EMAIL_DOMAIN_TAB": {
|
|
346
|
+
"de": "Mit E-Mail-Domain",
|
|
347
|
+
"fr": "Avec domaine e-mail",
|
|
348
|
+
"en": "With email domain",
|
|
349
|
+
"sw": "Kwa domeni ya barua pepe"
|
|
350
|
+
},
|
|
351
|
+
"Auth.SIGNUP_QR_TAB": {
|
|
352
|
+
"de": "Mit QR-Link",
|
|
353
|
+
"fr": "Avec lien QR",
|
|
354
|
+
"en": "With QR link",
|
|
355
|
+
"sw": "Kwa kiungo cha QR"
|
|
356
|
+
},
|
|
357
|
+
"Auth.SIGNUP_QR_INVALID": {
|
|
358
|
+
"de": "Dieser QR-Link ist ungültig oder fehlt.",
|
|
359
|
+
"fr": "Ce lien QR est invalide ou manquant.",
|
|
360
|
+
"en": "This QR link is invalid or missing.",
|
|
361
|
+
"sw": "Kiungo hiki cha QR si sahihi au hakipo."
|
|
362
|
+
},
|
|
363
|
+
"Auth.SIGNUP_QR_TOKEN_LABEL": {
|
|
364
|
+
"de": "QR-Token",
|
|
365
|
+
"fr": "Jeton QR",
|
|
366
|
+
"en": "QR token",
|
|
367
|
+
"sw": "Tokeni ya QR"
|
|
302
368
|
},
|
|
303
369
|
"Auth.EMAIL_LABEL": {
|
|
304
370
|
"de": "E-Mail-Adresse",
|
package/dist/pages/SignUpPage.js
CHANGED
|
@@ -13,11 +13,11 @@ const MODE_LABELS = {
|
|
|
13
13
|
self_signup_email_domain: 'Auth.SIGNUP_EMAIL_DOMAIN_TAB',
|
|
14
14
|
self_signup_qr: 'Auth.SIGNUP_QR_TAB',
|
|
15
15
|
};
|
|
16
|
-
const
|
|
17
|
-
self_signup_access_code: 'Auth.
|
|
18
|
-
self_signup_open: 'Auth.
|
|
19
|
-
self_signup_email_domain: 'Auth.
|
|
20
|
-
self_signup_qr: 'Auth.
|
|
16
|
+
const MODE_SUBTITLES = {
|
|
17
|
+
self_signup_access_code: 'Auth.PAGE_SIGNUP_SUBTITLE_ACCESS_CODE',
|
|
18
|
+
self_signup_open: 'Auth.PAGE_SIGNUP_SUBTITLE_OPEN',
|
|
19
|
+
self_signup_email_domain: 'Auth.PAGE_SIGNUP_SUBTITLE_EMAIL_DOMAIN',
|
|
20
|
+
self_signup_qr: 'Auth.PAGE_SIGNUP_SUBTITLE_QR',
|
|
21
21
|
};
|
|
22
22
|
export function SignUpPage() {
|
|
23
23
|
const navigate = useNavigate();
|
|
@@ -47,33 +47,15 @@ export function SignUpPage() {
|
|
|
47
47
|
const [submitting, setSubmitting] = useState(false);
|
|
48
48
|
const [successKey, setSuccessKey] = useState(null);
|
|
49
49
|
const [errorKey, setErrorKey] = useState(null);
|
|
50
|
-
const
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
return t(MODE_HINTS[mode], 'Use this option only if you were given an access code for signup.');
|
|
50
|
+
const pageSubtitle = useMemo(() => {
|
|
51
|
+
if (mode === 'self_signup_qr' && tokenFromUrl) {
|
|
52
|
+
return t('Auth.PAGE_SIGNUP_SUBTITLE_QR_READY', 'Enter your email address to complete sign-up with the QR link you opened.');
|
|
54
53
|
}
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
if (mode === 'self_signup_email_domain') {
|
|
59
|
-
return t(MODE_HINTS[mode], 'Use an email address from an allowed domain for this signup flow.');
|
|
60
|
-
}
|
|
61
|
-
if (mode === 'self_signup_qr') {
|
|
62
|
-
return qrHint || t(MODE_HINTS[mode], 'Use a valid QR signup link to continue.');
|
|
63
|
-
}
|
|
64
|
-
return '';
|
|
65
|
-
}, [mode, qrHint, t]);
|
|
54
|
+
return t(MODE_SUBTITLES[mode] || 'Auth.PAGE_SIGNUP_SUBTITLE', 'Choose a sign-up method and enter the required details.');
|
|
55
|
+
}, [mode, t, tokenFromUrl]);
|
|
66
56
|
useEffect(() => {
|
|
67
57
|
setMode(initialMode);
|
|
68
58
|
}, [initialMode]);
|
|
69
|
-
useEffect(() => {
|
|
70
|
-
if (!tokenFromUrl || mode !== 'self_signup_qr') {
|
|
71
|
-
setQrHint('');
|
|
72
|
-
return undefined;
|
|
73
|
-
}
|
|
74
|
-
setQrHint(t('Auth.SIGNUP_QR_READY', 'QR signup token detected. You can complete your signup now.'));
|
|
75
|
-
return undefined;
|
|
76
|
-
}, [mode, tokenFromUrl, t]);
|
|
77
59
|
const handleSubmit = async (event) => {
|
|
78
60
|
event.preventDefault();
|
|
79
61
|
setSuccessKey(null);
|
|
@@ -110,7 +92,7 @@ export function SignUpPage() {
|
|
|
110
92
|
const handleGoToLogin = () => {
|
|
111
93
|
navigate('/login');
|
|
112
94
|
};
|
|
113
|
-
return (_jsxs(NarrowPage, { title: t('Auth.LOGIN_SIGNUP_BUTTON'), subtitle:
|
|
95
|
+
return (_jsxs(NarrowPage, { title: t('Auth.LOGIN_SIGNUP_BUTTON'), subtitle: pageSubtitle, children: [_jsx(Helmet, { children: _jsxs("title", { children: [t('App.NAME'), " \u2013 ", t('Auth.LOGIN_SIGNUP_BUTTON')] }) }), successKey && (_jsx(Alert, { severity: "success", sx: { mb: 2 }, children: t(successKey, { email }) })), errorKey && (_jsx(Alert, { severity: "error", sx: { mb: 2 }, children: t(errorKey, t('Auth.INVITE_FAILED', 'Could not complete signup.')) })), signupModes.length > 1 && (_jsx(Stack, { spacing: 1, sx: { mb: 2 }, children: _jsx(Stack, { spacing: 1, children: signupModes.map((entry) => (_jsx(Button, { variant: mode === entry ? 'contained' : 'outlined', onClick: () => setMode(entry), disabled: submitting, fullWidth: true, children: t(MODE_LABELS[entry] || entry, entry) }, entry))) }) })), _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: email, onChange: (e) => setEmail(e.target.value), disabled: submitting }), mode === 'self_signup_access_code' && (_jsx(TextField, { label: t('Auth.ACCESS_CODE_LABEL'), type: "text", required: true, fullWidth: true, value: accessCode, onChange: (e) => setAccessCode(e.target.value), disabled: submitting })), mode === 'self_signup_qr' && (_jsx(Stack, { spacing: 1, children: _jsx(TextField, { label: t('Auth.SIGNUP_QR_TOKEN_LABEL', 'QR token'), value: tokenFromUrl, fullWidth: true, InputProps: { readOnly: true } }) })), _jsx(Button, { type: "submit", variant: "contained", disabled: submitting || signupModes.length === 0, children: submitting
|
|
114
96
|
? t('Auth.SIGNUP_SUBMITTING')
|
|
115
97
|
: t('Auth.SIGNUP_SUBMIT') })] }), _jsx(Box, { sx: { mt: 3 }, children: _jsxs(Typography, { variant: "body2", children: [t('Auth.SIGNUP_ALREADY_HAVE_ACCOUNT'), ' ', _jsx(Button, { onClick: handleGoToLogin, variant: "text", size: "small", children: t('Auth.SIGNUP_GO_TO_LOGIN') })] }) })] }));
|
|
116
98
|
}
|
package/package.json
CHANGED
|
@@ -333,10 +333,76 @@ export const authTranslations = {
|
|
|
333
333
|
"sw": "Tafadhali ingiza anwani ya barua pepe."
|
|
334
334
|
},
|
|
335
335
|
"Auth.PAGE_SIGNUP_SUBTITLE": {
|
|
336
|
-
"de": "
|
|
337
|
-
"fr": "
|
|
338
|
-
"en": "
|
|
339
|
-
"sw": "
|
|
336
|
+
"de": "Wählen Sie eine Registrierungsart und geben Sie die benötigten Angaben ein.",
|
|
337
|
+
"fr": "Choisissez une méthode d'inscription et saisissez les informations requises.",
|
|
338
|
+
"en": "Choose a sign-up method and enter the required details.",
|
|
339
|
+
"sw": "Chagua njia ya kujisajili na uingize taarifa zinazohitajika."
|
|
340
|
+
},
|
|
341
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_ACCESS_CODE": {
|
|
342
|
+
"de": "Geben Sie Ihre E-Mail-Adresse und den erhaltenen Zugangscode ein.",
|
|
343
|
+
"fr": "Saisissez votre adresse e-mail et le code d'accès reçu.",
|
|
344
|
+
"en": "Enter your email address and the access code you received.",
|
|
345
|
+
"sw": "Ingiza anwani yako ya barua pepe na msimbo wa ufikiaji uliopokea."
|
|
346
|
+
},
|
|
347
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_OPEN": {
|
|
348
|
+
"de": "Geben Sie Ihre E-Mail-Adresse ein, um sich direkt zu registrieren.",
|
|
349
|
+
"fr": "Saisissez votre adresse e-mail pour vous inscrire directement.",
|
|
350
|
+
"en": "Enter your email address to sign up directly.",
|
|
351
|
+
"sw": "Ingiza anwani yako ya barua pepe ili kujisajili moja kwa moja."
|
|
352
|
+
},
|
|
353
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_EMAIL_DOMAIN": {
|
|
354
|
+
"de": "Verwenden Sie eine E-Mail-Adresse aus einer freigegebenen Domain.",
|
|
355
|
+
"fr": "Utilisez une adresse e-mail provenant d'un domaine autorisé.",
|
|
356
|
+
"en": "Use an email address from an approved domain.",
|
|
357
|
+
"sw": "Tumia anwani ya barua pepe kutoka kwenye domeni iliyoidhinishwa."
|
|
358
|
+
},
|
|
359
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_QR": {
|
|
360
|
+
"de": "Öffnen Sie diese Seite über einen gültigen QR-Link und geben Sie dann Ihre E-Mail-Adresse ein.",
|
|
361
|
+
"fr": "Ouvrez cette page via un lien QR valide, puis saisissez votre adresse e-mail.",
|
|
362
|
+
"en": "Open this page from a valid QR link, then enter your email address.",
|
|
363
|
+
"sw": "Fungua ukurasa huu kupitia kiungo halali cha QR, kisha ingiza anwani yako ya barua pepe."
|
|
364
|
+
},
|
|
365
|
+
"Auth.PAGE_SIGNUP_SUBTITLE_QR_READY": {
|
|
366
|
+
"de": "Geben Sie Ihre E-Mail-Adresse ein, um die Registrierung mit diesem QR-Link abzuschließen.",
|
|
367
|
+
"fr": "Saisissez votre adresse e-mail pour terminer l'inscription avec ce lien QR.",
|
|
368
|
+
"en": "Enter your email address to complete sign-up with this QR link.",
|
|
369
|
+
"sw": "Ingiza anwani yako ya barua pepe ili kukamilisha kujisajili kwa kutumia kiungo hiki cha QR."
|
|
370
|
+
},
|
|
371
|
+
"Auth.SIGNUP_ACCESS_CODE_TAB": {
|
|
372
|
+
"de": "Mit Zugangscode",
|
|
373
|
+
"fr": "Avec code d'accès",
|
|
374
|
+
"en": "With access code",
|
|
375
|
+
"sw": "Kwa msimbo wa ufikiaji"
|
|
376
|
+
},
|
|
377
|
+
"Auth.SIGNUP_OPEN_TAB": {
|
|
378
|
+
"de": "Direkte Registrierung",
|
|
379
|
+
"fr": "Inscription directe",
|
|
380
|
+
"en": "Direct sign-up",
|
|
381
|
+
"sw": "Kujisajili moja kwa moja"
|
|
382
|
+
},
|
|
383
|
+
"Auth.SIGNUP_EMAIL_DOMAIN_TAB": {
|
|
384
|
+
"de": "Mit E-Mail-Domain",
|
|
385
|
+
"fr": "Avec domaine e-mail",
|
|
386
|
+
"en": "With email domain",
|
|
387
|
+
"sw": "Kwa domeni ya barua pepe"
|
|
388
|
+
},
|
|
389
|
+
"Auth.SIGNUP_QR_TAB": {
|
|
390
|
+
"de": "Mit QR-Link",
|
|
391
|
+
"fr": "Avec lien QR",
|
|
392
|
+
"en": "With QR link",
|
|
393
|
+
"sw": "Kwa kiungo cha QR"
|
|
394
|
+
},
|
|
395
|
+
"Auth.SIGNUP_QR_INVALID": {
|
|
396
|
+
"de": "Dieser QR-Link ist ungültig oder fehlt.",
|
|
397
|
+
"fr": "Ce lien QR est invalide ou manquant.",
|
|
398
|
+
"en": "This QR link is invalid or missing.",
|
|
399
|
+
"sw": "Kiungo hiki cha QR si sahihi au hakipo."
|
|
400
|
+
},
|
|
401
|
+
"Auth.SIGNUP_QR_TOKEN_LABEL": {
|
|
402
|
+
"de": "QR-Token",
|
|
403
|
+
"fr": "Jeton QR",
|
|
404
|
+
"en": "QR token",
|
|
405
|
+
"sw": "Tokeni ya QR"
|
|
340
406
|
},
|
|
341
407
|
|
|
342
408
|
"Auth.EMAIL_LABEL": {
|
package/src/pages/SignUpPage.jsx
CHANGED
|
@@ -21,11 +21,11 @@ const MODE_LABELS = {
|
|
|
21
21
|
self_signup_qr: 'Auth.SIGNUP_QR_TAB',
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
-
const
|
|
25
|
-
self_signup_access_code: 'Auth.
|
|
26
|
-
self_signup_open: 'Auth.
|
|
27
|
-
self_signup_email_domain: 'Auth.
|
|
28
|
-
self_signup_qr: 'Auth.
|
|
24
|
+
const MODE_SUBTITLES = {
|
|
25
|
+
self_signup_access_code: 'Auth.PAGE_SIGNUP_SUBTITLE_ACCESS_CODE',
|
|
26
|
+
self_signup_open: 'Auth.PAGE_SIGNUP_SUBTITLE_OPEN',
|
|
27
|
+
self_signup_email_domain: 'Auth.PAGE_SIGNUP_SUBTITLE_EMAIL_DOMAIN',
|
|
28
|
+
self_signup_qr: 'Auth.PAGE_SIGNUP_SUBTITLE_QR',
|
|
29
29
|
};
|
|
30
30
|
|
|
31
31
|
export function SignUpPage() {
|
|
@@ -60,46 +60,24 @@ export function SignUpPage() {
|
|
|
60
60
|
const [submitting, setSubmitting] = useState(false);
|
|
61
61
|
const [successKey, setSuccessKey] = useState(null);
|
|
62
62
|
const [errorKey, setErrorKey] = useState(null);
|
|
63
|
-
const [qrHint, setQrHint] = useState('');
|
|
64
63
|
|
|
65
|
-
const
|
|
66
|
-
if (mode === '
|
|
64
|
+
const pageSubtitle = useMemo(() => {
|
|
65
|
+
if (mode === 'self_signup_qr' && tokenFromUrl) {
|
|
67
66
|
return t(
|
|
68
|
-
|
|
69
|
-
'
|
|
67
|
+
'Auth.PAGE_SIGNUP_SUBTITLE_QR_READY',
|
|
68
|
+
'Enter your email address to complete sign-up with the QR link you opened.',
|
|
70
69
|
);
|
|
71
70
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
if (mode === 'self_signup_email_domain') {
|
|
79
|
-
return t(
|
|
80
|
-
MODE_HINTS[mode],
|
|
81
|
-
'Use an email address from an allowed domain for this signup flow.',
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
if (mode === 'self_signup_qr') {
|
|
85
|
-
return qrHint || t(MODE_HINTS[mode], 'Use a valid QR signup link to continue.');
|
|
86
|
-
}
|
|
87
|
-
return '';
|
|
88
|
-
}, [mode, qrHint, t]);
|
|
71
|
+
return t(
|
|
72
|
+
MODE_SUBTITLES[mode] || 'Auth.PAGE_SIGNUP_SUBTITLE',
|
|
73
|
+
'Choose a sign-up method and enter the required details.',
|
|
74
|
+
);
|
|
75
|
+
}, [mode, t, tokenFromUrl]);
|
|
89
76
|
|
|
90
77
|
useEffect(() => {
|
|
91
78
|
setMode(initialMode);
|
|
92
79
|
}, [initialMode]);
|
|
93
80
|
|
|
94
|
-
useEffect(() => {
|
|
95
|
-
if (!tokenFromUrl || mode !== 'self_signup_qr') {
|
|
96
|
-
setQrHint('');
|
|
97
|
-
return undefined;
|
|
98
|
-
}
|
|
99
|
-
setQrHint(t('Auth.SIGNUP_QR_READY', 'QR signup token detected. You can complete your signup now.'));
|
|
100
|
-
return undefined;
|
|
101
|
-
}, [mode, tokenFromUrl, t]);
|
|
102
|
-
|
|
103
81
|
const handleSubmit = async (event) => {
|
|
104
82
|
event.preventDefault();
|
|
105
83
|
setSuccessKey(null);
|
|
@@ -143,7 +121,7 @@ export function SignUpPage() {
|
|
|
143
121
|
return (
|
|
144
122
|
<NarrowPage
|
|
145
123
|
title={t('Auth.LOGIN_SIGNUP_BUTTON')}
|
|
146
|
-
subtitle={
|
|
124
|
+
subtitle={pageSubtitle}
|
|
147
125
|
>
|
|
148
126
|
<Helmet>
|
|
149
127
|
<title>
|
|
@@ -165,19 +143,14 @@ export function SignUpPage() {
|
|
|
165
143
|
|
|
166
144
|
{signupModes.length > 1 && (
|
|
167
145
|
<Stack spacing={1} sx={{ mb: 2 }}>
|
|
168
|
-
<
|
|
169
|
-
{t(
|
|
170
|
-
'Auth.SIGNUP_MODE_SELECTOR_HINT',
|
|
171
|
-
'Choose the signup option that matches how you want to register.',
|
|
172
|
-
)}
|
|
173
|
-
</Alert>
|
|
174
|
-
<Stack direction={{ xs: 'column', sm: 'row' }} spacing={1} flexWrap="wrap">
|
|
146
|
+
<Stack spacing={1}>
|
|
175
147
|
{signupModes.map((entry) => (
|
|
176
148
|
<Button
|
|
177
149
|
key={entry}
|
|
178
150
|
variant={mode === entry ? 'contained' : 'outlined'}
|
|
179
151
|
onClick={() => setMode(entry)}
|
|
180
152
|
disabled={submitting}
|
|
153
|
+
fullWidth
|
|
181
154
|
>
|
|
182
155
|
{t(MODE_LABELS[entry] || entry, entry)}
|
|
183
156
|
</Button>
|
|
@@ -191,8 +164,6 @@ export function SignUpPage() {
|
|
|
191
164
|
onSubmit={handleSubmit}
|
|
192
165
|
sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}
|
|
193
166
|
>
|
|
194
|
-
{modeHint && <Alert severity="info">{modeHint}</Alert>}
|
|
195
|
-
|
|
196
167
|
<TextField
|
|
197
168
|
label={t('Auth.EMAIL_LABEL')}
|
|
198
169
|
type="email"
|