@comicrelief/component-library 8.12.1 → 8.13.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.
Files changed (103) hide show
  1. package/README.md +12 -0
  2. package/dist/components/Atoms/SocialIcons/Icon/Icon.js +50 -8
  3. package/dist/components/Atoms/SocialIcons/SocialIcons.js +2 -1
  4. package/dist/components/Atoms/SocialIcons/Utils/Links.js +8 -4
  5. package/dist/components/Atoms/SocialIcons/__snapshots__/SocialIcons.test.js.snap +15 -117
  6. package/dist/components/Molecules/Logos/Logos.js +37 -15
  7. package/dist/components/Molecules/ShareButton/ShareButton.js +2 -1
  8. package/dist/components/Molecules/ShareButton/ShareButton.test.js +2 -2
  9. package/dist/components/Organisms/Footer/Nav/Nav.js +3 -3
  10. package/dist/components/Organisms/Footer/__snapshots__/Footer.test.js.snap +155 -189
  11. package/dist/components/Organisms/Header/Header.md +4 -0
  12. package/dist/components/Organisms/Header/HeaderNav/HeaderNav.js +163 -0
  13. package/dist/components/Organisms/Header/HeaderNav/HeaderNav.style.js +237 -0
  14. package/dist/components/Organisms/Header/HeaderNav/Menu-Group-Icon.svg +3 -0
  15. package/dist/components/Organisms/Header/HeaderNav/arrow-right.png +0 -0
  16. package/dist/components/Organisms/Header/HeaderNav/arrow.svg +6 -0
  17. package/dist/components/Organisms/Header/HeaderNav/chevron-down.svg +3 -0
  18. package/dist/components/Organisms/Header/Nav/Nav.js +3 -3
  19. package/dist/components/Organisms/Header/annoying.css +14 -0
  20. package/dist/components/Organisms/Header/assets/Post.svg +3 -0
  21. package/dist/components/Organisms/Header/data/data-extended.js +236 -0
  22. package/dist/components/Organisms/Header/data/data-live.js +126 -0
  23. package/dist/components/Organisms/Header2025/Burger/BurgerMenu.js +28 -0
  24. package/dist/components/Organisms/Header2025/Burger/BurgerMenu.style.js +76 -0
  25. package/dist/components/Organisms/Header2025/Header2025.js +40 -0
  26. package/dist/components/Organisms/Header2025/Header2025.md +665 -0
  27. package/dist/components/Organisms/Header2025/Header2025.style.js +72 -0
  28. package/dist/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.js +176 -0
  29. package/dist/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.style.js +308 -0
  30. package/dist/components/Organisms/Header2025/HeaderNav2025/HeaderNavItem2025.js +79 -0
  31. package/dist/components/Organisms/Header2025/HeaderNav2025/Menu-Group-Icon.svg +3 -0
  32. package/dist/components/Organisms/Header2025/HeaderNav2025/MoreNav.js +93 -0
  33. package/dist/components/Organisms/Header2025/HeaderNav2025/MoreNav.style.js +108 -0
  34. package/dist/components/Organisms/Header2025/HeaderNav2025/arrow-right.png +0 -0
  35. package/dist/components/Organisms/Header2025/HeaderNav2025/arrow.svg +6 -0
  36. package/dist/components/Organisms/Header2025/HeaderNav2025/chevron-down.svg +3 -0
  37. package/dist/components/Organisms/Header2025/annoying.css +14 -0
  38. package/dist/components/Organisms/Header2025/assets/PayIn.svg +3 -0
  39. package/dist/components/Organisms/Header2025/assets/Post.svg +3 -0
  40. package/dist/components/Organisms/Header2025/assets/icon--mail--2023.svg +3 -0
  41. package/dist/components/Organisms/Header2025/assets/icon--search--2023.svg +3 -0
  42. package/dist/components/Organisms/Header2025/assets/icon--shop--2023.svg +3 -0
  43. package/dist/components/Organisms/Header2025/data/data-extended.js +236 -0
  44. package/dist/components/Organisms/Header2025/data/data-live--minimal.js +70 -0
  45. package/dist/components/Organisms/Header2025/data/data-live.js +126 -0
  46. package/dist/components/Organisms/Header2025/data/data.js +156 -0
  47. package/dist/components/Organisms/Header2025/header2025.test.js +25 -0
  48. package/dist/index.js +7 -0
  49. package/dist/styleguide/data/data.js +19 -19
  50. package/dist/theme/shared/allBreakpoints.js +1 -0
  51. package/dist/utils/navHelper.js +24 -2
  52. package/package.json +1 -1
  53. package/playwright.config.js +13 -6
  54. package/src/components/Atoms/SocialIcons/Icon/Icon.js +84 -5
  55. package/src/components/Atoms/SocialIcons/SocialIcons.js +1 -0
  56. package/src/components/Atoms/SocialIcons/Utils/Links.js +8 -4
  57. package/src/components/Atoms/SocialIcons/__snapshots__/SocialIcons.test.js.snap +15 -117
  58. package/src/components/Molecules/Logos/Logos.js +35 -15
  59. package/src/components/Molecules/ShareButton/ShareButton.js +1 -0
  60. package/src/components/Molecules/ShareButton/ShareButton.test.js +8 -32
  61. package/src/components/Organisms/Footer/Nav/Nav.js +2 -2
  62. package/src/components/Organisms/Footer/__snapshots__/Footer.test.js.snap +155 -189
  63. package/src/components/Organisms/Header/Header.md +4 -0
  64. package/src/components/Organisms/Header/HeaderNav/HeaderNav.js +213 -0
  65. package/src/components/Organisms/Header/HeaderNav/HeaderNav.style.js +391 -0
  66. package/src/components/Organisms/Header/HeaderNav/Menu-Group-Icon.svg +3 -0
  67. package/src/components/Organisms/Header/HeaderNav/arrow-right.png +0 -0
  68. package/src/components/Organisms/Header/HeaderNav/arrow.svg +6 -0
  69. package/src/components/Organisms/Header/HeaderNav/chevron-down.svg +3 -0
  70. package/src/components/Organisms/Header/Nav/Nav.js +1 -1
  71. package/src/components/Organisms/Header/annoying.css +14 -0
  72. package/src/components/Organisms/Header/assets/Post.svg +3 -0
  73. package/src/components/Organisms/Header/data/data-extended.js +280 -0
  74. package/src/components/Organisms/Header/data/data-live.js +149 -0
  75. package/src/components/Organisms/Header2025/Burger/BurgerMenu.js +28 -0
  76. package/src/components/Organisms/Header2025/Burger/BurgerMenu.style.js +99 -0
  77. package/src/components/Organisms/Header2025/Header2025.js +62 -0
  78. package/src/components/Organisms/Header2025/Header2025.md +665 -0
  79. package/src/components/Organisms/Header2025/Header2025.style.js +131 -0
  80. package/src/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.js +193 -0
  81. package/src/components/Organisms/Header2025/HeaderNav2025/HeaderNav2025.style.js +462 -0
  82. package/src/components/Organisms/Header2025/HeaderNav2025/HeaderNavItem2025.js +142 -0
  83. package/src/components/Organisms/Header2025/HeaderNav2025/Menu-Group-Icon.svg +3 -0
  84. package/src/components/Organisms/Header2025/HeaderNav2025/MoreNav.js +171 -0
  85. package/src/components/Organisms/Header2025/HeaderNav2025/MoreNav.style.js +190 -0
  86. package/src/components/Organisms/Header2025/HeaderNav2025/arrow-right.png +0 -0
  87. package/src/components/Organisms/Header2025/HeaderNav2025/arrow.svg +6 -0
  88. package/src/components/Organisms/Header2025/HeaderNav2025/chevron-down.svg +3 -0
  89. package/src/components/Organisms/Header2025/annoying.css +14 -0
  90. package/src/components/Organisms/Header2025/assets/PayIn.svg +3 -0
  91. package/src/components/Organisms/Header2025/assets/Post.svg +3 -0
  92. package/src/components/Organisms/Header2025/assets/icon--mail--2023.svg +3 -0
  93. package/src/components/Organisms/Header2025/assets/icon--search--2023.svg +3 -0
  94. package/src/components/Organisms/Header2025/assets/icon--shop--2023.svg +3 -0
  95. package/src/components/Organisms/Header2025/data/data-extended.js +280 -0
  96. package/src/components/Organisms/Header2025/data/data-live--minimal.js +79 -0
  97. package/src/components/Organisms/Header2025/data/data-live.js +149 -0
  98. package/src/components/Organisms/Header2025/data/data.js +184 -0
  99. package/src/components/Organisms/Header2025/header2025.test.js +23 -0
  100. package/src/index.js +1 -0
  101. package/src/styleguide/data/data.js +19 -19
  102. package/src/theme/shared/allBreakpoints.js +1 -0
  103. package/src/utils/navHelper.js +24 -1
