@eeacms/volto-eea-design-system 0.7.5 → 0.8.1

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/mockups/EEA component library.fig +0 -0
  3. package/mockups/page-templates/R1 R3 templates.fig +0 -0
  4. package/mockups/page-templates/WISE BISE FISE.fig +0 -0
  5. package/mockups/page-templates/datahub/Data hub updated proposal.fig +0 -0
  6. package/mockups/page-templates/homepage_selected_upd1.fig +0 -0
  7. package/mockups/special-designs/Mega Menu.fig +0 -0
  8. package/mockups/special-designs/New footer.fig +0 -0
  9. package/mockups/special-designs/Search (Final).fig +0 -0
  10. package/mockups/special-designs/Side Navigation.fig +0 -0
  11. package/package.json +1 -1
  12. package/src/ui/Card/AvatarGrid/AvatarGrid.jsx +25 -13
  13. package/src/ui/Card/AvatarGrid/AvatarGrid.stories.jsx +33 -13
  14. package/src/ui/Card/Card.stories.jsx +173 -77
  15. package/src/ui/Card/IconCard/IconCard.stories.jsx +195 -0
  16. package/src/ui/Card/PublicationCard.stories.jsx +15 -3
  17. package/src/ui/Card/RelatedContent/RelatedContent.jsx +30 -8
  18. package/src/ui/Card/RelatedContent/RelatedContent.stories.jsx +20 -0
  19. package/src/ui/Card/RoundedCard.stories.jsx +46 -20
  20. package/src/ui/Footer/Contact.jsx +11 -7
  21. package/src/ui/Footer/Footer.jsx +1 -1
  22. package/src/ui/Footer/FooterActions.jsx +24 -7
  23. package/src/ui/Footer/FooterHeader.jsx +1 -1
  24. package/src/ui/Footer/FooterSites.jsx +22 -10
  25. package/src/ui/Footer/SubFooter.jsx +42 -38
  26. package/theme/themes/eea/assets/images/Footer/Extras/footervisual.svg +2041 -1731
  27. package/theme/themes/eea/collections/breadcrumb.overrides +4 -0
  28. package/theme/themes/eea/collections/breadcrumb.variables +1 -1
  29. package/theme/themes/eea/collections/message.overrides +19 -20
  30. package/theme/themes/eea/collections/message.variables +45 -23
  31. package/theme/themes/eea/extras/banner.less +0 -8
  32. package/theme/themes/eea/extras/custom.overrides +4 -1
  33. package/theme/themes/eea/extras/footer.less +69 -59
  34. package/theme/themes/eea/extras/footer.variables +31 -35
  35. package/theme/themes/eea/extras/header.variables +1 -1
  36. package/theme/themes/eea/globals/site.overrides +20 -0
  37. package/theme/themes/eea/globals/site.variables +31 -28
  38. package/theme/themes/eea/globals/utilities.less +6 -1
  39. package/theme/themes/eea/tokens/fonts.less +18 -17
  40. package/theme/themes/eea/views/card.overrides +179 -123
  41. package/theme/themes/eea/views/card.variables +34 -33
  42. package/theme/themes/eea/views/item.overrides +15 -1
  43. package/theme/themes/eea/views/item.variables +5 -2
@@ -9,7 +9,6 @@
9
9
  --------------------*/
10
10
 
11
11
  @fontName : 'Roboto';
12
- @secondaryFontName : 'Archivo';
13
12
  @fontSmoothing : antialiased;
14
13
 
15
14
  @headerFont : @fontName, Arial, 'Helvetica Neue', Helvetica, sans-serif;
@@ -71,15 +70,16 @@
71
70
  Page Heading
72
71
  ---------------*/
73
72
 
74
- @headerLineHeight : 1.25;
73
+ @headerLineHeight : 1.2;
75
74
  @headerFontWeight : @font-weight-7;
75
+ @headerColor: inherit;
76
76
 
