@qite/tide-booking-component 1.2.3 → 1.2.4

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.
Files changed (47) hide show
  1. package/build/build-cjs/booking-product/components/footer.d.ts +1 -0
  2. package/build/build-cjs/booking-product/components/rooms.d.ts +2 -0
  3. package/build/build-cjs/booking-wizard/features/booking/selectors.d.ts +1 -1
  4. package/build/build-cjs/booking-wizard/types.d.ts +0 -1
  5. package/build/build-cjs/index.js +275 -44
  6. package/build/build-cjs/shared/utils/localization-util.d.ts +3 -0
  7. package/build/build-esm/booking-product/components/footer.d.ts +1 -0
  8. package/build/build-esm/booking-product/components/rooms.d.ts +2 -0
  9. package/build/build-esm/booking-wizard/features/booking/selectors.d.ts +1 -1
  10. package/build/build-esm/booking-wizard/types.d.ts +0 -1
  11. package/build/build-esm/index.js +276 -45
  12. package/build/build-esm/shared/utils/localization-util.d.ts +3 -0
  13. package/package.json +1 -1
  14. package/rollup.config.js +23 -23
  15. package/src/booking-product/components/footer.tsx +7 -1
  16. package/src/booking-product/components/product.tsx +4 -0
  17. package/src/booking-product/components/rating.tsx +21 -21
  18. package/src/booking-product/components/rooms.tsx +5 -2
  19. package/src/booking-wizard/components/icon.tsx +250 -1
  20. package/src/booking-wizard/components/labeled-input.tsx +64 -64
  21. package/src/booking-wizard/components/labeled-select.tsx +69 -69
  22. package/src/booking-wizard/features/booking/selectors.ts +12 -2
  23. package/src/booking-wizard/features/flight-options/flight-filter.tsx +16 -3
  24. package/src/booking-wizard/features/flight-options/flight-option-flight.tsx +8 -6
  25. package/src/booking-wizard/features/flight-options/flight-option.tsx +1 -1
  26. package/src/booking-wizard/features/product-options/option-pax-card.tsx +93 -22
  27. package/src/booking-wizard/features/product-options/option-units-card.tsx +93 -21
  28. package/src/booking-wizard/features/sidebar/sidebar-flight.tsx +2 -2
  29. package/src/booking-wizard/features/summary/summary.tsx +3 -1
  30. package/src/shared/utils/class-util.ts +9 -9
  31. package/styles/booking-wizard-variables.scss +530 -0
  32. package/styles/booking-wizard.scss +23 -1
  33. package/styles/components/_booking.scss +1409 -0
  34. package/styles/components/_checkbox.scss +215 -0
  35. package/styles/components/_cta.scss +80 -14
  36. package/styles/components/_date-range-picker.scss +1 -0
  37. package/styles/components/_flight-option.scss +1389 -0
  38. package/styles/components/_form.scss +258 -0
  39. package/styles/components/_list.scss +82 -0
  40. package/styles/components/_mixins.scss +17 -5
  41. package/styles/components/_placeholders.scss +2 -2
  42. package/styles/components/_pricing-summary.scss +117 -0
  43. package/styles/components/_select-wrapper.scss +66 -0
  44. package/styles/components/_step-indicators.scss +160 -0
  45. package/styles/components/_table.scss +81 -0
  46. package/styles/components/_tree.scss +540 -0
  47. package/tsconfig.json +24 -24
@@ -3,6 +3,7 @@ interface FooterProps {
3
3
  priceText: string | undefined;
4
4
  isLoading: boolean;
5
5
  isOffer: boolean | undefined;
6
+ roomsIsDisabled: boolean;
6
7
  handleBookClick: () => void;
7
8
  }
8
9
  declare const Footer: React.FC<FooterProps>;
@@ -2,6 +2,8 @@ import React from "react";
2
2
  import { ProductRoom } from "../types";
3
3
  interface RoomsProps {
4
4
  rooms: ProductRoom[];
5
+ isDisabled: boolean;
6
+ setIsDisabled: (isOpen: boolean) => void;
5
7
  onChange: (rooms: ProductRoom[]) => void;
6
8
  }
7
9
  declare const Rooms: React.FC<RoomsProps>;
@@ -47,7 +47,7 @@ export declare const selectIsUnavailable: (state: RootState) => boolean | undefi
47
47
  export declare const selectRequestRooms: (state: RootState) => import("@qite/tide-client/build/types").BookingPackageRequestRoom[] | undefined;
48
48
  export declare const selectOfficeId: (state: RootState) => number;
49
49
  export declare const selectLanguageCode: (state: RootState) => string;
50
- export declare const selectTranslations: (state: RootState) => any;
50
+ export declare const selectTranslations: (state: RootState) => Record<string, any>;
51
51
  export declare const selectBookingOptions: (state: RootState) => import("../../types").BookingOptions;
52
52
  export declare const selectBookingType: (state: RootState) => string;
53
53
  export declare const selectTagIds: (state: RootState) => number[] | undefined;
@@ -1,4 +1,3 @@
1
- /// <reference types="react" />
2
1
  import { BookingPackageFlight } from "@qite/tide-client/build/types";