package/README.md CHANGED
@@ -53,3 +53,15 @@ To publish
53
53
  ```
54
54
  $ yarn publish:npm
55
55
  ```
56
+
57
+ ### Testing
58
+
59
+ Install Playwright:
60
+ ```
61
+ yarn playwright install
62
+ ```
63
+
64
+ Run the tests
65
+ ```
66
+ yarn test:e2e:local
67
+ ```
@@ -1,44 +1,86 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
9
+ var _kebabCase2 = _interopRequireDefault(require("lodash/kebabCase"));
8
10
  var _react = _interopRequireDefault(require("react"));
9
- var _styledComponents = _interopRequireDefault(require("styled-components"));
11
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
10
12
  var _hideVisually = _interopRequireDefault(require("../../../../theme/shared/hideVisually"));
13
+ var _Text = _interopRequireDefault(require("../../Text/Text"));
14
+ const RevealTextWidth = 55;
15
+ const RevealTextSpeed = 0.35;
11
16
  const StyledLink = _styledComponents.default.a.withConfig({
12
17
  displayName: "Icon__StyledLink",
13
18
  componentId: "sc-no6fx6-0"
14
- })(["text-decoration:none;cursor:pointer;display:block;transition:opacity 0.2s;&:hover,&:focus{opacity:0.6;}"]);
19
+ })(["text-decoration:none;cursor:pointer;display:block;position:relative;transition:opacity 0.2s;&:hover,&:focus{opacity:0.6;}", "};"], _ref => {
20
+ let {
21
+ isHeader
22
+ } = _ref;
23
+ return isHeader && (0, _styledComponents.css)(["overflow:hidden;padding-right:0px;transition:padding-right ", "s cubic-bezier(0.5,1.5,0.5,0.75);&:hover,&:focus{opacity:1;}@media ", "{&:hover,&:focus{img{filter:invert(0.5) sepia(1) saturate(100) hue-rotate(20deg);}}}@media ", "{&:hover,&:focus{padding-right:", "px;&[data-testid=\"header-esu\"]{padding-right:92px;}&[data-testid=\"header-shop\"]{padding-right:48px;}img + span{display:block;}}"], RevealTextSpeed, _ref2 => {
24
+ let {
25
+ theme
26
+ } = _ref2;
27
+ return theme.allBreakpoints('M');
28
+ }, _ref3 => {
29
+ let {
30
+ theme
31
+ } = _ref3;
32
+ return theme.allBreakpoints('NavWide');
33
+ }, RevealTextWidth);
34
+ });
35
+ const RevealText = (0, _styledComponents.default)(_Text.default).withConfig({
36
+ displayName: "Icon__RevealText",
37
+ componentId: "sc-no6fx6-1"
38
+ })(["width:auto;color:", ";position:absolute;top:50%;transform:translateY(-50%);left:70px;@media ", "{width:100%;text-align:center;position:absolute;top:8px;left:15px;transform:translateX(0);display:none;color:", ";}"], _ref4 => {
39
+ let {
40
+ theme
41
+ } = _ref4;
42
+ return theme.color('black');
43
+ }, _ref5 => {
44
+ let {
45
+ theme
46
+ } = _ref5;
47
+ return theme.allBreakpoints('Nav');
48
+ }, _ref6 => {
49
+ let {
50
+ theme
51
+ } = _ref6;
52
+ return theme.color('red');
53
+ });
15
54
  const StyledImage = _styledComponents.default.img.withConfig({
16
55
  displayName: "Icon__StyledImage",
17
- componentId: "sc-no6fx6-1"
56
+ componentId: "sc-no6fx6-2"
18
57
  })(["width:100%;"]);
