mp-design-system 0.6.3 → 0.7.5

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/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 {