mp-design-system 0.6.3 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. package/dist/build/js/app.js +9 -5
  2. package/dist/build/js/app.js.map +1 -1
  3. package/dist/build/scss/library.css +1 -1
  4. package/dist/build/scss/library.css.map +1 -1
  5. package/dist/build/scss/main.css +1 -1
  6. package/dist/build/scss/main.css.map +1 -1
  7. package/package.json +1 -1
  8. package/src/_includes/components/button/button.njk +1 -1
  9. package/src/_includes/components/campaign/campaign.config.js +3 -3
  10. package/src/_includes/components/card/card.scss +4 -14
  11. package/src/_includes/components/comparison-table/comparison-table.scss +5 -0
  12. package/src/_includes/components/hero/hero.config.js +26 -2
  13. package/src/_includes/components/hero/hero.njk +23 -1
  14. package/src/_includes/components/hero/hero.scss +34 -0
  15. package/src/_includes/components/industry-card/industry-card.njk +2 -2
  16. package/src/_includes/components/industry-card/industry-card.scss +4 -4
  17. package/src/_includes/components/meta-box/meta-box.scss +5 -1
  18. package/src/_includes/components/table/table.config.js +12 -0
  19. package/src/_includes/components/table/table.njk +8 -2
  20. package/src/_includes/includes/related-events.njk +1 -1
  21. package/src/_includes/includes/resources.njk +1 -1
  22. package/src/_includes/layout.njk +28 -4
  23. package/src/assets/js/app.js +6 -2
  24. package/src/assets/js/imports/hero-video.js +34 -0
  25. package/src/assets/js/imports/scrollbar-width.js +15 -0
  26. package/src/assets/js/imports/utilities.js +10 -0
  27. package/src/assets/scss/components/gallery.scss +16 -68
  28. package/src/assets/scss/components/index.scss +1 -0
  29. package/src/assets/scss/components/lightbox.scss +62 -0
  30. package/src/assets/scss/library.scss +6 -2
  31. package/src/assets/scss/objects/grid.scss +0 -1
  32. package/src/assets/scss/tools/breakout.scss +2 -0
  33. package/src/assets/scss/utilities/display.scss +6 -4
  34. package/src/assets/scss/utilities/hr.scss +4 -0
  35. package/src/assets/scss/utilities/index.scss +4 -0
  36. package/src/components/utilities.md +47 -4
  37. package/src/patterns/grid-of-cards.njk +57 -21
  38. package/src/prototype/index.njk +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mp-design-system",
3
- "version": "0.6.3",
3
+ "version": "0.7.5",
4
4
  "description": "",
5
5
  "main": "app.js",
6
6
  "scripts": {
@@ -22,7 +22,7 @@
22
22
  {%- elseif params.type == 'span' -%}
23
23
  <span class="{{ classNames }}" {{ attrs }}>
24
24
  {%- else -%}
25
- <button type="{{ params.type or 'button' }}" class="{{ classNames}}"{{ attrs }}>
25
+ <button type="{{ params.type or 'button' }}" class="{{ classNames}}" {{ attrs }}>
26
26
  {%- endif -%}
27
27
  {%- if params.icon -%}
28
28
  {{ twi({ icon: params.icon, align: params.align, label: params.label }) }}
@@ -24,19 +24,19 @@ module.exports = {
24
24
  {
25
25
  title: 'Petrol',
26
26
  context: {
27
- classes: 'c-campaign__petrol'
27
+ classes: 'c-campaign--petrol'
28
28
  }
29
29
  },
30
30
  {
31
31
  title: 'Blue',
32
32
  context: {
33
- classes: 'c-campaign__blue'
33
+ classes: 'c-campaign--blue'
34
34
  }
35
35
  },
36
36
  {
37
37
  title: 'Orange',
38
38
  context: {
39
- classes: 'c-campaign__orange'
39
+ classes: 'c-campaign--orange'
40
40
  }
41
41
  }
42
42
  ],
@@ -170,20 +170,6 @@
170
170
  }
171
171
  }
172
172
 
173
- // &--fixed-aspect figure {
174
- // height: 0;
175
- // padding-bottom: 62.5%;
176
- // aspect-ratio: 16/10;
177
- // position: relative;
178
- // }
179
- // &--image-margin figure {
180
- // @include margin("s-m", "s-m", 0, "s-m");
181
- // }
182
-
183
- &--layout-single &__figure {
184
- @extend .u-16\/9;
185
- }
186
-
187
173
  &__primary {
188
174
  @include flow("s");
189
175
  }
