mp-design-system 1.2.52 → 1.2.55
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/build/js/app.js +1 -1
- package/dist/build/js/app.js.map +1 -1
- package/dist/build/scss/main.css +1 -1
- package/dist/build/scss/main.css.map +1 -1
- package/package.json +1 -1
- package/src/_headers +1 -1
- package/src/_includes/components/back-to-top/back-to-top.config.js +10 -0
- package/src/_includes/components/back-to-top/back-to-top.njk +7 -0
- package/src/_includes/components/back-to-top/back-to-top.scss +22 -0
- package/src/_includes/components/back-to-top/macro.njk +5 -0
- package/src/_includes/components/footer/footer.njk +3 -0
- package/src/_includes/components/hotspot-image/hotspot-image.config.js +55 -0
- package/src/_includes/components/hotspot-image/hotspot-image.njk +41 -0
- package/src/_includes/components/hotspot-image/hotspot-image.scss +103 -0
- package/src/_includes/components/hotspot-image/macro.njk +5 -0
- package/src/_includes/components/icon/icon.njk +11 -1
- package/src/assets/js/app.js +6 -4
- package/src/assets/js/imports/hotspot-image.js +91 -0
- package/src/assets/scss/components/form.scss +6 -0
- package/src/assets/scss/components/index.scss +2 -0
- package/src/assets/scss/objects/prose.scss +10 -5
- package/src/assets/scss/utilities/flex.scss +4 -0
- package/src/assets/scss/utilities/space.scss +4 -1
- package/src/brand/typography.md +3 -3
- package/src/content/boilerplate.md +16 -10
- package/src/content/elevator-pitch.md +12 -9
- package/src/prototype/spline.njk +16 -0
- package/src/static/svg/imaging-matrix.svg +56 -1
package/package.json
CHANGED
package/src/_headers
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/*
|
2
|
-
Content-Security-Policy: default-src 'self'; base-uri 'self'; block-all-mixed-content; font-src 'self' https://fonts.gstatic.com; form-action 'self'; frame-src 'self' https://brand.malvernpanalytical.com https://www.youtube.com https://challenges.cloudflare.com https://newassets.hcaptcha.com; frame-ancestors 'self' https://brand.malvernpanalytical.com; img-src 'self' data: https://p3.aprimocdn.net https://img.youtube.com; object-src 'none'; picture-in-picture 'self'; sandbox allow-forms allow-same-origin allow-scripts allow-downloads; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://polyfill.io https://eu.altcha.org https://challenges.cloudflare.com https://js.hcaptcha.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; upgrade-insecure-requests;
|
2
|
+
Content-Security-Policy: default-src 'self'; base-uri 'self'; block-all-mixed-content; font-src 'self' https://fonts.gstatic.com; form-action 'self'; frame-src 'self' https://brand.malvernpanalytical.com https://www.youtube.com https://challenges.cloudflare.com https://newassets.hcaptcha.com; frame-ancestors 'self' https://brand.malvernpanalytical.com; img-src 'self' data: https://dam.malvernpanalytical.com https://p3.aprimocdn.net https://img.youtube.com; object-src 'none'; picture-in-picture 'self'; sandbox allow-forms allow-same-origin allow-scripts allow-downloads; script-src 'self' 'unsafe-inline' 'unsafe-eval' https://polyfill.io https://eu.altcha.org https://challenges.cloudflare.com https://js.hcaptcha.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; upgrade-insecure-requests;
|
3
3
|
X-Content-Type-Options: nosniff
|
4
4
|
X-Frame-Options: SAMEORIGIN
|
5
5
|
X-XSS-Protection: 1; mode=block
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.c-back-to-top {
|
2
|
+
position: fixed;
|
3
|
+
background: color('blue');
|
4
|
+
color: color('white') !important;
|
5
|
+
height: 2.6rem;
|
6
|
+
width: 2.6rem;
|
7
|
+
right: var(--space-xs);
|
8
|
+
bottom: var(--space-xs);
|
9
|
+
display: flex;
|
10
|
+
justify-content: center;
|
11
|
+
align-items: center;
|
12
|
+
border-radius: 4rem;
|
13
|
+
box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 20%);
|
14
|
+
transition: 300ms background-color, 300ms color;
|
15
|
+
|
16
|
+
&:where(:hover, :focus) {
|
17
|
+
background: color('blue', 'step--1');
|
18
|
+
}
|
19
|
+
|
20
|
+
&__icon {
|
21
|
+
}
|
22
|
+
}
|
@@ -1,4 +1,5 @@
|
|
1
1
|
{% from "components/icon/macro.njk" import icon %}
|
2
|
+
{% from "components/back-to-top/macro.njk" import backToTop %}
|
2
3
|
|
3
4
|
<footer class="mp c-footer" role="contentinfo">
|
4
5
|
<nav class="c-footer__primary u-wrap" aria-label="Footer">
|
@@ -76,3 +77,5 @@
|
|
76
77
|
</div>
|
77
78
|
</div>
|
78
79
|
</footer>
|
80
|
+
|
81
|
+
{{ backToTop({}) }}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module.exports = {
|
2
|
+
title: 'Hotspot image',
|
3
|
+
component: {
|
4
|
+
name: 'hotspot-image',
|
5
|
+
},
|
6
|
+
context: {
|
7
|
+
image: {
|
8
|
+
src: 'https://dam.malvernpanalytical.com/3f407d1c-a153-4806-ab9e-b1bf00d41bc5/2524009%20MALV%20Infographic%20Analycial%20process_WITHOUT_TEXT_ModAW_Original%20file.jpg',
|
9
|
+
alt: 'Description of the image',
|
10
|
+
},
|
11
|
+
heading: {
|
12
|
+
position: 'top: 2.75%; left: 2.75%;',
|
13
|
+
content: 'All the elements of an integrated analytical workflow',
|
14
|
+
},
|
15
|
+
hotspots: [
|
16
|
+
{
|
17
|
+
position: 'top: 46%; left: 29%;',
|
18
|
+
button: {
|
19
|
+
label: 'Preparing your sample',
|
20
|
+
},
|
21
|
+
tooltip: {
|
22
|
+
content:
|
23
|
+
'<ul class="o-grid o-grid--of-two"><li class="u-bg-white u-pad-2xs">Sample preparation methods & advice</li><li class="u-bg-white u-pad-2xs">Labware and accessories</li><li class="u-bg-white u-pad-2xs">Instruments for flux dosing and fusion</li><li class="u-bg-white u-pad-2xs">Methods and advice</li></ul>',
|
24
|
+
},
|
25
|
+
},
|
26
|
+
{
|
27
|
+
position: 'top: 28.75%; left: 70%;',
|
28
|
+
button: {
|
29
|
+
label: 'Analysis with XRF',
|
30
|
+
},
|
31
|
+
tooltip: {
|
32
|
+
content:
|
33
|
+
'<ul class="o-grid o-grid--of-two"><span class="u-margin-0"></span><li class="o-grid o-grid--of-two u-align-items-start u-margin-0" style="flex-basis: 100%;"><span class="u-bg-white u-pad-2xs">XRF application methods</span><ul class="u-flow--2xs"><li class="u-bg-petrol u-petrol-step-3 u-pad-2xs">Templates in i.e., Wroxi</li><li class="u-bg-petrol u-petrol-step-3 u-pad-2xs">Application Support</li></ul></li><span class="u-margin-0"></span><li class="o-grid o-grid--of-two u-align-items-start u-margin-0" style="flex-basis: 100%;"><span class="u-bg-white u-pad-2xs">Certified reference materials</span><ul><li class="u-bg-petrol u-petrol-step-3 u-pad-2xs">Off-the-shelf and customized</li></ul></li><li class="u-bg-white u-pad-2xs">Expertise support</li><li class="u-bg-white u-pad-2xs">Pre-calibration</li><li class="u-bg-white u-pad-2xs">XRF instruments and maintenance</li></ul>',
|
34
|
+
},
|
35
|
+
},
|
36
|
+
{
|
37
|
+
position: 'top: 67.75%; left: 76%;',
|
38
|
+
button: {
|
39
|
+
label: 'Reporting results',
|
40
|
+
},
|
41
|
+
tooltip: {
|
42
|
+
content:
|
43
|
+
'<ul class="o-grid o-grid--of-two"><li class="u-bg-white u-pad-2xs">Seamless connection to LIMS</li><li class="u-bg-white u-pad-2xs">Training Instrument operation training</li><li class="u-bg-white u-pad-2xs">Data interpretation</li><li class="u-bg-white u-pad-2xs">XRF Application training</li><li class="u-bg-white u-pad-2xs">Sample preparation training</li></ul>',
|
44
|
+
},
|
45
|
+
},
|
46
|
+
{
|
47
|
+
position: 'top: 85%; left: 48.5%;',
|
48
|
+
button: {
|
49
|
+
label: 'Training',
|
50
|
+
},
|
51
|
+
},
|
52
|
+
],
|
53
|
+
},
|
54
|
+
variants: [],
|
55
|
+
};
|
@@ -0,0 +1,41 @@
|
|
1
|
+
{% set classNames = "mp c-hotspot-image" %}
|
2
|
+
|
3
|
+
<div class="{{ classNames }}" role="img" aria-label="Interactive image with hotspots">
|
4
|
+
{% if params.image %}
|
5
|
+
<img src="{{ params.image.src }}" alt="{{ params.image.alt }}" role="presentation">
|
6
|
+
{% endif %}
|
7
|
+
|
8
|
+
{% if params.heading %}
|
9
|
+
<p class="{{ classNames }}__heading" style="{{ params.heading.position }}" aria-labelledby="image-heading">
|
10
|
+
{{ params.heading.content }}
|
11
|
+
</p>
|
12
|
+
{% endif %}
|
13
|
+
|
14
|
+
{% if params.hotspots | length %}
|
15
|
+
{% for hotspot in params.hotspots %}
|
16
|
+
<div class="{{ classNames }}__hotspot" style="{{ hotspot.position }}" aria-live="polite">
|
17
|
+
{% if hotspot.button and hotspot.tooltip %}
|
18
|
+
<button class="{{ classNames }}__button"
|
19
|
+
role="button"
|
20
|
+
aria-expanded="false"
|
21
|
+
aria-controls="tooltip-{{ loop.index }}"
|
22
|
+
aria-label="{{ hotspot.button.label }}">
|
23
|
+
{{ hotspot.button.label }}
|
24
|
+
</button>
|
25
|
+
<div id="tooltip-{{ loop.index }}"
|
26
|
+
class="c-hotspot-image__tooltip"
|
27
|
+
role="tooltip"
|
28
|
+
aria-hidden="true">
|
29
|
+
{{ hotspot.tooltip.content | safe }}
|
30
|
+
</div>
|
31
|
+
{% elseif hotspot.button %}
|
32
|
+
<span class="{{ classNames }}__button c-hotspot-image__button--no-tooltip"
|
33
|
+
role="button"
|
34
|
+
aria-label="{{ hotspot.button.label }}">
|
35
|
+
{{ hotspot.button.label }}
|
36
|
+
</span>
|
37
|
+
{% endif %}
|
38
|
+
</div>
|
39
|
+
{% endfor %}
|
40
|
+
{% endif %}
|
41
|
+
</div>
|
@@ -0,0 +1,103 @@
|
|
1
|
+
.c-hotspot-image {
|
2
|
+
position: relative;
|
3
|
+
counter-reset: hotspot-counter;
|
4
|
+
|
5
|
+
&__heading,
|
6
|
+
&__hotspot {
|
7
|
+
position: absolute;
|
8
|
+
}
|
9
|
+
|
10
|
+
&__heading {
|
11
|
+
background: color('petrol', 'step--1');
|
12
|
+
color: color('petrol', 'step-3');
|
13
|
+
@include padding('s', 'm');
|
14
|
+
border-radius: 1em;
|
15
|
+
font-size: var(--step-1);
|
16
|
+
}
|
17
|
+
|
18
|
+
&__hotspot {
|
19
|
+
isolation: isolate;
|
20
|
+
|
21
|
+
&:has([aria-expanded='true']) {
|
22
|
+
z-index: 1;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
&__button {
|
27
|
+
position: relative;
|
28
|
+
background: color('petrol');
|
29
|
+
color: color('petrol', 'step-3');
|
30
|
+
@include padding('2xs');
|
31
|
+
display: flex;
|
32
|
+
gap: var(--space-2xs);
|
33
|
+
align-items: center;
|
34
|
+
border: none;
|
35
|
+
border-radius: 1em;
|
36
|
+
font-size: var(--step--1);
|
37
|
+
|
38
|
+
&:not(&--no-tooltip) {
|
39
|
+
cursor: pointer;
|
40
|
+
transition: 300ms background-color;
|
41
|
+
|
42
|
+
&:where(:hover, :focus) {
|
43
|
+
background: color('petrol', 'step--1');
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
&::before,
|
48
|
+
&::after {
|
49
|
+
--number-size: calc(var(--step-1) * 1.5);
|
50
|
+
height: var(--number-size);
|
51
|
+
width: var(--number-size);
|
52
|
+
display: flex;
|
53
|
+
justify-content: center;
|
54
|
+
align-items: center;
|
55
|
+
border-radius: 2em;
|
56
|
+
font-size: var(--step-1);
|
57
|
+
font-weight: 600;
|
58
|
+
}
|
59
|
+
|
60
|
+
&::before {
|
61
|
+
counter-increment: hotspot-counter;
|
62
|
+
content: counter(hotspot-counter);
|
63
|
+
background: color('red');
|
64
|
+
color: color('white');
|
65
|
+
}
|
66
|
+
|
67
|
+
&::after {
|
68
|
+
content: '+';
|
69
|
+
background: color('petrol', 'step--1');
|
70
|
+
color: color('white');
|
71
|
+
@include padding('3xs');
|
72
|
+
}
|
73
|
+
|
74
|
+
&--no-tooltip::after {
|
75
|
+
display: none;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
&__tooltip {
|
80
|
+
--gutter: var(--space-2xs);
|
81
|
+
display: none;
|
82
|
+
position: absolute;
|
83
|
+
background: color('petrol', 'step-1');
|
84
|
+
margin-top: -1em;
|
85
|
+
padding-top: calc(var(--space-2xs) + 1em);
|
86
|
+
@include padding-right('2xs');
|
87
|
+
@include padding-bottom('2xs');
|
88
|
+
@include padding-left('2xs');
|
89
|
+
border-bottom-right-radius: 1em;
|
90
|
+
border-bottom-left-radius: 1em;
|
91
|
+
z-index: -1;
|
92
|
+
font-size: var(--step--2);
|
93
|
+
|
94
|
+
.u-bg-white,
|
95
|
+
.u-bg-petrol {
|
96
|
+
border-radius: calc(1em / 2);
|
97
|
+
}
|
98
|
+
|
99
|
+
&--open {
|
100
|
+
display: block;
|
101
|
+
}
|
102
|
+
}
|
103
|
+
}
|
@@ -1,3 +1,13 @@
|
|
1
|
-
|
1
|
+
{%- set classNames = "mp c-icon c-icon" -%}
|
2
|
+
|
3
|
+
{%- if params.id -%}
|
4
|
+
{% set classNames = classNames + " c-icon--" + params.id %}
|
5
|
+
{% endif -%}
|
6
|
+
|
7
|
+
{%- if params.class -%}
|
8
|
+
{% set classNames = classNames + " " + params.class %}
|
9
|
+
{% endif -%}
|
10
|
+
|
11
|
+
<svg role="img" aria-hidden="true" focusable="false" class="{{ classNames }}">
|
2
12
|
<use xlink:href="/static/svg/sprite.svg#{{ params.id }}"></use>
|
3
13
|
</svg>
|
package/src/assets/js/app.js
CHANGED
@@ -6,6 +6,7 @@ import Facet from './imports/facet';
|
|
6
6
|
import Gallery from './imports/gallery';
|
7
7
|
import HeroPattern from './imports/hero-pattern';
|
8
8
|
import HeroVideo from './imports/hero-video';
|
9
|
+
import HotspotImage from './imports/hotspot-image';
|
9
10
|
import InternalNav from './imports/internal-nav';
|
10
11
|
import OffCanvas from './imports/off-canvas';
|
11
12
|
import ResponsiveTable from './imports/responsive-table';
|
@@ -14,13 +15,13 @@ import ScrollSpy from './imports/scroll-spy';
|
|
14
15
|
import Tabs from './imports/tabs';
|
15
16
|
|
16
17
|
(() => {
|
17
|
-
if(window.NodeList && !NodeList.prototype.forEach) {
|
18
|
+
if (window.NodeList && !NodeList.prototype.forEach) {
|
18
19
|
NodeList.prototype.forEach = Array.prototype.forEach;
|
19
20
|
}
|
20
|
-
if(window.HTMLCollection && !HTMLCollection.prototype.forEach) {
|
21
|
+
if (window.HTMLCollection && !HTMLCollection.prototype.forEach) {
|
21
22
|
HTMLCollection.prototype.forEach = Array.prototype.forEach;
|
22
23
|
}
|
23
|
-
|
24
|
+
|
24
25
|
Accordion();
|
25
26
|
Carousel();
|
26
27
|
ClearForm();
|
@@ -29,10 +30,11 @@ import Tabs from './imports/tabs';
|
|
29
30
|
Gallery();
|
30
31
|
HeroPattern();
|
31
32
|
HeroVideo();
|
33
|
+
HotspotImage();
|
32
34
|
InternalNav();
|
33
35
|
OffCanvas();
|
34
36
|
ResponsiveTable();
|
35
37
|
ScrollbarWidth();
|
36
38
|
ScrollSpy();
|
37
39
|
Tabs();
|
38
|
-
})();
|
40
|
+
})();
|
@@ -0,0 +1,91 @@
|
|
1
|
+
// Function to initialize tooltip behavior
|
2
|
+
function HotspotImage() {
|
3
|
+
// Add delay for Tridion JavaScript created hotspot images
|
4
|
+
setTimeout(function () {
|
5
|
+
// Select all elements that trigger tooltips
|
6
|
+
const tooltips = document.querySelectorAll('.c-hotspot-image__button');
|
7
|
+
|
8
|
+
// Add event listeners for each tooltip button
|
9
|
+
tooltips.forEach((button) => {
|
10
|
+
button.addEventListener('click', handleTooltipToggle);
|
11
|
+
});
|
12
|
+
|
13
|
+
// Add event listener for Escape key press
|
14
|
+
document.addEventListener('keydown', handleKeyDown);
|
15
|
+
|
16
|
+
// Add event listener for click outside tooltip
|
17
|
+
document.addEventListener('click', handleClickOutside);
|
18
|
+
}, 2000);
|
19
|
+
}
|
20
|
+
|
21
|
+
// Function to handle the tooltip toggle
|
22
|
+
function handleTooltipToggle(event) {
|
23
|
+
// Prevent default action if needed
|
24
|
+
event.preventDefault();
|
25
|
+
|
26
|
+
const button = event.currentTarget;
|
27
|
+
const tooltipId = button.getAttribute('aria-controls');
|
28
|
+
const tooltip = document.getElementById(tooltipId);
|
29
|
+
|
30
|
+
if (tooltip.classList.contains('c-hotspot-image__tooltip--open')) {
|
31
|
+
closeTooltip(button, tooltip);
|
32
|
+
} else {
|
33
|
+
openTooltip(button, tooltip);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
// Function to open a tooltip
|
38
|
+
function openTooltip(button, tooltip) {
|
39
|
+
// Add active class and make tooltip visible
|
40
|
+
tooltip.classList.add('c-hotspot-image__tooltip--open');
|
41
|
+
tooltip.setAttribute('aria-hidden', 'false');
|
42
|
+
button.setAttribute('aria-expanded', 'true');
|
43
|
+
|
44
|
+
// Add event listener for click outside
|
45
|
+
document.addEventListener('click', handleClickOutside);
|
46
|
+
}
|
47
|
+
|
48
|
+
// Function to close a tooltip
|
49
|
+
function closeTooltip(button, tooltip) {
|
50
|
+
// Remove active class and hide tooltip
|
51
|
+
tooltip.classList.remove('c-hotspot-image__tooltip--open');
|
52
|
+
tooltip.setAttribute('aria-hidden', 'true');
|
53
|
+
button.setAttribute('aria-expanded', 'false');
|
54
|
+
|
55
|
+
// Remove event listener for click outside
|
56
|
+
document.removeEventListener('click', handleClickOutside);
|
57
|
+
}
|
58
|
+
|
59
|
+
// Function to handle Escape key press
|
60
|
+
function handleKeyDown(event) {
|
61
|
+
if (event.key === 'Escape') {
|
62
|
+
const activeTooltip = document.querySelector(
|
63
|
+
'.c-hotspot-image__tooltip--open'
|
64
|
+
);
|
65
|
+
if (activeTooltip) {
|
66
|
+
const button = document.querySelector(
|
67
|
+
`[aria-controls="${activeTooltip.id}"]`
|
68
|
+
);
|
69
|
+
closeTooltip(button, activeTooltip);
|
70
|
+
}
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
// Function to handle click outside the tooltip
|
75
|
+
function handleClickOutside(event) {
|
76
|
+
const activeTooltip = document.querySelector(
|
77
|
+
'.c-hotspot-image__tooltip--open'
|
78
|
+
);
|
79
|
+
if (
|
80
|
+
activeTooltip &&
|
81
|
+
!activeTooltip.contains(event.target) &&
|
82
|
+
!event.target.closest('.c-hotspot-image__button')
|
83
|
+
) {
|
84
|
+
const button = document.querySelector(
|
85
|
+
`[aria-controls="${activeTooltip.id}"]`
|
86
|
+
);
|
87
|
+
closeTooltip(button, activeTooltip);
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
export default HotspotImage;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
@import '~comp/accordion/accordion.scss';
|
2
2
|
@import '~comp/alert/alert.scss';
|
3
|
+
@import '~comp/back-to-top/back-to-top.scss';
|
3
4
|
@import '~comp/breadcrumb/breadcrumb.scss';
|
4
5
|
@import '~comp/button/button.scss';
|
5
6
|
@import '~comp/campaign/campaign.scss';
|
@@ -21,6 +22,7 @@
|
|
21
22
|
@import '~comp/gallery/gallery.scss';
|
22
23
|
@import '~comp/header/header.scss';
|
23
24
|
@import '~comp/hero/hero.scss';
|
25
|
+
@import '~comp/hotspot-image/hotspot-image.scss';
|
24
26
|
@import '~comp/icon/icon.scss';
|
25
27
|
@import '~comp/input/input.scss';
|
26
28
|
@import '~comp/input/radio.scss';
|
@@ -2,15 +2,15 @@
|
|
2
2
|
color: inherit;
|
3
3
|
|
4
4
|
h2 {
|
5
|
-
@extend .c-h
|
5
|
+
@extend .c-h, .c-h--step-3;
|
6
6
|
}
|
7
7
|
|
8
8
|
h3 {
|
9
|
-
@extend .c-h
|
9
|
+
@extend .c-h, .c-h--step-2;
|
10
10
|
}
|
11
11
|
|
12
12
|
h4 {
|
13
|
-
@extend .c-h
|
13
|
+
@extend .c-h, .c-h--step-1;
|
14
14
|
}
|
15
15
|
|
16
16
|
p,
|
@@ -25,14 +25,15 @@
|
|
25
25
|
color: color('utility-blue');
|
26
26
|
text-decoration: underline;
|
27
27
|
text-underline-offset: 3px;
|
28
|
-
|
28
|
+
|
29
29
|
&:hover {
|
30
30
|
text-decoration: none;
|
31
31
|
}
|
32
32
|
}
|
33
33
|
|
34
34
|
ul li {
|
35
|
-
list-style: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="20" viewBox="0 0 10 20"><circle cx="5" cy="14" r="3.5" fill="%2313AA13" fill-rule="evenodd"/></svg>')
|
35
|
+
list-style: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="20" viewBox="0 0 10 20"><circle cx="5" cy="14" r="3.5" fill="%2313AA13" fill-rule="evenodd"/></svg>')
|
36
|
+
outside;
|
36
37
|
margin-left: 1em;
|
37
38
|
padding-left: 0.5rem;
|
38
39
|
|
@@ -152,6 +153,10 @@
|
|
152
153
|
table {
|
153
154
|
@extend .c-table;
|
154
155
|
}
|
156
|
+
|
157
|
+
video {
|
158
|
+
max-width: 100%;
|
159
|
+
}
|
155
160
|
}
|
156
161
|
|
157
162
|
.o-featured-image {
|
@@ -87,6 +87,9 @@
|
|
87
87
|
.u-pad-3xs {
|
88
88
|
@include padding('3xs');
|
89
89
|
}
|
90
|
+
.u-pad-2xs {
|
91
|
+
@include padding('2xs');
|
92
|
+
}
|
90
93
|
.u-pad-s {
|
91
94
|
@include padding('s');
|
92
95
|
}
|
@@ -173,7 +176,7 @@
|
|
173
176
|
margin-top: auto;
|
174
177
|
}
|
175
178
|
.u-margin-top-negative-2xl {
|
176
|
-
margin-top: calc(-1 * #{var(--space-2xl)})
|
179
|
+
margin-top: calc(-1 * #{var(--space-2xl)});
|
177
180
|
}
|
178
181
|
.u-margin-top-2xs {
|
179
182
|
@include margin-top('2xs');
|
package/src/brand/typography.md
CHANGED
@@ -9,15 +9,15 @@ status: 'Ready'
|
|
9
9
|
|
10
10
|
## Inter
|
11
11
|
|
12
|
-
Our brand font is
|
12
|
+
Our brand font is **Inter**. This typeface has been selected for its;
|
13
13
|
- Excellent clarity and legibility
|
14
14
|
- Extensive character set
|
15
15
|
- Comprehensive weight and style options
|
16
16
|
- Understated authority
|
17
17
|
|
18
|
-
|
18
|
+
**We use Inter version 3**. Inter recently received a new v4 update, which changes the spacing and overall look of the font. To maintain consistent branding for Malvern Panalytical materials, we recommend avoiding any version later than v3.19.
|
19
19
|
|
20
|
-
{% button 'Download Inter font' 'https://github.com/rsms/inter/releases/download/v3.19/Inter-3.19.zip' %}
|
20
|
+
{% button 'Download Inter font (v3.19)' 'https://github.com/rsms/inter/releases/download/v3.19/Inter-3.19.zip' %}
|
21
21
|
|
22
22
|
Inter is also available from [Google Fonts](https://fonts.google.com/specimen/Inter).
|
23
23
|
|
@@ -3,25 +3,31 @@ title: Boilerplate
|
|
3
3
|
layout: content-page
|
4
4
|
sidebar: content
|
5
5
|
status: 'Ready'
|
6
|
-
version: 1.0.
|
6
|
+
version: 1.0.3
|
7
7
|
tags: content
|
8
8
|
date: 2020-01-03
|
9
9
|
---
|
10
10
|
|
11
|
-
|
12
|
-
This is our **boilerplate**: the default text we use to describe ourselves in press releases and other publications.
|
13
|
-
{% endalert %}
|
11
|
+
<div class="u-pad-l u-bg-petrol-step-3 o-prose u-flow--prose">
|
14
12
|
|
15
13
|
### About Malvern Panalytical
|
16
14
|
|
17
|
-
|
15
|
+
Malvern Panalytical is a global leader in the analytics of material and life sciences. We unleash the power of small things to make big things happen for our customers.
|
18
16
|
|
19
|
-
|
17
|
+
Our vision is to make the world cleaner, healthier, and more productive.
|
20
18
|
|
21
|
-
We partner with
|
19
|
+
We partner with our customers to make their solutions possible through the power of precision measurements, our expertise, trusted data, and insights.
|
22
20
|
|
23
|
-
|
21
|
+
Our people are partners in discovery. We collaborate with our customers and with each other to discover new possibilities and achieve breakthroughs.
|
24
22
|
|
25
|
-
|
23
|
+
Our culture is a healthy, high-performance culture shaped by our values: Own it, Aim High and Be True.
|
26
24
|
|
27
|
-
|
25
|
+
We’re committed to Net Zero in our own operations by 2030 and in our total value chain by 2040.
|
26
|
+
|
27
|
+
With over 2300 employees across the globe, we are part of Spectris plc, the world-leading precision measurement group.
|
28
|
+
|
29
|
+
**Malvern Panalytical. We’re BIG on small.™**
|
30
|
+
|
31
|
+
</div>
|
32
|
+
|
33
|
+
This is our **boilerplate**: the default text we use to describe ourselves in press releases and other publications.
|
@@ -1,21 +1,26 @@
|
|
1
1
|
---
|
2
|
-
title:
|
2
|
+
title: Elevator pitch
|
3
3
|
layout: content-page
|
4
4
|
sidebar: content
|
5
5
|
tags: content
|
6
|
+
version: 1.0.3
|
7
|
+
status: 'Ready'
|
6
8
|
date: 2020-01-02
|
7
9
|
---
|
8
10
|
|
9
|
-
|
10
|
-
power of very small things, to make big things happen.
|
11
|
+
<div class="u-pad-l u-bg-petrol-step-3 o-prose u-flow--prose">
|
11
12
|
|
12
|
-
|
13
|
+
Malvern Panalytical is a global leader in the analytics of material and life sciences. We exist to unleash the power of small things to make big things happen for our customers (we’re big on small).
|
13
14
|
|
14
|
-
|
15
|
+
Every day we work in pursuit of a clear vision: to make the world cleaner, healthier, and more productive. To achieve our vision, we partner with our customers to make their solutions possible through the power of precision measurements, our expertise, trusted data, and insights.
|
15
16
|
|
16
|
-
|
17
|
+
Customers are at the heart of our company and core to our success: acting as partners in discovery, we collaborate every day with our customers and with each other to discover new possibilities and achieve breakthroughs.
|
17
18
|
|
18
|
-
|
19
|
+
Supported by a healthy, high-performance culture shaped by our values we collaborate to improve how we work together, how we create value, and how we remain relevant as an organization in the future.
|
20
|
+
|
21
|
+
**Malvern Panalytical. We’re BIG on small.™**
|
22
|
+
|
23
|
+
</div>
|
19
24
|
|
20
25
|
### This is our official ‘elevator pitch’.
|
21
26
|
|
@@ -26,5 +31,3 @@ We use it as the starting point whenever we’re talking about ourselves. (You
|
|
26
31
|
Use it whenever you need to describe Malvern Panalytical.
|
27
32
|
|
28
33
|
(Note that ‘We're BIG on small’ is trademarked.)
|
29
|
-
|
30
|
-
{% endalert %}
|