19
58
  const HelperText = _styledComponents.default.span.withConfig({
20
59
  displayName: "Icon__HelperText",
21
- componentId: "sc-no6fx6-2"
60
+ componentId: "sc-no6fx6-3"
22
61
  })(["", ";"], _hideVisually.default);
23
- const Icon = _ref => {
62
+ const Icon = _ref7 => {
24
63
  let {
25
64
  href,
26
65
  target,
27
66
  icon,
28
67
  brand,
29
68
  title,
69
+ isHeader = false,
70
+ id,
30
71
  ...restProps
31
- } = _ref;
72
+ } = _ref7;
32
73
  return /*#__PURE__*/_react.default.createElement(StyledLink, Object.assign({
33
74
  href: href,
34
75
  target: "_".concat(target)
35
76
  }, restProps, {
36
77
  title: title,
37
78
  rel: "noopener noreferrer",
38
- "data-test": "header-esu-icon"
79
+ "data-testid": "".concat(isHeader ? 'header' : 'icon', "-").concat((0, _kebabCase2.default)(id)),
80
+ isHeader: isHeader
39
81
  }), /*#__PURE__*/_react.default.createElement(StyledImage, {
40
82
  src: icon,
41
83
  alt: brand
42
- }), title !== 'Sign up for emails' && /*#__PURE__*/_react.default.createElement(HelperText, null, "(opens in new window)"));
84
+ }), isHeader && /*#__PURE__*/_react.default.createElement(RevealText, null, title), id === 'esu' && /*#__PURE__*/_react.default.createElement(HelperText, null, "(opens in new window)"));
43
85
  };
44
86
  var _default = exports.default = Icon;
@@ -45,7 +45,8 @@ const SocialIcons = _ref3 => {
45
45
  icon: _Icons.default[brand],
46
46
  href: links[brand].url,
47
47
  title: links[brand].title,
48
- brand: brand
48
+ brand: brand,
49
+ id: links[brand].id
49
50
  }, restProps)))));
50
51
  };
51
52
  var _default = exports.default = SocialIcons;
