Skip to content

Commit 05fc077

Browse files
authored
Merge pull request #287 from Web-Dev-Path/refactor/to-scss-NewsletterSubscribe
Refactor/to scss NewsletterSubscribe
2 parents adaa2c5 + e247d9f commit 05fc077

File tree

4 files changed

+160
-184
lines changed

4 files changed

+160
-184
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
186186
- Footer
187187
- CardsColumns
188188
- Nav
189+
- NewsletterSubscribe
189190
- Extracted :root from themes.scss to globals.scss
190191
- Updated ContactUsForm's checkbox wrapper from div to label to enhance its accessibility
191192
- Updated SearchInput width to 100% for better styling
Lines changed: 132 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
@use '@/styles/index' as *;
2+
3+
.section {
4+
padding: 2.5rem 0;
5+
background-color: var(--color-primary-accent);
6+
7+
@include desktop {
8+
padding: 1rem 0;
9+
}
10+
}
11+
12+
.innerContainer {
13+
@include desktop {
14+
display: flex;
15+
justify-content: space-between;
16+
align-items: center;
17+
gap: 2rem;
18+
}
19+
}
20+
21+
.title {
22+
font-size: 1.5rem;
23+
color: var(--color-primary-content);
24+
margin: 0;
25+
white-space: nowrap;
26+
display: flex;
27+
gap: 0.5rem;
28+
29+
@include medium-desktop {
30+
font-size: 1.75rem;
31+
gap: 1rem;
32+
}
33+
34+
@include desktop {
35+
height: auto;
36+
}
37+
}
38+
39+
.rightChevron {
40+
position: relative;
41+
top: 0.1rem;
42+
@include large-desktop {
43+
top: unset;
44+
img {
45+
width: 1.5rem;
46+
height: 1.5rem;
47+
}
48+
}
49+
}
50+
51+
.form {
52+
@include desktop {
53+
display: flex;
54+
align-items: center;
55+
gap: 1rem;
56+
margin-left: auto;
57+
}
58+
}
59+
60+
.input {
61+
display: block;
62+
font-size: 1.2rem;
63+
border-radius: 1rem;
64+
height: 2rem;
65+
margin: 1rem 0;
66+
padding: 1rem 1.25rem;
67+
border: 1px solid var(--dark-bg);
68+
width: 100%;
69+
70+
&::placeholder {
71+
color: var(--color-primary-content);
72+
}
73+
74+
&:focus {
75+
outline: none;
76+
}
77+
78+
@include large-desktop {
79+
font-size: 1.5rem;
80+
height: 3rem;
81+
border-radius: 3rem;
82+
max-width: 25rem;
83+
}
84+
}
85+
86+
.inputName {
87+
@extend .input;
88+
89+
@include desktop {
90+
width: 12.25rem;
91+
}
92+
}
93+
94+
.inputEmail {
95+
@extend .input;
96+
97+
@include desktop {
98+
width: 16rem;
99+
}
100+
101+
@include large-desktop {
102+
width: 26rem;
103+
}
104+
}
105+
106+
.formInfo {
107+
font-size: 1rem;
108+
font-style: italic;
109+
color: var(--color-primary-content);
110+
}
111+
112+
.formResponse {
113+
margin-top: 1rem;
114+
115+
@include desktop {
116+
font-size: 1.2rem;
117+
margin: 0;
118+
}
119+
}
120+
121+
.formSending {
122+
@extend .formResponse;
123+
}
124+
125+
.formSuccess {
126+
@extend .formResponse;
127+
}
128+
129+
.formError {
130+
@extend .formResponse;
131+
color: var(--error);
132+
}

components/NewsletterSubscribe/NewsletterForm/index.js

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ import { useEffect, useState } from 'react';
22
import Image from 'next/image';
33
import { decode } from 'html-entities';
44
import { NewsLetterSubmitButton } from '@/components/buttons/SubmitButton';
5-
import S from './styles';
5+
import styles from './NewsletterForm.module.scss';
6+
import Container from '@/components/containers/Container';
67

78
const NewsletterForm = ({ status, message, subscribe, getReCaptchaToken }) => {
89
const [error, setError] = useState(null);
@@ -109,29 +110,31 @@ const NewsletterForm = ({ status, message, subscribe, getReCaptchaToken }) => {
109110
};
110111

111112
return (
112-
<S.Section>
113-
<S.InnerContainer>
114-
<S.Title>
113+
<section className={styles.section}>
114+
<Container className={styles.innerContainer}>
115+
<h2 className={styles.title}>
115116
Sign up for news
116-
<S.RightChevron>
117+
<span className={styles.rightChevron}>
117118
<Image
118119
src='/images/svg/right-chevron.svg'
119120
height={18}
120121
width={18}
121122
alt='Right Chevron SVG'
122123
/>
123-
</S.RightChevron>
124-
</S.Title>
124+
</span>
125+
</h2>
125126
<div>
126-
<S.Form onSubmit={handleFormSubmit}>
127-
<S.InputName
127+
<form className={styles.form} onSubmit={handleFormSubmit}>
128+
<input
129+
className={styles.inputName}
128130
onChange={event => setName(event?.target?.value ?? '')}
129131
type='text'
130132
name='name'
131133
value={name}
132134
placeholder='name'
133135
/>
134-
<S.InputEmail
136+
<input
137+
className={styles.inputEmail}
135138
onChange={event => setEmail(event?.target?.value ?? '')}
136139
type='email'
137140
name='email'
@@ -140,32 +143,36 @@ const NewsletterForm = ({ status, message, subscribe, getReCaptchaToken }) => {
140143
onKeyUp={event => handleInputKeyEvent(event)}
141144
/>
142145
<NewsLetterSubmitButton label='Subscribe' />
143-
</S.Form>
146+
</form>
144147

145-
<S.FormInfo>
148+
<div className={styles.formInfo}>
146149
{reCaptchaFail && (
147-
<S.FormSending>
150+
<div className={styles.formSending}>
148151
Please, refresh your screen and try it again.
149-
</S.FormSending>
152+
</div>
150153
)}
151154

152-
{status === 'sending' && <S.FormSending>Sending...</S.FormSending>}
155+
{status === 'sending' && (
156+
<div className={styles.formSending}>Sending...</div>
157+
)}
153158
{status === 'error' || error ? (
154-
<S.FormError
159+
<div
160+
className={styles.formError}
155161
dangerouslySetInnerHTML={{
156162
__html: error || getMessage(message),
157163
}}
158164
/>
159165
) : null}
160166
{status === 'success' && status !== 'error' && !error && (
161-
<S.FormSuccess
167+
<div
168+
className={styles.formSuccess}
162169
dangerouslySetInnerHTML={{ __html: decode(message) }}
163170
/>
164171
)}
165-
</S.FormInfo>
172+
</div>
166173
</div>
167-
</S.InnerContainer>
168-
</S.Section>
174+
</Container>
175+
</section>
169176
);
170177
};
171178

0 commit comments

Comments
 (0)