@comicrelief/component-library 8.54.1 → 8.55.0
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/dist/components/Atoms/Logo/Logo.js +0 -5
- package/dist/components/Atoms/Logo/Logo.test.js +1 -1
- package/dist/components/Atoms/LogoNav2026/LogoNav2026.test.js +94 -0
- package/dist/components/Atoms/LogoNav2026/_LogoNav2026.js +63 -0
- package/dist/components/Atoms/LogoNav2026/assets/cr-logo-mob.svg +14 -0
- package/dist/components/Atoms/LogoNav2026/assets/cr-logo.svg +14 -0
- package/dist/components/Molecules/LogoLinked/LogoLinked.md +6 -1
- package/dist/components/Organisms/Header/HeaderNav/HeaderNav.style.js +3 -3
- package/dist/components/Organisms/Header2025/Header2025.md +1 -1
- package/dist/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.js +1 -1
- package/dist/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.style.js +3 -3
- package/dist/components/Organisms/Header2026/Burger/BurgerMenu.js +25 -0
- package/dist/components/Organisms/Header2026/Burger/BurgerMenu.style.js +58 -0
- package/dist/components/Organisms/Header2026/Header2026.js +148 -0
- package/dist/components/Organisms/Header2026/Header2026.md +14 -0
- package/dist/components/Organisms/Header2026/Header2026.style.js +129 -0
- package/dist/components/Organisms/Header2026/Navs/Navs.js +209 -0
- package/dist/components/Organisms/Header2026/Navs/Navs.style.js +104 -0
- package/dist/components/Organisms/Header2026/Navs/PrimaryNavItem.js +227 -0
- package/dist/components/Organisms/Header2026/Navs/PrimaryNavItem.style.js +401 -0
- package/dist/components/Organisms/Header2026/Navs/arrow-right.png +0 -0
- package/dist/components/Organisms/Header2026/Navs/arrow.svg +6 -0
- package/dist/components/Organisms/Header2026/Navs/chevron-down.svg +3 -0
- package/dist/components/Organisms/Header2026/assets/arrow-icon.svg +3 -0
- package/dist/components/Organisms/Header2026/assets/chevron-icon.svg +3 -0
- package/dist/components/Organisms/Header2026/assets/search-icon.svg +10 -0
- package/dist/components/Organisms/Header2026/header2026.test.js +24 -0
- package/dist/components/Organisms/Header2026/mockData/mockData.json +569 -0
- package/dist/components/Organisms/Header2026/mockData/query.graphql +64 -0
- package/dist/theme/shared/animations.js +6 -1
- package/dist/utils/navHelper.js +75 -3
- package/dist/utils/remove-extra-styles-in-preview.css +14 -0
- package/dist/utils/urlHelper.js +30 -0
- package/package.json +1 -1
- package/src/components/Atoms/Logo/Logo.js +0 -4
- package/src/components/Atoms/Logo/Logo.test.js +5 -5
- package/src/components/Atoms/LogoNav2026/LogoNav2026.test.js +91 -0
- package/src/components/Atoms/LogoNav2026/_LogoNav2026.js +75 -0
- package/src/components/Atoms/LogoNav2026/assets/cr-logo-mob.svg +14 -0
- package/src/components/Atoms/LogoNav2026/assets/cr-logo.svg +14 -0
- package/src/components/Molecules/LogoLinked/LogoLinked.md +6 -1
- package/src/components/Organisms/Header/HeaderNav/HeaderNav.style.js +2 -2
- package/src/components/Organisms/Header2025/Header2025.md +1 -1
- package/src/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.js +1 -1
- package/src/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.style.js +2 -2
- package/src/components/Organisms/Header2026/Burger/BurgerMenu.js +26 -0
- package/src/components/Organisms/Header2026/Burger/BurgerMenu.style.js +104 -0
- package/src/components/Organisms/Header2026/Header2026.js +215 -0
- package/src/components/Organisms/Header2026/Header2026.md +14 -0
- package/src/components/Organisms/Header2026/Header2026.style.js +195 -0
- package/src/components/Organisms/Header2026/Navs/Navs.js +251 -0
- package/src/components/Organisms/Header2026/Navs/Navs.style.js +168 -0
- package/src/components/Organisms/Header2026/Navs/PrimaryNavItem.js +354 -0
- package/src/components/Organisms/Header2026/Navs/PrimaryNavItem.style.js +658 -0
- package/src/components/Organisms/Header2026/Navs/arrow-right.png +0 -0
- package/src/components/Organisms/Header2026/Navs/arrow.svg +6 -0
- package/src/components/Organisms/Header2026/Navs/chevron-down.svg +3 -0
- package/src/components/Organisms/Header2026/assets/arrow-icon.svg +3 -0
- package/src/components/Organisms/Header2026/assets/chevron-icon.svg +3 -0
- package/src/components/Organisms/Header2026/assets/search-icon.svg +10 -0
- package/src/components/Organisms/Header2026/header2026.test.js +22 -0
- package/src/components/Organisms/Header2026/mockData/mockData.json +569 -0
- package/src/components/Organisms/Header2026/mockData/query.graphql +64 -0
- package/src/theme/crTheme/theme.js +0 -1
- package/src/theme/shared/animations.js +43 -2
- package/src/utils/navHelper.js +82 -2
- package/src/utils/remove-extra-styles-in-preview.css +14 -0
- package/src/utils/urlHelper.js +27 -0
|
@@ -1,4 +1,43 @@
|
|
|
1
|
-
import { css } from 'styled-components';
|
|
1
|
+
import { keyframes, css } from 'styled-components';
|
|
2
|
+
|
|
3
|
+
const pulseIn = keyframes`
|
|
4
|
+
from {
|
|
5
|
+
transform: scale3d(1, 1, 1);
|
|
6
|
+
}
|
|
7
|
+
30% {
|
|
8
|
+
transform: scale3d(1.04, 1.04, 1.04);
|
|
9
|
+
}
|
|
10
|
+
60% {
|
|
11
|
+
transform: scale3d(1.03, 1.03, 1.03);
|
|
12
|
+
}
|
|
13
|
+
to {
|
|
14
|
+
transform: scale3d(1.04, 1.04, 1.04);
|
|
15
|
+
}
|
|
16
|
+
`;
|
|
17
|
+
|
|
18
|
+
const pulseOut = keyframes`
|
|
19
|
+
from {
|
|
20
|
+
transform: scale3d(1.03, 1.03, 1.03);
|
|
21
|
+
}
|
|
22
|
+
30% {
|
|
23
|
+
transform: scale3d(0.99, 0.99, 0.99);
|
|
24
|
+
}
|
|
25
|
+
60% {
|
|
26
|
+
transform: scale3d(1.01, 1.01, 1.01);
|
|
27
|
+
}
|
|
28
|
+
to {
|
|
29
|
+
transform: scale3d(1, 1, 1);
|
|
30
|
+
}
|
|
31
|
+
`;
|
|
32
|
+
|
|
33
|
+
const pulseInAnimation = css`
|
|
34
|
+
animation: ${pulseIn} 0.4s ease-in-out forwards;
|
|
35
|
+
`;
|
|
36
|
+
|
|
37
|
+
const pulseOutAnimation = css`
|
|
38
|
+
${pulseInAnimation}
|
|
39
|
+
animation-name: ${pulseOut};
|
|
40
|
+
`;
|
|
2
41
|
|
|
3
42
|
/**
|
|
4
43
|
* Logo rotation animation on hover
|
|
@@ -110,5 +149,7 @@ export {
|
|
|
110
149
|
logoRotateAnimation,
|
|
111
150
|
springScaleAnimation,
|
|
112
151
|
formFieldInputAnimation,
|
|
113
|
-
bounceUpAnimation
|
|
152
|
+
bounceUpAnimation,
|
|
153
|
+
pulseInAnimation,
|
|
154
|
+
pulseOutAnimation
|
|
114
155
|
};
|
package/src/utils/navHelper.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
/* Determine where to grab the URL, depending on the component type and values supplied */
|
|
2
2
|
const NavHelper = navItem => {
|
|
3
|
+
if (!navItem) return '';
|
|
4
|
+
|
|
3
5
|
/* Default url path location for 'Pages' */
|
|
4
6
|
let thisUrl = navItem.path;
|
|
5
7
|
|
|
6
|
-
if (navItem.internal.type === 'ContentfulComponentLink') {
|
|
8
|
+
if (navItem.internal && navItem.internal.type === 'ContentfulComponentLink') {
|
|
7
9
|
thisUrl = navItem.reference && navItem.reference.path
|
|
8
10
|
? navItem.reference.path
|
|
9
11
|
: navItem.url;
|
|
@@ -12,6 +14,40 @@ const NavHelper = navItem => {
|
|
|
12
14
|
return thisUrl;
|
|
13
15
|
};
|
|
14
16
|
|
|
17
|
+
/* NavHelper for new Contentful data structure (headerPageGroups format) */
|
|
18
|
+
const NavHelperNew = pageLink => {
|
|
19
|
+
if (!pageLink) return '';
|
|
20
|
+
|
|
21
|
+
// pageSelector path takes priority
|
|
22
|
+
if (pageLink.pageSelector && pageLink.pageSelector.path) {
|
|
23
|
+
return `/${pageLink.pageSelector.path}`;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Otherwise use external URL
|
|
27
|
+
if (pageLink.pageUrlIfExternal) {
|
|
28
|
+
return pageLink.pageUrlIfExternal;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return '';
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/* Get URL for primary page in new data structure */
|
|
35
|
+
const NavHelperPrimary = group => {
|
|
36
|
+
if (!group) return '';
|
|
37
|
+
|
|
38
|
+
// primaryPageSelector path takes priority
|
|
39
|
+
if (group.primaryPageSelector && group.primaryPageSelector.path) {
|
|
40
|
+
return `/${group.primaryPageSelector.path}`;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Otherwise use external URL
|
|
44
|
+
if (group.primaryPageUrlIfExternal) {
|
|
45
|
+
return group.primaryPageUrlIfExternal;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return '';
|
|
49
|
+
};
|
|
50
|
+
|
|
15
51
|
const MoreNavPreProcess = (menuGroups, characterLimit) => {
|
|
16
52
|
let characterCount = 0;
|
|
17
53
|
const overLimit = false;
|
|
@@ -35,4 +71,48 @@ const MoreNavPreProcess = (menuGroups, characterLimit) => {
|
|
|
35
71
|
return { standardGroups, moreNavGroups };
|
|
36
72
|
};
|
|
37
73
|
|
|
38
|
-
|
|
74
|
+
/* MoreNavPreProcess for new Contentful data structure */
|
|
75
|
+
const MoreNavPreProcessNew = (headerPageGroups, characterLimit) => {
|
|
76
|
+
let characterCount = 0;
|
|
77
|
+
const overLimit = false;
|
|
78
|
+
const standardGroups = [];
|
|
79
|
+
const moreNavGroups = [];
|
|
80
|
+
|
|
81
|
+
headerPageGroups.map(group => {
|
|
82
|
+
// Use primaryPageName for character count
|
|
83
|
+
characterCount += group.primaryPageName.length;
|
|
84
|
+
|
|
85
|
+
// Assign groups to the relevant array if we're over the limit
|
|
86
|
+
return characterCount > characterLimit !== overLimit
|
|
87
|
+
? moreNavGroups.push(group)
|
|
88
|
+
: standardGroups.push(group);
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
return { standardGroups, moreNavGroups };
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
/* Combine all column links into a single array for submenu rendering */
|
|
95
|
+
const getColumnLinks = group => {
|
|
96
|
+
const links = [];
|
|
97
|
+
|
|
98
|
+
if (group.column1PageLinks) {
|
|
99
|
+
links.push(...group.column1PageLinks);
|
|
100
|
+
}
|
|
101
|
+
if (group.column2PageLinks) {
|
|
102
|
+
links.push(...group.column2PageLinks);
|
|
103
|
+
}
|
|
104
|
+
if (group.column3PageLinks) {
|
|
105
|
+
links.push(...group.column3PageLinks);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return links;
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
export {
|
|
112
|
+
NavHelper,
|
|
113
|
+
NavHelperNew,
|
|
114
|
+
NavHelperPrimary,
|
|
115
|
+
MoreNavPreProcess,
|
|
116
|
+
MoreNavPreProcessNew,
|
|
117
|
+
getColumnLinks
|
|
118
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* Overiding the extra Styleguidest / preview styles */
|
|
2
|
+
.rsg--preview-35 {
|
|
3
|
+
padding: 0 !important;
|
|
4
|
+
border: none !important;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
.rsg--content-3 {
|
|
8
|
+
padding: 0 !important;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.rsg--header-11,
|
|
12
|
+
.rsg--tabs-12 {
|
|
13
|
+
display: none !important;;
|
|
14
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const BASE_URL = 'https://www.comicrelief.com';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Prepends base URL to relative paths when in dev mode
|
|
5
|
+
* @param {string} path - The path to process into url
|
|
6
|
+
* @param {boolean} devMode - for adding real world urls when dev in CL
|
|
7
|
+
* @returns {string} The processed path / url
|
|
8
|
+
*/
|
|
9
|
+
const prependBaseUrl = (path, devMode) => {
|
|
10
|
+
// Return the url as-is if not in dev mode
|
|
11
|
+
if (!devMode) return path;
|
|
12
|
+
|
|
13
|
+
// Don't prepend if it's already an absolute URL
|
|
14
|
+
if (path.startsWith('http://')
|
|
15
|
+
|| path.startsWith('https://')
|
|
16
|
+
|| path.startsWith('//')) {
|
|
17
|
+
return path;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// Don't prepend to anchor-only links
|
|
21
|
+
if (path === '#') return path;
|
|
22
|
+
|
|
23
|
+
// Prepend base URL
|
|
24
|
+
return `${BASE_URL}${path.startsWith('/') ? '' : '/'}${path}`;
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
export default prependBaseUrl;
|