@@ -12,19 +12,23 @@ exports.default = void 0;
12
12
  var _default = campaign => ({
13
13
  facebook: {
14
14
  url: "https://www.facebook.com/".concat(campaign),
15
- title: 'Check out our Facebook page'
15
+ title: 'Check out our Facebook page',
16
+ id: 'facebook'
16
17
  },
17
18
  twitter: {
18
19
  url: "https://twitter.com/".concat(campaign),
19
- title: 'Check out our Twitter account'
20
+ title: 'Check out our Twitter account',
21
+ id: 'twitter'
20
22
  },
21
23
  youtube: {
22
24
  url: 'https://www.youtube.com/channel/UCdF5u0ggeSETozc8fsprjcw',
23
- title: 'Check out our YouTube channel'
25
+ title: 'Check out our YouTube channel',
26
+ id: 'youtube'
24
27
  },
25
28
  instagram: {
26
29
  url: "https://www.instagram.com/".concat(campaign),
27
- title: 'Check out our Instagram account'
30
+ title: 'Check out our Instagram account',
31
+ id: 'instagram'
28
32
  }
29
33
  });
30
34
  exports.default = _default;
@@ -6,6 +6,7 @@ exports[`renders correctly with Comic Relief links 1`] = `
6
6
  text-decoration: none;
7
7
  cursor: pointer;
8
8
  display: block;
9
+ position: relative;
9
10
  -webkit-transition: opacity 0.2s;
10
11
  transition: opacity 0.2s;
11
12
  }
@@ -19,21 +20,6 @@ exports[`renders correctly with Comic Relief links 1`] = `
19
20
  width: 100%;
20
21
  }
21
22
 
22
- .c4 {
23
- border: 0;
24
- -webkit-clip: rect(0 0 0 0);
25
- clip: rect(0 0 0 0);
26
- -webkit-clip-path: inset(50%);
27
- clip-path: inset(50%);
28
- height: 1px;
29
- margin: -1px;
30
- overflow: hidden;
31
- padding: 0;
32
- position: absolute;
33
- white-space: nowrap;
34
- width: 1px;
35
- }
36
-
37
23
  .c0 {
38
24
  display: -webkit-box;
39
25
  display: -webkit-flex;
@@ -80,7 +66,7 @@ exports[`renders correctly with Comic Relief links 1`] = `
80
66
  >
81
67
  <a
82
68
  className="c2"
83
- data-test="header-esu-icon"
69
+ data-testid="icon-facebook"
84
70
  href="https://www.facebook.com/comicrelief"
85
71
  rel="noopener noreferrer"
86
72
  target="_blank"
@@ -91,11 +77,6 @@ exports[`renders correctly with Comic Relief links 1`] = `
91
77
  className="c3"
92
78
  src="mock.asset"
93
79
  />
94
- <span
95
- className="c4"
96
- >
97
- (opens in new window)
98
- </span>
99
80
  </a>
100
81
  </li>
101
82
  <li
@@ -103,7 +84,7 @@ exports[`renders correctly with Comic Relief links 1`] = `
103
84
  >
104
85
  <a
105
86
  className="c2"
106
- data-test="header-esu-icon"
87
+ data-testid="icon-instagram"
107
88
  href="https://www.instagram.com/comicrelief"
108
89
  rel="noopener noreferrer"
109
90
  target="_blank"
@@ -114,11 +95,6 @@ exports[`renders correctly with Comic Relief links 1`] = `
114
95
  className="c3"
115
96
  src="mock.asset"
116
97
  />
117
- <span
118
- className="c4"
119
- >
120
- (opens in new window)
121
- </span>
122
98
  </a>
123
99
  </li>
124
100
  <li
@@ -126,7 +102,7 @@ exports[`renders correctly with Comic Relief links 1`] = `
126
102
  >
127
103
  <a
128
104
  className="c2"
129
- data-test="header-esu-icon"
105
+ data-testid="icon-twitter"
130
106
  href="https://twitter.com/comicrelief"
131
107
  rel="noopener noreferrer"
132
108
  target="_blank"
@@ -137,11 +113,6 @@ exports[`renders correctly with Comic Relief links 1`] = `
137
113
  className="c3"
138
114
  src="mock.asset"
139
115
  />
140
- <span
141
- className="c4"
142
- >
143
- (opens in new window)
144
- </span>
145
116
  </a>
146
117
  </li>
147
118
  <li
@@ -149,7 +120,7 @@ exports[`renders correctly with Comic Relief links 1`] = `
149
120
  >
150
121
  <a
151
122
  className="c2"
152
- data-test="header-esu-icon"
123
+ data-testid="icon-youtube"
153
124
  href="https://www.youtube.com/channel/UCdF5u0ggeSETozc8fsprjcw"
154
125
  rel="noopener noreferrer"
155
126
  target="_blank"
@@ -160,11 +131,6 @@ exports[`renders correctly with Comic Relief links 1`] = `
160
131
  className="c3"
161
132
  src="mock.asset"
162
133
  />
163
- <span
164
- className="c4"
165
- >
166
- (opens in new window)
167
- </span>
168
134
  </a>
169
135
  </li>
170
136
  </ul>
@@ -176,6 +142,7 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
176
142
  text-decoration: none;
177
143
  cursor: pointer;
178
144
  display: block;
145
+ position: relative;
179
146
  -webkit-transition: opacity 0.2s;
180
147
  transition: opacity 0.2s;
181
148
  }