3
2
  export interface Settings {
4
3
  officeId: number;
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable */
2
- import React, { useLayoutEffect as useLayoutEffect$1, useEffect, useContext, useState } from 'react';
2
+ import React, { useLayoutEffect as useLayoutEffect$1, useEffect, useContext, useState, useRef } from 'react';
3
3
  import JsonURL from '@jsonurl/jsonurl';
4
4
  import { isToday, getDate, getYear, getMonth, startOfWeek, startOfMonth, endOfWeek, addWeeks, endOfMonth, eachDayOfInterval, format as format$1, getISOWeek, getISODay, isSameMonth, startOfDay, isAfter, isEqual, isWithinInterval, endOfDay, isBefore, addMonths, addDays, formatISO, differenceInYears, parseISO, differenceInMinutes, differenceInCalendarDays, parse } from 'date-fns';
5
5
  import { isNil, isArray, compact, isEmpty, range, chunk, isFunction, clamp, omit, sum, first, orderBy, uniq, uniqBy, sortBy, last, findIndex, set, get as get$2 } from 'lodash';
@@ -49,8 +49,8 @@ function __awaiter$1(thisArg, _arguments, P, generator) {
49
49
  }
50
50
 
51
51
  function __generator$1(thisArg, body) {
52
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
53
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
52
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
53
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
54
54
  function verb(n) { return function (v) { return step([n, v]); }; }
55
55
  function step(op) {
56
56
  if (f) throw new TypeError("Generator is already executing.");
@@ -813,6 +813,8 @@ var ServiceType = {
813
813
  voucher: 26,
814
814
  reduction: 27,
815
815
  rocket: 28,
816
+ tent: 29,
817
+ camp: 30,
816
818
  };
817
819
 
818
820
  /******************************************************************************
@@ -7398,7 +7400,7 @@ var ENDPOINT_FEED = ENDPOINT + "/feed";
7398
7400
  * api/web/file/feed
7399
7401
  * fetch a xml from blob feed.
7400
7402
  * @param config
7401
- * @param request
7403
+ * @param slug
7402
7404
  * @param signal
7403
7405
  * @returns OK if succeeded.
7404
7406
  */
@@ -7407,6 +7409,20 @@ var feedXml = function (config, request, signal) {
7407
7409
  var apiKey = config.apiKey;
7408
7410
  return get$1(url, apiKey, config.token, signal);
7409
7411
  };
7412
+ /**
7413
+ * api/web/file/feed
7414
+ * fetch a xml from blob feed in subfolder.
7415
+ * @param config
7416
+ * @param slug
7417
+ * @param folder
7418
+ * @param signal
7419
+ * @returns OK if succeeded.
7420
+ */
7421
+ var feedXmlFolder = function (config, slug, folder, signal) {
7422
+ var url = "" + config.host + ENDPOINT_FEED + "/" + slug + "/" + folder;
7423
+ var apiKey = config.apiKey;
7424
+ return get$1(url, apiKey, config.token, signal);
7425
+ };
7410
7426
 
7411
7427
  build.AllotmentType = AllotmentType;
7412
7428
  build.AvailabilitySearchType = AvailabilitySearchType;
@@ -7429,6 +7445,7 @@ build.createCrmContact = createCrmContact;
7429
7445
  build.createParams = createParams;
7430
7446
  var details_1 = build.details = details;
7431
7447
  build.feedXml = feedXml;
7448
+ build.feedXmlFolder = feedXmlFolder;
7432
7449
  build.forgotPassword = forgotPassword;
7433
7450
  var generateBookingAccommodations_1 = build.generateBookingAccommodations = generateBookingAccommodations;
7434
7451
  build.getAffiliates = getAffiliates;
@@ -9071,7 +9088,7 @@ var Loader = function (_a) {
9071
9088
  };
9072
9089
 
9073
9090
  var Footer = function (_a) {
9074
- var priceText = _a.priceText, isLoading = _a.isLoading, isOffer = _a.isOffer, handleBookClick = _a.handleBookClick;
9091
+ var priceText = _a.priceText, isLoading = _a.isLoading, isOffer = _a.isOffer, roomsIsDisabled = _a.roomsIsDisabled, handleBookClick = _a.handleBookClick;
9075
9092
  var _b = useContext(SettingsContext$1), language = _b.language, alternativeActionText = _b.alternativeActionText, alternativeAction = _b.alternativeAction;
9076
9093
  var translations = getTranslations(language);
9077
9094
  return (React.createElement("div", { className: "booking-product__footer" }, isLoading
@@ -9080,7 +9097,10 @@ var Footer = function (_a) {
9080
9097
  priceText && (React.createElement("div", { className: "booking-product__footer-total" },
9081
9098
  React.createElement("div", { className: "booking-product__footer-label" }, translations.SHARED.TOTAL_PRICE),
9082
9099
  React.createElement("div", { className: "booking-product__footer-price" }, priceText))),
9083
- React.createElement("div", { className: "booking-product_footer-actions" }, priceText ? (React.createElement("button", { type: "button", className: "cta", onClick: handleBookClick }, isOffer ? translations.PRODUCT.TO_YOUR_OFFER : translations.PRODUCT.BOOK_NOW)) : ((alternativeActionText && alternativeAction)
9100
+ React.createElement("div", { className: "booking-product_footer-actions" }, priceText ? (React.createElement("button", { type: "button", className: buildClassName([
9101
+ "cta",
9102
+ !roomsIsDisabled && "cta--disabled"
9103
+ ]), onClick: handleBookClick, disabled: !roomsIsDisabled }, isOffer ? translations.PRODUCT.TO_YOUR_OFFER : translations.PRODUCT.BOOK_NOW)) : ((alternativeActionText && alternativeAction)
9084
9104
  ? (React.createElement("a", { href: "#offer-form", className: "cta", onClick: alternativeAction }, alternativeActionText))
9085
9105
  : (React.createElement(React.Fragment, null, translations.PRODUCT.NOT_AVAILABLE))))))));
9086
9106
  };
@@ -9155,10 +9175,9 @@ var AmountInput = function (_a) {
9155
9175
  };
9156
9176
 
9157
9177
  var Rooms = function (_a) {
9158
- var rooms = _a.rooms, onChange = _a.onChange;
9159
- var _b = useState(true), isDisabled = _b[0], setIsDisabled = _b[1];
9160
- var _c = useState(false), isTouched = _c[0], setIsTouched = _c[1];
9161
- var _d = useState(rooms), currentRooms = _d[0], setRoomState = _d[1];
9178
+ var rooms = _a.rooms, isDisabled = _a.isDisabled, setIsDisabled = _a.setIsDisabled, onChange = _a.onChange;
9179
+ var _b = useState(false), isTouched = _b[0], setIsTouched = _b[1];
9180
+ var _c = useState(rooms), currentRooms = _c[0], setRoomState = _c[1];
9162
9181
  var language = useContext(SettingsContext$1).language;
9163
9182
  var translations = getTranslations(language);
9164
9183
  var handleCloseClick = function () {
@@ -9228,12 +9247,13 @@ var Product = function (_a) {
9228
9247
  var translations = getTranslations(language);
9229
9248
  var _e = useState(false), loaded = _e[0], setLoaded = _e[1];
9230
9249
  var _f = useState(false), isLoading = _f[0], setIsLoading = _f[1];
9231
- var _g = useState(), price = _g[0], setPrice = _g[1];
9232
- var _h = useState(false), hasFlight = _h[0], setHasFlight = _h[1];
9233
- var _j = useState(false), hasTransfer = _j[0], setHasTransfer = _j[1];
9234
- var _k = useState([{ adults: 2, children: 0, childAges: [] }]), rooms = _k[0], setRooms = _k[1];
9235
- var _l = useState(), dateRange = _l[0], setDateRange = _l[1];
9236
- var _m = useState(productName), packageProductName = _m[0], setPackageProductName = _m[1];
9250
+ var _g = useState(true), roomsIsDisabled = _g[0], setRoomsIsDisabled = _g[1];
9251
+ var _h = useState(), price = _h[0], setPrice = _h[1];
9252
+ var _j = useState(false), hasFlight = _j[0], setHasFlight = _j[1];
9253
+ var _k = useState(false), hasTransfer = _k[0], setHasTransfer = _k[1];
9254
+ var _l = useState([{ adults: 2, children: 0, childAges: [] }]), rooms = _l[0], setRooms = _l[1];
9255
+ var _m = useState(), dateRange = _m[0], setDateRange = _m[1];
9256
+ var _o = useState(productName), packageProductName = _o[0], setPackageProductName = _o[1];
9237
9257
  var fetchPackage = function (signal) { return __awaiter$1(void 0, void 0, void 0, function () {
9238
9258
  var apiSettingsState, startDate, endDate, requestRooms, request, response, selectedOption, hasFlight_1, hasTranfer;
9239
9259
  return __generator$1(this, function (_a) {
@@ -9393,9 +9413,9 @@ var Product = function (_a) {
9393
9413
  return (React.createElement("div", { className: "booking-product" },
9394
9414
  React.createElement(Header, { name: packageProductName, rating: rating, priceText: priceText, isLoading: isLoading, hasFlight: hasFlight, hasTransfer: hasTransfer }),
9395
9415
  React.createElement("div", { className: "booking-product__body" },
9396
- React.createElement(Rooms, { rooms: rooms, onChange: handleRoomChange }),
9416
+ React.createElement(Rooms, { rooms: rooms, isDisabled: roomsIsDisabled, setIsDisabled: setRoomsIsDisabled, onChange: handleRoomChange }),
9397
9417
  React.createElement(Dates, { value: dateRange, duration: duration, onChange: handleDateChange })),
9398
- React.createElement(Footer, { priceText: priceText, isLoading: isLoading, isOffer: isOffer, handleBookClick: handleBookClick })));
9418
+ React.createElement(Footer, { priceText: priceText, isLoading: isLoading, isOffer: isOffer, roomsIsDisabled: roomsIsDisabled, handleBookClick: handleBookClick })));
9399
9419
  };
9400
9420
 
9401
9421
  var BookingProduct = function (_a) {
@@ -9719,9 +9739,15 @@ var selectLanguageCode = function (state) {
9719
9739
  return state.booking.languageCode;
9720
9740
  };
9721
9741
  var selectTranslations = function (state) {
9722
- var _a;
9723
- var translations = state.booking.translations && ((_a = state.booking.translations.find(function (x) { return x.language == state.booking.languageCode; })) === null || _a === void 0 ? void 0 : _a.value);
9724
- return translations !== null && translations !== void 0 ? translations : getTranslations(state.booking.languageCode);
9742
+ var _a, _b;
9743
+ var defaultStaticTranslations = getTranslations(state.booking.languageCode);
9744
+ var dynamicTranslations = (_b = (state.booking.translations && ((_a = state.booking.translations.find(function (x) { return x.language == state.booking.languageCode; })) === null || _a === void 0 ? void 0 : _a.value))) !== null && _b !== void 0 ? _b : {};
9745
+ var merged = {};
9746
+ for (var _i = 0, _c = Array.from(new Set(__spreadArray(__spreadArray([], Object.keys(defaultStaticTranslations), true), Object.keys(dynamicTranslations), true))); _i < _c.length; _i++) {
9747
+ var key = _c[_i];
9748
+ merged[key] = __assign(__assign({}, (defaultStaticTranslations[key] || {})), (dynamicTranslations[key] || {}));
9749
+ }
9750
+ return merged;
9725
9751
  };
9726
9752
  var selectBookingOptions = function (state) {
9727
9753
  return state.booking.bookingOptions;
@@ -10559,25 +10585,146 @@ var Icon = function (_a) {
10559
10585
  }
10560
10586
  switch (name) {
10561
10587
  case "ui-chevron":
10588
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10589
+ .filter(function (className) { return !isEmpty(className); })
10590
+ .join(" "), width: width, height: height, viewBox: "0 0 320 512" },
10591
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
10592
+ title && React.createElement("title", null, title),
10593
+ React.createElement("path", { d: "M310.6 233.4c12.5 12.5 12.5 32.8 0 45.3l-192 192c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3L242.7 256 73.4 86.6c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0l192 192z" })));
10562
10594
  case "ui-error":
10595
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10596
+ .filter(function (className) { return !isEmpty(className); })
10597
+ .join(" "), width: width, height: height, viewBox: "0 0 512 512" },
10598
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
10599
+ title && React.createElement("title", null, title),
10600
+ React.createElement("path", { d: "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zm0-384c13.3 0 24 10.7 24 24l0 112c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-112c0-13.3 10.7-24 24-24zM224 352a32 32 0 1 1 64 0 32 32 0 1 1 -64 0z" })));
10563
10601
  case "ui-tel":
10602
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10603
+ .filter(function (className) { return !isEmpty(className); })
10604
+ .join(" "), width: width, height: height, viewBox: "0 0 512 512" },
10605
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
10606
+ title && React.createElement("title", null, title),
10607
+ React.createElement("path", { d: "M164.9 24.6c-7.7-18.6-28-28.5-47.4-23.2l-88 24C12.1 30.2 0 46 0 64C0 311.4 200.6 512 448 512c18 0 33.8-12.1 38.6-29.5l24-88c5.3-19.4-4.6-39.7-23.2-47.4l-96-40c-16.3-6.8-35.2-2.1-46.3 11.6L304.7 368C234.3 334.7 177.3 277.7 144 207.3L193.3 167c13.7-11.2 18.4-30 11.6-46.3l-40-96z" })));
10564
10608
  case "ui-mail":
10609
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10610
+ .filter(function (className) { return !isEmpty(className); })
10611
+ .join(" "), width: width, height: height, viewBox: "0 0 512 512" },
10612
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
10613
+ title && React.createElement("title", null, title),
10614
+ React.createElement("path", { d: "M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48L48 64zM0 176L0 384c0 35.3 28.7 64 64 64l384 0c35.3 0 64-28.7 64-64l0-208L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z" })));
10565
10615
  case "ui-home":
10566
10616
  case "ui-filter":
10617
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10618
+ .filter(function (className) { return !isEmpty(className); })
10619
+ .join(" "), width: width, height: height, viewBox: "0 0 10.701 9.698" },
10620
+ title && React.createElement("title", null, title),
10621
+ React.createElement("g", { id: "filter-solid", transform: "translate(-2.667 -5.333)" },
10622
+ React.createElement("path", { id: "Path_54", "data-name": "Path 54", d: "M9.355,15.031V10.517l3.836-3.846a.605.605,0,0,0,.177-.435V5.668a.334.334,0,0,0-.334-.334H3a.334.334,0,0,0-.334.334v.558a.6.6,0,0,0,.177.425L6.68,10.544v3.411Z", transform: "translate(0 0)", fill: "#12aad8" }),
10623
+ React.createElement("path", { id: "Path_55", "data-name": "Path 55", d: "M13.194,5.333H2.827a.174.174,0,0,0-.161.174v.575A.445.445,0,0,0,2.8,6.4L6.81,10.413v3.344l2.425,1.207V10.406l4.013-4.013a.451.451,0,0,0,.12-.3V5.507a.174.174,0,0,0-.174-.174Z" }))));
10567
10624
  case "ui-close":