@@ -418,3 +404,7 @@
418
404
  @include gap("s-l");
419
405
  }
420
406
  }
407
+
408
+ // IE11 fix
409
+ // This forces IE11 to use display:block instead of flex for single-column cards
410
+ _:-ms-fullscreen, :root .c-card, :root .c-card--layout-single .c-card__wrapper { display:block; }
@@ -52,6 +52,11 @@
52
52
  }
53
53
  }
54
54
 
55
+ thead img {
56
+ @include space('max-height', '3xl');
57
+ object-fit: contain;
58
+ }
59
+
55
60
  }
56
61
 
57
62
  @media only screen and (min-width: 640px) {
@@ -55,7 +55,7 @@ module.exports = {
55
55
  }
56
56
  },
57
57
  {
58
- title: 'For homepage',
58
+ title: 'Homepage',
59
59
  context: {
60
60
  title: "We’re big on small.",
61
61
  subtitle: null,
@@ -76,7 +76,7 @@ module.exports = {
76
76
  }
77
77
  },
78
78
  {
79
- title: 'For homepage (light)',
79
+ title: 'Homepage (light)',
80
80
  context: {
81
81
  title: "We’re big on small.",
82
82
  subtitle: null,
@@ -96,6 +96,30 @@ module.exports = {
96
96
  homepage: 'light'
97
97
  }
98
98
  },
99
+ // {
100
+ // title: 'Homepage with video',
101
+ // context: {
102
+ // title: 'We\'re big on small.',
103
+ // subtitle: null,
104
+ // content: '<p>We make scientific instruments and services that make the invisible visible, and the impossible possible.</p>',
105
+ // images: [
106
+ // { src: '/static/img/homepage_1_back.webp' },
107
+ // ],
108
+ // shortvideo: [
109
+ // { src: '' },
110
+ // { type: 'video/mp4' },
111
+ // ],
112
+ // longvideo: [
113
+ // { src: '' },
114
+ // { type: 'video/mp4' },
115
+ // ],
116
+ // cta: {
117
+ // label: 'About Malvern Panalytical',
118
+ // link: ''
119
+ // },
120
+ // homepage: 'dark'
121
+ // },
122
+ // }
99
123
  ],
100
124
  props: [
101
125
  {
@@ -1,5 +1,7 @@
1
1
  {% from "components/twi/macro.njk" import twi %}
2
2
  {% from "components/breadcrumb/macro.njk" import breadcrumb %}
3
+ {% from "components/button/macro.njk" import button %}
4
+ {% from "components/icon/macro.njk" import icon %}
3
5
 
4
6
  {%- set classes = 'mp c-hero' -%}
5
7
  {% if params.classes %}{%- set classes = classes + ' ' + params.classes -%}{% endif %}
@@ -38,7 +40,6 @@
38
40
  </div>
39
41
  </div>
40
42
 
41
-
42
43
  {% if params.image %}
43
44
  <div class="c-hero__image-bg" style="background-image:url({{ params.image.src }});"></div>
44
45
  {% elif params.images %}
@@ -47,6 +48,12 @@
47
48
  {% endfor %}
48
49
  {% endif %}
49
50
 
51
+ {% if params.shortvideo %}
52
+ <video id="videoBackground" class="c-hero__video-bg" autoplay loop>
53
+ <source src="" type="video/mp4">
54
+ </video>
55
+ {% endif %}
56
+
50
57
  {% if params.homepage %}
51
58
  <canvas class="c-hero__canvas"></canvas>
52
59
  {% endif %}
@@ -56,4 +63,19 @@
56
63
  <div class="c-hero__image-fg" style="background-image:url({{ image.src }});"></div>
57
64
  {% endfor %}
58
65
  {% endif %}
66
+
67
+ {% if params.longvideo %}
68
+ {{ button({ link: '', label: 'Play video', colour: 'outline-white', classes: 'c-hero__button', attrs: 'id=playVideo' }) }}
69
+ {% endif %}
59
70
  </figure>
71
+
72
+ <div id="lightboxVideo" class="c-lightbox u-hidden">
73
+ <div class="c-lightbox__close">
74
+ {{ icon({ id: 'cross' }) }}
75
+ </div>
76
+ <div class="c-lightbox__slide active">
77
+ <video class="c-lightbox__video" controls controlslist="nodownload">
78
+ <source src="" type="video/mp4">
79
+ </video>
80
+ </div>
81
+ </div>
@@ -157,6 +157,40 @@
157
157
  @extend .c-hero__image-bg;
158
158
  z-index: 1;
159
159
  }
160
+
161
+ &__video-bg {
162
+ width: 100%;
163
+ height: auto;
164
+ margin-bottom: -6px;
165
+
166
+ @media (min-width: 38em) {
167
+ position: absolute;
168
+ top: 0;
169
+ right: 0;
170
+ left: 40%;
171
+ max-width: 60%;
172
+ height: 100%;
173
+ object-fit: cover;
174
+ -webkit-mask-image: radial-gradient(circle farthest-side at top right, black 80%, transparent 98%);
175
+ }
176
+ }
177
+
178
+ &__button {
179
+ position: absolute;
180
+ z-index: 2;
181
+ right: 0;
182
+ bottom: calc(56.25% / 2 - 25px);
183
+ left: 0;
184
+ margin: 0 auto;
185
+
186
+ @media (min-width: 38em) {
187
+ position: absolute;
188
+ top: 45%;
189
+ right: 20%;
190
+ bottom: unset;
191
+ left: unset;
192
+ }
193
+ }
160
194
  }
161
195
  }