@@ -189,21 +156,6 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
189
156
  width: 100%;
190
157
  }
191
158
 
192
- .c4 {
193
- border: 0;
194
- -webkit-clip: rect(0 0 0 0);
195
- clip: rect(0 0 0 0);
196
- -webkit-clip-path: inset(50%);
197
- clip-path: inset(50%);
198
- height: 1px;
199
- margin: -1px;
200
- overflow: hidden;
201
- padding: 0;
202
- position: absolute;
203
- white-space: nowrap;
204
- width: 1px;
205
- }
206
-
207
159
  .c0 {
208
160
  display: -webkit-box;
209
161
  display: -webkit-flex;
@@ -250,7 +202,7 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
250
202
  >
251
203
  <a
252
204
  className="c2"
253
- data-test="header-esu-icon"
205
+ data-testid="icon-facebook"
254
206
  href="https://www.facebook.com/rednoseday"
255
207
  rel="noopener noreferrer"
256
208
  target="_self"
@@ -261,11 +213,6 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
261
213
  className="c3"
262
214
  src="mock.asset"
263
215
  />
264
- <span
265
- className="c4"
266
- >
267
- (opens in new window)
268
- </span>
269
216
  </a>
270
217
  </li>
271
218
  <li
@@ -273,7 +220,7 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
273
220
  >
274
221
  <a
275
222
  className="c2"
276
- data-test="header-esu-icon"
223
+ data-testid="icon-instagram"
277
224
  href="https://www.instagram.com/rednoseday"
278
225
  rel="noopener noreferrer"
279
226
  target="_self"
@@ -284,11 +231,6 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
284
231
  className="c3"
285
232
  src="mock.asset"
286
233
  />
287
- <span
288
- className="c4"
289
- >
290
- (opens in new window)
291
- </span>
292
234
  </a>
293
235
  </li>
294
236
  <li
@@ -296,7 +238,7 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
296
238
  >
297
239
  <a
298
240
  className="c2"
299
- data-test="header-esu-icon"
241
+ data-testid="icon-twitter"
300
242
  href="https://twitter.com/rednoseday"
301
243
  rel="noopener noreferrer"
302
244
  target="_self"
@@ -307,11 +249,6 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
307
249
  className="c3"
308
250
  src="mock.asset"
309
251
  />
310
- <span
311
- className="c4"
312
- >
313
- (opens in new window)
314
- </span>
315
252
  </a>
316
253
  </li>
317
254
  <li
@@ -319,7 +256,7 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
319
256
  >
320
257
  <a
321
258
  className="c2"
322
- data-test="header-esu-icon"
259
+ data-testid="icon-youtube"
323
260
  href="https://www.youtube.com/channel/UCdF5u0ggeSETozc8fsprjcw"
324
261
  rel="noopener noreferrer"
325
262
  target="_self"
@@ -330,11 +267,6 @@ exports[`renders correctly with Red Nose Day links and self target 1`] = `
330
267
  className="c3"
331
268
  src="mock.asset"
332
269
  />
333
- <span
334
- className="c4"
335
- >
336
- (opens in new window)
337
- </span>
338
270
  </a>
339
271
  </li>
340
272
  </ul>
@@ -346,6 +278,7 @@ exports[`renders correctly with Sport Relief links 1`] = `
346
278
  text-decoration: none;
347
279
  cursor: pointer;
348
280
  display: block;
281
+ position: relative;
349
282
  -webkit-transition: opacity 0.2s;
350
283
  transition: opacity 0.2s;
351
284
  }
@@ -359,21 +292,6 @@ exports[`renders correctly with Sport Relief links 1`] = `
359
292
  width: 100%;
360
293
  }
361
294
 
362
- .c4 {
363
- border: 0;
364
- -webkit-clip: rect(0 0 0 0);
365
- clip: rect(0 0 0 0);
366
- -webkit-clip-path: inset(50%);
367
- clip-path: inset(50%);
368
- height: 1px;
369
- margin: -1px;
370
- overflow: hidden;
371
- padding: 0;
372
- position: absolute;
373
- white-space: nowrap;
374
- width: 1px;
375
- }
376
-
377
295
  .c0 {
378
296
  display: -webkit-box;
379
297
  display: -webkit-flex;
@@ -420,7 +338,7 @@ exports[`renders correctly with Sport Relief links 1`] = `
420
338
  >
421
339
  <a
422
340
  className="c2"
423
- data-test="header-esu-icon"
341
+ data-testid="icon-facebook"
424
342
  href="https://www.facebook.com/sportrelief"
425
343
  rel="noopener noreferrer"
426
344
  target="_blank"