10625
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10626
+ .filter(function (className) { return !isEmpty(className); })
10627
+ .join(" "), width: width, height: height, viewBox: "0 0 384 512" },
10628
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
10629
+ title && React.createElement("title", null, title),
10630
+ React.createElement("path", { d: "M342.6 150.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3 297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256 342.6 150.6z" })));
10568
10631
  case "ui-ticket":
10632
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10633
+ .filter(function (className) { return !isEmpty(className); })
10634
+ .join(" "), width: width, height: height, viewBox: "0 0 20 20" },
10635
+ title && React.createElement("title", null, title),
10636
+ React.createElement("g", { id: "ticket", transform: "translate(0.439 1.629)" },
10637
+ React.createElement("path", { id: "Path_14", "data-name": "Path 14", d: "M12.125,5.335l3.751,3.751L9.086,15.875,5.335,12.125Zm-2.5,11.62L16.955,9.62a.745.745,0,0,0,0-1.068l-4.3-4.3a.774.774,0,0,0-1.068,0L4.255,11.59a.745.745,0,0,0,0,1.068l4.3,4.3a.774.774,0,0,0,1.068,0ZM20.172,9.395,9.406,20.172a1.533,1.533,0,0,1-2.148,0l-1.5-1.5a2.293,2.293,0,0,0,0-3.228,2.2,2.2,0,0,0-1.614-.665,2.2,2.2,0,0,0-1.614.665l-1.484-1.5a1.533,1.533,0,0,1,0-2.148L11.816,1.05a1.533,1.533,0,0,1,2.148,0l1.484,1.484a2.2,2.2,0,0,0-.665,1.614,2.2,2.2,0,0,0,.665,1.614,2.293,2.293,0,0,0,3.228,0l1.5,1.484a1.533,1.533,0,0,1,0,2.148Z", transform: "translate(-1.05 -2.24)" }))));
10569
10638
  case "ui-payback":