162
196
 
@@ -1,7 +1,7 @@
1
1
  <article class="mp c-industry-card">
2
2
  <a class="c-industry-card__link u-flow--xs" href="{{ params.link }}">
3
- <figure class="c-industry-card__image u-16/9">
4
- <img class="u-fill" src="{{ params.image.src }}" alt="{{ params.image.alt or params.title }}" />
3
+ <figure class="c-industry-card__image">
4
+ <img class="u-2/1" src="{{ params.image.src }}" alt="{{ params.image.alt or params.title }}" />
5
5
  </figure>
6
6
  <h3 class="c-h c-h--reset">{{ params.title }}</h3>
7
7
  </a>
@@ -5,11 +5,11 @@
5
5
  display: block;
6
6
  }
7
7
 
8
- &__image {
9
- @extend .u-16\/9
10
- }
11
-
12
8
  &:hover .c-h--reset {
13
9
  text-decoration: underline;
14
10
  }
11
+
12
+ img {
13
+ width: 100%;
14
+ }
15
15
  }
@@ -3,4 +3,8 @@
3
3
  @include padding('s-m');
4
4
  @include step(-1);
5
5
  @include flow('s');
6
- }
6
+
7
+ .u-wrap--fields {
8
+ @include padding-right(0)
9
+ }
10
+ }
@@ -17,6 +17,18 @@ module.exports = {
17
17
  classes: 'c-table--fixed'
18
18
  }
19
19
  },