@@ -431,11 +349,6 @@ exports[`renders correctly with Sport Relief links 1`] = `
431
349
  className="c3"
432
350
  src="mock.asset"
433
351
  />
434
- <span
435
- className="c4"
436
- >
437
- (opens in new window)
438
- </span>
439
352
  </a>
440
353
  </li>
441
354
  <li
@@ -443,7 +356,7 @@ exports[`renders correctly with Sport Relief links 1`] = `
443
356
  >
444
357
  <a
445
358
  className="c2"
446
- data-test="header-esu-icon"
359
+ data-testid="icon-instagram"
447
360
  href="https://www.instagram.com/sportrelief"
448
361
  rel="noopener noreferrer"
449
362
  target="_blank"
@@ -454,11 +367,6 @@ exports[`renders correctly with Sport Relief links 1`] = `
454
367
  className="c3"
455
368
  src="mock.asset"
456
369
  />
457
- <span
458
- className="c4"
459
- >
460
- (opens in new window)
461
- </span>
462
370
  </a>
463
371
  </li>
464
372
  <li
@@ -466,7 +374,7 @@ exports[`renders correctly with Sport Relief links 1`] = `
466
374
  >
467
375
  <a
468
376
  className="c2"
469
- data-test="header-esu-icon"
377
+ data-testid="icon-twitter"
470
378
  href="https://twitter.com/sportrelief"
471
379
  rel="noopener noreferrer"
472
380
  target="_blank"
@@ -477,11 +385,6 @@ exports[`renders correctly with Sport Relief links 1`] = `
477
385
  className="c3"
478
386
  src="mock.asset"
479
387
  />
480
- <span
481
- className="c4"
482
- >
483
- (opens in new window)
484
- </span>
485
388
  </a>
486
389
  </li>
487
390
  <li
@@ -489,7 +392,7 @@ exports[`renders correctly with Sport Relief links 1`] = `
489
392
  >
490
393
  <a
491
394
  className="c2"
492
- data-test="header-esu-icon"
395
+ data-testid="icon-youtube"
493
396
  href="https://www.youtube.com/channel/UCdF5u0ggeSETozc8fsprjcw"
494
397
  rel="noopener noreferrer"
495
398
  target="_blank"
