@desynova-digital/components 9.2.30 → 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.
@@ -331,6 +331,7 @@ var ThumbnailV2 = function ThumbnailV2(props) {
331
331
  var durationValue = resolvedDuration === undefined || resolvedDuration === null ? "" : String(resolvedDuration).trim();
332
332
  var hasDuration = Boolean(durationValue) && (hasTimecodeFormat(durationValue) || Number.isFinite(Number(durationValue)));
333
333
  var displayDuration = hasDuration ? getDisplayTimecode(durationValue, effectiveFrameRate) : "";
334
+ var supportsDuration = ["audio", "video"].includes(String(file_type || "").trim().toLowerCase());
334
335
  var displayAssetType = asset_type === undefined || asset_type === null ? "" : String(asset_type).trim();
335
336
  var actionItems = Array.isArray(actions) ? actions : [];
336
337
  var isSegmentCard = Boolean(isSegment || is_segment);
@@ -557,7 +558,7 @@ var ThumbnailV2 = function ThumbnailV2(props) {
557
558
  className: "iframe-image",
558
559
  src: iframeurl,
559
560
  alt: "preview"
560
- })) || null, isSearchPageCard && displayDuration ? /*#__PURE__*/_react["default"].createElement(DurationBadge, null, displayDuration) : null);
561
+ })) || null, isSearchPageCard && supportsDuration && displayDuration ? /*#__PURE__*/_react["default"].createElement(DurationBadge, null, displayDuration) : null);
561
562
  };