20
+ {
21
+ title: 'Vertical headers',
22
+ context: {
23
+ theme: 'vertical'
24
+ }
25
+ },
26
+ {
27
+ title: 'No headers',
28
+ context: {
29
+ theme: 'none'
30
+ }
31
+ },
20
32
  {
21
33
  title: 'Center',
22
34
  context: {
@@ -1,16 +1,22 @@
1
1
  <table class="mp c-table {{ params.classes }}" {{ params.attrs }}>
2
+ {% if params.theme != 'none'%}
2
3
  <thead>
3
4
  <tr>
4
5
  {% for header in params.headers %}
5
- <th>{{ header | safe }}</th>
6
+ {% if (params.theme != 'vertical') or ((params.theme == 'vertical') and (loop.index0 == 0)) %}
7
+ <th>{{ header | safe }}</th>
8
+ {% else %}
9
+ <td>{{ header | safe }}</td>
10
+ {% endif %}
6
11
  {% endfor %}
7
12
  </tr>
8
13
  </thead>
14
+ {% endif %}
9
15
  <tbody>
10
16
  {% for row in params.rows %}
11
17
  <tr>
12
18
  {% for cell in row %}
13
- {% if loop.index0 == 0 %}
19
+ {% if (params.theme == 'vertical') and (loop.index0 == 0) %}
14
20
  <th>{{ cell | safe }}</th>
15
21
  {% else %}
16
22
  <td>{{ cell | safe }}</td>
@@ -3,7 +3,7 @@
3
3
  <aside class="c-slat c-slat--grey c-slat--padded">
4
4
  <div class="u-wrap u-flow">
5
5
  <h3 class="c-h c-h--upper">Related events</h3>
6
- <div class="o-grid o-grid--of-three">
6
+ <div class="o-grid o-grid--of-three o-grid--swipeable">
7
7
  {{ card({
8
8
  theme: {
9
9
  layout: 'single',
@@ -3,7 +3,7 @@
3
3
  <aside class="mp c-slat c-slat--grey c-slat--padded">
4
4
  <div class="u-wrap u-flow--xl">
5
5
  <h2 class="c-h c-h--step-3">Related resources</h2>
6
- <div class="o-grid o-grid--of-three">
6
+ <div class="o-grid o-grid--of-three o-grid--swipeable">
7
7
  {{ card({
8
8
  theme: {
9
9
  layout: 'single',
@@ -14,10 +14,31 @@
14
14
  <meta property="og:image:alt" content="{{ config.name }}" />
15
15
  <meta name="twitter:image" content="{{ config.openGraphImage }}" />
16
16
  <link rel="preconnect" href="https://fonts.gstatic.com">
17
- <script>if(document.documentElement){
18
- document.documentElement.classList.add('has-js');
19
- document.documentElement.classList.remove('no-js');
20
- }</script>
17
+ <script>
18
+ if(document.documentElement){
19
+ document.documentElement.classList.add('has-js');
20
+ document.documentElement.classList.remove('no-js');
21
+ }
22
+ // Calculate the height of the sidebar so it doesn't cause double scrollbars
23
+ function debounce(func, wait, immediate) {
24
+ var timeout;
25
+ return function() {
26
+ var context = this, args = arguments;
27
+ var later = function() {
28
+ timeout = null;
29
+ if (!immediate) func.apply(context, args);
30
+ };
31
+ var callNow = immediate && !timeout;
32
+ clearTimeout(timeout);
33
+ timeout = setTimeout(later, wait);
34
+ if (callNow) func.apply(context, args);
35
+ };
36
+ };
37
+ var resizeSidebar = debounce(function() {
38
+ var headerHeight = document.querySelector('.c-library__header').offsetHeight + 'px';
39
+ document.documentElement.style.setProperty('--headerHeight', headerHeight)
40
+ }, 250);
41
+ </script>
21
42
  <link rel="icon" type="image/png" sizes="32x32" href="/static/img/favicon-32x32.png">
22
43
  <link rel="stylesheet" href="/build/scss/main.css" />
23
44
  <script>window.MSInputMethodContext && document.documentMode && document.write('<script src="https://cdn.jsdelivr.net/gh/nuxodin/ie11CustomProperties@4.1.0/ie11CustomProperties.min.js"><\/script>');</script>
@@ -30,12 +51,15 @@
30
51
  <script src="/build/js/app.js"></script>
31
52
  <script>
32
53
  (function() {
54
+ // Prevent empty links from jumping to the top of page when clicked
33
55
  var links = document.querySelectorAll('a[href=""],a[href="#"]');
34
56
  for(var i = 0; links.length > i; i++) {
35
57
  links[i].addEventListener('click', function(event) {
36
58
  event.preventDefault();
37
59
  })
38
60
  }
61
+ window.addEventListener('resize', resizeSidebar);
62
+ resizeSidebar();
39
63
  })();
40
64
  </script>
41
65
  </body>
@@ -3,7 +3,9 @@ import ClearForm from './imports/clear-form';
3
3
  import Comparison from './imports/comparison';
4
4
  import Gallery from './imports/gallery';
5
5
  import HeroPattern from './imports/hero-pattern';
6
+ import HeroVideo from './imports/hero-video';
6
7
  import ResponsiveTable from './imports/responsive-table';
8
+ import ScrollbarWidth from './imports/scrollbar-width';
7
9
  import ScrollSpy from './imports/scroll-spy';
8
10
  import Tabs from './imports/tabs';
9
11
 
@@ -20,7 +22,9 @@ import Tabs from './imports/tabs';
20
22
  Comparison();
21
23
  Gallery();
22
24
  HeroPattern();
23
- Tabs();
24
- ScrollSpy();
25
+ HeroVideo();
25
26
  ResponsiveTable();
27
+ ScrollbarWidth();
28
+ ScrollSpy();
29
+ Tabs();
26
30
  })();
@@ -0,0 +1,34 @@
1
+ function HeroVideo() {
2
+ document.addEventListener("DOMContentLoaded", () => {
3
+ const videoBackground = document.getElementById('videoBackground');
4
+ if(typeof(videoBackground) != 'undefined' && videoBackground != null) {
5
+ const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');
6
+ if(!reducedMotion || reducedMotion.matches) {
7
+ videoBackground.classList.add('u-hidden');
8
+ }
9
+
10
+ const lightboxTrigger = document.getElementById('playVideo');
11
+ const lightboxVideo = document.getElementById('lightboxVideo');
12
+
13
+ lightboxTrigger.addEventListener('click', e => {
14
+ videoBackground.removeAttribute('autoplay');
15
+ lightboxVideo.classList.remove('u-hidden');
16
+ });
17
+
18
+ lightboxVideo.addEventListener('click', (e) => {
19
+ if (!e.target.classList.contains('c-lightbox__video')) {
20
+ videoBackground.setAttribute('autoplay','');
21
+ lightboxVideo.classList.add('u-hidden');
22
+ }
23
+ });
24
+ window.addEventListener('keydown', function(e) {
25
+ if (e.key == "Escape") {
26
+ videoBackground.setAttribute('autoplay','');
27
+ lightboxVideo.classList.add('u-hidden');
28
+ }
29
+ });
30
+ }
31
+ });
32
+ }
33
+
34
+ export default HeroVideo;
@@ -0,0 +1,15 @@
1
+ import { debounce } from './utilities';
2
+
3
+ function ScrollbarWidth() {
4
+ setScrollbarWidth();
5
+ window.addEventListener('resize', debounce(setScrollbarWidth, 250));
6
+ }
7
+
8
+ function setScrollbarWidth() {
9
+ document.documentElement.style.setProperty(
10
+ '--scrollbarWidth',
11
+ window.innerWidth - document.body.clientWidth + 'px'
12
+ );
13
+ }
14
+
15
+ export default ScrollbarWidth;
@@ -15,6 +15,16 @@ export function userPrefersReducedMotion() {
15
15
  return prefersReducedMotion;
16
16
  }
17
17
 
18
+ export const debounce = (func, limit) => {
19
+ let wait = false;
20
+ return () => {
21
+ if (wait) return;
22
+ func();
23
+ wait = true;
24
+ setTimeout(() => wait = false, limit);
25
+ }
26
+ }
27
+
18
28
  export const lerp = (x, y, a) => x * (1 - a) + y * a;
19
29
  export const clamp = (a, min = 0, max = 1) => Math.min(max, Math.max(min, a));
20
30
  export const invlerp = (x, y, a) => clamp((a - x) / (y - x));
@@ -10,8 +10,13 @@
10
10
  width: 100%;
11
11
 
12
12
  img {
13
- margin: 0 auto;
14
13
  display: block;
14
+ margin: 0 auto;
15
+
16
+ @supports (object-fit:contain) {
17
+ max-height: 500px;
18
+ object-fit: contain;
19
+ }
15
20
  }
16
21
 
17
22
  &:not(.active) {
@@ -24,29 +29,22 @@
24
29
  @include padding-bottom('s');
25
30
  display: flex;
26
31
  flex-direction: row;
27
- flex-wrap: nowrap;
28
- -webkit-overflow-scrolling: touch;
29
- scroll-behavior: smooth;
30
- scroll-snap-type: x mandatory;
31
- overflow-x: auto;
32
+ flex-wrap: wrap;
33
+ gap: 2%;
34
+ gap: max(8px, 2%);
32
35
 
33
36
  & > * {
34
37
  background: color('grey', 'step-3');
35
- max-width: 25%;
36
- max-height: var(--space-2xl);
37
- min-width: var(--space-l);
38
- min-height: var(--space-l);
39
- width: auto;
40
- scroll-snap-align: start;
41
-
42
- & + * {
43
- margin-left: var(--space-xs-s);
44
- }
38
+ @include space('min-height', 'l');
39
+ @include space('max-height', '2xl');
40
+ @include space('min-width', 'l');
41
+ max-width: 10.75%;
45
42
 
46
43
  img {
47
- min-height: 100%;
48
- opacity: 0.9;
44
+ height: 100%;
45
+ opacity: 0.8;
49
46
  object-fit: cover;
47
+ width: 100%;
50
48
  }
51
49
 
52
50
  &.active img {
@@ -54,54 +52,4 @@
54
52
  }
55
53
  }
56
54
  }
57
- }
58
-
59
- .c-lightbox {
60
- position: fixed;
61
- z-index: 1000;
62
- top: 0;
63
- width: 100%;
64
- height: 100%;
65
- background-color: rgba(color('grey', 'step--1'), .9);
66
- display: flex;
67
- justify-content: center;
68
- align-items: center;
69
-
70
- &__slide {
71
- max-width: 90vw;
72
- margin: auto;
73
- display: none;
74
-
75
- &.active {
76
- display: block;
77
-
78
- img {
79
- max-width: 85vw;
80
- max-height: 90vh;
81
- margin: auto;
82
- display: block;
83
- }
84
- }
85
- }
86
-
87
- &__prev,
88
- &__next {
89
- position: absolute;
90
- height: 2rem;
91
- width: 2rem;
92
- background-repeat: no-repeat;
93
- background-position: center;
94
- padding: 0.5rem;
95
- cursor: pointer;
96
- }
97
-
98
- &__prev {
99
- background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="arrow-left" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12H2M2 12L9 5M2 12L9 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>');
100
- left: 0.5rem;
101
- }
102
-
103
- &__next {
104
- background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="arrow-right" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12H22M22 12L15 5M22 12L15 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>');
105
- right: 0.5rem;
106
- }
107
55
  }
@@ -30,3 +30,4 @@
30
30
 
31
31
  @import './headings.scss';
32
32
  @import './gallery.scss';
33
+ @import './lightbox.scss';
@@ -0,0 +1,62 @@
1
+ .c-lightbox {
2
+ position: fixed;
3
+ z-index: 1000;
4
+ top: 0;
5
+ width: 100%;
6
+ height: 100%;
7
+ background-color: rgba(color('grey', 'step--1'), .9);
8
+ display: flex;
9
+ justify-content: center;
10
+ align-items: center;
11
+
12
+ &__slide {
13
+ max-width: 90vw;
14
+ margin: auto;
15
+ display: none;
16
+
17
+ &.active {
18
+ display: block;
19
+
20
+ img {
21
+ max-width: 85vw;
22
+ max-height: 90vh;
23
+ margin: auto;
24
+ display: block;
25
+ }
26
+ }
27
+ }
28
+
29
+ &__prev,
30
+ &__next {
31
+ position: absolute;
32
+ height: 2rem;
33
+ width: 2rem;
34
+ background-repeat: no-repeat;
35
+ background-position: center;
36
+ padding: 0.5rem;
37
+ cursor: pointer;
38
+ }
39
+
40
+ &__prev {
41
+ background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="arrow-left" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M22 12H2M2 12L9 5M2 12L9 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>');
42
+ left: 0.5rem;
43
+ }
44
+
45
+ &__next {
46
+ background-image: url('data:image/svg+xml;charset=UTF-8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" id="arrow-right" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M2 12H22M22 12L15 5M22 12L15 19" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path></svg>');
47
+ right: 0.5rem;
48
+ }
49
+
50
+ &__close {
51
+ position: absolute;
52
+ top: 0.6rem;
53
+ right: 0.6rem;
54
+ color: color('white');
55
+ font-size: 1.6rem;
56
+ cursor: pointer;
57
+ }
58
+
59
+ &__video {
60
+ width: 100%;
61
+ }
62
+ }
@@ -71,7 +71,7 @@
71
71
  @media only screen and (min-width: 600px) {
72
72
  &--components &__body > * {
73
73
  overflow-y: scroll;
74
- height: calc(100vh - 115px);
74
+ height: calc( 100vh - var(--headerHeight) - 1px );
75
75
  }
76
76
  }
77
77
 
@@ -212,7 +212,11 @@
212
212
  }
213
213
 
214
214
  &__main {
215
- overflow-y: scroll;
215
+ overflow-y: auto;
216
+
217
+ @media only screen and (min-width: 600px) {
218
+ overflow-y: scroll;
219
+ }
216
220
  }
217
221
 
218
222
  &__frame {