@times-components/ts-components 1.16.3 → 1.18.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 (52) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +7 -0
  3. package/dist/components/article-flag/ArticleFlag.d.ts +22 -0
  4. package/dist/components/article-flag/ArticleFlag.js +43 -0
  5. package/dist/components/article-flag/{LiveArticleFlag.stories.d.ts → ArticleFlag.stories.d.ts} +0 -0
  6. package/dist/components/article-flag/ArticleFlag.stories.js +29 -0
  7. package/dist/components/article-flag/LiveArticleFlag.d.ts +4 -0
  8. package/dist/components/article-flag/LiveArticleFlag.js +7 -5
  9. package/dist/components/article-flag/__tests__/ArticleFlag.test.d.ts +1 -0
  10. package/dist/components/article-flag/__tests__/ArticleFlag.test.js +75 -0
  11. package/dist/components/article-flag/__tests__/LiveArticleFlag.test.js +14 -4
  12. package/dist/components/article-flag/__tests__/getActiveFlags.test.d.ts +1 -0
  13. package/dist/components/article-flag/__tests__/getActiveFlags.test.js +36 -0
  14. package/dist/components/article-flag/getActiveFlags.d.ts +3 -0
  15. package/dist/components/article-flag/getActiveFlags.js +9 -0
  16. package/dist/components/article-flag/styles.d.ts +12 -3
  17. package/dist/components/article-flag/styles.js +38 -4
  18. package/dist/components/inline-dialog/InlineDialog.d.ts +7 -0
  19. package/dist/components/inline-dialog/InlineDialog.js +7 -0
  20. package/dist/components/inline-dialog/InlineDialog.stories.d.ts +1 -0
  21. package/dist/components/inline-dialog/InlineDialog.stories.js +8 -0
  22. package/dist/components/inline-dialog/__tests__/InlineDialog.test.d.ts +1 -0
  23. package/dist/components/inline-dialog/__tests__/InlineDialog.test.js +17 -0
  24. package/dist/components/inline-dialog/styles.d.ts +4 -0
  25. package/dist/components/inline-dialog/styles.js +50 -0
  26. package/dist/components/inline-message/styles.js +1 -1
  27. package/dist/index.d.ts +3 -1
  28. package/dist/index.js +4 -2
  29. package/jest.config.js +4 -4
  30. package/package.json +14 -14
  31. package/rnw.js +1 -1
  32. package/src/components/article-flag/ArticleFlag.stories.tsx +48 -0
  33. package/src/components/article-flag/ArticleFlag.tsx +118 -0
  34. package/src/components/article-flag/LiveArticleFlag.tsx +17 -5
  35. package/src/components/article-flag/__tests__/ArticleFlag.test.tsx +111 -0
  36. package/src/components/article-flag/__tests__/LiveArticleFlag.test.tsx +19 -3
  37. package/src/components/article-flag/__tests__/__snapshots__/ArticleFlag.test.tsx.snap +394 -0
  38. package/src/components/article-flag/__tests__/__snapshots__/LiveArticleFlag.test.tsx.snap +46 -4
  39. package/src/components/article-flag/__tests__/getActiveFlags.test.ts +38 -0
  40. package/src/components/article-flag/getActiveFlags.ts +14 -0
  41. package/src/components/article-flag/styles.ts +41 -3
  42. package/src/components/inline-dialog/InlineDialog.stories.tsx +17 -0
  43. package/src/components/inline-dialog/InlineDialog.tsx +17 -0
  44. package/src/components/inline-dialog/__tests__/InlineDialog.test.tsx +21 -0
  45. package/src/components/inline-dialog/__tests__/__snapshots__/InlineDialog.test.tsx.snap +26 -0
  46. package/src/components/inline-dialog/styles.ts +51 -0
  47. package/src/components/inline-message/__tests__/__snapshots__/InlineMessage.test.tsx.snap +1 -1
  48. package/src/components/inline-message/styles.ts +1 -1
  49. package/src/index.ts +15 -1
  50. package/src/types/externs.d.ts +1 -0
  51. package/dist/components/article-flag/LiveArticleFlag.stories.js +0 -7
  52. package/src/components/article-flag/LiveArticleFlag.stories.tsx +0 -7
