Skip to content

Commit 7d6da9c

Browse files
committed
Small improvements to Sign Up page
1 parent 5ab54ba commit 7d6da9c

File tree

5 files changed

+110
-35
lines changed

5 files changed

+110
-35
lines changed

frontend/src/common/utils/i18n/resources/en/auth.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"password": "Password",
2121
"remember-me": "Remember me",
2222
"username": "Username",
23-
"email": "Email Address",
23+
"email": "Email",
2424
"first-name": "First Name",
2525
"last-name": "Last Name",
2626
"confirm-password": "Confirm Password",
Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,38 @@
11
.ls-signup-page {
2-
.ls-signup-page__container {
3-
max-width: 32rem;
2+
&__content {
3+
--padding-start: 0;
4+
--padding-end: 0;
5+
--padding-top: 0;
6+
--padding-bottom: 0;
7+
}
8+
9+
&__background {
10+
position: absolute;
11+
top: 0;
12+
left: 0;
13+
width: 100%;
414
height: 100%;
15+
background-size: cover;
16+
background-position: center;
17+
background-repeat: no-repeat;
18+
z-index: -1;
19+
}
20+
21+
&__container {
522
display: flex;
623
flex-direction: column;
7-
padding-top: 1rem;
24+
justify-content: center;
25+
align-items: center;
26+
min-height: 100%;
27+
padding: 1rem;
828
}
929

10-
.ls-signup-page__form {
30+
&__form {
1131
width: 100%;
32+
max-width: 400px;
33+
border-radius: 16px;
34+
background-color: white;
35+
box-shadow: 0 4px 12px rgb(0 0 0 / 10%);
36+
overflow: hidden;
1237
}
1338
}

frontend/src/pages/Auth/SignUp/SignUpPage.tsx

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
import { IonContent, IonPage } from '@ionic/react';
2-
import { useTranslation } from 'react-i18next';
32

43
import './SignUpPage.scss';
54
import { PropsWithTestId } from 'common/components/types';
65
import ProgressProvider from 'common/providers/ProgressProvider';
7-
import Header from 'common/components/Header/Header';
86
import SignUpForm from './components/SignUpForm';
97
import Container from 'common/components/Content/Container';
8+
import splashBg from 'assets/Splash.png';
109

1110
/**
1211
* Properties for the `SignUpPage` component.
@@ -19,15 +18,15 @@ interface SignUpPageProps extends PropsWithTestId {}
1918
* @returns {JSX.Element} JSX
2019
*/
2120
const SignUpPage = ({ testid = 'page-signup' }: SignUpPageProps): JSX.Element => {
22-
const { t } = useTranslation();
23-
2421
return (
2522
<IonPage className="ls-signup-page" data-testid={testid}>
2623
<ProgressProvider>
27-
<Header title={t('signup', { ns: 'auth' })} />
28-
29-
<IonContent fullscreen className="ion-padding" scrollY={true}>
30-
<Container className="ls-signup-page__container" fixed>
24+
<IonContent fullscreen scrollY={true} className="ls-signup-page__content">
25+
<div
26+
className="ls-signup-page__background"
27+
style={{ backgroundImage: `url(${splashBg})` }}
28+
/>
29+
<Container className="ls-signup-page__container">
3130
<SignUpForm className="ls-signup-page__form" />
3231
</Container>
3332
</IonContent>

frontend/src/pages/Auth/SignUp/components/SignUpForm.scss

Lines changed: 68 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,95 @@
11
.ls-signup-form {
2-
padding: 1rem;
2+
width: 100%;
33

4-
.ls-signup-form__input {
5-
margin-bottom: 1rem;
4+
&__content {
5+
padding: 1.5rem;
66
}
77

8-
.ls-signup-form__button {
9-
margin-top: 1rem;
8+
&__title {
9+
font-size: 1.5rem;
10+
font-weight: 600;
11+
margin: 0 0 0.25rem;
12+
color: #333;
1013
}
1114

12-
&__password-guidelines {
13-
margin-top: -0.5rem;
15+
&__subtitle {
16+
font-size: 0.9rem;
17+
margin: 0 0 1.5rem;
18+
color: #666;
19+
}
20+
21+
&__input {
1422
margin-bottom: 1rem;
15-
font-size: 0.85rem;
1623

17-
&-header {
18-
margin-bottom: 0.25rem;
24+
ion-input {
25+
--border-radius: 8px;
26+
--border-width: 1px;
27+
--border-color: #d1d1d1;
28+
--padding-start: 12px;
29+
--padding-end: 12px;
30+
--padding-top: 12px;
31+
--padding-bottom: 12px;
32+
--background: #fff;
33+
}
34+
}
35+
36+
&__button {
37+
margin-top: 1.5rem;
38+
39+
--border-radius: 8px;
40+
--background: #734bff;
41+
--background-activated: #5a3acc;
42+
--background-focused: #5a3acc;
43+
--background-hover: #5a3acc;
44+
--color: white;
45+
46+
font-weight: 500;
47+
height: 48px;
48+
text-transform: none;
49+
50+
&[disabled] {
51+
--background: #e6e6e6;
52+
--color: #a0a0a0;
53+
54+
opacity: 1;
55+
}
56+
}
57+
58+
&__login-link {
59+
text-align: center;
60+
margin-top: 1.25rem;
61+
font-size: 0.9rem;
62+
63+
a {
64+
color: #734bff;
1965
font-weight: 500;
66+
text-decoration: none;
2067
}
68+
}
69+
70+
&__password-guidelines {
71+
display: flex;
72+
flex-direction: column;
73+
gap: 0.5rem;
74+
margin-top: -0.25rem;
75+
margin-bottom: 1rem;
76+
font-size: 0.85rem;
2177

2278
&-item {
2379
display: flex;
2480
align-items: center;
25-
margin-bottom: 0.125rem;
2681

2782
&-icon {
2883
margin-right: 0.375rem;
84+
font-size: 1.1rem;
2985
}
3086

3187
&-valid {
3288
color: var(--ion-color-success);
3389
}
3490

3591
&-invalid {
36-
color: var(--ion-color-medium);
92+
color: #c5c5c5;
3793
}
3894
}
3995
}

frontend/src/pages/Auth/SignUp/components/SignUpForm.tsx

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,14 @@ import classNames from 'classnames';
1313
import { Form, Formik, useFormikContext } from 'formik';
1414
import { object, string, ref } from 'yup';
1515
import { useTranslation } from 'react-i18next';
16-
import { checkmarkCircle, closeCircle } from 'ionicons/icons';
16+
import { checkmarkCircle, ellipseOutline } from 'ionicons/icons';
1717

1818
import './SignUpForm.scss';
1919
import { BaseComponentProps } from 'common/components/types';
2020
import { AuthError } from 'common/models/auth';
2121
import { useSignUp } from 'common/hooks/useAuth';
2222
import { useProgress } from 'common/hooks/useProgress';
2323
import Input from 'common/components/Input/Input';
24-
import HeaderRow from 'common/components/Text/HeaderRow';
2524
import { formatAuthError } from 'common/utils/auth-errors';
2625
import AuthErrorDisplay from 'common/components/Auth/AuthErrorDisplay';
2726
import AuthLoadingIndicator from 'common/components/Auth/AuthLoadingIndicator';
@@ -63,7 +62,7 @@ const PasswordGuidelines = () => {
6362
}`}
6463
>
6564
<IonIcon
66-
icon={isValid ? checkmarkCircle : closeCircle}
65+
icon={isValid ? checkmarkCircle : ellipseOutline}
6766
className="ls-signup-form__password-guidelines-item-icon"
6867
/>
6968
<span>{text}</span>
@@ -74,9 +73,9 @@ const PasswordGuidelines = () => {
7473
return (
7574
<div className="ls-signup-form__password-guidelines">
7675
{renderGuideline(hasMinLength, t('validation.min-length', { length: 8, ns: 'auth' }))}
76+
{renderGuideline(hasSpecialChar, t('validation.special-char', { ns: 'auth' }))}
7777
{renderGuideline(hasUppercase, t('validation.uppercase', { ns: 'auth' }))}
7878
{renderGuideline(hasNumber, t('validation.number', { ns: 'auth' }))}
79-
{renderGuideline(hasSpecialChar, t('validation.special-char', { ns: 'auth' }))}
8079
</div>
8180
);
8281
};
@@ -173,12 +172,8 @@ const SignUpForm = ({ className, testid = 'form-signup' }: SignUpFormProps): JSX
173172
}}
174173
validationSchema={validationSchema}
175174
>
176-
{({ dirty, isSubmitting }) => (
175+
{({ dirty, isSubmitting, isValid }) => (
177176
<Form data-testid={`${testid}-form`}>
178-
<HeaderRow border>
179-
<div>{t('signup', { ns: 'auth' })}</div>
180-
</HeaderRow>
181-
182177
<div className="ls-signup-form__content">
183178
<h2 className="ls-signup-form__title">{t('signup', { ns: 'auth' })}</h2>
184179
<p className="ls-signup-form__subtitle">
@@ -253,7 +248,7 @@ const SignUpForm = ({ className, testid = 'form-signup' }: SignUpFormProps): JSX
253248
color="primary"
254249
className="ls-signup-form__button"
255250
expand="block"
256-
disabled={isSubmitting || !dirty || isSignUpLoading || isLoading}
251+
disabled={isSubmitting || !isValid || !dirty || isSignUpLoading || isLoading}
257252
data-testid={`${testid}-button-submit`}
258253
>
259254
{t('signup.button', { ns: 'auth' })}

0 commit comments

Comments
 (0)