@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 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
 
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- declare const PartnerContentHeader: ({ name }: {
2
+ declare const PartnerContentHeader: ({ name, disclaimer, }: {
3
3
  name: string;
4
+ disclaimer: string;
4
5
  }) => React.JSX.Element;
5
6
  export default PartnerContentHeader;
@@ -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: `This content was paid for by ${name} and produced in partnership with the Financial Times Commercial department`, infoLabel: "More information on Partner 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,EAAE,IAAI,GAAG,SAAS,EAAoB,EAAE,EAAE;IACtE,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,gCAAgC,IAAI,6EAA6E,EAC1H,SAAS,EAAC,qCAAqC,GAC/C,CACE,CACF,CACF,CACP,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,oBAAoB,CAAA"}
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":"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"}
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 { ContentTreeWorkarounds } from '@financial-times/cp-content-pipeline-schema';
4
- interface VideoProps extends ContentProps<ContentTreeWorkarounds.Video> {
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, embedded, title } }) => {
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": embedded, "data-asset-type": "video", "data-trackable": "link" },
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,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE;IAC3E,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,QAAQ,qBACP,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"}
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/cp-content-pipeline-ui",
3
- "version": "9.2.1",
3
+ "version": "9.3.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -1,7 +1,13 @@
1
1
  import React from 'react'
2
2
  import { TooltipToggle } from '@financial-times/o3-tooltip'
3
3
 
4
- const PartnerContentHeader = ({ name = 'Partner' }: { name: string }) => {
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={`This content was paid for by ${name} and produced in partnership with the Financial Times Commercial department`}
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 { ArticleQuery } from '@financial-times/cp-content-pipeline-client'
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 name={sponsorName || 'Sponsor'} />
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 { ContentTreeWorkarounds } from '@financial-times/cp-content-pipeline-schema'
3
+ import { ContentTree } from '@financial-times/content-tree'
4
4
 
5
- interface VideoProps extends ContentProps<ContentTreeWorkarounds.Video> {}
5
+ interface VideoProps extends ContentProps<ContentTree.Video> {}
6
6
 
7
- const Video: React.FC<VideoProps> = ({ content: { id, embedded, title } }) => {
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={embedded}
20
+ data-embedded={true}
21
21
  data-asset-type="video"
22
22
  data-trackable="link"
23
23
  >