Skip to content

Commit b074067

Browse files
committed
feat: enhance footer accessibility
Signed-off-by: David Lima <antdavidlima@gmail.com>
1 parent f1c7707 commit b074067

5 files changed

Lines changed: 281 additions & 90 deletions

File tree

source/_assets/scss/_common.scss

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,24 @@ p {
120120
height: 100%;
121121
}
122122

123+
/*===== Accessibility =====*/
124+
125+
.visually-hidden {
126+
position: absolute !important;
127+
width: 1px !important;
128+
height: 1px !important;
129+
padding: 0 !important;
130+
margin: -1px !important;
131+
overflow: hidden !important;
132+
clip: rect(0, 0, 0, 0) !important;
133+
white-space: nowrap !important;
134+
border: 0 !important;
135+
}
136+
137+
.visually-hidden:not(caption) {
138+
clip-path: inset(50%) !important;
139+
}
140+
123141
/*===== All Button Style =====*/
124142

125143
.ud-main-btn {
@@ -192,7 +210,7 @@ p {
192210
}
193211

194212
&:focus {
195-
outline: 2px solid var(--primary-color);
213+
outline: 3px solid #00dbff;
196214
outline-offset: 2px;
197215
}
198216

@@ -201,7 +219,7 @@ p {
201219
}
202220

203221
&:focus-visible {
204-
outline: 2px solid var(--primary-color);
222+
outline: 3px solid #00dbff;
205223
outline-offset: 2px;
206224
}
207225

source/_assets/scss/_footer.scss

Lines changed: 194 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,27 @@
1313

1414
#coop-logo {
1515
margin-top: 36px;
16+
border-radius: 4px;
17+
display: inline-block;
18+
transition: all 0.3s ease;
1619

1720
img {
1821
max-width: 172px;
1922
}
23+
24+
&:focus {
25+
outline: 3px solid #00dbff;
26+
outline-offset: 4px;
27+
}
28+
29+
&:focus:not(:focus-visible) {
30+
outline: none;
31+
}
32+
33+
&:focus-visible {
34+
outline: 3px solid #00dbff;
35+
outline-offset: 4px;
36+
}
2037
}
2138

2239
#copyright {
@@ -29,29 +46,31 @@
2946
display: flex;
3047
height: 100%;
3148
flex-direction: column;
32-
justify-content: end;
33-
34-
p {
35-
color: var(--white);
36-
font-size: 12px;
37-
line-height: 22px;
38-
margin-bottom: 0;
39-
}
49+
justify-content: flex-end;
50+
color: var(--white);
51+
font-size: 12px;
52+
line-height: 22px;
53+
margin-bottom: 0;
54+
font-style: normal;
4055
}
4156

4257
.show-on-scroll {
4358
display: none;
4459
}
4560

4661
#footer-contact {
47-
height: 80px;
62+
min-height: 80px;
4863
width: 476px;
4964
border-radius: 16px;
5065
background-color: #d97706;
66+
border: none;
67+
display: flex;
68+
align-items: center;
69+
padding: 0;
5170

5271
position: fixed;
5372
right: 4px;
54-
bottom: -150px;
73+
bottom: 32px;
5574
z-index: 98;
5675

5776
cursor: pointer;
@@ -61,20 +80,23 @@
6180
transition: opacity 0.3s ease-in-out,
6281
visibility 0.3s ease-in-out,
6382
bottom 0.3s ease-in-out,
64-
transform 0.3s ease-in-out;
83+
transform 0.3s ease-in-out,
84+
width 0.3s ease-in-out,
85+
height 0.3s ease-in-out,
86+
border-radius 0.3s ease-in-out;
6587

6688
&.visible {
6789
opacity: 1;
6890
visibility: visible;
69-
bottom: -140px;
91+
bottom: 48px;
7092
}
7193

7294
&:hover {
7395
transform: translateY(-2px);
7496
}
7597

7698
&:focus {
77-
outline: 2px solid #d97706;
99+
outline: 3px solid #00dbff;
78100
outline-offset: 2px;
79101
}
80102

@@ -83,7 +105,7 @@
83105
}
84106

85107
&:focus-visible {
86-
outline: 2px solid #d97706;
108+
outline: 3px solid #00dbff;
87109
outline-offset: 2px;
88110
}
89111

@@ -95,8 +117,17 @@
95117
padding: 12px 60px 12px 20px;
96118
font-size: 18px;
97119
position: relative;
98-
top: 4px;
120+
top: 0;
99121
left: 4px;
122+
text-align: left;
123+
transition: opacity 0.3s ease-in-out,
124+
visibility 0.3s ease-in-out,
125+
width 0.3s ease-in-out;
126+
127+
p {
128+
margin: 0;
129+
text-align: left;
130+
}
100131

101132
&::after {
102133
content: '';
@@ -109,17 +140,36 @@
109140
border-top: 4px solid transparent;
110141
border-bottom: 4px solid transparent;
111142
border-left: 4px solid var(--white);
143+
transition: opacity 0.3s ease-in-out;
112144
}
113145
}
114146