562
563
  ThumbnailV2.propTypes = {
563
564
  theme: _propTypes["default"].oneOf(["light", "dark", "nexc"]),
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _pageSearchCard = _interopRequireDefault(require("./pageSearchCard"));
9
+ var _default = exports["default"] = _pageSearchCard["default"];
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+ var _styledComponents = _interopRequireDefault(require("styled-components"));
14
+ var _tokens = require("@desynova-digital/tokens");
15
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
18
+ var getSearchAccent = function getSearchAccent(theme) {
19
+ var _colors$theme, _colors$theme$searchH, _colors$dark, _colors$dark$searchHe;
20
+ return ((_colors$theme = _tokens.colors[theme]) === null || _colors$theme === void 0 ? void 0 : (_colors$theme$searchH = _colors$theme.searchHeader) === null || _colors$theme$searchH === void 0 ? void 0 : _colors$theme$searchH.mainColor) || ((_colors$dark = _tokens.colors.dark) === null || _colors$dark === void 0 ? void 0 : (_colors$dark$searchHe = _colors$dark.searchHeader) === null || _colors$dark$searchHe === void 0 ? void 0 : _colors$dark$searchHe.mainColor);
21
+ };
22
+ var FALLBACK_IMAGE = 'https://ctngcthumbnailprod.contido.io/showpage_fallback.png';
23
+ var capitalizeFirstLetter = function capitalizeFirstLetter(value) {
24
+ if (typeof value !== 'string' || !value) return value;
25
+ return "".concat(value.charAt(0).toUpperCase()).concat(value.slice(1));
26
+ };
27
+ var Card = _styledComponents["default"].div(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2["default"])(["\n position: relative;\n width: ", ";\n height: ", ";\n border-radius: 10px;\n overflow: visible;\n cursor: pointer;\n background: #0c141d;\n flex-shrink: 0;\n box-sizing: border-box;\n box-shadow: 0 8px 16px rgba(0, 0, 0, 0.18);\n transform: scale(1);\n transform-origin: center;\n z-index: 0;\n isolation: isolate;\n transition: transform 240ms cubic-bezier(0.16, 1, 0.3, 1), box-shadow 240ms cubic-bezier(0.16, 1, 0.3, 1);\n will-change: transform;\n\n &:hover {\n transform: scale(1.035);\n z-index: 5;\n box-shadow: 0 22px 60px rgba(0, 0, 0, 0.6);\n }\n"])), function (_ref) {
28
+ var width = _ref.width;
29
+ return width || '178px';
30
+ }, function (_ref2) {
31
+ var height = _ref2.height;
32
+ return height || '258px';
33
+ });
34
+ var Poster = _styledComponents["default"].img(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2["default"])(["\n width: 100%;\n height: 100%;\n object-fit: cover;\n object-position: center;\n display: block;\n background: #0c141d;\n border-radius: inherit;\n\n &.fallback-image {\n object-fit: cover;\n object-position: center;\n }\n"])));
35
+ var Gradient = _styledComponents["default"].div(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n inset: 0;\n border-radius: inherit;\n background: linear-gradient(180deg, rgba(0, 0, 0, 0) 30%, rgba(12, 20, 29, 0.7) 60%, rgba(12, 20, 29, 0.97) 100%);\n"])));
36
+ var Badge = _styledComponents["default"].div(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n top: 12px;\n left: 12px;\n display: inline-flex;\n height: 16.75px;\n padding: 2px 6px;\n align-items: center;\n justify-content: center;\n font-family: 'SFUIText-Medium';\n border-radius: 4px;\n background: ", ";\n color: #0c141d;\n font-size: 10px;\n font-weight: 700;\n line-height: 1;\n letter-spacing: 0.6px;\n text-transform: uppercase;\n z-index: 2;\n"])), function (_ref3) {
37
+ var theme = _ref3.theme;
38
+ return getSearchAccent(theme);
39
+ });
40
+ var Content = _styledComponents["default"].div(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["\n position: absolute;\n left: 16px;\n right: 16px;\n bottom: 16px;\n z-index: 2;\n"])));
41
+ var Title = _styledComponents["default"].h3(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 0;\n color: #fff;\n font-family: 'SFUIText-Medium';\n font-size: 13px;\n font-style: normal;\n font-weight: 700;\n line-height: 18px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
42
+ var Subtitle = _styledComponents["default"].p(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["\n margin: 2px 0 0;\n color: #5b7088;\n font-family: 'SFUIText-Medium';\n font-size: 10px;\n font-style: normal;\n font-weight: 400;\n line-height: 15px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n"])));
43
+ var PageSearchCard = function PageSearchCard(_ref4) {
44
+ var thumbnail = _ref4.thumbnail,
45
+ show_name = _ref4.show_name,
46
+ asset_language = _ref4.asset_language,
47
+ asset_type = _ref4.asset_type,
48
+ channel_name = _ref4.channel_name,
49
+ _ref4$title = _ref4.title,
50
+ title = _ref4$title === void 0 ? 'Ghazi Attack' : _ref4$title,
51
+ _ref4$subtitle = _ref4.subtitle,
52
+ subtitle = _ref4$subtitle === void 0 ? 'Star Plus' : _ref4$subtitle,
53
+ _ref4$tag = _ref4.tag,
54
+ tag = _ref4$tag === void 0 ? 'MOVIE' : _ref4$tag,
55
+ _ref4$theme = _ref4.theme,
56
+ theme = _ref4$theme === void 0 ? 'dark' : _ref4$theme,
57
+ _ref4$width = _ref4.width,
58
+ width = _ref4$width === void 0 ? '220px' : _ref4$width,
59
+ _ref4$height = _ref4.height,
60
+ height = _ref4$height === void 0 ? '292px' : _ref4$height,
61
+ onClick = _ref4.onClick;
62
+ var effectiveTitle = show_name || title;
63
+ var effectiveTag = asset_type || tag;
64
+ var normalizedAssetType = String(effectiveTag).toLowerCase();
65
+ var effectiveSubtitle = subtitle;
66
+ if (normalizedAssetType === 'movie') {
67
+ effectiveSubtitle = capitalizeFirstLetter(asset_language || '');
68
+ } else if (normalizedAssetType === 'show') {
69
+ effectiveSubtitle = channel_name || '';
70
+ }
71
+ var _useState = (0, _react.useState)(!thumbnail),
72
+ _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
73
+ hasImageError = _useState2[0],
74
+ setHasImageError = _useState2[1];
75
+ (0, _react.useEffect)(function () {
76
+ setHasImageError(!thumbnail);
77
+ }, [thumbnail]);
78
+ var imageSource = hasImageError ? FALLBACK_IMAGE : thumbnail;
79
+ return /*#__PURE__*/_react["default"].createElement(Card, {
80
+ width: width,
81
+ height: height,
82
+ theme: theme,
83
+ onClick: onClick
84
+ }, /*#__PURE__*/_react["default"].createElement(Poster, {
85
+ src: imageSource,
86
+ alt: effectiveTitle,
87
+ className: hasImageError ? 'fallback-image' : undefined,
88
+ onError: function onError() {
89
+ if (!hasImageError) setHasImageError(true);
90
+ }
91
+ }), /*#__PURE__*/_react["default"].createElement(Gradient, null), /*#__PURE__*/_react["default"].createElement(Badge, {
92
+ theme: theme
93
+ }, effectiveTag), /*#__PURE__*/_react["default"].createElement(Content, null, /*#__PURE__*/_react["default"].createElement(Title, null, effectiveTitle), effectiveSubtitle ? /*#__PURE__*/_react["default"].createElement(Subtitle, null, effectiveSubtitle) : null));
94
+ };
95
+ PageSearchCard.propTypes = {
96
+ thumbnail: _propTypes["default"].string,
97
+ show_name: _propTypes["default"].string,
98
+ asset_language: _propTypes["default"].string,
99
+ asset_type: _propTypes["default"].string,
100
+ channel_name: _propTypes["default"].string,
101
+ title: _propTypes["default"].string,
102
+ subtitle: _propTypes["default"].string,
103
+ tag: _propTypes["default"].string,
104
+ theme: _propTypes["default"].string,
105
+ width: _propTypes["default"].string,
106
+ height: _propTypes["default"].string,
107
+ onClick: _propTypes["default"].func
108
+ };
109
+ var _default = exports["default"] = PageSearchCard;
package/components.js CHANGED
@@ -227,6 +227,12 @@ Object.defineProperty(exports, "PageHeader", {
227
227
  return _pageHeader["default"];
228
228
  }
229
229
  });
