mp-design-system 1.2.50 → 1.2.54
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/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/includes/system-footer.njk +1 -1
- package/src/_redirects +1 -0
- 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 +14 -0
- package/src/assets/scss/components/index.scss +1 -0
- package/src/assets/scss/utilities/flex.scss +4 -0
- package/src/assets/scss/utilities/space.scss +4 -1
- package/src/brand/resources.njk +1 -1
- package/src/components/iconography.njk +2 -0
- package/src/content/boilerplate.md +16 -10
- package/src/content/elevator-pitch.md +12 -9
- package/src/patterns/mp-form.njk +5 -5
- package/src/prototype/spline.njk +16 -0
- package/src/static/pdf/Power of One - Malvern Panalytical rebranding guidance.pdf +0 -0
- package/src/static/svg/imaging-matrix.svg +56 -1
- package/src/static/svg/sprite.svg +4 -0
- package/src/static/pdf/Power of one Content guidance.pdf +0 -0
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,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
|
+
}
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<ol class="u-flow--xs u-margin-top-2xs">
|
7
7
|
<li><h3>Quick links</h3></li>
|
8
8
|
<li><a href="/brand/resources">Brand resources</a></li>
|
9
|
-
<li><a href="/
|
9
|
+
<li><a href="/quickstart">Quick start guide</a></li>
|
10
10
|
</ol>
|
11
11
|
<div class="mp o-prose u-flow--prose u-step--1">
|
12
12
|
|
package/src/_redirects
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
/brand/visual/images /brand/images 301
|
7
7
|
/brand/visual/logo /brand/logo 301
|
8
8
|
/brand/visual/typography /brand/typography 301
|
9
|
+
/checklist /quickstart 301
|
9
10
|
http://project-franklin.netlify.app https://brand.malvernpanalytical.com 301
|
10
11
|
https://project-franklin.netlify.app https://brand.malvernpanalytical.com 301
|
11
12
|
http://project-franklin.netlify.app/* https://brand.malvernpanalytical.com/:splat 301
|
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;
|
@@ -188,6 +188,12 @@
|
|
188
188
|
@include margin(0);
|
189
189
|
}
|
190
190
|
}
|
191
|
+
|
192
|
+
& > .o-grid,
|
193
|
+
& > .o-grid > * {
|
194
|
+
@include margin(0);
|
195
|
+
@include padding(0);
|
196
|
+
}
|
191
197
|
}
|
192
198
|
|
193
199
|
&__section + .c-form__section:not(.c-form__section--submit) {
|
@@ -256,6 +262,14 @@
|
|
256
262
|
flex-basis: 100%;
|
257
263
|
}
|
258
264
|
|
265
|
+
&--required:after {
|
266
|
+
content: '*';
|
267
|
+
color: color('red');
|
268
|
+
padding: 0 2px;
|
269
|
+
position: relative;
|
270
|
+
top: -2px;
|
271
|
+
}
|
272
|
+
|
259
273
|
& + * {
|
260
274
|
flex: 1 0 115px;
|
261
275
|
}
|
@@ -21,6 +21,7 @@
|
|
21
21
|
@import '~comp/gallery/gallery.scss';
|
22
22
|
@import '~comp/header/header.scss';
|
23
23
|
@import '~comp/hero/hero.scss';
|
24
|
+
@import '~comp/hotspot-image/hotspot-image.scss';
|
24
25
|
@import '~comp/icon/icon.scss';
|
25
26
|
@import '~comp/input/input.scss';
|
26
27
|
@import '~comp/input/radio.scss';
|
@@ -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/resources.njk
CHANGED
@@ -50,7 +50,7 @@ tags: brand
|
|
50
50
|
}) }}
|
51
51
|
|
52
52
|
{{ twi({
|
53
|
-
link: "/static/pdf/Power of
|
53
|
+
link: "/static/pdf/Power of One - Malvern Panalytical rebranding guidance.pdf",
|
54
54
|
label: "Channel Partner & Field Marketing guide - Product rebranding and naming conventions",
|
55
55
|
classes: "u-link u-border u-pad-s",
|
56
56
|
icon: "file"
|
@@ -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 %}
|
package/src/patterns/mp-form.njk
CHANGED
@@ -42,7 +42,7 @@ layout: patterns-page
|
|
42
42
|
<div class="c-form__field EmailAddress required">
|
43
43
|
<div class="c-form__input-wrap">
|
44
44
|
<label class="c-form__label c-form__label--required" for="EmailAddress">Email address</label>
|
45
|
-
<input type="email" class="c-
|
45
|
+
<input type="email" class="c-form__input" name="EmailAddress" value="" placeholder="" id="EmailAddress" required="" />
|
46
46
|
</div>
|
47
47
|
</div>
|
48
48
|
</div>
|
@@ -50,7 +50,7 @@ layout: patterns-page
|
|
50
50
|
<div class="c-form__field Telephone required">
|
51
51
|
<div class="c-form__input-wrap">
|
52
52
|
<label class="c-form__label c-form__label--required" for="Telephone">Telephone</label>
|
53
|
-
<input type="tel" class="c-
|
53
|
+
<input type="tel" class="c-form__input" name="Telephone" value="" placeholder="" id="Telephone" required="" />
|
54
54
|
</div>
|
55
55
|
</div>
|
56
56
|
</div>
|
@@ -63,7 +63,7 @@ layout: patterns-page
|
|
63
63
|
<div class="c-form__field CompanyName required">
|
64
64
|
<div class="c-form__input-wrap">
|
65
65
|
<label class="c-form__label c-form__label--required" for="CompanyName">Company / institution</label>
|
66
|
-
<input type="text" class="c-
|
66
|
+
<input type="text" class="c-form__input" name="CompanyName" value="" placeholder="" id="CompanyName" required="" />
|
67
67
|
</div>
|
68
68
|
</div>
|
69
69
|
</div>
|
@@ -71,13 +71,13 @@ layout: patterns-page
|
|
71
71
|
<div class="c-form__field City required">
|
72
72
|
<div class="c-form__input-wrap">
|
73
73
|
<label class="c-form__label c-form__label--required" for="City">City</label>
|
74
|
-
<input type="text" class="c-
|
74
|
+
<input type="text" class="c-form__input" name="City" value="" placeholder="" id="City" required="" />
|
75
75
|
</div>
|
76
76
|
</div>
|
77
77
|
<div class="c-form__field Country required">
|
78
78
|
<div class="c-form__input-wrap">
|
79
79
|
<label class="c-form__label c-form__label--required" for="Country">Country</label>
|
80
|
-
<select class="c-
|
80
|
+
<select class="c-form__input c-form__input--select Country" name="Country" id="Country" required="">
|
81
81
|
<option value=""></option>
|
82
82
|
<option value="option-1">Option 1</option>
|
83
83
|
<option value="option-2">Option 2</option>
|
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
title: Spline 3D test
|
3
|
+
---
|
4
|
+
|
5
|
+
{% extends "page.njk" %}
|
6
|
+
|
7
|
+
{% block content %}
|
8
|
+
|
9
|
+
<main class="u-wrap u-pad-m">
|
10
|
+
<p>Proof-of-concept test for interactive 3D product widget. Click on the lid or the touchscreen, or drag to view the model in 360.</p>
|
11
|
+
</main>
|
12
|
+
|
13
|
+
<script type="module" src="https://unpkg.com/@splinetool/viewer@1.9.0/build/spline-viewer.js" async></script>
|
14
|
+
<spline-viewer loading-anim-type="spinner-small-light" url="https://prod.spline.design/i8gXyHDuPT7GpT0x/scene.splinecode"><img src="data:image/png;base64,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" alt="Spline preview" style="width: 100%; height: 100%;"/></spline-viewer>
|
15
|
+
|
16
|
+
{% endblock %}
|