10639
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10640
+ .filter(function (className) { return !isEmpty(className); })
10641
+ .join(" "), width: width, height: height, viewBox: "0 0 20 20.154" },
10642
+ title && React.createElement("title", null, title),
10643
+ React.createElement("g", { id: "layer1", transform: "translate(-205.148 -293.014)" },
10644
+ React.createElement("path", { id: "path453469", d: "M223.472,306.895a1.674,1.674,0,0,0-1.188.487l-1.971,1.972a1.67,1.67,0,0,0-.978-.726l-4.652-1.247a2.766,2.766,0,0,0-2.182.331l-2.9,1.832-.235-.408a1.089,1.089,0,0,0-1.471-.394l-2.209,1.274a1.089,1.089,0,0,0-.394,1.471l3.291,5.7a1.088,1.088,0,0,0,1.47.4l2.209-1.276a1.09,1.09,0,0,0,.395-1.471l-.043-.076,1.258-.85,4.63.911a1.742,1.742,0,0,0,1.653-.514c1.493-1.527,2.988-3.048,4.505-4.544l0,0a1.675,1.675,0,0,0-1.189-2.863Zm0,1.332a.336.336,0,0,1,.238.1.323.323,0,0,1,0,.476c-1.525,1.5-3.024,3.031-4.518,4.559a1.847,1.847,0,0,1-.433.134l-4.9-.963a.672.672,0,0,0-.507.1l-1.411.954-1.667-2.886,2.947-1.858a1.411,1.411,0,0,1,1.118-.171l4.652,1.247a.336.336,0,1,1-.175.65l-2.92-.782a.672.672,0,0,0-.348,1.3l2.92.782a1.693,1.693,0,0,0,1.741-.572.672.672,0,0,0,.177-.118l2.85-2.852A.336.336,0,0,1,223.472,308.226Zm-15.14,1.812.325.564a.615.615,0,0,0,.253.438l2.445,4.235-1.745,1.008-3.024-5.237Z", transform: "translate(0 -4.554)", "fill-rule": "evenodd" }),
10645
+ React.createElement("path", { id: "path453459", d: "M223.672,301.014a.672.672,0,1,0,0,1.344h1.344a.672.672,0,1,0,0-1.344Z", transform: "translate(-5.857 -2.625)", "fill-rule": "evenodd" }),
10646
+ React.createElement("path", { id: "path453437", d: "M223.672,297.014a.672.672,0,0,0,0,1.344h1.344a.672.672,0,0,0,0-1.344Z", transform: "translate(-5.857 -1.312)", "fill-rule": "evenodd" }),
10647
+ React.createElement("path", { id: "rect18334", d: "M222.7,293.014a4.7,4.7,0,1,0,4.7,4.7A4.714,4.714,0,0,0,222.7,293.014Zm0,1.344a3.359,3.359,0,1,1-3.359,3.359A3.349,3.349,0,0,1,222.7,294.357Z", transform: "translate(-4.217)", "fill-rule": "evenodd" }))));
10570
10648
  case "ui-backpack":
10649
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10650
+ .filter(function (className) { return !isEmpty(className); })
10651
+ .join(" "), width: width, height: height, viewBox: "0 0 14.499 16.11" },
10652
+ title && React.createElement("title", null, title),
10653
+ React.createElement("path", { id: "Path_2", "data-name": "Path 2", d: "M22.444,28.805A.805.805,0,0,0,21.639,28H16.806a.806.806,0,0,0-.806.806v1.611h6.444ZM16,32.027h6.444v2.417H16Z", transform: "translate(-11.972 -18.334)" }),
10654
+ React.createElement("path", { id: "Path_3", "data-name": "Path 3", d: "M20.5,12.055a4.837,4.837,0,0,0-4.028-4.761V6.417A2.419,2.419,0,0,0,14.055,4H12.444a2.419,2.419,0,0,0-2.417,2.417v.878A4.837,4.837,0,0,0,6,12.055V18.5A1.613,1.613,0,0,0,7.611,20.11h.806V14.472a2.419,2.419,0,0,1,2.417-2.417h4.833a2.419,2.419,0,0,1,2.417,2.417V20.11h.806A1.613,1.613,0,0,0,20.5,18.5ZM11.639,6.417a.806.806,0,0,1,.806-.806h1.611a.805.805,0,0,1,.805.806v.806H11.639Z", transform: "translate(-6 -4)" })));
10571
10655
  case "ui-suitcase":
10656
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10657
+ .filter(function (className) { return !isEmpty(className); })
10658
+ .join(" "), width: width, height: height, viewBox: "0 0 15.992 13.708" },
10659
+ title && React.createElement("title", null, title),
10660
+ React.createElement("path", { id: "Path_21", "data-name": "Path 21", d: "M5.712,2.285h4.569V1.142H5.712Zm-3.141,0V13.708H2a1.924,1.924,0,0,1-1.41-.589A1.924,1.924,0,0,1,0,11.709V4.284a1.924,1.924,0,0,1,.589-1.41A1.924,1.924,0,0,1,2,2.285Zm10,0V13.708H3.427V2.285H4.569V.857A.826.826,0,0,1,4.819.25.826.826,0,0,1,5.426,0h5.14a.826.826,0,0,1,.607.25.826.826,0,0,1,.25.607V2.285Zm3.427,2v7.425a2.011,2.011,0,0,1-2,2h-.571V2.285h.571a1.924,1.924,0,0,1,1.41.589A1.924,1.924,0,0,1,15.992,4.284Z", transform: "translate(0 0)" })));
10572
10661
  case "ui-business-lounge":
10662
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10663
+ .filter(function (className) { return !isEmpty(className); })
10664
+ .join(" "), width: width, height: height, viewBox: "0 0 20 19.999" },
10665
+ title && React.createElement("title", null, title),
10666
+ React.createElement("g", { id: "waiting-room-svgrepo-com", transform: "translate(0 -0.008)" },
10667
+ React.createElement("g", { id: "Group_46", "data-name": "Group 46", transform: "translate(0 0.008)" },
10668
+ React.createElement("g", { id: "Group_45", "data-name": "Group 45", transform: "translate(0)" },
10669
+ React.createElement("path", { id: "Path_33", "data-name": "Path 33", d: "M65.683,110.007a1.667,1.667,0,1,0-1.667-1.667A1.666,1.666,0,0,0,65.683,110.007Z", transform: "translate(-61.515 -102.507)" }),
10670
+ React.createElement("path", { id: "Path_34", "data-name": "Path 34", d: "M6.25,242.2H2.418L.824,235.025a.417.417,0,1,0-.814.181l1.657,7.455v2.454a.417.417,0,1,0,.833,0v-2.083H5v2.083a.417.417,0,1,0,.833,0v-2.083h.417a.417.417,0,0,0,0-.833Z", transform: "translate(0 -225.532)" }),
10671
+ React.createElement("path", { id: "Path_35", "data-name": "Path 35", d: "M281.933.008a4.583,4.583,0,1,0,4.583,4.583A4.588,4.588,0,0,0,281.933.008Zm1.667,5h-1.667a.417.417,0,0,1-.417-.417v-2.5a.417.417,0,0,1,.833,0V4.175h1.25a.417.417,0,1,1,0,.833Z", transform: "translate(-266.516 -0.008)" }),
10672
+ React.createElement("path", { id: "Path_36", "data-name": "Path 36", d: "M70.265,218.341H67.348v-3.333a1.667,1.667,0,0,0-3.333,0v4.583a1.251,1.251,0,0,0,1.25,1.25h3.75v2.917a1.25,1.25,0,1,0,2.5,0v-4.167A1.251,1.251,0,0,0,70.265,218.341Z", transform: "translate(-61.514 -205.008)" }))))));
10573
10673
  case "ui-shopping-bag":
