@comicrelief/component-library 8.45.0 → 8.47.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 (62) hide show
  1. package/dist/components/Atoms/Icons/CtaArrow.js +74 -0
  2. package/dist/components/Atoms/Icons/index.js +8 -1
  3. package/dist/components/Atoms/Link/Link.style.js +27 -21
  4. package/dist/components/Atoms/Link/Link.test.js +24 -1
  5. package/dist/components/Molecules/CardDs/__snapshots__/CardDs.test.js.snap +48 -2
  6. package/dist/components/Molecules/HeroBanner/HeroBanner.js +75 -31
  7. package/dist/components/Molecules/HeroBanner/HeroBanner.md +176 -6
  8. package/dist/components/Molecules/HeroBanner/HeroBanner.style.js +232 -0
  9. package/dist/components/Molecules/HeroBanner/HeroBanner.test.js +67 -0
  10. package/dist/components/Molecules/HeroBanner/__snapshots__/HeroBanner.test.js.snap +882 -0
  11. package/dist/components/Molecules/HeroBanner/_variants.js +12 -0
  12. package/dist/components/Molecules/HeroBanner/assets/Pause--black.svg +3 -0
  13. package/dist/components/Molecules/HeroBanner/assets/Pause--white.svg +3 -0
  14. package/dist/components/Molecules/HeroBanner/assets/Play--black.svg +3 -0
  15. package/dist/components/Molecules/HeroBanner/assets/Play--white.svg +3 -0
  16. package/dist/components/Molecules/HeroBanner/assets/alt_cta_underline.svg +3 -0
  17. package/dist/components/Molecules/HeroBanner/assets/arrow-right.svg +3 -0
  18. package/dist/components/Molecules/HeroBanner/assets/loader.svg +1 -0
  19. package/dist/components/Molecules/HeroBanner/assets/video--play-icon.svg +1 -0
  20. package/dist/components/Molecules/HeroBanner/assets/video--play-icon__hover.svg +1 -0
  21. package/dist/components/Molecules/HeroBanner/local-preview-layout-fixes.css +6 -0
  22. package/dist/components/Molecules/Promo/__snapshots__/Promo.test.js.snap +48 -2
  23. package/dist/components/Molecules/SingleMessage/__snapshots__/SingleMessage.test.js.snap +64 -2
  24. package/dist/components/Molecules/SingleMessageDS/__snapshots__/SingleMessageDs.test.js.snap +24 -1
  25. package/dist/components/Organisms/CookieBanner/CookieBanner.test.js +24 -1
  26. package/dist/index.js +1 -1
  27. package/dist/styleguide/assets/PromoLW.jpg +0 -0
  28. package/dist/styleguide/data/data.js +1 -0
  29. package/dist/theme/shared/animations.js +23 -2
  30. package/dist/theme/shared/global.css +1 -1
  31. package/package.json +1 -1
  32. package/src/components/Atoms/Icons/CtaArrow.js +55 -0
  33. package/src/components/Atoms/Icons/index.js +1 -0
  34. package/src/components/Atoms/Link/Link.js +1 -1
  35. package/src/components/Atoms/Link/Link.style.js +8 -1
  36. package/src/components/Atoms/Link/Link.test.js +24 -1
  37. package/src/components/Molecules/CardDs/__snapshots__/CardDs.test.js.snap +48 -2
  38. package/src/components/Molecules/HeroBanner/HeroBanner.js +145 -49
  39. package/src/components/Molecules/HeroBanner/HeroBanner.md +176 -6
  40. package/src/components/Molecules/HeroBanner/HeroBanner.style.js +239 -0
  41. package/src/components/Molecules/HeroBanner/HeroBanner.test.js +89 -0
  42. package/src/components/Molecules/HeroBanner/__snapshots__/HeroBanner.test.js.snap +882 -0
  43. package/src/components/Molecules/HeroBanner/_variants.js +7 -0
  44. package/src/components/Molecules/HeroBanner/assets/Pause--black.svg +3 -0
  45. package/src/components/Molecules/HeroBanner/assets/Pause--white.svg +3 -0
  46. package/src/components/Molecules/HeroBanner/assets/Play--black.svg +3 -0
  47. package/src/components/Molecules/HeroBanner/assets/Play--white.svg +3 -0
  48. package/src/components/Molecules/HeroBanner/assets/alt_cta_underline.svg +3 -0
  49. package/src/components/Molecules/HeroBanner/assets/arrow-right.svg +3 -0
  50. package/src/components/Molecules/HeroBanner/assets/loader.svg +1 -0
  51. package/src/components/Molecules/HeroBanner/assets/video--play-icon.svg +1 -0
  52. package/src/components/Molecules/HeroBanner/assets/video--play-icon__hover.svg +1 -0
  53. package/src/components/Molecules/HeroBanner/local-preview-layout-fixes.css +6 -0
  54. package/src/components/Molecules/Promo/__snapshots__/Promo.test.js.snap +48 -2
  55. package/src/components/Molecules/SingleMessage/__snapshots__/SingleMessage.test.js.snap +64 -2
  56. package/src/components/Molecules/SingleMessageDS/__snapshots__/SingleMessageDs.test.js.snap +24 -1
  57. package/src/components/Organisms/CookieBanner/CookieBanner.test.js +24 -1
  58. package/src/index.js +1 -1
  59. package/src/styleguide/assets/PromoLW.jpg +0 -0
  60. package/src/styleguide/data/data.js +1 -0
  61. package/src/theme/shared/animations.js +29 -1
  62. package/src/theme/shared/global.css +1 -1
