@reuters-graphics/graphics-components 0.0.1-beta.1
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.
- package/README.md +7 -0
- package/dist/@types/actions/cssVariables/index.d.ts +4 -0
- package/dist/@types/actions/resizeObserver/index.d.ts +4 -0
- package/dist/@types/components/@types/global.d.ts +28 -0
- package/dist/@types/components/Article/Article.svelte.d.ts +32 -0
- package/dist/@types/components/BeforeAfter/BeforeAfter.svelte.d.ts +57 -0
- package/dist/@types/components/Block/Block.svelte.d.ts +24 -0
- package/dist/@types/components/BodyText/BodyText.svelte.d.ts +20 -0
- package/dist/@types/components/DatawrapperChart/DatawrapperChart.svelte.d.ts +52 -0
- package/dist/@types/components/EmbedPreviewerLink/EmbedPreviewerLink.svelte.d.ts +16 -0
- package/dist/@types/components/FeaturePhoto/FeaturePhoto.svelte.d.ts +43 -0
- package/dist/@types/components/Framer/Framer.svelte.d.ts +29 -0
- package/dist/@types/components/Framer/Resizer/index.svelte.d.ts +27 -0
- package/dist/@types/components/Framer/stores.d.ts +1 -0
- package/dist/@types/components/Framer/uniqNames.d.ts +2 -0
- package/dist/@types/components/GraphicBlock/AriaHidden.svelte.d.ts +20 -0
- package/dist/@types/components/GraphicBlock/GraphicBlock.svelte.d.ts +64 -0
- package/dist/@types/components/GraphicBlock/TextBlock.svelte.d.ts +19 -0
- package/dist/@types/components/Headline/Headline.svelte.d.ts +29 -0
- package/dist/@types/components/Hero/Hero.svelte.d.ts +41 -0
- package/dist/@types/components/NoteText/NoteText.svelte.d.ts +20 -0
- package/dist/@types/components/PaddingReset/index.svelte.d.ts +27 -0
- package/dist/@types/components/PhotoPack/PhotoPack.svelte.d.ts +50 -0
- package/dist/@types/components/PhotoPack/docProps.d.ts +38 -0
- package/dist/@types/components/PymChild/PymChild.svelte.d.ts +16 -0
- package/dist/@types/components/ReutersLogo/ReutersLogo.svelte.d.ts +18 -0
- package/dist/@types/components/SEO/SEO.svelte.d.ts +66 -0
- package/dist/@types/components/SEO/analytics.d.ts +2 -0
- package/dist/@types/components/SEO/publisherTags.d.ts +2 -0
- package/dist/@types/components/Scroller/Background.svelte.d.ts +20 -0
- package/dist/@types/components/Scroller/Embedded/Background.svelte.d.ts +19 -0
- package/dist/@types/components/Scroller/Embedded/Foreground.svelte.d.ts +18 -0
- package/dist/@types/components/Scroller/Embedded/index.svelte.d.ts +19 -0
- package/dist/@types/components/Scroller/Foreground.svelte.d.ts +17 -0
- package/dist/@types/components/Scroller/Scroller.svelte.d.ts +76 -0
- package/dist/@types/components/Sharer/Sharer.svelte.d.ts +19 -0
- package/dist/@types/components/Sharer/utils/copyToClipboard.d.ts +2 -0
- package/dist/@types/components/Sharer/utils/facebook.d.ts +2 -0
- package/dist/@types/components/Sharer/utils/meta.d.ts +2 -0
- package/dist/@types/components/Sharer/utils/twitter.d.ts +2 -0
- package/dist/@types/components/SiteFooter/CompanyLinks.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/LegalLinks.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/QuickLinks.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/Referrals/IntersectionObserver.svelte.d.ts +39 -0
- package/dist/@types/components/SiteFooter/Referrals/Link.svelte.d.ts +29 -0
- package/dist/@types/components/SiteFooter/Referrals/Referrals.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/Referrals/index.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/SiteFooter.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/svgs/Facebook.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/svgs/Graphics.svelte.d.ts +19 -0
- package/dist/@types/components/SiteFooter/svgs/Instagram.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/svgs/LinkedIn.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/svgs/Pictures.svelte.d.ts +19 -0
- package/dist/@types/components/SiteFooter/svgs/Twitter.svelte.d.ts +23 -0
- package/dist/@types/components/SiteFooter/svgs/Videos.svelte.d.ts +19 -0
- package/dist/@types/components/SiteFooter/svgs/YouTube.svelte.d.ts +23 -0
- package/dist/@types/components/SiteHeader/MobileMenu/index.svelte.d.ts +27 -0
- package/dist/@types/components/SiteHeader/NavBar/DownArrow.svelte.d.ts +23 -0
- package/dist/@types/components/SiteHeader/NavBar/NavDropdown/MoreDropdown.svelte.d.ts +23 -0
- package/dist/@types/components/SiteHeader/NavBar/NavDropdown/SectionDropdown.svelte.d.ts +25 -0
- package/dist/@types/components/SiteHeader/NavBar/NavDropdown/Spinner/index.svelte.d.ts +19 -0
- package/dist/@types/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte.d.ts +25 -0
- package/dist/@types/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.d.ts +1 -0
- package/dist/@types/components/SiteHeader/NavBar/NavDropdown/index.svelte.d.ts +27 -0
- package/dist/@types/components/SiteHeader/NavBar/index.svelte.d.ts +23 -0
- package/dist/@types/components/SiteHeader/NavBar/utils/index.d.ts +1 -0
- package/dist/@types/components/SiteHeader/SiteHeader.svelte.d.ts +14 -0
- package/dist/@types/components/SiteHeader/svgs/Close.svelte.d.ts +19 -0
- package/dist/@types/components/SiteHeader/svgs/Menu.svelte.d.ts +23 -0
- package/dist/@types/components/Spinner/Spinner.svelte.d.ts +28 -0
- package/dist/@types/components/Theme/@types/component.d.ts +28 -0
- package/dist/@types/components/Theme/Theme.svelte.d.ts +54 -0
- package/dist/@types/components/Theme/themes/dark.d.ts +2 -0
- package/dist/@types/components/Theme/themes/light.d.ts +22 -0
- package/dist/@types/components/Theme/utils/flatten.d.ts +1 -0
- package/dist/@types/components/Theme/utils/merge.d.ts +4 -0
- package/dist/@types/components/Video/Controls.svelte.d.ts +45 -0
- package/dist/@types/components/Video/Video.svelte.d.ts +46 -0
- package/dist/@types/components/Visible/Visible.svelte.d.ts +29 -0
- package/dist/@types/index.d.ts +24 -0
- package/dist/actions/cssVariables/index.js +20 -0
- package/dist/actions/resizeObserver/index.js +25 -0
- package/dist/components/@types/global.js +1 -0
- package/dist/components/Article/Article.svelte +47 -0
- package/dist/components/BeforeAfter/BeforeAfter.svelte +341 -0
- package/dist/components/Block/Block.svelte +177 -0
- package/dist/components/BodyText/BodyText.svelte +193 -0
- package/dist/components/DatawrapperChart/DatawrapperChart.svelte +105 -0
- package/dist/components/EmbedPreviewerLink/EmbedPreviewerLink.svelte +26 -0
- package/dist/components/FeaturePhoto/FeaturePhoto.svelte +113 -0
- package/dist/components/Framer/Framer.svelte +136 -0
- package/dist/components/Framer/Resizer/index.svelte +223 -0
- package/dist/components/Framer/stores.js +3 -0
- package/dist/components/Framer/uniqNames.js +54 -0
- package/dist/components/GraphicBlock/AriaHidden.svelte +13 -0
- package/dist/components/GraphicBlock/GraphicBlock.svelte +269 -0
- package/dist/components/GraphicBlock/TextBlock.svelte +12 -0
- package/dist/components/Headline/Headline.svelte +109 -0
- package/dist/components/Hero/Hero.svelte +78 -0
- package/dist/components/NoteText/NoteText.svelte +124 -0
- package/dist/components/PaddingReset/index.svelte +17 -0
- package/dist/components/PhotoPack/PhotoPack.svelte +156 -0
- package/dist/components/PhotoPack/docProps.js +20 -0
- package/dist/components/PymChild/PymChild.svelte +10 -0
- package/dist/components/ReutersLogo/ReutersLogo.svelte +21 -0
- package/dist/components/SEO/SEO.svelte +179 -0
- package/dist/components/SEO/analytics.js +332 -0
- package/dist/components/SEO/publisherTags.js +26 -0
- package/dist/components/Scroller/Background.svelte +30 -0
- package/dist/components/Scroller/Embedded/Background.svelte +14 -0
- package/dist/components/Scroller/Embedded/Foreground.svelte +203 -0
- package/dist/components/Scroller/Embedded/index.svelte +18 -0
- package/dist/components/Scroller/Foreground.svelte +42 -0
- package/dist/components/Scroller/Scroller.svelte +210 -0
- package/dist/components/Sharer/Sharer.svelte +157 -0
- package/dist/components/Sharer/utils/copyToClipboard.js +10 -0
- package/dist/components/Sharer/utils/facebook.js +22 -0
- package/dist/components/Sharer/utils/meta.js +7 -0
- package/dist/components/Sharer/utils/twitter.js +22 -0
- package/dist/components/SiteFooter/CompanyLinks.svelte +173 -0
- package/dist/components/SiteFooter/LegalLinks.svelte +202 -0
- package/dist/components/SiteFooter/QuickLinks.svelte +259 -0
- package/dist/components/SiteFooter/Referrals/IntersectionObserver.svelte +45 -0
- package/dist/components/SiteFooter/Referrals/Link.svelte +73 -0
- package/dist/components/SiteFooter/Referrals/Referrals.svelte +56 -0
- package/dist/components/SiteFooter/Referrals/index.svelte +53 -0
- package/dist/components/SiteFooter/SiteFooter.svelte +41 -0
- package/dist/components/SiteFooter/data.json +210 -0
- package/dist/components/SiteFooter/svgs/Facebook.svelte +18 -0
- package/dist/components/SiteFooter/svgs/Graphics.svelte +18 -0
- package/dist/components/SiteFooter/svgs/Instagram.svelte +20 -0
- package/dist/components/SiteFooter/svgs/LinkedIn.svelte +18 -0
- package/dist/components/SiteFooter/svgs/Pictures.svelte +14 -0
- package/dist/components/SiteFooter/svgs/Twitter.svelte +18 -0
- package/dist/components/SiteFooter/svgs/Videos.svelte +14 -0
- package/dist/components/SiteFooter/svgs/YouTube.svelte +18 -0
- package/dist/components/SiteHeader/MobileMenu/index.svelte +199 -0
- package/dist/components/SiteHeader/NavBar/DownArrow.svelte +26 -0
- package/dist/components/SiteHeader/NavBar/NavDropdown/MoreDropdown.svelte +112 -0
- package/dist/components/SiteHeader/NavBar/NavDropdown/SectionDropdown.svelte +118 -0
- package/dist/components/SiteHeader/NavBar/NavDropdown/Spinner/index.svelte +49 -0
- package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/index.svelte +99 -0
- package/dist/components/SiteHeader/NavBar/NavDropdown/StoryCard/time.js +70 -0
- package/dist/components/SiteHeader/NavBar/NavDropdown/index.svelte +277 -0
- package/dist/components/SiteHeader/NavBar/index.svelte +234 -0
- package/dist/components/SiteHeader/NavBar/utils/index.js +2 -0
- package/dist/components/SiteHeader/SiteHeader.svelte +235 -0
- package/dist/components/SiteHeader/data.json +1 -0
- package/dist/components/SiteHeader/scss/_breakpoints.scss +59 -0
- package/dist/components/SiteHeader/scss/_colors.scss +25 -0
- package/dist/components/SiteHeader/scss/_eases.scss +9 -0
- package/dist/components/SiteHeader/scss/_grids.scss +126 -0
- package/dist/components/SiteHeader/scss/_z-indexes.scss +15 -0
- package/dist/components/SiteHeader/svgs/Close.svelte +14 -0
- package/dist/components/SiteHeader/svgs/Menu.svelte +19 -0
- package/dist/components/Spinner/Spinner.svelte +91 -0
- package/dist/components/Theme/@types/component.js +3 -0
- package/dist/components/Theme/Theme.svelte +37 -0
- package/dist/components/Theme/themes/dark.js +23 -0
- package/dist/components/Theme/themes/light.js +22 -0
- package/dist/components/Theme/utils/flatten.js +39 -0
- package/dist/components/Theme/utils/merge.js +23 -0
- package/dist/components/Video/Controls.svelte +68 -0
- package/dist/components/Video/Video.svelte +278 -0
- package/dist/components/Visible/Visible.svelte +54 -0
- package/dist/index.js +31 -0
- package/dist/scss/_mixins.scss +6 -0
- package/dist/scss/_variables.scss +2 -0
- package/dist/scss/bootstrap/_main.scss +34 -0
- package/dist/scss/bootstrap/_variables.scss +10 -0
- package/dist/scss/colours/thematic/_nord.scss +40 -0
- package/dist/scss/colours/thematic/_tr.scss +27 -0
- package/dist/scss/components/_hero-title.scss +118 -0
- package/dist/scss/fonts/_font-faces.scss +129 -0
- package/dist/scss/fonts/_mixins.scss +25 -0
- package/dist/scss/fonts/_rules.scss +19 -0
- package/dist/scss/fonts/_variables.scss +26 -0
- package/dist/scss/main.scss +16 -0
- package/dist/scss/mixins/_block.scss +62 -0
- package/dist/scss/mixins/_body-text.scss +113 -0
- package/dist/scss/mixins/_graphic.scss +66 -0
- package/dist/scss/mixins/_note-text.scss +34 -0
- package/dist/scss/mixins/_visually-hidden.scss +12 -0
- package/dist/scss/spacers/_rules.scss +65 -0
- package/dist/scss/spacers/_variables.scss +19 -0
- package/dist/scss/typography/_box-shadow.scss +11 -0
- package/dist/scss/typography/_font-size.scss +81 -0
- package/dist/scss/typography/_letter-spacing.scss +15 -0
- package/dist/scss/typography/_main.scss +5 -0
- package/dist/scss/typography/_mixins.scss +26 -0
- package/dist/scss/typography/_rules.scss +83 -0
- package/dist/scss/typography/_text-shadow.scss +13 -0
- package/dist/scss/typography/_transform.scss +7 -0
- package/dist/scss/typography/_variables.scss +39 -0
- package/package.json +210 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** @type {import('../@types/component').Theme} */
|
|
2
|
+
export default {
|
|
3
|
+
colour: {
|
|
4
|
+
background: '#2e3440',
|
|
5
|
+
'text-primary': '#ffffff',
|
|
6
|
+
'text-secondary': 'rgb(255 255 255 / 60%)',
|
|
7
|
+
accent: ' #ef3c2a',
|
|
8
|
+
'brand-logo': '#fa6400',
|
|
9
|
+
'brand-rules': '#999999',
|
|
10
|
+
'brand-shadow': 'rgb(255 255 255 / 10%)',
|
|
11
|
+
},
|
|
12
|
+
font: {
|
|
13
|
+
'size-base': '1.375',
|
|
14
|
+
'family-serif': 'freight-book, serif',
|
|
15
|
+
'family-sans-serif': 'Knowledge, sans-serif',
|
|
16
|
+
'family-monospace':
|
|
17
|
+
'Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',
|
|
18
|
+
'family-hed': 'var(--theme-font-family-sans-serif)',
|
|
19
|
+
'family-subhed': 'var(--theme-font-family-sans-serif)',
|
|
20
|
+
'family-body': 'var(--theme-font-family-serif)',
|
|
21
|
+
'family-note': 'var(--theme-font-family-sans-serif)',
|
|
22
|
+
},
|
|
23
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
colour: {
|
|
3
|
+
background: '#ffffff',
|
|
4
|
+
'text-primary': '#404040',
|
|
5
|
+
'text-secondary': '#666666',
|
|
6
|
+
accent: ' #fa6400',
|
|
7
|
+
'brand-logo': '#fa6400',
|
|
8
|
+
'brand-rules': '#d0d0d0',
|
|
9
|
+
'brand-shadow': 'rgb(64 64 64 / 80%)',
|
|
10
|
+
},
|
|
11
|
+
font: {
|
|
12
|
+
'size-base': '1.375',
|
|
13
|
+
'family-serif': 'freight-book, serif',
|
|
14
|
+
'family-sans-serif': 'Knowledge, sans-serif',
|
|
15
|
+
'family-monospace':
|
|
16
|
+
'Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace',
|
|
17
|
+
'family-hed': 'var(--theme-font-family-sans-serif)',
|
|
18
|
+
'family-subhed': 'var(--theme-font-family-sans-serif)',
|
|
19
|
+
'family-body': 'var(--theme-font-family-serif)',
|
|
20
|
+
'family-note': 'var(--theme-font-family-sans-serif)',
|
|
21
|
+
},
|
|
22
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
function isBuffer(obj) {
|
|
2
|
+
return (
|
|
3
|
+
obj &&
|
|
4
|
+
obj.constructor &&
|
|
5
|
+
typeof obj.constructor.isBuffer === 'function' &&
|
|
6
|
+
obj.constructor.isBuffer(obj)
|
|
7
|
+
);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const transformKey = (key) => key.replace(/[^a-z0-9-]/gi, '');
|
|
11
|
+
|
|
12
|
+
export default function flatten(target) {
|
|
13
|
+
const delimiter = '-';
|
|
14
|
+
const output = {};
|
|
15
|
+
|
|
16
|
+
function step(object, prev, currentDepth = 1) {
|
|
17
|
+
Object.keys(object).forEach(function (key) {
|
|
18
|
+
const value = object[key];
|
|
19
|
+
const isArray = Array.isArray(value);
|
|
20
|
+
const type = Object.prototype.toString.call(value);
|
|
21
|
+
const isbuffer = isBuffer(value);
|
|
22
|
+
const isObject = type === '[object Object]' || type === '[object Array]';
|
|
23
|
+
|
|
24
|
+
const newKey = prev
|
|
25
|
+
? prev + delimiter + transformKey(key)
|
|
26
|
+
: transformKey(key);
|
|
27
|
+
|
|
28
|
+
if (!isArray && !isbuffer && isObject && Object.keys(value).length) {
|
|
29
|
+
return step(value, newKey, currentDepth + 1);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
output[newKey] = value;
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
step(target);
|
|
37
|
+
|
|
38
|
+
return output;
|
|
39
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
function isObject(item) {
|
|
2
|
+
return item && typeof item === 'object' && !Array.isArray(item);
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Deep merges theme objects.
|
|
7
|
+
*/
|
|
8
|
+
export default function merge(target, ...sources) {
|
|
9
|
+
if (!sources.length) return target;
|
|
10
|
+
const source = sources.shift();
|
|
11
|
+
|
|
12
|
+
if (isObject(target) && isObject(source)) {
|
|
13
|
+
for (const key in source) {
|
|
14
|
+
if (isObject(source[key])) {
|
|
15
|
+
if (!target[key]) Object.assign(target, { [key]: {} });
|
|
16
|
+
merge(target[key], source[key]);
|
|
17
|
+
} else {
|
|
18
|
+
Object.assign(target, { [key]: source[key] });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return merge(target, ...sources);
|
|
23
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Fa from 'svelte-fa';
|
|
3
|
+
import { faReply, faPlay, faPause } from '@fortawesome/free-solid-svg-icons';
|
|
4
|
+
import { createEventDispatcher } from 'svelte';
|
|
5
|
+
|
|
6
|
+
const dispatch = createEventDispatcher();
|
|
7
|
+
|
|
8
|
+
export let paused;
|
|
9
|
+
export let clickedOnPauseBtn;
|
|
10
|
+
export let controlsOpacity;
|
|
11
|
+
export let controlsPosition;
|
|
12
|
+
export let widthVideoContainer;
|
|
13
|
+
export let heightVideoContainer;
|
|
14
|
+
export let controlsBorderOffset;
|
|
15
|
+
export let resetCondition;
|
|
16
|
+
export let separateReplayIcon;
|
|
17
|
+
export let controlsColour;
|
|
18
|
+
|
|
19
|
+
function forwardBtnClick() {
|
|
20
|
+
paused = !paused;
|
|
21
|
+
clickedOnPauseBtn = paused === true; // so video doesn't autoplay when coming into view again if paused previously
|
|
22
|
+
dispatch('pausePlayEvent', {
|
|
23
|
+
paused: paused,
|
|
24
|
+
clickedOnPauseBtn: clickedOnPauseBtn,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<button
|
|
30
|
+
on:click="{forwardBtnClick}"
|
|
31
|
+
style="
|
|
32
|
+
opacity: {controlsOpacity};
|
|
33
|
+
top: {controlsPosition === 'top left' || controlsPosition === 'top right'
|
|
34
|
+
? `${10}px`
|
|
35
|
+
: `${heightVideoContainer - controlsBorderOffset}px`};
|
|
36
|
+
left: {controlsPosition === 'top left' || controlsPosition === 'bottom left'
|
|
37
|
+
? `${10}px`
|
|
38
|
+
: `${widthVideoContainer - controlsBorderOffset}px`};
|
|
39
|
+
"
|
|
40
|
+
>
|
|
41
|
+
{#if resetCondition}
|
|
42
|
+
<i class="play-pause-icon replay">
|
|
43
|
+
{#if separateReplayIcon}
|
|
44
|
+
<Fa icon="{faReply}" size="2x" color="{controlsColour}" />
|
|
45
|
+
{:else}
|
|
46
|
+
<Fa icon="{faPlay}" size="2x" color="{controlsColour}" />
|
|
47
|
+
{/if}
|
|
48
|
+
</i>
|
|
49
|
+
{:else if paused === false}
|
|
50
|
+
<i class="play-pause-icon pause">
|
|
51
|
+
<Fa icon="{faPause}" size="2x" color="{controlsColour}" />
|
|
52
|
+
</i>
|
|
53
|
+
{:else if paused === true}
|
|
54
|
+
<i class="play-pause-icon play">
|
|
55
|
+
<Fa icon="{faPlay}" size="2x" color="{controlsColour}" />
|
|
56
|
+
</i>
|
|
57
|
+
{:else}
|
|
58
|
+
error
|
|
59
|
+
{/if}
|
|
60
|
+
</button>
|
|
61
|
+
|
|
62
|
+
<style>button {
|
|
63
|
+
z-index: 2;
|
|
64
|
+
position: absolute;
|
|
65
|
+
cursor: pointer;
|
|
66
|
+
background-color: transparent;
|
|
67
|
+
border: none;
|
|
68
|
+
}</style>
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
<script>import IntersectionObserver from 'svelte-intersection-observer';
|
|
2
|
+
import Controls from './Controls.svelte';
|
|
3
|
+
import Block from '../Block/Block.svelte';
|
|
4
|
+
/// //////////////////////////////////
|
|
5
|
+
/// /////////// Props ////////////////
|
|
6
|
+
/// //////////////////////////////////
|
|
7
|
+
/**
|
|
8
|
+
* Video src.
|
|
9
|
+
*/
|
|
10
|
+
export let src = '';
|
|
11
|
+
export let ariaHidden = true;
|
|
12
|
+
export let ariaDescription = null;
|
|
13
|
+
export let caption = '';
|
|
14
|
+
/**
|
|
15
|
+
* Width of the block within the article well.
|
|
16
|
+
* @type {string}
|
|
17
|
+
*/
|
|
18
|
+
export let width = 'normal';
|
|
19
|
+
/**
|
|
20
|
+
* Preload options. `auto` is ignored if `autoplay` is true. Can also be `none` or `metadata`.
|
|
21
|
+
* @type {string}
|
|
22
|
+
*/
|
|
23
|
+
export let preloadVideo = 'auto';
|
|
24
|
+
/**
|
|
25
|
+
* Whether the video should loop.
|
|
26
|
+
*/
|
|
27
|
+
export let loopVideo = true;
|
|
28
|
+
/**
|
|
29
|
+
* Whether video should have sound or not.
|
|
30
|
+
*/
|
|
31
|
+
export let muteVideo = true;
|
|
32
|
+
export let allowSoundToAutoplay = false; // for video with sound, whether video should be allowed to autoplay if the user has previously interacted with DOM
|
|
33
|
+
export let playVideoWhenInView = true; // whether the video should play when it comes into view or just on page load
|
|
34
|
+
export let playVideoThreshold = 0.5; // if video plays with intersection observer, how much of it should be into view to start playing
|
|
35
|
+
export let possibleToPlayPause = true; // whether to have the option to pause and play video
|
|
36
|
+
export let showControls = true; // whetner to show the play / pause buttons
|
|
37
|
+
export let hoverToSeeControls = false; // whether you need to hover over the video to see the controls
|
|
38
|
+
export let separateReplayIcon = false; // whether to use a separate replay icon or use the play icon for replay as well
|
|
39
|
+
export let controlsColour = '#333'; // change the colour of the play/pause button
|
|
40
|
+
export let controlsOpacity = 0.5; // change the opacity of the play/pause button
|
|
41
|
+
$: interactiveControlsOpacity = 0;
|
|
42
|
+
export let controlsPosition = 'top left'; // have four options for controls position - top right, top left, bottom right, bottom left
|
|
43
|
+
/// //////////////////////////////////
|
|
44
|
+
/// /////// Internal Logic ///////////
|
|
45
|
+
/// //////////////////////////////////
|
|
46
|
+
// Internal props
|
|
47
|
+
let time = 0;
|
|
48
|
+
let duration;
|
|
49
|
+
let paused = true;
|
|
50
|
+
let clickedOnPauseBtn = false; // special variable to track if user clicked on 'pause' btn to help with audio logic
|
|
51
|
+
$: resetCondition = time >= duration; // - 0.1;
|
|
52
|
+
// Dimensions etc other useful things
|
|
53
|
+
let heightVideo;
|
|
54
|
+
let widthVideo;
|
|
55
|
+
let heightVideoContainer;
|
|
56
|
+
let widthVideoContainer;
|
|
57
|
+
const controlsBorderOffset = 50;
|
|
58
|
+
// For intersection observer
|
|
59
|
+
let intersecting;
|
|
60
|
+
let element;
|
|
61
|
+
let videoElement;
|
|
62
|
+
// For video with sound, check if there has been an interaction with the DOM
|
|
63
|
+
let interactedWithDom = false;
|
|
64
|
+
const setInteractedWithDom = () => {
|
|
65
|
+
interactedWithDom = true;
|
|
66
|
+
};
|
|
67
|
+
// Play the video (with no sound) if it's intersecting; pause when it's no longer intersecting
|
|
68
|
+
$: if (playVideoWhenInView && intersecting && muteVideo)
|
|
69
|
+
paused = false;
|
|
70
|
+
$: if (playVideoWhenInView && !intersecting)
|
|
71
|
+
paused = true;
|
|
72
|
+
// Special case for video with sound
|
|
73
|
+
// Only ff you've clicked on play button or interacted with DOM in any way previously, video with audio will play
|
|
74
|
+
$: if (allowSoundToAutoplay &&
|
|
75
|
+
playVideoWhenInView &&
|
|
76
|
+
intersecting &&
|
|
77
|
+
!muteVideo &&
|
|
78
|
+
interactedWithDom &&
|
|
79
|
+
!clickedOnPauseBtn // so video doesn't autoplay when coming into view again if paused previously
|
|
80
|
+
) {
|
|
81
|
+
paused = false;
|
|
82
|
+
}
|
|
83
|
+
$: if (allowSoundToAutoplay && !muteVideo && !interactedWithDom) {
|
|
84
|
+
paused = true;
|
|
85
|
+
}
|
|
86
|
+
$: if (!possibleToPlayPause)
|
|
87
|
+
showControls = true;
|
|
88
|
+
// To get the pause state passed up from the Controls
|
|
89
|
+
const pausePlayEvent = (e) => {
|
|
90
|
+
const fwdPaused = e.detail.paused;
|
|
91
|
+
const fwdClickedOnPauseBtn = e.detail.clickedOnPauseBtn;
|
|
92
|
+
paused = fwdPaused;
|
|
93
|
+
clickedOnPauseBtn = fwdClickedOnPauseBtn;
|
|
94
|
+
};
|
|
95
|
+
// Warning to missing aria attributes
|
|
96
|
+
if (ariaHidden && !ariaDescription) {
|
|
97
|
+
console.warn('Must provide aria description for video components if ariaHidden is true.');
|
|
98
|
+
}
|
|
99
|
+
</script>
|
|
100
|
+
|
|
101
|
+
<svelte:window
|
|
102
|
+
on:click="{setInteractedWithDom}"
|
|
103
|
+
on:touchstart="{setInteractedWithDom}"
|
|
104
|
+
/>
|
|
105
|
+
|
|
106
|
+
<Block width="{width}" cls="video-container">
|
|
107
|
+
<div
|
|
108
|
+
on:mouseover="{() => {
|
|
109
|
+
interactiveControlsOpacity = controlsOpacity;
|
|
110
|
+
}}"
|
|
111
|
+
on:focus="{() => {
|
|
112
|
+
interactiveControlsOpacity = controlsOpacity;
|
|
113
|
+
}}"
|
|
114
|
+
on:mouseout="{() => {
|
|
115
|
+
interactiveControlsOpacity = 0;
|
|
116
|
+
}}"
|
|
117
|
+
on:blur="{() => {
|
|
118
|
+
interactiveControlsOpacity = 0;
|
|
119
|
+
}}"
|
|
120
|
+
>
|
|
121
|
+
{#if (ariaHidden && ariaDescription) || !ariaHidden}
|
|
122
|
+
{#if ariaDescription}
|
|
123
|
+
<p class="visually-hidden">{ariaDescription}</p>
|
|
124
|
+
{/if}
|
|
125
|
+
|
|
126
|
+
{#if playVideoWhenInView}
|
|
127
|
+
<!-- Video element with Intersection Observer -->
|
|
128
|
+
<IntersectionObserver
|
|
129
|
+
element="{element}"
|
|
130
|
+
bind:intersecting
|
|
131
|
+
threshold="{playVideoThreshold}"
|
|
132
|
+
once="{false}"
|
|
133
|
+
>
|
|
134
|
+
<div
|
|
135
|
+
bind:this="{element}"
|
|
136
|
+
class="video-wrapper"
|
|
137
|
+
aria-hidden="{ariaHidden}"
|
|
138
|
+
bind:clientWidth="{widthVideoContainer}"
|
|
139
|
+
bind:clientHeight="{heightVideoContainer}"
|
|
140
|
+
>
|
|
141
|
+
{#if possibleToPlayPause}
|
|
142
|
+
{#if showControls}
|
|
143
|
+
<Controls
|
|
144
|
+
on:pausePlayEvent="{pausePlayEvent}"
|
|
145
|
+
paused="{paused}"
|
|
146
|
+
clickedOnPauseBtn="{clickedOnPauseBtn}"
|
|
147
|
+
controlsOpacity="{hoverToSeeControls
|
|
148
|
+
? interactiveControlsOpacity
|
|
149
|
+
: controlsOpacity}"
|
|
150
|
+
controlsPosition="{controlsPosition}"
|
|
151
|
+
widthVideoContainer="{widthVideoContainer}"
|
|
152
|
+
heightVideoContainer="{heightVideoContainer}"
|
|
153
|
+
controlsBorderOffset="{controlsBorderOffset}"
|
|
154
|
+
resetCondition="{resetCondition}"
|
|
155
|
+
separateReplayIcon="{separateReplayIcon}"
|
|
156
|
+
controlsColour="{controlsColour}"
|
|
157
|
+
/>
|
|
158
|
+
{:else}
|
|
159
|
+
<button
|
|
160
|
+
on:click="{() => {
|
|
161
|
+
paused === true ? (paused = false) : (paused = true);
|
|
162
|
+
}}"
|
|
163
|
+
style="position: absolute; top: 0; left: 0; width: {widthVideoContainer}px; height: {heightVideoContainer}px;"
|
|
164
|
+
></button>
|
|
165
|
+
{/if}
|
|
166
|
+
{/if}
|
|
167
|
+
<video
|
|
168
|
+
bind:this="{videoElement}"
|
|
169
|
+
src="{src}"
|
|
170
|
+
width="100%"
|
|
171
|
+
muted="{muteVideo}"
|
|
172
|
+
playsinline
|
|
173
|
+
preload="{preloadVideo}"
|
|
174
|
+
loop="{loopVideo}"
|
|
175
|
+
bind:currentTime="{time}"
|
|
176
|
+
bind:duration
|
|
177
|
+
bind:paused
|
|
178
|
+
bind:clientWidth="{widthVideo}"
|
|
179
|
+
bind:clientHeight="{heightVideo}"
|
|
180
|
+
style="{showControls
|
|
181
|
+
? 'position: relative'
|
|
182
|
+
: 'position: relative'}"
|
|
183
|
+
>
|
|
184
|
+
<track kind="captions" />
|
|
185
|
+
</video>
|
|
186
|
+
</div>
|
|
187
|
+
</IntersectionObserver>
|
|
188
|
+
{:else}
|
|
189
|
+
<!-- Video element without Intersection observer -->
|
|
190
|
+
<div
|
|
191
|
+
class="video-wrapper"
|
|
192
|
+
aria-hidden="{ariaHidden}"
|
|
193
|
+
bind:clientWidth="{widthVideoContainer}"
|
|
194
|
+
bind:clientHeight="{heightVideoContainer}"
|
|
195
|
+
>
|
|
196
|
+
{#if possibleToPlayPause}
|
|
197
|
+
{#if showControls}
|
|
198
|
+
<Controls
|
|
199
|
+
on:pausePlayEvent="{pausePlayEvent}"
|
|
200
|
+
paused="{paused}"
|
|
201
|
+
clickedOnPauseBtn="{clickedOnPauseBtn}"
|
|
202
|
+
controlsOpacity="{controlsOpacity}"
|
|
203
|
+
controlsPosition="{controlsPosition}"
|
|
204
|
+
widthVideoContainer="{widthVideoContainer}"
|
|
205
|
+
heightVideoContainer="{heightVideoContainer}"
|
|
206
|
+
controlsBorderOffset="{controlsBorderOffset}"
|
|
207
|
+
resetCondition="{resetCondition}"
|
|
208
|
+
separateReplayIcon="{separateReplayIcon}"
|
|
209
|
+
controlsColour="{controlsColour}"
|
|
210
|
+
/>
|
|
211
|
+
{:else}
|
|
212
|
+
<button
|
|
213
|
+
on:click="{() => {
|
|
214
|
+
paused === true ? (paused = false) : (paused = true);
|
|
215
|
+
}}"
|
|
216
|
+
style="position: absolute; top: 0; left: 0; width: {widthVideoContainer}px; height: {heightVideoContainer}px;"
|
|
217
|
+
></button>
|
|
218
|
+
{/if}
|
|
219
|
+
{/if}
|
|
220
|
+
<video
|
|
221
|
+
bind:this="{videoElement}"
|
|
222
|
+
src="{src}"
|
|
223
|
+
width="100%"
|
|
224
|
+
muted="{muteVideo}"
|
|
225
|
+
playsinline
|
|
226
|
+
preload="{preloadVideo}"
|
|
227
|
+
loop="{loopVideo}"
|
|
228
|
+
bind:currentTime="{time}"
|
|
229
|
+
bind:duration
|
|
230
|
+
bind:paused
|
|
231
|
+
autoplay
|
|
232
|
+
bind:clientWidth="{widthVideo}"
|
|
233
|
+
bind:clientHeight="{heightVideo}"
|
|
234
|
+
style="{showControls ? 'position: relative' : 'position: relative'}"
|
|
235
|
+
>
|
|
236
|
+
<track kind="captions" />
|
|
237
|
+
</video>
|
|
238
|
+
</div>
|
|
239
|
+
{/if}
|
|
240
|
+
{#if caption}
|
|
241
|
+
<figcaption>{caption}</figcaption>
|
|
242
|
+
{/if}
|
|
243
|
+
{/if}
|
|
244
|
+
</div>
|
|
245
|
+
</Block>
|
|
246
|
+
|
|
247
|
+
<style>.video-wrapper {
|
|
248
|
+
position: relative;
|
|
249
|
+
}
|
|
250
|
+
.video-wrapper video {
|
|
251
|
+
pointer-events: none;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.visually-hidden {
|
|
255
|
+
position: absolute !important;
|
|
256
|
+
width: 1px !important;
|
|
257
|
+
height: 1px !important;
|
|
258
|
+
padding: 0 !important;
|
|
259
|
+
margin: -1px !important;
|
|
260
|
+
overflow: hidden !important;
|
|
261
|
+
clip: rect(0, 0, 0, 0) !important;
|
|
262
|
+
-webkit-clip-path: polygon(0px 0px, 0px 0px, 0px 0px);
|
|
263
|
+
clip-path: polygon(0px 0px, 0px 0px, 0px 0px);
|
|
264
|
+
white-space: nowrap !important;
|
|
265
|
+
border: 0 !important;
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
figcaption {
|
|
269
|
+
font-size: 0.8rem;
|
|
270
|
+
color: var(--theme-colour-text-secondary, #666666);
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
button {
|
|
274
|
+
border: none;
|
|
275
|
+
margin: 0;
|
|
276
|
+
padding: 0;
|
|
277
|
+
background: none;
|
|
278
|
+
}</style>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
<script>import { onMount } from 'svelte';
|
|
2
|
+
/**
|
|
3
|
+
* Whether to change visibility just once.
|
|
4
|
+
*
|
|
5
|
+
* Useful for loading expensive images or other media and then keeping them around once they're first loaded.
|
|
6
|
+
*/
|
|
7
|
+
export let once = false;
|
|
8
|
+
/** Set Intersection Observer [rootMargin](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#rootmargin) `top`. */
|
|
9
|
+
export let top = 0;
|
|
10
|
+
/** Set Intersection Observer [rootMargin](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#rootmargin) `bottom`. */
|
|
11
|
+
export let bottom = 0;
|
|
12
|
+
/** Set Intersection Observer [rootMargin](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#rootmargin) `left`. */
|
|
13
|
+
export let left = 0;
|
|
14
|
+
/** Set Intersection Observer [rootMargin](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#rootmargin) `right`. */
|
|
15
|
+
export let right = 0;
|
|
16
|
+
/** Set the Intersection Observer [threshold](https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#threshold). */
|
|
17
|
+
export let threshold = 0;
|
|
18
|
+
let visible = false;
|
|
19
|
+
let container;
|
|
20
|
+
onMount(() => {
|
|
21
|
+
if (typeof IntersectionObserver !== 'undefined') {
|
|
22
|
+
const rootMargin = `${bottom}px ${left}px ${top}px ${right}px`;
|
|
23
|
+
const observer = new IntersectionObserver((entries) => {
|
|
24
|
+
visible = entries[0].isIntersecting;
|
|
25
|
+
if (visible && once) {
|
|
26
|
+
observer.unobserve(container);
|
|
27
|
+
}
|
|
28
|
+
}, {
|
|
29
|
+
rootMargin,
|
|
30
|
+
threshold,
|
|
31
|
+
});
|
|
32
|
+
observer.observe(container);
|
|
33
|
+
return () => observer.unobserve(container);
|
|
34
|
+
}
|
|
35
|
+
function handler() {
|
|
36
|
+
const bcr = container.getBoundingClientRect();
|
|
37
|
+
visible =
|
|
38
|
+
bcr.bottom + bottom > 0 &&
|
|
39
|
+
bcr.right + right > 0 &&
|
|
40
|
+
bcr.top - top < window.innerHeight &&
|
|
41
|
+
bcr.left - left < window.innerWidth;
|
|
42
|
+
if (visible && once) {
|
|
43
|
+
window.removeEventListener('scroll', handler);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
window.addEventListener('scroll', handler);
|
|
47
|
+
return () => window.removeEventListener('scroll', handler);
|
|
48
|
+
});
|
|
49
|
+
</script>
|
|
50
|
+
|
|
51
|
+
<div bind:this="{container}">
|
|
52
|
+
<!-- An element or component -->
|
|
53
|
+
<slot visible="{visible}" />
|
|
54
|
+
</div>
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Components
|
|
2
|
+
export { default as Article } from './components/Article/Article.svelte';
|
|
3
|
+
export { default as BeforeAfter } from './components/BeforeAfter/BeforeAfter.svelte';
|
|
4
|
+
export { default as Block } from './components/Block/Block.svelte';
|
|
5
|
+
export { default as BodyText } from './components/BodyText/BodyText.svelte';
|
|
6
|
+
export { default as DatawrapperChart } from './components/DatawrapperChart/DatawrapperChart.svelte';
|
|
7
|
+
export { default as EmbedPreviewerLink } from './components/EmbedPreviewerLink/EmbedPreviewerLink.svelte';
|
|
8
|
+
export { default as FeaturePhoto } from './components/FeaturePhoto/FeaturePhoto.svelte';
|
|
9
|
+
export { default as Framer } from './components/Framer/Framer.svelte';
|
|
10
|
+
export { default as GraphicBlock } from './components/GraphicBlock/GraphicBlock.svelte';
|
|
11
|
+
export { default as Headline } from './components/Headline/Headline.svelte';
|
|
12
|
+
export { default as Hero } from './components/Hero/Hero.svelte';
|
|
13
|
+
export { default as NoteText } from './components/NoteText/NoteText.svelte';
|
|
14
|
+
export { default as PymChild } from './components/PymChild/PymChild.svelte';
|
|
15
|
+
export { default as ReutersLogo } from './components/ReutersLogo/ReutersLogo.svelte';
|
|
16
|
+
export { default as Scroller } from './components/Scroller/Scroller.svelte';
|
|
17
|
+
export { default as SEO } from './components/SEO/SEO.svelte';
|
|
18
|
+
export { default as Sharer } from './components/Sharer/Sharer.svelte';
|
|
19
|
+
export { default as SiteFooter } from './components/SiteFooter/SiteFooter.svelte';
|
|
20
|
+
export { default as SiteHeader } from './components/SiteHeader/SiteHeader.svelte';
|
|
21
|
+
export { default as Spinner } from './components/Spinner/Spinner.svelte';
|
|
22
|
+
export {
|
|
23
|
+
default as Theme,
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
themes
|
|
26
|
+
} from './components/Theme/Theme.svelte';
|
|
27
|
+
export { default as Video } from './components/Video/Video.svelte';
|
|
28
|
+
export { default as Visible } from './components/Visible/Visible.svelte';
|
|
29
|
+
|
|
30
|
+
// Utilities
|
|
31
|
+
export { getPhotoPackPropsFromDoc } from './components/PhotoPack/docProps';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// Bootstrap overrides...
|
|
2
|
+
@import "variables";
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
// Configuration
|
|
6
|
+
@import "bootstrap/scss/functions";
|
|
7
|
+
@import "bootstrap/scss/variables";
|
|
8
|
+
@import "bootstrap/scss/maps";
|
|
9
|
+
@import "bootstrap/scss/mixins";
|
|
10
|
+
@import "bootstrap/scss/utilities";
|
|
11
|
+
|
|
12
|
+
// Layout & components
|
|
13
|
+
@import "bootstrap/scss/root";
|
|
14
|
+
@import "bootstrap/scss/reboot";
|
|
15
|
+
@import "bootstrap/scss/type";
|
|
16
|
+
@import "bootstrap/scss/images";
|
|
17
|
+
@import "bootstrap/scss/containers";
|
|
18
|
+
@import "bootstrap/scss/grid";
|
|
19
|
+
@import "bootstrap/scss/tables";
|
|
20
|
+
@import "bootstrap/scss/forms";
|
|
21
|
+
@import "bootstrap/scss/buttons";
|
|
22
|
+
@import "bootstrap/scss/transitions";
|
|
23
|
+
@import "bootstrap/scss/dropdown";
|
|
24
|
+
@import "bootstrap/scss/button-group";
|
|
25
|
+
|
|
26
|
+
// // Helpers
|
|
27
|
+
// @import "bootstrap/scss/helpers";
|
|
28
|
+
|
|
29
|
+
// // Utilities
|
|
30
|
+
// @import "bootstrap/scss/utilities/api";
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
// // This should go somewhere...
|
|
34
|
+
// $hr-border-width: $border-width !default;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
$nord-0: #2E3440;
|
|
2
|
+
$nord-polar-night-0: #2E3440;
|
|
3
|
+
$nord-black: #2E3440;
|
|
4
|
+
$nord-1: #3B4252;
|
|
5
|
+
$nord-polar-night-1: #3B4252;
|
|
6
|
+
$nord-2: #434C5E;
|
|
7
|
+
$nord-polar-night-2: #434C5E;
|
|
8
|
+
$nord-3: #4C566A;
|
|
9
|
+
$nord-polar-night-3: #4C566A;
|
|
10
|
+
$nord-4: #D8DEE9;
|
|
11
|
+
$nord-snow-storm-0: #D8DEE9;
|
|
12
|
+
$nord-5: #E5E9F0;
|
|
13
|
+
$nord-snow-storm-1: #E5E9F0;
|
|
14
|
+
$nord-6: #ECEFF4;
|
|
15
|
+
$nord-snow-storm-2: #ECEFF4;
|
|
16
|
+
$nord-white: #ECEFF4;
|
|
17
|
+
$nord-7: #8FBCBB;
|
|
18
|
+
$nord-frost-0: #8FBCBB;
|
|
19
|
+
$nord-8: #88C0D0;
|
|
20
|
+
$nord-frost-1: #88C0D0;
|
|
21
|
+
$nord-9: #81A1C1;
|
|
22
|
+
$nord-frost-2: #81A1C1;
|
|
23
|
+
$nord-10: #5E81AC;
|
|
24
|
+
$nord-frost-3: #5E81AC;
|
|
25
|
+
$nord-blue: #5E81AC;
|
|
26
|
+
$nord-11: #BF616A;
|
|
27
|
+
$nord-aurora-0: #BF616A;
|
|
28
|
+
$nord-red: #BF616A;
|
|
29
|
+
$nord-12: #D08770;
|
|
30
|
+
$nord-aurora-1: #D08770;
|
|
31
|
+
$nord-orange: #D08770;
|
|
32
|
+
$nord-13: #EBCB8B;
|
|
33
|
+
$nord-aurora-2: #EBCB8B;
|
|
34
|
+
$nord-yellow: #EBCB8B;
|
|
35
|
+
$nord-14: #A3BE8C;
|
|
36
|
+
$nord-aurora-3: #A3BE8C;
|
|
37
|
+
$nord-green: #A3BE8C;
|
|
38
|
+
$nord-15: #B48EAD;
|
|
39
|
+
$nord-aurora-4: #B48EAD;
|
|
40
|
+
$nord-purple: #B48EAD;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Brand colours from RCOM's raptor system
|
|
2
|
+
// https://github.com/tr/rcom-arc_raptor-ui/blob/develop/packages/rcom-raptor-ui_atomic/styles/_colors.scss
|
|
3
|
+
$tr-orange: #fa6400;
|
|
4
|
+
$tr-dark-orange: #dc4300;
|
|
5
|
+
$tr-light-orange: #ffa100;
|
|
6
|
+
$tr-dark-grey: #404040;
|
|
7
|
+
$tr-medium-grey: #666666;
|
|
8
|
+
$tr-light-grey: #afafaf;
|
|
9
|
+
$tr-muted-grey: #d0d0d0;
|
|
10
|
+
$tr-contrast-grey: #949494;
|
|
11
|
+
$tr-hover-background-grey: #f8f8f8;
|
|
12
|
+
$tr-light-muted-grey: #f4f4f4;
|
|
13
|
+
$tr-ultra-light-grey: #fafafa;
|
|
14
|
+
$tr-dark-blue: #005da2;
|
|
15
|
+
$tr-light-blue: #0099c4;
|
|
16
|
+
$tr-muted-blue: #4386B9;
|
|
17
|
+
$tr-lighter-blue: #7FACCE;
|
|
18
|
+
$tr-superlight-blue: #e5eef5;
|
|
19
|
+
$tr-dark-purple: #621f95;
|
|
20
|
+
$tr-light-purple: #6e3ab7;
|
|
21
|
+
$tr-dark-red: #a00000;
|
|
22
|
+
$tr-light-red: #dc0a0a;
|
|
23
|
+
$tr-dark-green: #387c2b;
|
|
24
|
+
$tr-light-green: #77a22d;
|
|
25
|
+
$black: #000;
|
|
26
|
+
$white: #fff;
|
|
27
|
+
$ad-placeholder: #ffb1b1;
|