@comicrelief/component-library 8.54.0 → 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.
Files changed (76) hide show
  1. package/dist/components/Atoms/Logo/Logo.js +0 -5
  2. package/dist/components/Atoms/Logo/Logo.test.js +1 -1
  3. package/dist/components/Atoms/LogoNav2026/LogoNav2026.test.js +94 -0
  4. package/dist/components/Atoms/LogoNav2026/_LogoNav2026.js +63 -0
  5. package/dist/components/Atoms/LogoNav2026/assets/cr-logo-mob.svg +14 -0
  6. package/dist/components/Atoms/LogoNav2026/assets/cr-logo.svg +14 -0
  7. package/dist/components/Molecules/CTA/CTAMultiCard/__snapshots__/CTAMultiCard.test.js.snap +12 -12
  8. package/dist/components/Molecules/CTA/CTASingleCard/CTASingleCard.md +2 -2
  9. package/dist/components/Molecules/CTA/CTASingleCard/__snapshots__/CTASingleCard.test.js.snap +2 -2
  10. package/dist/components/Molecules/CTA/shared/CTACard.style.js +1 -1
  11. package/dist/components/Molecules/LogoLinked/LogoLinked.md +6 -1
  12. package/dist/components/Organisms/Header/HeaderNav/HeaderNav.style.js +3 -3
  13. package/dist/components/Organisms/Header2025/Header2025.md +1 -1
  14. package/dist/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.js +1 -1
  15. package/dist/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.style.js +3 -3
  16. package/dist/components/Organisms/Header2026/Burger/BurgerMenu.js +25 -0
  17. package/dist/components/Organisms/Header2026/Burger/BurgerMenu.style.js +58 -0
  18. package/dist/components/Organisms/Header2026/Header2026.js +148 -0
  19. package/dist/components/Organisms/Header2026/Header2026.md +14 -0
  20. package/dist/components/Organisms/Header2026/Header2026.style.js +129 -0
  21. package/dist/components/Organisms/Header2026/Navs/Navs.js +209 -0
  22. package/dist/components/Organisms/Header2026/Navs/Navs.style.js +104 -0
  23. package/dist/components/Organisms/Header2026/Navs/PrimaryNavItem.js +227 -0
  24. package/dist/components/Organisms/Header2026/Navs/PrimaryNavItem.style.js +401 -0
  25. package/dist/components/Organisms/Header2026/Navs/arrow-right.png +0 -0
  26. package/dist/components/Organisms/Header2026/Navs/arrow.svg +6 -0
  27. package/dist/components/Organisms/Header2026/Navs/chevron-down.svg +3 -0
  28. package/dist/components/Organisms/Header2026/assets/arrow-icon.svg +3 -0
  29. package/dist/components/Organisms/Header2026/assets/chevron-icon.svg +3 -0
  30. package/dist/components/Organisms/Header2026/assets/search-icon.svg +10 -0
  31. package/dist/components/Organisms/Header2026/header2026.test.js +24 -0
  32. package/dist/components/Organisms/Header2026/mockData/mockData.json +569 -0
  33. package/dist/components/Organisms/Header2026/mockData/query.graphql +64 -0
  34. package/dist/theme/shared/animations.js +6 -1
  35. package/dist/utils/navHelper.js +75 -3
  36. package/dist/utils/remove-extra-styles-in-preview.css +14 -0
  37. package/dist/utils/urlHelper.js +30 -0
  38. package/package.json +1 -1
  39. package/src/components/Atoms/Logo/Logo.js +0 -4
  40. package/src/components/Atoms/Logo/Logo.test.js +5 -5
  41. package/src/components/Atoms/LogoNav2026/LogoNav2026.test.js +91 -0
  42. package/src/components/Atoms/LogoNav2026/_LogoNav2026.js +75 -0
  43. package/src/components/Atoms/LogoNav2026/assets/cr-logo-mob.svg +14 -0
  44. package/src/components/Atoms/LogoNav2026/assets/cr-logo.svg +14 -0
  45. package/src/components/Molecules/CTA/CTAMultiCard/__snapshots__/CTAMultiCard.test.js.snap +12 -12
  46. package/src/components/Molecules/CTA/CTASingleCard/CTASingleCard.md +2 -2
  47. package/src/components/Molecules/CTA/CTASingleCard/__snapshots__/CTASingleCard.test.js.snap +2 -2
  48. package/src/components/Molecules/CTA/shared/CTACard.style.js +1 -1
  49. package/src/components/Molecules/LogoLinked/LogoLinked.md +6 -1
  50. package/src/components/Organisms/Header/HeaderNav/HeaderNav.style.js +2 -2
  51. package/src/components/Organisms/Header2025/Header2025.md +1 -1
  52. package/src/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.js +1 -1
  53. package/src/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.style.js +2 -2
  54. package/src/components/Organisms/Header2026/Burger/BurgerMenu.js +26 -0
  55. package/src/components/Organisms/Header2026/Burger/BurgerMenu.style.js +104 -0
  56. package/src/components/Organisms/Header2026/Header2026.js +215 -0
  57. package/src/components/Organisms/Header2026/Header2026.md +14 -0
  58. package/src/components/Organisms/Header2026/Header2026.style.js +195 -0
  59. package/src/components/Organisms/Header2026/Navs/Navs.js +251 -0
  60. package/src/components/Organisms/Header2026/Navs/Navs.style.js +168 -0
  61. package/src/components/Organisms/Header2026/Navs/PrimaryNavItem.js +354 -0
  62. package/src/components/Organisms/Header2026/Navs/PrimaryNavItem.style.js +658 -0
  63. package/src/components/Organisms/Header2026/Navs/arrow-right.png +0 -0
  64. package/src/components/Organisms/Header2026/Navs/arrow.svg +6 -0
  65. package/src/components/Organisms/Header2026/Navs/chevron-down.svg +3 -0
  66. package/src/components/Organisms/Header2026/assets/arrow-icon.svg +3 -0
  67. package/src/components/Organisms/Header2026/assets/chevron-icon.svg +3 -0
  68. package/src/components/Organisms/Header2026/assets/search-icon.svg +10 -0
  69. package/src/components/Organisms/Header2026/header2026.test.js +22 -0
  70. package/src/components/Organisms/Header2026/mockData/mockData.json +569 -0
  71. package/src/components/Organisms/Header2026/mockData/query.graphql +64 -0
  72. package/src/theme/crTheme/theme.js +0 -1
  73. package/src/theme/shared/animations.js +43 -2
  74. package/src/utils/navHelper.js +82 -2
  75. package/src/utils/remove-extra-styles-in-preview.css +14 -0
  76. 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
  };
@@ -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
- export { NavHelper, MoreNavPreProcess };
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;