77
- @h1 : unit((48 / @fontSize), rem);
78
- @h2 : unit((40 / @fontSize), rem);
79
- @h3 : unit((36 / @fontSize), rem);
80
- @h4 : unit((24 / @fontSize), rem);
81
- @h5 : unit((20 / @fontSize), rem);
82
- @h6 : unit((18 / @fontSize), rem);
77
+ @h1 : unit((44 / @fontSize), rem);
78
+ @h2 : unit((32 / @fontSize), rem);
79
+ @h3 : unit((26 / @fontSize), rem);
80
+ @h4 : unit((20 / @fontSize), rem);
81
+ @h5 : unit((18 / @fontSize), rem);
82
+ @h6 : unit((16 / @fontSize), rem);
83
83
 
84
84
  @mobileH1: unit((30 / @fontSize), rem);
85
85
  @mobileH2: unit((24 / @fontSize), rem);
@@ -181,6 +181,7 @@
181
181
  @lineHeight : @font-lineheight-3;
182
182
  @mobileLineHeight : @font-lineheight-3;
183
183
  @textColor : rgba(0, 0, 0, 1);
184
+ @contentAreaColor : @tertiaryColor;
184
185
 
185
186
  /*-------------------
186
187
  Paragraph
@@ -348,7 +349,7 @@
348
349
 
349
350
 
350
351
  /*--- Colors ---*/
351
- @orange : #EBA33D;
352
+ @orange : #FF9933;
352
353
  @yellow : #F2EB49;
353
354
  @olive : #78AB66;
354
355
  @green : @pineGreen;
@@ -495,32 +496,34 @@
495
496
  --------------------*/
496
497
 
497
498
  /* Positive */
498
- @positiveColor : @pineGreen;
499
- @positiveBackgroundColor : #EDF9F0;
500
- @positiveBorderColor : #EDF9F0;
501
- @positiveHeaderColor : @pineGreen;
502
- @positiveTextColor : @pineGreen;
499
+ @positiveColor : @green-6;
500
+ @positiveBackgroundColor : #FCFFF5;
501
+ @positiveBorderColor : @green-4;
502
+ @positiveHeaderColor : @green-6;
503
+ @positiveTextColor : @green-6;
503
504
 
504
505
  /* Negative */
505
- @negativeColor : @red;
506
+ @negativeColor : @red-5;
506
507
  @negativeBackgroundColor : @white;
507
- @negativeBorderColor : @red; //#FEEFEF;
508
- @negativeHeaderColor : @red;
509
- @negativeTextColor : @red;
508
+ @negativeBorderColor : @red-4;
509
+ @negativeHeaderColor : @red-5;
510
+ @negativeTextColor : @red-5;
510
511
 
511
512
  /* Info */
512
- @infoColor : @mediumPersianBlue;
513
- @infoBackgroundColor : #EEF2FA;
514
- @infoBorderColor : #EEF2FA;
515
- @infoHeaderColor : @mediumPersianBlue;
516
- @infoTextColor : @mediumPersianBlue;
513
+ @infoColor : @blue-6;
514
+ @infoBackgroundColor : #F8FFFF;
515
+ @infoBorderColor : @blue-4;
516
+ @infoHeaderColor : @blue-6;
517
+ @infoTextColor : @blue-6;
518
+
517
519
 
518
520
  /* Warning */
519
- @warningColor : #EBA33D;
520
- @warningBorderColor : #FFF4EC;
521
- @warningBackgroundColor : #FFF4EC;
522
- @warningHeaderColor : #EBA33D;
523
- @warningTextColor : #EBA33D;
521
+ @warningColor : @brown-6;
522
+ @warningBackgroundColor : #FFFAF3;
523
+ @warningBorderColor : @brown-4;
524
+ @warningHeaderColor : @brown-6;
525
+ @warningTextColor : @brown-6;
526
+
524
527
 
