@eeacms/volto-eea-design-system 1.0.7 → 1.12.0

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 (38) hide show
  1. package/CHANGELOG.md +87 -1
  2. package/package.json +1 -1
  3. package/src/semantic.less +0 -4
  4. package/src/ui/Accordion/Accordion.stories.js +52 -123
  5. package/src/ui/Card/Card.stories.jsx +153 -11
  6. package/src/ui/Footer/Contact.jsx +31 -6
  7. package/src/ui/Footer/Footer.stories.js +76 -25
  8. package/src/ui/Header/Header.jsx +9 -3
  9. package/src/ui/Header/HeaderMenuPopUp.js +24 -10
  10. package/src/ui/Header/HeaderSearchPopUp.js +2 -1
  11. package/src/ui/Video/Video.jsx +44 -0
  12. package/src/ui/Video/Video.stories.jsx +53 -0
  13. package/src/ui/index.js +2 -2
  14. package/theme/theme.config +0 -3
  15. package/theme/themes/eea/assets/video/demo-track-el.vtt +11 -0
  16. package/theme/themes/eea/assets/video/demo-track-en.vtt +11 -0
  17. package/theme/themes/eea/assets/video/demo-track-ro.vtt +11 -0
  18. package/theme/themes/eea/collections/table.variables +1 -1
  19. package/theme/themes/eea/elements/header.overrides +0 -103
  20. package/theme/themes/eea/elements/image.overrides +6 -0
  21. package/theme/themes/eea/elements/image.variables +1 -0
  22. package/theme/themes/eea/elements/segment.overrides +7 -0
  23. package/theme/themes/eea/extras/banner.less +12 -0
  24. package/theme/themes/eea/extras/banner.variables +2 -0
  25. package/theme/themes/eea/extras/header.less +0 -11
  26. package/theme/themes/eea/extras/hero.less +33 -0
  27. package/theme/themes/eea/extras/hero.variables +1 -0
  28. package/theme/themes/eea/globals/mixins.less +8 -0
  29. package/theme/themes/eea/globals/site.overrides +40 -2
  30. package/theme/themes/eea/globals/utilities.less +47 -0
  31. package/theme/themes/eea/modules/accordion.overrides +7 -0
  32. package/theme/themes/eea/views/card.overrides +14 -11
  33. package/src/ui/Card/AvatarGrid/AvatarGrid.jsx +0 -61
  34. package/src/ui/Card/AvatarGrid/AvatarGrid.stories.jsx +0 -89
  35. package/src/ui/Card/RoundedCard.stories.jsx +0 -122
  36. package/theme/themes/eea/extras/avatar.variables +0 -28
  37. package/theme/themes/eea/extras/avatarGrid.less +0 -43
  38. package/theme/themes/eea/extras/avatarGrid.variables +0 -16
@@ -2,6 +2,8 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { Link } from 'react-router-dom';
4
4
 
5
+ import { isInternalURL } from '@plone/volto/helpers/Url/Url';
6
+
5
7
  const Contact = ({ children, contacts }) =>