147+
.image-wrapper {
148+
position: relative;
149+
display: flex;
150+
align-items: center;
151+
justify-content: center;
152+
margin-left: auto;
153+
padding-right: 24px;
154+
}
155+
115156
.image {
116157
width: 76px;
117158
aspect-ratio: 1/1;
118159
border-radius: 50%;
119160
background-color: #ffc107;
120-
position: absolute;
121-
right: 24px;
122-
bottom: 2px;
161+
position: relative;
162+
display: flex;
163+
align-items: center;
164+
justify-content: center;
165+
transition: all 0.3s ease-in-out;
166+
167+
img {
168+
width: 100%;
169+
height: 100%;
170+
object-fit: cover;
171+
border-radius: 50%;
172+
}
123173

124174
.status {
125175
width: 20px;
@@ -129,22 +179,75 @@
129179
position: absolute;
130180
right: 0;
131181
bottom: 0;
182+
transition: opacity 0.3s ease-in-out;
132183
}
133184
}
134185

135-
// Responsive design for smaller screens
136-
@media (max-width: 576px) {
137-
width: calc(100% - 8px);
138-
right: 4px;
186+
// Compact mode for tablets and smaller (< 992px)
187+
@media (max-width: 992px) {
188+
width: 80px;
189+
min-height: 80px;
190+
border-radius: 50%;
191+
justify-content: center;
192+
align-items: center;
193+
padding: 0;
194+
right: 11px;
195+
196+
&.visible {
197+
bottom: 40px;
198+
}
139199

140200
.bubble {
141-
width: calc(100% - 100px);
142-
font-size: 14px;
143-
padding: 8px 40px 8px 12px;
201+
opacity: 0;
202+
visibility: hidden;
203+
width: 0;
204+
pointer-events: none;
205+
display: none;
206+
207+
&::after {
208+
opacity: 0;
209+
}
210+
}
211+
212+
.image-wrapper {
213+
margin: 0;
214+
padding: 0;
215+
width: 100%;
216+
height: 100%;
217+
display: flex;
218+
align-items: center;
219+
justify-content: center;
144220
}
145221

146222
.image {
147-
right: 12px;
223+
position: relative;
224+
width: 64px;
225+
margin: 0;
226+
}
227+
228+
&:hover {
229+
.status {
230+
opacity: 0.8;
231+
}
232+
}
233+
}
234+
235+
// Extra small screens
236+
@media (max-width: 576px) {
237+
width: 64px;
238+
min-height: 64px;
239+
right: 10px;
240+
241+
&.visible {
242+
bottom: 12px;
243+
}
244+
245+
.image {
246+
width: 52px;
247+
}
248+
249+
.status {
250+
width: 16px;
148251
}
149252
}
150253
}
@@ -153,6 +256,13 @@
153256
margin-top: 32px;
154257
}
155258

259+
.ud-widget-address {
260+
display: flex;
261+
height: 100%;
262+
flex-direction: column;
263+
justify-content: flex-end;
264+
}
265+
156266
.ud-widget {
157267
.ud-footer-logo {
158268
display: block;
@@ -162,6 +272,22 @@
162272
width: 100%;
163273
max-width: 120px;
164274
}
275+
276+
&:focus {
277+
outline: 3px solid #00dbff;
278+
outline-offset: 4px;
279+
border-radius: 4px;
280+
}
281+
282+
&:focus:not(:focus-visible) {
283+
outline: none;
284+
}
285+
286+
&:focus-visible {
287+
outline: 3px solid #00dbff;
288+
outline-offset: 4px;
289+
border-radius: 4px;
290+
}
165291
}
166292

167293
.ud-widget-desc {
@@ -180,6 +306,8 @@
180306
display: flex;
181307
align-items: center;
182308
justify-content: center;
309+
border-radius: 4px;
310+
transition: all 0.3s ease;
183311

184312
.social-icon {
185313
color: var(--white);
@@ -189,6 +317,23 @@
189317
&:hover .social-icon {
190318
color: var(--primary-color);
191319
}
320+
321+
&:focus {
322+
outline: 3px solid #00dbff;
323+
outline-offset: 2px;
324+
background-color: rgba(0, 219, 255, 0.1);
325+
}
326+
327+
&:focus:not(:focus-visible) {
328+
outline: none;
329+
background-color: transparent;
330+
}
331+
332+
&:focus-visible {
333+
outline: 3px solid #00dbff;
334+
outline-offset: 2px;
335+
background-color: rgba(0, 219, 255, 0.1);
336+
}
192337
}
193338
}
194339

@@ -200,11 +345,34 @@
200345
a {
201346
font-size: 14px;
202347
color: var(--white);
348+
transition: all 0.3s ease;
349+
border-radius: 4px;
350+
padding: 4px 0;
203351

204352
&:hover {
205353
color: var(--primary-color);
206354
padding-left: 10px;
207355
}
356+
357+
&:focus {
358+
outline: 3px solid #00dbff;
359+
outline-offset: 2px;
360+
color: var(--primary-color);
361+
padding-left: 8px;
362+
}
363+
364+
&:focus:not(:focus-visible) {
365+
outline: none;
366+
color: var(--white);
367+
padding-left: 0;
368+
}
369+
370+
&:focus-visible {
371+
outline: 3px solid #00dbff;
372+
outline-offset: 2px;
373+
color: var(--primary-color);
374+
padding-left: 8px;
375+
}
208376
}
209377
}
210378

0 commit comments

Comments
 (0)