@@ -0,0 +1,232 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.OuterWrapper = exports.MediaWrapper = exports.HeroBannerLink = exports.CtaTextUnderline = exports.CtaText = exports.CtaIconWrapper = exports.CopyOuterWrapper = exports.CopyInnerWrapper = exports.Copy = exports.Container = exports.CTAWrapper = void 0;
9
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
10
+ var _zIndex = _interopRequireDefault(require("../../../theme/shared/zIndex"));
11
+ var _variants = _interopRequireDefault(require("./_variants"));
12
+ var _animations = require("../../../theme/shared/animations");
13
+ var _Text = _interopRequireDefault(require("../../Atoms/Text/Text"));
14
+ // Lil helper function to streamline things somewhat:
15
+ const handleVariant = variant => {
16
+ switch (variant) {
17
+ case _variants.default.FULL_HEIGHT:
18
+ return `
19
+ height: 75vh;
20
+ min-height: 600px;
21
+ max-height: 750px;`;
22
+ case _variants.default.HALF_HEIGHT:
23
+ return `
24
+ height: auto;
25
+ min-height: 450px;`;
26
+ // No tweaks needed for the remaining 'text_banner' variant:
27
+ default:
28
+ return null;
29
+ }
30
+ };
31
+ const Container = exports.Container = _styledComponents.default.div.withConfig({
32
+ displayName: "HeroBannerstyle__Container",
33
+ componentId: "sc-2ch4eo-0"
34
+ })(["width:100%;height:auto;display:flex;position:relative;flex-direction:column;background:", ";justify-content:center;@media ", "{", " align-items:center;}"], _ref => {
35
+ let {
36
+ theme,
37
+ pageBackgroundColour
38
+ } = _ref;
39
+ return theme.color(pageBackgroundColour);
40
+ }, _ref2 => {
41
+ let {
42
+ theme
43
+ } = _ref2;
44
+ return theme.breakpoints2026('L');
45
+ }, _ref3 => {
46
+ let {
47
+ paddingTop,
48
+ paddingBottom
49
+ } = _ref3;
50
+ return (0, _styledComponents.css)(["padding:", " 2rem ", ";"], paddingTop, paddingBottom);
51
+ });
52
+ const OuterWrapper = exports.OuterWrapper = _styledComponents.default.div.withConfig({
53
+ displayName: "HeroBannerstyle__OuterWrapper",
54
+ componentId: "sc-2ch4eo-1"
55
+ })(["width:100%;max-width:none;position:relative;display:flex;flex-direction:column;align-items:center;@media ", "{width:100%;max-width:1500px;border-radius:1rem;overflow:hidden;", ""], _ref4 => {
56
+ let {
57
+ theme
58
+ } = _ref4;
59
+ return theme.breakpoints2026('L');
60
+ }, _ref5 => {
61
+ let {
62
+ variant
63
+ } = _ref5;
64
+ return variant && (0, _styledComponents.css)(["", ""], handleVariant(variant));
65
+ });
66
+ const MediaWrapper = exports.MediaWrapper = _styledComponents.default.div.withConfig({
67
+ displayName: "HeroBannerstyle__MediaWrapper",
68
+ componentId: "sc-2ch4eo-2"
69
+ })(["width:100%;height:100%;@media ", "{position:absolute;top:0;left:0;img{object-position:top center;height:100%;transform:scale(1.02);transition:transform ", "s cubic-bezier(0.68,", ",0.265,", ");", ";}&:has(+ div a:hover){> div > img{transform:scale(1.04);}}}"], _ref6 => {
70
+ let {
71
+ theme
72
+ } = _ref6;
73
+ return theme.breakpoints2026('L');
74
+ }, 0.4, -1.15, 2.35, _ref7 => {
75
+ let {
76
+ variant
77
+ } = _ref7;
78
+ return variant === _variants.default.HALF_HEIGHT && 'min-height: 450px;';
79
+ });
80
+ const CopyOuterWrapper = exports.CopyOuterWrapper = _styledComponents.default.div.withConfig({
81
+ displayName: "HeroBannerstyle__CopyOuterWrapper",
82
+ componentId: "sc-2ch4eo-3"
83
+ })(["position:relative;height:100%;left:0;right:0;display:flex;width:calc(100% - (2 * 1rem));", " @media ", "{width:calc(100% - 4rem);}@media ", "{position:relative;top:auto;left:auto;height:100%;width:100%;", " display:flex;align-items:center;margin:0 auto;justify-content:", ";", "}"], _ref8 => {
84
+ let {
85
+ variant
86
+ } = _ref8;
87
+ return variant !== _variants.default.TEXT_BANNER ? 'margin: -2rem 1rem 2rem;' : 'margin: 2rem 1rem;';
88
+ }, _ref9 => {
89
+ let {
90
+ theme
91
+ } = _ref9;
92
+ return theme.breakpoints2026('M');
93
+ }, _ref10 => {
94
+ let {
95
+ theme
96
+ } = _ref10;
97
+ return theme.breakpoints2026('L');
98
+ }, _ref11 => {
99
+ let {
100
+ variant
101
+ } = _ref11;
102
+ return variant !== _variants.default.TEXT_BANNER && 'max-width: 1200px;';
103
+ }, _ref12 => {
104
+ let {
105
+ variant,
106
+ copyLeft
107
+ } = _ref12;
108
+ if (variant === _variants.default.TEXT_BANNER) return 'center';
109
+ return copyLeft ? 'flex-start' : 'flex-end';
110
+ }, _ref13 => {
111
+ let {
112
+ variant
113
+ } = _ref13;
114
+ return variant && (0, _styledComponents.css)(["", ""], handleVariant(variant));
115
+ });
116
+ const Copy = exports.Copy = _styledComponents.default.div.withConfig({
117
+ displayName: "HeroBannerstyle__Copy",
118
+ componentId: "sc-2ch4eo-4"
119
+ })(["width:100%;", ";border-radius:1rem;padding:", ";color:", ";background-color:", ";", ";", ";@media ", "{width:", ";}"], (0, _zIndex.default)('low'), _ref14 => {
120
+ let {
121
+ variant
122
+ } = _ref14;
123
+ return variant === _variants.default.TEXT_BANNER ? '3rem 1.5rem' : '1.5rem';
124
+ }, _ref15 => {
125
+ let {
126
+ theme,
127
+ copyColour
128
+ } = _ref15;
129
+ return theme.color(copyColour);
130
+ }, _ref16 => {
131
+ let {
132
+ theme,
133
+ variant,
134
+ textBannerCopyBackgroundColour
135
+ } = _ref16;
136
+ return variant === _variants.default.TEXT_BANNER ? theme.color(textBannerCopyBackgroundColour) : theme.color('white');
137
+ }, _ref17 => {
138
+ let {
139
+ variant,
140
+ theme
141
+ } = _ref17;
142
+ return variant !== _variants.default.TEXT_BANNER && `
143
+ @media ${theme.breakpoints2026('L')} {
144
+ padding: 2rem 2rem 1.75rem;
145
+ }
146
+ `;
147
+ }, _ref18 => {
148
+ let {
149
+ variant,
150
+ theme
151
+ } = _ref18;
152
+ return variant === _variants.default.TEXT_BANNER && `
153
+ text-align: center;
154
+ @media ${theme.breakpoints2026('M')} {
155
+ padding: 4rem 11%;
156
+ }
157
+ `;
158
+ }, _ref19 => {
159
+ let {
160
+ theme
161
+ } = _ref19;
162
+ return theme.breakpoints2026('L');
163
+ }, _ref20 => {
164
+ let {
165
+ variant
166
+ } = _ref20;
167
+ return variant !== _variants.default.TEXT_BANNER ? '92%' : '100%';
168
+ });
169
+ const CopyInnerWrapper = exports.CopyInnerWrapper = _styledComponents.default.div.withConfig({
170
+ displayName: "HeroBannerstyle__CopyInnerWrapper",
171
+ componentId: "sc-2ch4eo-5"
172
+ })(["width:100%;height:100%;display:flex;align-items:center;@media ", "{height:auto;", ";", ";justify-content:", ";}"], _ref21 => {
173
+ let {
174
+ theme
175
+ } = _ref21;
176
+ return theme.breakpoints2026('L');
177
+ }, _ref22 => {
178
+ let {
179
+ variant
180
+ } = _ref22;
181
+ return variant === _variants.default.TEXT_BANNER ? (0, _styledComponents.css)(["width:100%;"]) : (0, _styledComponents.css)(["width:50%;"]);
182
+ }, _ref23 => {
183
+ let {
184
+ variant
185
+ } = _ref23;
186
+ return variant === _variants.default.TEXT_BANNER ? (0, _styledComponents.css)(["margin:0;"]) : (0, _styledComponents.css)(["margin:2rem 0;"]);
187
+ }, _ref24 => {
188
+ let {
189
+ copyLeft
190
+ } = _ref24;
191
+ return copyLeft ? (0, _styledComponents.css)([" flex-end;"]) : (0, _styledComponents.css)([" flex-start;"]);
192
+ });
193
+ const CTAWrapper = exports.CTAWrapper = _styledComponents.default.div.withConfig({
194
+ displayName: "HeroBannerstyle__CTAWrapper",
195
+ componentId: "sc-2ch4eo-6"
196
+ })(["width:100%;height:auto;position:relative;padding:0.5rem 0;margin-top:1.25rem;", ""], _ref25 => {
197
+ let {
198
+ variant
199
+ } = _ref25;
200
+ return variant !== _variants.default.TEXT_BANNER && (0, _styledComponents.css)(["span{font-weight:bold;color:", ";}"], _ref26 => {
201
+ let {
202
+ theme
203
+ } = _ref26;
204
+ return theme.color('red');
205
+ });
206
+ });
207
+ const CtaIconWrapper = exports.CtaIconWrapper = _styledComponents.default.div.withConfig({
208
+ displayName: "HeroBannerstyle__CtaIconWrapper",
209
+ componentId: "sc-2ch4eo-7"
210
+ })(["height:2rem;position:absolute;top:50%;right:0;transform:translateY(-50%);content:\"\";"]);
211
+ const CtaText = exports.CtaText = (0, _styledComponents.default)(_Text.default).withConfig({
212
+ displayName: "HeroBannerstyle__CtaText",
213
+ componentId: "sc-2ch4eo-8"
214
+ })(["position:relative;"]);
215
+ const CtaTextUnderline = exports.CtaTextUnderline = _styledComponents.default.img.withConfig({
216
+ displayName: "HeroBannerstyle__CtaTextUnderline",
217
+ componentId: "sc-2ch4eo-9"
218
+ })(["height:4px;width:100%;position:absolute;left:0;bottom:-5px;transition:opacity 0.15s 0.1s;opacity:0;"]);
219
+ const HeroBannerLink = exports.HeroBannerLink = _styledComponents.default.a.withConfig({
220
+ displayName: "HeroBannerstyle__HeroBannerLink",
221
+ componentId: "sc-2ch4eo-10"
222
+ })(["text-decoration:none;@media ", "{", " width:", ";> div{width:100%;}&:hover{img.cta-text-underline{opacity:1;}}}"], _ref27 => {
223
+ let {
224
+ theme
225
+ } = _ref27;
226
+ return theme.breakpoints2026('L');
227
+ }, (0, _animations.bounceUpAnimation)(true, 10, 2), _ref28 => {
228
+ let {
229
+ variant
230
+ } = _ref28;
231
+ return variant !== _variants.default.TEXT_BANNER ? '92%' : '100%';
232
+ });
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _react = _interopRequireDefault(require("react"));
5
+ require("jest-styled-components");
6
+ var _shallowWithTheme = _interopRequireDefault(require("../../../../tests/hoc/shallowWithTheme"));
7
+ var _HeroBanner = _interopRequireDefault(require("./HeroBanner"));
8
+ var _Text = _interopRequireDefault(require("../../Atoms/Text/Text"));
9
+ var _Link = _interopRequireDefault(require("../../Atoms/Link/Link"));
10
+ var _variants = _interopRequireDefault(require("./_variants"));
11
+ const defaultData = require('../../../styleguide/data/data').defaultData;
12
+ it('renders "Full Height Media" Hero Banner correctly', () => {
13
+ const tree = (0, _shallowWithTheme.default)( /*#__PURE__*/_react.default.createElement(_HeroBanner.default, {
14
+ pageBackgroundColour: "teal_light",
15
+ imageSet: defaultData.heroBannerImage,
16
+ image: defaultData.heroBannerImage,
17
+ imageLow: defaultData.heroBannerImage,
18
+ imageAltText: "Image alt text",
19
+ variant: _variants.default.FULL_HEIGHT,
20
+ ctaText: "Test CTA Label",
21
+ ctaLink: "http://www.google.com",
22
+ copyLeft: true
23
+ }, /*#__PURE__*/_react.default.createElement(_Text.default, {
24
+ tag: "h1",
25
+ color: "black"
26
+ }, "Curabitur pretium tincidunt lacus"), /*#__PURE__*/_react.default.createElement(_Text.default, {
27
+ tag: "p",
28
+ color: "black"
29
+ }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."))).toJSON();
30
+ expect(tree).toMatchSnapshot();
31
+ });
32
+ it('renders "Half Height Media" Hero Banner correctly', () => {
33
+ const tree = (0, _shallowWithTheme.default)( /*#__PURE__*/_react.default.createElement(_HeroBanner.default, {
34
+ pageBackgroundColour: "teal_light",
35
+ imageSet: defaultData.heroBannerImage,
36
+ image: defaultData.heroBannerImage,
37
+ imageLow: defaultData.heroBannerImage,
38
+ imageAltText: "Image alt text",
39
+ variant: _variants.default.HALF_HEIGHT,
40
+ ctaText: "Test CTA Label",
41
+ ctaLink: "http://www.google.com",
42
+ copyLeft: false
43
+ }, /*#__PURE__*/_react.default.createElement(_Text.default, {
44
+ tag: "h1",
45
+ color: "black"
46
+ }, "Curabitur pretium tincidunt lacus"), /*#__PURE__*/_react.default.createElement(_Text.default, {
47
+ tag: "p",
48
+ color: "black"
49
+ }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."))).toJSON();
50
+ expect(tree).toMatchSnapshot();
51
+ });
52
+ it('renders "Text Banner" Hero Banner correctly', () => {
53
+ const tree = (0, _shallowWithTheme.default)( /*#__PURE__*/_react.default.createElement(_HeroBanner.default, {
54
+ pageBackgroundColour: "teal_light",
55
+ variant: _variants.default.TEXT_BANNER,
56
+ ctaText: "Test CTA Label",
57
+ ctaLink: "http://www.google.com",
58
+ copyLeft: false
59
+ }, /*#__PURE__*/_react.default.createElement(_Text.default, {
60
+ tag: "h1",
61
+ color: "black"
62
+ }, "Curabitur pretium tincidunt lacus"), /*#__PURE__*/_react.default.createElement(_Text.default, {
63
+ tag: "p",
64
+ color: "black"
65
+ }, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."))).toJSON();
66
+ expect(tree).toMatchSnapshot();
67
+ });