@@ -0,0 +1,118 @@
1
+ import React from 'react';
2
+ import { colours } from '@times-components/styleguide';
3
+ import { LiveArticleFlag, BreakingArticleFlag } from './LiveArticleFlag';
4
+ import {
5
+ ArticleFlagContainer,
6
+ ArticleFlagBullet,
7
+ ArticleFlagTextContainer,
8
+ FlagPadding,
9
+ Flags,
10
+ FlagsContainer
11
+ } from './styles';
12
+ import getActiveFlags from './getActiveFlags';
13
+
14
+ const ArticleFlag: React.FC<{ color: string; title: string }> = ({
15
+ color = colours.functional.primary,
16
+ title
17
+ }) => (
18
+ <ArticleFlagContainer>
19
+ <ArticleFlagBullet color={color} />
20
+ <ArticleFlagTextContainer
21
+ aria-label={`${title} Flag`}
22
+ color={color}
23
+ data-testid={`flag-${title}`}
24
+ >
25
+ {title.toLowerCase()}
26
+ </ArticleFlagTextContainer>
27
+ </ArticleFlagContainer>
28
+ );
29
+
30
+ const NewArticleFlag: React.FC = () => (
31
+ <ArticleFlag color={colours.functional.articleFlagNew} title="new" />
32
+ );
33
+
34
+ const UpdatedArticleFlag: React.FC = () => (
35
+ <ArticleFlag color={colours.functional.articleFlagUpdated} title="updated" />
36
+ );
37
+
38
+ const ExclusiveArticleFlag: React.FC = () => (
39
+ <ArticleFlag
40
+ color={colours.functional.articleFlagExclusive}
41
+ title="exclusive"
42
+ />
43
+ );
44
+
45
+ const SponsoredArticleFlag: React.FC = () => (
46
+ <ArticleFlag color={colours.functional.tertiary} title="sponsored" />
47
+ );
48
+
49
+ const LongReadArticleFlag: React.FC = () => (
50
+ <ArticleFlag color={colours.functional.secondary} title="long read" />
51
+ );
52
+
53
+ const flagsMapping = () =>
54
+ new Map([
55
+ ['NEW', <NewArticleFlag />],
56
+ ['LIVE', <LiveArticleFlag />],
57
+ ['BREAKING', <BreakingArticleFlag />],
58
+ ['UPDATED', <UpdatedArticleFlag />],
59
+ ['EXCLUSIVE', <ExclusiveArticleFlag />],
60
+ ['SPONSORED', <SponsoredArticleFlag />],
61
+ ['LONGREAD', <LongReadArticleFlag />]
62
+ ]);
63
+
64
+ export type FlagType = Array<{
65
+ expiryTime: string | null;
66
+ type: string;
67
+ }>;
68
+
69
+ const FlagsView: React.FC<{ allFlags: FlagType }> = ({ allFlags }) => {
70
+ return (
71
+ <Flags>
72
+ {allFlags.map(flag => (
73
+ <FlagPadding key={flag.type} allFlags={allFlags}>
74
+ {flagsMapping().get(flag.type)}
75
+ </FlagPadding>
76
+ ))}
77
+ </Flags>
78
+ );
79
+ };
80
+
81
+ const ArticleFlags: React.FC<{
82
+ flags: FlagType;
83
+ longRead: boolean;
84
+ withContainer: boolean;
85
+ }> = ({ flags = [], longRead = false, withContainer = false }) => {
86
+ const activeFlags = getActiveFlags(flags);
87
+ const allFlags = [
88
+ ...activeFlags,
89
+ ...(longRead ? [{ expiryTime: null, type: 'LONGREAD' }] : [])
90
+ ];
91
+
92
+ if (!allFlags.length) {
93
+ return null;
94
+ }
95
+
96
+ if (!withContainer) {
97
+ return <FlagsView allFlags={allFlags} />;
98
+ }
99
+
100
+ return (
101
+ <FlagsContainer>
102
+ <FlagsView allFlags={allFlags} />
103
+ </FlagsContainer>
104
+ );
105
+ };
106
+
107
+ export default ArticleFlag;
108
+
109
+ export {
110
+ getActiveFlags,
111
+ ArticleFlag,
112
+ ArticleFlags,
113
+ NewArticleFlag,
114
+ UpdatedArticleFlag,
115
+ ExclusiveArticleFlag,
116
+ SponsoredArticleFlag,
117
+ LongReadArticleFlag
118
+ };
@@ -1,9 +1,21 @@
1
1
  import React from 'react';