10674
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10675
+ .filter(function (className) { return !isEmpty(className); })
10676
+ .join(" "), width: width, height: height, viewBox: "0 0 13.299 14.65" },
10677
+ title && React.createElement("title", null, title),
10678
+ React.createElement("path", { id: "Path_22", "data-name": "Path 22", d: "M9.135.6A3.523,3.523,0,0,0,5.612,4.123V5.691A2.455,2.455,0,0,0,5,5.869,2.967,2.967,0,0,0,3.842,6.8,6.951,6.951,0,0,0,3,9.393c-.452,2.056-.678,3.083-.392,3.885A2.967,2.967,0,0,0,3.835,14.8c.721.451,1.774.451,3.878.451h2.843c2.1,0,3.157,0,3.878-.451a2.967,2.967,0,0,0,1.223-1.521c.285-.8.059-1.829-.392-3.885a6.951,6.951,0,0,0-.837-2.59,2.967,2.967,0,0,0-1.162-.934,2.456,2.456,0,0,0-.608-.178V4.123A3.523,3.523,0,0,0,9.135.6Zm2.411,5.012V4.123a2.411,2.411,0,0,0-4.821,0V5.612c.287,0,.613,0,.989,0h2.843C10.933,5.607,11.259,5.607,11.546,5.612ZM6.168,8.574a.742.742,0,1,0-.742-.742A.742.742,0,0,0,6.168,8.574Zm6.676-.742A.742.742,0,1,1,12.1,7.09.742.742,0,0,1,12.844,7.832Z", transform: "translate(-2.486 -0.6)", "fill-rule": "evenodd" })));
10574
10679
  case "ui-priority":
10680
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10681
+ .filter(function (className) { return !isEmpty(className); })
10682
+ .join(" "), width: width, height: height, viewBox: "0 0 20 17.533" },
10683
+ title && React.createElement("title", null, title),
10684
+ React.createElement("g", { id: "list-high-priority", transform: "translate(-1.5 -2.552)" },
10685
+ React.createElement("path", { id: "Path_24", "data-name": "Path 24", d: "M24,39H34v1.333H24Z", transform: "translate(-12.5 -20.249)" }),
10686
+ React.createElement("path", { id: "Path_25", "data-name": "Path 25", d: "M24,29H34v1.333H24Z", transform: "translate(-12.5 -14.694)" }),
10687
+ React.createElement("path", { id: "Path_26", "data-name": "Path 26", d: "M24,19H34v1.333H24Z", transform: "translate(-12.5 -9.138)" }),
10688
+ React.createElement("path", { id: "Path_27", "data-name": "Path 27", d: "M30.75,9h7v1.333h-7Z", transform: "translate(-16.25 -3.583)" }),
10689
+ React.createElement("path", { id: "Path_28", "data-name": "Path 28", d: "M13.417,6.043,7.8,2.551V5.418H7.551a5.544,5.544,0,0,0-4.326,2.2A8.164,8.164,0,0,0,1.5,12.751a8.164,8.164,0,0,0,1.725,5.133,5.544,5.544,0,0,0,4.326,2.2H9.833V18.751H7.551c-2.6,0-4.718-2.692-4.718-6s2.117-6,4.718-6H7.8V9.635ZM9.133,4.95l1.783,1.109L9.133,7.2Z" }))));
10575
10690
  case "ui-tooltip":
10576
- case "ui-tooltip":
10691
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10692
+ .filter(function (className) { return !isEmpty(className); })
10693
+ .join(" "), width: width, height: height, viewBox: "0 0 512 512" },
10694
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
10695
+ title && React.createElement("title", null, title),
10696
+ React.createElement("path", { d: "M256 512A256 256 0 1 0 256 0a256 256 0 1 0 0 512zM216 336l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24zm40-208a32 32 0 1 1 0 64 32 32 0 1 1 0-64z" })));
10577
10697
  case "ui-qsm-location":
10698
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10699
+ .filter(function (className) { return !isEmpty(className); })
10700
+ .join(" "), width: width, height: height, viewBox: "0 0 384 512" },
10701
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
10702
+ title && React.createElement("title", null, title),
10703
+ React.createElement("path", { d: "M215.7 499.2C267 435 384 279.4 384 192C384 86 298 0 192 0S0 86 0 192c0 87.4 117 243 168.3 307.2c12.3 15.3 35.1 15.3 47.4 0zM192 128a64 64 0 1 1 0 128 64 64 0 1 1 0-128z" })));
10578
10704
  case "ui-plane-depart":
10705
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10706
+ .filter(function (className) { return !isEmpty(className); })
10707
+ .join(" "), width: width, height: height, viewBox: "0 0 640 512" },
10708
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
10709
+ title && React.createElement("title", null, title),
10710
+ React.createElement("path", { d: "M381 114.9L186.1 41.8c-16.7-6.2-35.2-5.3-51.1 2.7L89.1 67.4C78 73 77.2 88.5 87.6 95.2l146.9 94.5L136 240 77.8 214.1c-8.7-3.9-18.8-3.7-27.3 .6L18.3 230.8c-9.3 4.7-11.8 16.8-5 24.7l73.1 85.3c6.1 7.1 15 11.2 24.3 11.2l137.7 0c5 0 9.9-1.2 14.3-3.4L535.6 212.2c46.5-23.3 82.5-63.3 100.8-112C645.9 75 627.2 48 600.2 48l-57.4 0c-20.2 0-40.2 4.8-58.2 14L381 114.9zM0 480c0 17.7 14.3 32 32 32l576 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L32 448c-17.7 0-32 14.3-32 32z" })));
10579
10711
  case "ui-plane-arrive":
10712
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10713
+ .filter(function (className) { return !isEmpty(className); })
10714
+ .join(" "), width: width, height: height, viewBox: "0 0 640 512" },
10715
+ React.createElement(HTMLComment, { text: "!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc." }),
10716
+ title && React.createElement("title", null, title),
10717
+ React.createElement("path", { d: "M.3 166.9L0 68C0 57.7 9.5 50.1 19.5 52.3l35.6 7.9c10.6 2.3 19.2 9.9 23 20L96 128l127.3 37.6L181.8 20.4C178.9 10.2 186.6 0 197.2 0l40.1 0c11.6 0 22.2 6.2 27.9 16.3l109 193.8 107.2 31.7c15.9 4.7 30.8 12.5 43.7 22.8l34.4 27.6c24 19.2 18.1 57.3-10.7 68.2c-41.2 15.6-86.2 18.1-128.8 7L121.7 289.8c-11.1-2.9-21.2-8.7-29.3-16.9L9.5 189.4c-5.9-6-9.3-14.1-9.3-22.5zM32 448l576 0c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 512c-17.7 0-32-14.3-32-32s14.3-32 32-32zm96-80a32 32 0 1 1 64 0 32 32 0 1 1 -64 0zm128-16a32 32 0 1 1 0 64 32 32 0 1 1 0-64z" })));
10580
10718
  case "ui-clock":