@@ -500,11 +403,6 @@ exports[`renders correctly with Sport Relief links 1`] = `
500
403
  className="c3"
501
404
  src="mock.asset"
502
405
  />
503
- <span
504
- className="c4"
505
- >
506
- (opens in new window)
507
- </span>
508
406
  </a>
509
407
  </li>
510
408
  </ul>
@@ -1,34 +1,49 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.default = void 0;
8
9
  var _react = _interopRequireDefault(require("react"));
9
- var _styledComponents = _interopRequireDefault(require("styled-components"));
10
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
10
11
  var _Logo = _interopRequireDefault(require("../../Atoms/Logo/Logo"));
11
12
  const TitleLabel = _styledComponents.default.span.withConfig({
12
13
  displayName: "Logos__TitleLabel",
13
14
  componentId: "sc-z3hhhd-0"
14
15
  })(["line-height:0;font-size:0;color:transparent;"]);
15
- const Logos = _ref => {
16
+ const LogoLink = _styledComponents.default.a.withConfig({
17
+ displayName: "Logos__LogoLink",
18
+ componentId: "sc-z3hhhd-1"
19
+ })(["", ""], _ref => {
16
20
  let {
17
- campaign = 'Comic Relief'
21
+ animateRotate
18
22
  } = _ref;
23
+ return animateRotate && (0, _styledComponents.css)(["img{transition:transform 0.35s cubic-bezier(0.41,1.64,0.41,0.8);}&:hover,&:focus{img{transform:rotate(-14deg);}}"]);
24
+ });
25
+ const Logos = _ref2 => {
26
+ let {
27
+ campaign = 'Comic Relief',
28
+ animateRotate = false,
29
+ sizeSm,
30
+ sizeMd
31
+ } = _ref2;
19
32
  if (campaign === 'Sport Relief Gameon') {
20
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("a", {
33
+ return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(LogoLink, {
21
34
  href: "/",
22
- title: "Go to Comic Relief homepage"
35
+ title: "Go to Comic Relief homepage",
36
+ animateRotate: animateRotate
23
37
  }, /*#__PURE__*/_react.default.createElement(_Logo.default, {
24
38
  rotate: true,
25
39
  sizeSm: "50px",
26
40
  sizeMd: "60px",
27
41
  campaign: "Comic Relief",
28
42
  title: "Go to Comic Relief homepage"
29
- }), /*#__PURE__*/_react.default.createElement(TitleLabel, null, "Go to Comic Relief homepage")), /*#__PURE__*/_react.default.createElement("a", {
43
+ }), /*#__PURE__*/_react.default.createElement(TitleLabel, null, "Go to Comic Relief homepage")), /*#__PURE__*/_react.default.createElement(LogoLink, {
30
44
  href: "/sportrelief/",
31
- title: "Go to Sport Relief homepage"
45
+ title: "Go to Sport Relief homepage",
46
+ animateRotate: animateRotate
32
47
  }, /*#__PURE__*/_react.default.createElement(_Logo.default, {
33
48
  sizeSm: "100px",
34
49
  sizeMd: "120px",
@@ -37,9 +52,10 @@ const Logos = _ref => {
37
52
  }), /*#__PURE__*/_react.default.createElement(TitleLabel, null, "Go to Sport Relief homepage")));
38
53
  }
39
54
  if (campaign === 'Sport Relief') {
40
- return /*#__PURE__*/_react.default.createElement("a", {
55
+ return /*#__PURE__*/_react.default.createElement(LogoLink, {
41
56
  href: "/sportrelief",
42
- title: "Go to Sport Relief homepage"
57
+ title: "Go to Sport Relief homepage",
58
+ animateRotate: animateRotate
43
59
  }, /*#__PURE__*/_react.default.createElement(_Logo.default, {
44
60
  rotate: false,
45
61
  campaign: "Sport Relief",
@@ -47,22 +63,28 @@ const Logos = _ref => {
47
63
  }), /*#__PURE__*/_react.default.createElement(TitleLabel, null, "Go to Sport Relief homepage"));
48
64
  }
49
65
  if (campaign === 'Pride') {
50
- return /*#__PURE__*/_react.default.createElement("a", {
66
+ return /*#__PURE__*/_react.default.createElement(LogoLink, {
51
67
  href: "/",
52
- title: "Go to Comic Relief homepage"
68
+ title: "Go to Comic Relief homepage",
69
+ animateRotate: animateRotate
53
70
  }, /*#__PURE__*/_react.default.createElement(_Logo.default, {
54
71
  rotate: false,
55
72
  campaign: "Pride",
56
- title: "Go to Comic Relief homepage"
73
+ title: "Go to Comic Relief homepage",
74
+ sizeSm: sizeSm,
75
+ sizeMd: sizeMd
57
76
  }), /*#__PURE__*/_react.default.createElement(TitleLabel, null, "Go to Comic Relief homepage"));
58
77
  }
59
- return /*#__PURE__*/_react.default.createElement("a", {
78
+ return /*#__PURE__*/_react.default.createElement(LogoLink, {
60
79
  href: "/",
61
- title: "Go to Comic Relief homepage"
80
+ title: "Go to Comic Relief homepage",
81
+ animateRotate: animateRotate
62
82
  }, /*#__PURE__*/_react.default.createElement(_Logo.default, {
63
83
  rotate: false,
64
84
  campaign: "Comic Relief",
65
- title: "Go to Comic Relief homepage"
85
+ title: "Go to Comic Relief homepage",
86
+ sizeSm: sizeSm,
87
+ sizeMd: sizeMd
66
88
  }), /*#__PURE__*/_react.default.createElement(TitleLabel, null, "Go to Comic Relief homepage"));
67
89
  };
68
90
  var _default = exports.default = Logos;
@@ -50,7 +50,8 @@ const ShareButton = _ref => {
50
50
  brand: campaign,
51
51
  target: "_blank",
52
52
  role: "button",
53
- href: "#"
53
+ href: "#",
54
+ id: "share-button--".concat(shareType)
54
55
  }, restProps))))));
55
56
  };
56
57
  var _default = exports.default = ShareButton;
@@ -5,7 +5,7 @@ var _react = _interopRequireDefault(require("react"));
5
5
  require("jest-styled-components");
6
6
  var _shallowWithTheme = _interopRequireDefault(require("../../../../tests/hoc/shallowWithTheme"));
7
7
  var _ShareButton = _interopRequireDefault(require("./ShareButton"));
8
- it('renders correctly', () => {
8
+ it("renders correctly", () => {
9
9
  const tree = (0, _shallowWithTheme.default)( /*#__PURE__*/_react.default.createElement(_ShareButton.default, null)).toJSON();
10
- expect(tree).toMatchInlineSnapshot("\n .c4 {\n -webkit-text-decoration: none;\n text-decoration: none;\n cursor: pointer;\n display: block;\n -webkit-transition: opacity 0.2s;\n transition: opacity 0.2s;\n }\n\n .c4:hover,\n .c4:focus {\n opacity: 0.6;\n }\n\n .c5 {\n width: 100%;\n }\n\n .c6 {\n border: 0;\n -webkit-clip: rect(0 0 0 0);\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(50%);\n clip-path: inset(50%);\n height: 1px;\n margin: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n }\n\n .c0 {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n\n .c1 {\n width: auto;\n margin: 0 1rem 0 0;\n }\n\n .c1:first-child {\n margin-bottom: 0;\n }\n\n .c2 {\n width: auto;\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .c3 {\n width: 40px;\n height: 40px;\n display: inline-block;\n margin: 0.5rem;\n }\n\n <div\n className=\"c0\"\n >\n <p\n className=\"c1\"\n >\n Share with:\n </p>\n <ul\n className=\"c2\"\n >\n <li\n className=\"c3\"\n >\n <a\n className=\"c4\"\n data-test=\"header-esu-icon\"\n href=\"#\"\n onClick={[Function]}\n rel=\"noopener noreferrer\"\n role=\"button\"\n target=\"__blank\"\n title=\"Share on Facebook\"\n >\n <img\n alt=\"comicrelief\"\n className=\"c5\"\n src=\"mock.asset\"\n />\n <span\n className=\"c6\"\n >\n (opens in new window)\n </span>\n </a>\n </li>\n <li\n className=\"c3\"\n >\n <a\n className=\"c4\"\n data-test=\"header-esu-icon\"\n href=\"#\"\n onClick={[Function]}\n rel=\"noopener noreferrer\"\n role=\"button\"\n target=\"__blank\"\n title=\"Share on Twitter\"\n >\n <img\n alt=\"comicrelief\"\n className=\"c5\"\n src=\"mock.asset\"\n />\n <span\n className=\"c6\"\n >\n (opens in new window)\n </span>\n </a>\n </li>\n </ul>\n </div>\n ");
10
+ expect(tree).toMatchInlineSnapshot("\n .c4 {\n -webkit-text-decoration: none;\n text-decoration: none;\n cursor: pointer;\n display: block;\n position: relative;\n -webkit-transition: opacity 0.2s;\n transition: opacity 0.2s;\n }\n\n .c4:hover,\n .c4:focus {\n opacity: 0.6;\n }\n\n .c5 {\n width: 100%;\n }\n\n .c0 {\n display: -webkit-box;\n display: -webkit-flex;\n display: -ms-flexbox;\n display: flex;\n -webkit-align-items: center;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-box-pack: center;\n -webkit-justify-content: center;\n -ms-flex-pack: center;\n justify-content: center;\n }\n\n .c1 {\n width: auto;\n margin: 0 1rem 0 0;\n }\n\n .c1:first-child {\n margin-bottom: 0;\n }\n\n .c2 {\n width: auto;\n margin: 0;\n padding: 0;\n list-style: none;\n }\n\n .c3 {\n width: 40px;\n height: 40px;\n display: inline-block;\n margin: 0.5rem;\n }\n\n <div\n className=\"c0\"\n >\n <p\n className=\"c1\"\n >\n Share with:\n </p>\n <ul\n className=\"c2\"\n >\n <li\n className=\"c3\"\n >\n <a\n className=\"c4\"\n data-testid=\"icon-share-button-facebook\"\n href=\"#\"\n onClick={[Function]}\n rel=\"noopener noreferrer\"\n role=\"button\"\n target=\"__blank\"\n title=\"Share on Facebook\"\n >\n <img\n alt=\"comicrelief\"\n className=\"c5\"\n src=\"mock.asset\"\n />\n </a>\n </li>\n <li\n className=\"c3\"\n >\n <a\n className=\"c4\"\n data-testid=\"icon-share-button-twitter\"\n href=\"#\"\n onClick={[Function]}\n rel=\"noopener noreferrer\"\n role=\"button\"\n target=\"__blank\"\n title=\"Share on Twitter\"\n >\n <img\n alt=\"comicrelief\"\n className=\"c5\"\n src=\"mock.asset\"\n />\n </a>\n </li>\n </ul>\n </div>\n ");
11
11
  });
@@ -9,7 +9,7 @@ exports.default = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _Text = _interopRequireDefault(require("../../../Atoms/Text/Text"));
11
11
  var _allBreakpoints = require("../../../../theme/shared/allBreakpoints");
12
- var _navHelper = _interopRequireDefault(require("../../../../utils/navHelper"));
12
+ var _navHelper = require("../../../../utils/navHelper");
13
13
  var _internalLinkHelper = require("../../../../utils/internalLinkHelper");
14
14
  var _Nav = require("./Nav.style");
15
15
  const FooterNav = _ref => {
@@ -63,7 +63,7 @@ const FooterNav = _ref => {
63
63
  role: "menubar"
64
64
  }, menuGroups.map((group, index) => /*#__PURE__*/_react.default.createElement(_Nav.NavItem, {
65
65
  role: "none",
66
- key: group.id,
66
+ key: "".concat(group.id, "-").concat(group.title),
67
67
  index: index,
68
68
  isSubMenuOpen: !!isSubMenuOpen[group.id]
69
69
  }, !isSmallBreakpoint ? /*#__PURE__*/_react.default.createElement(_Text.default, {
@@ -85,7 +85,7 @@ const FooterNav = _ref => {
85
85
  column: group.links.length % 2 === 0 && group.links.length > 2
86
86
  }, group.links.map(child => {
87
87
  /* Determine which field represents our url path */
88
- let thisUrl = (0, _navHelper.default)(child);
88
+ let thisUrl = (0, _navHelper.NavHelper)(child);
89
89
  thisUrl = (0, _internalLinkHelper.InternalLinkHelper)(thisUrl);
90
90
  return /*#__PURE__*/_react.default.createElement(_Nav.SubNavItem, {
91
91
  key: thisUrl,