2
- import { Container, BulletContainer, Title } from './styles';
2
+ import {
3
+ LiveArticleFlagContainer,
4
+ LiveDiamondContainer,
5
+ LiveArticleFlagTextContainer
6
+ } from './styles';
7
+
8
+ export const BaseLiveArticleFlag: React.FC<{ title: string }> = ({ title }) => (
9
+ <LiveArticleFlagContainer>
10
+ <LiveDiamondContainer>{'\u25c6'}</LiveDiamondContainer>
11
+ <LiveArticleFlagTextContainer>{title}</LiveArticleFlagTextContainer>
12
+ </LiveArticleFlagContainer>
13
+ );
3
14
 
4
15
  export const LiveArticleFlag: React.FC = () => (
5
- <Container>
6
- <BulletContainer>{'\u25c6'}</BulletContainer>
7
- <Title>LIVE</Title>
8
- </Container>
16
+ <BaseLiveArticleFlag title="LIVE" />
17
+ );
18
+
19
+ export const BreakingArticleFlag: React.FC = () => (
20
+ <BaseLiveArticleFlag title="BREAKING" />
9
21
  );
@@ -0,0 +1,111 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import '@testing-library/jest-dom';
4
+ import {
5
+ ArticleFlag,
6
+ ArticleFlags,
7
+ NewArticleFlag,
8
+ UpdatedArticleFlag,
9
+ ExclusiveArticleFlag,
10
+ SponsoredArticleFlag,
11
+ LongReadArticleFlag
12
+ } from '../ArticleFlag';
13
+ import mockDate from 'mockdate';
14
+
15
+ jest.mock('@times-components/ts-components', () => ({
16
+ __esModule: true,
17
+ ...jest.requireActual('@times-components/ts-components'),
18
+ LiveArticleFlag: 'LiveArticleFlag'
19
+ }));
20
+
21
+ describe('ArticleFlag', () => {
22
+ // GMT: Thursday, 14 March 2019 16:22:54
23
+ beforeEach(() => {
24
+ mockDate.set(1552580574000);
25
+ });
26
+
27
+ afterEach(() => {
28
+ mockDate.reset();
29
+ });
30
+ it('renders an article flag', () => {
31
+ const { baseElement } = render(
32
+ <ArticleFlag title="No Colour" color={''} />
33
+ );
34
+ expect(baseElement).toMatchSnapshot();
35
+ });
36
+
37
+ it('renders a red article flag', () => {
38
+ const { baseElement } = render(
39
+ <ArticleFlag color="red" title="Coloured Red" />
40
+ );
41
+ expect(baseElement).toMatchSnapshot();
42
+ });
43
+
44
+ it('renders the new article flag', () => {
45
+ const { baseElement, getByText } = render(<NewArticleFlag />);
46
+ expect(getByText('new')).toBeTruthy();
47
+ expect(baseElement).toMatchSnapshot();
48
+ });
49
+
50
+ it('renders the updated article flag', () => {
51
+ const { baseElement, getByText } = render(<UpdatedArticleFlag />);
52
+ expect(getByText('updated')).toBeTruthy();
53
+ expect(baseElement).toMatchSnapshot();
54
+ });
55
+
56
+ it('renders the exclusive article flag', () => {
57
+ const { baseElement, getByText } = render(<ExclusiveArticleFlag />);
58
+ expect(getByText('exclusive')).toBeTruthy();
59
+ expect(baseElement).toMatchSnapshot();
60
+ });
61
+
62
+ it('renders the sponsored article flag', () => {
63
+ const { baseElement, getByText } = render(<SponsoredArticleFlag />);
64
+ expect(getByText('sponsored')).toBeTruthy();
65
+ expect(baseElement).toMatchSnapshot();
66
+ });
67
+
68
+ it('renders the long read article flag', () => {
69
+ const { baseElement, getByText } = render(<LongReadArticleFlag />);
70
+ expect(getByText('long read')).toBeTruthy();
71
+ expect(baseElement).toMatchSnapshot();
72
+ });
73
+
74
+ it('renders multiple article flags', () => {
75
+ const { baseElement } = render(
76
+ <ArticleFlags
77
+ flags={[
78
+ { expiryTime: '2030-03-13T12:00:00.000Z', type: 'UPDATED' },
79
+ { expiryTime: '2030-03-14T12:00:00.000Z', type: 'EXCLUSIVE' },
80
+ { expiryTime: '2030-03-14T12:00:00.000Z', type: 'NEW' },
81
+ { expiryTime: '2030-03-14T12:00:00.000Z', type: 'SPONSORED' }
82
+ ]}
83
+ longRead
84
+ withContainer={false}
85
+ />
86
+ );
87
+ expect(baseElement).toMatchSnapshot();
88
+ });
89
+ it('renders multiple article flags in a container', () => {
90
+ const { baseElement } = render(
91
+ <ArticleFlags
92
+ flags={[
93
+ { expiryTime: '2030-03-13T12:00:00.000Z', type: 'UPDATED' },
94
+ { expiryTime: '2030-03-14T12:00:00.000Z', type: 'EXCLUSIVE' },
95
+ { expiryTime: '2030-03-14T12:00:00.000Z', type: 'NEW' },
96
+ { expiryTime: '2030-03-14T12:00:00.000Z', type: 'SPONSORED' }
97
+ ]}
98
+ longRead
99
+ withContainer
100
+ />
101
+ );
102
+ expect(baseElement).toMatchSnapshot();
103
+ });
104
+
105
+ it('does not render article flags if there are none', () => {
106
+ const { baseElement } = render(
107
+ <ArticleFlags flags={[]} longRead={false} withContainer={false} />
108
+ );
109
+ expect(baseElement).toMatchSnapshot();
110
+ });
111
+ });
@@ -2,10 +2,26 @@ import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
3
  import '@testing-library/jest-dom';