230
+ Object.defineProperty(exports, "PageSearchCard", {
231
+ enumerable: true,
232
+ get: function get() {
233
+ return _pageSearchCard["default"];
234
+ }
235
+ });
230
236
  Object.defineProperty(exports, "Pagination", {
231
237
  enumerable: true,
232
238
  get: function get() {
@@ -375,6 +381,7 @@ var _icon = _interopRequireWildcard(require("./atoms/icon"));
375
381
  var _dateTime = _interopRequireDefault(require("./atoms/dateTime"));
376
382
  var _card = _interopRequireDefault(require("./atoms/card"));
377
383
  var _cardV = _interopRequireDefault(require("./atoms/cardV2"));
384
+ var _pageSearchCard = _interopRequireDefault(require("./atoms/pageSearchCard"));
378
385
  var _videoCard = _interopRequireDefault(require("./atoms/videoCard"));
379
386
  var _inputText = _interopRequireDefault(require("./atoms/inputText"));
380
387
  var _textarea = _interopRequireDefault(require("./atoms/textarea"));
package/index.js CHANGED
@@ -225,6 +225,12 @@ Object.defineProperty(exports, "PageHeader", {
225
225
  return _components.PageHeader;
226
226
  }
227
227
  });
228
+ Object.defineProperty(exports, "PageSearchCard", {
229
+ enumerable: true,
230
+ get: function get() {
231
+ return _components.PageSearchCard;
232
+ }
233
+ });
228
234
  Object.defineProperty(exports, "Pagination", {
229
235
  enumerable: true,
230
236
  get: function get() {
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@desynova-digital/components",
3
- "version": "9.2.30",
3
+ "version": "9.3.0",
4
4
  "description": "Components for Desynova Digital",
5
5
  "main": "index.js",
6
6
  "author": "desynova-digital",
7
7
  "license": "MIT",
8
8
  "repository": "desynova-digital",
9
9
  "dependencies": {
10
- "@desynova-digital/tokens": "9.2.30",
10
+ "@desynova-digital/tokens": "9.3.0",
11
11
  "prop-types": "^15.7.2",
12
12
  "styled-components": "^4.3.2"
13
13
  },