525
528
  /*-------------------
526
529
  Paths
@@ -33,10 +33,15 @@ h1, h2, h3, h4, h5, h6, p, span, .header {
33
33
  .flex-items-end { align-items: flex-end !important; }
34
34
  .flex-items-center { align-items: center !important; }
35
35
 
36
- // Align text
36
+ // Text
37
37
  .text-left { text-align: left !important; }
38
38
  .text-center { text-align: center !important;}
39
39
  .text-right { text-align: right !important; }
40
+ .bold { font-weight: bold !important; }
41
+
42
+ // Text utilities
43
+ .bold { font-weight: @bold !important; }
44
+ .underline { text-decoration: underline !important; }
40
45
 
41
46
  // Quotes
42
47
  .quoted-wrapper h2::before,
@@ -8,7 +8,7 @@
8
8
  @font-weight-8: 800;
9
9
  @font-weight-9: 900;
10
10
  @font-lineheight-00: .95;
11
- @font-lineheight-0: 1.1;
11
+ @font-lineheight-0: 1.2;
12
12
  @font-lineheight-1: 1.25;
13
13
  @font-lineheight-2: 1.375;
14
14
  @font-lineheight-3: 1.5;
@@ -16,24 +16,25 @@
16
16
  @font-lineheight-5: 2;
17
17
  @font-letterspacing-000: -.02em;
18
18
  @font-letterspacing-00: -.015em;
19
- @font-letterspacing-0: -.005em;
20
- @font-letterspacing-1: .005em;
19
+ @font-letterspacing-0: -.01em;
20
+ @font-letterspacing-1: .01em;
21
21
  @font-letterspacing-2: .015em;
22
22
  @font-letterspacing-3: .02em;
23
23
  @font-letterspacing-4: .075em;
24
24
  @font-letterspacing-5: .15em;
25
25
  @font-size-00: .75rem;
26
- @font-size-0: .875rem;
27
- @font-size-1: 1rem;
28
- @font-size-2: 1.1rem;
29
- @font-size-3: 1.25rem;
30
- @font-size-4: 1.5rem;
31
- @font-size-5: 2rem;
32
- @font-size-6: 2.25rem;
33
- @font-size-7: 2.5rem;
34
- @font-size-8: 3rem;
35
- @font-size-9: 3.5rem;
36
- @font-size-fluid-0: clamp(.75rem, 2vw, 1rem);
37
- @font-size-fluid-1: clamp(1rem, 4vw, 1.5rem);
38
- @font-size-fluid-2: clamp(1.5rem, 6vw, 2.5rem);
39
- @font-size-fluid-3: clamp(2rem, 9vw, 3.5rem);
26
+ @font-size-0: .875rem;
27
+ @font-size-1: 1rem;
28
+ @font-size-2: 1.125rem;
29
+ @font-size-3: 1.25rem;
30
+ @font-size-4: 1.5rem;
31
+ @font-size-5: 1.625rem;
32
+ @font-size-6: 1.875rem;
33
+ @font-size-7: 2rem;
34
+ @font-size-8: 2.25rem;
35
+ @font-size-9: 2.5rem;
36
+ @font-size-10: 2.75rem;
37
+ @font-size-fluid-0: clamp(1.125rem, 2vw, 1.25rem);
38
+ @font-size-fluid-1: clamp(1.25rem, 4vw, 1.625rem);
39
+ @font-size-fluid-2: clamp(1.5rem, 6vw, 2rem);
40
+ @font-size-fluid-3: clamp(1.875rem, 9vw, 2.75rem);
@@ -27,6 +27,24 @@
27
27
  }
28
28
  }
29
29
 
30
+ .ui.cards > .card > i.icon,
31
+ .ui.cards > .card > a > i.icon,
32
+ .ui.card > i.icon,
33
+ .ui.card > a > i.icon {
34
+ color: @iconColor;
35
+ }
36
+
37
+ .ui.cards > .card > .content > *:not(:last-child),
38
+ .ui.card > .content > *:not(:last-child) {
39
+ margin-bottom: @cardContentMarginBottom;
40
+ }
41
+
42
+ .ui.card .meta {
43
+ display: flex;
44
+ justify-content: space-between;
45
+ }
46
+
47
+
30
48
  .ui.card .meta > .category {
31
49
  font-size: @metaFontSize;
32
50
  }
@@ -61,7 +79,8 @@
61
79
  Primary
62
80
  *******************************/
63
81
 
64
- .ui.card.primary {
82
+ .ui.card.primary:not(.inverted),
83
+ .ui.card.primary:not(.inverted) .image {
65
84
  background: @primaryBackground;
66
85
  }
67
86
 
@@ -69,6 +88,10 @@
69
88
  color: @primaryHeaderColor;
70
89
  }
71
90
 