10719
+ return (React.createElement("svg", { className: ["icon", "icon--".concat(name), className]
10720
+ .filter(function (className) { return !isEmpty(className); })
10721
+ .join(" "), width: width, height: height, viewBox: "0 0 19 19" },
10722
+ title && React.createElement("title", null, title),
10723
+ React.createElement("g", { id: "Group_56", "data-name": "Group 56", transform: "translate(-390 -665)" },
10724
+ React.createElement("circle", { id: "Ellipse_5", "data-name": "Ellipse 5", cx: "9.5", cy: "9.5", r: "9.5", transform: "translate(390 665)", fill: "#fff" }),
10725
+ React.createElement("g", { id: "time", transform: "translate(391.211 666.211)" },
10726
+ React.createElement("path", { id: "Path_11", "data-name": "Path 11", d: "M8.289,13.578a5.289,5.289,0,1,1,5.289-5.289A5.289,5.289,0,0,1,8.289,13.578Zm0-9.823a4.534,4.534,0,1,0,4.534,4.534A4.534,4.534,0,0,0,8.289,3.756Z", transform: "translate(0 0)" }),
10727
+ React.createElement("path", { id: "Path_12", "data-name": "Path 12", d: "M24.612,16.167,22.5,14.055V10.5h.756v3.241l1.889,1.893Z", transform: "translate(-14.589 -5.611)" })))));
10581
10728
  default:
10582
10729
  return null;
10583
10730
  }
@@ -11076,6 +11223,18 @@ var FlightFilter = function (_a) {
11076
11223
  var filterOptions = _a.filterOptions, resultCount = _a.resultCount, applyFilter = _a.applyFilter;
11077
11224
  var translations = useSelector(selectTranslations);
11078
11225
  var _b = useState(false), filtersVisible = _b[0], setFiltersVisible = _b[1];
11226
+ var filterRef = useRef(null);
11227
+ useEffect(function () {
11228
+ function handleClickOutside(event) {
11229
+ if (filterRef.current && !filterRef.current.contains(event.target)) {
11230
+ setFiltersVisible(false);
11231
+ }
11232
+ }
11233
+ document.addEventListener("mousedown", handleClickOutside);
11234
+ return function () {
11235
+ document.removeEventListener("mousedown", handleClickOutside);
11236
+ };
11237
+ }, []);
11079
11238
  var updateAirportFilter = function (code) {
11080
11239
  var updatedFilterOptions = __assign(__assign({}, filterOptions), { airports: filterOptions.airports.map(function (x) {
11081
11240
  if (x.value !== code)
@@ -11134,10 +11293,10 @@ var FlightFilter = function (_a) {
11134
11293
  };
11135
11294
  return (React.createElement(React.Fragment, null,
11136
11295
  React.createElement("button", { type: "button", className: "cta cta--filter", onClick: function () { return setFiltersVisible(!filtersVisible); } },
11137
- React.createElement(Icon, { name: "filter", width: 11, height: 10 }),
11296
+ React.createElement(Icon, { name: "ui-filter", width: 11, height: 10 }),
11138
11297
  React.createElement("span", null, translations.FLIGHTS_FORM.FILTER_OPTIONS),
11139
11298
  filtersVisible),
11140
- React.createElement("div", { className: buildClassName(["flight__filter", filtersVisible && "flight__filter--active"]) },
11299
+ React.createElement("div", { ref: filterRef, className: buildClassName(["flight__filter", filtersVisible && "flight__filter--active"]) },
11141
11300
  React.createElement("div", { className: "flight__filter__header" },
11142
11301
  React.createElement("div", { className: "flight__filter__header__title" },
11143
11302
  React.createElement("h3", null, translations.FLIGHTS_FORM.FILTER_OPTIONS),
@@ -11366,18 +11525,16 @@ var FlightOptionFlight = function (_a) {
11366
11525
  details.isNextDay && (React.createElement("span", { className: "flight__info__times__days" }, translations.FLIGHTS_FORM.PLUS_ONE_DAY))))),
11367
11526
  React.createElement("div", { className: "flight__detail__btn__wrapper" },
11368
11527
  React.createElement("div", { className: buildClassName(["flight__detail__btn", isDetailVisible && "flight__detail__btn--active"]), onClick: function () { return setIsDetailVisible(!isDetailVisible); } },
11369
- React.createElement(Icon, { name: "chevron", className: "flight__detail__btn__arrow", width: 16, height: 16 })))),
11528
+ React.createElement(Icon, { name: "ui-chevron", className: "flight__detail__btn__arrow", width: 16, height: 16 })))),
11370
11529
  React.createElement("div", { className: buildClassName(["flight__detail", isDetailVisible && "flight__detail--active"]) }, details.flightLines.map(function (flightLine, flightLineIndex) { return (React.createElement(React.Fragment, { key: flightLineIndex },
11371
11530
  React.createElement("div", { className: "flight__info" },
11372
11531
  React.createElement("div", { className: "flight__info__times__wrapper" },
11373
11532
  React.createElement("div", { className: "flight__info__times" },
11374
- React.createElement("strong", null,
11375
- flightLine.departureTime,
11376
- " ",
11377
- flightLine.departureAirport),
11533
+ React.createElement("p", null, flightLine.departureTime),
11534
+ React.createElement("strong", null, flightLine.departureAirport),
11378
11535
  React.createElement("p", null, getDateText(flightLine.departureDate))),
11379
11536
  React.createElement("div", null,
11380
- React.createElement(Icon, { name: "plane-depart", width: 30, height: 20 }))),
11537
+ React.createElement(Icon, { name: "ui-plane-depart", width: 30, height: 20 }))),
11381
11538
  React.createElement("div", { className: "flight__info__duration" },
11382
11539
  React.createElement("p", null, flightLine.travelDuration),
11383
11540
  React.createElement("div", { className: "flight__info__duration__stops" }),
@@ -11385,18 +11542,16 @@ var FlightOptionFlight = function (_a) {
11385
11542
  React.createElement("strong", null, flightLine.number)),
11386
11543
  React.createElement("div", { className: "flight__info__times__wrapper flight__info__times__wrapper--arrival" },
11387
11544
  React.createElement("div", null,
11388
- React.createElement(Icon, { name: "plane-arive", width: 35, height: 25 })),
11545
+ React.createElement(Icon, { name: "ui-plane-arrive", width: 30, height: 20 })),
11389
11546
  React.createElement("div", { className: "flight__info__times flight__info__times--arrival" },
11390
- React.createElement("strong", null,
11391
- flightLine.arrivalTime,
11392
- " ",
11393
- flightLine.arrivalAirport),
11547
+ React.createElement("p", null, flightLine.arrivalTime),
11548
+ React.createElement("strong", null, flightLine.arrivalAirport),
11394
11549
  React.createElement("p", null, getDateText(flightLine.arrivalDate))))),
11395
11550
  flightLine.waitDuration && (React.createElement("div", { className: "flight__info" },
11396
11551
  React.createElement("div", { className: "flight__info__times" }),
11397
11552
  React.createElement("div", { className: "flight__info__duration flight__info__duration--waittime" },
11398
11553
  React.createElement("div", { className: "flight__info__duration__stops flight__info__duration__stops--stoptime" },
11399
- React.createElement(Icon, { name: "clock", width: 20, height: 20 })),
11554
+ React.createElement(Icon, { name: "ui-clock", width: 24, height: 24 })),
11400
11555
  React.createElement("div", { className: "flight__info__duration__stoptime" },
11401
11556
  React.createElement("span", null, translations.FLIGHTS_FORM.STOP_TIME),
11402
11557
  React.createElement("strong", null, flightLine.waitDuration))),
@@ -11428,7 +11583,7 @@ var FlightOption = function (_a) {
11428
11583
  priceDifference > 0 && "price--increase",
11429
11584
  priceDifference < 0 && "price--decrease"
11430
11585
  ]) }, getPriceDifferenceText(priceDifference))),
11431
- React.createElement("button", { type: "button", className: "cta ".concat(isSelected ? 'cta--selected' : 'cta--secondary'), onClick: handleButtonClick }, isSelected ? translations.SHARED.SELECTED : translations.SHARED.SELECT)))),
11586
+ React.createElement("button", { type: "button", className: "cta ".concat(isSelected ? 'cta--selected' : 'cta--select'), onClick: handleButtonClick }, isSelected ? translations.SHARED.SELECTED : translations.SHARED.SELECT)))),
11432
11587
  React.createElement(FlightOptionFlight, { details: item.outward, isOptionsVisible: outwardVisible }),
