@tripian/react 9.3.24 → 9.3.25
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/index.js +286 -269
- package/index.js.map +1 -1
- package/min.css +1 -1
- package/package.json +2 -2
- package/providers/kiwi/KiwiHotelCard/KiwiBookingModal/KiwiBookingModal.d.ts +2 -1
- package/providers/kiwi/KiwiHotelCard/KiwiHotelCard.d.ts +2 -1
- package/providers/kiwi/KiwiHotelCard/KiwiHotelInfoModal/KiwiHotelInfoModal.d.ts +2 -1
- package/providers/kiwi/KiwiHotelCard/KiwiRateDetailModal/KiwiRateDetailModal.d.ts +2 -1
- package/providers/kiwi/KiwiHotelCard/KiwiRoomRateModal/KiwiRoomRateModal.d.ts +2 -1
- package/providers/kiwi/KiwiHotelCard/KiwiSpecialOffersModal/KiwiSpecialOffersModal.d.ts +2 -1
- package/providers/kiwi/KiwiHotelCard/KiwiVisaBenefitsModal/KiwiVisaBenefitsModal.d.ts +2 -0
- package/providers/kiwi/KiwiHotelFilterModal/KiwiHotelFilterModal.d.ts +2 -1
package/index.js
CHANGED
|
@@ -60928,7 +60928,7 @@ const formatDateRangeShort = (ci, co) => {
|
|
|
60928
60928
|
return `${day1}-${day2} ${m1}`;
|
|
60929
60929
|
return `${day1} ${m1} - ${day2} ${m2}`;
|
|
60930
60930
|
};
|
|
60931
|
-
const KiwiHotelSearchBar = ({ destination, checkInDate, checkOutDate, adults, children, citySuggestions, onDestinationChange, onCitySelect, onCheckInChange, onCheckOutChange, onAdultsChange, onChildrenChange, onSearch, }) => {
|
|
60931
|
+
const KiwiHotelSearchBar = ({ destination, checkInDate, checkOutDate, adults, children, citySuggestions, onDestinationChange, onCitySelect, onCheckInChange, onCheckOutChange, onAdultsChange, onChildrenChange, onSearch, t, }) => {
|
|
60932
60932
|
const checkInRef = (0, react_1.useRef)(null);
|
|
60933
60933
|
const checkOutRef = (0, react_1.useRef)(null);
|
|
60934
60934
|
const destRef = (0, react_1.useRef)(null);
|
|
@@ -60939,10 +60939,10 @@ const KiwiHotelSearchBar = ({ destination, checkInDate, checkOutDate, adults, ch
|
|
|
60939
60939
|
const mobileCheckInRef = (0, react_1.useRef)(null);
|
|
60940
60940
|
const mobileCheckOutRef = (0, react_1.useRef)(null);
|
|
60941
60941
|
const guestsRef = (0, react_1.useRef)(null);
|
|
60942
|
-
const guestsText = `${adults} ${adults === 1 ? '
|
|
60942
|
+
const guestsText = `${adults} ${adults === 1 ? t('kiwi.searchBar.adult') : t('kiwi.common.adults')}${children > 0 ? `, ${children} ${children === 1 ? t('kiwi.searchBar.child') : t('kiwi.common.children')}` : ''}`;
|
|
60943
60943
|
const totalGuests = adults + children;
|
|
60944
60944
|
const mobileDateRange = formatDateRangeShort(checkInDate, checkOutDate);
|
|
60945
|
-
const mobilePillSubtitle = [mobileDateRange, `${totalGuests} ${totalGuests === 1 ? 'guest' : '
|
|
60945
|
+
const mobilePillSubtitle = [mobileDateRange, `${totalGuests} ${totalGuests === 1 ? t('kiwi.searchBar.guest') : t('kiwi.searchBar.guestPlural')}`].filter(Boolean).join(' · ');
|
|
60946
60946
|
const hasSuggestions = citySuggestions && citySuggestions.length > 0;
|
|
60947
60947
|
(0, react_1.useEffect)(() => {
|
|
60948
60948
|
const handleClick = (e) => {
|
|
@@ -60980,11 +60980,11 @@ const KiwiHotelSearchBar = ({ destination, checkInDate, checkOutDate, adults, ch
|
|
|
60980
60980
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
60981
60981
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.searchBar },
|
|
60982
60982
|
react_1.default.createElement("div", { className: `${KiwiHotelSearchBar_scss_1.default.section} ${KiwiHotelSearchBar_scss_1.default.sectionDestination}`, ref: destRef },
|
|
60983
|
-
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.label },
|
|
60983
|
+
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.label }, t('kiwi.searchBar.destination.label')),
|
|
60984
60984
|
react_1.default.createElement("input", { type: "text", className: KiwiHotelSearchBar_scss_1.default.input, value: destination, onChange: (e) => {
|
|
60985
60985
|
onDestinationChange(e.target.value);
|
|
60986
60986
|
setDestOpen(true);
|
|
60987
|
-
}, onFocus: () => setDestOpen(true), placeholder:
|
|
60987
|
+
}, onFocus: () => setDestOpen(true), placeholder: t('kiwi.searchBar.searchPlaceholder') }),
|
|
60988
60988
|
destOpen && hasSuggestions && (react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.suggestionsDropdown }, citySuggestions.map((city) => (react_1.default.createElement("div", { key: city.id, className: KiwiHotelSearchBar_scss_1.default.suggestionItem, onClick: () => {
|
|
60989
60989
|
if (onCitySelect)
|
|
60990
60990
|
onCitySelect(city);
|
|
@@ -60994,55 +60994,55 @@ const KiwiHotelSearchBar = ({ destination, checkInDate, checkOutDate, adults, ch
|
|
|
60994
60994
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.suggestionName }, city.name),
|
|
60995
60995
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.suggestionParent }, city.parentName))))))),
|
|
60996
60996
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.section, onClick: () => { var _a, _b; return (_b = (_a = checkInRef.current) === null || _a === void 0 ? void 0 : _a.showPicker) === null || _b === void 0 ? void 0 : _b.call(_a); }, role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
60997
|
-
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.label },
|
|
60997
|
+
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.label }, t('kiwi.common.checkIn')),
|
|
60998
60998
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.dateDisplay },
|
|
60999
|
-
react_1.default.createElement("span", { className: checkInDate ? KiwiHotelSearchBar_scss_1.default.value : `${KiwiHotelSearchBar_scss_1.default.value} ${KiwiHotelSearchBar_scss_1.default.valuePlaceholder}` }, checkInDate ? formatDate(checkInDate) : '
|
|
60999
|
+
react_1.default.createElement("span", { className: checkInDate ? KiwiHotelSearchBar_scss_1.default.value : `${KiwiHotelSearchBar_scss_1.default.value} ${KiwiHotelSearchBar_scss_1.default.valuePlaceholder}` }, checkInDate ? formatDate(checkInDate) : t('kiwi.searchBar.selectDate')),
|
|
61000
61000
|
react_1.default.createElement("input", { ref: checkInRef, type: "date", className: KiwiHotelSearchBar_scss_1.default.hiddenDateInput, value: checkInDate, onChange: (e) => onCheckInChange(e.target.value) }))),
|
|
61001
61001
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.section, onClick: () => { var _a, _b; return (_b = (_a = checkOutRef.current) === null || _a === void 0 ? void 0 : _a.showPicker) === null || _b === void 0 ? void 0 : _b.call(_a); }, role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
61002
|
-
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.label },
|
|
61002
|
+
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.label }, t('kiwi.common.checkOut')),
|
|
61003
61003
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.dateDisplay },
|
|
61004
|
-
react_1.default.createElement("span", { className: checkOutDate ? KiwiHotelSearchBar_scss_1.default.value : `${KiwiHotelSearchBar_scss_1.default.value} ${KiwiHotelSearchBar_scss_1.default.valuePlaceholder}` }, checkOutDate ? formatDate(checkOutDate) : '
|
|
61004
|
+
react_1.default.createElement("span", { className: checkOutDate ? KiwiHotelSearchBar_scss_1.default.value : `${KiwiHotelSearchBar_scss_1.default.value} ${KiwiHotelSearchBar_scss_1.default.valuePlaceholder}` }, checkOutDate ? formatDate(checkOutDate) : t('kiwi.searchBar.selectDate')),
|
|
61005
61005
|
react_1.default.createElement("input", { ref: checkOutRef, type: "date", className: KiwiHotelSearchBar_scss_1.default.hiddenDateInput, value: checkOutDate, onChange: (e) => onCheckOutChange(e.target.value) }))),
|
|
61006
61006
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.section, ref: guestsRef },
|
|
61007
|
-
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.label },
|
|
61007
|
+
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.label }, t('kiwi.common.guests')),
|
|
61008
61008
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.dateDisplay, onClick: () => setGuestsOpen((prev) => !prev), role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
61009
61009
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.value }, guestsText)),
|
|
61010
61010
|
guestsOpen && (react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.guestsDropdown },
|
|
61011
61011
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.guestRow },
|
|
61012
|
-
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.guestRowLabel },
|
|
61012
|
+
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.guestRowLabel }, t('kiwi.common.adults')),
|
|
61013
61013
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.guestCounter },
|
|
61014
61014
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.counterBtn, onClick: () => onAdultsChange(Math.max(1, adults - 1)) }, "\u2212"),
|
|
61015
61015
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.counterValue }, adults),
|
|
61016
61016
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.counterBtn, onClick: () => onAdultsChange(Math.min(9, adults + 1)) }, "+"))),
|
|
61017
61017
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.guestRow },
|
|
61018
|
-
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.guestRowLabel },
|
|
61018
|
+
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.guestRowLabel }, t('kiwi.common.children')),
|
|
61019
61019
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.guestCounter },
|
|
61020
61020
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.counterBtn, onClick: () => onChildrenChange(Math.max(0, children - 1)) }, "\u2212"),
|
|
61021
61021
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.counterValue }, children),
|
|
61022
61022
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.counterBtn, onClick: () => onChildrenChange(Math.min(9, children + 1)) }, "+")))))),
|
|
61023
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.searchButton, onClick: onSearch, "aria-label":
|
|
61023
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.searchButton, onClick: onSearch, "aria-label": t('kiwi.searchBar.searchHotels') },
|
|
61024
61024
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
61025
61025
|
react_1.default.createElement("path", { d: "M15.5 14h-.79l-.28-.27A6.471 6.471 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" })))),
|
|
61026
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobilePill, onClick: () => setMobileOpen(true), "aria-label":
|
|
61026
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobilePill, onClick: () => setMobileOpen(true), "aria-label": t('kiwi.searchBar.openSearch') },
|
|
61027
61027
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobilePillIcon },
|
|
61028
61028
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
61029
61029
|
react_1.default.createElement("path", { d: "M15.5 14h-.79l-.28-.27A6.471 6.471 0 0016 9.5 6.5 6.5 0 109.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" }))),
|
|
61030
61030
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobilePillText },
|
|
61031
|
-
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobilePillTitle }, destination || '
|
|
61031
|
+
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobilePillTitle }, destination || t('kiwi.searchBar.destination.placeholder')),
|
|
61032
61032
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobilePillSubtitle }, mobilePillSubtitle))),
|
|
61033
61033
|
mobileOpen && react_dom_1.default.createPortal(react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileModal, role: "dialog", "aria-modal": "true" },
|
|
61034
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCloseBtn, onClick: () => setMobileOpen(false), "aria-label":
|
|
61034
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCloseBtn, onClick: () => setMobileOpen(false), "aria-label": t('kiwi.common.close') },
|
|
61035
61035
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
61036
61036
|
react_1.default.createElement("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z", fill: "currentColor" }))),
|
|
61037
61037
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileModalContent },
|
|
61038
61038
|
react_1.default.createElement("label", { className: KiwiHotelSearchBar_scss_1.default.mobileLabel },
|
|
61039
|
-
|
|
61039
|
+
t('kiwi.searchBar.destination.placeholder'),
|
|
61040
61040
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobileRequired }, "*")),
|
|
61041
61041
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileField },
|
|
61042
61042
|
react_1.default.createElement("input", { type: "text", className: KiwiHotelSearchBar_scss_1.default.mobileInput, value: destination, onChange: (e) => {
|
|
61043
61043
|
onDestinationChange(e.target.value);
|
|
61044
61044
|
setMobileDestOpen(true);
|
|
61045
|
-
}, onFocus: () => setMobileDestOpen(true), placeholder:
|
|
61045
|
+
}, onFocus: () => setMobileDestOpen(true), placeholder: t('kiwi.searchBar.searchPlaceholder') }),
|
|
61046
61046
|
react_1.default.createElement("svg", { className: KiwiHotelSearchBar_scss_1.default.mobileChevron, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
61047
61047
|
react_1.default.createElement("path", { d: "M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6z", fill: "currentColor" }))),
|
|
61048
61048
|
mobileDestOpen && hasSuggestions && (react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileSuggestions }, citySuggestions.map((city) => (react_1.default.createElement("div", { key: city.id, className: KiwiHotelSearchBar_scss_1.default.suggestionItem, onClick: () => {
|
|
@@ -61053,32 +61053,32 @@ const KiwiHotelSearchBar = ({ destination, checkInDate, checkOutDate, adults, ch
|
|
|
61053
61053
|
}, role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
61054
61054
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.suggestionName }, city.name),
|
|
61055
61055
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.suggestionParent }, city.parentName)))))),
|
|
61056
|
-
react_1.default.createElement("label", { className: KiwiHotelSearchBar_scss_1.default.mobileLabel },
|
|
61056
|
+
react_1.default.createElement("label", { className: KiwiHotelSearchBar_scss_1.default.mobileLabel }, t('kiwi.searchBar.selectDates')),
|
|
61057
61057
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileDateRange },
|
|
61058
61058
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileDateCell, onClick: () => { var _a, _b; return (_b = (_a = mobileCheckInRef.current) === null || _a === void 0 ? void 0 : _a.showPicker) === null || _b === void 0 ? void 0 : _b.call(_a); }, role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
61059
|
-
react_1.default.createElement("span", { className: checkInDate ? KiwiHotelSearchBar_scss_1.default.mobileDateText : `${KiwiHotelSearchBar_scss_1.default.mobileDateText} ${KiwiHotelSearchBar_scss_1.default.mobileDatePlaceholder}` }, checkInDate ? formatDateLong(checkInDate) : '
|
|
61059
|
+
react_1.default.createElement("span", { className: checkInDate ? KiwiHotelSearchBar_scss_1.default.mobileDateText : `${KiwiHotelSearchBar_scss_1.default.mobileDateText} ${KiwiHotelSearchBar_scss_1.default.mobileDatePlaceholder}` }, checkInDate ? formatDateLong(checkInDate) : t('kiwi.common.checkIn')),
|
|
61060
61060
|
react_1.default.createElement("input", { ref: mobileCheckInRef, type: "date", className: KiwiHotelSearchBar_scss_1.default.hiddenDateInput, value: checkInDate, onChange: (e) => onCheckInChange(e.target.value) })),
|
|
61061
61061
|
react_1.default.createElement("svg", { className: KiwiHotelSearchBar_scss_1.default.mobileDateArrow, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
61062
61062
|
react_1.default.createElement("path", { d: "M9.29 6.71a1 1 0 000 1.41L13.17 12l-3.88 3.88a1 1 0 101.42 1.41l4.59-4.59a1 1 0 000-1.41L10.71 6.7a1 1 0 00-1.42.01z", fill: "currentColor" })),
|
|
61063
61063
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileDateCell, onClick: () => { var _a, _b; return (_b = (_a = mobileCheckOutRef.current) === null || _a === void 0 ? void 0 : _a.showPicker) === null || _b === void 0 ? void 0 : _b.call(_a); }, role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
61064
|
-
react_1.default.createElement("span", { className: checkOutDate ? KiwiHotelSearchBar_scss_1.default.mobileDateText : `${KiwiHotelSearchBar_scss_1.default.mobileDateText} ${KiwiHotelSearchBar_scss_1.default.mobileDatePlaceholder}` }, checkOutDate ? formatDateLong(checkOutDate) : '
|
|
61064
|
+
react_1.default.createElement("span", { className: checkOutDate ? KiwiHotelSearchBar_scss_1.default.mobileDateText : `${KiwiHotelSearchBar_scss_1.default.mobileDateText} ${KiwiHotelSearchBar_scss_1.default.mobileDatePlaceholder}` }, checkOutDate ? formatDateLong(checkOutDate) : t('kiwi.common.checkOut')),
|
|
61065
61065
|
react_1.default.createElement("input", { ref: mobileCheckOutRef, type: "date", className: KiwiHotelSearchBar_scss_1.default.hiddenDateInput, value: checkOutDate, min: checkInDate || undefined, onChange: (e) => onCheckOutChange(e.target.value) }))),
|
|
61066
|
-
react_1.default.createElement("label", { className: KiwiHotelSearchBar_scss_1.default.mobileLabel },
|
|
61066
|
+
react_1.default.createElement("label", { className: KiwiHotelSearchBar_scss_1.default.mobileLabel }, t('kiwi.searchBar.travelers')),
|
|
61067
61067
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileTravelerRow },
|
|
61068
|
-
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobileTravelerLabel },
|
|
61068
|
+
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobileTravelerLabel }, t('kiwi.common.adults')),
|
|
61069
61069
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileTravelerCounter },
|
|
61070
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCounterBtn, onClick: () => onAdultsChange(Math.max(1, adults - 1)), "aria-label":
|
|
61070
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCounterBtn, onClick: () => onAdultsChange(Math.max(1, adults - 1)), "aria-label": t('kiwi.searchBar.decreaseAdults') }, "\u2212"),
|
|
61071
61071
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobileCounterValue }, adults),
|
|
61072
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCounterBtn, onClick: () => onAdultsChange(Math.min(9, adults + 1)), "aria-label":
|
|
61072
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCounterBtn, onClick: () => onAdultsChange(Math.min(9, adults + 1)), "aria-label": t('kiwi.searchBar.increaseAdults') }, "+"))),
|
|
61073
61073
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileTravelerRow },
|
|
61074
|
-
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobileTravelerLabel },
|
|
61074
|
+
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobileTravelerLabel }, t('kiwi.common.children')),
|
|
61075
61075
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileTravelerCounter },
|
|
61076
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCounterBtn, onClick: () => onChildrenChange(Math.max(0, children - 1)), "aria-label":
|
|
61076
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCounterBtn, onClick: () => onChildrenChange(Math.max(0, children - 1)), "aria-label": t('kiwi.searchBar.decreaseChildren') }, "\u2212"),
|
|
61077
61077
|
react_1.default.createElement("span", { className: KiwiHotelSearchBar_scss_1.default.mobileCounterValue }, children),
|
|
61078
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCounterBtn, onClick: () => onChildrenChange(Math.min(9, children + 1)), "aria-label":
|
|
61078
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileCounterBtn, onClick: () => onChildrenChange(Math.min(9, children + 1)), "aria-label": t('kiwi.searchBar.increaseChildren') }, "+")))),
|
|
61079
61079
|
react_1.default.createElement("div", { className: KiwiHotelSearchBar_scss_1.default.mobileActions },
|
|
61080
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileClearBtn, onClick: handleClearAll },
|
|
61081
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileSearchBtn, onClick: handleMobileSearch },
|
|
61080
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileClearBtn, onClick: handleClearAll }, t('kiwi.common.clearAll')),
|
|
61081
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelSearchBar_scss_1.default.mobileSearchBtn, onClick: handleMobileSearch }, t('kiwi.searchBar.search')))), document.body)));
|
|
61082
61082
|
};
|
|
61083
61083
|
exports.default = KiwiHotelSearchBar;
|
|
61084
61084
|
|
|
@@ -61105,22 +61105,22 @@ const BENEFITS = [
|
|
|
61105
61105
|
'VIP Guest status',
|
|
61106
61106
|
'Late check-out upon request, when available',
|
|
61107
61107
|
];
|
|
61108
|
-
const KiwiVisaBenefitsModal = ({ onClose }) => react_dom_1.default.createPortal(react_1.default.createElement("div", { className: KiwiVisaBenefitsModal_scss_1.default.overlay, onClick: (e) => { e.stopPropagation(); onClose(); }, role: "presentation" },
|
|
61108
|
+
const KiwiVisaBenefitsModal = ({ onClose, t }) => react_dom_1.default.createPortal(react_1.default.createElement("div", { className: KiwiVisaBenefitsModal_scss_1.default.overlay, onClick: (e) => { e.stopPropagation(); onClose(); }, role: "presentation" },
|
|
61109
61109
|
react_1.default.createElement("div", { className: KiwiVisaBenefitsModal_scss_1.default.modal, onClick: (e) => e.stopPropagation() },
|
|
61110
61110
|
react_1.default.createElement("div", { className: KiwiVisaBenefitsModal_scss_1.default.header },
|
|
61111
61111
|
react_1.default.createElement("div", { className: KiwiVisaBenefitsModal_scss_1.default.headerLeft },
|
|
61112
61112
|
react_1.default.createElement("span", { className: KiwiVisaBenefitsModal_scss_1.default.visaLogo }),
|
|
61113
|
-
react_1.default.createElement("span", { className: KiwiVisaBenefitsModal_scss_1.default.title },
|
|
61113
|
+
react_1.default.createElement("span", { className: KiwiVisaBenefitsModal_scss_1.default.title }, t('kiwi.visaBenefits.title'))),
|
|
61114
61114
|
react_1.default.createElement("button", { type: "button", className: KiwiVisaBenefitsModal_scss_1.default.closeBtn, onClick: onClose },
|
|
61115
61115
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
61116
61116
|
react_1.default.createElement("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })))),
|
|
61117
|
-
react_1.default.createElement("p", { className: KiwiVisaBenefitsModal_scss_1.default.description },
|
|
61117
|
+
react_1.default.createElement("p", { className: KiwiVisaBenefitsModal_scss_1.default.description }, t('kiwi.visaBenefits.description')),
|
|
61118
61118
|
react_1.default.createElement("ul", { className: KiwiVisaBenefitsModal_scss_1.default.benefitsList }, BENEFITS.map((benefit) => (react_1.default.createElement("li", { key: benefit, className: KiwiVisaBenefitsModal_scss_1.default.benefitItem },
|
|
61119
61119
|
react_1.default.createElement("svg", { className: KiwiVisaBenefitsModal_scss_1.default.checkIcon, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
61120
61120
|
react_1.default.createElement("circle", { cx: "12", cy: "12", r: "12", fill: "#1a1f71" }),
|
|
61121
61121
|
react_1.default.createElement("path", { d: "M9.5 15.5l-3-3 1.41-1.41L9.5 12.67l5.59-5.59L16.5 8.5z", fill: "#fff" })),
|
|
61122
61122
|
react_1.default.createElement("span", null, benefit))))),
|
|
61123
|
-
react_1.default.createElement("a", { className: KiwiVisaBenefitsModal_scss_1.default.termsLink, href: "https://www.visasignaturehotels.com/about/benefits", target: "_blank", rel: "noopener noreferrer" },
|
|
61123
|
+
react_1.default.createElement("a", { className: KiwiVisaBenefitsModal_scss_1.default.termsLink, href: "https://www.visasignaturehotels.com/about/benefits", target: "_blank", rel: "noopener noreferrer" }, t('kiwi.visaBenefits.termsAndConditions')))), document.body);
|
|
61124
61124
|
exports.default = KiwiVisaBenefitsModal;
|
|
61125
61125
|
|
|
61126
61126
|
|
|
@@ -61139,18 +61139,18 @@ const react_1 = __importDefault(__webpack_require__(0));
|
|
|
61139
61139
|
const react_dom_1 = __importDefault(__webpack_require__(12));
|
|
61140
61140
|
const KiwiSpecialOffersModal_scss_1 = __importDefault(__webpack_require__(1142));
|
|
61141
61141
|
const stripHtml = (html) => html.replace(/<[^>]*>/g, '').trim();
|
|
61142
|
-
const KiwiSpecialOffersModal = ({ hotelName, specialOffers, onClose }) => react_dom_1.default.createPortal(react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.overlay, onClick: (e) => { e.stopPropagation(); onClose(); }, role: "presentation" },
|
|
61142
|
+
const KiwiSpecialOffersModal = ({ hotelName, specialOffers, onClose, t }) => react_dom_1.default.createPortal(react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.overlay, onClick: (e) => { e.stopPropagation(); onClose(); }, role: "presentation" },
|
|
61143
61143
|
react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.modal, onClick: (e) => e.stopPropagation() },
|
|
61144
61144
|
react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.header },
|
|
61145
61145
|
react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.headerLeft },
|
|
61146
61146
|
react_1.default.createElement("svg", { className: KiwiSpecialOffersModal_scss_1.default.tagIcon, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
61147
61147
|
react_1.default.createElement("path", { d: "M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58s1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41s-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z" })),
|
|
61148
|
-
react_1.default.createElement("span", { className: KiwiSpecialOffersModal_scss_1.default.title },
|
|
61148
|
+
react_1.default.createElement("span", { className: KiwiSpecialOffersModal_scss_1.default.title }, t('kiwi.specialOffers.title'))),
|
|
61149
61149
|
react_1.default.createElement("button", { type: "button", className: KiwiSpecialOffersModal_scss_1.default.closeBtn, onClick: onClose },
|
|
61150
61150
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
61151
61151
|
react_1.default.createElement("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })))),
|
|
61152
61152
|
react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.divider }),
|
|
61153
|
-
react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.body }, !specialOffers ? (react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.loading },
|
|
61153
|
+
react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.body }, !specialOffers ? (react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.loading }, t('kiwi.common.loading'))) : specialOffers.length > 0 ? (specialOffers.map((offer) => (react_1.default.createElement("div", { key: offer.title, className: KiwiSpecialOffersModal_scss_1.default.offerCard },
|
|
61154
61154
|
react_1.default.createElement("p", { className: KiwiSpecialOffersModal_scss_1.default.offerTitle }, offer.title),
|
|
61155
61155
|
react_1.default.createElement("ul", { className: KiwiSpecialOffersModal_scss_1.default.benefitsList },
|
|
61156
61156
|
offer.shortDescription && (react_1.default.createElement("li", { className: KiwiSpecialOffersModal_scss_1.default.benefitItem },
|
|
@@ -61163,26 +61163,28 @@ const KiwiSpecialOffersModal = ({ hotelName, specialOffers, onClose }) => react_
|
|
|
61163
61163
|
react_1.default.createElement("circle", { cx: "12", cy: "12", r: "12", fill: "#1a1f71" }),
|
|
61164
61164
|
react_1.default.createElement("path", { d: "M9.5 15.5l-3-3 1.41-1.41L9.5 12.67l5.59-5.59L16.5 8.5z", fill: "#fff" })),
|
|
61165
61165
|
react_1.default.createElement("span", null,
|
|
61166
|
-
"Minimum ",
|
|
61167
61166
|
offer.minimumNightStay,
|
|
61168
|
-
"
|
|
61167
|
+
" ",
|
|
61168
|
+
t('kiwi.specialOffers.minimumNightStay')))),
|
|
61169
61169
|
offer.offerEndDate && (react_1.default.createElement("li", { className: KiwiSpecialOffersModal_scss_1.default.benefitItem },
|
|
61170
61170
|
react_1.default.createElement("svg", { className: KiwiSpecialOffersModal_scss_1.default.checkIcon, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
61171
61171
|
react_1.default.createElement("circle", { cx: "12", cy: "12", r: "12", fill: "#1a1f71" }),
|
|
61172
61172
|
react_1.default.createElement("path", { d: "M9.5 15.5l-3-3 1.41-1.41L9.5 12.67l5.59-5.59L16.5 8.5z", fill: "#fff" })),
|
|
61173
61173
|
react_1.default.createElement("span", null,
|
|
61174
|
-
|
|
61174
|
+
t('kiwi.specialOffers.through'),
|
|
61175
|
+
" ",
|
|
61175
61176
|
new Date(offer.offerEndDate).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }))))),
|
|
61176
|
-
offer.url && (react_1.default.createElement("a", { className: KiwiSpecialOffersModal_scss_1.default.viewOfferLink, href: offer.url, target: "_blank", rel: "noopener noreferrer" },
|
|
61177
|
+
offer.url && (react_1.default.createElement("a", { className: KiwiSpecialOffersModal_scss_1.default.viewOfferLink, href: offer.url, target: "_blank", rel: "noopener noreferrer" }, t('kiwi.specialOffers.viewOffer'))))))) : (react_1.default.createElement("div", { className: KiwiSpecialOffersModal_scss_1.default.offerCard },
|
|
61177
61178
|
react_1.default.createElement("p", { className: KiwiSpecialOffersModal_scss_1.default.offerTitle },
|
|
61178
|
-
|
|
61179
|
+
t('kiwi.specialOffers.available'),
|
|
61180
|
+
" ",
|
|
61179
61181
|
hotelName),
|
|
61180
61182
|
react_1.default.createElement("ul", { className: KiwiSpecialOffersModal_scss_1.default.benefitsList },
|
|
61181
61183
|
react_1.default.createElement("li", { className: KiwiSpecialOffersModal_scss_1.default.benefitItem },
|
|
61182
61184
|
react_1.default.createElement("svg", { className: KiwiSpecialOffersModal_scss_1.default.checkIcon, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
61183
61185
|
react_1.default.createElement("circle", { cx: "12", cy: "12", r: "12", fill: "#1a1f71" }),
|
|
61184
61186
|
react_1.default.createElement("path", { d: "M9.5 15.5l-3-3 1.41-1.41L9.5 12.67l5.59-5.59L16.5 8.5z", fill: "#fff" })),
|
|
61185
|
-
react_1.default.createElement("span", null,
|
|
61187
|
+
react_1.default.createElement("span", null, t('kiwi.specialOffers.exclusiveBenefits'))))))))), document.body);
|
|
61186
61188
|
exports.default = KiwiSpecialOffersModal;
|
|
61187
61189
|
|
|
61188
61190
|
|
|
@@ -61236,7 +61238,7 @@ const formatNightDate = (dateStr) => {
|
|
|
61236
61238
|
return dateStr;
|
|
61237
61239
|
}
|
|
61238
61240
|
};
|
|
61239
|
-
const KiwiRateDetailModal = ({ rate, currency, nightCount, onClose }) => {
|
|
61241
|
+
const KiwiRateDetailModal = ({ rate, currency, nightCount, onClose, t }) => {
|
|
61240
61242
|
const [subtotalOpen, setSubtotalOpen] = (0, react_1.useState)(false);
|
|
61241
61243
|
const [taxesOpen, setTaxesOpen] = (0, react_1.useState)(false);
|
|
61242
61244
|
const price = rate.price;
|
|
@@ -61245,21 +61247,21 @@ const KiwiRateDetailModal = ({ rate, currency, nightCount, onClose }) => {
|
|
|
61245
61247
|
const taxesTotal = (parseFloat((price === null || price === void 0 ? void 0 : price.totalTaxes) || '0') + parseFloat((price === null || price === void 0 ? void 0 : price.totalFeesAndSurcharges) || '0')).toString();
|
|
61246
61248
|
const nightlyRates = (price === null || price === void 0 ? void 0 : price.nightlyRates) || [];
|
|
61247
61249
|
const feeTaxes = (price === null || price === void 0 ? void 0 : price.feeTaxes) || [];
|
|
61248
|
-
const nightLabel = nightCount > 0 ?
|
|
61250
|
+
const nightLabel = nightCount > 0 ? `${t('kiwi.common.subtotal')} (${nightCount} ${nightCount > 1 ? t('kiwi.common.nights') : t('kiwi.common.night')})` : t('kiwi.common.subtotal');
|
|
61249
61251
|
const content = (
|
|
61250
61252
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
61251
61253
|
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.overlay, onClick: (e) => { e.stopPropagation(); onClose(); } },
|
|
61252
61254
|
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.panel, onClick: (e) => e.stopPropagation() },
|
|
61253
61255
|
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.header },
|
|
61254
|
-
react_1.default.createElement("h3", { className: KiwiRateDetailModal_scss_1.default.title },
|
|
61255
|
-
react_1.default.createElement("button", { type: "button", className: KiwiRateDetailModal_scss_1.default.closeBtn, onClick: onClose, "aria-label":
|
|
61256
|
+
react_1.default.createElement("h3", { className: KiwiRateDetailModal_scss_1.default.title }, t('kiwi.rateDetail.title')),
|
|
61257
|
+
react_1.default.createElement("button", { type: "button", className: KiwiRateDetailModal_scss_1.default.closeBtn, onClick: onClose, "aria-label": t('kiwi.common.close') },
|
|
61256
61258
|
react_1.default.createElement("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", xmlns: "http://www.w3.org/2000/svg" },
|
|
61257
61259
|
react_1.default.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
61258
61260
|
react_1.default.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" })))),
|
|
61259
61261
|
react_1.default.createElement("hr", { className: KiwiRateDetailModal_scss_1.default.divider }),
|
|
61260
61262
|
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.body },
|
|
61261
61263
|
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.colHeader },
|
|
61262
|
-
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.colHeaderLabel },
|
|
61264
|
+
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.colHeaderLabel }, t('kiwi.common.details')),
|
|
61263
61265
|
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.colHeaderCurrency }, currency)),
|
|
61264
61266
|
react_1.default.createElement("hr", { className: KiwiRateDetailModal_scss_1.default.dividerThick }),
|
|
61265
61267
|
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.expandRow, onClick: () => setSubtotalOpen((v) => !v), role: "button", tabIndex: 0, onKeyDown: (e) => { if (e.key === 'Enter' || e.key === ' ')
|
|
@@ -61278,7 +61280,7 @@ const KiwiRateDetailModal = ({ rate, currency, nightCount, onClose }) => {
|
|
|
61278
61280
|
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.expandRow, onClick: () => setTaxesOpen((v) => !v), role: "button", tabIndex: 0, onKeyDown: (e) => { if (e.key === 'Enter' || e.key === ' ')
|
|
61279
61281
|
setTaxesOpen((v) => !v); } },
|
|
61280
61282
|
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.expandLeft },
|
|
61281
|
-
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandLabel },
|
|
61283
|
+
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandLabel }, t('kiwi.common.hotelTaxesFees')),
|
|
61282
61284
|
react_1.default.createElement("svg", { className: `${KiwiRateDetailModal_scss_1.default.expandChevron} ${taxesOpen ? KiwiRateDetailModal_scss_1.default.open : ''}`, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", xmlns: "http://www.w3.org/2000/svg" },
|
|
61283
61285
|
react_1.default.createElement("polyline", { points: "6 9 12 15 18 9" }))),
|
|
61284
61286
|
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandAmount }, fmt(taxesTotal))),
|
|
@@ -61288,16 +61290,16 @@ const KiwiRateDetailModal = ({ rate, currency, nightCount, onClose }) => {
|
|
|
61288
61290
|
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandedRowLabel }, ft.name || `Fee ${ft.feeTaxCodeId}`),
|
|
61289
61291
|
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandedRowAmount }, fmt(ft.amount)))))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
61290
61292
|
parseFloat((price === null || price === void 0 ? void 0 : price.totalFeesAndSurcharges) || '0') > 0 && (react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.expandedRow },
|
|
61291
|
-
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandedRowLabel },
|
|
61293
|
+
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandedRowLabel }, t('kiwi.common.fees')),
|
|
61292
61294
|
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandedRowAmount }, fmt(price === null || price === void 0 ? void 0 : price.totalFeesAndSurcharges)))),
|
|
61293
61295
|
parseFloat((price === null || price === void 0 ? void 0 : price.totalTaxes) || '0') > 0 && (react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.expandedRow },
|
|
61294
|
-
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandedRowLabel },
|
|
61296
|
+
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandedRowLabel }, t('kiwi.common.taxes')),
|
|
61295
61297
|
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.expandedRowAmount }, fmt(price === null || price === void 0 ? void 0 : price.totalTaxes)))))))),
|
|
61296
61298
|
react_1.default.createElement("hr", { className: KiwiRateDetailModal_scss_1.default.divider }),
|
|
61297
61299
|
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.totalRow },
|
|
61298
|
-
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.totalLabel },
|
|
61300
|
+
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.totalLabel }, t('kiwi.common.total')),
|
|
61299
61301
|
react_1.default.createElement("span", { className: KiwiRateDetailModal_scss_1.default.totalAmount }, fmt(total)))),
|
|
61300
|
-
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.footer },
|
|
61302
|
+
react_1.default.createElement("div", { className: KiwiRateDetailModal_scss_1.default.footer }, t('kiwi.common.priceDisclaimer')))));
|
|
61301
61303
|
return react_dom_1.default.createPortal(content, document.body);
|
|
61302
61304
|
};
|
|
61303
61305
|
exports.default = KiwiRateDetailModal;
|
|
@@ -61363,7 +61365,7 @@ const fmtDate = (dateStr) => {
|
|
|
61363
61365
|
return dateStr;
|
|
61364
61366
|
}
|
|
61365
61367
|
};
|
|
61366
|
-
const KiwiRoomRateModal = ({ roomTitle, rate, currency, nightCount, onClose, onBookNow, }) => {
|
|
61368
|
+
const KiwiRoomRateModal = ({ roomTitle, rate, currency, nightCount, onClose, onBookNow, t, }) => {
|
|
61367
61369
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
61368
61370
|
const [subtotalOpen, setSubtotalOpen] = (0, react_1.useState)(false);
|
|
61369
61371
|
const [taxesOpen, setTaxesOpen] = (0, react_1.useState)(false);
|
|
@@ -61374,47 +61376,49 @@ const KiwiRoomRateModal = ({ roomTitle, rate, currency, nightCount, onClose, onB
|
|
|
61374
61376
|
const taxesTotal = (parseFloat((price === null || price === void 0 ? void 0 : price.totalTaxes) || '0') + parseFloat((price === null || price === void 0 ? void 0 : price.totalFeesAndSurcharges) || '0')).toString();
|
|
61375
61377
|
const nightlyRates = (price === null || price === void 0 ? void 0 : price.nightlyRates) || [];
|
|
61376
61378
|
const feeTaxes = (price === null || price === void 0 ? void 0 : price.feeTaxes) || [];
|
|
61377
|
-
const nightLabel = nightCount > 0
|
|
61379
|
+
const nightLabel = nightCount > 0
|
|
61380
|
+
? `${t('kiwi.common.subtotal')} (${nightCount} ${nightCount > 1 ? t('kiwi.common.nights') : t('kiwi.common.night')})`
|
|
61381
|
+
: t('kiwi.common.subtotal');
|
|
61378
61382
|
const titleParts = (rate.title || '').split(' | ');
|
|
61379
61383
|
const rateTitleMain = titleParts[0] || '';
|
|
61380
61384
|
const rateTitleSub = titleParts.slice(1).join(' | ');
|
|
61381
61385
|
const benefits = rate.specialOfferRate === 'true' ? PREMIUM_BENEFITS : (rate.amenities || []);
|
|
61382
61386
|
const policies = [];
|
|
61383
61387
|
if ((_a = rate.policies) === null || _a === void 0 ? void 0 : _a.deposit)
|
|
61384
|
-
policies.push({ label: '
|
|
61388
|
+
policies.push({ label: t('kiwi.rateModal.policies.deposit'), text: rate.policies.deposit });
|
|
61385
61389
|
if ((_b = rate.policies) === null || _b === void 0 ? void 0 : _b.cancellation)
|
|
61386
|
-
policies.push({ label: '
|
|
61390
|
+
policies.push({ label: t('kiwi.rateModal.policies.cancellation'), text: rate.policies.cancellation });
|
|
61387
61391
|
if ((_c = rate.policies) === null || _c === void 0 ? void 0 : _c.guarantee)
|
|
61388
|
-
policies.push({ label: '
|
|
61392
|
+
policies.push({ label: t('kiwi.rateModal.policies.guarantee'), text: rate.policies.guarantee });
|
|
61389
61393
|
if ((_d = rate.policies) === null || _d === void 0 ? void 0 : _d.tax)
|
|
61390
|
-
policies.push({ label: '
|
|
61394
|
+
policies.push({ label: t('kiwi.rateModal.policies.tax'), text: rate.policies.tax });
|
|
61391
61395
|
if ((_e = rate.policies) === null || _e === void 0 ? void 0 : _e.serviceCharges)
|
|
61392
|
-
policies.push({ label: '
|
|
61396
|
+
policies.push({ label: t('kiwi.rateModal.policies.serviceCharges'), text: rate.policies.serviceCharges });
|
|
61393
61397
|
if ((_f = rate.policies) === null || _f === void 0 ? void 0 : _f.checkin)
|
|
61394
|
-
policies.push({ label: '
|
|
61398
|
+
policies.push({ label: t('kiwi.rateModal.policies.checkIn'), text: rate.policies.checkin });
|
|
61395
61399
|
if ((_g = rate.policies) === null || _g === void 0 ? void 0 : _g.children)
|
|
61396
|
-
policies.push({ label: '
|
|
61400
|
+
policies.push({ label: t('kiwi.rateModal.policies.children'), text: rate.policies.children });
|
|
61397
61401
|
if ((_h = rate.policies) === null || _h === void 0 ? void 0 : _h.pets)
|
|
61398
|
-
policies.push({ label: '
|
|
61402
|
+
policies.push({ label: t('kiwi.rateModal.policies.pets'), text: rate.policies.pets });
|
|
61399
61403
|
if ((_j = rate.policies) === null || _j === void 0 ? void 0 : _j.prepay)
|
|
61400
|
-
policies.push({ label: '
|
|
61404
|
+
policies.push({ label: t('kiwi.rateModal.policies.prepay'), text: rate.policies.prepay });
|
|
61401
61405
|
if ((_k = rate.policies) === null || _k === void 0 ? void 0 : _k.miscellaneous)
|
|
61402
|
-
policies.push({ label: '
|
|
61406
|
+
policies.push({ label: t('kiwi.rateModal.policies.additional'), text: rate.policies.miscellaneous });
|
|
61403
61407
|
if ((_l = rate.policies) === null || _l === void 0 ? void 0 : _l.specialRequirements)
|
|
61404
|
-
policies.push({ label: '
|
|
61408
|
+
policies.push({ label: t('kiwi.rateModal.policies.specialRequirements'), text: rate.policies.specialRequirements });
|
|
61405
61409
|
const content = (
|
|
61406
61410
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
61407
61411
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.overlay, onClick: (e) => { e.stopPropagation(); if (e.target === e.currentTarget)
|
|
61408
61412
|
onClose(); } },
|
|
61409
61413
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.panel, onClick: (e) => e.stopPropagation() },
|
|
61410
|
-
react_1.default.createElement("button", { type: "button", className: KiwiRoomRateModal_scss_1.default.closeBtn, onClick: onClose, "aria-label":
|
|
61414
|
+
react_1.default.createElement("button", { type: "button", className: KiwiRoomRateModal_scss_1.default.closeBtn, onClick: onClose, "aria-label": t('kiwi.common.close') },
|
|
61411
61415
|
react_1.default.createElement("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", xmlns: "http://www.w3.org/2000/svg" },
|
|
61412
61416
|
react_1.default.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
61413
61417
|
react_1.default.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" }))),
|
|
61414
61418
|
react_1.default.createElement("h2", { className: KiwiRoomRateModal_scss_1.default.roomTitle }, roomTitle),
|
|
61415
61419
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.body },
|
|
61416
61420
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.priceCol },
|
|
61417
|
-
react_1.default.createElement("h3", { className: KiwiRoomRateModal_scss_1.default.colTitle },
|
|
61421
|
+
react_1.default.createElement("h3", { className: KiwiRoomRateModal_scss_1.default.colTitle }, t('kiwi.rateModal.priceInformation')),
|
|
61418
61422
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.priceCard },
|
|
61419
61423
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.priceTopRow },
|
|
61420
61424
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.priceLeft },
|
|
@@ -61423,10 +61427,11 @@ const KiwiRoomRateModal = ({ roomTitle, rate, currency, nightCount, onClose, onB
|
|
|
61423
61427
|
new Intl.NumberFormat('en-US').format(Math.round(nightlyPrice))),
|
|
61424
61428
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.priceUnit },
|
|
61425
61429
|
currency,
|
|
61426
|
-
" /
|
|
61427
|
-
|
|
61430
|
+
" / ",
|
|
61431
|
+
t('kiwi.rateModal.avgNightlyRate'))),
|
|
61432
|
+
onBookNow && (react_1.default.createElement("button", { type: "button", className: KiwiRoomRateModal_scss_1.default.bookNowBtn, onClick: onBookNow }, t('kiwi.common.bookNow')))),
|
|
61428
61433
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.detailsColHeader },
|
|
61429
|
-
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.detailsLabel },
|
|
61434
|
+
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.detailsLabel }, t('kiwi.common.details')),
|
|
61430
61435
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.detailsCurrency }, currency)),
|
|
61431
61436
|
react_1.default.createElement("hr", { className: KiwiRoomRateModal_scss_1.default.dividerThick }),
|
|
61432
61437
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.expandRow, role: "button", tabIndex: 0, onClick: () => setSubtotalOpen((v) => !v), onKeyDown: (e) => { if (e.key === 'Enter')
|
|
@@ -61445,7 +61450,7 @@ const KiwiRoomRateModal = ({ roomTitle, rate, currency, nightCount, onClose, onB
|
|
|
61445
61450
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.expandRow, role: "button", tabIndex: 0, onClick: () => setTaxesOpen((v) => !v), onKeyDown: (e) => { if (e.key === 'Enter')
|
|
61446
61451
|
setTaxesOpen((v) => !v); } },
|
|
61447
61452
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.expandLeft },
|
|
61448
|
-
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandLabel },
|
|
61453
|
+
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandLabel }, t('kiwi.common.hotelTaxesFees')),
|
|
61449
61454
|
react_1.default.createElement("svg", { className: `${KiwiRoomRateModal_scss_1.default.expandChevron} ${taxesOpen ? KiwiRoomRateModal_scss_1.default.open : ''}`, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round", xmlns: "http://www.w3.org/2000/svg" },
|
|
61450
61455
|
react_1.default.createElement("polyline", { points: "6 9 12 15 18 9" }))),
|
|
61451
61456
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandAmount }, fmt(taxesTotal))),
|
|
@@ -61455,16 +61460,16 @@ const KiwiRoomRateModal = ({ roomTitle, rate, currency, nightCount, onClose, onB
|
|
|
61455
61460
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandedRowLabel }, ft.name || `Fee ${ft.feeTaxCodeId}`),
|
|
61456
61461
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandedRowAmount }, fmt(ft.amount))))) : (react_1.default.createElement(react_1.default.Fragment, null,
|
|
61457
61462
|
parseFloat((price === null || price === void 0 ? void 0 : price.totalFeesAndSurcharges) || '0') > 0 && (react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.expandedRow },
|
|
61458
|
-
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandedRowLabel },
|
|
61463
|
+
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandedRowLabel }, t('kiwi.common.fees')),
|
|
61459
61464
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandedRowAmount }, fmt(price === null || price === void 0 ? void 0 : price.totalFeesAndSurcharges)))),
|
|
61460
61465
|
parseFloat((price === null || price === void 0 ? void 0 : price.totalTaxes) || '0') > 0 && (react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.expandedRow },
|
|
61461
|
-
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandedRowLabel },
|
|
61466
|
+
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandedRowLabel }, t('kiwi.common.taxes')),
|
|
61462
61467
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.expandedRowAmount }, fmt(price === null || price === void 0 ? void 0 : price.totalTaxes)))))))),
|
|
61463
61468
|
react_1.default.createElement("hr", { className: KiwiRoomRateModal_scss_1.default.divider }),
|
|
61464
61469
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.totalRow },
|
|
61465
|
-
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.totalLabel },
|
|
61470
|
+
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.totalLabel }, t('kiwi.common.total')),
|
|
61466
61471
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.totalAmount }, fmt(total))),
|
|
61467
|
-
react_1.default.createElement("p", { className: KiwiRoomRateModal_scss_1.default.priceFooter },
|
|
61472
|
+
react_1.default.createElement("p", { className: KiwiRoomRateModal_scss_1.default.priceFooter }, t('kiwi.common.priceDisclaimer')))),
|
|
61468
61473
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.rateCol },
|
|
61469
61474
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.rateTitleRow },
|
|
61470
61475
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.rateTitleMain }, rateTitleMain),
|
|
@@ -61473,16 +61478,16 @@ const KiwiRoomRateModal = ({ roomTitle, rate, currency, nightCount, onClose, onB
|
|
|
61473
61478
|
react_1.default.createElement("span", { className: KiwiRoomRateModal_scss_1.default.rateTitleSub }, rateTitleSub)))),
|
|
61474
61479
|
react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.rateCard },
|
|
61475
61480
|
benefits.length > 0 && (react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.section },
|
|
61476
|
-
react_1.default.createElement("h4", { className: KiwiRoomRateModal_scss_1.default.sectionTitle },
|
|
61481
|
+
react_1.default.createElement("h4", { className: KiwiRoomRateModal_scss_1.default.sectionTitle }, t('kiwi.rateModal.premiumBenefits')),
|
|
61477
61482
|
react_1.default.createElement("ul", { className: KiwiRoomRateModal_scss_1.default.benefitsList }, benefits.map((b) => (react_1.default.createElement("li", { key: b, className: KiwiRoomRateModal_scss_1.default.benefitItem },
|
|
61478
61483
|
react_1.default.createElement("svg", { className: KiwiRoomRateModal_scss_1.default.checkIcon, viewBox: "0 0 24 24", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg" },
|
|
61479
61484
|
react_1.default.createElement("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 14.59L5.41 12l1.42-1.41L10 13.17l7.17-7.17 1.41 1.42L10 16.59z" })),
|
|
61480
61485
|
react_1.default.createElement("span", null, b))))))),
|
|
61481
61486
|
rate.description && (react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.section },
|
|
61482
|
-
react_1.default.createElement("h4", { className: KiwiRoomRateModal_scss_1.default.sectionTitle },
|
|
61487
|
+
react_1.default.createElement("h4", { className: KiwiRoomRateModal_scss_1.default.sectionTitle }, t('kiwi.rateModal.restrictions')),
|
|
61483
61488
|
react_1.default.createElement("p", { className: KiwiRoomRateModal_scss_1.default.restrictionsText }, rate.description))),
|
|
61484
61489
|
policies.length > 0 && (react_1.default.createElement("div", { className: KiwiRoomRateModal_scss_1.default.section },
|
|
61485
|
-
react_1.default.createElement("h4", { className: KiwiRoomRateModal_scss_1.default.sectionTitle },
|
|
61490
|
+
react_1.default.createElement("h4", { className: KiwiRoomRateModal_scss_1.default.sectionTitle }, t('kiwi.rateModal.taxesFeesPolicies')),
|
|
61486
61491
|
policies.map((p) => (react_1.default.createElement("div", { key: p.label, className: KiwiRoomRateModal_scss_1.default.policyItem },
|
|
61487
61492
|
react_1.default.createElement("p", { className: KiwiRoomRateModal_scss_1.default.policyTitle }, p.label),
|
|
61488
61493
|
react_1.default.createElement("p", { className: KiwiRoomRateModal_scss_1.default.policyText }, p.text))))))))))));
|
|
@@ -61560,56 +61565,56 @@ const emptyPayment = {
|
|
|
61560
61565
|
cardholder_name: '', card_number: '', card_type: 'VI',
|
|
61561
61566
|
card_security: '', expiry_month: '01', expiry_year: String(currentYear), message_to_hotel: '',
|
|
61562
61567
|
};
|
|
61563
|
-
const validateLead = (f) => {
|
|
61568
|
+
const validateLead = (f, t) => {
|
|
61564
61569
|
const e = {};
|
|
61565
61570
|
if (!f.first_name.trim())
|
|
61566
|
-
e.lead_first_name = '
|
|
61571
|
+
e.lead_first_name = t('kiwi.booking.validation.required');
|
|
61567
61572
|
if (!f.last_name.trim())
|
|
61568
|
-
e.lead_last_name = '
|
|
61573
|
+
e.lead_last_name = t('kiwi.booking.validation.required');
|
|
61569
61574
|
if (!f.email.trim())
|
|
61570
|
-
e.lead_email = '
|
|
61575
|
+
e.lead_email = t('kiwi.booking.validation.required');
|
|
61571
61576
|
else if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(f.email))
|
|
61572
|
-
e.lead_email = '
|
|
61577
|
+
e.lead_email = t('kiwi.booking.validation.invalidEmail');
|
|
61573
61578
|
if (!f.address_line1.trim())
|
|
61574
|
-
e.lead_address_line1 = '
|
|
61579
|
+
e.lead_address_line1 = t('kiwi.booking.validation.required');
|
|
61575
61580
|
if (!f.city.trim())
|
|
61576
|
-
e.lead_city = '
|
|
61581
|
+
e.lead_city = t('kiwi.booking.validation.required');
|
|
61577
61582
|
if (!f.country.trim())
|
|
61578
|
-
e.lead_country = '
|
|
61583
|
+
e.lead_country = t('kiwi.booking.validation.required');
|
|
61579
61584
|
if (!f.zip_postal.trim())
|
|
61580
|
-
e.lead_zip_postal = '
|
|
61585
|
+
e.lead_zip_postal = t('kiwi.booking.validation.required');
|
|
61581
61586
|
if (!f.phone_country_code.trim())
|
|
61582
|
-
e.lead_phone_country_code = '
|
|
61587
|
+
e.lead_phone_country_code = t('kiwi.booking.validation.required');
|
|
61583
61588
|
if (!f.phone.trim())
|
|
61584
|
-
e.lead_phone = '
|
|
61589
|
+
e.lead_phone = t('kiwi.booking.validation.required');
|
|
61585
61590
|
return e;
|
|
61586
61591
|
};
|
|
61587
|
-
const validateChildren = (ages) => {
|
|
61592
|
+
const validateChildren = (ages, t) => {
|
|
61588
61593
|
const e = {};
|
|
61589
61594
|
ages.forEach((a, i) => {
|
|
61590
61595
|
const n = parseInt(a, 10);
|
|
61591
61596
|
if (a === '' || Number.isNaN(n))
|
|
61592
|
-
e[`child_${i}`] = '
|
|
61597
|
+
e[`child_${i}`] = t('kiwi.booking.validation.required');
|
|
61593
61598
|
else if (n < 0 || n > 17)
|
|
61594
|
-
e[`child_${i}`] = '
|
|
61599
|
+
e[`child_${i}`] = t('kiwi.booking.validation.childAge');
|
|
61595
61600
|
});
|
|
61596
61601
|
return e;
|
|
61597
61602
|
};
|
|
61598
|
-
const validatePayment = (f) => {
|
|
61603
|
+
const validatePayment = (f, t) => {
|
|
61599
61604
|
const e = {};
|
|
61600
61605
|
if (!f.cardholder_name.trim())
|
|
61601
|
-
e.cardholder_name = '
|
|
61606
|
+
e.cardholder_name = t('kiwi.booking.validation.required');
|
|
61602
61607
|
if (!f.card_number.trim())
|
|
61603
|
-
e.card_number = '
|
|
61608
|
+
e.card_number = t('kiwi.booking.validation.required');
|
|
61604
61609
|
else if (!/^\d{13,19}$/.test(f.card_number.replace(/\s/g, '')))
|
|
61605
|
-
e.card_number = '
|
|
61610
|
+
e.card_number = t('kiwi.booking.validation.invalidCard');
|
|
61606
61611
|
if (!f.card_security.trim())
|
|
61607
|
-
e.card_security = '
|
|
61612
|
+
e.card_security = t('kiwi.booking.validation.required');
|
|
61608
61613
|
else if (!/^\d{3,4}$/.test(f.card_security))
|
|
61609
|
-
e.card_security = '
|
|
61614
|
+
e.card_security = t('kiwi.booking.validation.invalidCvv');
|
|
61610
61615
|
return e;
|
|
61611
61616
|
};
|
|
61612
|
-
const KiwiBookingModal = ({ hotelName, roomTitle, rate, currency, checkIn, checkOut, nightCount, adults, children, propertyCode, roomCode, generateExternalId, onClose, onCreateReservation, onReservationFailed, }) => {
|
|
61617
|
+
const KiwiBookingModal = ({ hotelName, roomTitle, rate, currency, checkIn, checkOut, nightCount, adults, children, propertyCode, roomCode, generateExternalId, onClose, onCreateReservation, onReservationFailed, t, }) => {
|
|
61613
61618
|
var _a;
|
|
61614
61619
|
const [step, setStep] = (0, react_1.useState)(1);
|
|
61615
61620
|
const [lead, setLead] = (0, react_1.useState)(emptyLead);
|
|
@@ -61624,10 +61629,11 @@ const KiwiBookingModal = ({ hotelName, roomTitle, rate, currency, checkIn, check
|
|
|
61624
61629
|
const guestCountLabel = (0, react_1.useMemo)(() => {
|
|
61625
61630
|
const parts = [];
|
|
61626
61631
|
if (adults > 0)
|
|
61627
|
-
parts.push(`${adults}
|
|
61632
|
+
parts.push(`${adults} ${adults === 1 ? t('kiwi.searchBar.adult') : t('kiwi.common.adults')}`);
|
|
61628
61633
|
if (children > 0)
|
|
61629
|
-
parts.push(`${children}
|
|
61634
|
+
parts.push(`${children} ${children === 1 ? t('kiwi.searchBar.child') : t('kiwi.common.children')}`);
|
|
61630
61635
|
return parts.join(', ');
|
|
61636
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
61631
61637
|
}, [adults, children]);
|
|
61632
61638
|
const handleLeadChange = (k, v) => {
|
|
61633
61639
|
setLead((prev) => ({ ...prev, [k]: v }));
|
|
@@ -61647,8 +61653,8 @@ const KiwiBookingModal = ({ hotelName, roomTitle, rate, currency, checkIn, check
|
|
|
61647
61653
|
const goNext = () => {
|
|
61648
61654
|
if (step === 1) {
|
|
61649
61655
|
const e = {
|
|
61650
|
-
...validateLead(lead),
|
|
61651
|
-
...(hasChildren ? validateChildren(childrenAges) : {}),
|
|
61656
|
+
...validateLead(lead, t),
|
|
61657
|
+
...(hasChildren ? validateChildren(childrenAges, t) : {}),
|
|
61652
61658
|
};
|
|
61653
61659
|
if (Object.keys(e).length > 0) {
|
|
61654
61660
|
setErrors(e);
|
|
@@ -61658,7 +61664,7 @@ const KiwiBookingModal = ({ hotelName, roomTitle, rate, currency, checkIn, check
|
|
|
61658
61664
|
setStep(2);
|
|
61659
61665
|
}
|
|
61660
61666
|
else if (step === 2) {
|
|
61661
|
-
const e = validatePayment(payment);
|
|
61667
|
+
const e = validatePayment(payment, t);
|
|
61662
61668
|
if (Object.keys(e).length > 0) {
|
|
61663
61669
|
setErrors(e);
|
|
61664
61670
|
return;
|
|
@@ -61717,14 +61723,14 @@ const KiwiBookingModal = ({ hotelName, roomTitle, rate, currency, checkIn, check
|
|
|
61717
61723
|
setStep(3);
|
|
61718
61724
|
}
|
|
61719
61725
|
else {
|
|
61720
|
-
const msg = '
|
|
61726
|
+
const msg = t('kiwi.booking.error.failed');
|
|
61721
61727
|
setApiError(msg);
|
|
61722
61728
|
if (onReservationFailed)
|
|
61723
61729
|
onReservationFailed(msg);
|
|
61724
61730
|
}
|
|
61725
61731
|
}
|
|
61726
61732
|
catch (err) {
|
|
61727
|
-
const msg = '
|
|
61733
|
+
const msg = t('kiwi.booking.error.generic');
|
|
61728
61734
|
setApiError(msg);
|
|
61729
61735
|
if (onReservationFailed)
|
|
61730
61736
|
onReservationFailed(msg);
|
|
@@ -61748,85 +61754,85 @@ const KiwiBookingModal = ({ hotelName, roomTitle, rate, currency, checkIn, check
|
|
|
61748
61754
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.headerInfo },
|
|
61749
61755
|
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.headerTitle }, hotelName),
|
|
61750
61756
|
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.headerSub }, roomTitle)),
|
|
61751
|
-
react_1.default.createElement("button", { type: "button", className: KiwiBookingModal_scss_1.default.closeBtn, onClick: onClose, "aria-label":
|
|
61757
|
+
react_1.default.createElement("button", { type: "button", className: KiwiBookingModal_scss_1.default.closeBtn, onClick: onClose, "aria-label": t('kiwi.common.close') },
|
|
61752
61758
|
react_1.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
61753
61759
|
react_1.default.createElement("line", { x1: "18", y1: "6", x2: "6", y2: "18" }),
|
|
61754
61760
|
react_1.default.createElement("line", { x1: "6", y1: "6", x2: "18", y2: "18" })))),
|
|
61755
61761
|
step !== 3 && (react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.summaryBar },
|
|
61756
61762
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.summaryItem },
|
|
61757
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel },
|
|
61763
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel }, t('kiwi.common.checkIn')),
|
|
61758
61764
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryValue }, fmtDate(checkIn))),
|
|
61759
61765
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.summaryItem },
|
|
61760
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel },
|
|
61766
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel }, t('kiwi.common.checkOut')),
|
|
61761
61767
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryValue }, fmtDate(checkOut))),
|
|
61762
61768
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.summaryItem },
|
|
61763
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel },
|
|
61769
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel }, t('kiwi.common.nights')),
|
|
61764
61770
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryValue }, nightCount)),
|
|
61765
61771
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.summaryItem },
|
|
61766
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel },
|
|
61772
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel }, t('kiwi.common.guests')),
|
|
61767
61773
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryValue }, guestCountLabel)),
|
|
61768
61774
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.summaryItem },
|
|
61769
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel },
|
|
61775
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryLabel }, t('kiwi.common.total')),
|
|
61770
61776
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.summaryValue },
|
|
61771
61777
|
fmtPrice(total, currency),
|
|
61772
61778
|
" ",
|
|
61773
61779
|
currency)))),
|
|
61774
61780
|
step !== 3 && (react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.steps },
|
|
61775
|
-
react_1.default.createElement("div", { className: `${KiwiBookingModal_scss_1.default.step} ${step === 1 ? KiwiBookingModal_scss_1.default.stepActive : KiwiBookingModal_scss_1.default.stepDone}` },
|
|
61776
|
-
react_1.default.createElement("div", { className: `${KiwiBookingModal_scss_1.default.step} ${step === 2 ? KiwiBookingModal_scss_1.default.stepActive : step > 2 ? KiwiBookingModal_scss_1.default.stepDone : ''}` },
|
|
61781
|
+
react_1.default.createElement("div", { className: `${KiwiBookingModal_scss_1.default.step} ${step === 1 ? KiwiBookingModal_scss_1.default.stepActive : KiwiBookingModal_scss_1.default.stepDone}` }, t('kiwi.booking.step1')),
|
|
61782
|
+
react_1.default.createElement("div", { className: `${KiwiBookingModal_scss_1.default.step} ${step === 2 ? KiwiBookingModal_scss_1.default.stepActive : step > 2 ? KiwiBookingModal_scss_1.default.stepDone : ''}` }, t('kiwi.booking.step2')))),
|
|
61777
61783
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.body },
|
|
61778
61784
|
apiError && react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.errorBanner }, apiError),
|
|
61779
61785
|
step === 1 && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
61780
|
-
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle },
|
|
61786
|
+
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle }, t('kiwi.booking.guestInformation')),
|
|
61781
61787
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.row },
|
|
61782
|
-
react_1.default.createElement(Field, { label:
|
|
61783
|
-
react_1.default.createElement("select", { className: KiwiBookingModal_scss_1.default.select, value: lead.title, onChange: (e) => handleLeadChange('title', e.target.value) }, TITLES.map((
|
|
61788
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.title'), required: true },
|
|
61789
|
+
react_1.default.createElement("select", { className: KiwiBookingModal_scss_1.default.select, value: lead.title, onChange: (e) => handleLeadChange('title', e.target.value) }, TITLES.map((tt) => react_1.default.createElement("option", { key: tt, value: tt }, tt))))),
|
|
61784
61790
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.row },
|
|
61785
|
-
react_1.default.createElement(Field, { label:
|
|
61791
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.firstName'), required: true, error: errors.lead_first_name },
|
|
61786
61792
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.lead_first_name ? KiwiBookingModal_scss_1.default.error : ''}`, value: lead.first_name, onChange: (e) => handleLeadChange('first_name', e.target.value), placeholder: "John" })),
|
|
61787
|
-
react_1.default.createElement(Field, { label:
|
|
61793
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.lastName'), required: true, error: errors.lead_last_name },
|
|
61788
61794
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.lead_last_name ? KiwiBookingModal_scss_1.default.error : ''}`, value: lead.last_name, onChange: (e) => handleLeadChange('last_name', e.target.value), placeholder: "Doe" }))),
|
|
61789
|
-
react_1.default.createElement(Field, { label:
|
|
61795
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.emailAddress'), required: true, error: errors.lead_email },
|
|
61790
61796
|
react_1.default.createElement("input", { type: "email", className: `${KiwiBookingModal_scss_1.default.input} ${errors.lead_email ? KiwiBookingModal_scss_1.default.error : ''}`, value: lead.email, onChange: (e) => handleLeadChange('email', e.target.value), placeholder: "john@example.com" })),
|
|
61791
61797
|
react_1.default.createElement("hr", { className: KiwiBookingModal_scss_1.default.sectionDivider }),
|
|
61792
|
-
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle },
|
|
61793
|
-
react_1.default.createElement(Field, { label:
|
|
61798
|
+
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle }, t('kiwi.booking.address')),
|
|
61799
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.addressLine1'), required: true, error: errors.lead_address_line1 },
|
|
61794
61800
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.lead_address_line1 ? KiwiBookingModal_scss_1.default.error : ''}`, value: lead.address_line1, onChange: (e) => handleLeadChange('address_line1', e.target.value), placeholder: "123 Main St" })),
|
|
61795
|
-
react_1.default.createElement(Field, { label:
|
|
61801
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.addressLine2') },
|
|
61796
61802
|
react_1.default.createElement("input", { className: KiwiBookingModal_scss_1.default.input, value: lead.address_line2, onChange: (e) => handleLeadChange('address_line2', e.target.value), placeholder: "Apt, suite, etc. (optional)" })),
|
|
61797
61803
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.row },
|
|
61798
|
-
react_1.default.createElement(Field, { label:
|
|
61804
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.city'), required: true, error: errors.lead_city },
|
|
61799
61805
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.lead_city ? KiwiBookingModal_scss_1.default.error : ''}`, value: lead.city, onChange: (e) => handleLeadChange('city', e.target.value), placeholder: "New York" })),
|
|
61800
|
-
react_1.default.createElement(Field, { label:
|
|
61806
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.stateProvince') },
|
|
61801
61807
|
react_1.default.createElement("input", { className: KiwiBookingModal_scss_1.default.input, value: lead.state, onChange: (e) => handleLeadChange('state', e.target.value), placeholder: "NY" }))),
|
|
61802
61808
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.row },
|
|
61803
|
-
react_1.default.createElement(Field, { label:
|
|
61809
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.country'), required: true, error: errors.lead_country },
|
|
61804
61810
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.lead_country ? KiwiBookingModal_scss_1.default.error : ''}`, value: lead.country, onChange: (e) => handleLeadChange('country', e.target.value), placeholder: "US" })),
|
|
61805
|
-
react_1.default.createElement(Field, { label:
|
|
61811
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.zipPostalCode'), required: true, error: errors.lead_zip_postal },
|
|
61806
61812
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.lead_zip_postal ? KiwiBookingModal_scss_1.default.error : ''}`, value: lead.zip_postal, onChange: (e) => handleLeadChange('zip_postal', e.target.value), placeholder: "10001" }))),
|
|
61807
61813
|
react_1.default.createElement("hr", { className: KiwiBookingModal_scss_1.default.sectionDivider }),
|
|
61808
|
-
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle },
|
|
61814
|
+
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle }, t('kiwi.booking.phoneNumberSection')),
|
|
61809
61815
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.row3 },
|
|
61810
|
-
react_1.default.createElement(Field, { label:
|
|
61816
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.countryCode'), required: true, error: errors.lead_phone_country_code },
|
|
61811
61817
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.lead_phone_country_code ? KiwiBookingModal_scss_1.default.error : ''}`, value: lead.phone_country_code, onChange: (e) => handleLeadChange('phone_country_code', e.target.value), placeholder: "+1" })),
|
|
61812
|
-
react_1.default.createElement(Field, { label:
|
|
61818
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.areaCode') },
|
|
61813
61819
|
react_1.default.createElement("input", { className: KiwiBookingModal_scss_1.default.input, value: lead.phone_area_code, onChange: (e) => handleLeadChange('phone_area_code', e.target.value), placeholder: "212" })),
|
|
61814
|
-
react_1.default.createElement(Field, { label:
|
|
61820
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.phone'), required: true, error: errors.lead_phone },
|
|
61815
61821
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.lead_phone ? KiwiBookingModal_scss_1.default.error : ''}`, value: lead.phone, onChange: (e) => handleLeadChange('phone', e.target.value), placeholder: "5551234" }))),
|
|
61816
61822
|
hasChildren && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
61817
61823
|
react_1.default.createElement("hr", { className: KiwiBookingModal_scss_1.default.sectionDivider }),
|
|
61818
|
-
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle },
|
|
61824
|
+
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle }, t('kiwi.booking.childrenAges')),
|
|
61819
61825
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.row }, childrenAges.map((age, i) => (
|
|
61820
61826
|
// eslint-disable-next-line react/no-array-index-key
|
|
61821
|
-
react_1.default.createElement(Field, { key: i, label:
|
|
61827
|
+
react_1.default.createElement(Field, { key: i, label: `${t('kiwi.booking.childAge')} ${i + 1}`, required: true, error: errors[`child_${i}`] },
|
|
61822
61828
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors[`child_${i}`] ? KiwiBookingModal_scss_1.default.error : ''}`, value: age, onChange: (e) => handleChildAgeChange(i, e.target.value.replace(/\D/g, '').slice(0, 2)), placeholder: "0\u201317", inputMode: "numeric" }))))))))),
|
|
61823
61829
|
step === 2 && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
61824
|
-
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle },
|
|
61825
|
-
react_1.default.createElement(Field, { label:
|
|
61830
|
+
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.sectionTitle }, t('kiwi.booking.paymentDetails')),
|
|
61831
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.cardholderName'), required: true, error: errors.cardholder_name },
|
|
61826
61832
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.cardholder_name ? KiwiBookingModal_scss_1.default.error : ''}`, value: payment.cardholder_name, onChange: (e) => handlePaymentChange('cardholder_name', e.target.value), placeholder: "John Doe" })),
|
|
61827
|
-
react_1.default.createElement(Field, { label:
|
|
61833
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.cardType'), required: true },
|
|
61828
61834
|
react_1.default.createElement("select", { className: KiwiBookingModal_scss_1.default.select, value: payment.card_type, onChange: (e) => handlePaymentChange('card_type', e.target.value) }, CARD_TYPES.map((c) => react_1.default.createElement("option", { key: c.value, value: c.value }, c.label)))),
|
|
61829
|
-
react_1.default.createElement(Field, { label:
|
|
61835
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.cardNumber'), required: true, error: errors.card_number },
|
|
61830
61836
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.cardInputWrap },
|
|
61831
61837
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${KiwiBookingModal_scss_1.default.cardInput} ${errors.card_number ? KiwiBookingModal_scss_1.default.error : ''}`, value: payment.card_number, onChange: (e) => {
|
|
61832
61838
|
const raw = e.target.value.replace(/\D/g, '').slice(0, 19);
|
|
@@ -61834,43 +61840,43 @@ const KiwiBookingModal = ({ hotelName, roomTitle, rate, currency, checkIn, check
|
|
|
61834
61840
|
handlePaymentChange('card_number', formatted);
|
|
61835
61841
|
}, placeholder: "0000 0000 0000 0000", inputMode: "numeric" }))),
|
|
61836
61842
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.row },
|
|
61837
|
-
react_1.default.createElement(Field, { label:
|
|
61843
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.cvv'), required: true, error: errors.card_security },
|
|
61838
61844
|
react_1.default.createElement("input", { className: `${KiwiBookingModal_scss_1.default.input} ${errors.card_security ? KiwiBookingModal_scss_1.default.error : ''}`, value: payment.card_security, onChange: (e) => handlePaymentChange('card_security', e.target.value.replace(/\D/g, '').slice(0, 4)), placeholder: "123", inputMode: "numeric" }))),
|
|
61839
61845
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.row },
|
|
61840
|
-
react_1.default.createElement(Field, { label:
|
|
61846
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.expiryMonth'), required: true },
|
|
61841
61847
|
react_1.default.createElement("select", { className: KiwiBookingModal_scss_1.default.select, value: payment.expiry_month, onChange: (e) => handlePaymentChange('expiry_month', e.target.value) }, MONTHS.map((mo) => react_1.default.createElement("option", { key: mo, value: mo }, mo)))),
|
|
61842
|
-
react_1.default.createElement(Field, { label:
|
|
61848
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.expiryYear'), required: true },
|
|
61843
61849
|
react_1.default.createElement("select", { className: KiwiBookingModal_scss_1.default.select, value: payment.expiry_year, onChange: (e) => handlePaymentChange('expiry_year', e.target.value) }, YEARS.map((y) => react_1.default.createElement("option", { key: y, value: y }, y))))),
|
|
61844
61850
|
react_1.default.createElement("hr", { className: KiwiBookingModal_scss_1.default.sectionDivider }),
|
|
61845
|
-
react_1.default.createElement(Field, { label:
|
|
61851
|
+
react_1.default.createElement(Field, { label: t('kiwi.booking.messageToHotel') },
|
|
61846
61852
|
react_1.default.createElement("textarea", { className: KiwiBookingModal_scss_1.default.textarea, value: payment.message_to_hotel, onChange: (e) => handlePaymentChange('message_to_hotel', e.target.value), placeholder: "Any special requests or notes for the hotel..." })))),
|
|
61847
61853
|
step === 3 && (react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.success },
|
|
61848
61854
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.successIcon },
|
|
61849
61855
|
react_1.default.createElement("svg", { width: "32", height: "32", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
61850
61856
|
react_1.default.createElement("polyline", { points: "20 6 9 17 4 12" }))),
|
|
61851
|
-
react_1.default.createElement("h2", { className: KiwiBookingModal_scss_1.default.successTitle },
|
|
61852
|
-
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.successSub },
|
|
61857
|
+
react_1.default.createElement("h2", { className: KiwiBookingModal_scss_1.default.successTitle }, t('kiwi.booking.confirmed.title')),
|
|
61858
|
+
react_1.default.createElement("p", { className: KiwiBookingModal_scss_1.default.successSub }, t('kiwi.booking.confirmed.subtitle')),
|
|
61853
61859
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.confirmCard },
|
|
61854
61860
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.confirmRow },
|
|
61855
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel },
|
|
61861
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel }, t('kiwi.booking.confirmed.confirmationId')),
|
|
61856
61862
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmId }, confirmationId)),
|
|
61857
61863
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.confirmRow },
|
|
61858
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel },
|
|
61864
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel }, t('kiwi.booking.confirmed.hotel')),
|
|
61859
61865
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmValue }, hotelName)),
|
|
61860
61866
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.confirmRow },
|
|
61861
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel },
|
|
61867
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel }, t('kiwi.booking.confirmed.room')),
|
|
61862
61868
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmValue }, roomTitle)),
|
|
61863
61869
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.confirmRow },
|
|
61864
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel },
|
|
61870
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel }, t('kiwi.common.checkIn')),
|
|
61865
61871
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmValue }, fmtDate(checkIn))),
|
|
61866
61872
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.confirmRow },
|
|
61867
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel },
|
|
61873
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel }, t('kiwi.common.checkOut')),
|
|
61868
61874
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmValue }, fmtDate(checkOut))),
|
|
61869
61875
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.confirmRow },
|
|
61870
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel },
|
|
61876
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel }, t('kiwi.common.guests')),
|
|
61871
61877
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmValue }, guestCountLabel)),
|
|
61872
61878
|
react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.confirmRow },
|
|
61873
|
-
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel },
|
|
61879
|
+
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmLabel }, t('kiwi.common.total')),
|
|
61874
61880
|
react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.confirmValue },
|
|
61875
61881
|
fmtPrice(total, currency),
|
|
61876
61882
|
" ",
|
|
@@ -61881,12 +61887,12 @@ const KiwiBookingModal = ({ hotelName, roomTitle, rate, currency, checkIn, check
|
|
|
61881
61887
|
lead.first_name,
|
|
61882
61888
|
" ",
|
|
61883
61889
|
lead.last_name))),
|
|
61884
|
-
react_1.default.createElement("button", { type: "button", className: KiwiBookingModal_scss_1.default.doneBtn, onClick: onClose },
|
|
61890
|
+
react_1.default.createElement("button", { type: "button", className: KiwiBookingModal_scss_1.default.doneBtn, onClick: onClose }, t('kiwi.booking.confirmed.done'))))),
|
|
61885
61891
|
step !== 3 && (react_1.default.createElement("div", { className: KiwiBookingModal_scss_1.default.footer },
|
|
61886
|
-
step === 2 ? (react_1.default.createElement("button", { type: "button", className: KiwiBookingModal_scss_1.default.backBtn, onClick: () => { setErrors({}); setApiError(''); setStep(1); } },
|
|
61892
|
+
step === 2 ? (react_1.default.createElement("button", { type: "button", className: KiwiBookingModal_scss_1.default.backBtn, onClick: () => { setErrors({}); setApiError(''); setStep(1); } }, t('kiwi.common.back'))) : (react_1.default.createElement("span", null)),
|
|
61887
61893
|
react_1.default.createElement("button", { type: "button", className: KiwiBookingModal_scss_1.default.nextBtn, onClick: goNext, disabled: submitting },
|
|
61888
61894
|
submitting && react_1.default.createElement("span", { className: KiwiBookingModal_scss_1.default.spinner }),
|
|
61889
|
-
step === 1 ? '
|
|
61895
|
+
step === 1 ? t('kiwi.booking.continueToPayment') : submitting ? t('kiwi.booking.processing') : t('kiwi.booking.confirmBooking')))))));
|
|
61890
61896
|
return react_dom_1.default.createPortal(content, document.body);
|
|
61891
61897
|
};
|
|
61892
61898
|
exports.default = KiwiBookingModal;
|
|
@@ -83392,7 +83398,7 @@ const RadioButtonQuestion = ({ defaultAnswer, radioButtonChange, box = false, fl
|
|
|
83392
83398
|
if (box)
|
|
83393
83399
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
83394
83400
|
react_1.default.createElement("h4", { className: `mb4 ${RadioButtonQuestion_scss_1.default.title}` }, question.name),
|
|
83395
|
-
react_1.default.createElement("div", { style:
|
|
83401
|
+
react_1.default.createElement("div", { style: { display: 'flex', flexDirection: 'column', gap: '1rem' }, onKeyPress: () => { }, role: "button", tabIndex: 0, onFocus: () => {
|
|
83396
83402
|
if (onFocus)
|
|
83397
83403
|
onFocus();
|
|
83398
83404
|
}, onBlur: () => {
|
|
@@ -93679,7 +93685,7 @@ const KiwiHotelCard_scss_1 = __importDefault(__webpack_require__(1134));
|
|
|
93679
93685
|
const KiwiHotelCardImage_1 = __importDefault(__webpack_require__(1135));
|
|
93680
93686
|
const KiwiVisaBenefitsModal_1 = __importDefault(__webpack_require__(450));
|
|
93681
93687
|
const currencySymbol_1 = __webpack_require__(123);
|
|
93682
|
-
const KiwiHotelCard = ({ hotel, isFavorite, onFavoriteToggle, showVisaBadge, onHover, onSpecialOffersClick, onCardClick }) => {
|
|
93688
|
+
const KiwiHotelCard = ({ hotel, isFavorite, onFavoriteToggle, showVisaBadge, onHover, onSpecialOffersClick, onCardClick, t }) => {
|
|
93683
93689
|
const [visaModalOpen, setVisaModalOpen] = (0, react_1.useState)(false);
|
|
93684
93690
|
const starCount = Math.min(5, Math.round(parseFloat(hotel.starRating) || 0));
|
|
93685
93691
|
const score = parseFloat(hotel.kiwiOverallScore) || 0;
|
|
@@ -93717,11 +93723,11 @@ const KiwiHotelCard = ({ hotel, isFavorite, onFavoriteToggle, showVisaBadge, onH
|
|
|
93717
93723
|
price > 0 && (react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.price },
|
|
93718
93724
|
(0, currencySymbol_1.getCurrencySymbol)(hotel.currencyCode),
|
|
93719
93725
|
price.toFixed(0),
|
|
93720
|
-
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.priceUnit },
|
|
93726
|
+
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.priceUnit }, t('kiwi.common.perNight')))),
|
|
93721
93727
|
hotel.websiteURL && (react_1.default.createElement("button", { type: "button", className: KiwiHotelCard_scss_1.default.bookBtn, onClick: (e) => {
|
|
93722
93728
|
e.stopPropagation();
|
|
93723
93729
|
window.open(hotel.websiteURL, '_blank', 'noopener,noreferrer');
|
|
93724
|
-
} },
|
|
93730
|
+
} }, t('kiwi.card.book'))))),
|
|
93725
93731
|
react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.row2 },
|
|
93726
93732
|
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.name }, hotel.title),
|
|
93727
93733
|
starCount > 0 && (react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.goldStars }, Array.from({ length: starCount }, (_, i) => (react_1.default.createElement("svg", { key: i, className: KiwiHotelCard_scss_1.default.goldStar, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
@@ -93731,32 +93737,32 @@ const KiwiHotelCard = ({ hotel, isFavorite, onFavoriteToggle, showVisaBadge, onH
|
|
|
93731
93737
|
perks.length > 0 && (react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.perksRow },
|
|
93732
93738
|
react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.infoCell },
|
|
93733
93739
|
react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.perksLabelRow },
|
|
93734
|
-
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel },
|
|
93740
|
+
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel }, t('kiwi.card.perks')),
|
|
93735
93741
|
showVisaBadge && (
|
|
93736
93742
|
// eslint-disable-next-line jsx-a11y/control-has-associated-label
|
|
93737
93743
|
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.visaBadge, onClick: (e) => {
|
|
93738
93744
|
e.stopPropagation();
|
|
93739
93745
|
setVisaModalOpen(true);
|
|
93740
|
-
}, role: "button", tabIndex: 0, onKeyDown: () => { }, "aria-label":
|
|
93746
|
+
}, role: "button", tabIndex: 0, onKeyDown: () => { }, "aria-label": t('kiwi.card.visaPremiumBenefits') })))),
|
|
93741
93747
|
react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.infoCell }, hasSpecialOffer ? (react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.perksLabelRow, onClick: (e) => {
|
|
93742
93748
|
e.stopPropagation();
|
|
93743
93749
|
if (onSpecialOffersClick)
|
|
93744
93750
|
onSpecialOffersClick(hotel);
|
|
93745
93751
|
}, role: "button", tabIndex: 0, onKeyDown: () => { }, style: { cursor: 'pointer' } },
|
|
93746
|
-
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel },
|
|
93752
|
+
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel }, t('kiwi.common.specialOffers')),
|
|
93747
93753
|
react_1.default.createElement("svg", { className: KiwiHotelCard_scss_1.default.specialOfferIcon, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
93748
93754
|
react_1.default.createElement("path", { d: "M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58s1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41s-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z" })))) : (react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellValue }, perks.join(' \u00B7 ')))))),
|
|
93749
93755
|
(roomCount || settings || styles) && (react_1.default.createElement("div", { className: KiwiHotelCard_scss_1.default.infoRow },
|
|
93750
93756
|
roomCount && (react_1.default.createElement("div", { className: `${KiwiHotelCard_scss_1.default.infoCell} ${KiwiHotelCard_scss_1.default.cellThird}` },
|
|
93751
|
-
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel },
|
|
93757
|
+
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel }, t('kiwi.common.roomsSuites')),
|
|
93752
93758
|
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.valueBadge }, roomCount))),
|
|
93753
93759
|
settings && (react_1.default.createElement("div", { className: `${KiwiHotelCard_scss_1.default.infoCell} ${KiwiHotelCard_scss_1.default.cellThird}` },
|
|
93754
|
-
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel },
|
|
93760
|
+
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel }, t('kiwi.common.setting')),
|
|
93755
93761
|
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.valueBadge }, settings))),
|
|
93756
93762
|
styles && (react_1.default.createElement("div", { className: `${KiwiHotelCard_scss_1.default.infoCell} ${KiwiHotelCard_scss_1.default.cellThird}` },
|
|
93757
|
-
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel },
|
|
93763
|
+
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.cellLabel }, t('kiwi.common.style')),
|
|
93758
93764
|
react_1.default.createElement("span", { className: KiwiHotelCard_scss_1.default.valueBadge }, styles)))))))),
|
|
93759
|
-
visaModalOpen && react_1.default.createElement(KiwiVisaBenefitsModal_1.default, { onClose: () => setVisaModalOpen(false) })));
|
|
93765
|
+
visaModalOpen && react_1.default.createElement(KiwiVisaBenefitsModal_1.default, { onClose: () => setVisaModalOpen(false), t: t })));
|
|
93760
93766
|
};
|
|
93761
93767
|
exports.default = KiwiHotelCard;
|
|
93762
93768
|
|
|
@@ -93960,13 +93966,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
93960
93966
|
const react_1 = __importStar(__webpack_require__(0));
|
|
93961
93967
|
const KiwiHotelFilterBar_scss_1 = __importDefault(__webpack_require__(1139));
|
|
93962
93968
|
const SORT_OPTIONS = [
|
|
93963
|
-
{ value: '',
|
|
93964
|
-
{ value: 'price_low_to_high',
|
|
93965
|
-
{ value: 'price_high_to_low',
|
|
93966
|
-
{ value: 'recently_added',
|
|
93967
|
-
{ value: 'star_rating',
|
|
93968
|
-
{ value: 'average_rating',
|
|
93969
|
-
{ value: 'alphabetical',
|
|
93969
|
+
{ value: '', tKey: 'kiwi.filterBar.sort.all' },
|
|
93970
|
+
{ value: 'price_low_to_high', tKey: 'kiwi.filterBar.sort.priceLow' },
|
|
93971
|
+
{ value: 'price_high_to_low', tKey: 'kiwi.filterBar.sort.priceHigh' },
|
|
93972
|
+
{ value: 'recently_added', tKey: 'kiwi.filterBar.sort.recentlyAdded' },
|
|
93973
|
+
{ value: 'star_rating', tKey: 'kiwi.filterBar.sort.starRating' },
|
|
93974
|
+
{ value: 'average_rating', tKey: 'kiwi.filterBar.sort.averageRating' },
|
|
93975
|
+
{ value: 'alphabetical', tKey: 'kiwi.filterBar.sort.alphabetical' },
|
|
93970
93976
|
];
|
|
93971
93977
|
const KiwiHotelFilterBar = ({ sortBy, onSortChange, onShowMapToggle, onFilterToggle, showMap, resultCount, t }) => {
|
|
93972
93978
|
const [sortOpen, setSortOpen] = (0, react_1.useState)(false);
|
|
@@ -93984,26 +93990,26 @@ const KiwiHotelFilterBar = ({ sortBy, onSortChange, onShowMapToggle, onFilterTog
|
|
|
93984
93990
|
react_1.default.createElement("div", { className: `${KiwiHotelFilterBar_scss_1.default.left} ${showMap ? KiwiHotelFilterBar_scss_1.default.leftActive : ''}`, onClick: onShowMapToggle, role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
93985
93991
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
93986
93992
|
react_1.default.createElement("path", { d: "M20.5 3l-.16.03L15 5.1 9 3 3.36 4.9c-.21.07-.36.25-.36.48V20.5c0 .28.22.5.5.5l.16-.03L9 18.9l6 2.1 5.64-1.9c.21-.07.36-.25.36-.48V3.5c0-.28-.22-.5-.5-.5zM15 19l-6-2.11V5l6 2.11V19z" })),
|
|
93987
|
-
react_1.default.createElement("span", null,
|
|
93993
|
+
react_1.default.createElement("span", null, t('kiwi.filterBar.viewOnMap'))),
|
|
93988
93994
|
react_1.default.createElement("div", { className: KiwiHotelFilterBar_scss_1.default.right },
|
|
93989
93995
|
react_1.default.createElement("div", { className: KiwiHotelFilterBar_scss_1.default.sortWrapper, ref: sortRef },
|
|
93990
93996
|
react_1.default.createElement("div", { className: KiwiHotelFilterBar_scss_1.default.actionBtn, onClick: () => setSortOpen(!sortOpen), role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
93991
93997
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
93992
93998
|
react_1.default.createElement("path", { d: "M16 17.01V10h-2v7.01h-3L15 21l4-3.99h-3zM9 3L5 6.99h3V14h2V6.99h3L9 3z" })),
|
|
93993
|
-
react_1.default.createElement("span", null,
|
|
93999
|
+
react_1.default.createElement("span", null, t('kiwi.filterBar.sortBy'))),
|
|
93994
94000
|
sortOpen && (react_1.default.createElement("div", { className: KiwiHotelFilterBar_scss_1.default.sortDropdown },
|
|
93995
|
-
react_1.default.createElement("div", { className: KiwiHotelFilterBar_scss_1.default.sortHeader },
|
|
94001
|
+
react_1.default.createElement("div", { className: KiwiHotelFilterBar_scss_1.default.sortHeader }, t('kiwi.filterBar.sortBy')),
|
|
93996
94002
|
react_1.default.createElement("div", { className: KiwiHotelFilterBar_scss_1.default.sortDivider }),
|
|
93997
94003
|
react_1.default.createElement("div", { className: KiwiHotelFilterBar_scss_1.default.sortList }, SORT_OPTIONS.map((option) => (react_1.default.createElement("div", { key: option.value, className: KiwiHotelFilterBar_scss_1.default.sortOption, onClick: () => {
|
|
93998
94004
|
onSortChange(option.value);
|
|
93999
94005
|
setSortOpen(false);
|
|
94000
94006
|
}, role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
94001
94007
|
react_1.default.createElement("span", { className: `${KiwiHotelFilterBar_scss_1.default.radio} ${sortBy === option.value ? KiwiHotelFilterBar_scss_1.default.radioActive : ''}` }),
|
|
94002
|
-
react_1.default.createElement("span", null, option.
|
|
94008
|
+
react_1.default.createElement("span", null, t(option.tKey))))))))),
|
|
94003
94009
|
onFilterToggle && (react_1.default.createElement("div", { className: KiwiHotelFilterBar_scss_1.default.actionBtn, onClick: onFilterToggle, role: "button", tabIndex: 0, onKeyDown: () => { } },
|
|
94004
94010
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
94005
94011
|
react_1.default.createElement("path", { d: "M3 17v2h6v-2H3zM3 5v2h10V5H3zm10 16v-2h8v-2h-8v-2h-2v6h2zM7 9v2H3v2h4v2h2V9H7zm14 4v-2H11v2h10zm-6-4h2V7h4V5h-4V3h-2v6z" })),
|
|
94006
|
-
react_1.default.createElement("span", null,
|
|
94012
|
+
react_1.default.createElement("span", null, t('kiwi.filterBar.filter')))))));
|
|
94007
94013
|
};
|
|
94008
94014
|
exports.default = KiwiHotelFilterBar;
|
|
94009
94015
|
|
|
@@ -94131,7 +94137,7 @@ const OptionRow = ({ label, count, selected, onToggle }) => (react_1.default.cre
|
|
|
94131
94137
|
const renderStars = (n) => (react_1.default.createElement("span", { className: KiwiHotelFilterModal_scss_1.default.stars }, Array.from({ length: n }, (_, i) => (react_1.default.createElement("svg", { key: i, className: KiwiHotelFilterModal_scss_1.default.star, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg" },
|
|
94132
94138
|
react_1.default.createElement("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" }))))));
|
|
94133
94139
|
/* ── Main component ── */
|
|
94134
|
-
const KiwiHotelFilterModal = ({ hotels, filters, onApply, onClose }) => {
|
|
94140
|
+
const KiwiHotelFilterModal = ({ hotels, filters, onApply, onClose, t }) => {
|
|
94135
94141
|
const [local, setLocal] = (0, react_1.useState)({ ...filters });
|
|
94136
94142
|
/* Aggregated options */
|
|
94137
94143
|
const locationOpts = (0, react_1.useMemo)(() => aggregateField(hotels, (h) => h.country), [hotels]);
|
|
@@ -94146,7 +94152,7 @@ const KiwiHotelFilterModal = ({ hotels, filters, onApply, onClose }) => {
|
|
|
94146
94152
|
const tags = [];
|
|
94147
94153
|
local.locations.forEach((v) => tags.push({ label: v, remove: () => setLocal((p) => ({ ...p, locations: p.locations.filter((x) => x !== v) })) }));
|
|
94148
94154
|
if (local.specialOffers)
|
|
94149
|
-
tags.push({ label: '
|
|
94155
|
+
tags.push({ label: t('kiwi.common.specialOffers'), remove: () => setLocal((p) => ({ ...p, specialOffers: false })) });
|
|
94150
94156
|
local.ratings.forEach((v) => tags.push({ label: `${'★'.repeat(v)}`, remove: () => setLocal((p) => ({ ...p, ratings: p.ratings.filter((x) => x !== v) })) }));
|
|
94151
94157
|
local.settings.forEach((v) => tags.push({ label: v, remove: () => setLocal((p) => ({ ...p, settings: p.settings.filter((x) => x !== v) })) }));
|
|
94152
94158
|
local.styles.forEach((v) => tags.push({ label: v, remove: () => setLocal((p) => ({ ...p, styles: p.styles.filter((x) => x !== v) })) }));
|
|
@@ -94156,7 +94162,7 @@ const KiwiHotelFilterModal = ({ hotels, filters, onApply, onClose }) => {
|
|
|
94156
94162
|
return react_dom_1.default.createPortal(react_1.default.createElement("div", { className: KiwiHotelFilterModal_scss_1.default.overlay, onClick: onClose, role: "presentation" },
|
|
94157
94163
|
react_1.default.createElement("div", { className: KiwiHotelFilterModal_scss_1.default.modal, onClick: (e) => e.stopPropagation() },
|
|
94158
94164
|
react_1.default.createElement("div", { className: KiwiHotelFilterModal_scss_1.default.header },
|
|
94159
|
-
react_1.default.createElement("span", { className: KiwiHotelFilterModal_scss_1.default.title },
|
|
94165
|
+
react_1.default.createElement("span", { className: KiwiHotelFilterModal_scss_1.default.title }, t('kiwi.filterModal.title')),
|
|
94160
94166
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelFilterModal_scss_1.default.closeBtn, onClick: onClose },
|
|
94161
94167
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
94162
94168
|
react_1.default.createElement("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })))),
|
|
@@ -94166,20 +94172,23 @@ const KiwiHotelFilterModal = ({ hotels, filters, onApply, onClose }) => {
|
|
|
94166
94172
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelFilterModal_scss_1.default.tagRemove, onClick: tag.remove },
|
|
94167
94173
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
94168
94174
|
react_1.default.createElement("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }))))))),
|
|
94169
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelFilterModal_scss_1.default.clearAllSmall, onClick: clearAll },
|
|
94175
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelFilterModal_scss_1.default.clearAllSmall, onClick: clearAll }, t('kiwi.common.clearAll')))),
|
|
94170
94176
|
react_1.default.createElement("div", { className: KiwiHotelFilterModal_scss_1.default.body },
|
|
94171
|
-
locationOpts.length > 0 && (react_1.default.createElement(Section, { title:
|
|
94172
|
-
specialOfferCount > 0 && (react_1.default.createElement(Section, { title:
|
|
94173
|
-
react_1.default.createElement(OptionRow, { label:
|
|
94174
|
-
ratingOpts.length > 0 && (react_1.default.createElement(Section, { title:
|
|
94175
|
-
settingOpts.length > 0 && (react_1.default.createElement(Section, { title:
|
|
94176
|
-
styleOpts.length > 0 && (react_1.default.createElement(Section, { title:
|
|
94177
|
-
interestOpts.length > 0 && (react_1.default.createElement(Section, { title:
|
|
94177
|
+
locationOpts.length > 0 && (react_1.default.createElement(Section, { title: t('kiwi.filterModal.location') }, locationOpts.map((o) => (react_1.default.createElement(OptionRow, { key: o.label, label: o.label, count: o.count, selected: local.locations.includes(o.label), onToggle: () => setLocal((p) => ({ ...p, locations: toggleValue(p.locations, o.label) })) }))))),
|
|
94178
|
+
specialOfferCount > 0 && (react_1.default.createElement(Section, { title: t('kiwi.common.specialOffers') },
|
|
94179
|
+
react_1.default.createElement(OptionRow, { label: t('kiwi.common.specialOffers'), count: specialOfferCount, selected: local.specialOffers, onToggle: () => setLocal((p) => ({ ...p, specialOffers: !p.specialOffers })) }))),
|
|
94180
|
+
ratingOpts.length > 0 && (react_1.default.createElement(Section, { title: t('kiwi.filterModal.rating') }, ratingOpts.map((o) => (react_1.default.createElement(OptionRow, { key: o.stars, label: renderStars(o.stars), count: o.count, selected: local.ratings.includes(o.stars), onToggle: () => setLocal((p) => ({ ...p, ratings: toggleValue(p.ratings, o.stars) })) }))))),
|
|
94181
|
+
settingOpts.length > 0 && (react_1.default.createElement(Section, { title: t('kiwi.common.setting') }, settingOpts.map((o) => (react_1.default.createElement(OptionRow, { key: o.label, label: o.label, count: o.count, selected: local.settings.includes(o.label), onToggle: () => setLocal((p) => ({ ...p, settings: toggleValue(p.settings, o.label) })) }))))),
|
|
94182
|
+
styleOpts.length > 0 && (react_1.default.createElement(Section, { title: t('kiwi.common.style') }, styleOpts.map((o) => (react_1.default.createElement(OptionRow, { key: o.label, label: o.label, count: o.count, selected: local.styles.includes(o.label), onToggle: () => setLocal((p) => ({ ...p, styles: toggleValue(p.styles, o.label) })) }))))),
|
|
94183
|
+
interestOpts.length > 0 && (react_1.default.createElement(Section, { title: t('kiwi.filterModal.interests') },
|
|
94178
94184
|
react_1.default.createElement("div", { className: KiwiHotelFilterModal_scss_1.default.twoCol }, interestOpts.map((o) => (react_1.default.createElement(OptionRow, { key: o.label, label: o.label, count: o.count, selected: local.interests.includes(o.label), onToggle: () => setLocal((p) => ({ ...p, interests: toggleValue(p.interests, o.label) })) })))))),
|
|
94179
|
-
brandOpts.length > 0 && (react_1.default.createElement(Section, { title:
|
|
94185
|
+
brandOpts.length > 0 && (react_1.default.createElement(Section, { title: t('kiwi.filterModal.brand') }, brandOpts.map((o) => (react_1.default.createElement(OptionRow, { key: o.label, label: o.label, count: o.count, selected: local.brands.includes(o.label), onToggle: () => setLocal((p) => ({ ...p, brands: toggleValue(p.brands, o.label) })) })))))),
|
|
94180
94186
|
react_1.default.createElement("div", { className: KiwiHotelFilterModal_scss_1.default.footer },
|
|
94181
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelFilterModal_scss_1.default.clearBtn, onClick: clearAll },
|
|
94182
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelFilterModal_scss_1.default.applyBtn, onClick: () => onApply(local) },
|
|
94187
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelFilterModal_scss_1.default.clearBtn, onClick: clearAll }, t('kiwi.common.clearAll')),
|
|
94188
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelFilterModal_scss_1.default.applyBtn, onClick: () => onApply(local) },
|
|
94189
|
+
filteredCount,
|
|
94190
|
+
" ",
|
|
94191
|
+
t('kiwi.filterModal.showHotels'))))), document.body);
|
|
94183
94192
|
};
|
|
94184
94193
|
exports.default = KiwiHotelFilterModal;
|
|
94185
94194
|
|
|
@@ -94243,16 +94252,16 @@ const KiwiRateDetailModal_1 = __importDefault(__webpack_require__(452));
|
|
|
94243
94252
|
const KiwiRoomRateModal_1 = __importDefault(__webpack_require__(453));
|
|
94244
94253
|
const KiwiBookingModal_1 = __importDefault(__webpack_require__(454));
|
|
94245
94254
|
const RATING_LABELS = [
|
|
94246
|
-
{ key: 'service',
|
|
94247
|
-
{ key: 'rooms',
|
|
94248
|
-
{ key: 'location',
|
|
94249
|
-
{ key: 'foodBeverage',
|
|
94250
|
-
{ key: 'spaFitness',
|
|
94251
|
-
{ key: 'attentionToDetail',
|
|
94252
|
-
{ key: 'generosityValue',
|
|
94253
|
-
{ key: 'wowHipFactor',
|
|
94254
|
-
{ key: 'architectureDesign',
|
|
94255
|
-
{ key: 'fitToPromise',
|
|
94255
|
+
{ key: 'service', tKey: 'kiwi.infoModal.rating.service' },
|
|
94256
|
+
{ key: 'rooms', tKey: 'kiwi.infoModal.rating.rooms' },
|
|
94257
|
+
{ key: 'location', tKey: 'kiwi.infoModal.rating.location' },
|
|
94258
|
+
{ key: 'foodBeverage', tKey: 'kiwi.infoModal.rating.foodBeverage' },
|
|
94259
|
+
{ key: 'spaFitness', tKey: 'kiwi.infoModal.rating.spaFitness' },
|
|
94260
|
+
{ key: 'attentionToDetail', tKey: 'kiwi.infoModal.rating.attentionToDetail' },
|
|
94261
|
+
{ key: 'generosityValue', tKey: 'kiwi.infoModal.rating.generosityValue' },
|
|
94262
|
+
{ key: 'wowHipFactor', tKey: 'kiwi.infoModal.rating.wowFactor' },
|
|
94263
|
+
{ key: 'architectureDesign', tKey: 'kiwi.infoModal.rating.architectureDesign' },
|
|
94264
|
+
{ key: 'fitToPromise', tKey: 'kiwi.infoModal.rating.fitToPromise' },
|
|
94256
94265
|
];
|
|
94257
94266
|
const FALLBACK_VISA_BENEFITS = [
|
|
94258
94267
|
'Best available rate guarantee',
|
|
@@ -94265,13 +94274,13 @@ const FALLBACK_VISA_BENEFITS = [
|
|
|
94265
94274
|
];
|
|
94266
94275
|
const DESCRIPTION_TRUNCATE_LENGTH = 380;
|
|
94267
94276
|
const TABS = [
|
|
94268
|
-
{ key: 'overview',
|
|
94269
|
-
{ key: 'location',
|
|
94270
|
-
{ key: 'amenities',
|
|
94271
|
-
{ key: 'rooms',
|
|
94272
|
-
{ key: 'contact',
|
|
94277
|
+
{ key: 'overview', tKey: 'kiwi.infoModal.tab.overview' },
|
|
94278
|
+
{ key: 'location', tKey: 'kiwi.infoModal.tab.location' },
|
|
94279
|
+
{ key: 'amenities', tKey: 'kiwi.infoModal.tab.amenities' },
|
|
94280
|
+
{ key: 'rooms', tKey: 'kiwi.infoModal.tab.rooms' },
|
|
94281
|
+
{ key: 'contact', tKey: 'kiwi.infoModal.tab.contactUs' },
|
|
94273
94282
|
];
|
|
94274
|
-
const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchPropertyAvailability, availabilityRequest, searchDestination = '', searchCheckIn = '', searchCheckOut = '', searchAdults = 2, searchChildren = 0, searchCitySuggestions, onSearchDestinationChange, onSearchCitySelect, onSearchCheckInChange, onSearchCheckOutChange, onSearchAdultsChange, onSearchChildrenChange, onSearch, onBookNow, onCreateReservation, onReservationCreated, generateExternalId, isFavorite, onFavoriteToggle, showVisaBadge, dayBadgeText, onDayBadgeRemove, onShare, topOffset = '0px', onRoomsTabView, onRoomAvailabilitySearch, onRateDetailOpen, onSeeMoreDetails, onBookNowClick, onReservationFailed, }) => {
|
|
94283
|
+
const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchPropertyAvailability, availabilityRequest, searchDestination = '', searchCheckIn = '', searchCheckOut = '', searchAdults = 2, searchChildren = 0, searchCitySuggestions, onSearchDestinationChange, onSearchCitySelect, onSearchCheckInChange, onSearchCheckOutChange, onSearchAdultsChange, onSearchChildrenChange, onSearch, onBookNow, onCreateReservation, onReservationCreated, generateExternalId, isFavorite, onFavoriteToggle, showVisaBadge, dayBadgeText, onDayBadgeRemove, onShare, topOffset = '0px', onRoomsTabView, onRoomAvailabilitySearch, onRateDetailOpen, onSeeMoreDetails, onBookNowClick, onReservationFailed, t, }) => {
|
|
94275
94284
|
var _a, _b;
|
|
94276
94285
|
const [propertyDetail, setPropertyDetail] = (0, react_1.useState)(undefined);
|
|
94277
94286
|
const [loadingDetail, setLoadingDetail] = (0, react_1.useState)(false);
|
|
@@ -94469,14 +94478,14 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94469
94478
|
setMobileTouchStartX(null);
|
|
94470
94479
|
} },
|
|
94471
94480
|
react_1.default.createElement("img", { src: imageUrls[photoIndex], alt: data.title, className: KiwiHotelInfoModal_scss_1.default.mobileCarouselImg, loading: "lazy" }),
|
|
94472
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.mobileCloseBtn, onClick: onClose, "aria-label":
|
|
94481
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.mobileCloseBtn, onClick: onClose, "aria-label": t('kiwi.common.close') },
|
|
94473
94482
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
94474
94483
|
react_1.default.createElement("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }))),
|
|
94475
94484
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.mobileTopRight },
|
|
94476
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.mobileIconBtn, onClick: () => onFavoriteToggle === null || onFavoriteToggle === void 0 ? void 0 : onFavoriteToggle(hotel), "aria-label":
|
|
94485
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.mobileIconBtn, onClick: () => onFavoriteToggle === null || onFavoriteToggle === void 0 ? void 0 : onFavoriteToggle(hotel), "aria-label": t('kiwi.infoModal.favorite') },
|
|
94477
94486
|
react_1.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: isFavorite ? '#e11d48' : 'none', stroke: isFavorite ? '#e11d48' : '#111827', strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
94478
94487
|
react_1.default.createElement("path", { d: "M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" }))),
|
|
94479
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.mobileIconBtn, onClick: () => onShare === null || onShare === void 0 ? void 0 : onShare(hotel), "aria-label":
|
|
94488
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.mobileIconBtn, onClick: () => onShare === null || onShare === void 0 ? void 0 : onShare(hotel), "aria-label": t('kiwi.infoModal.share') },
|
|
94480
94489
|
react_1.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", stroke: "#111827", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
94481
94490
|
react_1.default.createElement("path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8" }),
|
|
94482
94491
|
react_1.default.createElement("polyline", { points: "16 6 12 2 8 6" }),
|
|
@@ -94495,18 +94504,18 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94495
94504
|
})));
|
|
94496
94505
|
})()))),
|
|
94497
94506
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.closeRow },
|
|
94498
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.closeBtn, onClick: onClose, "aria-label":
|
|
94507
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.closeBtn, onClick: onClose, "aria-label": t('kiwi.common.close') },
|
|
94499
94508
|
react_1.default.createElement("svg", { viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
94500
94509
|
react_1.default.createElement("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })))),
|
|
94501
94510
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.titleRow },
|
|
94502
94511
|
react_1.default.createElement("h2", { className: KiwiHotelInfoModal_scss_1.default.hotelName }, data.title),
|
|
94503
94512
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.headerActions },
|
|
94504
|
-
onShare && (react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.iconBtn, onClick: () => onShare(hotel), "aria-label":
|
|
94513
|
+
onShare && (react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.iconBtn, onClick: () => onShare(hotel), "aria-label": t('kiwi.infoModal.share') },
|
|
94505
94514
|
react_1.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "none", stroke: "#111827", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
94506
94515
|
react_1.default.createElement("path", { d: "M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8" }),
|
|
94507
94516
|
react_1.default.createElement("polyline", { points: "16 6 12 2 8 6" }),
|
|
94508
94517
|
react_1.default.createElement("line", { x1: "12", y1: "2", x2: "12", y2: "15" })))),
|
|
94509
|
-
onFavoriteToggle && (react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.iconBtn, onClick: () => onFavoriteToggle(hotel), "aria-label":
|
|
94518
|
+
onFavoriteToggle && (react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.iconBtn, onClick: () => onFavoriteToggle(hotel), "aria-label": t('kiwi.infoModal.favorite') },
|
|
94510
94519
|
react_1.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: isFavorite ? '#e11d48' : 'none', stroke: isFavorite ? '#e11d48' : '#111827', strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
94511
94520
|
react_1.default.createElement("path", { d: "M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" })))))),
|
|
94512
94521
|
locationText && react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.hotelLocation }, locationText),
|
|
@@ -94550,17 +94559,17 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94550
94559
|
e.stopPropagation();
|
|
94551
94560
|
setPhotoIndex(0);
|
|
94552
94561
|
setPhotosOpen(true);
|
|
94553
|
-
} },
|
|
94562
|
+
} }, t('kiwi.infoModal.showAllPhotos'))))),
|
|
94554
94563
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.priceBlock },
|
|
94555
94564
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.priceLeft },
|
|
94556
94565
|
showVisaBadge && (react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.visaBadge, onClick: (e) => {
|
|
94557
94566
|
e.stopPropagation();
|
|
94558
94567
|
setVisaModalOpen(true);
|
|
94559
|
-
}, role: "button", tabIndex: 0, onKeyDown: () => { }, "aria-label":
|
|
94568
|
+
}, role: "button", tabIndex: 0, onKeyDown: () => { }, "aria-label": t('kiwi.card.visaPremiumBenefits') })),
|
|
94560
94569
|
hasSpecialOffer && (react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.specialOffersBtn, onClick: (e) => {
|
|
94561
94570
|
e.stopPropagation();
|
|
94562
94571
|
setOffersModalOpen(true);
|
|
94563
|
-
}, role: "button", tabIndex: 0, onKeyDown: () => { }, "aria-label":
|
|
94572
|
+
}, role: "button", tabIndex: 0, onKeyDown: () => { }, "aria-label": t('kiwi.common.specialOffers') }))),
|
|
94564
94573
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.priceRight },
|
|
94565
94574
|
formattedPrice && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.priceValue },
|
|
94566
94575
|
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.priceSymbol }, (0, currencySymbol_1.getCurrencySymbol)(currency)),
|
|
@@ -94568,11 +94577,12 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94568
94577
|
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.priceUnit },
|
|
94569
94578
|
" ",
|
|
94570
94579
|
currency,
|
|
94571
|
-
"/
|
|
94572
|
-
|
|
94580
|
+
"/",
|
|
94581
|
+
t('kiwi.common.night')))),
|
|
94582
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.findRoomBtn, onClick: handleFindRoom }, t('kiwi.infoModal.findRoom')))),
|
|
94573
94583
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.mobileFindRoomRow },
|
|
94574
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.mobileFindRoomBtn, onClick: handleFindRoom },
|
|
94575
|
-
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.tabs }, TABS.map((tab) => (react_1.default.createElement("button", { key: tab.key, type: "button", className: `${KiwiHotelInfoModal_scss_1.default.tab} ${activeTab === tab.key ? KiwiHotelInfoModal_scss_1.default.tabActive : ''}`, onClick: () => setActiveTab(tab.key) }, tab.
|
|
94584
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.mobileFindRoomBtn, onClick: handleFindRoom }, t('kiwi.infoModal.findRoom'))),
|
|
94585
|
+
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.tabs }, TABS.map((tab) => (react_1.default.createElement("button", { key: tab.key, type: "button", className: `${KiwiHotelInfoModal_scss_1.default.tab} ${activeTab === tab.key ? KiwiHotelInfoModal_scss_1.default.tabActive : ''}`, onClick: () => setActiveTab(tab.key) }, t(tab.tKey))))),
|
|
94576
94586
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.tabContent },
|
|
94577
94587
|
activeTab === 'overview' && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.overview },
|
|
94578
94588
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.quickInfo },
|
|
@@ -94583,7 +94593,7 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94583
94593
|
react_1.default.createElement("pattern", { id: "icon-rooms", patternContentUnits: "objectBoundingBox", width: "1", height: "1" },
|
|
94584
94594
|
react_1.default.createElement("use", { xlinkHref: "#icon-rooms-img", transform: "scale(0.01)" })),
|
|
94585
94595
|
react_1.default.createElement("image", { id: "icon-rooms-img", width: "100", height: "100", preserveAspectRatio: "none", xlinkHref: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEL0lEQVR4nO3cz4scRRQH8Le4m52pmuzsq35vJprREY344yJGb+JNED14EFRU8JYFjf+CCt4VxNPmpOSkCP4APYgXox7UCB4U9CBJREVXDZgI/oiovO6K0UCYZcN0v+75fqAOe9juev3tru7pqhkiAAAAAAAAAAAAAAAAAIC6LfeL4pZ+UdwdWA4Elg0n7UDZJ5GbrY+dPy0GKd0QWV4ISX+KSf/23IL1keX5QVFcRx20K7A8F5P+ea5g+TSyvhaTHopJN520Q9anwPrZf8I5E1iftRqoC4bDIYck7+bifrfiVoejq8i5tTW9Op9Ef+Qr5h2rhVpuObC8XYUhx8O63kgtE4ZyU0x6ogyF5a1W31si61NlGKzf9FPaSy3VT2kSWb/NQ+0T1EZB5NLI8ktM+teA9VZqucG63Ga1BJbTQXUPtU1I8mQee1+kjggsL+er5HFqm5jkk+reMbqdOiKw3pGH4I+pVabTnl3ekeVXIlqh7tgVk/xmtRHtW6W2sMfa/GT1JXVMTHLMalsdjq+ktggi+9t5ac9mNZX3EZH91Bb2LigHcpQ6JrIezYHY+652QCDOIBBnEIgzCMQZBNLSQHrMl9vriMB6auaEEeupyPLK7qK4drv9mMf2O/uUVR6sHcwchqQn7X9n9WFe2+9sIGdf1O1wevWlmX2Y0/Y7HMjsYSReeHj5eWYf5rT9zgay04MVc5vVh3ltv9WB2Hhs8+khyZYtFrjYgxSba2eshqoWPdmmQJYiy/3nrdroZAtWI8t9VjN5ZNOaMemb5zotxwPrMzZBVb6qnk571FbTac9qsFqqmqpFD7m9EUejMXmyW+QaC6A6c+T7AesjHZuYOt/KYF0ftVrzyXdsTXUfedAvistsVUnZMdYP7W9aEP2U9kbWj3LtX9vCjqb7tBySvF/dwOU9mkz6tGgmk/7/jgHRJY31JRZ6MI+jJ+J4PKIFFUejcUz6lR2LPFw3dmb8WHYi6T204AZJ781XyVYjDzAh6cN57PzA7aNfvZbsHloek/XioZr3XX4Sfr3ceaEHa9+5UzHpY9VJKq/Wve+ls29St/PmdVH0mK/Iw9YPtY4a+Sa2rZd8iyawnC7vq4M9Wu83oapAPq9tpy0RWL+oHnTS9fXttMPrri5WI2+DEciFIRBnEIgzCMQZBOIMAnEGgTiDQJxBIM4gEGcQiDMIxBkE4gwCcQaBONNIIJigcjZBlRfIbf27trX5n+bbdNLKtc2B5bvaF8wFlrtsTr3pVejRWbNjEljupCbYakVbIFb+xGqSw9WKCz3i4OdeN2ppSY/kVSaH7e9ysZyXFZzWoXyWbNKCiNUwZUPUBnmDQJxBIM4gEGcQiDMIxJnIxYP5sfdpWhCh+gKorXZ/gBxasa8Jd+H30bfLarXPHh3/gisAAAAAAAAAAAAAAAAAUF3+Aas4nOGFV3mWAAAAAElFTkSuQmCC" }))),
|
|
94586
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.quickLabel },
|
|
94596
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.quickLabel }, t('kiwi.common.roomsSuites')),
|
|
94587
94597
|
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.quickValue }, roomCount))),
|
|
94588
94598
|
settings && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.quickRow },
|
|
94589
94599
|
react_1.default.createElement("svg", { width: "22", height: "22", viewBox: "0 0 22 22", fill: "none", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", className: KiwiHotelInfoModal_scss_1.default.quickIcon },
|
|
@@ -94592,7 +94602,7 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94592
94602
|
react_1.default.createElement("pattern", { id: "icon-setting", patternContentUnits: "objectBoundingBox", width: "1", height: "1" },
|
|
94593
94603
|
react_1.default.createElement("use", { xlinkHref: "#icon-setting-img", transform: "scale(0.01)" })),
|
|
94594
94604
|
react_1.default.createElement("image", { id: "icon-setting-img", width: "100", height: "100", preserveAspectRatio: "none", xlinkHref: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAISklEQVR4nO2dC4wlRRVAa2d2Z+ZV9UzPvX3vezvL6ABZDd/ITwHBxA+IhEWM0ZCQaIxAxAgECJ8ECfIJAkaQn0ICSPhIUEJUFIkiiSImYiDhJxqVP2RRYBM+Cyzsh9zq6rdvZtjZ9/Z1v349756kk5ed7urqulX3Vt26t9YYRVEURVEURVEURVEURVEURVEUpVDGAD7sgM9zwA9Z5Fcd8jqH/KxFvsVh/WBt/t6xxCKd5YDecsibtnRZoHtqSbJCBVMsQxb5Z6HR33XI10ST9CkAiI1ZORoh7myRzrRIL/t7gJ8fjRvbq1AKwgGfE3r/S7Uk+fiW7oui5WyR/uLvRXpUhKVCyZnRuLFDsBPrI+ADtnY/Ik5Y4H+lAuTTeiUQB43dLPBlFulxB/SmXPJb/k3+ZhYL/oN8j+db2n4G+fPZiIqQv2KMGSmwiiMW6ccOecMCtm29Bbqy4Hr0Bof0ZOjth3Q4AXhkc4PQM7Wk/qUCqjdige8N73jHAl9ew8a+ptFwcslvEUQY4dJB/lhtoczMjDnkjfIxqQFvn/HxFYlDOtEiPdYimB/IBCGv6oWRIZOIF+wkf2yL98W8h9wThHKFqSq1yeTw9IPp7S6KGXLIJ2S91CFdlEfdxC6IKvIjYwFhZNiY9sxsoYPGrqZqOOTj0w/2ver2bsuzwIe0qI5Dc7NtwJe3/wxdFZ651FQJi/yNoKo2WqTvGWOW5lGuAzolTIn/a4wZ7qqOwP+QsmqIn2j3mRrW9wvvf8xUhShJdhIVJRWPgL+dc/HDFvjfviGT+hHdFGSBX5dymDlq95kkScbDCHndVAWHdHcwlNcXUb4FPjXYpRu6LGfxC0SMY2bEo2iKCnlH7I2rNMo/81FZjX3bfWYM6vtXSmU5pAtDhW8u6h0AEAeBvNZNORb4R51OY7NpskW+xFQBi/TX0FhfKO4tK0fDumRdN6XI1LU57Y15j63db4n2arqAEHcxVcAiveIbq15vFPWO0bixfbBRL3ZbVliFpwvDBYTihQH8Yuhsl5mqEFzrm4p0LzhIjgoLxLtzKG5E3CHZiBMBiZ0QQy+X/A5qKlv/3GOMWWaqguh1qXgcx5NFvcMh/y404Ak5FSlCuSJbxG7hei+MjOoIY9bMJUn2KaJ8lySf9gtOoDfznsWJTZEVuMygLNAb/pLfyJdUxmbMRdYGQc+ennfZYwAfskD/Czr/nLzLX5TUkuSLLWuE3Lyy40QfscBPhDXO36rtAu8tyxzS08EAHpNHgTWoH+eA1gZD/rBrNOp5lDswZLMg75ro3k09nAlDFpuyvZtTNQcLi3xbUC+rZQ7f5eJtk+wY5lvDQWN6uiZz9ubWKNLZ4pjrtBiLdHYQ7E3FVHSgWDlqkX7SEgD3HwnzaffpiYkJbMZpJclniq3rABEBH5jti1ugP7S5sTTsgH/dElig5EkNcTsJ6Qnq5/cSwLCgNxfol8GQvzwa13dUaRSAbJVmQklVEV0oK/o4jkH8RpZob9nuzdSURfp/J3sVyrYJZVrU1kLB1i697hqbXD6jjdwjxoA/KQbfIj3aFIKkJwBdqaOiZFwQSNn1UAJOBdJfOBVIf+FUIP2FU4H0F04F0l84FUh/4VQgAyuQEQnrkR1ICVxwyL/x+YRIT1nkNSGEaV0aW0ZPOuAHZFNMsoMlz0VcPGYQcEUJRLK3kvrnxGdmke7PIvK7uDb4LWSg74dM4iWmovieKelpDuinFvlP4eSGNbMTLf3H/soi/9Am/LWw/dtJDsiQd1ACny4e5Q84oGCD3wYAvt4CnxEhf9lBfXfJEg69f5nPmY+mSDzMkjFskY6WNDqL/Od5AgV+qDInT4gLXYIcHPKdPsV4G3ulRV5jge4QNTPBvHLOa5aJ38shnST3hGM6Zvdo32h0scQad5rj+MEjLvmsD6oL+YapkPnrpk9ZaoEO8/vps3vTxuBEvLYGybfkoyQ+N/TKIb/dy7xcgtEk01Z6uNfdITFn9kVPy3Zu6LFr5x/LIfntdHWE/NWi0iFaUqnPyqIax4k+avqGRsNJL3XIz7U0znpRGxbpm9LY21p0FE2RVy1IV2fp1fMuCZQGOqaM81GaW9QFJSd1xszMmAQhNCPe0x76hOhn2SEsKl3OIp3pgB+cMzJec0A3hjSIXPIZ26oP4i7ZyDRlZ0plcbxhd+9+O0mrehzjGJW0BKBT/AyqZXIgO42SLSt7+T2oz9JMbZkyz7vKYmzFNsipPqZkakmywiGdnBrxWTbnGW/UY9pz0S5ss9N6HPJv+/G0nghxZwd8viz45hl84HPl74tGILL1GkJzXqpAWOcSv5YAuqoZ8bJZrT0itiiPiJZSBZKdfiBH9JlqMeywfpADvm7eegX4AbFFEoBROYGImgoj5DBTXUbS9ZJf6/hc9ZZF3n0yhe8k4qVcgYTpprgozGJgerom6xyL/It5rhbgBy3Sd7eWPaUCKQgJ1nNAR1rkn88ZOT4BKTgV95k7lVaB9GrRO0mrvCMyC/jePJV+ykdYEk3JrSqQ3jMsyaZyjFOreyjNOPYuI7UhJTIkszXxLs/1qZVSm0Vn1LsgVWmbtxZMGahAZuMS/k7ZAvm7vHyhw5AHCUs0VfbC8C6vslLP7sDDMlVOk5DeKkcgwBdU/qjUAnx74TCD0k6Mk7NG1uph+cY0/4MB4HNLEYgXCvKt2V5IUTuDFWCJnEufrUdKbQcfUeIDzNJcQQlKkLNIKnd0UadMT9ckZEhClMIuZRY7cKQpG8khzwz8wF5AqyWi0fQT8r8YBD36bHaa3KK9wHuDn5P8eQt0rD+wX1EURVEURVEURVEURVEURVEURTFb430lc29ePtlAogAAAABJRU5ErkJggg==" }))),
|
|
94595
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.quickLabel },
|
|
94605
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.quickLabel }, t('kiwi.common.setting')),
|
|
94596
94606
|
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.quickValue }, settings))),
|
|
94597
94607
|
styles && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.quickRow },
|
|
94598
94608
|
react_1.default.createElement("svg", { width: "22", height: "22", viewBox: "0 0 22 22", fill: "none", xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", className: KiwiHotelInfoModal_scss_1.default.quickIcon },
|
|
@@ -94601,36 +94611,36 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94601
94611
|
react_1.default.createElement("pattern", { id: "icon-style", patternContentUnits: "objectBoundingBox", width: "1", height: "1" },
|
|
94602
94612
|
react_1.default.createElement("use", { xlinkHref: "#icon-style-img", transform: "scale(0.01)" })),
|
|
94603
94613
|
react_1.default.createElement("image", { id: "icon-style-img", width: "100", height: "100", preserveAspectRatio: "none", xlinkHref: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAADNUlEQVR4nO2ZTWsTURSGp/WjzX3TpPfMuQlBJIIKguBCEFy4cyn+Bf9C6UqXLt26dOtfEBcuxG8qCIJudCOKKCIiIopf1Sp3Mi1DBGs1kzmZvA9cCJk09/Z9MmfuR5IQQgghhBBCCCGEEELGAtLOcSf6MLb4mrFXhFPtwetFSFiDhJ+Fdmne+90UMz62Q3TZ+fA+E+D1o/PhTGzxdXxvcE2X42cppkSaPhxzog+Kd8Ncu7tn/XpDZFd+12TXnQ+PWcZKoNVqifPhPCT8GIStT5zXE398rvjwKBezlknqdjtljG3amHUSTjnRN3m4XyF6Lun35//ib3c6H07D6+fsbpHwDqJLSZJsG8O464dTPQyvK4Xyc7WZpge2+j2tVtgLCZcLZe5+QzpHyxl1DWm324t5efo+eGiHF/Eu+d/vbSymJyH6tFjGms2ejmbU9WQmK09eX+ehfYti0jRdGFkPvZ6DD2ch+iUvY2/zMjY7sj7qABY7h5zo7Y3yJOE6fPdgWf0tqO6H1ysbZcyHe400PVJWf5NDt4v4kIaE1XxN8SovTzPj6H5QxsLzXEycwV3w3reTaWQojNVYnkSkVcmPIitjcQY3/h9F5VgtFxhz2ayeyXigzpQ+sbBAPuV8NilTzvbvU++Xo5h6V86kL8rciBan1dPvz2flqR7bFrND2zdZGYuTgWQSqOvGXmuLG5yVMy1b381NjgAssCOWI+f1w/qBUSxXcbc1qfch2VLhkOzT4H/eN1f1wBJ4vTt0hDq9zetK1T4S58O1yoMQG81JuFG1D0LIPzN8S2/6eZ9t8hVqcjY5mLg+zGIxLFCIrbBAIbbCAoXYCgsUYissUIitsEAhtsIChdgKCxRiKyxQiK2wQCG2wgKF2AoLFGIrLFCIrbBAIbbCAoXYCgsUYissUIitsEAhtsIChdgKCxRiKyzUXYgTvTM84GltTvSWBSG3qg4CRpqTcLNqH4QQQgghhBBCOlyZB1srd67MA1fuhBBCCCGEEEIIIYQQQgghhJCkHH4BQxHq21Gtu/0AAAAASUVORK5CYII=" }))),
|
|
94604
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.quickLabel },
|
|
94614
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.quickLabel }, t('kiwi.common.style')),
|
|
94605
94615
|
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.quickValue }, styles)))),
|
|
94606
94616
|
description && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.descriptionBlock },
|
|
94607
94617
|
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.description }, visibleDescription),
|
|
94608
|
-
isLongDescription && (react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.readMore, onClick: () => setDescriptionExpanded((prev) => !prev) }, descriptionExpanded ? '
|
|
94618
|
+
isLongDescription && (react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.readMore, onClick: () => setDescriptionExpanded((prev) => !prev) }, descriptionExpanded ? t('kiwi.infoModal.readLess') : t('kiwi.infoModal.readMore'))))),
|
|
94609
94619
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.section },
|
|
94610
94620
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.sectionHeader },
|
|
94611
94621
|
react_1.default.createElement("svg", { className: KiwiHotelInfoModal_scss_1.default.sectionIcon, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
94612
94622
|
react_1.default.createElement("path", { d: "M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z" })),
|
|
94613
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.sectionTitle },
|
|
94623
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.sectionTitle }, t('kiwi.infoModal.averageRating'))),
|
|
94614
94624
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.averageOverall },
|
|
94615
94625
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.averageCircle }, overallScore > 0 ? overallScore.toFixed(1) : '—'),
|
|
94616
94626
|
localRating && (localRating.source || localRating.value) && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.localRating },
|
|
94617
94627
|
localRating.source && react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.localRatingSource }, localRating.source),
|
|
94618
94628
|
localRating.value && react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.localRatingValue }, localRating.value)))),
|
|
94619
|
-
kiwiRating ? (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.ratingGrid }, RATING_LABELS.map(({ key,
|
|
94629
|
+
kiwiRating ? (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.ratingGrid }, RATING_LABELS.map(({ key, tKey }) => {
|
|
94620
94630
|
const value = parseFloat(kiwiRating[key]) || 0;
|
|
94621
94631
|
const pct = Math.max(0, Math.min(100, (value / 10) * 100));
|
|
94622
94632
|
return (react_1.default.createElement("div", { key: key, className: KiwiHotelInfoModal_scss_1.default.ratingRow },
|
|
94623
94633
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.ratingHead },
|
|
94624
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.ratingLabel },
|
|
94634
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.ratingLabel }, t(tKey)),
|
|
94625
94635
|
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.ratingValue }, value)),
|
|
94626
94636
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.ratingBar },
|
|
94627
94637
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.ratingFill, style: { width: `${pct}%` } }))));
|
|
94628
|
-
}))) : loadingDetail ? (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.loadingHint },
|
|
94638
|
+
}))) : loadingDetail ? (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.loadingHint }, t('kiwi.infoModal.loadingRatings'))) : null),
|
|
94629
94639
|
benefitGroups.map((group) => (react_1.default.createElement("div", { key: group.title, className: KiwiHotelInfoModal_scss_1.default.section },
|
|
94630
94640
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.sectionHeader },
|
|
94631
94641
|
group.title === 'VISA' ? (react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.visaCircle, "aria-label": "Visa" })) : (react_1.default.createElement("svg", { className: `${KiwiHotelInfoModal_scss_1.default.sectionIcon} ${KiwiHotelInfoModal_scss_1.default.sectionIconPrimary}`, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "currentColor" },
|
|
94632
94642
|
react_1.default.createElement("path", { d: "M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z" }))),
|
|
94633
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.sectionTitle }, group.title === 'VISA' ? '
|
|
94643
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.sectionTitle }, group.title === 'VISA' ? t('kiwi.card.visaPremiumBenefits') : `${group.title} Benefits`)),
|
|
94634
94644
|
react_1.default.createElement("ul", { className: KiwiHotelInfoModal_scss_1.default.benefitsList }, group.benefits.map((benefit) => (react_1.default.createElement("li", { key: benefit, className: KiwiHotelInfoModal_scss_1.default.benefitItem },
|
|
94635
94645
|
react_1.default.createElement("svg", { className: KiwiHotelInfoModal_scss_1.default.checkSimple, width: "16", height: "16", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "none", stroke: "currentColor", strokeWidth: "3", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
94636
94646
|
react_1.default.createElement("polyline", { points: "20 6 9 17 4 12" })),
|
|
@@ -94640,7 +94650,7 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94640
94650
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.locationSectionHeader },
|
|
94641
94651
|
react_1.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: KiwiHotelInfoModal_scss_1.default.locationIcon },
|
|
94642
94652
|
react_1.default.createElement("path", { d: "M12 2C8.13 2 5 5.13 5 9c0 5.25 7 13 7 13s7-7.75 7-13c0-3.87-3.13-7-7-7zm0 9.5c-1.38 0-2.5-1.12-2.5-2.5s1.12-2.5 2.5-2.5 2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5z", fill: "#0B1215" })),
|
|
94643
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.locationSectionLabel },
|
|
94653
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.locationSectionLabel }, t('kiwi.infoModal.address'))),
|
|
94644
94654
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.locationAddressBlock },
|
|
94645
94655
|
data.addressLine1 && react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.locationAddressLine }, data.addressLine1),
|
|
94646
94656
|
data.addressLine2 && react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.locationAddressLine }, data.addressLine2),
|
|
@@ -94652,13 +94662,13 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94652
94662
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.locationDirectionsBtn, onClick: () => window.open(`https://www.google.com/maps/search/?api=1&query=${data.latitude},${data.longitude}`, '_blank', 'noopener,noreferrer') },
|
|
94653
94663
|
react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 24 24", fill: "currentColor", xmlns: "http://www.w3.org/2000/svg" },
|
|
94654
94664
|
react_1.default.createElement("path", { d: "M21.71 11.29l-9-9a.996.996 0 0 0-1.41 0l-9 9a.996.996 0 0 0 0 1.41l9 9c.39.39 1.02.39 1.41 0l9-9a.996.996 0 0 0 0-1.41zM14 14.5V12h-4v3H8v-4c0-.55.45-1 1-1h5V7.5l3.5 3.5-3.5 3.5z" })),
|
|
94655
|
-
|
|
94665
|
+
t('kiwi.infoModal.getDirections')))),
|
|
94656
94666
|
data.locationDescription && react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.locationDivider }),
|
|
94657
94667
|
data.locationDescription && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.locationSection },
|
|
94658
94668
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.locationSectionHeader },
|
|
94659
94669
|
react_1.default.createElement("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: KiwiHotelInfoModal_scss_1.default.locationIcon },
|
|
94660
94670
|
react_1.default.createElement("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z", fill: "#0B1215" })),
|
|
94661
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.locationSectionLabel },
|
|
94671
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.locationSectionLabel }, t('kiwi.infoModal.locationInfo'))),
|
|
94662
94672
|
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.locationDescription }, data.locationDescription))))),
|
|
94663
94673
|
activeTab === 'amenities' && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.amenitiesGrid }, (((_a = propertyDetail === null || propertyDetail === void 0 ? void 0 : propertyDetail.facilities) === null || _a === void 0 ? void 0 : _a.length) ? propertyDetail.facilities : data.amenities || []).map((item) => (react_1.default.createElement("div", { key: item, className: KiwiHotelInfoModal_scss_1.default.amenityItem },
|
|
94664
94674
|
react_1.default.createElement("svg", { className: KiwiHotelInfoModal_scss_1.default.amenityCheck, viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "none", stroke: "currentColor", strokeWidth: "2.5", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
@@ -94672,7 +94682,7 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94672
94682
|
onSearchCheckInChange(v); }, onCheckOutChange: (v) => { setInternalCheckOut(v); if (onSearchCheckOutChange)
|
|
94673
94683
|
onSearchCheckOutChange(v); }, onAdultsChange: (v) => { setInternalAdults(v); if (onSearchAdultsChange)
|
|
94674
94684
|
onSearchAdultsChange(v); }, onChildrenChange: (v) => { setInternalChildren(v); if (onSearchChildrenChange)
|
|
94675
|
-
onSearchChildrenChange(v); }, onSearch: handleRoomsSearch, t:
|
|
94685
|
+
onSearchChildrenChange(v); }, onSearch: handleRoomsSearch, t: t })),
|
|
94676
94686
|
(loadingAvailability || availabilityData !== undefined) && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.roomsTopBar },
|
|
94677
94687
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.currencyRow },
|
|
94678
94688
|
react_1.default.createElement("svg", { width: "22", height: "22", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
@@ -94687,31 +94697,35 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94687
94697
|
react_1.default.createElement("svg", { viewBox: "0 0 50 50", xmlns: "http://www.w3.org/2000/svg" },
|
|
94688
94698
|
react_1.default.createElement("circle", { cx: "25", cy: "25", r: "20" }))),
|
|
94689
94699
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.roomsLoadingText },
|
|
94690
|
-
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomsLoadingTitle },
|
|
94700
|
+
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomsLoadingTitle }, t('kiwi.infoModal.checkingAvailability')),
|
|
94691
94701
|
internalCheckIn && internalCheckOut && (react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomsLoadingDates },
|
|
94692
94702
|
new Date(internalCheckIn).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }),
|
|
94693
94703
|
' - ',
|
|
94694
94704
|
new Date(internalCheckOut).toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' })))))) : !availabilityData || availabilityData.rooms.length === 0 ? (availabilityData !== undefined ? (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.roomsEmpty },
|
|
94695
|
-
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomsEmptyTitle },
|
|
94696
|
-
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomsEmptySubtitle },
|
|
94705
|
+
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomsEmptyTitle }, t('kiwi.infoModal.noRooms.title')),
|
|
94706
|
+
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomsEmptySubtitle }, t('kiwi.infoModal.noRooms.tryOptions')),
|
|
94697
94707
|
react_1.default.createElement("ol", { className: KiwiHotelInfoModal_scss_1.default.roomsEmptyList },
|
|
94698
|
-
react_1.default.createElement("li", null,
|
|
94708
|
+
react_1.default.createElement("li", null, t('kiwi.infoModal.noRooms.changeDates')),
|
|
94699
94709
|
react_1.default.createElement("li", null,
|
|
94700
94710
|
"In some cases we may be able to find available rooms.",
|
|
94701
94711
|
react_1.default.createElement("br", null),
|
|
94702
|
-
|
|
94712
|
+
t('kiwi.infoModal.noRooms.callAgent'),
|
|
94713
|
+
" ",
|
|
94703
94714
|
react_1.default.createElement("strong", null, "1-800-953-7392"),
|
|
94704
|
-
"
|
|
94715
|
+
" ",
|
|
94716
|
+
t('kiwi.common.or'),
|
|
94705
94717
|
' ',
|
|
94706
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.roomsEmptyLink, onClick: () => window.open('https://www.visasignaturehotels.com/contact/rate', '_blank', 'noopener,noreferrer') },
|
|
94718
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.roomsEmptyLink, onClick: () => window.open('https://www.visasignaturehotels.com/contact/rate', '_blank', 'noopener,noreferrer') }, t('kiwi.infoModal.noRooms.contactUs')),
|
|
94707
94719
|
' ',
|
|
94708
|
-
|
|
94720
|
+
t('kiwi.infoModal.noRooms.forAssistance'),
|
|
94721
|
+
"."),
|
|
94709
94722
|
react_1.default.createElement("li", null,
|
|
94710
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.roomsEmptyLink, onClick: () => window.open(`https://www.visasignaturehotels.com/booking/request/${hotel.code}`, '_blank', 'noopener,noreferrer') },
|
|
94723
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.roomsEmptyLink, onClick: () => window.open(`https://www.visasignaturehotels.com/booking/request/${hotel.code}`, '_blank', 'noopener,noreferrer') }, t('kiwi.infoModal.noRooms.sendRequest')),
|
|
94711
94724
|
' ',
|
|
94712
|
-
|
|
94725
|
+
t('kiwi.infoModal.noRooms.requestDates'),
|
|
94726
|
+
" ",
|
|
94713
94727
|
data.title,
|
|
94714
|
-
".")))) : (react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomsHint },
|
|
94728
|
+
".")))) : (react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomsHint }, t('kiwi.infoModal.noRooms.enterDates')))) : (react_1.default.createElement(react_1.default.Fragment, null, availabilityData.rooms.map((room) => {
|
|
94715
94729
|
const roomImg = imageUrls[0] || '';
|
|
94716
94730
|
const roomDescExpanded = expandedRoomDescKeys.has(room.code);
|
|
94717
94731
|
const ROOM_DESC_MAX = 140;
|
|
@@ -94728,16 +94742,19 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94728
94742
|
visibleRoomDesc,
|
|
94729
94743
|
!roomDescExpanded && isLongRoomDesc && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
94730
94744
|
'… ',
|
|
94731
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.roomReadMore, onClick: () => setExpandedRoomDescKeys((prev) => { const next = new Set(prev); next.add(room.code); return next; }) },
|
|
94745
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.roomReadMore, onClick: () => setExpandedRoomDescKeys((prev) => { const next = new Set(prev); next.add(room.code); return next; }) }, t('kiwi.infoModal.readMore')))))),
|
|
94732
94746
|
roomDescExpanded && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
94733
94747
|
room.sizeM2 && (react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomSize },
|
|
94734
|
-
react_1.default.createElement("strong", null,
|
|
94748
|
+
react_1.default.createElement("strong", null,
|
|
94749
|
+
t('kiwi.infoModal.roomSize'),
|
|
94750
|
+
":"),
|
|
94735
94751
|
" ",
|
|
94736
94752
|
room.sizeM2,
|
|
94737
|
-
"
|
|
94738
|
-
|
|
94739
|
-
|
|
94740
|
-
|
|
94753
|
+
" ",
|
|
94754
|
+
t('kiwi.infoModal.squareMeters'),
|
|
94755
|
+
room.sizeFt2 ? ` | ${room.sizeFt2} ${t('kiwi.infoModal.squareFeet')}` : '')),
|
|
94756
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.roomReadMore, onClick: () => setExpandedRoomDescKeys((prev) => { const next = new Set(prev); next.delete(room.code); return next; }) }, t('kiwi.common.close')))),
|
|
94757
|
+
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.roomDisclaimer }, t('kiwi.infoModal.roomDisclaimer')))),
|
|
94741
94758
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.rateList }, (room.rates || []).map((rate) => {
|
|
94742
94759
|
var _a, _b, _c, _d, _e, _f, _g;
|
|
94743
94760
|
const nightlyPrice = parseFloat((_a = rate.price) === null || _a === void 0 ? void 0 : _a.inclusiveNightlyAverage) || 0;
|
|
@@ -94781,7 +94798,7 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94781
94798
|
rateCurrency),
|
|
94782
94799
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.ratePriceLabelRow, onClick: () => { setRateDetailInfo({ rate, currency: rateCurrency }); if (onRateDetailOpen)
|
|
94783
94800
|
onRateDetailOpen(hotel, room, rate); } },
|
|
94784
|
-
react_1.default.createElement("span", null,
|
|
94801
|
+
react_1.default.createElement("span", null, t('kiwi.infoModal.avgNightlyRate')),
|
|
94785
94802
|
react_1.default.createElement("svg", { className: KiwiHotelInfoModal_scss_1.default.ratePriceInfoIcon, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", xmlns: "http://www.w3.org/2000/svg" },
|
|
94786
94803
|
react_1.default.createElement("circle", { cx: "12", cy: "12", r: "10" }),
|
|
94787
94804
|
react_1.default.createElement("line", { x1: "12", y1: "16", x2: "12", y2: "12" }),
|
|
@@ -94795,16 +94812,16 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94795
94812
|
else if (onBookNow) {
|
|
94796
94813
|
onBookNow(hotel, room, rate);
|
|
94797
94814
|
}
|
|
94798
|
-
} },
|
|
94815
|
+
} }, t('kiwi.common.bookNow'))))),
|
|
94799
94816
|
(rate.description || (rate.policies && Object.values(rate.policies).some(Boolean))) && (react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.seeMoreBtn, onClick: () => { setRoomRateModal({ roomTitle: room.title, rate, currency: rateCurrency }); if (onSeeMoreDetails)
|
|
94800
94817
|
onSeeMoreDetails(hotel, room, rate); } },
|
|
94801
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.seeMoreDesktop },
|
|
94802
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.seeMoreMobile },
|
|
94818
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.seeMoreDesktop }, t('kiwi.infoModal.seeMoreDetails')),
|
|
94819
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.seeMoreMobile }, t('kiwi.infoModal.moreInfo'))))));
|
|
94803
94820
|
}))));
|
|
94804
94821
|
}))))),
|
|
94805
94822
|
activeTab === 'contact' && (react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.contactTab },
|
|
94806
|
-
react_1.default.createElement("h3", { className: KiwiHotelInfoModal_scss_1.default.contactTitle },
|
|
94807
|
-
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.contactDesc },
|
|
94823
|
+
react_1.default.createElement("h3", { className: KiwiHotelInfoModal_scss_1.default.contactTitle }, t('kiwi.infoModal.contact.title')),
|
|
94824
|
+
react_1.default.createElement("p", { className: KiwiHotelInfoModal_scss_1.default.contactDesc }, t('kiwi.infoModal.contact.description')),
|
|
94808
94825
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.contactSection },
|
|
94809
94826
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.contactSectionHeader },
|
|
94810
94827
|
react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: KiwiHotelInfoModal_scss_1.default.contactIcon },
|
|
@@ -94813,21 +94830,21 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94813
94830
|
react_1.default.createElement("defs", null,
|
|
94814
94831
|
react_1.default.createElement("clipPath", { id: "clip-phone" },
|
|
94815
94832
|
react_1.default.createElement("rect", { width: "16", height: "16", fill: "white" })))),
|
|
94816
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactSectionLabel },
|
|
94833
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactSectionLabel }, t('kiwi.infoModal.contact.phone'))),
|
|
94817
94834
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.contactPhoneList },
|
|
94818
94835
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.contactPhoneRow },
|
|
94819
94836
|
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactPhoneNumber }, "1-800-953-7392"),
|
|
94820
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactPhoneDesc },
|
|
94837
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactPhoneDesc }, t('kiwi.infoModal.contact.withinUS'))),
|
|
94821
94838
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.contactPhoneRow },
|
|
94822
94839
|
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactPhoneNumber }, "1-630-350-4551"),
|
|
94823
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactPhoneDesc },
|
|
94840
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactPhoneDesc }, t('kiwi.infoModal.contact.outsideUS'))))),
|
|
94824
94841
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.contactSection },
|
|
94825
94842
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.contactSectionHeader },
|
|
94826
94843
|
react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: KiwiHotelInfoModal_scss_1.default.contactIcon },
|
|
94827
94844
|
react_1.default.createElement("path", { d: "M2.66683 2.66602H13.3335C14.0668 2.66602 14.6668 3.26602 14.6668 3.99935V11.9993C14.6668 12.7327 14.0668 13.3327 13.3335 13.3327H2.66683C1.9335 13.3327 1.3335 12.7327 1.3335 11.9993V3.99935C1.3335 3.26602 1.9335 2.66602 2.66683 2.66602Z", stroke: "#0B1215", strokeLinecap: "round", strokeLinejoin: "round" }),
|
|
94828
94845
|
react_1.default.createElement("path", { d: "M14.6668 4L8.00016 8.66667L1.3335 4", stroke: "#0B1215", strokeLinecap: "round", strokeLinejoin: "round" })),
|
|
94829
|
-
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactSectionLabel },
|
|
94830
|
-
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.contactUsBtn, onClick: () => window.open('https://www.visasignaturehotels.com/contact/rate', '_blank', 'noopener,noreferrer') },
|
|
94846
|
+
react_1.default.createElement("span", { className: KiwiHotelInfoModal_scss_1.default.contactSectionLabel }, t('kiwi.infoModal.contact.contactForm'))),
|
|
94847
|
+
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.contactUsBtn, onClick: () => window.open('https://www.visasignaturehotels.com/contact/rate', '_blank', 'noopener,noreferrer') }, t('kiwi.infoModal.tab.contactUs'))))))),
|
|
94831
94848
|
photosOpen && imageUrls.length > 0 && (
|
|
94832
94849
|
// eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
|
|
94833
94850
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.photosOverlay, onClick: (e) => {
|
|
@@ -94841,7 +94858,7 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94841
94858
|
react_1.default.createElement("button", { type: "button", className: KiwiHotelInfoModal_scss_1.default.photosClose, onClick: (e) => {
|
|
94842
94859
|
e.stopPropagation();
|
|
94843
94860
|
setPhotosOpen(false);
|
|
94844
|
-
}, "aria-label":
|
|
94861
|
+
}, "aria-label": t('kiwi.common.close') },
|
|
94845
94862
|
react_1.default.createElement("svg", { width: "20", height: "20", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "#111827" },
|
|
94846
94863
|
react_1.default.createElement("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" })))),
|
|
94847
94864
|
react_1.default.createElement("div", { className: KiwiHotelInfoModal_scss_1.default.photosBody },
|
|
@@ -94857,19 +94874,19 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94857
94874
|
react_1.default.createElement("button", { type: "button", className: `${KiwiHotelInfoModal_scss_1.default.photosNav} ${KiwiHotelInfoModal_scss_1.default.photosNavPrev}`, onClick: (e) => {
|
|
94858
94875
|
e.stopPropagation();
|
|
94859
94876
|
goToPrevPhoto();
|
|
94860
|
-
}, "aria-label":
|
|
94877
|
+
}, "aria-label": t('kiwi.infoModal.previous') },
|
|
94861
94878
|
react_1.default.createElement("svg", { width: "22", height: "22", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "none", stroke: "#111827", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
94862
94879
|
react_1.default.createElement("polyline", { points: "15 18 9 12 15 6" }))),
|
|
94863
94880
|
react_1.default.createElement("img", { src: imageUrls[photoIndex], alt: `${data.title} ${photoIndex + 1}`, className: KiwiHotelInfoModal_scss_1.default.photosMainImg }),
|
|
94864
94881
|
react_1.default.createElement("button", { type: "button", className: `${KiwiHotelInfoModal_scss_1.default.photosNav} ${KiwiHotelInfoModal_scss_1.default.photosNavNext}`, onClick: (e) => {
|
|
94865
94882
|
e.stopPropagation();
|
|
94866
94883
|
goToNextPhoto();
|
|
94867
|
-
}, "aria-label":
|
|
94884
|
+
}, "aria-label": t('kiwi.infoModal.next') },
|
|
94868
94885
|
react_1.default.createElement("svg", { width: "22", height: "22", viewBox: "0 0 24 24", xmlns: "http://www.w3.org/2000/svg", fill: "none", stroke: "#111827", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round" },
|
|
94869
94886
|
react_1.default.createElement("polyline", { points: "9 18 15 12 9 6" })))))))),
|
|
94870
|
-
visaModalOpen && react_1.default.createElement(KiwiVisaBenefitsModal_1.default, { onClose: () => setVisaModalOpen(false) }),
|
|
94871
|
-
offersModalOpen && (react_1.default.createElement(KiwiSpecialOffersModal_1.default, { hotelName: data.title, specialOffers: loadingDetail ? undefined : ((_b = propertyDetail === null || propertyDetail === void 0 ? void 0 : propertyDetail.specialOffers) !== null && _b !== void 0 ? _b : []), onClose: () => setOffersModalOpen(false) })),
|
|
94872
|
-
roomRateModal && (react_1.default.createElement(KiwiRoomRateModal_1.default, { roomTitle: roomRateModal.roomTitle, rate: roomRateModal.rate, currency: roomRateModal.currency, nightCount: nightCount, onClose: () => setRoomRateModal(undefined), onBookNow: onCreateReservation || onBookNow ? () => {
|
|
94887
|
+
visaModalOpen && react_1.default.createElement(KiwiVisaBenefitsModal_1.default, { onClose: () => setVisaModalOpen(false), t: t }),
|
|
94888
|
+
offersModalOpen && (react_1.default.createElement(KiwiSpecialOffersModal_1.default, { hotelName: data.title, specialOffers: loadingDetail ? undefined : ((_b = propertyDetail === null || propertyDetail === void 0 ? void 0 : propertyDetail.specialOffers) !== null && _b !== void 0 ? _b : []), onClose: () => setOffersModalOpen(false), t: t })),
|
|
94889
|
+
roomRateModal && (react_1.default.createElement(KiwiRoomRateModal_1.default, { roomTitle: roomRateModal.roomTitle, rate: roomRateModal.rate, currency: roomRateModal.currency, nightCount: nightCount, onClose: () => setRoomRateModal(undefined), t: t, onBookNow: onCreateReservation || onBookNow ? () => {
|
|
94873
94890
|
const { rate: rr, currency: rc } = roomRateModal;
|
|
94874
94891
|
const matchingRoom = availabilityData === null || availabilityData === void 0 ? void 0 : availabilityData.rooms.find((r) => { var _a; return (_a = r.rates) === null || _a === void 0 ? void 0 : _a.some((rt) => rt.code === rr.code); });
|
|
94875
94892
|
setRoomRateModal(undefined);
|
|
@@ -94887,8 +94904,8 @@ const KiwiHotelInfoModal = ({ hotel, onClose, fetchPropertyDetail, fetchProperty
|
|
|
94887
94904
|
onReservationCreated(res.data, req.external_id);
|
|
94888
94905
|
}
|
|
94889
94906
|
return res;
|
|
94890
|
-
}, onReservationFailed: onReservationFailed ? (msg) => onReservationFailed(hotel, bookingModal.room, bookingModal.rate, msg) : undefined })),
|
|
94891
|
-
rateDetailInfo && (react_1.default.createElement(KiwiRateDetailModal_1.default, { rate: rateDetailInfo.rate, currency: rateDetailInfo.currency, nightCount: nightCount, onClose: () => setRateDetailInfo(undefined) }))), document.body);
|
|
94907
|
+
}, onReservationFailed: onReservationFailed ? (msg) => onReservationFailed(hotel, bookingModal.room, bookingModal.rate, msg) : undefined, t: t })),
|
|
94908
|
+
rateDetailInfo && (react_1.default.createElement(KiwiRateDetailModal_1.default, { rate: rateDetailInfo.rate, currency: rateDetailInfo.currency, nightCount: nightCount, onClose: () => setRateDetailInfo(undefined), t: t }))), document.body);
|
|
94892
94909
|
};
|
|
94893
94910
|
exports.default = KiwiHotelInfoModal;
|
|
94894
94911
|
|