91
+ .ui.card.primary > i.icon,
92
+ .ui.card.primary > a > i.icon,
93
+ .ui.card.primary > .content a,
94
+ .ui.card.primary > .content a:hover,
72
95
  .ui.card.primary > .content > .description {
73
96
  color: @primaryDescriptionColor;
74
97
  }
@@ -81,18 +104,40 @@
81
104
  }
82
105
  }
83
106
 
84
- .ui.card.primary > .content > .meta {
107
+ .ui.card.primary > .content > .meta,
108
+ .ui.card.primary > .content > .meta a {
85
109
  color: @primaryMetaColor;
86
110
  }
87
111
 
112
+ /* Inverted */
113
+ .ui.card.primary.inverted > i.icon,
114
+ .ui.card.primary.inverted > .content * {
115
+ color: @invertedPrimaryContentColor;
116
+ }
117
+
118
+ .ui.card.primary.inverted > a > i.icon,
119
+ .ui.card.primary.inverted > .content a,
120
+ .ui.card.primary.inverted > .extra.content a:not(.ui) {
121
+ color: @invertedPrimaryContentColor;
122
+
123
+ &:hover {
124
+ color: @invertedPrimaryColorHover;
125
+ }
126
+ }
127
+
88
128
  /*******************************
89
129
  Secondary
90
130
  *******************************/
91
131
 
92
- .ui.card.secondary {
132
+ .ui.card.secondary:not(.inverted),
133
+ .ui.card.secondary:not(.inverted) .image {
93
134
  background: @secondaryBackground;
94
135
  }
95
136
 
137
+ .ui.card.secondary > i.icon,
138
+ .ui.card.secondary > a > i.icon,
139
+ .ui.card.secondary > .content a,
140
+ .ui.card.secondary > .content a:hover,
96
141
  .ui.card.secondary > .content > .header {
97
142
  color: @secondaryHeaderColor;
98
143
  }
@@ -109,18 +154,40 @@
109
154
  }
110
155
  }
111
156
 
112
- .ui.card.secondary > .content > .meta {
157
+ .ui.card.secondary > .content > .meta,
158
+ .ui.card.secondary > .content > .meta a {
113
159
  color: @secondaryMetaColor;
114
160
  }
115
161
 
162
+ /* Inverted */
163
+ .ui.card.secondary.inverted > i.icon,
164
+ .ui.card.secondary.inverted > .content * {
165
+ color: @invertedSecondaryContentColor;
166
+ }
167
+
168
+ .ui.card.secondary.inverted > a > i.icon,
169
+ .ui.card.secondary.inverted > .content a,
170
+ .ui.card.secondary.inverted > .extra.content a:not(.ui) {
171
+ color: @invertedSecondaryContentColor;
172
+
173
+ &:hover {
174
+ color: @invertedSecondaryColorHover;
175
+ }
176
+ }
177
+
116
178
  /*******************************
117
179
  Tertiary
118
180
  *******************************/
119
181
 
120
- .ui.card.tertiary {
182
+ .ui.card.tertiary:not(.inverted),
183
+ .ui.card.tertiary:not(.inverted) .image {
121
184
  background: @tertiaryBackground;
122
185
  }
123
186
 
187
+ .ui.card.tertiary > i.icon,
188
+ .ui.card.tertiary > a > i.icon,
189
+ .ui.card.tertiary > .content a,
190
+ .ui.card.tertiary > .content a:hover,
124
191
  .ui.card.tertiary > .content > .header {
125
192
  color: @tertiaryHeaderColor;
126
193
  }
@@ -137,10 +204,27 @@
137
204
  }
138
205
  }
139
206
 
140
- .ui.card.tertiary > .content > .meta {
207
+ .ui.card.tertiary > .content > .meta,
208
+ .ui.card.tertiary > .content > .meta a {
141
209
  color: @tertiaryMetaColor;
142
210
  }
143
211
 
212
+ /* Inverted */
213
+ .ui.card.tertiary.inverted > i.icon,
214
+ .ui.card.tertiary.inverted > .content * {
215
+ color: @invertedTertiaryContentColor;
216
+ }
217
+
218
+ .ui.card.tertiary.inverted > a > i.icon,
219
+ .ui.card.tertiary.inverted > .content a,
220
+ .ui.card.tertiary.inverted > .extra.content a:not(.ui) {
221
+ color: @invertedTertiaryContentColor;
222
+
223
+ &:hover {
224
+ color: @invertedTertiaryColorHover;
225
+ }
226
+ }
227
+
144
228
  /*******************************
145
229
  Rounded Card
146
230
  *******************************/
@@ -151,18 +235,23 @@
151
235
  }
