@financial-times/cp-content-pipeline-ui 9.2.1 → 9.3.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/CHANGELOG.md +8 -0
- package/lib/components/PartnerContentHeader/index.d.ts +2 -1
- package/lib/components/PartnerContentHeader/index.js +2 -2
- package/lib/components/PartnerContentHeader/index.js.map +1 -1
- package/lib/components/Topper/index.js +12 -1
- package/lib/components/Topper/index.js.map +1 -1
- package/lib/components/content-tree/Video/index.d.ts +2 -2
- package/lib/components/content-tree/Video/index.js +2 -2
- package/lib/components/content-tree/Video/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/PartnerContentHeader/index.tsx +8 -2
- package/src/components/Topper/index.tsx +30 -2
- package/src/components/content-tree/Video/index.tsx +4 -4
- package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -574,6 +574,14 @@
|
|
|
574
574
|
* @financial-times/cp-content-pipeline-client bumped from ^3.7.2 to ^3.7.3
|
|
575
575
|
* @financial-times/cp-content-pipeline-schema bumped from ^2.10.1 to ^2.10.2
|
|
576
576
|
|
|
577
|
+
## [9.3.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v9.2.1...cp-content-pipeline-ui-v9.3.0) (2025-06-05)
|
|
578
|
+
|
|
579
|
+
|
|
580
|
+
### Features
|
|
581
|
+
|
|
582
|
+
* add multiple disclaimers to partner content ([1257023](https://github.com/Financial-Times/cp-content-pipeline/commit/1257023f6bd83a7a773008da64986bc93599f5c8))
|
|
583
|
+
* align Video with content-tree spec ([f9deff5](https://github.com/Financial-Times/cp-content-pipeline/commit/f9deff5227f6f5d3d0dfd5e3eabee6599c86aba5))
|
|
584
|
+
|
|
577
585
|
## [9.2.1](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v9.2.0...cp-content-pipeline-ui-v9.2.1) (2025-05-01)
|
|
578
586
|
|
|
579
587
|
|
|
@@ -5,13 +5,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
7
|
const o3_tooltip_1 = require("@financial-times/o3-tooltip");
|
|
8
|
-
const PartnerContentHeader = ({ name = 'Partner' }) => {
|
|
8
|
+
const PartnerContentHeader = ({ name = 'Partner', disclaimer, }) => {
|
|
9
9
|
return (react_1.default.createElement("div", { className: "partner-content-header", "data-o3-brand": "core" },
|
|
10
10
|
react_1.default.createElement("div", { className: "partner-content-header__content" },
|
|
11
11
|
react_1.default.createElement("div", { className: "partner-content-header__client" }, name),
|
|
12
12
|
react_1.default.createElement("div", { className: "partner-content-header__title" },
|
|
13
13
|
react_1.default.createElement("p", null, "Partner Content"),
|
|
14
|
-
react_1.default.createElement(o3_tooltip_1.TooltipToggle, { placement: "bottom", content:
|
|
14
|
+
react_1.default.createElement(o3_tooltip_1.TooltipToggle, { placement: "bottom", content: disclaimer, infoLabel: "More information on Partner Content" })))));
|
|
15
15
|
};
|
|
16
16
|
exports.default = PartnerContentHeader;
|
|
17
17
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/PartnerContentHeader/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,4DAA2D;AAE3D,MAAM,oBAAoB,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/PartnerContentHeader/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,4DAA2D;AAE3D,MAAM,oBAAoB,GAAG,CAAC,EAC5B,IAAI,GAAG,SAAS,EAChB,UAAU,GAIX,EAAE,EAAE;IACH,OAAO,CACL,uCAAK,SAAS,EAAC,wBAAwB,mBAAe,MAAM;QAC1D,uCAAK,SAAS,EAAC,iCAAiC;YAC9C,uCAAK,SAAS,EAAC,gCAAgC,IAAE,IAAI,CAAO;YAC5D,uCAAK,SAAS,EAAC,+BAA+B;gBAC5C,2DAAsB;gBACtB,8BAAC,0BAAa,IACZ,SAAS,EAAC,QAAQ,EAClB,OAAO,EAAE,UAAU,EACnB,SAAS,EAAC,qCAAqC,GAC/C,CACE,CACF,CACF,CACP,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,oBAAoB,CAAA"}
|
|
@@ -38,11 +38,18 @@ const LiveBlogIndicator_1 = __importDefault(require("./LiveBlogIndicator"));
|
|
|
38
38
|
const Flourish_1 = __importDefault(require("../content-tree/Flourish"));
|
|
39
39
|
const classnames_1 = __importDefault(require("classnames"));
|
|
40
40
|
const PartnerContentHeader_1 = __importDefault(require("../PartnerContentHeader"));
|
|
41
|
+
const DISCLAIMER_MESSAGES = {
|
|
42
|
+
'co-created-content': (sponsorName) => `This content was paid for by ${sponsorName} and produced in partnership with the Financial Times Commercial department`,
|
|
43
|
+
'client-supplied-content': (sponsorName) => `This content was paid for and produced by ${sponsorName} with the Financial Times Commercial department.`,
|
|
44
|
+
'ft-studios-risky': (sponsorName) => `This advertisement has been produced by the Commercial department of the Financial Times on behalf of ${sponsorName}`,
|
|
45
|
+
auditor: (sponsorName) => `This content was paid for and produced by ${sponsorName} with the Financial Times Commercial department`,
|
|
46
|
+
};
|
|
41
47
|
const Topper = ({ content, slot, followButtonSlot, showPremiumLabel = false, readNextSlot, }) => {
|
|
42
48
|
const { topper } = content;
|
|
43
49
|
if (!topper) {
|
|
44
50
|
return null;
|
|
45
51
|
}
|
|
52
|
+
const isArticle = content.__typename === 'Article';
|
|
46
53
|
const isPackage = content.__typename === 'ContentPackage';
|
|
47
54
|
const isLiveBlog = content.__typename === 'LiveBlogPackage';
|
|
48
55
|
const isBasic = topper.__typename === 'BasicTopper';
|
|
@@ -57,6 +64,7 @@ const Topper = ({ content, slot, followButtonSlot, showPremiumLabel = false, rea
|
|
|
57
64
|
const hasHeadshot = 'headshot' in topper && topper.headshot;
|
|
58
65
|
const hasColumnist = 'columnist' in topper && !!topper.columnist;
|
|
59
66
|
const sponsorName = 'clientName' in content && content.clientName;
|
|
67
|
+
const disclaimerType = isArticle ? content.disclaimerType : undefined;
|
|
60
68
|
const modifiers = [];
|
|
61
69
|
isPackage && modifiers.push('package');
|
|
62
70
|
isPackage && hasDesign && modifiers.push(`package-${topper.design}`);
|
|
@@ -85,8 +93,11 @@ const Topper = ({ content, slot, followButtonSlot, showPremiumLabel = false, rea
|
|
|
85
93
|
}
|
|
86
94
|
return defaultPublishDate;
|
|
87
95
|
};
|
|
96
|
+
const disclaimer = disclaimerType
|
|
97
|
+
? DISCLAIMER_MESSAGES[disclaimerType](sponsorName || 'the sponsor')
|
|
98
|
+
: `This content was paid for by ${sponsorName || 'the sponsor'} and produced in partnership with the Financial Times Commercial department`;
|
|
88
99
|
return (react_1.default.createElement(react_1.Fragment, null,
|
|
89
|
-
isPartnerContent && (react_1.default.createElement(PartnerContentHeader_1.default, { name: sponsorName || 'Sponsor' })),
|
|
100
|
+
isPartnerContent && (react_1.default.createElement(PartnerContentHeader_1.default, { name: sponsorName || 'Sponsor', disclaimer: disclaimer || '' })),
|
|
90
101
|
react_1.default.createElement("div", { className: (0, classnames_1.default)({
|
|
91
102
|
'article-topper': true,
|
|
92
103
|
'pinned-post__topper--no-image': isLiveBlog,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Topper/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAqD;AACrD,wDAA+B;AAC/B,kDAAyB;AACzB,0DAAiC;AACjC,oDAA2B;AAC3B,wDAA+B;AAC/B,2DAAkC;AAClC,4DAAmC;AACnC,4EAAmD;AAEnD,wEAA+C;AAC/C,4DAAmC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/Topper/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ContentProps } from '../../types';
|
|
3
|
-
import {
|
|
4
|
-
interface VideoProps extends ContentProps<
|
|
3
|
+
import { ContentTree } from '@financial-times/content-tree';
|
|
4
|
+
interface VideoProps extends ContentProps<ContentTree.Video> {
|
|
5
5
|
}
|
|
6
6
|
declare const Video: React.FC<VideoProps>;
|
|
7
7
|
export default Video;
|
|
@@ -4,10 +4,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const react_1 = __importDefault(require("react"));
|
|
7
|
-
const Video = ({ content: { id,
|
|
7
|
+
const Video = ({ content: { id, title } }) => {
|
|
8
8
|
return (react_1.default.createElement("div", { className: "n-content-video n-content-video--internal", "data-component": "video" },
|
|
9
9
|
react_1.default.createElement("div", { className: "n-content-video__placeholder", "data-o-component": "o-video", "data-o-video-id": id },
|
|
10
|
-
react_1.default.createElement("a", { href: `https://www.ft.com/content/${id}`, "data-embedded":
|
|
10
|
+
react_1.default.createElement("a", { href: `https://www.ft.com/content/${id}`, "data-embedded": true, "data-asset-type": "video", "data-trackable": "link" },
|
|
11
11
|
react_1.default.createElement("span", null, title ? `Video: ${title}` : 'Watch the video')))));
|
|
12
12
|
};
|
|
13
13
|
exports.default = Video;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/content-tree/Video/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAMzB,MAAM,KAAK,GAAyB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/content-tree/Video/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAMzB,MAAM,KAAK,GAAyB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;IACjE,OAAO,CACL,uCACE,SAAS,EAAC,2CAA2C,oBACtC,OAAO;QAEtB,uCACE,SAAS,EAAC,8BAA8B,sBACvB,SAAS,qBACT,EAAE;YAEnB,qCACE,IAAI,EAAE,8BAA8B,EAAE,EAAE,mBACzB,IAAI,qBACH,OAAO,oBACR,MAAM;gBAErB,4CAAO,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAQ,CAC1D,CACA,CACF,CACP,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,KAAK,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { TooltipToggle } from '@financial-times/o3-tooltip'
|
|
3
3
|
|
|
4
|
-
const PartnerContentHeader = ({
|
|
4
|
+
const PartnerContentHeader = ({
|
|
5
|
+
name = 'Partner',
|
|
6
|
+
disclaimer,
|
|
7
|
+
}: {
|
|
8
|
+
name: string
|
|
9
|
+
disclaimer: string
|
|
10
|
+
}) => {
|
|
5
11
|
return (
|
|
6
12
|
<div className="partner-content-header" data-o3-brand="core">
|
|
7
13
|
<div className="partner-content-header__content">
|
|
@@ -10,7 +16,7 @@ const PartnerContentHeader = ({ name = 'Partner' }: { name: string }) => {
|
|
|
10
16
|
<p>Partner Content</p>
|
|
11
17
|
<TooltipToggle
|
|
12
18
|
placement="bottom"
|
|
13
|
-
content={
|
|
19
|
+
content={disclaimer}
|
|
14
20
|
infoLabel="More information on Partner Content"
|
|
15
21
|
/>
|
|
16
22
|
</div>
|
|
@@ -10,7 +10,10 @@ import LiveBlogIndicator from './LiveBlogIndicator'
|
|
|
10
10
|
import { FollowButtonSlot } from './FollowButtonSlot'
|
|
11
11
|
import Flourish from '../content-tree/Flourish'
|
|
12
12
|
import classnames from 'classnames'
|
|
13
|
-
import type {
|
|
13
|
+
import type {
|
|
14
|
+
ArticleQuery,
|
|
15
|
+
Article,
|
|
16
|
+
} from '@financial-times/cp-content-pipeline-client'
|
|
14
17
|
import PartnerContentHeader from '../PartnerContentHeader'
|
|
15
18
|
|
|
16
19
|
export type TopperProps = {
|
|
@@ -21,6 +24,20 @@ export type TopperProps = {
|
|
|
21
24
|
readNextSlot?: () => ReactElement
|
|
22
25
|
}
|
|
23
26
|
|
|
27
|
+
const DISCLAIMER_MESSAGES: Record<
|
|
28
|
+
NonNullable<Article['disclaimerType']>,
|
|
29
|
+
(sponsorName: string) => string
|
|
30
|
+
> = {
|
|
31
|
+
'co-created-content': (sponsorName) =>
|
|
32
|
+
`This content was paid for by ${sponsorName} and produced in partnership with the Financial Times Commercial department`,
|
|
33
|
+
'client-supplied-content': (sponsorName) =>
|
|
34
|
+
`This content was paid for and produced by ${sponsorName} with the Financial Times Commercial department.`,
|
|
35
|
+
'ft-studios-risky': (sponsorName) =>
|
|
36
|
+
`This advertisement has been produced by the Commercial department of the Financial Times on behalf of ${sponsorName}`,
|
|
37
|
+
auditor: (sponsorName) =>
|
|
38
|
+
`This content was paid for and produced by ${sponsorName} with the Financial Times Commercial department`,
|
|
39
|
+
}
|
|
40
|
+
|
|
24
41
|
const Topper: React.FC<TopperProps> = ({
|
|
25
42
|
content,
|
|
26
43
|
slot,
|
|
@@ -34,6 +51,7 @@ const Topper: React.FC<TopperProps> = ({
|
|
|
34
51
|
return null
|
|
35
52
|
}
|
|
36
53
|
|
|
54
|
+
const isArticle = content.__typename === 'Article'
|
|
37
55
|
const isPackage = content.__typename === 'ContentPackage'
|
|
38
56
|
const isLiveBlog = content.__typename === 'LiveBlogPackage'
|
|
39
57
|
const isBasic = topper.__typename === 'BasicTopper'
|
|
@@ -49,6 +67,7 @@ const Topper: React.FC<TopperProps> = ({
|
|
|
49
67
|
const hasHeadshot = 'headshot' in topper && topper.headshot
|
|
50
68
|
const hasColumnist = 'columnist' in topper && !!topper.columnist
|
|
51
69
|
const sponsorName = 'clientName' in content && content.clientName
|
|
70
|
+
const disclaimerType = isArticle ? content.disclaimerType : undefined
|
|
52
71
|
|
|
53
72
|
const modifiers: string[] = []
|
|
54
73
|
|
|
@@ -90,11 +109,20 @@ const Topper: React.FC<TopperProps> = ({
|
|
|
90
109
|
return defaultPublishDate
|
|
91
110
|
}
|
|
92
111
|
|
|
112
|
+
const disclaimer = disclaimerType
|
|
113
|
+
? DISCLAIMER_MESSAGES[disclaimerType](sponsorName || 'the sponsor')
|
|
114
|
+
: `This content was paid for by ${
|
|
115
|
+
sponsorName || 'the sponsor'
|
|
116
|
+
} and produced in partnership with the Financial Times Commercial department`
|
|
117
|
+
|
|
93
118
|
return (
|
|
94
119
|
<Fragment>
|
|
95
120
|
{/** TODO: make the name dynamic when upstream is ready */}
|
|
96
121
|
{isPartnerContent && (
|
|
97
|
-
<PartnerContentHeader
|
|
122
|
+
<PartnerContentHeader
|
|
123
|
+
name={sponsorName || 'Sponsor'}
|
|
124
|
+
disclaimer={disclaimer || ''}
|
|
125
|
+
/>
|
|
98
126
|
)}
|
|
99
127
|
<div
|
|
100
128
|
className={classnames({
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react'
|
|
2
2
|
import { ContentProps } from '../../types'
|
|
3
|
-
import {
|
|
3
|
+
import { ContentTree } from '@financial-times/content-tree'
|
|
4
4
|
|
|
5
|
-
interface VideoProps extends ContentProps<
|
|
5
|
+
interface VideoProps extends ContentProps<ContentTree.Video> {}
|
|
6
6
|
|
|
7
|
-
const Video: React.FC<VideoProps> = ({ content: { id,
|
|
7
|
+
const Video: React.FC<VideoProps> = ({ content: { id, title } }) => {
|
|
8
8
|
return (
|
|
9
9
|
<div
|
|
10
10
|
className="n-content-video n-content-video--internal"
|
|
@@ -17,7 +17,7 @@ const Video: React.FC<VideoProps> = ({ content: { id, embedded, title } }) => {
|
|
|
17
17
|
>
|
|
18
18
|
<a
|
|
19
19
|
href={`https://www.ft.com/content/${id}`}
|
|
20
|
-
data-embedded={
|
|
20
|
+
data-embedded={true}
|
|
21
21
|
data-asset-type="video"
|
|
22
22
|
data-trackable="link"
|
|
23
23
|
>
|