6
8
  children?.length ? (
7
9
  children
@@ -9,15 +11,38 @@ const Contact = ({ children, contacts }) =>
9
11
  <div className="contact-block">
10
12
  {contacts?.map((contact, index) => (
11
13
  <div className="contact" key={index}>
12
- <Link to={contact.link} className="bold">
13
- {contact.text}
14
- </Link>
14
+ {isInternalURL(contact.link) ? (
15
+ <Link to={contact.link} className="bold">
16
+ {contact.text}
17
+ </Link>
18
+ ) : (
19
+ <a
20
+ href={contact.link}
21
+ target={'_blank'}
22
+ rel="noopener noreferrer"
23
+ className={'bold'}
24
+ >
25
+ {contact.text}
26
+ </a>
27
+ )}
15
28
  {contact.children && (
16
29
  <div className="subcontact">
17
30
  {contact.children.map((child, index) => (
18
- <Link to={child.link} key={index}>
19
- {child.text}
20
- </Link>
31
+ <>
32
+ {isInternalURL(child.link) ? (
33
+ <Link to={child.link} key={index}>
34
+ {child.text}
35
+ </Link>
36
+ ) : (
37
+ <a
38
+ href={child.link}
39
+ target={'_blank'}
40
+ rel="noopener noreferrer"
41
+ >
42
+ {child.text}
43
+ </a>
44
+ )}
45
+ </>
21
46
  ))}
22
47
  </div>
23
48
  )}
@@ -33,29 +33,60 @@ Default.args = {
33
33
  header: 'Environmental information systems',
34
34
  description: '',
35
35
  actions: [
36
- { link: '/#', title: 'Privacy' },
37
- { link: '/#', title: 'Sitemap' },
38
- { link: '/#', title: 'CMS Login' },
36
+ { link: '/privacy', title: 'Privacy' },
37
+ { link: '/sitemap', title: 'Sitemap' },
38
+ { link: 'https://www.eea.europa.eu/en/login', title: 'CMS Login' },
39
39
  ],
40
40
  copyright: [
41
41
  { link: 'https://status.eea.europa.eu/', title: 'System status' },
42
- { link: '/#', title: '© Copyright 2023 EEA' },
42
+ {
43
+ link: '/copyright',
44
+ title: '© Copyright 2023 EEA',
45
+ },
43
46
  ],
44
47
  sites: [
45
- { link: '/#', src: Marine, alt: 'WISE marine' },
46
- { link: '/#', src: Freshwater, alt: 'WISE freshwater' },
47
- { link: '/#', src: Bise, alt: 'Biodiversity' },
48
- { link: '/#', src: Fise, alt: 'Forest information system for europe' },
48
+ { link: 'https://water.europa.eu/marine', src: Marine, alt: 'WISE marine' },
49
+ {
50
+ link: 'https://water.europa.eu/freshwater',
51
+ src: Freshwater,
52
+ alt: 'WISE freshwater',
53
+ },
54
+ { link: 'https://biodiversity.europa.eu/', src: Bise, alt: 'Biodiversity' },
49
55
  {
50
- link: '/#',
56
+ link: 'https://forest.eea.europa.eu/',
57
+ src: Fise,
58
+ alt: 'Forest information system for europe',
59
+ },
60
+ {
61
+ link: 'https://climate-adapt.eea.europa.eu/observatory',
51
62
  src: ClimateHealth,
52
63
  alt: 'Information platform for chemical monitoring',
53
64
  },
54
- { link: '/#', src: Cca, alt: 'Climate adapt' },
55
- { link: '/#', src: Industry, alt: 'European industrial emissions portal' },
56
- { link: '/#', src: Energy, alt: 'Climate and energy in the EU' },
57
- { link: '/#', src: Copernicus, alt: 'Copernicus land monitoring service' },
58
- { link: '/#', src: Insitu, alt: 'Copernicus in situ' },
65
+ {
66
+ link: 'https://climate-adapt.eea.europa.eu/',
67
+ src: Cca,
68
+ alt: 'Climate adapt',
69
+ },
70
+ {
71
+ link: 'https://industry.eea.europa.eu/',
72
+ src: Industry,
73
+ alt: 'European industrial emissions portal',
74
+ },
75
+ {
76
+ link: 'https://climate-energy.eea.europa.eu/',
77
+ src: Energy,
78
+ alt: 'Climate and energy in the EU',
79
+ },
80
+ {
81
+ link: 'https://land.copernicus.eu/',
82
+ src: Copernicus,
83
+ alt: 'Copernicus land monitoring service',
84
+ },
85
+ {
86
+ link: 'https://insitu.copernicus.eu/',
87
+ src: Insitu,
88
+ alt: 'Copernicus in situ',
89
+ },
59
90
  ],
60
91
  managedBy: [
61
92
  {
@@ -82,23 +113,43 @@ Default.args = {
82
113
  },
83
114
  ],
84
115
  social: [
85
- { name: 'twitter', icon: 'ri-twitter-fill', link: '/#' },
86
- { name: 'facebook', icon: 'ri-facebook-box-fill', link: '/#' },
87
- { name: 'linkedin', icon: 'ri-linkedin-fill', link: '/#' },
88
- { name: 'youtube', icon: 'ri-youtube-fill', link: '/#' },
89
- { name: 'instagram', icon: 'ri-instagram-fill', link: '/#' },
90
- { name: 'rss', icon: 'ri-rss-fill', link: '/#' },
116
+ {
117
+ name: 'twitter',
118
+ icon: 'ri-twitter-fill',
119
+ link: 'https://twitter.com/euenvironment',
120
+ },
121
+ {
122
+ name: 'facebook',
123
+ icon: 'ri-facebook-box-fill',
124
+ link: 'https://www.facebook.com/European.Environment.Agency',
125
+ },
126
+ {
127
+ name: 'linkedin',
128
+ icon: 'ri-linkedin-fill',
129
+ link: 'https://www.linkedin.com/company/european-environment-agency',
130
+ },
131
+ {
132
+ name: 'youtube',
133
+ icon: 'ri-youtube-fill',
134
+ link: 'https://www.youtube.com/user/EEAvideos',
135
+ },
136
+ {
137
+ name: 'instagram',
138
+ icon: 'ri-instagram-fill',
139
+ link: 'https://www.instagram.com/ourplanet_eu',
140
+ },
141
+ { name: 'rss', icon: 'ri-rss-fill', link: '/subscription/news-feeds' },
91
142
  ],
92
143
  contacts: [
93
144
  {
94
145
  text: 'About us',
95
- link: '/#',
146
+ link: '/about',
96
147
  children: [
97
- { text: 'FAQs', link: '/#' },
98
- { text: 'Careers', link: '/#' },
148
+ { text: 'FAQs', link: 'http://external.site' },
149
+ { text: 'Careers', link: '/careers' },
99
150
  ],
100
151
  },
101
- { text: 'Contact us', link: '/#' },
102
- { text: 'Sign up to our newsletter', link: '/#' },
152
+ { text: 'Contact us', link: '/contact-us' },
153
+ { text: 'Sign up to our newsletter', link: '/newsletter' },
103
154
  ],
104
155
  };
@@ -138,6 +138,7 @@ const Main = ({
138
138
  transparency,
139
139
  inverted,
140
140
  hideSearch,
141
+ isMultilingual,
141
142
  }) => {
142
143
  const history = useHistory();
143
144
  const [activeItem, setActiveItem] = React.useState(pathname);
@@ -154,10 +155,15 @@ const Main = ({
154
155
  setSearchIsActive(false);
155
156
  setBurger('');
156
157
  // remove active menu when we have no pathname which means we hit logo to go home
157
- if (!pathname) {
158
+ //remove the lang route in order to check if empty
159
+ //setActiveItem as pathname when pathname changed
160
+ if (
161
+ !pathname ||
162
+ (isMultilingual === true && !pathname?.split('/')?.slice(2)?.join('/'))
163
+ ) {
158
164
  setActiveItem('');
159
- }
160
- }, [pathname]);
165
+ } else setActiveItem(pathname);
166
+ }, [isMultilingual, pathname]);
161
167
 
162
168
  React.useEffect(() => {
163
169
  if (searchIsActive) {
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { useState, useEffect } from 'react';
2
2
  import { Transition } from 'semantic-ui-react';
3
3
  import { Container, Grid, List, Icon, Accordion } from 'semantic-ui-react';
4
4
 
@@ -88,7 +88,7 @@ const Countries = ({ menuItem, renderMenuItem }) => (
88
88
  <Grid.Column width={8}>
89
89
  {menuItem.items.map((section, index) => (
90
90
  <React.Fragment key={index}>
91
- {section.title === 'EEA member countries' && (
91
+ {index === 0 && (
92
92
  <ItemGrid
93
93
  sectionTitle={section.title}
94
94
  item={section}
@@ -103,7 +103,7 @@ const Countries = ({ menuItem, renderMenuItem }) => (
103
103
  <Grid columns={1} className="nested-grid">
104
104
  {menuItem.items.map((section, index) => (
105
105
  <React.Fragment key={index}>
106
- {section.title !== 'EEA member countries' && (
106
+ {index !== 0 && (
107
107
  <Grid.Column>
108
108
  <ItemGrid
109
109
  sectionTitle={section.title}
@@ -244,17 +244,31 @@ const SecondLevelContent = ({ element, topics = false, renderMenuItem }) => {
244
244
  };
245
245
 
246
246
  const NestedAccordion = ({ menuItems, renderMenuItem, pathName }) => {
247
- let defaultIndex = -1;
247
+ const [activeIndex, setActiveIndex] = useState(-1);
248
+
249
+ useEffect(() => {
250
+ let index = 0;
251
+ menuItems.forEach((menuItem) => {
252
+ if (pathName.includes(menuItem.url)) setActiveIndex(index);
253
+ ++index;
254
+ });
255
+ }, [menuItems, pathName]);
256
+
248
257
  const rootPanels = [];
249
258
  menuItems.forEach((element, index) => {
250
259
  let x = {};
251
260
  x.key = index;
252
-
253
- if (pathName.indexOf(element.url) !== -1) {
254
- defaultIndex = index;
255
- }
256
261
  x.title = (
257
- <Accordion.Title key={`title-${index}`} index={index} as="button">
262
+ <Accordion.Title
263
+ key={`title-${index}`}
264
+ index={index}
265
+ as="button"
266
+ onClick={() => {
267
+ if (activeIndex === index) {
268
+ setActiveIndex(-1);
269
+ } else setActiveIndex(index);
270
+ }}
271
+ >
258
272
  {element.title}
259
273
  <Icon className="ri-arrow-down-s-line" size="small" />
260
274
  </Accordion.Title>
@@ -289,7 +303,7 @@ const NestedAccordion = ({ menuItems, renderMenuItem, pathName }) => {
289
303
  rootPanels.push(x);
290
304
  });
291
305
 
292
- return <Accordion defaultActiveIndex={defaultIndex} panels={rootPanels} />;
306
+ return <Accordion activeIndex={activeIndex} panels={rootPanels} />;
293
307
  };
294
308
 
295
309
  function HeaderMenuPopUp({
@@ -30,6 +30,7 @@ function HeaderSearchPopUp({
30
30
  const {
31
31
  path = '',
32
32
  buttonTitle,
33
+ buttonUrl,
33
34
  description,
34
35
  placeholder = 'Search',
35
36
  searchSuggestions,
@@ -115,7 +116,7 @@ function HeaderSearchPopUp({
115
116
  <Container>
116
117
  <div>{description}</div>
117
118
  <a
118
- href={defaultView[0].path}
119
+ href={buttonUrl || defaultView[0].path}
119
120
  className="ui button white inverted"
120
121
  title="Advanced search"
121
122
  >
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import cx from 'classnames';
3
+
4
+ function Video({ children, align }) {
5
+ return <div className={cx('block video align', align)}>{children}</div>;
6
+ }
7
+
8
+ Video.Body = ({ children, align }) => (
9
+ <div className={cx('video-inner', { 'full-width': align === 'full' })}>
10
+ {children}
11
+ </div>
12
+ );
13
+
14
+ Video.Embed = ({
15
+ children,
16
+ url,
17
+ loop,
18
+ autoPlay,
19
+ align,
20
+ placeholder_image,
21
+ required_caption,
22
+ }) => {
23
+ return (
24
+ <video
25
+ src={url}
26
+ controls={!autoPlay}
27
+ autoPlay={autoPlay}
28
+ muted={autoPlay}
29
+ loop={loop}
30
+ poster={placeholder_image}
31
+ type="video/mp4"
32
+ >
33
+ <track kind="captions" {...required_caption} />
34
+ {children}
35
+ </video>
36
+ );
37
+ };
38
+
39
+ Video.Track = ({ tracks }) =>
40
+ tracks.map((track, index) => {
41
+ return <track {...track} />;
42
+ });
43
+
44
+ export default Video;
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+ import { Container } from 'semantic-ui-react';
3
+ import Video from './Video';
4
+ import englishTrack from '@eeacms/volto-eea-design-system/../theme/themes/eea/assets/video/demo-track-en.vtt';
5
+ import romanianTrack from '@eeacms/volto-eea-design-system/../theme/themes/eea/assets/video/demo-track-ro.vtt';
6
+ import greekTrack from '@eeacms/volto-eea-design-system/../theme/themes/eea/assets/video/demo-track-el.vtt';
7
+
8
+ export default {
9
+ title: 'Components/Video',
10
+ component: Video,
11
+ argTypes: {
12
+ align: {
13
+ options: ['center', 'right', 'left'],
14
+ control: {
15
+ type: 'select',
16
+ labels: {
17
+ '': 'default',
18
+ },
19
+ },
20
+ defaultValue: 'center',
21
+ table: {
22
+ defaultValue: { summary: 'center' },
23
+ type: { summary: 'string' },
24
+ },
25
+ },
26
+ },
27
+ };
28
+
29
+ const Template = (args) => (
30
+ <Container>
31
+ <Video align={args.align}>
32
+ <Video.Body align={args.align}>
33
+ <Video.Embed {...args}>
34
+ <Video.Track tracks={args.tracks} />
35
+ </Video.Embed>
36
+ </Video.Body>
37
+ </Video>
38
+ </Container>
39
+ );
40
+
41
+ export const Default = Template.bind({});
42
+ Default.args = {
43
+ url: 'https://cmshare.eea.europa.eu/s/Xw7kH2TJGCibHJf/download',
44
+ autoPlay: false,
45
+ loop: false,
46
+ align: 'center',
47
+ placeholder_image: '',
48
+ required_caption: { src: englishTrack, srclang: 'en', label: 'English' },
49
+ tracks: [
50
+ { src: romanianTrack, kind: 'captions', srclang: 'ro', label: 'Română' },
51
+ { src: greekTrack, kind: 'captions', srclang: 'el', label: 'Ελλήνικά' },
52
+ ],
53
+ };
package/src/ui/index.js CHANGED
@@ -22,8 +22,6 @@ export Timeline from './Timeline/Timeline';
22
22
 
23
23
  export Testimonial from './Quote/Testimonial/Testimonial';
24
24
 
25
- export AvatarGrid from './Card/AvatarGrid/AvatarGrid';
26
-
27
25
  export KeyContent from './KeyContent/KeyContent';
28
26
 
29
27
  export DownloadLabeledIcon from './DownloadLabeledIcon/DownloadLabeledIcon';
@@ -39,3 +37,5 @@ export RelatedContent from './Card/RelatedContent/RelatedContent';
39
37
  export Hero from './Hero/Hero';
40
38
 
41
39
  export Copyright from './Copyright/Copyright';
40
+
41
+ export Video from './Video/Video';
@@ -88,10 +88,8 @@
88
88
  @tagList : 'eea';
89
89
  @inpageNavigation : 'eea';
90
90
  @contextNavigation : 'eea';
91
- @avatar : 'eea';
92
91
  @divider : 'eea';
93
92
  @testimonial : 'eea';
94
- @avatarGrid : 'eea';
95
93
  @keyContent : 'eea';
96
94
  @publicationCard : 'eea';
97
95
  @contentBox : 'eea';
@@ -135,5 +133,4 @@
135
133
  @import (optional) "@{siteFolder}/@{addon}/@{addontype}s/@{addonelement}.overrides";
136
134
  }
137
135
 
138
-
139
136
  /* End Config */
@@ -0,0 +1,11 @@
1
+ WEBVTT
2
+
3
+ 00:00:00.000 --> 00:00:11.999 line:80%
4
+ [ΜΟΥΣΙΚΗ]
5
+
6
+ 00:00:12.000 --> 00:01:35.999 line:80%
7
+ Αυτά τα components χρησιμοποιούνται ως παράδειγμα χρήσης.
8
+ Αυτοί οι υπότιτλοι έχουν σκοπό την επίδειξη της λειτουργικότητας.
9
+
10
+ 00:01:36.000 --> 00:01:47.999 line:80%
11
+ [ΜΟΥΣΙΚΗ]
@@ -0,0 +1,11 @@
1
+ WEBVTT
2
+
3
+ 00:00:00.000 --> 00:00:11.999 line:80%
4
+ [MUSIC]
5
+
6
+ 00:00:12.000 --> 00:01:35.999 line:80%
7
+ These components are used for demo purposes.
8
+ This track is an example to demonstrate the functionality.
9
+
10
+ 00:01:36.000 --> 00:01:47.999 line:80%
11
+ [MUSIC]
@@ -0,0 +1,11 @@
1
+ WEBVTT
2
+
3
+ 00:00:00.000 --> 00:00:11.999 line:80%
4
+ [MUZICĂ]
5
+
6
+ 00:00:12.000 --> 00:01:35.999 line:80%
7
+ Aceste componente sunt utilizate în scopuri demonstrative.
8
+ Această piesă este un exemplu pentru a demonstra funcționalitatea.
9
+
10
+ 00:01:36.000 --> 00:01:47.999 line:80%
11
+ [MUZICĂ]
@@ -35,7 +35,7 @@
35
35
  @cellVerticalPadding: @relativeMini;
36
36
  @cellHorizontalPadding: @relativeMini;
37
37
  @cellVerticalAlign: inherit;
38
- @cellTextAlign: center;
38
+ @cellTextAlign: inherit;
39
39
  @cellBorder: 1px solid @secondaryColor;
40
40
 
41
41
  /* Table Header */
@@ -100,106 +100,3 @@
100
100
  flex: 1 0 auto;
101
101
  align-items: center;
102
102
  }
103
-
104
- //@media only screen and (max-width: @mobileWidth) {
105
- // .ui.segment.header-wrapper {
106
- // position: sticky !important;
107
- // z-index: 3;
108
- // background: @white;
109
- // }
110
- //
111
- // .ui.segment {
112
- // position: initial !important;
113
- // }
114
- //
115
- // .header .logo-nav-wrapper {
116
- // margin: 10px 0 10px;
117
- // }
118
- //}
119
- //
120
- //.ui.segment.header-wrapper {
121
- // padding: 0;
122
- //}
123
- //
124
- //.ui.segment .header {
125
- // padding: 0 15px;
126
- //}
127
- //
128
- //.header .logo-nav-wrapper {
129
- // align-items: center;
130
- //
131
- // .navigation {
132
- // display: flex;
133
- // width: 100%;
134
- // align-items: center;
135
- // justify-content: center;
136
- // }
137
- //}
138
- //
139
- //.header .logo-nav-wrapper .ui.pointing.secondary {
140
- // display: flex;
141
- // width: 100%;
142
- // max-width: 100%;
143
- // justify-content: unset;
144
- // margin: 0 !important;
145
- //
146
- // .navigation-links {
147
- // display: inline-flex;
148
- // width: 100%;
149
- // justify-content: center;
150
- // }
151
- //
152
- // .tools-wrapper {
153
- // display: flex;
154
- // flex: 1 0 auto;
155
- // align-items: center;
156
- // }
157
- //
158
- // .tools-search-wrapper {
159
- // margin-left: 0;
160
- // }
161
- //
162
- // .search form {
163
- // padding-top: 0 !important;
164
- // }
165
- //}
166
- //
167
- //@media only screen and (max-width: 766px) {
168
- // // #141204 take into account that for the header wrapper on mobile views
169
- // // we have the volto toolbar on top
170
- // .has-toolbar-collapsed .header-wrapper {
171
- // top: 20px;
172
- // }
173
- //
174
- // .has-toolbar .header-wrapper {
175
- // top: 100px;
176
- // }
177
- //}
178
- //
179
- //@media only screen and (min-width: 768px) and (max-width: @mobileWidth) {
180
- // // #141204 use fixed position instead of sticky in order to always
181
- // // have the header on top from 768px to 1279px
182
- // .ui.segment.header-wrapper {
183
- // position: fixed !important;
184
- // top: 0;
185
- // }
186
- //
187
- // .header-wrapper {
188
- // width: 100%; // when position fixed div behaves as inline
189
- // }
190
- //
191
- // .has-toolbar .header-wrapper {
192
- // width: calc(100% - 80px); // toolbar width
193
- // }
194
- //
195
- // .has-toolbar-collapsed .header-wrapper {
196
- // width: calc(100% - 20px);
197
- // }
198
- //}
199
- //
200
- //.ui.right.sidebar.metadata-sidebar.menu,
201
- //.ui.left.sidebar.metadata-sidebar.menu {
202
- // .ui.header {
203
- // padding: 0;
204
- // }
205
- //}
@@ -88,6 +88,12 @@
88
88
  position: relative;
89
89
  }
90
90
 
91
+ // https://www.eea.europa.eu/en/newsroom/photo-competitions
92
+ // ensure link focus goes over the image
93
+ .image-block-container > a {
94
+ display: @imageBlockContainerLinkDisplay;
95
+ }
96
+
91
97
  /* if the image is smaller than the content area the copyright
92
98
  isn't as big as the image unless the image is inline-block
93
99
  */
@@ -20,6 +20,7 @@
20
20
  @imageAlignLargeMaxWidth: 50%;
21
21
  @imageAlignMediumMaxWidth: 25%;
22
22
  @imageAlignSmallMaxWidth: 15%;
23
+ @imageBlockContainerLinkDisplay: block;
23
24
 
24
25
  /*-------------------
25
26
  Types
@@ -8,6 +8,13 @@
8
8
  padding-left: 0;
9
9
  }
10
10
 
11
+ @media print {
12
+ .ui.basic.segment.content-area {
13
+ margin-top: 0;
14
+ padding-top: 0;
15
+ }
16
+ }
17
+
11
18
  .ui.primary.segment {
12
19
  border-bottom: @4px solid @greyBorderColor;
13
20
  font-size: @16px;
@@ -228,4 +228,16 @@
228
228
  }
229
229
  }
230
230
 
231
+ @media print {
232
+ .eea.banner .gradient .content,
233
+ .eea.banner .image .gradient .content {
234
+ padding-top: @printContentPadding;
235
+ }
236
+
237
+ .eea.banner .gradient .content > div > div {
238
+ padding-top: 0;
239
+ padding-bottom: 0;
240
+ }
241
+ }
242
+
231
243
  .loadUIOverrides();
@@ -17,11 +17,13 @@
17
17
  @mobileContentPadding : 1rem 0 1.25rem;
18
18
  @tabletContentPadding : 3rem 0 1.25rem;
19
19
  @computerContentPadding : 5rem 0 1.25rem;
20
+ @printContentPadding : 15px;
20
21
 
21
22
  @mobileContentPaddingWithImage : 6.25rem 0 1.25rem;
22
23
  @tabletContentPaddingWithImage : 12.5rem 0 1.25rem;
23
24
  @computerContentPaddingWithImage : 15.625rem 0 1.25rem;
24
25
 
26
+
25
27
  /* Title */
26
28
  @titleFontWeight : @bold;
27
29
  @titleMaxWidth : 100%;