152
236
 
153
237
  .ui.card.rounded {
154
- width: @roundedWidth;
238
+ padding-top: @iconCardPaddingTop;
155
239
  border: none;
156
240
 
157
- .content {
241
+ .image {
242
+ display: flex;
158
243
  justify-content: center;
159
- border-top: none;
160
244
 
161
- .image {
162
- display: flex;
163
- justify-content: center;
164
- background-color: @white;
245
+ img {
246
+ width: @roundedImageWidth;
247
+ height: @roundedImageHeight;
248
+ border-radius: @roundedImageBorderRadius;
165
249
  }
250
+ }
251
+
252
+ .content {
253
+ justify-content: center;
254
+ border-top: none;
166
255
 
167
256
  .header {
168
257
  margin-bottom: @roundedContentTitleMarginBottom;
@@ -173,53 +262,12 @@
173
262
 
174
263
  .description {
175
264
  text-align: center;
265
+ font-size: @roundedMetadataFontSize;
266
+ font-weight: @roundedMetadataFontWeight;
176
267
  }
177
268
  }
178
269
  }
179
270
 
180
- .ui.card.rounded.big {
181
- .image {
182
- display: flex;
183
- justify-content: center;
184
- background-color: @white;
185
-
186
- img {
187
- width: @roundedBigImageWidth;
188
- height: @roundedBigImageHeight;
189
- border-radius: 50%;
190
- }
191
- }
192
-
193
- .description {
194
- font-size: @roundedBigMetadataFontSize;
195
- font-weight: @roundedBigMetadataFontWeight;
196
- }
197
- }
198
-
199
- .ui.rounded.small {
200
- .image {
201
- display: flex;
202
- justify-content: center;
203
- background-color: @white;
204
-
205
- img {
206
- display: flex;
207
- width: @roundedSmallImageWidth;
208
- height: @roundedSmallImageHeight;
209
- border-radius: @roundedImageBorderRadius;
210
- }
211
- }
212
-
213
- .header {
214
- color: @roundedSmallTitleColor;
215
- }
216
-
217
- .description {
218
- font-size: @roundedSmallMetadataFontSize;
219
- font-weight: @roundedSmallMetadataFontWeight;
220
- }
221
- }
222
-
223
271
  /*******************************
224
272
  Publication Card
225
273
  *******************************/
@@ -239,7 +287,8 @@
239
287
  padding: @cardContentPadding;
240
288
  background-color: @publicationCardDescriptionColor;
241
289
 
242
- .meta {
290
+ .meta,
291
+ .meta a {
243
292
  color: @publicationCardtextColor;
244
293
  font-size: @cardMetaFontSize;
245
294
  font-weight: @cardMetaTagFontWeight;
@@ -306,35 +355,14 @@
306
355
  .cards-carousel {
307
356
  position: relative;
308
357
 
309
- .ui.button.icon.slider-arrow {
310
- padding: @carouselButtonPadding;
311
- display: none;
312
-
313
- .active, &:focus, &:hover {
314
- background: transparent;
315
- }
316
-
317
- .icon {
318
- color: @carouselButtonIconColor;
319
- font-size: @carouselButtonIconFontSize;
320
- }
321
- }
322
-
323
- .slick-arrow {
324
- display: block !important;
325
- }
326
-
327
- .slick-prev,
328
- .slick-next {
329
- display: none !important;
330
- }
331
-
332
358
  .slick-list {
333
- margin: 0 -0.75em !important;
359
+ margin: @slickListMargin;
334
360
  }
335
361
 
336
362
  .slick-track {
337
363
  display: flex;
364
+ gap: @slickTrackGap;
365
+ margin: @slickTrackMargin;
338
366
  }
339
367
 
340
368
  .slick-slide {
@@ -342,69 +370,97 @@
342
370
  height: auto;
343
371
  flex: 1;
344
372
  flex-direction: column;
345
- padding: 15px 0.75em !important;
346
373
 
347
374
  > div {
348
375
  height: 100%;
349
376
  }
350
377
  }
378
+ }
351
379
 
352
- .slider-arrow {
353
- position: absolute;
354
- top: 50%;
355
- bottom: auto;
356
- display: block;
357
- padding: 0;
358
- border: none;
380
+ /* Carousel arrows */
381
+ .cards-carousel .ui.button.icon.slider-arrow {
382
+ padding: @carouselButtonPadding;
383
+
384
+ .active, &:focus, &:hover {
359
385
  background: transparent;
360
- cursor: pointer;
361
- outline: none;
362
- transform: translate(0, -50%);
363
386
  }
364
387
 
365
- .prev-arrow {
366
- right: auto;
367
- left: @carouselButtonDistance;
388
+ &:focus-visible {
389
+ outline: auto;
368
390
  }
369
391
 
370
- .next-arrow {
371
- right: @carouselButtonDistance;
372
- left: auto;
392
+ .icon {
393
+ color: @carouselButtonIconColor;
394
+ font-size: @carouselButtonIconFontSize;
395
+ opacity: @carouselButtonIconOpacity;
396
+ padding-top: @carouselButtonPaddingTop;
397
+ width: auto;
373
398
  }
399
+ }
374
400
 
375
- .slick-dots {
376
- position: relative;
377
- bottom: unset;
378
- }
401
+ .cards-carousel .slider-arrow {
402
+ position: absolute;
403
+ top: 50%;
404
+ bottom: auto;
405
+ padding: 0;
406
+ border: none;
407
+ background: transparent;
408
+ cursor: pointer;
409
+ outline: none;
410
+ transform: translate(0, -50%);
411
+ }
379
412
 
380
- .slick-dots li button:before {
381
- background-color: @carouselDotsBackgroundColor;
382
- color: transparent;
383
- border: @carouselDotsBorder;
384
- border-radius: @carouselDotsBorderRadius;
385
- opacity: @carouselDotsOpacity;
386
- width: @mobileCarouselDotsWidth;
387
- height: @mobileCarouselDotsHeight;
388
- }
413
+ .cards-carousel .prev-arrow {
414
+ right: auto;
415
+ left: @carouselButtonDistance;
416
+ }
389
417
 
390
- .slick-dots li.slick-active button:before {
391
- background-color: @carouselDotsActiveBackgroundColor;
392
- color: transparent;
418
+ .cards-carousel .next-arrow {
419
+ right: @carouselButtonDistance;
420
+ left: auto;
421
+ }
393
422
 
394
- }
423
+ /* Custom carousel pagination bullets */
424
+ .cards-carousel .slick-dots li button:before {
425
+ background-color: @carouselDotsBackgroundColor;
426
+ color: transparent;
427
+ border: @carouselDotsBorder;
428
+ border-radius: @carouselDotsBorderRadius;
429
+ opacity: @carouselDotsOpacity;
430
+ width: @mobileCarouselDotsWidth;
431
+ height: @mobileCarouselDotsHeight;
432
+ }
433
+
434
+ .cards-carousel .slick-dots li.slick-active button:before {
435
+ background-color: @carouselDotsActiveBackgroundColor;
436
+ color: transparent;
395
437
  }
396
438
 
439
+ .slick-dots li button:focus-visible {
440
+ outline: black;
441
+ outline-style: auto;
442
+ }
397
443
 
398
444
  @media only screen and (min-width: @computerBreakpoint) {
399
- .cards-carousel {
445
+ .cards-carousel .slick-dots li button:before {
446
+ width: inherit;
447
+ height: inherit;
448
+ }
449
+ }
400
450
 
401
- .ui.button.icon.slider-arrow {
402
- display: block;
403
- }
451
+ /*******************************
452
+ Icon Card
453
+ *******************************/
404
454
 
405
- .slick-dots li button:before {
406
- width: inherit;
407
- height: inherit;
455
+ .ui.card.icon {
456
+ padding-top: @iconCardPaddingTop;
457
+ .content {
458
+ border-top: none;
459
+ .header {
460
+ word-break: break-word;
408
461
  }
409
462
  }
410
- }
463
+ .icon {
464
+ margin: auto;
465
+ }
466
+ }