4
4
 
5
- import { LiveArticleFlag } from '../LiveArticleFlag';
5
+ import {
6
+ BaseLiveArticleFlag,
7
+ BreakingArticleFlag,
8
+ LiveArticleFlag
9
+ } from '../LiveArticleFlag';
6
10
 
7
- describe('<LiveArticleFlag>', () => {
8
- it('should render the component', () => {
11
+ describe('LiveArticleFlag', () => {
12
+ it('should render the base live article flag', () => {
13
+ const { baseElement, getByText } = render(
14
+ <BaseLiveArticleFlag title="BASE" />
15
+ );
16
+ expect(getByText('BASE')).toBeTruthy();
17
+ expect(baseElement).toMatchSnapshot();
18
+ });
19
+ it('should render the breaking article flag', () => {
20
+ const { baseElement, getByText } = render(<BreakingArticleFlag />);
21
+ expect(getByText('BREAKING')).toBeTruthy();
22
+ expect(baseElement).toMatchSnapshot();
23
+ });
24
+ it('should render the live article flag', () => {
9
25
  const { baseElement, getByText } = render(<LiveArticleFlag />);
10
26
  expect(getByText('LIVE')).toBeTruthy();
11
27
  expect(baseElement).toMatchSnapshot();
@@ -0,0 +1,394 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`ArticleFlag does not render article flags if there are none 1`] = `
4
+ <body>
5
+ <div />
6
+ </body>
7
+ `;
8
+
9
+ exports[`ArticleFlag renders a red article flag 1`] = `
10
+ <body>
11
+ <div>
12
+ <div
13
+ class="sc-bdVaJa fXEEbM"
14
+ >
15
+ <div
16
+ class="sc-htpNat ZOZQE"
17
+ color="red"
18
+ />
19
+ <div
20
+ aria-label="Coloured Red Flag"
21
+ class="sc-ifAKCX dTECV"
22
+ color="red"
23
+ data-testid="flag-Coloured Red"
24
+ >
25
+ coloured red
26
+ </div>
27
+ </div>
28
+ </div>
29
+ </body>
30
+ `;
31
+
32
+ exports[`ArticleFlag renders an article flag 1`] = `
33
+ <body>
34
+ <div>
35
+ <div
36
+ class="sc-bdVaJa fXEEbM"
37
+ >
38
+ <div
39
+ class="sc-htpNat qvwfW"
40
+ color=""
41
+ />
42
+ <div
43
+ aria-label="No Colour Flag"
44
+ class="sc-ifAKCX juPnZa"
45
+ color=""
46
+ data-testid="flag-No Colour"
47
+ >
48
+ no colour
49
+ </div>
50
+ </div>
51
+ </div>
52
+ </body>
53
+ `;
54
+
55
+ exports[`ArticleFlag renders multiple article flags 1`] = `
56
+ <body>
57
+ <div>
58
+ <div
59
+ class="sc-gzVnrw kpMYNz"
60
+ >
61
+ <div
62
+ class="sc-bZQynM fMCtl"
63
+ >
64
+ <div
65
+ class="sc-bdVaJa fXEEbM"
66
+ >
67
+ <div
68
+ class="sc-htpNat fugARQ"
69
+ color="#3C81BE"
70
+ />
71
+ <div
72
+ aria-label="updated Flag"
73
+ class="sc-ifAKCX hSeRZN"
74
+ color="#3C81BE"
75
+ data-testid="flag-updated"
76
+ >
77
+ updated
78
+ </div>
79
+ </div>
80
+ </div>
81
+ <div
82
+ class="sc-bZQynM fMCtl"
83
+ >
84
+ <div
85
+ class="sc-bdVaJa fXEEbM"
86
+ >
87
+ <div
88
+ class="sc-htpNat dZoUoM"
89
+ color="#C51D24"
90
+ />
91
+ <div
92
+ aria-label="exclusive Flag"
93
+ class="sc-ifAKCX fupmhj"
94
+ color="#C51D24"
95
+ data-testid="flag-exclusive"
96
+ >
97
+ exclusive
98
+ </div>
99
+ </div>
100
+ </div>
101
+ <div
102
+ class="sc-bZQynM fMCtl"
103
+ >
104
+ <div
105
+ class="sc-bdVaJa fXEEbM"
106
+ >
107
+ <div
108
+ class="sc-htpNat jkDJOE"
109
+ color="#E34605"
110
+ />
111
+ <div
112
+ aria-label="new Flag"
113
+ class="sc-ifAKCX iquuBv"
114
+ color="#E34605"
115
+ data-testid="flag-new"
116
+ >
117
+ new
118
+ </div>
119
+ </div>
120
+ </div>
121
+ <div
122
+ class="sc-bZQynM fMCtl"
123
+ >
124
+ <div
125
+ class="sc-bdVaJa fXEEbM"
126
+ >
127
+ <div
128
+ class="sc-htpNat gaRHEk"
129
+ color="#4D4D4D"
130
+ />
131
+ <div
132
+ aria-label="sponsored Flag"
133
+ class="sc-ifAKCX fzZyiZ"
134
+ color="#4D4D4D"
135
+ data-testid="flag-sponsored"
136
+ >
137
+ sponsored
138
+ </div>
139
+ </div>
140
+ </div>
141
+ <div
142
+ class="sc-bZQynM fMCtl"
143
+ >
144
+ <div
145
+ class="sc-bdVaJa fXEEbM"
146
+ >
147
+ <div
148
+ class="sc-htpNat fRxTiY"
149
+ color="#696969"
150
+ />
151
+ <div
152
+ aria-label="long read Flag"
153
+ class="sc-ifAKCX cRBzVF"
154
+ color="#696969"
155
+ data-testid="flag-long read"
156
+ >
157
+ long read
158
+ </div>
159
+ </div>
160
+ </div>
161
+ </div>
162
+ </div>
163
+ </body>
164
+ `;
165
+
166
+ exports[`ArticleFlag renders multiple article flags in a container 1`] = `
167
+ <body>
168
+ <div>
169
+ <div
170
+ class="sc-htoDjs gNxXwX"
171
+ >
172
+ <div
173
+ class="sc-gzVnrw kpMYNz"
174
+ >
175
+ <div
176
+ class="sc-bZQynM fMCtl"
177
+ >
178
+ <div
179
+ class="sc-bdVaJa fXEEbM"
180
+ >
181
+ <div
182
+ class="sc-htpNat fugARQ"
183
+ color="#3C81BE"
184
+ />
185
+ <div
186
+ aria-label="updated Flag"
187
+ class="sc-ifAKCX hSeRZN"
188
+ color="#3C81BE"
189
+ data-testid="flag-updated"
190
+ >
191
+ updated
192
+ </div>
193
+ </div>
194
+ </div>
195
+ <div
196
+ class="sc-bZQynM fMCtl"
197
+ >
198
+ <div
199
+ class="sc-bdVaJa fXEEbM"
200
+ >
201
+ <div
202
+ class="sc-htpNat dZoUoM"
203
+ color="#C51D24"
204
+ />
205
+ <div
206
+ aria-label="exclusive Flag"
207
+ class="sc-ifAKCX fupmhj"
208
+ color="#C51D24"
209
+ data-testid="flag-exclusive"
210
+ >
211
+ exclusive
212
+ </div>
213
+ </div>
214
+ </div>
215
+ <div
216
+ class="sc-bZQynM fMCtl"
217
+ >
218
+ <div
219
+ class="sc-bdVaJa fXEEbM"
220
+ >
221
+ <div
222
+ class="sc-htpNat jkDJOE"
223
+ color="#E34605"
224
+ />
225
+ <div
226
+ aria-label="new Flag"
227
+ class="sc-ifAKCX iquuBv"
228
+ color="#E34605"
229
+ data-testid="flag-new"
230
+ >
231
+ new
232
+ </div>
233
+ </div>
234
+ </div>
235
+ <div
236
+ class="sc-bZQynM fMCtl"
237
+ >
238
+ <div
239
+ class="sc-bdVaJa fXEEbM"
240
+ >
241
+ <div
242
+ class="sc-htpNat gaRHEk"
243
+ color="#4D4D4D"
244
+ />
245
+ <div
246
+ aria-label="sponsored Flag"
247
+ class="sc-ifAKCX fzZyiZ"
248
+ color="#4D4D4D"
249
+ data-testid="flag-sponsored"
250
+ >
251
+ sponsored
252
+ </div>
253
+ </div>
254
+ </div>
255
+ <div
256
+ class="sc-bZQynM fMCtl"
257
+ >
258
+ <div
259
+ class="sc-bdVaJa fXEEbM"
260
+ >
261
+ <div
262
+ class="sc-htpNat fRxTiY"
263
+ color="#696969"
264
+ />
265
+ <div
266
+ aria-label="long read Flag"
267
+ class="sc-ifAKCX cRBzVF"
268
+ color="#696969"
269
+ data-testid="flag-long read"
270
+ >
271
+ long read
272
+ </div>
273
+ </div>
274
+ </div>
275
+ </div>
276
+ </div>
277
+ </div>
278
+ </body>
279
+ `;
280
+
281
+ exports[`ArticleFlag renders the exclusive article flag 1`] = `
282
+ <body>
283
+ <div>
284
+ <div
285
+ class="sc-bdVaJa fXEEbM"
286
+ >
287
+ <div
288
+ class="sc-htpNat dZoUoM"
289
+ color="#C51D24"
290
+ />
291
+ <div
292
+ aria-label="exclusive Flag"
293
+ class="sc-ifAKCX fupmhj"
294
+ color="#C51D24"
295
+ data-testid="flag-exclusive"
296
+ >
297
+ exclusive
298
+ </div>
299
+ </div>
300
+ </div>
301
+ </body>
302
+ `;
303
+
304
+ exports[`ArticleFlag renders the long read article flag 1`] = `
305
+ <body>
306
+ <div>
307
+ <div
308
+ class="sc-bdVaJa fXEEbM"
309
+ >
310
+ <div
311
+ class="sc-htpNat fRxTiY"
312
+ color="#696969"
313
+ />
314
+ <div
315
+ aria-label="long read Flag"
316
+ class="sc-ifAKCX cRBzVF"
317
+ color="#696969"
318
+ data-testid="flag-long read"
319
+ >
320
+ long read
321
+ </div>
322
+ </div>
323
+ </div>
324
+ </body>
325
+ `;
326
+
327
+ exports[`ArticleFlag renders the new article flag 1`] = `
328
+ <body>
329
+ <div>
330
+ <div
331
+ class="sc-bdVaJa fXEEbM"
332
+ >
333
+ <div
334
+ class="sc-htpNat jkDJOE"
335
+ color="#E34605"
336
+ />
337
+ <div
338
+ aria-label="new Flag"
339
+ class="sc-ifAKCX iquuBv"
340
+ color="#E34605"
341
+ data-testid="flag-new"
342
+ >
343
+ new
344
+ </div>
345
+ </div>
346
+ </div>
347
+ </body>
348
+ `;
349
+
350
+ exports[`ArticleFlag renders the sponsored article flag 1`] = `
351
+ <body>
352
+ <div>
353
+ <div
354
+ class="sc-bdVaJa fXEEbM"
355
+ >
356
+ <div
357
+ class="sc-htpNat gaRHEk"
358
+ color="#4D4D4D"
359
+ />
360
+ <div
361
+ aria-label="sponsored Flag"
362
+ class="sc-ifAKCX fzZyiZ"
363
+ color="#4D4D4D"
364
+ data-testid="flag-sponsored"
365
+ >
366
+ sponsored
367
+ </div>
368
+ </div>
369
+ </div>
370
+ </body>
371
+ `;
372
+
373
+ exports[`ArticleFlag renders the updated article flag 1`] = `
374
+ <body>
375
+ <div>
376
+ <div
377
+ class="sc-bdVaJa fXEEbM"
378
+ >
379
+ <div
380
+ class="sc-htpNat fugARQ"
381
+ color="#3C81BE"
382
+ />
383
+ <div
384
+ aria-label="updated Flag"
385
+ class="sc-ifAKCX hSeRZN"
386
+ color="#3C81BE"
387
+ data-testid="flag-updated"
388
+ >
389
+ updated
390
+ </div>
391
+ </div>
392
+ </div>
393
+ </body>
394
+ `;