@financial-times/cp-content-pipeline-ui 9.7.2 → 9.9.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,48 @@
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.9.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v9.8.0...cp-content-pipeline-ui-v9.9.0) (2025-11-04)
578
+
579
+
580
+ ### Features
581
+
582
+ * accommodate new Premium label design ([47f5142](https://github.com/Financial-Times/cp-content-pipeline/commit/47f5142d0e65a5e0869d572f91339cbb40c36782))
583
+ * add data-trackable attribute to link ([f9b97ef](https://github.com/Financial-Times/cp-content-pipeline/commit/f9b97ef653d5e362aa43346857390ce9356e7b1b))
584
+ * bump @financial-times/content-tree ([96232e5](https://github.com/Financial-Times/cp-content-pipeline/commit/96232e58f3b0634032b584766f071a95b9e0d257))
585
+ * bump @financial-times/content-tree ([9090226](https://github.com/Financial-Times/cp-content-pipeline/commit/909022691c1aeccb4e6e70b8a72a492e60f32739))
586
+ * implement client label on recommended list teasers for partner ([ffb809e](https://github.com/Financial-Times/cp-content-pipeline/commit/ffb809e43dc25c664d61f6cbdaf9d74e5b959cc4))
587
+ * implement RecommendedList component ([3b9fc92](https://github.com/Financial-Times/cp-content-pipeline/commit/3b9fc9211cebf182c572abcc8d7e971eeec7e179))
588
+
589
+
590
+ ### Dependencies
591
+
592
+ * The following workspace dependencies were updated
593
+ * devDependencies
594
+ * @financial-times/cp-content-pipeline-client bumped from ^4.17.0 to ^4.18.0
595
+ * @financial-times/cp-content-pipeline-schema bumped from ^3.16.0 to ^3.17.0
596
+ * @financial-times/cp-content-pipeline-styles bumped from ^4.3.0 to ^4.4.0
597
+
598
+ ## [9.8.0](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v9.7.2...cp-content-pipeline-ui-v9.8.0) (2025-10-28)
599
+
600
+
601
+ ### Features
602
+
603
+ * implement partner content onward journey link variation ([1c86943](https://github.com/Financial-Times/cp-content-pipeline/commit/1c869432b3bce7573bc63dc02b7adaa286220935))
604
+
605
+
606
+ ### Bug Fixes
607
+
608
+ * specify cjs import path ([1120bfe](https://github.com/Financial-Times/cp-content-pipeline/commit/1120bfe39bc415aea0044253a9c6f1e12ae110f3))
609
+
610
+
611
+ ### Dependencies
612
+
613
+ * The following workspace dependencies were updated
614
+ * devDependencies
615
+ * @financial-times/cp-content-pipeline-client bumped from ^4.16.2 to ^4.17.0
616
+ * @financial-times/cp-content-pipeline-schema bumped from ^3.15.2 to ^3.16.0
617
+ * @financial-times/cp-content-pipeline-styles bumped from ^4.2.1 to ^4.3.0
618
+
577
619
  ## [9.7.2](https://github.com/Financial-Times/cp-content-pipeline/compare/cp-content-pipeline-ui-v9.7.1...cp-content-pipeline-ui-v9.7.2) (2025-10-16)
578
620
 
579
621
 
@@ -4,14 +4,14 @@ 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 o3_tooltip_1 = require("@financial-times/o3-tooltip");
7
+ const cjs_1 = require("@financial-times/o3-tooltip/cjs");
8
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: disclaimer, infoLabel: "More information on Partner Content" })))));
14
+ react_1.default.createElement(cjs_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,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/PartnerContentHeader/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,yDAA+D;AAE/D,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,mBAAa,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"}
@@ -9,7 +9,7 @@ const List = (props) => props.content.ordered ? (react_1.default.createElement("
9
9
  exports.List = List;
10
10
  const ListItem = (props) => react_1.default.createElement("li", null, props.children);
11
11
  exports.ListItem = ListItem;
12
- const Link = (props) => (react_1.default.createElement("a", { href: props.content.url, title: props.content.title }, props.children));
12
+ const Link = (props) => (react_1.default.createElement("a", { href: props.content.url, title: props.content.title, className: props.content.styleType, "data-trackable": "link" }, props.children));
13
13
  exports.Link = Link;
14
14
  const Blockquote = (props) => {
15
15
  return (react_1.default.createElement("blockquote", { className: "n-content-blockquote o3-editorial-typography-blockquote" }, props.children));
@@ -1 +1 @@
1
- {"version":3,"file":"BasicComponents.js","sourceRoot":"","sources":["../../../src/components/RichText/BasicComponents.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AAKlB,MAAM,IAAI,GAEb,CAAC,KAAK,EAAE,EAAE,CACZ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CACtB,sCAAI,SAAS,EAAC,sCAAsC,IAAE,KAAK,CAAC,QAAQ,CAAM,CAC3E,CAAC,CAAC,CAAC,CACF,sCAAI,SAAS,EAAC,wCAAwC,IAAE,KAAK,CAAC,QAAQ,CAAM,CAC7E,CAAA;AAPU,QAAA,IAAI,QAOd;AAEI,MAAM,QAAQ,GAEjB,CAAC,KAAK,EAAE,EAAE,CAAC,0CAAK,KAAK,CAAC,QAAQ,CAAM,CAAA;AAF3B,QAAA,QAAQ,YAEmB;AAEjC,MAAM,IAAI,GAEb,CAAC,KAAK,EAAE,EAAE,CAAC,CACb,qCAAG,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IACnD,KAAK,CAAC,QAAQ,CACb,CACL,CAAA;AANY,QAAA,IAAI,QAMhB;AAEM,MAAM,UAAU,GAEnB,CAAC,KAAK,EAAE,EAAE;IACZ,OAAO,CACL,8CAAY,SAAS,EAAC,yDAAyD,IAC5E,KAAK,CAAC,QAAQ,CACJ,CACd,CAAA;AACH,CAAC,CAAA;AARY,QAAA,UAAU,cAQtB;AAEM,MAAM,IAAI,GAEb,CAAC,KAAK,EAAE,EAAE;IACZ,OAAO,CACL,wCAAM,SAAS,EAAC,4CAA4C,IACzD,KAAK,CAAC,QAAQ,CACV,CACR,CAAA;AACH,CAAC,CAAA;AARY,QAAA,IAAI,QAQhB;AAEM,MAAM,SAAS,GAAa,GAAG,EAAE,CAAC,yCAAM,CAAA;AAAlC,QAAA,SAAS,aAAyB;AAExC,MAAM,cAAc,GAAa,GAAG,EAAE,CAAC,yCAAM,CAAA;AAAvC,QAAA,cAAc,kBAAyB;AAE7C,MAAM,QAAQ,GAEjB,CAAC,KAAK,EAAE,EAAE,CAAC,0CAAK,KAAK,CAAC,QAAQ,CAAM,CAAA;AAF3B,QAAA,QAAQ,YAEmB;AAEjC,MAAM,MAAM,GAEf,CAAC,KAAK,EAAE,EAAE,CAAC,8CAAS,KAAK,CAAC,QAAQ,CAAU,CAAA;AAFnC,QAAA,MAAM,UAE6B;AAEzC,MAAM,aAAa,GAEtB,CAAC,KAAK,EAAE,EAAE,CAAC,yCAAI,KAAK,CAAC,QAAQ,CAAK,CAAA;AAFzB,QAAA,aAAa,iBAEY;AAE/B,MAAM,eAAe,GAExB,CAAC,KAAK,EAAE,EAAE,CAAC,2CAAM,KAAK,CAAC,QAAQ,CAAO,CAAA;AAF7B,QAAA,eAAe,mBAEc;AAEnC,MAAM,QAAQ,GAEjB,CAAC,KAAK,EAAE,EAAE,CAAC,0CAAK,KAAK,CAAC,QAAQ,CAAM,CAAA;AAF3B,QAAA,QAAQ,YAEmB;AAEjC,MAAM,WAAW,GAEpB,CAAC,KAAK,EAAE,EAAE,CAAC,CACb;IACE;QACE,sCAAI,OAAO,EAAE,IAAI,EAAE,SAAS,EAAC,kBAAkB,IAC5C,KAAK,CAAC,QAAQ,CACZ,CACF,CACC,CACT,CAAA;AAVY,QAAA,WAAW,eAUvB;AAEM,MAAM,YAAY,GAErB,CAAC,KAAK,EAAE,EAAE,CAAC,CACb,2CAAS,SAAS,EAAC,0FAA0F,IAC1G,KAAK,CAAC,QAAQ,CACP,CACX,CAAA;AANY,QAAA,YAAY,gBAMxB"}
1
+ {"version":3,"file":"BasicComponents.js","sourceRoot":"","sources":["../../../src/components/RichText/BasicComponents.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAAyB;AAKlB,MAAM,IAAI,GAEb,CAAC,KAAK,EAAE,EAAE,CACZ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CACtB,sCAAI,SAAS,EAAC,sCAAsC,IAAE,KAAK,CAAC,QAAQ,CAAM,CAC3E,CAAC,CAAC,CAAC,CACF,sCAAI,SAAS,EAAC,wCAAwC,IAAE,KAAK,CAAC,QAAQ,CAAM,CAC7E,CAAA;AAPU,QAAA,IAAI,QAOd;AAEI,MAAM,QAAQ,GAEjB,CAAC,KAAK,EAAE,EAAE,CAAC,0CAAK,KAAK,CAAC,QAAQ,CAAM,CAAA;AAF3B,QAAA,QAAQ,YAEmB;AAEjC,MAAM,IAAI,GAEb,CAAC,KAAK,EAAE,EAAE,CAAC,CACb,qCACE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EACvB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,EAC1B,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,SAAS,oBACnB,MAAM,IAEpB,KAAK,CAAC,QAAQ,CACb,CACL,CAAA;AAXY,QAAA,IAAI,QAWhB;AAEM,MAAM,UAAU,GAEnB,CAAC,KAAK,EAAE,EAAE;IACZ,OAAO,CACL,8CAAY,SAAS,EAAC,yDAAyD,IAC5E,KAAK,CAAC,QAAQ,CACJ,CACd,CAAA;AACH,CAAC,CAAA;AARY,QAAA,UAAU,cAQtB;AAEM,MAAM,IAAI,GAEb,CAAC,KAAK,EAAE,EAAE;IACZ,OAAO,CACL,wCAAM,SAAS,EAAC,4CAA4C,IACzD,KAAK,CAAC,QAAQ,CACV,CACR,CAAA;AACH,CAAC,CAAA;AARY,QAAA,IAAI,QAQhB;AAEM,MAAM,SAAS,GAAa,GAAG,EAAE,CAAC,yCAAM,CAAA;AAAlC,QAAA,SAAS,aAAyB;AAExC,MAAM,cAAc,GAAa,GAAG,EAAE,CAAC,yCAAM,CAAA;AAAvC,QAAA,cAAc,kBAAyB;AAE7C,MAAM,QAAQ,GAEjB,CAAC,KAAK,EAAE,EAAE,CAAC,0CAAK,KAAK,CAAC,QAAQ,CAAM,CAAA;AAF3B,QAAA,QAAQ,YAEmB;AAEjC,MAAM,MAAM,GAEf,CAAC,KAAK,EAAE,EAAE,CAAC,8CAAS,KAAK,CAAC,QAAQ,CAAU,CAAA;AAFnC,QAAA,MAAM,UAE6B;AAEzC,MAAM,aAAa,GAEtB,CAAC,KAAK,EAAE,EAAE,CAAC,yCAAI,KAAK,CAAC,QAAQ,CAAK,CAAA;AAFzB,QAAA,aAAa,iBAEY;AAE/B,MAAM,eAAe,GAExB,CAAC,KAAK,EAAE,EAAE,CAAC,2CAAM,KAAK,CAAC,QAAQ,CAAO,CAAA;AAF7B,QAAA,eAAe,mBAEc;AAEnC,MAAM,QAAQ,GAEjB,CAAC,KAAK,EAAE,EAAE,CAAC,0CAAK,KAAK,CAAC,QAAQ,CAAM,CAAA;AAF3B,QAAA,QAAQ,YAEmB;AAEjC,MAAM,WAAW,GAEpB,CAAC,KAAK,EAAE,EAAE,CAAC,CACb;IACE;QACE,sCAAI,OAAO,EAAE,IAAI,EAAE,SAAS,EAAC,kBAAkB,IAC5C,KAAK,CAAC,QAAQ,CACZ,CACF,CACC,CACT,CAAA;AAVY,QAAA,WAAW,eAUvB;AAEM,MAAM,YAAY,GAErB,CAAC,KAAK,EAAE,EAAE,CAAC,CACb,2CAAS,SAAS,EAAC,0FAA0F,IAC1G,KAAK,CAAC,QAAQ,CACP,CACX,CAAA;AANY,QAAA,YAAY,gBAMxB"}
@@ -29,6 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.ComponentsContext = void 0;
30
30
  const react_1 = __importStar(require("react"));
31
31
  const Recommended_1 = __importDefault(require("../content-tree/Recommended"));
32
+ const RecommendedList_1 = __importDefault(require("../content-tree/RecommendedList"));
32
33
  const ImageSet_1 = __importStar(require("../content-tree/ImageSet"));
33
34
  const Layout_1 = require("../content-tree/Layout");
34
35
  const Pullquote_1 = __importDefault(require("../content-tree/Pullquote"));
@@ -76,6 +77,7 @@ const componentMap = {
76
77
  pullquote: Pullquote_1.default,
77
78
  'raw-image': ImageSet_1.FallbackImage,
78
79
  recommended: Recommended_1.default,
80
+ 'recommended-list': RecommendedList_1.default,
79
81
  'scrolly-block': Scrollytelling_1.ScrollyBlock,
80
82
  'scrolly-copy': Scrollytelling_1.ScrollyCopy,
81
83
  'scrolly-heading': Scrollytelling_1.ScrollyHeading,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/RichText/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/RichText/index.tsx"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@ const Headline = ({ headline, showPremiumLabel = false, isLargeHeadline = false,
15
15
  });
16
16
  return (react_1.default.createElement("h1", { className: headlineClassnames },
17
17
  react_1.default.createElement("span", { className: "headline__text" }, headline),
18
- showPremiumLabel && (react_1.default.createElement("span", { className: "headline__premium-badge o-labels o-labels--content-premium" }, "Premium"))));
18
+ showPremiumLabel && (react_1.default.createElement("span", { className: "headline__premium-badge o-labels o-labels--small o-labels--content-premium" }, "Premium"))));
19
19
  };
20
20
  exports.default = Headline;
21
21
  //# sourceMappingURL=Headline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Headline.js","sourceRoot":"","sources":["../../../src/components/Topper/Headline.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,4DAAmC;AAQnC,MAAM,QAAQ,GAA4B,CAAC,EACzC,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,eAAe,GAAG,KAAK,GACxB,EAAE,EAAE;IACH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,6DAAK,CAAA;IACd,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAA,oBAAU,EAAC;QACpC,oBAAoB,EAAE,IAAI;QAC1B,CAAC,2BAA2B,CAAC,EAAE,eAAe;KAC/C,CAAC,CAAA;IAEF,OAAO,CACL,sCAAI,SAAS,EAAE,kBAAkB;QAC/B,wCAAM,SAAS,EAAC,gBAAgB,IAAE,QAAQ,CAAQ;QACjD,gBAAgB,IAAI,CACnB,wCAAM,SAAS,EAAC,4DAA4D,cAErE,CACR,CACE,CACN,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"Headline.js","sourceRoot":"","sources":["../../../src/components/Topper/Headline.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AACzB,4DAAmC;AAQnC,MAAM,QAAQ,GAA4B,CAAC,EACzC,QAAQ,EACR,gBAAgB,GAAG,KAAK,EACxB,eAAe,GAAG,KAAK,GACxB,EAAE,EAAE;IACH,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,6DAAK,CAAA;IACd,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAA,oBAAU,EAAC;QACpC,oBAAoB,EAAE,IAAI;QAC1B,CAAC,2BAA2B,CAAC,EAAE,eAAe;KAC/C,CAAC,CAAA;IAEF,OAAO,CACL,sCAAI,SAAS,EAAE,kBAAkB;QAC/B,wCAAM,SAAS,EAAC,gBAAgB,IAAE,QAAQ,CAAQ;QACjD,gBAAgB,IAAI,CACnB,wCAAM,SAAS,EAAC,4EAA4E,cAErF,CACR,CACE,CACN,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,QAAQ,CAAA"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import { ContentProps } from '../../types';
3
+ import type * as ComponentWorkarounds from '../Workarounds';
4
+ interface RecommendedListProps extends ContentProps<ComponentWorkarounds.RecommendedList> {
5
+ }
6
+ declare const RecommendedList: React.FC<RecommendedListProps>;
7
+ export default RecommendedList;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const react_1 = __importDefault(require("react"));
7
+ //HACK: worked around missing Teaser type by declaring a module x-teaser.d.ts
8
+ const x_teaser_1 = require("@financial-times/x-teaser");
9
+ const RecommendedList = ({ content: { heading, teasers }, }) => {
10
+ if (!teasers || teasers.length === 0) {
11
+ return null;
12
+ }
13
+ return (react_1.default.createElement("aside", { "aria-labelledby": "aside-label", className: "n-content-recommended-list", "data-component": "recommended-list" },
14
+ react_1.default.createElement("p", { className: "n-content-recommended-list__title o3-type-title-lg" }, heading),
15
+ react_1.default.createElement("div", { className: "n-content-recommended-list__teasers" }, teasers.map((teaser, index) => (react_1.default.createElement(x_teaser_1.Teaser, { key: teaser?.id || index, modifiers: ['stacked'], ...x_teaser_1.presets.SmallHeavy, ...teaser, metaPrefixText: 'By', metaLink: {
16
+ prefLabel: teaser?.clientName,
17
+ // clientName is a free form text field. Currently, there is no way to map it to an organisation
18
+ // from the annotations. For now, we're linking it to the article url.
19
+ // A property like isSponsoredBy could be added in future to support this properly.
20
+ url: teaser?.url,
21
+ } }))))));
22
+ };
23
+ exports.default = RecommendedList;
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/content-tree/RecommendedList/index.tsx"],"names":[],"mappings":";;;;;AAAA,kDAAyB;AAEzB,6EAA6E;AAC7E,wDAA2D;AAW3D,MAAM,eAAe,GAAmC,CAAC,EACvD,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAC9B,EAAE,EAAE;IACH,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,4DACkB,aAAa,EAC7B,SAAS,EAAC,4BAA4B,oBACvB,kBAAkB;QAEjC,qCAAG,SAAS,EAAC,oDAAoD,IAC9D,OAAO,CACN;QACJ,uCAAK,SAAS,EAAC,qCAAqC,IACjD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAC9B,8BAAC,iBAAM,IACL,GAAG,EAAE,MAAM,EAAE,EAAE,IAAI,KAAK,EACxB,SAAS,EAAE,CAAC,SAAS,CAAC,KAClB,kBAAO,CAAC,UAAU,KAClB,MAAM,EACV,cAAc,EAAE,IAAI,EACpB,QAAQ,EAAE;gBACR,SAAS,EAAE,MAAM,EAAE,UAAU;gBAC7B,gGAAgG;gBAChG,sEAAsE;gBACtE,mFAAmF;gBACnF,GAAG,EAAE,MAAM,EAAE,GAAG;aACjB,GACD,CACH,CAAC,CACE,CACA,CACT,CAAA;AACH,CAAC,CAAA;AAED,kBAAe,eAAe,CAAA"}
@@ -33,6 +33,10 @@ export type Teaser = PartialToMaybeDeep<LiteralToPrimitiveDeep<SetOptional<SetFi
33
33
  export type Recommended = PartialToMaybe<ContentTreeWorkarounds.Recommended & {
34
34
  teaser?: Teaser;
35
35
  }>;
36
+ export type RecommendedList = PartialToMaybe<ReadonlyArrays<Omit<ContentTree.RecommendedList, 'children'> & {
37
+ teasers?: (Teaser | null)[];
38
+ children: Recommended[];
39
+ }>>;
36
40
  export type ImageSetPicture = PartialToMaybe<ReadonlyArrays<SetOptional<SetFieldType<SetFieldType<ContentTree.ImageSetPicture, 'fallbackImage', Image>, 'images', Image[]>, 'caption' | 'credit'>>>;
37
41
  export type ImageSet = PartialToMaybe<SetOptional<SetFieldType<ContentTree.ImageSet | ContentTree.LayoutImage, 'picture', ImageSetPicture>, 'picture'>>;
38
42
  export type ScrollyImage = PartialToMaybe<SetOptional<SetFieldType<ContentTree.ScrollyImage, 'picture', ImageSetPicture>, 'picture'>>;
package/lib/index.d.ts CHANGED
@@ -18,6 +18,7 @@ export { Layout, LayoutContainer, LayoutSlot, } from './components/content-tree/
18
18
  export { default as Paragraph } from './components/content-tree/Paragraph';
19
19
  export { default as Pullquote } from './components/content-tree/Pullquote/index';
20
20
  export { default as Recommended } from './components/content-tree/Recommended';
21
+ export { default as RecommendedList } from './components/content-tree/RecommendedList';
21
22
  export { ScrollyBlock } from './components/content-tree/Scrollytelling';
22
23
  export { default as Table } from './components/content-tree/Table';
23
24
  export { default as Tweet } from './components/content-tree/Tweet';
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.PresentationOverridesContext = exports.PresentationFlagsContext = exports.CccFallbackText = exports.Cite = exports.Strikethrough = exports.Strong = exports.Emphasis = exports.HorizontalRule = exports.LineBreak = exports.Blockquote = exports.Link = exports.ListItem = exports.List = exports.YoutubeVideo = exports.Video = exports.Tweet = exports.Table = exports.ScrollyBlock = exports.Recommended = exports.Pullquote = exports.Paragraph = exports.LayoutSlot = exports.LayoutContainer = exports.Layout = exports.Clip = exports.ImageSet = exports.Heading = exports.Flourish = exports.CustomCodeComponent = exports.BigNumber = exports.RichText = exports.PodcastBody = exports.LiveBlogBody = exports.ArticleBody = exports.Body = exports.Topper = exports.MainImage = exports.LiveBlogWrapper = exports.Byline = exports.ArticleInfo = void 0;
6
+ exports.PresentationOverridesContext = exports.PresentationFlagsContext = exports.CccFallbackText = exports.Cite = exports.Strikethrough = exports.Strong = exports.Emphasis = exports.HorizontalRule = exports.LineBreak = exports.Blockquote = exports.Link = exports.ListItem = exports.List = exports.YoutubeVideo = exports.Video = exports.Tweet = exports.Table = exports.ScrollyBlock = exports.RecommendedList = exports.Recommended = exports.Pullquote = exports.Paragraph = exports.LayoutSlot = exports.LayoutContainer = exports.Layout = exports.Clip = exports.ImageSet = exports.Heading = exports.Flourish = exports.CustomCodeComponent = exports.BigNumber = exports.RichText = exports.PodcastBody = exports.LiveBlogBody = exports.ArticleBody = exports.Body = exports.Topper = exports.MainImage = exports.LiveBlogWrapper = exports.Byline = exports.ArticleInfo = void 0;
7
7
  var ArticleInfo_1 = require("./components/ArticleInfo");
8
8
  Object.defineProperty(exports, "ArticleInfo", { enumerable: true, get: function () { return __importDefault(ArticleInfo_1).default; } });
9
9
  var Byline_1 = require("./components/Byline");
@@ -46,6 +46,8 @@ var index_1 = require("./components/content-tree/Pullquote/index");
46
46
  Object.defineProperty(exports, "Pullquote", { enumerable: true, get: function () { return __importDefault(index_1).default; } });
47
47
  var Recommended_1 = require("./components/content-tree/Recommended");
48
48
  Object.defineProperty(exports, "Recommended", { enumerable: true, get: function () { return __importDefault(Recommended_1).default; } });
49
+ var RecommendedList_1 = require("./components/content-tree/RecommendedList");
50
+ Object.defineProperty(exports, "RecommendedList", { enumerable: true, get: function () { return __importDefault(RecommendedList_1).default; } });
49
51
  var Scrollytelling_1 = require("./components/content-tree/Scrollytelling");
50
52
  Object.defineProperty(exports, "ScrollyBlock", { enumerable: true, get: function () { return Scrollytelling_1.ScrollyBlock; } });
51
53
  var Table_1 = require("./components/content-tree/Table");
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAiE;AAAxD,2HAAA,OAAO,OAAe;AAC/B,8CAAuD;AAA9C,iHAAA,OAAO,OAAU;AAC1B,gEAA8D;AAArD,kHAAA,eAAe,OAAA;AACxB,oDAA6D;AAApD,uHAAA,OAAO,OAAa;AAC7B,8CAAuD;AAA9C,iHAAA,OAAO,OAAU;AAE1B,0CAAmD;AAA1C,6GAAA,OAAO,OAAQ;AACxB,wEAAiF;AAAxE,2HAAA,OAAO,OAAe;AAC/B,0EAAmF;AAA1E,6HAAA,OAAO,OAAgB;AAChC,wEAAiF;AAAxE,2HAAA,OAAO,OAAe;AAE/B,kDAA2D;AAAlD,qHAAA,OAAO,OAAY;AAC5B,iEAA0E;AAAjE,uHAAA,OAAO,OAAa;AAC7B,qFAA8F;AAArF,2IAAA,OAAO,OAAuB;AACvC,+DAAwE;AAA/D,qHAAA,OAAO,OAAY;AAC5B,6DAAsE;AAA7D,mHAAA,OAAO,OAAW;AAC3B,+DAAwE;AAA/D,qHAAA,OAAO,OAAY;AAC5B,+EAAmF;AAA1E,kHAAA,OAAO,OAAQ;AACxB,2DAIyC;AAHvC,gGAAA,MAAM,OAAA;AACN,yGAAA,eAAe,OAAA;AACf,oGAAA,UAAU,OAAA;AAEZ,iEAA0E;AAAjE,uHAAA,OAAO,OAAa;AAC7B,mEAAgF;AAAvE,mHAAA,OAAO,OAAa;AAC7B,qEAA8E;AAArE,2HAAA,OAAO,OAAe;AAC/B,2EAAuE;AAA9D,8GAAA,YAAY,OAAA;AACrB,yDAAkE;AAAzD,+GAAA,OAAO,OAAS;AACzB,yDAAkE;AAAzD,+GAAA,OAAO,OAAS;AACzB,yDAAkE;AAAzD,+GAAA,OAAO,OAAS;AACzB,uEAAgF;AAAvE,6HAAA,OAAO,OAAgB;AAChC,yEAY8C;AAX5C,uGAAA,IAAI,OAAA;AACJ,2GAAA,QAAQ,OAAA;AACR,uGAAA,IAAI,OAAA;AACJ,6GAAA,UAAU,OAAA;AACV,4GAAA,SAAS,OAAA;AACT,iHAAA,cAAc,OAAA;AACd,2GAAA,QAAQ,OAAA;AACR,yGAAA,MAAM,OAAA;AACN,gHAAA,aAAa,OAAA;AACb,uGAAA,IAAI,OAAA;AACJ,kHAAA,eAAe,OAAA;AAGjB,qCAGkB;AAFhB,mHAAA,wBAAwB,OAAA;AACxB,uHAAA,4BAA4B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,wDAAiE;AAAxD,2HAAA,OAAO,OAAe;AAC/B,8CAAuD;AAA9C,iHAAA,OAAO,OAAU;AAC1B,gEAA8D;AAArD,kHAAA,eAAe,OAAA;AACxB,oDAA6D;AAApD,uHAAA,OAAO,OAAa;AAC7B,8CAAuD;AAA9C,iHAAA,OAAO,OAAU;AAE1B,0CAAmD;AAA1C,6GAAA,OAAO,OAAQ;AACxB,wEAAiF;AAAxE,2HAAA,OAAO,OAAe;AAC/B,0EAAmF;AAA1E,6HAAA,OAAO,OAAgB;AAChC,wEAAiF;AAAxE,2HAAA,OAAO,OAAe;AAE/B,kDAA2D;AAAlD,qHAAA,OAAO,OAAY;AAC5B,iEAA0E;AAAjE,uHAAA,OAAO,OAAa;AAC7B,qFAA8F;AAArF,2IAAA,OAAO,OAAuB;AACvC,+DAAwE;AAA/D,qHAAA,OAAO,OAAY;AAC5B,6DAAsE;AAA7D,mHAAA,OAAO,OAAW;AAC3B,+DAAwE;AAA/D,qHAAA,OAAO,OAAY;AAC5B,+EAAmF;AAA1E,kHAAA,OAAO,OAAQ;AACxB,2DAIyC;AAHvC,gGAAA,MAAM,OAAA;AACN,yGAAA,eAAe,OAAA;AACf,oGAAA,UAAU,OAAA;AAEZ,iEAA0E;AAAjE,uHAAA,OAAO,OAAa;AAC7B,mEAAgF;AAAvE,mHAAA,OAAO,OAAa;AAC7B,qEAA8E;AAArE,2HAAA,OAAO,OAAe;AAC/B,6EAAsF;AAA7E,mIAAA,OAAO,OAAmB;AACnC,2EAAuE;AAA9D,8GAAA,YAAY,OAAA;AACrB,yDAAkE;AAAzD,+GAAA,OAAO,OAAS;AACzB,yDAAkE;AAAzD,+GAAA,OAAO,OAAS;AACzB,yDAAkE;AAAzD,+GAAA,OAAO,OAAS;AACzB,uEAAgF;AAAvE,6HAAA,OAAO,OAAgB;AAChC,yEAY8C;AAX5C,uGAAA,IAAI,OAAA;AACJ,2GAAA,QAAQ,OAAA;AACR,uGAAA,IAAI,OAAA;AACJ,6GAAA,UAAU,OAAA;AACV,4GAAA,SAAS,OAAA;AACT,iHAAA,cAAc,OAAA;AACd,2GAAA,QAAQ,OAAA;AACR,yGAAA,MAAM,OAAA;AACN,gHAAA,aAAa,OAAA;AACb,uGAAA,IAAI,OAAA;AACJ,kHAAA,eAAe,OAAA;AAGjB,qCAGkB;AAFhB,mHAAA,wBAAwB,OAAA;AACxB,uHAAA,4BAA4B,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@financial-times/cp-content-pipeline-ui",
3
- "version": "9.7.2",
3
+ "version": "9.9.0",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -15,10 +15,10 @@
15
15
  "devDependencies": {
16
16
  "@babel/preset-env": "^7.22.5",
17
17
  "@babel/preset-react": "^7.22.5",
18
- "@financial-times/content-tree": "github:financial-times/content-tree#8275704",
19
- "@financial-times/cp-content-pipeline-client": "^4.16.2",
20
- "@financial-times/cp-content-pipeline-schema": "^3.15.2",
21
- "@financial-times/cp-content-pipeline-styles": "^4.2.1",
18
+ "@financial-times/content-tree": "github:financial-times/content-tree#3f77ec4",
19
+ "@financial-times/cp-content-pipeline-client": "^4.18.0",
20
+ "@financial-times/cp-content-pipeline-schema": "^3.17.0",
21
+ "@financial-times/cp-content-pipeline-styles": "^4.4.0",
22
22
  "@financial-times/n-scrollytelling-image": "^1.1.0",
23
23
  "@financial-times/o-grid": "^6.1.8",
24
24
  "@financial-times/o-share": "^11.0.0",
@@ -53,7 +53,7 @@
53
53
  "@dotcom-tool-kit/npm": "^4.2.11",
54
54
  "@financial-times/ft-date-format": "^2.1.0",
55
55
  "@financial-times/o-expander": "^7.0.1",
56
- "@financial-times/o-labels": "^7.0.2",
56
+ "@financial-times/o-labels": "^7.1.2",
57
57
  "@financial-times/o-loading": "^6.0.0",
58
58
  "@financial-times/o-teaser": "^7.1.5",
59
59
  "@financial-times/o-visual-effects": "^5.0.1",
@@ -1,5 +1,5 @@
1
1
  import React from 'react'
2
- import { TooltipToggle } from '@financial-times/o3-tooltip'
2
+ import { TooltipToggle } from '@financial-times/o3-tooltip/cjs'
3
3
 
4
4
  const PartnerContentHeader = ({
5
5
  name = 'Partner',
@@ -19,7 +19,12 @@ export const ListItem: React.FC<
19
19
  export const Link: React.FC<
20
20
  React.PropsWithChildren<ContentProps<ContentTree.Link>>
21
21
  > = (props) => (
22
- <a href={props.content.url} title={props.content.title}>
22
+ <a
23
+ href={props.content.url}
24
+ title={props.content.title}
25
+ className={props.content.styleType}
26
+ data-trackable="link"
27
+ >
23
28
  {props.children}
24
29
  </a>
25
30
  )
@@ -7,6 +7,7 @@ import React, {
7
7
 
8
8
  import type { ContentTree } from '@financial-times/content-tree'
9
9
  import Recommended from '../content-tree/Recommended'
10
+ import RecommendedList from '../content-tree/RecommendedList'
10
11
  import ImageSet, { FallbackImage } from '../content-tree/ImageSet'
11
12
  import { Layout, LayoutSlot } from '../content-tree/Layout'
12
13
  import Pullquote from '../content-tree/Pullquote'
@@ -125,6 +126,7 @@ const componentMap: RichTextComponentMapRecord = {
125
126
  pullquote: Pullquote,
126
127
  'raw-image': FallbackImage,
127
128
  recommended: Recommended,
129
+ 'recommended-list': RecommendedList,
128
130
  'scrolly-block': ScrollyBlock,
129
131
  'scrolly-copy': ScrollyCopy,
130
132
  'scrolly-heading': ScrollyHeading,
@@ -25,7 +25,7 @@ const Headline: React.FC<HeadlineProps> = ({
25
25
  <h1 className={headlineClassnames}>
26
26
  <span className="headline__text">{headline}</span>
27
27
  {showPremiumLabel && (
28
- <span className="headline__premium-badge o-labels o-labels--content-premium">
28
+ <span className="headline__premium-badge o-labels o-labels--small o-labels--content-premium">
29
29
  Premium
30
30
  </span>
31
31
  )}
@@ -52,4 +52,8 @@
52
52
  }
53
53
  }
54
54
  }
55
- }
55
+ }
56
+
57
+ .headline__premium-badge {
58
+ vertical-align: middle;
59
+ }
@@ -0,0 +1,53 @@
1
+ import React from 'react'
2
+
3
+ //HACK: worked around missing Teaser type by declaring a module x-teaser.d.ts
4
+ import { presets, Teaser } from '@financial-times/x-teaser'
5
+ import { ContentProps } from '../../types'
6
+ import type * as ComponentWorkarounds from '../Workarounds'
7
+
8
+ // Renders a Recommended teaser component
9
+ // `<Teaser>` is imported from x-dash
10
+ // https://github.com/Financial-Times/x-dash/tree/main/components/x-teaser)
11
+
12
+ interface RecommendedListProps
13
+ extends ContentProps<ComponentWorkarounds.RecommendedList> {}
14
+
15
+ const RecommendedList: React.FC<RecommendedListProps> = ({
16
+ content: { heading, teasers },
17
+ }) => {
18
+ if (!teasers || teasers.length === 0) {
19
+ return null
20
+ }
21
+
22
+ return (
23
+ <aside
24
+ aria-labelledby="aside-label"
25
+ className="n-content-recommended-list"
26
+ data-component="recommended-list"
27
+ >
28
+ <p className="n-content-recommended-list__title o3-type-title-lg">
29
+ {heading}
30
+ </p>
31
+ <div className="n-content-recommended-list__teasers">
32
+ {teasers.map((teaser, index) => (
33
+ <Teaser
34
+ key={teaser?.id || index}
35
+ modifiers={['stacked']}
36
+ {...presets.SmallHeavy}
37
+ {...teaser}
38
+ metaPrefixText={'By'}
39
+ metaLink={{
40
+ prefLabel: teaser?.clientName,
41
+ // clientName is a free form text field. Currently, there is no way to map it to an organisation
42
+ // from the annotations. For now, we're linking it to the article url.
43
+ // A property like isSponsoredBy could be added in future to support this properly.
44
+ url: teaser?.url,
45
+ }}
46
+ />
47
+ ))}
48
+ </div>
49
+ </aside>
50
+ )
51
+ }
52
+
53
+ export default RecommendedList
@@ -87,11 +87,21 @@ export type Teaser = PartialToMaybeDeep<
87
87
  >
88
88
 
89
89
  export type Recommended = PartialToMaybe<
90
- ContentTreeWorkarounds.Recommended & {
90
+ ContentTreeWorkarounds.Recommended & {
91
91
  teaser?: Teaser
92
92
  }
93
93
  >
94
94
 
95
+ export type RecommendedList = PartialToMaybe<
96
+ ReadonlyArrays<
97
+ Omit<ContentTree.RecommendedList, 'children'> & {
98
+ teasers?: (Teaser | null)[]
99
+ children: Recommended[]
100
+ }
101
+ >
102
+
103
+ >
104
+
95
105
  export type ImageSetPicture = PartialToMaybe<
96
106
  ReadonlyArrays<
97
107
  SetOptional<
package/src/index.ts CHANGED
@@ -24,6 +24,7 @@ export {
24
24
  export { default as Paragraph } from './components/content-tree/Paragraph'
25
25
  export { default as Pullquote } from './components/content-tree/Pullquote/index'
26
26
  export { default as Recommended } from './components/content-tree/Recommended'
27
+ export { default as RecommendedList } from './components/content-tree/RecommendedList'
27
28
  export { ScrollyBlock } from './components/content-tree/Scrollytelling'
28
29
  export { default as Table } from './components/content-tree/Table'
29
30
  export { default as Tweet } from './components/content-tree/Tweet'