11433
11588
  React.createElement(FlightOptionFlight, { details: item.return, isOptionsVisible: returnVisible })))));
11434
11589
  };
@@ -12031,6 +12186,8 @@ var OptionPaxCard = function (_a) {
12031
12186
  var pax = _a.pax, requestRoomsPax = _a.requestRoomsPax, parentIndex = _a.parentIndex, onPaxChange = _a.onPaxChange;
12032
12187
  var _b = useState(), toggleStates = _b[0], setToggleStates = _b[1];
12033
12188
  var translations = useSelector(selectTranslations);
12189
+ var departureFlight = useSelector(selectDepartureFlight);
12190
+ var returnFlight = useSelector(selectReturnFlight);
12034
12191
  useEffect(function () {
12035
12192
  if (!toggleStates || toggleStates.length !== pax.length) {
12036
12193
  setToggleStates(pax.map(function () { return true; }));
@@ -12055,6 +12212,36 @@ var OptionPaxCard = function (_a) {
12055
12212
  if (onPaxChange)
12056
12213
  onPaxChange(updatedPax, parentIndex);
12057
12214
  };
12215
+ var getAirlineGroups = function (p) {
12216
+ return p.airlineGroups
12217
+ .filter(function (x) { var _a, _b; return x.flightIds.includes((_a = departureFlight === null || departureFlight === void 0 ? void 0 : departureFlight.entryLineGuid) !== null && _a !== void 0 ? _a : "") || x.flightIds.includes((_b = returnFlight === null || returnFlight === void 0 ? void 0 : returnFlight.entryLineGuid) !== null && _b !== void 0 ? _b : ""); });
12218
+ };
12219
+ var handleOnAirlineGroupChange = function (group, paxId) {
12220
+ var updatedPax = pax.map(function (p) {
12221
+ return p.id !== paxId
12222
+ ? p
12223
+ : __assign(__assign({}, p), { airlineGroups: p.airlineGroups.map(function (g) {
12224
+ return g.label === group.label ? group : g;
12225
+ }) });
12226
+ });
12227
+ if (onPaxChange)
12228
+ onPaxChange(updatedPax, parentIndex);
12229
+ };
12230
+ var getAirportGroups = function (p) {
12231
+ return p.airportGroups
12232
+ .filter(function (x) { var _a, _b; return x.flightIds.includes((_a = departureFlight === null || departureFlight === void 0 ? void 0 : departureFlight.entryLineGuid) !== null && _a !== void 0 ? _a : "") || x.flightIds.includes((_b = returnFlight === null || returnFlight === void 0 ? void 0 : returnFlight.entryLineGuid) !== null && _b !== void 0 ? _b : ""); });
12233
+ };
12234
+ var handleOnAirportGroupChange = function (group, paxId) {
12235
+ var updatedPax = pax.map(function (p) {
12236
+ return p.id !== paxId
12237
+ ? p
12238
+ : __assign(__assign({}, p), { airportGroups: p.airportGroups.map(function (g) {
12239
+ return g.label === group.label ? group : g;
12240
+ }) });
12241
+ });
12242
+ if (onPaxChange)
12243
+ onPaxChange(updatedPax, parentIndex);
12244
+ };
12058
12245
  return (React.createElement(React.Fragment, null, pax.map(function (p, i) {
12059
12246
  var _a, _b;
12060
12247
  return (React.createElement("div", { key: i, className: buildClassName([
@@ -12070,11 +12257,16 @@ var OptionPaxCard = function (_a) {
12070
12257
  React.createElement("button", { type: "button", className: "booking-card__toggle", onClick: function () {
12071
12258
  setToggleStates(toggleStates === null || toggleStates === void 0 ? void 0 : toggleStates.map(function (s, si) { return (si == i ? !s : s); }));
12072
12259
  } }))),
12073
- toggleStates &&
12074
- toggleStates[i] &&
12260
+ toggleStates && toggleStates[i] && (React.createElement(React.Fragment, null,
12075
12261
  p.groups.map(function (pg) {
12076
12262
  return pg && (React.createElement(OptionPaxGroup, { key: pg.name, paxId: p.id, group: pg, firstClassName: "booking-card__group-body", secondClassName: "booking-card__group-heading", parentId: "".concat(p.id, "_").concat(pg.name), onGroupChange: onGroupChange }));
12077
- })));
12263
+ }),
12264
+ getAirlineGroups(p).map(function (group, i) { return (React.createElement(OptionBookingAirlineGroup, { key: "".concat(group.label, "_").concat(i), airGroup: group, onGroupChange: function (updatedGroup) {
12265
+ handleOnAirlineGroupChange(updatedGroup, p.id);
12266
+ } })); }),
12267
+ getAirportGroups(p).map(function (group, i) { return (React.createElement(OptionBookingAirlineGroup, { key: "".concat(group.label, "_").concat(i), airGroup: group, onGroupChange: function (updatedGroup) {
12268
+ handleOnAirportGroupChange(updatedGroup, p.id);
12269
+ } })); })))));
12078
12270
  })));
12079
12271
  };
12080
12272
 
@@ -12153,6 +12345,8 @@ var OptionUnitsCard = function (_a) {
12153
12345
  var units = _a.units, parentIndex = _a.parentIndex, onUnitsChange = _a.onUnitsChange;
12154
12346
  var _b = useState(), toggleStates = _b[0], setToggleStates = _b[1];
12155
12347
  var translations = useSelector(selectTranslations);
12348
+ var departureFlight = useSelector(selectDepartureFlight);
12349
+ var returnFlight = useSelector(selectReturnFlight);
12156
12350
  useEffect(function () {
12157
12351
  if (!toggleStates || toggleStates.length !== units.length) {
12158
12352
  setToggleStates(units.map(function () { return true; }));
@@ -12172,6 +12366,36 @@ var OptionUnitsCard = function (_a) {
12172
12366
  if (onUnitsChange)
12173
12367
  onUnitsChange(updatedUnits, parentIndex);
12174
12368
  };
12369
+ var getAirlineGroups = function (p) {
12370
+ return p.airlineGroups
12371
+ .filter(function (x) { var _a, _b; return x.flightIds.includes((_a = departureFlight === null || departureFlight === void 0 ? void 0 : departureFlight.entryLineGuid) !== null && _a !== void 0 ? _a : "") || x.flightIds.includes((_b = returnFlight === null || returnFlight === void 0 ? void 0 : returnFlight.entryLineGuid) !== null && _b !== void 0 ? _b : ""); });
12372
+ };
12373
+ var handleOnAirlineGroupChange = function (group, unitIndex) {
12374
+ var updatedPax = units.map(function (u) {
12375
+ return u.index !== unitIndex
12376
+ ? u
12377
+ : __assign(__assign({}, u), { airlineGroups: u.airlineGroups.map(function (g) {
12378
+ return g.label === group.label ? group : g;
12379
+ }) });
12380
+ });
12381
+ if (onUnitsChange)
12382
+ onUnitsChange(updatedPax, parentIndex);
12383
+ };
12384
+ var getAirportGroups = function (p) {
12385
+ return p.airportGroups
12386
+ .filter(function (x) { var _a, _b; return x.flightIds.includes((_a = departureFlight === null || departureFlight === void 0 ? void 0 : departureFlight.entryLineGuid) !== null && _a !== void 0 ? _a : "") || x.flightIds.includes((_b = returnFlight === null || returnFlight === void 0 ? void 0 : returnFlight.entryLineGuid) !== null && _b !== void 0 ? _b : ""); });
12387
+ };
12388
+ var handleOnAirportGroupChange = function (group, unitIndex) {
12389
+ var updatedPax = units.map(function (u) {
12390
+ return u.index !== unitIndex
12391
+ ? u
12392
+ : __assign(__assign({}, u), { airportGroups: u.airportGroups.map(function (g) {
12393
+ return g.label === group.label ? group : g;
12394
+ }) });
12395
+ });
12396
+ if (onUnitsChange)
12397
+ onUnitsChange(updatedPax, parentIndex);
12398
+ };
12175
12399
  return (React.createElement(React.Fragment, null, units.map(function (u, i) { return (React.createElement("div", { className: buildClassName([
12176
12400
  "booking-card__group",
12177
12401
  toggleStates && toggleStates[i] && "booking-card__group--active",
@@ -12187,10 +12411,16 @@ var OptionUnitsCard = function (_a) {
12187
12411
  setToggleStates(toggleStates === null || toggleStates === void 0 ? void 0 : toggleStates.map(function (s, si) { return (si == i ? !s : s); }));
12188
12412
  } }))),
12189
12413
  toggleStates &&
12190
- toggleStates[i] &&
12414
+ toggleStates[i] && (React.createElement(React.Fragment, null,
12191
12415
  u.groups.map(function (ug) {
12192
12416
  return ug && (React.createElement(OptionUnitGroup, { key: ug.name, unitIndex: u.index, group: ug, firstClassName: "booking-card__group-body", secondClassName: "booking-card__group-heading", parentId: "".concat(u.index, "_").concat(ug.name), onGroupChange: onGroupChange }));
12193
- }))); })));
12417
+ }),
12418
+ getAirlineGroups(u).map(function (group, i) { return (React.createElement(OptionBookingAirlineGroup, { key: "".concat(group.label, "_").concat(i), airGroup: group, onGroupChange: function (updatedGroup) {
12419
+ handleOnAirlineGroupChange(updatedGroup, u.index);
12420
+ } })); }),
12421
+ getAirportGroups(u).map(function (group, i) { return (React.createElement(OptionBookingAirlineGroup, { key: "".concat(group.label, "_").concat(i), airGroup: group, onGroupChange: function (updatedGroup) {
12422
+ handleOnAirportGroupChange(updatedGroup, u.index);
12423
+ } })); }))))); })));
12194
12424
  };
