@royaloperahouse/harmonic 0.2.3-c → 0.2.3-d
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 +0 -3
- package/dist/components/molecules/PromoWithTitle/PromoWithTitle.style.d.ts +3 -3
- package/dist/harmonic.cjs.development.js +71 -54
- package/dist/harmonic.cjs.development.js.map +1 -1
- package/dist/harmonic.cjs.production.min.js +1 -1
- package/dist/harmonic.cjs.production.min.js.map +1 -1
- package/dist/harmonic.esm.js +71 -54
- package/dist/harmonic.esm.js.map +1 -1
- package/dist/helpers/urls.d.ts +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/types/editorial.d.ts +4 -6
- package/dist/types/information.d.ts +2 -2
- package/dist/types/typography.d.ts +3 -8
- package/package.json +1 -1
package/dist/harmonic.esm.js
CHANGED
|
@@ -8361,11 +8361,55 @@ var ButtonsContainer$1 = /*#__PURE__*/styled.div(_templateObject14$2 || (_templa
|
|
|
8361
8361
|
return '';
|
|
8362
8362
|
});
|
|
8363
8363
|
|
|
8364
|
+
// Function to check if a URL is from the same site
|
|
8365
|
+
// NOTE: This function is not SSR compatible
|
|
8366
|
+
var isSameSiteUrl = function isSameSiteUrl(url) {
|
|
8367
|
+
var _window;
|
|
8368
|
+
if (url[0] === '/') return true; // URL is relative (e.g. /about)
|
|
8369
|
+
if (!((_window = window) != null && _window.location)) return false; // window.location is not available (e.g. in SSR)
|
|
8370
|
+
var currentPageURL = window.location.href || '';
|
|
8371
|
+
var regexPattern = /^(https?:\/\/)?(www\d?\.)?([\w.-]+)\.\w+.*$/;
|
|
8372
|
+
var match = url.match(regexPattern);
|
|
8373
|
+
if (match != null && match[3] && currentPageURL) {
|
|
8374
|
+
var urlDomain = match[3]; // Extract the domain from the third capture group
|
|
8375
|
+
var currentMatch = currentPageURL.match(regexPattern);
|
|
8376
|
+
if (currentMatch) {
|
|
8377
|
+
var currentDomain = currentMatch[3];
|
|
8378
|
+
return urlDomain === currentDomain;
|
|
8379
|
+
}
|
|
8380
|
+
}
|
|
8381
|
+
return false; // URL didn't match the pattern
|
|
8382
|
+
};
|
|
8383
|
+
// Hook to check if a URL is from the same site - use for SSR
|
|
8384
|
+
var useSameSiteUrl = function useSameSiteUrl(url) {
|
|
8385
|
+
var _useState = useState(false),
|
|
8386
|
+
hasSameSiteUrl = _useState[0],
|
|
8387
|
+
setSameSiteUrl = _useState[1];
|
|
8388
|
+
useEffect(function () {
|
|
8389
|
+
setSameSiteUrl(isSameSiteUrl(url));
|
|
8390
|
+
}, [url]);
|
|
8391
|
+
return hasSameSiteUrl;
|
|
8392
|
+
};
|
|
8393
|
+
var limitImageUrlDimension = function limitImageUrlDimension(imageUrl, widthLimit) {
|
|
8394
|
+
try {
|
|
8395
|
+
var url = new URL(imageUrl);
|
|
8396
|
+
var widthParam = url.searchParams.get('w') || url.searchParams.get('width');
|
|
8397
|
+
if (widthParam) {
|
|
8398
|
+
return imageUrl.replace(/(w|width)=\d+/, "$1=" + widthLimit);
|
|
8399
|
+
}
|
|
8400
|
+
var separator = url.search.includes('?') ? '&' : '?';
|
|
8401
|
+
return "" + imageUrl + separator + "w=" + widthLimit;
|
|
8402
|
+
} catch (error) {
|
|
8403
|
+
return imageUrl;
|
|
8404
|
+
}
|
|
8405
|
+
};
|
|
8406
|
+
|
|
8364
8407
|
var _excluded$k = ["text"],
|
|
8365
8408
|
_excluded2$3 = ["text"];
|
|
8366
8409
|
var _buttonTypeToButton$1;
|
|
8367
8410
|
var LENGTH_LARGE_TEXT$1 = 28;
|
|
8368
8411
|
var LENGTH_SMALL_TEXT$2 = 19;
|
|
8412
|
+
var IMAGE_WIDTH_LIMIT = 600;
|
|
8369
8413
|
var buttonTypeToButton$1 = (_buttonTypeToButton$1 = {}, _buttonTypeToButton$1[ButtonType.Primary] = PrimaryButton, _buttonTypeToButton$1[ButtonType.Secondary] = SecondaryButton, _buttonTypeToButton$1[ButtonType.Tertiary] = TertiaryButton, _buttonTypeToButton$1);
|
|
8370
8414
|
var Card = function Card(_ref) {
|
|
8371
8415
|
var _labelParams$color;
|
|
@@ -8431,6 +8475,7 @@ var Card = function Card(_ref) {
|
|
|
8431
8475
|
};
|
|
8432
8476
|
var FirstButtonComponent = firstButton != null && firstButton.buttonType ? buttonTypeToButton$1[firstButton.buttonType] : PrimaryButton;
|
|
8433
8477
|
var SecondButtonComponent = secondButton != null && secondButton.buttonType ? buttonTypeToButton$1[secondButton.buttonType] : TertiaryButton;
|
|
8478
|
+
var limitedImage = image ? limitImageUrlDimension(image, IMAGE_WIDTH_LIMIT) : image;
|
|
8434
8479
|
return /*#__PURE__*/React__default.createElement(CardContainer, {
|
|
8435
8480
|
onMouseOver: function onMouseOver() {
|
|
8436
8481
|
return onlyShowButtonsOnHover ? hoverHandler(true) : undefined;
|
|
@@ -8470,7 +8515,7 @@ var Card = function Card(_ref) {
|
|
|
8470
8515
|
}), /*#__PURE__*/React__default.createElement(ImageAspectRatioWrapper, {
|
|
8471
8516
|
aspectRatio: AspectRatio['4:3']
|
|
8472
8517
|
}, /*#__PURE__*/React__default.createElement("img", {
|
|
8473
|
-
src:
|
|
8518
|
+
src: limitedImage,
|
|
8474
8519
|
alt: imageAltText || title
|
|
8475
8520
|
})), withContinueWatching && (/*#__PURE__*/React__default.createElement(ProgressContainer, null, /*#__PURE__*/React__default.createElement(Progress, {
|
|
8476
8521
|
progress: progress,
|
|
@@ -9444,36 +9489,6 @@ var PrimaryButtonWithInversion = /*#__PURE__*/styled(PrimaryButton)(_templateObj
|
|
|
9444
9489
|
return invert ? theme.colors.white : theme.colors.black;
|
|
9445
9490
|
});
|
|
9446
9491
|
|
|
9447
|
-
// Function to check if a URL is from the same site
|
|
9448
|
-
// NOTE: This function is not SSR compatible
|
|
9449
|
-
var isSameSiteUrl = function isSameSiteUrl(url) {
|
|
9450
|
-
var _window;
|
|
9451
|
-
if (url[0] === '/') return true; // URL is relative (e.g. /about)
|
|
9452
|
-
if (!((_window = window) != null && _window.location)) return false; // window.location is not available (e.g. in SSR)
|
|
9453
|
-
var currentPageURL = window.location.href || '';
|
|
9454
|
-
var regexPattern = /^(https?:\/\/)?(www\d?\.)?([\w.-]+)\.\w+.*$/;
|
|
9455
|
-
var match = url.match(regexPattern);
|
|
9456
|
-
if (match != null && match[3] && currentPageURL) {
|
|
9457
|
-
var urlDomain = match[3]; // Extract the domain from the third capture group
|
|
9458
|
-
var currentMatch = currentPageURL.match(regexPattern);
|
|
9459
|
-
if (currentMatch) {
|
|
9460
|
-
var currentDomain = currentMatch[3];
|
|
9461
|
-
return urlDomain === currentDomain;
|
|
9462
|
-
}
|
|
9463
|
-
}
|
|
9464
|
-
return false; // URL didn't match the pattern
|
|
9465
|
-
};
|
|
9466
|
-
// Hook to check if a URL is from the same site - use for SSR
|
|
9467
|
-
var useSameSiteUrl = function useSameSiteUrl(url) {
|
|
9468
|
-
var _useState = useState(false),
|
|
9469
|
-
hasSameSiteUrl = _useState[0],
|
|
9470
|
-
setSameSiteUrl = _useState[1];
|
|
9471
|
-
useEffect(function () {
|
|
9472
|
-
setSameSiteUrl(isSameSiteUrl(url));
|
|
9473
|
-
}, [url]);
|
|
9474
|
-
return hasSameSiteUrl;
|
|
9475
|
-
};
|
|
9476
|
-
|
|
9477
9492
|
var renderBranding = function renderBranding(brandingStyle, invert, brandingText, brandingLink) {
|
|
9478
9493
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
9479
9494
|
var sameSiteUrl = brandingLink && useSameSiteUrl(brandingLink);
|
|
@@ -10189,13 +10204,13 @@ var PromoWithTitleImageWrapper = /*#__PURE__*/styled.div(_templateObject2$U || (
|
|
|
10189
10204
|
var imageToLeft = _ref3.imageToLeft;
|
|
10190
10205
|
return imageToLeft ? 'left' : 'right';
|
|
10191
10206
|
}, devices.mobile);
|
|
10192
|
-
var PromoWithTitleContentWrapper = /*#__PURE__*/styled.div(_templateObject3$G || (_templateObject3$G = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n grid-area: ", ";\n align-self: center;\n
|
|
10207
|
+
var PromoWithTitleContentWrapper = /*#__PURE__*/styled.div(_templateObject3$G || (_templateObject3$G = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n grid-area: ", ";\n align-self: center;\n @media ", " {\n & {\n grid-area: row2;\n align-self: start;\n }\n }\n"])), function (_ref4) {
|
|
10193
10208
|
var imageToLeft = _ref4.imageToLeft;
|
|
10194
10209
|
return imageToLeft ? 'right' : 'left';
|
|
10195
10210
|
}, devices.mobile);
|
|
10196
|
-
var
|
|
10197
|
-
var
|
|
10198
|
-
var
|
|
10211
|
+
var PromoWithTitleContainer = /*#__PURE__*/styled.div(_templateObject4$A || (_templateObject4$A = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n h2,\n h3 {\n margin: 0 0 32px;\n\n @media ", " {\n & {\n margin: 0 0 24px;\n }\n }\n }\n"])), devices.mobile);
|
|
10212
|
+
var PromoWithTitleSubtitle = /*#__PURE__*/styled.span(_templateObject5$t || (_templateObject5$t = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-1);\n font-weight: var(--font-weight-subtitle-1);\n line-height: var(--line-height-subtitle-1);\n letter-spacing: var(--letter-spacing-subtitle-1);\n text-transform: var(--text-transform-subtitle);\n margin-bottom: var(--editorial-subtitle-margin-bottom);\n display: block;\n overflow-wrap: break-word;\n"])));
|
|
10213
|
+
var PromoWithTitleText = /*#__PURE__*/styled.div(_templateObject6$n || (_templateObject6$n = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n font-family: var(--font-family-body);\n font-feature-settings: var(--font-feature-settings-body);\n font-size: var(--font-size-body-1);\n font-weight: var(--font-weight-body-1);\n line-height: var(--line-height-body-1);\n letter-spacing: var(--letter-spacing-body-1);\n text-transform: var(--text-transform-body);\n margin: 0;\n padding: 0;\n white-space: break-spaces;\n overflow-wrap: break-word;\n\n h5,\n h6 {\n margin: 0 0 4px 0;\n font-family: var(--font-family-subtitle);\n font-feature-settings: var(--font-feature-settings-subtitle);\n font-size: var(--font-size-subtitle-2);\n font-weight: var(--font-weight-subtitle-2);\n line-height: var(--line-height-subtitle-2);\n letter-spacing: var(--letter-spacing-subtitle-2);\n text-transform: var(--text-transform-subtitle);\n overflow-wrap: break-word;\n }\n\n em {\n font-family: var(--font-family-body-italics);\n }\n\n a {\n text-decoration: underline;\n cursor: pointer;\n\n &[href^='tel:'] {\n text-decoration: none;\n }\n\n &:link {\n color: var(--color-primary-black);\n }\n\n &:visited {\n color: var(--color-base-dark-grey);\n }\n\n &:hover {\n color: var(--color-primary-red);\n }\n }\n"])));
|
|
10199
10214
|
var ButtonsContainer$3 = /*#__PURE__*/styled.div(_templateObject7$h || (_templateObject7$h = /*#__PURE__*/_taggedTemplateLiteralLoose(["\n display: flex;\n gap: 16px;\n margin-top: 32px;\n\n ", "\n\n @media ", " {\n gap: 24px;\n margin-top: 24px;\n flex-direction: column;\n align-items: center;\n }\n\n @media ", " {\n gap: 24px;\n margin-top: 24px;\n align-items: flex-start;\n\n ", "\n }\n"])), function (_ref5) {
|
|
10200
10215
|
var _ref5$primaryButtonTe = _ref5.primaryButtonTextLength,
|
|
10201
10216
|
primaryButtonTextLength = _ref5$primaryButtonTe === void 0 ? 0 : _ref5$primaryButtonTe,
|
|
@@ -10341,20 +10356,18 @@ var PromoWithTitle = function PromoWithTitle(_ref) {
|
|
|
10341
10356
|
title = _ref$title === void 0 ? '' : _ref$title,
|
|
10342
10357
|
_ref$titleSize = _ref.titleSize,
|
|
10343
10358
|
titleSize = _ref$titleSize === void 0 ? 'large' : _ref$titleSize,
|
|
10344
|
-
titleHierarchy = _ref.titleHierarchy,
|
|
10345
10359
|
subtitle = _ref.subtitle,
|
|
10346
10360
|
text = _ref.text,
|
|
10347
10361
|
links = _ref.links,
|
|
10348
10362
|
children = _ref.children,
|
|
10349
10363
|
videoSettings = _ref.videoSettings,
|
|
10364
|
+
titleSemanticLevel = _ref.titleSemanticLevel,
|
|
10350
10365
|
className = _ref.className;
|
|
10351
10366
|
var truncate = function truncate(str, n) {
|
|
10352
10367
|
return str.length >= n ? str.substr(0, n) : str;
|
|
10353
10368
|
};
|
|
10354
|
-
var correctTitleSize = function correctTitleSize(size) {
|
|
10355
|
-
return size === 'small' ? 'medium' : 'large';
|
|
10356
|
-
};
|
|
10357
10369
|
var imageToLeft = imagePosition === 'left';
|
|
10370
|
+
var titleLevel = titleSize === 'large' ? 2 : 3;
|
|
10358
10371
|
var primaryButton = links == null ? void 0 : links[0];
|
|
10359
10372
|
var _ref2 = primaryButton || {},
|
|
10360
10373
|
_ref2$text = _ref2.text,
|
|
@@ -10378,19 +10391,20 @@ var PromoWithTitle = function PromoWithTitle(_ref) {
|
|
|
10378
10391
|
imageToLeft: imageToLeft,
|
|
10379
10392
|
className: className,
|
|
10380
10393
|
"data-testid": "promo-with-title"
|
|
10381
|
-
}, /*#__PURE__*/React__default.createElement(PromoChild
|
|
10394
|
+
}, /*#__PURE__*/React__default.createElement(PromoChild
|
|
10395
|
+
// eslint-disable-next-line react/no-children-prop
|
|
10396
|
+
, {
|
|
10397
|
+
// eslint-disable-next-line react/no-children-prop
|
|
10398
|
+
children: children,
|
|
10382
10399
|
videoSettings: _extends({}, defaultVideoSettings, videoSettings),
|
|
10383
10400
|
imageToLeft: imageToLeft
|
|
10384
|
-
}
|
|
10401
|
+
}), /*#__PURE__*/React__default.createElement(PromoWithTitleContentWrapper, {
|
|
10385
10402
|
"data-testid": "content-wrapper",
|
|
10386
10403
|
imageToLeft: imageToLeft
|
|
10387
|
-
}, /*#__PURE__*/React__default.createElement(
|
|
10388
|
-
|
|
10389
|
-
|
|
10390
|
-
}, title), subtitle ? /*#__PURE__*/React__default.createElement(
|
|
10391
|
-
size: "medium"
|
|
10392
|
-
}, subtitle) : null, /*#__PURE__*/React__default.createElement(BodyCopyHarmonicWithWrapper, {
|
|
10393
|
-
size: "large",
|
|
10404
|
+
}, /*#__PURE__*/React__default.createElement(PromoWithTitleContainer, null, /*#__PURE__*/React__default.createElement(Header, {
|
|
10405
|
+
level: titleLevel,
|
|
10406
|
+
semanticLevel: titleSemanticLevel != null ? titleSemanticLevel : titleLevel
|
|
10407
|
+
}, title)), subtitle ? /*#__PURE__*/React__default.createElement(PromoWithTitleSubtitle, null, subtitle) : null, /*#__PURE__*/React__default.createElement(PromoWithTitleText, {
|
|
10394
10408
|
dangerouslySetInnerHTML: {
|
|
10395
10409
|
__html: text
|
|
10396
10410
|
}
|
|
@@ -10398,11 +10412,7 @@ var PromoWithTitle = function PromoWithTitle(_ref) {
|
|
|
10398
10412
|
"data-testid": "buttons-wrapper",
|
|
10399
10413
|
primaryButtonTextLength: primaryButtonText.length,
|
|
10400
10414
|
tertiaryButtonTextLength: tertiaryButtonText.length
|
|
10401
|
-
}, primaryButton ?
|
|
10402
|
-
target: "_blank"
|
|
10403
|
-
}, restPrimaryButton), primaryButtonTextTruncate)) : null, tertiaryButton ? (/*#__PURE__*/React__default.createElement(TertiaryButton, Object.assign({
|
|
10404
|
-
target: "_blank"
|
|
10405
|
-
}, restTertiaryButton), tertiaryButtonTextTruncate)) : null)) : null));
|
|
10415
|
+
}, primaryButton ? /*#__PURE__*/React__default.createElement(PrimaryButton, Object.assign({}, restPrimaryButton), primaryButtonTextTruncate) : null, tertiaryButton ? (/*#__PURE__*/React__default.createElement(TertiaryButton, Object.assign({}, restTertiaryButton), tertiaryButtonTextTruncate)) : null)) : null));
|
|
10406
10416
|
};
|
|
10407
10417
|
|
|
10408
10418
|
var _templateObject$1a;
|
|
@@ -12240,6 +12250,7 @@ var isVideoSlide = function isVideoSlide(slideMedia) {
|
|
|
12240
12250
|
return slideMedia.video !== undefined;
|
|
12241
12251
|
};
|
|
12242
12252
|
|
|
12253
|
+
var IMAGE_WIDTH_LIMIT$1 = 800;
|
|
12243
12254
|
var VideoSlide = function VideoSlide(_ref) {
|
|
12244
12255
|
var index = _ref.index,
|
|
12245
12256
|
settings = _ref.settings,
|
|
@@ -12270,12 +12281,18 @@ var SwipeCarousel = function SwipeCarousel(_ref2) {
|
|
|
12270
12281
|
var hasOnlyImageSlides = slidesMedia.every(function (slide) {
|
|
12271
12282
|
return !isVideoSlide(slide);
|
|
12272
12283
|
});
|
|
12284
|
+
var limitedMediaContent = slidesMedia.map(function (slide) {
|
|
12285
|
+
if (isVideoSlide(slide)) return slide;
|
|
12286
|
+
return _extends({}, slide, {
|
|
12287
|
+
src: slide.src ? limitImageUrlDimension(slide.src, IMAGE_WIDTH_LIMIT$1) : undefined
|
|
12288
|
+
});
|
|
12289
|
+
});
|
|
12273
12290
|
return /*#__PURE__*/React__default.createElement(Swipe, {
|
|
12274
12291
|
ref: carouselRef,
|
|
12275
12292
|
infinite: hasMultipleSlides && hasOnlyImageSlides,
|
|
12276
12293
|
onIndexChange: setCurrentSlide,
|
|
12277
12294
|
"aria-roledescription": "carousel"
|
|
12278
|
-
},
|
|
12295
|
+
}, limitedMediaContent.map(function (mediaContent, index) {
|
|
12279
12296
|
return /*#__PURE__*/React__default.createElement("div", {
|
|
12280
12297
|
className: "swiper-slide",
|
|
12281
12298
|
key: mediaContent.key,
|