12195
12425
 
12196
12426
  var OptionBookingGroup = function (_a) {
@@ -12814,7 +13044,7 @@ var SidebarFlight = function (_a) {
12814
13044
  React.createElement("h6", { className: "pricing-summary__title" }, title),
12815
13045
  React.createElement("div", { className: "pricing-summary__row" },
12816
13046
  React.createElement("div", { className: "pricing-summary__property" }, translations.SIDEBAR.FLIGHT_DEPARTURE),
12817
- React.createElement("div", { className: "pricing-summary__value" }, firstFlight === null || firstFlight === void 0 ? void 0 :
13047
+ React.createElement("div", { className: "pricing-summary__value pricing-summary__value--flight" }, firstFlight === null || firstFlight === void 0 ? void 0 :
12818
13048
  firstFlight.departureAirportDescription,
12819
13049
  " (", firstFlight === null || firstFlight === void 0 ? void 0 :
12820
13050
  firstFlight.departureAirportIata,
@@ -12825,7 +13055,7 @@ var SidebarFlight = function (_a) {
12825
13055
  firstFlight.departureTime)),
12826
13056
  React.createElement("div", { className: "pricing-summary__row" },
12827
13057
  React.createElement("div", { className: "pricing-summary__property" }, translations.SIDEBAR.FLIGHT_ARRIVAL),
12828
- React.createElement("div", { className: "pricing-summary__value" }, lastFlight === null || lastFlight === void 0 ? void 0 :
13058
+ React.createElement("div", { className: "pricing-summary__value pricing-summary__value--flight" }, lastFlight === null || lastFlight === void 0 ? void 0 :
12829
13059
  lastFlight.arrivalAirportDescription,
12830
13060
  " (", lastFlight === null || lastFlight === void 0 ? void 0 :
12831
13061
  lastFlight.arrivalAirportIata,
@@ -13143,6 +13373,7 @@ var Summary = function () {
13143
13373
  var packageDetails = useSelector(selectPackageDetails);
13144
13374
  var activeOption = useSelector(selectActiveOption);
13145
13375
  var apiSettings = useSelector(selectApiSettings);
13376
+ var languageCode = useSelector(selectLanguageCode);
13146
13377
  if (!travelerFormValues) {
13147
13378
  if (settings.skipRouter) {
13148
13379
  dispatch(setCurrentStep(TRAVELERS_FORM_STEP));
@@ -13188,7 +13419,7 @@ var Summary = function () {
13188
13419
  _a.label = 1;
13189
13420
  case 1:
13190
13421
  _a.trys.push([1, 3, 4, 5]);
13191
- return [4 /*yield*/, book_1(tideClientConfig, bookRequest)];
13422
+ return [4 /*yield*/, book_1(tideClientConfig, bookRequest, undefined, languageCode)];
13192
13423
  case 2:
13193
13424
  bookingResponse = _a.sent();
13194
13425
  // Booking successfull
@@ -49,6 +49,9 @@ export declare const getTranslations: (language: string) => {
49
49
  MORNING_DEPARTURE: string;
50
50
  AFTERNOON_DEPARTURE: string;
51
51
  EVENING_DEPARTURE: string;
52
+ FLIGHTS_FOUND_1: string;
53
+ FLIGHTS_FOUND_2: string;
54
+ FLIGHTS_FOUND_3: string;
52
55
  };
53
56
  PRODUCT: {
54
57
  STAY_INCLUDED: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qite/tide-booking-component",
3
- "version": "1.2.3",
3
+ "version": "1.2.4",
4
4
  "description": "React Booking wizard & Booking product component for Tide",
5
5
  "main": "build/build-cjs/index.js",
6
6
  "module": "build/build-esm/index.js",